mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-24 02:39:18 -05:00
Compare commits
248 Commits
fix-log-fo
...
refactor-w
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e5421a1003 | ||
|
|
0900a95532 | ||
|
|
0c86684bc2 | ||
|
|
010df62776 | ||
|
|
530be4272c | ||
|
|
c2e87714b4 | ||
|
|
eee9a025d2 | ||
|
|
aed011a557 | ||
|
|
ea47dd3571 | ||
|
|
4c9013729e | ||
|
|
3eb1bb3d8f | ||
|
|
db84f6529a | ||
|
|
4f81788386 | ||
|
|
72d3f9b908 | ||
|
|
333ffed7f0 | ||
|
|
8641a26771 | ||
|
|
7329524868 | ||
|
|
908dcb487a | ||
|
|
d486d58d3d | ||
|
|
d8b08f4c6b | ||
|
|
a48a337e0f | ||
|
|
981f5e679c | ||
|
|
7af193b8f6 | ||
|
|
6040e16645 | ||
|
|
3877301fc8 | ||
|
|
092a1458a4 | ||
|
|
1c68111b12 | ||
|
|
0e777ddb1e | ||
|
|
52c689b080 | ||
|
|
1a11f085ba | ||
|
|
c0234582a6 | ||
|
|
fd958d6347 | ||
|
|
6586db52dc | ||
|
|
a41cb8b004 | ||
|
|
de66222e7a | ||
|
|
eb790cb466 | ||
|
|
0680931332 | ||
|
|
ff2821471e | ||
|
|
e032c02f5f | ||
|
|
f8c4def229 | ||
|
|
a0415e7b6b | ||
|
|
b5f672785a | ||
|
|
770d788fd7 | ||
|
|
c58261c841 | ||
|
|
ccfcdea1f6 | ||
|
|
8ec8f2ac57 | ||
|
|
91f97f96ab | ||
|
|
f4051a1e5d | ||
|
|
f564cddff4 | ||
|
|
cfcce6acf0 | ||
|
|
b85d7f37b9 | ||
|
|
97396c2f57 | ||
|
|
a0ec992028 | ||
|
|
0dfe050ba1 | ||
|
|
13dd3cad54 | ||
|
|
ce9802d5d4 | ||
|
|
4005397f3d | ||
|
|
a67e4dbb80 | ||
|
|
cf5cf3f9ca | ||
|
|
8ae4391f37 | ||
|
|
bfd77e271a | ||
|
|
d90fc2de1c | ||
|
|
3b67d6b0e8 | ||
|
|
38348accb0 | ||
|
|
be335c39be | ||
|
|
c25c5cae38 | ||
|
|
2e059cefc0 | ||
|
|
e540b58f73 | ||
|
|
22b548bad2 | ||
|
|
c4adbdb3a8 | ||
|
|
e5d565b435 | ||
|
|
5c531011be | ||
|
|
f2b1fd24c2 | ||
|
|
4be95fade4 | ||
|
|
d02f5b0090 | ||
|
|
d5f2034e69 | ||
|
|
9059f15291 | ||
|
|
b168d04fe6 | ||
|
|
9a51c5b47b | ||
|
|
ab8efc91d5 | ||
|
|
c115f813e5 | ||
|
|
8967bb9f90 | ||
|
|
b316b9984d | ||
|
|
605a1de98f | ||
|
|
74d84a1cad | ||
|
|
8a7f39994f | ||
|
|
6e47834de0 | ||
|
|
14aafbe1d6 | ||
|
|
445604a615 | ||
|
|
fa28f05263 | ||
|
|
fd5338167a | ||
|
|
81b5e8afbd | ||
|
|
4fe4e377a6 | ||
|
|
87a59651b2 | ||
|
|
3a680c47b6 | ||
|
|
44444402a9 | ||
|
|
9140b8d98c | ||
|
|
2e20fbae1b | ||
|
|
6c0d75759f | ||
|
|
f483062d0e | ||
|
|
a7cf87f266 | ||
|
|
8ef7ec40ae | ||
|
|
3b74002f25 | ||
|
|
2b1427108c | ||
|
|
68b2388205 | ||
|
|
b20c334941 | ||
|
|
9f2ee0beeb | ||
|
|
24a3ee1e77 | ||
|
|
510a564a57 | ||
|
|
6540ba7226 | ||
|
|
3291cd08dd | ||
|
|
a08512ff71 | ||
|
|
345c67c750 | ||
|
|
bff97d2a70 | ||
|
|
62c289bd65 | ||
|
|
21cc64eee4 | ||
|
|
4a759e64fd | ||
|
|
f5122ec652 | ||
|
|
e9fafeaef8 | ||
|
|
8e2c6edd42 | ||
|
|
532f2882da | ||
|
|
9e73eaa5a3 | ||
|
|
8ef2815b44 | ||
|
|
63d4ab958a | ||
|
|
b031b58598 | ||
|
|
bdd45231e1 | ||
|
|
a38db77c8e | ||
|
|
21fa447da6 | ||
|
|
87bd130420 | ||
|
|
9a9ec41d92 | ||
|
|
e81a305f4d | ||
|
|
144980136e | ||
|
|
f6e90de708 | ||
|
|
95636c4825 | ||
|
|
aa05235392 | ||
|
|
84bfc5c363 | ||
|
|
2f2427f125 | ||
|
|
1ac2a2a909 | ||
|
|
44e368cb1b | ||
|
|
9bf20b76fa | ||
|
|
2a7128c390 | ||
|
|
8e93d351fd | ||
|
|
4acec9aeb9 | ||
|
|
51b655e364 | ||
|
|
f658e5ee66 | ||
|
|
9021e60d11 | ||
|
|
df510820fa | ||
|
|
26f90b0d7f | ||
|
|
d7ba80d502 | ||
|
|
96e90c1e7e | ||
|
|
559b7ff018 | ||
|
|
dd08f5e7cf | ||
|
|
0730e17932 | ||
|
|
a32307e6cf | ||
|
|
f9bd02553c | ||
|
|
d039e87da4 | ||
|
|
4347728a1b | ||
|
|
68f7f397d3 | ||
|
|
8c82a61450 | ||
|
|
67bde68596 | ||
|
|
3cb9494e62 | ||
|
|
f92231850c | ||
|
|
8f9d3f7fbd | ||
|
|
2b7dab2765 | ||
|
|
9ac56a4057 | ||
|
|
e8ee6f9e32 | ||
|
|
9348cdfd01 | ||
|
|
40c739c5a4 | ||
|
|
364fb46805 | ||
|
|
405f6bbb7f | ||
|
|
9a7a98b75e | ||
|
|
dc67aaaf53 | ||
|
|
31bc6ca612 | ||
|
|
b5acc09ba9 | ||
|
|
506ea92826 | ||
|
|
200d47bb43 | ||
|
|
be047427df | ||
|
|
e297d25603 | ||
|
|
89287af096 | ||
|
|
3a593d9d76 | ||
|
|
10737dd4ec | ||
|
|
7c03b831f5 | ||
|
|
cdf1e1ecc7 | ||
|
|
b9c0d5f46e | ||
|
|
a45fc86032 | ||
|
|
59dabed380 | ||
|
|
b40ba07a4d | ||
|
|
246887efa1 | ||
|
|
28a2c50495 | ||
|
|
c84ca43074 | ||
|
|
e2771a3011 | ||
|
|
3ea5076053 | ||
|
|
bd65f940e3 | ||
|
|
7bdd25e5a4 | ||
|
|
f6286359cf | ||
|
|
ac7fe1baf0 | ||
|
|
9c895f26e3 | ||
|
|
591533f850 | ||
|
|
127897b9d7 | ||
|
|
92507359b4 | ||
|
|
ca4c4440ae | ||
|
|
eb4306a2b8 | ||
|
|
baa847330d | ||
|
|
39372d2182 | ||
|
|
c484810f96 | ||
|
|
0c39057ca5 | ||
|
|
28d6e5f5ce | ||
|
|
e62a078298 | ||
|
|
3fd016808b | ||
|
|
b7282ce990 | ||
|
|
8685f5796a | ||
|
|
acc230fd20 | ||
|
|
30361f2ab7 | ||
|
|
6a8406b5e3 | ||
|
|
7980212bee | ||
|
|
317110855e | ||
|
|
048fa967f2 | ||
|
|
f7b4dfcac4 | ||
|
|
a686d31e4d | ||
|
|
cb63bf217b | ||
|
|
7eed23637d | ||
|
|
46e21c4e3e | ||
|
|
b4191f9c65 | ||
|
|
83b008c839 | ||
|
|
68c7b3650e | ||
|
|
2816c66300 | ||
|
|
01de972a8f | ||
|
|
da2d8fe35b | ||
|
|
a761b7dd35 | ||
|
|
4f89286fa8 | ||
|
|
d0836ce0ef | ||
|
|
4740476c9a | ||
|
|
c167d3ac38 | ||
|
|
2c3f533076 | ||
|
|
55baca57c1 | ||
|
|
0b797964a8 | ||
|
|
c1a47bd9de | ||
|
|
030cbc535a | ||
|
|
b0fd0f59c4 | ||
|
|
47287c3688 | ||
|
|
b4c74de7b3 | ||
|
|
9daceb7017 | ||
|
|
cd7930eef9 | ||
|
|
33ec4436fb | ||
|
|
e848386d10 | ||
|
|
0a30cd356d | ||
|
|
9637c3f4ab | ||
|
|
a15c85cbd1 |
1071
.all-contributorsrc
1071
.all-contributorsrc
File diff suppressed because it is too large
Load Diff
21
.gitattributes
vendored
21
.gitattributes
vendored
@@ -24,3 +24,24 @@
|
||||
*.woff binary
|
||||
*.pyc binary
|
||||
*.pdf binary
|
||||
|
||||
#
|
||||
## Theses files/directories should be excluded from git archives
|
||||
#
|
||||
|
||||
.husky export-ignore
|
||||
.vscode export-ignore
|
||||
docs export-ignore
|
||||
|
||||
.git* export-ignore
|
||||
*ignore export-ignore
|
||||
*.md export-ignore
|
||||
|
||||
.all-contributorsrc export-ignore
|
||||
.editorconfig export-ignore
|
||||
Dockerfile.local export-ignore
|
||||
docker-compose.yml export-ignore
|
||||
stylelint.config.js export-ignore
|
||||
|
||||
public/os_logo_filled.png export-ignore
|
||||
public/preview.jpg export-ignore
|
||||
|
||||
3
.github/FUNDING.yml
vendored
3
.github/FUNDING.yml
vendored
@@ -1,2 +1 @@
|
||||
github: [sct]
|
||||
patreon: overseerr
|
||||
github: [Fallenbagel]
|
||||
4
.github/ISSUE_TEMPLATE/bug.yml
vendored
4
.github/ISSUE_TEMPLATE/bug.yml
vendored
@@ -19,7 +19,7 @@ body:
|
||||
id: version
|
||||
attributes:
|
||||
label: Version
|
||||
description: What version of Overseerr are you running? (You can find this in Settings → About → Version.)
|
||||
description: What version of Jellyseerr are you running? (You can find this in Settings → About → Version.)
|
||||
validations:
|
||||
required: true
|
||||
- type: textarea
|
||||
@@ -87,5 +87,5 @@ body:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/fallenbagel/jellyseerr/blob/develop/CODE_OF_CONDUCT.md)
|
||||
options:
|
||||
- label: I agree to follow Overseerr's Code of Conduct
|
||||
- label: I agree to follow Jellyseerr's Code of Conduct
|
||||
required: true
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -2,7 +2,7 @@ blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: 💬 Support via Discord
|
||||
url: https://discord.gg/ckbvBtDJgC
|
||||
about: Chat with other users and the Overseerr dev team
|
||||
about: Chat with other users and the Jellyseerr dev team
|
||||
- name: 💬 Support via GitHub Discussions
|
||||
url: https://github.com/fallenbagel/jellyseerr/discussions
|
||||
about: Ask questions and discuss with other community members
|
||||
|
||||
2
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
2
.github/ISSUE_TEMPLATE/enhancement.yml
vendored
@@ -33,5 +33,5 @@ body:
|
||||
label: Code of Conduct
|
||||
description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/fallenbagel/jellyseerr/blob/develop/CODE_OF_CONDUCT.md)
|
||||
options:
|
||||
- label: I agree to follow Overseerr's Code of Conduct
|
||||
- label: I agree to follow Jellyseerr's Code of Conduct
|
||||
required: true
|
||||
|
||||
30
.github/workflows/ci.yml
vendored
30
.github/workflows/ci.yml
vendored
@@ -12,8 +12,8 @@ jobs:
|
||||
test:
|
||||
name: Lint & Test Build
|
||||
if: github.event_name == 'pull_request'
|
||||
runs-on: ubuntu-20.04
|
||||
container: node:16.17-alpine
|
||||
runs-on: ubuntu-22.04
|
||||
container: node:18.18-alpine
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
@@ -31,7 +31,7 @@ jobs:
|
||||
build_and_push:
|
||||
name: Build & Publish Docker Images
|
||||
if: github.ref == 'refs/heads/develop' && !contains(github.event.head_commit.message, '[skip ci]')
|
||||
runs-on: self-hosted
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
@@ -39,13 +39,6 @@ jobs:
|
||||
uses: docker/setup-qemu-action@v2
|
||||
- name: Set up Docker Buildx
|
||||
uses: docker/setup-buildx-action@v2
|
||||
- name: Cache Docker layers
|
||||
uses: actions/cache@v3
|
||||
with:
|
||||
path: /tmp/.buildx-cache
|
||||
key: ${{ runner.os }}-buildx-${{ github.sha }}
|
||||
restore-keys: |
|
||||
${{ runner.os }}-buildx-
|
||||
- name: Log in to Docker Hub
|
||||
uses: docker/login-action@v2
|
||||
with:
|
||||
@@ -57,6 +50,11 @@ jobs:
|
||||
registry: ghcr.io
|
||||
username: ${{ github.repository_owner }}
|
||||
password: ${{ secrets.GITHUB_TOKEN }}
|
||||
- name: Set lower case owner name
|
||||
run: |
|
||||
echo "OWNER_LC=${OWNER,,}" >>${GITHUB_ENV}
|
||||
env:
|
||||
OWNER: ${{ github.repository_owner }}
|
||||
- name: Build and push
|
||||
uses: docker/build-push-action@v3
|
||||
with:
|
||||
@@ -68,21 +66,13 @@ jobs:
|
||||
COMMIT_TAG=${{ github.sha }}
|
||||
tags: |
|
||||
fallenbagel/jellyseerr:develop
|
||||
cache-from: type=local,src=/tmp/.buildx-cache
|
||||
cache-to: type=local,dest=/tmp/.buildx-cache-new,mode=max
|
||||
- # Temporary fix
|
||||
# https://github.com/docker/build-push-action/issues/252
|
||||
# https://github.com/moby/buildkit/issues/1896
|
||||
name: Move cache
|
||||
run: |
|
||||
rm -rf /tmp/.buildx-cache
|
||||
mv /tmp/.buildx-cache-new /tmp/.buildx-cache
|
||||
ghcr.io/${{ env.OWNER_LC }}/jellyseerr:develop
|
||||
|
||||
discord:
|
||||
name: Send Discord Notification
|
||||
needs: build_and_push
|
||||
if: always() && github.event_name != 'pull_request' && !contains(github.event.head_commit.message, '[skip ci]')
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Get Build Job Status
|
||||
uses: technote-space/workflow-conclusion-action@v3
|
||||
|
||||
4
.github/workflows/preview.yml
vendored
4
.github/workflows/preview.yml
vendored
@@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
build_and_push:
|
||||
name: Build & Publish Docker Preview Images
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v3
|
||||
@@ -29,7 +29,7 @@ jobs:
|
||||
with:
|
||||
context: .
|
||||
file: ./Dockerfile
|
||||
platforms: linux/amd64
|
||||
platforms: linux/amd64,linux/arm64,linux/arm/v7
|
||||
push: true
|
||||
build-args: |
|
||||
COMMIT_TAG=${{ github.sha }}
|
||||
|
||||
6
.github/workflows/release.yml
vendored
6
.github/workflows/release.yml
vendored
@@ -5,7 +5,7 @@ on: workflow_dispatch
|
||||
jobs:
|
||||
semantic-release:
|
||||
name: Tag and release latest version
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
env:
|
||||
HUSKY: 0
|
||||
steps:
|
||||
@@ -38,7 +38,7 @@ jobs:
|
||||
build-snap:
|
||||
name: Build Snap Package (${{ matrix.architecture }})
|
||||
needs: semantic-release
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -94,7 +94,7 @@ jobs:
|
||||
name: Send Discord Notification
|
||||
needs: semantic-release
|
||||
if: always()
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Get Build Job Status
|
||||
uses: technote-space/workflow-conclusion-action@v3
|
||||
|
||||
6
.github/workflows/snap.yaml
vendored
6
.github/workflows/snap.yaml
vendored
@@ -8,7 +8,7 @@ on:
|
||||
jobs:
|
||||
jobs:
|
||||
name: Job Check
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
if: "!contains(github.event.head_commit.message, '[skip ci]')"
|
||||
steps:
|
||||
- name: Cancel Previous Runs
|
||||
@@ -19,7 +19,7 @@ jobs:
|
||||
build-snap:
|
||||
name: Build Snap Package (${{ matrix.architecture }})
|
||||
needs: jobs
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -69,7 +69,7 @@ jobs:
|
||||
name: Send Discord Notification
|
||||
needs: build-snap
|
||||
if: always() && !contains(github.event.head_commit.message, '[skip ci]')
|
||||
runs-on: ubuntu-20.04
|
||||
runs-on: ubuntu-22.04
|
||||
steps:
|
||||
- name: Get Build Job Status
|
||||
uses: technote-space/workflow-conclusion-action@v3
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
# Contributing to Overseerr
|
||||
# Contributing to Jellyseerr
|
||||
|
||||
All help is welcome and greatly appreciated! If you would like to contribute to the project, the following instructions should get you started...
|
||||
|
||||
@@ -17,7 +17,7 @@ All help is welcome and greatly appreciated! If you would like to contribute to
|
||||
1. [Fork](https://help.github.com/articles/fork-a-repo/) the repository to your own GitHub account and [clone](https://help.github.com/articles/cloning-a-repository/) it to your local device:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/YOUR_USERNAME/overseerr.git
|
||||
git clone https://github.com/YOUR_USERNAME/jellyseerr.git
|
||||
cd overseerr/
|
||||
```
|
||||
|
||||
@@ -97,9 +97,9 @@ When adding new UI text, please try to adhere to the following guidelines:
|
||||
|
||||
## Translation
|
||||
|
||||
We use [Weblate](https://hosted.weblate.org/engage/overseerr/) for our translations, and your help with localizing Overseerr would be greatly appreciated! If your language is not listed below, please [open a feature request](https://github.com/fallenbagel/jellyseerr/issues/new/choose).
|
||||
We use [Weblate](https://jellyseerr.borgcube.de/projects/jellyseerr/jellyseerr-frontend/) for our translations, and your help with localizing Overseerr would be greatly appreciated! If your language is not listed below, please [open a feature request](https://github.com/fallenbagel/jellyseerr/issues/new/choose).
|
||||
|
||||
<a href="https://hosted.weblate.org/engage/overseerr/"><img src="https://hosted.weblate.org/widgets/overseerr/-/overseerr-frontend/multi-auto.svg" alt="Translation status" /></a>
|
||||
<a href="https://jellyseerr.borgcube.de/engage/jellysseerr/"><img src="https://jellyseerr.borgcube.de/widget/jellyseerr/multi-auto.svg" alt="Translation status" /></a>
|
||||
|
||||
## Attribution
|
||||
|
||||
|
||||
16
Dockerfile
16
Dockerfile
@@ -1,4 +1,4 @@
|
||||
FROM node:16.17-alpine AS BUILD_IMAGE
|
||||
FROM node:18.18-alpine AS BUILD_IMAGE
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
@@ -7,10 +7,11 @@ ENV TARGETPLATFORM=${TARGETPLATFORM:-linux/amd64}
|
||||
|
||||
RUN \
|
||||
case "${TARGETPLATFORM}" in \
|
||||
'linux/arm64' | 'linux/arm/v7') \
|
||||
apk add --no-cache python3 make g++ && \
|
||||
ln -s /usr/bin/python3 /usr/bin/python \
|
||||
;; \
|
||||
'linux/arm64' | 'linux/arm/v7') \
|
||||
apk update && \
|
||||
apk add --no-cache python3 make g++ gcc libc6-compat bash && \
|
||||
yarn global add node-gyp \
|
||||
;; \
|
||||
esac
|
||||
|
||||
COPY package.json yarn.lock ./
|
||||
@@ -33,7 +34,10 @@ RUN touch config/DOCKER
|
||||
RUN echo "{\"commitTag\": \"${COMMIT_TAG}\"}" > committag.json
|
||||
|
||||
|
||||
FROM node:16.17-alpine
|
||||
FROM node:18.18-alpine
|
||||
|
||||
# Metadata for Github Package Registry
|
||||
LABEL org.opencontainers.image.source="https://github.com/Fallenbagel/jellyseerr"
|
||||
|
||||
WORKDIR /app
|
||||
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
FROM node:16.17-alpine
|
||||
FROM node:18.18-alpine
|
||||
|
||||
COPY . /app
|
||||
WORKDIR /app
|
||||
|
||||
321
README.md
321
README.md
@@ -2,20 +2,28 @@
|
||||
<img src="./public/logo_full.svg" alt="Jellyseerr" style="margin: 20px 0;">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/ckbvBtDJgC"><img src="https://img.shields.io/badge/Discord-Chat-lightgrey" alt="Discord"></a>
|
||||
<img src="https://github.com/Fallenbagel/jellyseerr/actions/workflows/release.yml/badge.svg" alt="Jellyseerr Release" />
|
||||
<img src="https://github.com/Fallenbagel/jellyseerr/actions/workflows/ci.yml/badge.svg" alt="Jellyseerr CI">
|
||||
</p>
|
||||
<p align="center">
|
||||
<a href="https://discord.gg/ckbvBtDJgC"><img src="https://img.shields.io/discord/952656177924300932" alt="Discord"></a>
|
||||
<a href="https://hub.docker.com/r/fallenbagel/jellyseerr"><img src="https://img.shields.io/docker/pulls/fallenbagel/jellyseerr" alt="Docker pulls"></a>
|
||||
<a href="http://jellyseerr.borgcube.de/engage/jellyseerr/"><img src="http://jellyseerr.borgcube.de/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-34-orange.svg"/></a>
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
**Jellyseerr** is a free and open source software application for managing requests for your media library. It is a a fork of Overseerr built to bring support for Jellyfin & Emby media servers!
|
||||
**Jellyseerr** is a free and open source software application for managing requests for your media library.
|
||||
It is a fork of [Overseerr](https://github.com/sct/overseerr) built to bring support for [Jellyfin](https://github.com/jellyfin/jellyfin) & [Emby](https://github.com/MediaBrowser/Emby) media servers!
|
||||
|
||||
_The original Overseerr team have been busy and Jellyfin/Emby support aren't on their roadmap, so we started this project as we wanted to bring the Overseerr experience to the Jellyfin/Emby Community!_
|
||||
|
||||
## Current Features
|
||||
|
||||
- Full Jellyfin/Emby/Plex integration. Authenticate and manage user access with Jellyfin/Emby/Plex!
|
||||
- Supports Movies, Shows, Mixed Libraries!
|
||||
- Full Jellyfin/Emby/Plex integration including authentication with user import & management
|
||||
- Supports Movies, Shows and Mixed Libraries
|
||||
- Ability to change email addresses for smtp purposes
|
||||
- Ability to import all jellyfin/emby users
|
||||
- Easy integration with your existing services. Currently, Jellyseerr supports Sonarr and Radarr. More to come!
|
||||
- Jellyfin/Emby/Plex library scan, to keep track of the titles which are already available.
|
||||
- Customizable request system, which allows users to request individual seasons or movies in a friendly, easy-to-use interface.
|
||||
@@ -24,7 +32,7 @@ _The original Overseerr team have been busy and Jellyfin/Emby support aren't on
|
||||
- Support for various notification agents.
|
||||
- Mobile-friendly design, for when you need to approve requests on the go!
|
||||
|
||||
(Upcoming Features include: Multiple Server Instances, Music Support, and much more!)
|
||||
(Upcoming Features include: Multiple Server Instances, and much more!)
|
||||
|
||||
With more features on the way! Check out our [issue tracker](https://github.com/fallenbagel/jellyseerr/issues) to see the features which have already been requested.
|
||||
|
||||
@@ -32,72 +40,73 @@ With more features on the way! Check out our [issue tracker](https://github.com/
|
||||
|
||||
#### Pre-requisite (Important)
|
||||
|
||||
_*On Jellyfin/Emby, ensure the `settings > Home > Automatically group content from the following folders into views such as 'Movies', 'Music' and 'TV'` is turned off*_
|
||||
_*On Jellyfin/Emby, ensure the `Settings > Home > Automatically group content from the following folders into views such as 'Movies', 'Music' and 'TV'` is turned off*_
|
||||
|
||||
### Launching Jellyseerr using Docker
|
||||
### Launching Jellyseerr using Docker (Recommended)
|
||||
|
||||
Check out our dockerhub for instructions on how to install and run Jellyseerr:
|
||||
Check out our docker hub for instructions on how to install and run Jellyseerr:
|
||||
https://hub.docker.com/r/fallenbagel/jellyseerr
|
||||
|
||||
### Launching Jellyseerr manually:
|
||||
### Building from source (ADVANCED):
|
||||
|
||||
#### Windows
|
||||
|
||||
Pre-requisites:
|
||||
|
||||
- Nodejs (atleast LTS version)
|
||||
- Yarn
|
||||
- Download the source code from the github (Either develop branch or main for stable)
|
||||
- Nodejs [v18](https://nodejs.org/download/release/v18.18.2)
|
||||
- [Yarn](https://classic.yarnpkg.com/lang/en/docs/install)
|
||||
- Download/git clone the source code from the github (Either develop branch or main for stable)
|
||||
|
||||
```bash
|
||||
```cmd
|
||||
npm i -g win-node-env
|
||||
yarn install
|
||||
set CYPRESS_INSTALL_BINARY=0
|
||||
yarn install --frozen-lockfile --network-timeout 1000000
|
||||
yarn run build
|
||||
yarn start
|
||||
```
|
||||
|
||||
(You can use task scheduler to run a bat script with `@echo off` and `yarn start` to run jellyseerr in the background)
|
||||
|
||||
_To set env variables such as `JELLYFIN_TYPE=emby` create a file called `.env` in the root directory of jellyseerr_
|
||||
|
||||
#### Linux
|
||||
|
||||
Pre-requisites:
|
||||
**Pre-requisites:**
|
||||
|
||||
- Nodejs (atleast LTS version)
|
||||
- Yarn
|
||||
- Nodejs [v18](https://nodejs.org/en/download/package-manager)
|
||||
- [Yarn](https://classic.yarnpkg.com/lang/en/docs/install) (on Debian based distros, the package manager provided `yarn` is different and is a package called cmdlet. You can remove that using `apt-remove cmdlet` then install yarn using `npm install -g yarn`)
|
||||
- Git
|
||||
|
||||
**Steps:**
|
||||
|
||||
1. Assuming you want the root folder for the jellyseerr source code to be cloned to `/opt`
|
||||
|
||||
```bash
|
||||
cd /opt
|
||||
```
|
||||
|
||||
2. Then execute the following commands to clone and checkout to the stable version
|
||||
|
||||
```bash
|
||||
git clone https://github.com/Fallenbagel/jellyseerr.git && cd jellyseerr
|
||||
git checkout main #if you want to run stable instead of develop
|
||||
yarn install
|
||||
yarn run build
|
||||
yarn start
|
||||
git checkout main
|
||||
```
|
||||
|
||||
_Systemd-service:_
|
||||
3. Then install the dependencies and build the dist
|
||||
|
||||
```bash
|
||||
CYPRESS_INSTALL_BINARY=0 yarn install --frozen-lockfile --network-timeout 1000000
|
||||
yarn run build
|
||||
```
|
||||
|
||||
4. Now you can start jellyseerr using `yarn start` and opening http://localhost:5055 in your browser.
|
||||
|
||||
5. If you want to run jellyseerr as a _Systemd-service:_
|
||||
|
||||
- assuming jellyseerr was cloned to `/opt/`
|
||||
and the environmentfile is located at `/etc/jellyseerr`
|
||||
- first create the environment file at `/etc/jellyseerr/jellyseerr.conf`
|
||||
|
||||
service:
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Jellyseerr Service
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/etc/jellyseerr/jellyseerr.conf
|
||||
Environment=NODE_ENV=production
|
||||
Type=exec
|
||||
Restart=on-failure
|
||||
WorkingDirectory=/opt/jellyseerr
|
||||
ExecStart=/root/.nvm/versions/node/v18.7.0/bin/node dist/index.js
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
Environmentfile:
|
||||
Environment file:
|
||||
|
||||
```
|
||||
# Jellyseerr's default port is 5055, if you want to use both, change this.
|
||||
@@ -111,9 +120,34 @@ PORT=5055
|
||||
# JELLYFIN_TYPE=emby
|
||||
```
|
||||
|
||||
- Then run the command `which node` to find your node path (assuming it's at `/usr/bin/node`)
|
||||
- Then create the service file using `sudo systemctl edit jellyseerr.service` or creating and editing a file at `/etc/systemd/system/jellyseerr.service`
|
||||
|
||||
Service file contents:
|
||||
|
||||
```
|
||||
[Unit]
|
||||
Description=Jellyseerr Service
|
||||
Wants=network-online.target
|
||||
After=network-online.target
|
||||
|
||||
[Service]
|
||||
EnvironmentFile=/etc/jellyseerr/jellyseerr.conf
|
||||
Environment=NODE_ENV=production
|
||||
Type=exec
|
||||
Restart=on-failure
|
||||
WorkingDirectory=/opt/jellyseerr
|
||||
ExecStart=/usr/bin/node dist/index.js
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
```
|
||||
|
||||
### Packages:
|
||||
|
||||
Archlinux: [AUR](https://aur.archlinux.org/packages/jellyseerr)
|
||||
Nixpkg: [Nixpkg](https://search.nixos.org/packages?channel=unstable&show=jellyseerr)
|
||||
Snap: [Snap](https://snapcraft.io/jellyseerr)
|
||||
|
||||
## Preview
|
||||
|
||||
@@ -143,4 +177,199 @@ You can help improve Jellyseerr too! Check out our [Contribution Guide](https://
|
||||
|
||||
## Contributors ✨
|
||||
|
||||
Thanks goes to all wonderful people who contributed directly to Jellyseerr and Overseerr.
|
||||
Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcontributors.org/docs/en/emoji-key)) and all those that contributed directly to Jellyseerr:
|
||||
|
||||
### Jellyseerr Contributors ✨
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section -->
|
||||
<!-- prettier-ignore-start -->
|
||||
<!-- markdownlint-disable -->
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fallenbagel"><img src="https://avatars.githubusercontent.com/u/98979876?v=4?s=100" width="100px;" alt="Fallenbagel"/><br /><sub><b>Fallenbagel</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=Fallenbagel" title="Code">💻</a> <a href="#maintenance-Fallenbagel" title="Maintenance">🚧</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/seanzhang98"><img src="https://avatars.githubusercontent.com/u/34902361?v=4?s=100" width="100px;" alt="Sean"/><br /><sub><b>Sean</b></sub></a><br /><a href="#translation-seanzhang98" title="Translation">🌍</a> <a href="https://github.com/Fallenbagel/jellyseerr/commits?author=seanzhang98" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/notfakie"><img src="https://avatars.githubusercontent.com/u/103784113?v=4?s=100" width="100px;" alt="notfakie"/><br /><sub><b>notfakie</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=notfakie" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Jumail"><img src="https://avatars.githubusercontent.com/u/7672055?v=4?s=100" width="100px;" alt="Mohamed Jumail"/><br /><sub><b>Mohamed Jumail</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/pulls?q=is%3Apr+reviewed-by%3AJumail" title="Reviewed Pull Requests">👀</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.heywhale.com"><img src="https://avatars.githubusercontent.com/u/4048787?v=4?s=100" width="100px;" alt="Shilong Jiang"/><br /><sub><b>Shilong Jiang</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=jsl9208" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://jinas.me"><img src="https://avatars.githubusercontent.com/u/28459081?v=4?s=100" width="100px;" alt="Boring Dragon"/><br /><sub><b>Boring Dragon</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=boring-dragon" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sambartik"><img src="https://avatars.githubusercontent.com/u/63553146?v=4?s=100" width="100px;" alt="Samuel Bartík"/><br /><sub><b>Samuel Bartík</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=sambartik" title="Code">💻</a></td>
|
||||
</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></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>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://qwer.tz"><img src="https://avatars.githubusercontent.com/u/71837281?v=4?s=100" width="100px;" alt="Daniel"/><br /><sub><b>Daniel</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=darmiel" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/undone37"><img src="https://avatars.githubusercontent.com/u/10513808?v=4?s=100" width="100px;" alt="undone37"/><br /><sub><b>undone37</b></sub></a><br /><a href="#translation-undone37" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/CheChu10"><img src="https://avatars.githubusercontent.com/u/32913133?v=4?s=100" width="100px;" alt="Chechu García"/><br /><sub><b>Chechu García</b></sub></a><br /><a href="#translation-CheChu10" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DimitriDR"><img src="https://avatars.githubusercontent.com/u/56969769?v=4?s=100" width="100px;" alt="Dimitri"/><br /><sub><b>Dimitri</b></sub></a><br /><a href="#translation-DimitriDR" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/andrey4korop"><img src="https://avatars.githubusercontent.com/u/24610708?v=4?s=100" width="100px;" alt="andrey4korop"/><br /><sub><b>andrey4korop</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=andrey4korop" title="Code">💻</a> <a href="#translation-andrey4korop" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://geoffrey-coulaud.fr"><img src="https://avatars.githubusercontent.com/u/20744730?v=4?s=100" width="100px;" alt="Geoffrey Coulaud"/><br /><sub><b>Geoffrey Coulaud</b></sub></a><br /><a href="#translation-GeoffreyCoulaud" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Pikachu920"><img src="https://avatars.githubusercontent.com/u/28607612?v=4?s=100" width="100px;" alt="Pikachu920"/><br /><sub><b>Pikachu920</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=Pikachu920" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/yalagin"><img src="https://avatars.githubusercontent.com/u/12879142?v=4?s=100" width="100px;" alt="Maxim Yalagin"/><br /><sub><b>Maxim Yalagin</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=yalagin" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jeaboswell"><img src="https://avatars.githubusercontent.com/u/11653068?v=4?s=100" width="100px;" alt="Jesse Boswell"/><br /><sub><b>Jesse Boswell</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=jeaboswell" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/d-fendrich"><img src="https://avatars.githubusercontent.com/u/27904138?v=4?s=100" width="100px;" alt="d-fendrich"/><br /><sub><b>d-fendrich</b></sub></a><br /><a href="#translation-d-fendrich" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/davidfdezalcoba"><img src="https://avatars.githubusercontent.com/u/15996018?v=4?s=100" width="100px;" alt="David Fernández Alcoba"/><br /><sub><b>David Fernández Alcoba</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=davidfdezalcoba" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Gauvino"><img src="https://avatars.githubusercontent.com/u/68083474?v=4?s=100" width="100px;" alt="Gauvino"/><br /><sub><b>Gauvino</b></sub></a><br /><a href="#translation-Gauvino" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/EthanArmbrust"><img src="https://avatars.githubusercontent.com/u/22754714?v=4?s=100" width="100px;" alt="EthanArmbrust"/><br /><sub><b>EthanArmbrust</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=EthanArmbrust" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://www.piribisoft.com"><img src="https://avatars.githubusercontent.com/u/854646?v=4?s=100" width="100px;" alt="Eduardo"/><br /><sub><b>Eduardo</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=SirMartin" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RickLuiken"><img src="https://avatars.githubusercontent.com/u/34110371?v=4?s=100" width="100px;" alt="RickLuiken"/><br /><sub><b>RickLuiken</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=RickLuiken" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Br33ce"><img src="https://avatars.githubusercontent.com/u/124933490?v=4?s=100" width="100px;" alt="Br33ce"/><br /><sub><b>Br33ce</b></sub></a><br /><a href="#translation-Br33ce" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://athfan.com"><img src="https://avatars.githubusercontent.com/u/13810742?v=4?s=100" width="100px;" alt="Athfan Khaleel"/><br /><sub><b>Athfan Khaleel</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=athphane" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mdll23"><img src="https://avatars.githubusercontent.com/u/142844478?v=4?s=100" width="100px;" alt="Michael Dallinger"/><br /><sub><b>Michael Dallinger</b></sub></a><br /><a href="#translation-mdll23" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xeruf"><img src="https://avatars.githubusercontent.com/u/13354331?v=4?s=100" width="100px;" alt="Janek"/><br /><sub><b>Janek</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=xeruf" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://aleksasiriski.dev"><img src="https://avatars.githubusercontent.com/u/31509435?v=4?s=100" width="100px;" alt="Aleksa Siriški"/><br /><sub><b>Aleksa Siriški</b></sub></a><br /><a href="#infra-aleksasiriski" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://danishhumair.com"><img src="https://avatars.githubusercontent.com/u/121830048?v=4?s=100" width="100px;" alt="Danish Humair"/><br /><sub><b>Danish Humair</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=Danish-H" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://arm0.red"><img src="https://avatars.githubusercontent.com/u/16858514?v=4?s=100" width="100px;" alt="Stephen Harris"/><br /><sub><b>Stephen Harris</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=trackmastersteve" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<!-- markdownlint-restore -->
|
||||
<!-- prettier-ignore-end -->
|
||||
|
||||
<!-- ALL-CONTRIBUTORS-LIST:END -->
|
||||
|
||||
### Overseerr Contributors ✨
|
||||
|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://sct.dev"><img src="https://avatars1.githubusercontent.com/u/234213?v=4?s=100" width="100px;" alt="sct"/><br /><sub><b>sct</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=sct" title="Code">💻</a> <a href="#design-sct" title="Design">🎨</a> <a href="#ideas-sct" title="Ideas, Planning, & Feedback">🤔</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/azoitos"><img src="https://avatars2.githubusercontent.com/u/26529049?v=4?s=100" width="100px;" alt="Alex Zoitos"/><br /><sub><b>Alex Zoitos</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=azoitos" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/OwsleyJr"><img src="https://avatars3.githubusercontent.com/u/8635678?v=4?s=100" width="100px;" alt="Brandon Cohen"/><br /><sub><b>Brandon Cohen</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=OwsleyJr" title="Code">💻</a> <a href="https://github.com/sct/overseerr/commits?author=OwsleyJr" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Ahreluth"><img src="https://avatars2.githubusercontent.com/u/75682440?v=4?s=100" width="100px;" alt="Ahreluth"/><br /><sub><b>Ahreluth</b></sub></a><br /><a href="#translation-Ahreluth" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/KovalevArtem"><img src="https://avatars0.githubusercontent.com/u/36500228?v=4?s=100" width="100px;" alt="KovalevArtem"/><br /><sub><b>KovalevArtem</b></sub></a><br /><a href="#translation-KovalevArtem" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GiyomuWeb"><img src="https://avatars0.githubusercontent.com/u/62489209?v=4?s=100" width="100px;" alt="GiyomuWeb"/><br /><sub><b>GiyomuWeb</b></sub></a><br /><a href="#translation-GiyomuWeb" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/angrycuban13"><img src="https://avatars3.githubusercontent.com/u/39564898?v=4?s=100" width="100px;" alt="Angry Cuban"/><br /><sub><b>Angry Cuban</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=angrycuban13" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jvennik"><img src="https://avatars3.githubusercontent.com/u/6672637?v=4?s=100" width="100px;" alt="jvennik"/><br /><sub><b>jvennik</b></sub></a><br /><a href="#translation-jvennik" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/darknessgp"><img src="https://avatars0.githubusercontent.com/u/1521243?v=4?s=100" width="100px;" alt="darknessgp"/><br /><sub><b>darknessgp</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=darknessgp" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/saltydk"><img src="https://avatars1.githubusercontent.com/u/6587950?v=4?s=100" width="100px;" alt="salty"/><br /><sub><b>salty</b></sub></a><br /><a href="#infra-saltydk" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Shutruk"><img src="https://avatars2.githubusercontent.com/u/9198633?v=4?s=100" width="100px;" alt="Shutruk"/><br /><sub><b>Shutruk</b></sub></a><br /><a href="#translation-Shutruk" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/krystiancharubin"><img src="https://avatars2.githubusercontent.com/u/17775600?v=4?s=100" width="100px;" alt="Krystian Charubin"/><br /><sub><b>Krystian Charubin</b></sub></a><br /><a href="#design-krystiancharubin" title="Design">🎨</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kieron"><img src="https://avatars2.githubusercontent.com/u/8655212?v=4?s=100" width="100px;" alt="Kieron Boswell"/><br /><sub><b>Kieron Boswell</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=kieron" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/samwiseg0"><img src="https://avatars1.githubusercontent.com/u/2241731?v=4?s=100" width="100px;" alt="samwiseg0"/><br /><sub><b>samwiseg0</b></sub></a><br /><a href="#question-samwiseg0" title="Answering Questions">💬</a> <a href="#infra-samwiseg0" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ecelebi29"><img src="https://avatars2.githubusercontent.com/u/8337120?v=4?s=100" width="100px;" alt="ecelebi29"/><br /><sub><b>ecelebi29</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=ecelebi29" title="Code">💻</a> <a href="https://github.com/sct/overseerr/commits?author=ecelebi29" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mmozeiko"><img src="https://avatars3.githubusercontent.com/u/1665010?v=4?s=100" width="100px;" alt="Mārtiņš Možeiko"/><br /><sub><b>Mārtiņš Možeiko</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=mmozeiko" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mazzetta86"><img src="https://avatars2.githubusercontent.com/u/45591560?v=4?s=100" width="100px;" alt="mazzetta86"/><br /><sub><b>mazzetta86</b></sub></a><br /><a href="#translation-mazzetta86" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Panzer1119"><img src="https://avatars1.githubusercontent.com/u/23016343?v=4?s=100" width="100px;" alt="Paul Hagedorn"/><br /><sub><b>Paul Hagedorn</b></sub></a><br /><a href="#translation-Panzer1119" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Shagon94"><img src="https://avatars3.githubusercontent.com/u/9140783?v=4?s=100" width="100px;" alt="Shagon94"/><br /><sub><b>Shagon94</b></sub></a><br /><a href="#translation-Shagon94" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sebstrgg"><img src="https://avatars3.githubusercontent.com/u/27026694?v=4?s=100" width="100px;" alt="sebstrgg"/><br /><sub><b>sebstrgg</b></sub></a><br /><a href="#translation-sebstrgg" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/danshilm"><img src="https://avatars2.githubusercontent.com/u/20923978?v=4?s=100" width="100px;" alt="Danshil Mungur"/><br /><sub><b>Danshil Mungur</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=danshilm" title="Code">💻</a> <a href="https://github.com/sct/overseerr/commits?author=danshilm" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/doob187"><img src="https://avatars1.githubusercontent.com/u/60312740?v=4?s=100" width="100px;" alt="doob187"/><br /><sub><b>doob187</b></sub></a><br /><a href="#infra-doob187" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/johnpyp"><img src="https://avatars2.githubusercontent.com/u/20625636?v=4?s=100" width="100px;" alt="johnpyp"/><br /><sub><b>johnpyp</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=johnpyp" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ankarhem"><img src="https://avatars1.githubusercontent.com/u/14110063?v=4?s=100" width="100px;" alt="Jakob Ankarhem"/><br /><sub><b>Jakob Ankarhem</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=ankarhem" title="Documentation">📖</a> <a href="https://github.com/sct/overseerr/commits?author=ankarhem" title="Code">💻</a> <a href="#translation-ankarhem" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jayesh100"><img src="https://avatars1.githubusercontent.com/u/8022175?v=4?s=100" width="100px;" alt="Jayesh"/><br /><sub><b>Jayesh</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=jayesh100" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/flying-sausages"><img src="https://avatars1.githubusercontent.com/u/23618693?v=4?s=100" width="100px;" alt="flying-sausages"/><br /><sub><b>flying-sausages</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=flying-sausages" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/hirenshah"><img src="https://avatars2.githubusercontent.com/u/418112?v=4?s=100" width="100px;" alt="hirenshah"/><br /><sub><b>hirenshah</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=hirenshah" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TheCatLady"><img src="https://avatars0.githubusercontent.com/u/52870424?v=4?s=100" width="100px;" alt="TheCatLady"/><br /><sub><b>TheCatLady</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=TheCatLady" title="Code">💻</a> <a href="#translation-TheCatLady" title="Translation">🌍</a> <a href="https://github.com/sct/overseerr/commits?author=TheCatLady" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/chriscpritchard"><img src="https://avatars1.githubusercontent.com/u/1839074?v=4?s=100" width="100px;" alt="Chris Pritchard"/><br /><sub><b>Chris Pritchard</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=chriscpritchard" title="Code">💻</a> <a href="https://github.com/sct/overseerr/commits?author=chriscpritchard" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Tamberlox"><img src="https://avatars3.githubusercontent.com/u/56069014?v=4?s=100" width="100px;" alt="Tamberlox"/><br /><sub><b>Tamberlox</b></sub></a><br /><a href="#translation-Tamberlox" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://hmnd.io"><img src="https://avatars.githubusercontent.com/u/12853597?v=4?s=100" width="100px;" alt="David"/><br /><sub><b>David</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=hmnd" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.douglas-parker.com"><img src="https://avatars.githubusercontent.com/u/18235822?v=4?s=100" width="100px;" alt="Douglas Parker"/><br /><sub><b>Douglas Parker</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=douglasparker" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dancarter"><img src="https://avatars.githubusercontent.com/u/4387516?v=4?s=100" width="100px;" alt="Daniel Carter"/><br /><sub><b>Daniel Carter</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=dancarter" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://nuro.dev"><img src="https://avatars.githubusercontent.com/u/4991309?v=4?s=100" width="100px;" alt="nuro"/><br /><sub><b>nuro</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=NuroDev" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/onedr0p"><img src="https://avatars.githubusercontent.com/u/213795?v=4?s=100" width="100px;" alt="ᗪєνιη ᗷυнʟ"/><br /><sub><b>ᗪєνιη ᗷυнʟ</b></sub></a><br /><a href="#infra-onedr0p" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JonnyWong16"><img src="https://avatars.githubusercontent.com/u/9099342?v=4?s=100" width="100px;" alt="JonnyWong16"/><br /><sub><b>JonnyWong16</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=JonnyWong16" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Roxedus"><img src="https://avatars.githubusercontent.com/u/7110194?v=4?s=100" width="100px;" alt="Roxedus"/><br /><sub><b>Roxedus</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Roxedus" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/WoisWoi"><img src="https://avatars.githubusercontent.com/u/75491231?v=4?s=100" width="100px;" alt="WoisWoi"/><br /><sub><b>WoisWoi</b></sub></a><br /><a href="#translation-WoisWoi" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/HubDuck"><img src="https://avatars.githubusercontent.com/u/77843475?v=4?s=100" width="100px;" alt="HubDuck"/><br /><sub><b>HubDuck</b></sub></a><br /><a href="#translation-HubDuck" title="Translation">🌍</a> <a href="https://github.com/sct/overseerr/commits?author=HubDuck" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/costaht"><img src="https://avatars.githubusercontent.com/u/50637431?v=4?s=100" width="100px;" alt="costaht"/><br /><sub><b>costaht</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=costaht" title="Documentation">📖</a> <a href="#translation-costaht" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Shjosan"><img src="https://avatars.githubusercontent.com/u/20847626?v=4?s=100" width="100px;" alt="Shjosan"/><br /><sub><b>Shjosan</b></sub></a><br /><a href="#translation-Shjosan" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/kobaubarr"><img src="https://avatars.githubusercontent.com/u/28481522?v=4?s=100" width="100px;" alt="kobaubarr"/><br /><sub><b>kobaubarr</b></sub></a><br /><a href="#translation-kobaubarr" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/notorius28"><img src="https://avatars.githubusercontent.com/u/1621513?v=4?s=100" width="100px;" alt="Ricardo González"/><br /><sub><b>Ricardo González</b></sub></a><br /><a href="#translation-notorius28" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://torkili.uz"><img src="https://avatars.githubusercontent.com/u/460764?v=4?s=100" width="100px;" alt="Torkil"/><br /><sub><b>Torkil</b></sub></a><br /><a href="#translation-Torkiliuz" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://www.jagandeepbrar.io"><img src="https://avatars.githubusercontent.com/u/3048295?v=4?s=100" width="100px;" alt="Jagandeep Brar"/><br /><sub><b>Jagandeep Brar</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=JagandeepBrar" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://dtalens.com"><img src="https://avatars.githubusercontent.com/u/6631832?v=4?s=100" width="100px;" alt="dtalens"/><br /><sub><b>dtalens</b></sub></a><br /><a href="#translation-dtalens" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/acortelyou"><img src="https://avatars.githubusercontent.com/u/1689668?v=4?s=100" width="100px;" alt="Alex Cortelyou"/><br /><sub><b>Alex Cortelyou</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=acortelyou" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://nz.linkedin.com/in/jonocairns"><img src="https://avatars.githubusercontent.com/u/182836?v=4?s=100" width="100px;" alt="Jono Cairns"/><br /><sub><b>Jono Cairns</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=jonocairns" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://scias.net/"><img src="https://avatars.githubusercontent.com/u/439655?v=4?s=100" width="100px;" alt="DJScias"/><br /><sub><b>DJScias</b></sub></a><br /><a href="#translation-DJScias" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Dabu-dot"><img src="https://avatars.githubusercontent.com/u/52525576?v=4?s=100" width="100px;" alt="Dabu-dot"/><br /><sub><b>Dabu-dot</b></sub></a><br /><a href="#translation-Dabu-dot" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Jabster28"><img src="https://avatars.githubusercontent.com/u/29015942?v=4?s=100" width="100px;" alt="Jabster28"/><br /><sub><b>Jabster28</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Jabster28" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/littlerooster"><img src="https://avatars.githubusercontent.com/u/83890654?v=4?s=100" width="100px;" alt="littlerooster"/><br /><sub><b>littlerooster</b></sub></a><br /><a href="#translation-littlerooster" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dphildebrandt"><img src="https://avatars.githubusercontent.com/u/154459?v=4?s=100" width="100px;" alt="Dustin Hildebrandt"/><br /><sub><b>Dustin Hildebrandt</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=dphildebrandt" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Generator"><img src="https://avatars.githubusercontent.com/u/44146?v=4?s=100" width="100px;" alt="Bruno Guerreiro"/><br /><sub><b>Bruno Guerreiro</b></sub></a><br /><a href="#translation-Generator" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/iceHtwoO"><img src="https://avatars.githubusercontent.com/u/27020492?v=4?s=100" width="100px;" alt="Alexander Neuhäuser"/><br /><sub><b>Alexander Neuhäuser</b></sub></a><br /><a href="#translation-iceHtwoO" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://www.unext.co.jp"><img src="https://avatars.githubusercontent.com/u/37431541?v=4?s=100" width="100px;" alt="Livio"/><br /><sub><b>Livio</b></sub></a><br /><a href="#design-liviokanone" title="Design">🎨</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tangentThought"><img src="https://avatars.githubusercontent.com/u/25516090?v=4?s=100" width="100px;" alt="tangentThought"/><br /><sub><b>tangentThought</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=tangentThought" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/nicospz"><img src="https://avatars.githubusercontent.com/u/31373060?v=4?s=100" width="100px;" alt="Nicolás Espinoza"/><br /><sub><b>Nicolás Espinoza</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=nicospz" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sootylunatic"><img src="https://avatars.githubusercontent.com/u/36486087?v=4?s=100" width="100px;" alt="sootylunatic"/><br /><sub><b>sootylunatic</b></sub></a><br /><a href="#translation-sootylunatic" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JoKerIsCraZy"><img src="https://avatars.githubusercontent.com/u/47474211?v=4?s=100" width="100px;" alt="JoKerIsCraZy"/><br /><sub><b>JoKerIsCraZy</b></sub></a><br /><a href="#translation-JoKerIsCraZy" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://daddie.dev"><img src="https://avatars.githubusercontent.com/u/33762262?v=4?s=100" width="100px;" alt="Daddie0"/><br /><sub><b>Daddie0</b></sub></a><br /><a href="#translation-GoByeBye" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://ungaro.me"><img src="https://avatars.githubusercontent.com/u/43807696?v=4?s=100" width="100px;" alt="Simone"/><br /><sub><b>Simone</b></sub></a><br /><a href="#translation-Simoneu01" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/adan89lion"><img src="https://avatars.githubusercontent.com/u/6585644?v=4?s=100" width="100px;" alt="Seohyun Joo"/><br /><sub><b>Seohyun Joo</b></sub></a><br /><a href="#translation-adan89lion" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ty4ko"><img src="https://avatars.githubusercontent.com/u/21213535?v=4?s=100" width="100px;" alt="Sergey"/><br /><sub><b>Sergey</b></sub></a><br /><a href="#translation-ty4ko" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/skafte1990"><img src="https://avatars.githubusercontent.com/u/31465453?v=4?s=100" width="100px;" alt="Shaaft"/><br /><sub><b>Shaaft</b></sub></a><br /><a href="#translation-skafte1990" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sr093906"><img src="https://avatars.githubusercontent.com/u/8369201?v=4?s=100" width="100px;" alt="sr093906"/><br /><sub><b>sr093906</b></sub></a><br /><a href="#translation-sr093906" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Nackophilz"><img src="https://avatars.githubusercontent.com/u/61667226?v=4?s=100" width="100px;" alt="Nackophilz"/><br /><sub><b>Nackophilz</b></sub></a><br /><a href="#translation-Nackophilz" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/schambers"><img src="https://avatars.githubusercontent.com/u/31563?v=4?s=100" width="100px;" alt="Sean Chambers"/><br /><sub><b>Sean Chambers</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=schambers" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/deniscerri"><img src="https://avatars.githubusercontent.com/u/64997243?v=4?s=100" width="100px;" alt="deniscerri"/><br /><sub><b>deniscerri</b></sub></a><br /><a href="#translation-deniscerri" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/tomgacz"><img src="https://avatars.githubusercontent.com/u/14138209?v=4?s=100" width="100px;" alt="tomgacz"/><br /><sub><b>tomgacz</b></sub></a><br /><a href="#translation-tomgacz" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Andersborrits"><img src="https://avatars.githubusercontent.com/u/29452218?v=4?s=100" width="100px;" alt="Andersborrits"/><br /><sub><b>Andersborrits</b></sub></a><br /><a href="#translation-Andersborrits" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://maxentrouault.fr"><img src="https://avatars.githubusercontent.com/u/67283154?v=4?s=100" width="100px;" alt="Maxent"/><br /><sub><b>Maxent</b></sub></a><br /><a href="#translation-Maxentr" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/sambartik"><img src="https://avatars.githubusercontent.com/u/63553146?v=4?s=100" width="100px;" alt="Samuel Bartík"/><br /><sub><b>Samuel Bartík</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=sambartik" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/frank-cywong"><img src="https://avatars.githubusercontent.com/u/90653148?v=4?s=100" width="100px;" alt="Chun Yeung Wong"/><br /><sub><b>Chun Yeung Wong</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=frank-cywong" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/TheMeanCanEHdian"><img src="https://avatars.githubusercontent.com/u/16025103?v=4?s=100" width="100px;" alt="TheMeanCanEHdian"/><br /><sub><b>TheMeanCanEHdian</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=TheMeanCanEHdian" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Gylesie"><img src="https://avatars.githubusercontent.com/u/86306812?v=4?s=100" width="100px;" alt="Gylesie"/><br /><sub><b>Gylesie</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Gylesie" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fhd-pro"><img src="https://avatars.githubusercontent.com/u/82862079?v=4?s=100" width="100px;" alt="Fhd-pro"/><br /><sub><b>Fhd-pro</b></sub></a><br /><a href="#translation-Fhd-pro" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/PovilasID"><img src="https://avatars.githubusercontent.com/u/396243?v=4?s=100" width="100px;" alt="PovilasID"/><br /><sub><b>PovilasID</b></sub></a><br /><a href="#translation-PovilasID" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/byakurau"><img src="https://avatars.githubusercontent.com/u/1811683?v=4?s=100" width="100px;" alt="byakurau"/><br /><sub><b>byakurau</b></sub></a><br /><a href="#translation-byakurau" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/miknii"><img src="https://avatars.githubusercontent.com/u/109232569?v=4?s=100" width="100px;" alt="miknii"/><br /><sub><b>miknii</b></sub></a><br /><a href="#translation-miknii" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Eclipseop"><img src="https://avatars.githubusercontent.com/u/5846213?v=4?s=100" width="100px;" alt="Mackenzie"/><br /><sub><b>Mackenzie</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Eclipseop" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/s0up4200"><img src="https://avatars.githubusercontent.com/u/18177310?v=4?s=100" width="100px;" alt="soup"/><br /><sub><b>soup</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=s0up4200" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ceptonit"><img src="https://avatars.githubusercontent.com/u/12678743?v=4?s=100" width="100px;" alt="ceptonit"/><br /><sub><b>ceptonit</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=ceptonit" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/aedelbro"><img src="https://avatars.githubusercontent.com/u/36162221?v=4?s=100" width="100px;" alt="aedelbro"/><br /><sub><b>aedelbro</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=aedelbro" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://twitter.com/lunks/"><img src="https://avatars.githubusercontent.com/u/91118?v=4?s=100" width="100px;" alt="Pedro Nascimento"/><br /><sub><b>Pedro Nascimento</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=lunks" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://voke.dev"><img src="https://avatars.githubusercontent.com/u/1899334?v=4?s=100" width="100px;" alt="Owen Voke"/><br /><sub><b>Owen Voke</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=owenvoke" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Nimelrian"><img src="https://avatars.githubusercontent.com/u/8960836?v=4?s=100" width="100px;" alt="Sebastian K"/><br /><sub><b>Sebastian K</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Nimelrian" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/jariz"><img src="https://avatars.githubusercontent.com/u/1415847?v=4?s=100" width="100px;" alt="jariz"/><br /><sub><b>jariz</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=jariz" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://arouillard.fr"><img src="https://avatars.githubusercontent.com/u/13947260?v=4?s=100" width="100px;" alt="Alex"/><br /><sub><b>Alex</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Alexays" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Zebebles"><img src="https://avatars.githubusercontent.com/u/11425451?v=4?s=100" width="100px;" alt="Zeb Muller"/><br /><sub><b>Zeb Muller</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Zebebles" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://smoores.dev"><img src="https://avatars.githubusercontent.com/u/5354254?v=4?s=100" width="100px;" alt="Shane Friedman"/><br /><sub><b>Shane Friedman</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=SMores" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://izaacj.me"><img src="https://avatars.githubusercontent.com/u/711323?v=4?s=100" width="100px;" alt="Izaac Brånn"/><br /><sub><b>Izaac Brånn</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=IzaacJ" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SalmanTariq"><img src="https://avatars.githubusercontent.com/u/13284494?v=4?s=100" width="100px;" alt="Salman Tariq"/><br /><sub><b>Salman Tariq</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=SalmanTariq" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/andrew-kennedy"><img src="https://avatars.githubusercontent.com/u/2387159?v=4?s=100" width="100px;" alt="Andrew Kennedy"/><br /><sub><b>Andrew Kennedy</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=andrew-kennedy" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fallenbagel"><img src="https://avatars.githubusercontent.com/u/98979876?v=4?s=100" width="100px;" alt="Fallenbagel"/><br /><sub><b>Fallenbagel</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=Fallenbagel" title="Jellyseerr">🪼⌨️</a> <a href="https://github.com/sct/overseerr/commits?author=Fallenbagel" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://aidoge.xyz"><img src="https://avatars.githubusercontent.com/u/9427639?v=4?s=100" width="100px;" alt="Anton K. (ai Doge)"/><br /><sub><b>Anton K. (ai Doge)</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=scorp200" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://marcofaggian.com"><img src="https://avatars.githubusercontent.com/u/19221001?v=4?s=100" width="100px;" alt="Marco Faggian"/><br /><sub><b>Marco Faggian</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=marcofaggian" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://nemchik.com/"><img src="https://avatars.githubusercontent.com/u/725456?v=4?s=100" width="100px;" alt="Eric Nemchik"/><br /><sub><b>Eric Nemchik</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=nemchik" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RemiRigal"><img src="https://avatars.githubusercontent.com/u/19256051?v=4?s=100" width="100px;" alt="RemiRigal"/><br /><sub><b>RemiRigal</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=RemiRigal" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -3,147 +3,147 @@
|
||||
"vapidPrivate": "tmnslaO8ZWN6bNbSEv_rolPeBTlNxOwCCAHrM9oZz3M",
|
||||
"vapidPublic": "BK_EpP8NDm9waor2zn6_S28o3ZYv4kCkJOfYpO3pt3W6jnPmxrgTLANUBNbbyaNatPnSQ12De9CeqSYQrqWzHTs",
|
||||
"main": {
|
||||
"apiKey": "testkey",
|
||||
"applicationTitle": "Overseerr",
|
||||
"applicationUrl": "",
|
||||
"csrfProtection": false,
|
||||
"cacheImages": false,
|
||||
"defaultPermissions": 32,
|
||||
"defaultQuotas": {
|
||||
"movie": {},
|
||||
"tv": {}
|
||||
},
|
||||
"hideAvailable": false,
|
||||
"localLogin": true,
|
||||
"newPlexLogin": true,
|
||||
"region": "",
|
||||
"originalLanguage": "",
|
||||
"trustProxy": false,
|
||||
"partialRequestsEnabled": true,
|
||||
"locale": "en"
|
||||
"apiKey": "testkey",
|
||||
"applicationTitle": "Overseerr",
|
||||
"applicationUrl": "",
|
||||
"csrfProtection": false,
|
||||
"cacheImages": false,
|
||||
"defaultPermissions": 32,
|
||||
"defaultQuotas": {
|
||||
"movie": {},
|
||||
"tv": {}
|
||||
},
|
||||
"hideAvailable": false,
|
||||
"localLogin": true,
|
||||
"newPlexLogin": true,
|
||||
"region": "",
|
||||
"originalLanguage": "",
|
||||
"trustProxy": false,
|
||||
"partialRequestsEnabled": true,
|
||||
"locale": "en"
|
||||
},
|
||||
"plex": {
|
||||
"name": "Seerr",
|
||||
"ip": "192.168.1.1",
|
||||
"port": 32400,
|
||||
"useSsl": false,
|
||||
"libraries": [
|
||||
{
|
||||
"id": "1",
|
||||
"name": "Movies",
|
||||
"enabled": true,
|
||||
"type": "movie"
|
||||
}
|
||||
],
|
||||
"machineId": "test"
|
||||
"name": "Seerr",
|
||||
"ip": "192.168.1.1",
|
||||
"port": 32400,
|
||||
"useSsl": false,
|
||||
"libraries": [
|
||||
{
|
||||
"id": "1",
|
||||
"name": "Movies",
|
||||
"enabled": true,
|
||||
"type": "movie"
|
||||
}
|
||||
],
|
||||
"machineId": "test"
|
||||
},
|
||||
"tautulli": {},
|
||||
"radarr": [],
|
||||
"sonarr": [],
|
||||
"public": {
|
||||
"initialized": true
|
||||
"initialized": true
|
||||
},
|
||||
"notifications": {
|
||||
"agents": {
|
||||
"email": {
|
||||
"enabled": false,
|
||||
"options": {
|
||||
"emailFrom": "",
|
||||
"smtpHost": "",
|
||||
"smtpPort": 587,
|
||||
"secure": false,
|
||||
"ignoreTls": false,
|
||||
"requireTls": false,
|
||||
"allowSelfSigned": false,
|
||||
"senderName": "Overseerr"
|
||||
}
|
||||
},
|
||||
"discord": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": "",
|
||||
"enableMentions": true
|
||||
}
|
||||
},
|
||||
"lunasea": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": ""
|
||||
}
|
||||
},
|
||||
"slack": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": ""
|
||||
}
|
||||
},
|
||||
"telegram": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"botAPI": "",
|
||||
"chatId": "",
|
||||
"sendSilently": false
|
||||
}
|
||||
},
|
||||
"pushbullet": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"accessToken": ""
|
||||
}
|
||||
},
|
||||
"pushover": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"accessToken": "",
|
||||
"userToken": ""
|
||||
}
|
||||
},
|
||||
"webhook": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": "",
|
||||
"jsonPayload": "IntcbiAgICBcIm5vdGlmaWNhdGlvbl90eXBlXCI6IFwie3tub3RpZmljYXRpb25fdHlwZX19XCIsXG4gICAgXCJldmVudFwiOiBcInt7ZXZlbnR9fVwiLFxuICAgIFwic3ViamVjdFwiOiBcInt7c3ViamVjdH19XCIsXG4gICAgXCJtZXNzYWdlXCI6IFwie3ttZXNzYWdlfX1cIixcbiAgICBcImltYWdlXCI6IFwie3tpbWFnZX19XCIsXG4gICAgXCJ7e21lZGlhfX1cIjoge1xuICAgICAgICBcIm1lZGlhX3R5cGVcIjogXCJ7e21lZGlhX3R5cGV9fVwiLFxuICAgICAgICBcInRtZGJJZFwiOiBcInt7bWVkaWFfdG1kYmlkfX1cIixcbiAgICAgICAgXCJ0dmRiSWRcIjogXCJ7e21lZGlhX3R2ZGJpZH19XCIsXG4gICAgICAgIFwic3RhdHVzXCI6IFwie3ttZWRpYV9zdGF0dXN9fVwiLFxuICAgICAgICBcInN0YXR1czRrXCI6IFwie3ttZWRpYV9zdGF0dXM0a319XCJcbiAgICB9LFxuICAgIFwie3tyZXF1ZXN0fX1cIjoge1xuICAgICAgICBcInJlcXVlc3RfaWRcIjogXCJ7e3JlcXVlc3RfaWR9fVwiLFxuICAgICAgICBcInJlcXVlc3RlZEJ5X2VtYWlsXCI6IFwie3tyZXF1ZXN0ZWRCeV9lbWFpbH19XCIsXG4gICAgICAgIFwicmVxdWVzdGVkQnlfdXNlcm5hbWVcIjogXCJ7e3JlcXVlc3RlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXF1ZXN0ZWRCeV9hdmF0YXJcIjogXCJ7e3JlcXVlc3RlZEJ5X2F2YXRhcn19XCJcbiAgICB9LFxuICAgIFwie3tpc3N1ZX19XCI6IHtcbiAgICAgICAgXCJpc3N1ZV9pZFwiOiBcInt7aXNzdWVfaWR9fVwiLFxuICAgICAgICBcImlzc3VlX3R5cGVcIjogXCJ7e2lzc3VlX3R5cGV9fVwiLFxuICAgICAgICBcImlzc3VlX3N0YXR1c1wiOiBcInt7aXNzdWVfc3RhdHVzfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2VtYWlsXCI6IFwie3tyZXBvcnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X3VzZXJuYW1lXCI6IFwie3tyZXBvcnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2F2YXRhclwiOiBcInt7cmVwb3J0ZWRCeV9hdmF0YXJ9fVwiXG4gICAgfSxcbiAgICBcInt7Y29tbWVudH19XCI6IHtcbiAgICAgICAgXCJjb21tZW50X21lc3NhZ2VcIjogXCJ7e2NvbW1lbnRfbWVzc2FnZX19XCIsXG4gICAgICAgIFwiY29tbWVudGVkQnlfZW1haWxcIjogXCJ7e2NvbW1lbnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJjb21tZW50ZWRCeV91c2VybmFtZVwiOiBcInt7Y29tbWVudGVkQnlfdXNlcm5hbWV9fVwiLFxuICAgICAgICBcImNvbW1lbnRlZEJ5X2F2YXRhclwiOiBcInt7Y29tbWVudGVkQnlfYXZhdGFyfX1cIlxuICAgIH0sXG4gICAgXCJ7e2V4dHJhfX1cIjogW11cbn0i"
|
||||
}
|
||||
},
|
||||
"webpush": {
|
||||
"enabled": false,
|
||||
"options": {}
|
||||
},
|
||||
"gotify": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"url": "",
|
||||
"token": ""
|
||||
}
|
||||
"agents": {
|
||||
"email": {
|
||||
"enabled": false,
|
||||
"options": {
|
||||
"emailFrom": "",
|
||||
"smtpHost": "",
|
||||
"smtpPort": 587,
|
||||
"secure": false,
|
||||
"ignoreTls": false,
|
||||
"requireTls": false,
|
||||
"allowSelfSigned": false,
|
||||
"senderName": "Overseerr"
|
||||
}
|
||||
},
|
||||
"discord": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": "",
|
||||
"enableMentions": true
|
||||
}
|
||||
},
|
||||
"lunasea": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": ""
|
||||
}
|
||||
},
|
||||
"slack": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": ""
|
||||
}
|
||||
},
|
||||
"telegram": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"botAPI": "",
|
||||
"chatId": "",
|
||||
"sendSilently": false
|
||||
}
|
||||
},
|
||||
"pushbullet": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"accessToken": ""
|
||||
}
|
||||
},
|
||||
"pushover": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"accessToken": "",
|
||||
"userToken": ""
|
||||
}
|
||||
},
|
||||
"webhook": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"webhookUrl": "",
|
||||
"jsonPayload": "IntcbiAgICBcIm5vdGlmaWNhdGlvbl90eXBlXCI6IFwie3tub3RpZmljYXRpb25fdHlwZX19XCIsXG4gICAgXCJldmVudFwiOiBcInt7ZXZlbnR9fVwiLFxuICAgIFwic3ViamVjdFwiOiBcInt7c3ViamVjdH19XCIsXG4gICAgXCJtZXNzYWdlXCI6IFwie3ttZXNzYWdlfX1cIixcbiAgICBcImltYWdlXCI6IFwie3tpbWFnZX19XCIsXG4gICAgXCJ7e21lZGlhfX1cIjoge1xuICAgICAgICBcIm1lZGlhX3R5cGVcIjogXCJ7e21lZGlhX3R5cGV9fVwiLFxuICAgICAgICBcInRtZGJJZFwiOiBcInt7bWVkaWFfdG1kYmlkfX1cIixcbiAgICAgICAgXCJ0dmRiSWRcIjogXCJ7e21lZGlhX3R2ZGJpZH19XCIsXG4gICAgICAgIFwic3RhdHVzXCI6IFwie3ttZWRpYV9zdGF0dXN9fVwiLFxuICAgICAgICBcInN0YXR1czRrXCI6IFwie3ttZWRpYV9zdGF0dXM0a319XCJcbiAgICB9LFxuICAgIFwie3tyZXF1ZXN0fX1cIjoge1xuICAgICAgICBcInJlcXVlc3RfaWRcIjogXCJ7e3JlcXVlc3RfaWR9fVwiLFxuICAgICAgICBcInJlcXVlc3RlZEJ5X2VtYWlsXCI6IFwie3tyZXF1ZXN0ZWRCeV9lbWFpbH19XCIsXG4gICAgICAgIFwicmVxdWVzdGVkQnlfdXNlcm5hbWVcIjogXCJ7e3JlcXVlc3RlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXF1ZXN0ZWRCeV9hdmF0YXJcIjogXCJ7e3JlcXVlc3RlZEJ5X2F2YXRhcn19XCJcbiAgICB9LFxuICAgIFwie3tpc3N1ZX19XCI6IHtcbiAgICAgICAgXCJpc3N1ZV9pZFwiOiBcInt7aXNzdWVfaWR9fVwiLFxuICAgICAgICBcImlzc3VlX3R5cGVcIjogXCJ7e2lzc3VlX3R5cGV9fVwiLFxuICAgICAgICBcImlzc3VlX3N0YXR1c1wiOiBcInt7aXNzdWVfc3RhdHVzfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2VtYWlsXCI6IFwie3tyZXBvcnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X3VzZXJuYW1lXCI6IFwie3tyZXBvcnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2F2YXRhclwiOiBcInt7cmVwb3J0ZWRCeV9hdmF0YXJ9fVwiXG4gICAgfSxcbiAgICBcInt7Y29tbWVudH19XCI6IHtcbiAgICAgICAgXCJjb21tZW50X21lc3NhZ2VcIjogXCJ7e2NvbW1lbnRfbWVzc2FnZX19XCIsXG4gICAgICAgIFwiY29tbWVudGVkQnlfZW1haWxcIjogXCJ7e2NvbW1lbnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJjb21tZW50ZWRCeV91c2VybmFtZVwiOiBcInt7Y29tbWVudGVkQnlfdXNlcm5hbWV9fVwiLFxuICAgICAgICBcImNvbW1lbnRlZEJ5X2F2YXRhclwiOiBcInt7Y29tbWVudGVkQnlfYXZhdGFyfX1cIlxuICAgIH0sXG4gICAgXCJ7e2V4dHJhfX1cIjogW11cbn0i"
|
||||
}
|
||||
},
|
||||
"webpush": {
|
||||
"enabled": false,
|
||||
"options": {}
|
||||
},
|
||||
"gotify": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"url": "",
|
||||
"token": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"jobs": {
|
||||
"plex-recently-added-scan": {
|
||||
"schedule": "0 */5 * * * *"
|
||||
},
|
||||
"plex-full-scan": {
|
||||
"schedule": "0 0 3 * * *"
|
||||
},
|
||||
"radarr-scan": {
|
||||
"schedule": "0 0 4 * * *"
|
||||
},
|
||||
"sonarr-scan": {
|
||||
"schedule": "0 30 4 * * *"
|
||||
},
|
||||
"download-sync": {
|
||||
"schedule": "0 * * * * *"
|
||||
},
|
||||
"download-sync-reset": {
|
||||
"schedule": "0 0 1 * * *"
|
||||
}
|
||||
"plex-recently-added-scan": {
|
||||
"schedule": "0 */5 * * * *"
|
||||
},
|
||||
"plex-full-scan": {
|
||||
"schedule": "0 0 3 * * *"
|
||||
},
|
||||
"radarr-scan": {
|
||||
"schedule": "0 0 4 * * *"
|
||||
},
|
||||
"sonarr-scan": {
|
||||
"schedule": "0 30 4 * * *"
|
||||
},
|
||||
"download-sync": {
|
||||
"schedule": "0 * * * * *"
|
||||
},
|
||||
"download-sync-reset": {
|
||||
"schedule": "0 0 1 * * *"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -187,7 +187,7 @@ describe('Discover', () => {
|
||||
|
||||
cy.wait('@getWatchlist');
|
||||
|
||||
const sliderHeader = cy.contains('.slider-header', 'Your Watchlist');
|
||||
const sliderHeader = cy.contains('.slider-header', 'Watchlist');
|
||||
|
||||
sliderHeader.scrollIntoView();
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
version: '3'
|
||||
services:
|
||||
overseerr:
|
||||
jellyseerr:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.local
|
||||
|
||||
@@ -368,6 +368,9 @@ components:
|
||||
externalHostname:
|
||||
type: string
|
||||
example: 'http://my.jellyfin.host'
|
||||
jellyfinForgotPasswordUrl:
|
||||
type: string
|
||||
example: 'http://my.jellyfin.host/web/index.html#!/forgotpassword.html'
|
||||
adminUser:
|
||||
type: string
|
||||
example: 'admin'
|
||||
@@ -1351,6 +1354,8 @@ components:
|
||||
type: string
|
||||
userToken:
|
||||
type: string
|
||||
sound:
|
||||
type: string
|
||||
GotifySettings:
|
||||
type: object
|
||||
properties:
|
||||
@@ -1786,6 +1791,9 @@ components:
|
||||
pushoverUserKey:
|
||||
type: string
|
||||
nullable: true
|
||||
pushoverSound:
|
||||
type: string
|
||||
nullable: true
|
||||
telegramEnabled:
|
||||
type: boolean
|
||||
telegramBotUsername:
|
||||
@@ -3083,6 +3091,33 @@ paths:
|
||||
responses:
|
||||
'204':
|
||||
description: Test notification attempted
|
||||
/settings/notifications/pushover/sounds:
|
||||
get:
|
||||
summary: Get Pushover sounds
|
||||
description: Returns valid Pushover sound options in a JSON array.
|
||||
tags:
|
||||
- settings
|
||||
parameters:
|
||||
- in: query
|
||||
name: token
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
nullable: false
|
||||
responses:
|
||||
'200':
|
||||
description: Returned Pushover settings
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
type: object
|
||||
properties:
|
||||
name:
|
||||
type: string
|
||||
description:
|
||||
type: string
|
||||
/settings/notifications/gotify:
|
||||
get:
|
||||
summary: Get Gotify notification settings
|
||||
@@ -5657,6 +5692,63 @@ paths:
|
||||
audienceRating:
|
||||
type: string
|
||||
enum: ['Spilled', 'Upright']
|
||||
/movie/{movieId}/ratingscombined:
|
||||
get:
|
||||
summary: Get RT and IMDB movie ratings combined
|
||||
description: Returns ratings from RottenTomatoes and IMDB based on the provided movieId in a JSON object.
|
||||
tags:
|
||||
- movies
|
||||
parameters:
|
||||
- in: path
|
||||
name: movieId
|
||||
required: true
|
||||
schema:
|
||||
type: number
|
||||
example: 337401
|
||||
responses:
|
||||
'200':
|
||||
description: Ratings returned
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
rt:
|
||||
type: object
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
example: Mulan
|
||||
year:
|
||||
type: number
|
||||
example: 2020
|
||||
url:
|
||||
type: string
|
||||
example: 'http://www.rottentomatoes.com/m/mulan_2020/'
|
||||
criticsScore:
|
||||
type: number
|
||||
example: 85
|
||||
criticsRating:
|
||||
type: string
|
||||
enum: ['Rotten', 'Fresh', 'Certified Fresh']
|
||||
audienceScore:
|
||||
type: number
|
||||
example: 65
|
||||
audienceRating:
|
||||
type: string
|
||||
enum: ['Spilled', 'Upright']
|
||||
imdb:
|
||||
type: object
|
||||
properties:
|
||||
title:
|
||||
type: string
|
||||
example: I am Legend
|
||||
url:
|
||||
type: string
|
||||
example: 'https://www.imdb.com/title/tt0480249'
|
||||
criticsScore:
|
||||
type: number
|
||||
example: 6.5
|
||||
/tv/{tvId}:
|
||||
get:
|
||||
summary: Get TV details
|
||||
|
||||
@@ -17,7 +17,7 @@
|
||||
}
|
||||
|
||||
h1 {
|
||||
color: #6366F1;
|
||||
color: #6366f1;
|
||||
}
|
||||
|
||||
p {
|
||||
@@ -37,7 +37,7 @@
|
||||
<!-- Inline the page's JavaScript file. -->
|
||||
<script>
|
||||
// Manual reload feature.
|
||||
document.querySelector("button").addEventListener("click", () => {
|
||||
document.querySelector('button').addEventListener('click', () => {
|
||||
window.location.reload();
|
||||
});
|
||||
|
||||
|
||||
74
public/sw.js
74
public/sw.js
@@ -4,30 +4,30 @@
|
||||
// This variable is intentionally declared and unused.
|
||||
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
||||
const OFFLINE_VERSION = 3;
|
||||
const CACHE_NAME = "offline";
|
||||
const CACHE_NAME = 'offline';
|
||||
// Customize this with a different URL if needed.
|
||||
const OFFLINE_URL = "/offline.html";
|
||||
const OFFLINE_URL = '/offline.html';
|
||||
|
||||
self.addEventListener("install", (event) => {
|
||||
self.addEventListener('install', (event) => {
|
||||
event.waitUntil(
|
||||
(async () => {
|
||||
const cache = await caches.open(CACHE_NAME);
|
||||
// Setting {cache: 'reload'} in the new request will ensure that the
|
||||
// response isn't fulfilled from the HTTP cache; i.e., it will be from
|
||||
// the network.
|
||||
await cache.add(new Request(OFFLINE_URL, { cache: "reload" }));
|
||||
await cache.add(new Request(OFFLINE_URL, { cache: 'reload' }));
|
||||
})()
|
||||
);
|
||||
// Force the waiting service worker to become the active service worker.
|
||||
self.skipWaiting();
|
||||
});
|
||||
|
||||
self.addEventListener("activate", (event) => {
|
||||
self.addEventListener('activate', (event) => {
|
||||
event.waitUntil(
|
||||
(async () => {
|
||||
// Enable navigation preload if it's supported.
|
||||
// See https://developers.google.com/web/updates/2017/02/navigation-preload
|
||||
if ("navigationPreload" in self.registration) {
|
||||
if ('navigationPreload' in self.registration) {
|
||||
await self.registration.navigationPreload.enable();
|
||||
}
|
||||
})()
|
||||
@@ -37,10 +37,10 @@ self.addEventListener("activate", (event) => {
|
||||
clients.claim();
|
||||
});
|
||||
|
||||
self.addEventListener("fetch", (event) => {
|
||||
self.addEventListener('fetch', (event) => {
|
||||
// We only want to call event.respondWith() if this is a navigation request
|
||||
// for an HTML page.
|
||||
if (event.request.mode === "navigate") {
|
||||
if (event.request.mode === 'navigate') {
|
||||
event.respondWith(
|
||||
(async () => {
|
||||
try {
|
||||
@@ -59,7 +59,7 @@ self.addEventListener("fetch", (event) => {
|
||||
// If fetch() returns a valid HTTP response with a response code in
|
||||
// the 4xx or 5xx range, the catch() will NOT be called.
|
||||
// eslint-disable-next-line no-console
|
||||
console.log("Fetch failed; returning offline page instead.", error);
|
||||
console.log('Fetch failed; returning offline page instead.', error);
|
||||
|
||||
const cache = await caches.open(CACHE_NAME);
|
||||
const cachedResponse = await cache.match(OFFLINE_URL);
|
||||
@@ -85,15 +85,13 @@ self.addEventListener('push', (event) => {
|
||||
requestId: payload.requestId,
|
||||
},
|
||||
actions: [],
|
||||
}
|
||||
};
|
||||
|
||||
if (payload.actionUrl){
|
||||
options.actions.push(
|
||||
{
|
||||
action: 'view',
|
||||
title: payload.actionUrlTitle ?? 'View',
|
||||
}
|
||||
);
|
||||
if (payload.actionUrl) {
|
||||
options.actions.push({
|
||||
action: 'view',
|
||||
title: payload.actionUrlTitle ?? 'View',
|
||||
});
|
||||
}
|
||||
|
||||
if (payload.notificationType === 'MEDIA_PENDING') {
|
||||
@@ -109,27 +107,29 @@ self.addEventListener('push', (event) => {
|
||||
);
|
||||
}
|
||||
|
||||
event.waitUntil(
|
||||
self.registration.showNotification(payload.subject, options)
|
||||
);
|
||||
event.waitUntil(self.registration.showNotification(payload.subject, options));
|
||||
});
|
||||
|
||||
self.addEventListener('notificationclick', (event) => {
|
||||
const notificationData = event.notification.data;
|
||||
self.addEventListener(
|
||||
'notificationclick',
|
||||
(event) => {
|
||||
const notificationData = event.notification.data;
|
||||
|
||||
event.notification.close();
|
||||
event.notification.close();
|
||||
|
||||
if (event.action === 'approve') {
|
||||
fetch(`/api/v1/request/${notificationData.requestId}/approve`, {
|
||||
method: 'POST',
|
||||
});
|
||||
} else if (event.action === 'decline') {
|
||||
fetch(`/api/v1/request/${notificationData.requestId}/decline`, {
|
||||
method: 'POST',
|
||||
});
|
||||
}
|
||||
|
||||
if (notificationData.actionUrl) {
|
||||
clients.openWindow(notificationData.actionUrl);
|
||||
}
|
||||
}, false);
|
||||
if (event.action === 'approve') {
|
||||
fetch(`/api/v1/request/${notificationData.requestId}/approve`, {
|
||||
method: 'POST',
|
||||
});
|
||||
} else if (event.action === 'decline') {
|
||||
fetch(`/api/v1/request/${notificationData.requestId}/decline`, {
|
||||
method: 'POST',
|
||||
});
|
||||
}
|
||||
|
||||
if (notificationData.actionUrl) {
|
||||
clients.openWindow(notificationData.actionUrl);
|
||||
}
|
||||
},
|
||||
false
|
||||
);
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
/* eslint-disable @typescript-eslint/no-explicit-any */
|
||||
import availabilitySync from '@server/lib/availabilitySync';
|
||||
import logger from '@server/logger';
|
||||
import type { AxiosInstance } from 'axios';
|
||||
import axios from 'axios';
|
||||
@@ -8,6 +9,9 @@ export interface JellyfinUserResponse {
|
||||
ServerId: string;
|
||||
ServerName: string;
|
||||
Id: string;
|
||||
Policy: {
|
||||
IsAdministrator: boolean;
|
||||
};
|
||||
PrimaryImageTag?: string;
|
||||
}
|
||||
|
||||
@@ -171,6 +175,9 @@ class JellyfinAPI {
|
||||
|
||||
public async getLibraries(): Promise<JellyfinLibrary[]> {
|
||||
try {
|
||||
// TODO: Try to fix automatic grouping without fucking up LDAP users
|
||||
// const libraries = await this.axios.get<any>('/Library/VirtualFolders');
|
||||
|
||||
const account = await this.axios.get<any>(
|
||||
`/Users/${this.userId ?? 'Me'}/Views`
|
||||
);
|
||||
@@ -238,7 +245,9 @@ class JellyfinAPI {
|
||||
}
|
||||
}
|
||||
|
||||
public async getItemData(id: string): Promise<JellyfinLibraryItemExtended> {
|
||||
public async getItemData(
|
||||
id: string
|
||||
): Promise<JellyfinLibraryItemExtended | undefined> {
|
||||
try {
|
||||
const contents = await this.axios.get<any>(
|
||||
`/Users/${this.userId}/Items/${id}`
|
||||
@@ -246,6 +255,11 @@ class JellyfinAPI {
|
||||
|
||||
return contents.data;
|
||||
} catch (e) {
|
||||
if (availabilitySync.running) {
|
||||
if (e.response && e.response.status === 500) {
|
||||
return undefined;
|
||||
}
|
||||
}
|
||||
logger.error(
|
||||
`Something went wrong while getting library content from the Jellyfin server: ${e.message}`,
|
||||
{ label: 'Jellyfin API' }
|
||||
@@ -258,9 +272,7 @@ class JellyfinAPI {
|
||||
try {
|
||||
const contents = await this.axios.get<any>(`/Shows/${seriesID}/Seasons`);
|
||||
|
||||
return contents.data.Items.filter(
|
||||
(item: JellyfinLibraryItem) => item.LocationType !== 'Virtual'
|
||||
);
|
||||
return contents.data.Items;
|
||||
} catch (e) {
|
||||
logger.error(
|
||||
`Something went wrong while getting the list of seasons from the Jellyfin server: ${e.message}`,
|
||||
|
||||
@@ -82,21 +82,6 @@ interface ServerResponse {
|
||||
};
|
||||
}
|
||||
|
||||
interface FriendResponse {
|
||||
MediaContainer: {
|
||||
User: {
|
||||
$: {
|
||||
id: string;
|
||||
title: string;
|
||||
username: string;
|
||||
email: string;
|
||||
thumb: string;
|
||||
};
|
||||
Server?: ServerResponse[];
|
||||
}[];
|
||||
};
|
||||
}
|
||||
|
||||
interface UsersResponse {
|
||||
MediaContainer: {
|
||||
User: {
|
||||
@@ -234,19 +219,6 @@ class PlexTvAPI extends ExternalAPI {
|
||||
}
|
||||
}
|
||||
|
||||
public async getFriends(): Promise<FriendResponse> {
|
||||
const response = await this.axios.get('/pms/friends/all', {
|
||||
transformResponse: [],
|
||||
responseType: 'text',
|
||||
});
|
||||
|
||||
const parsedXml = (await xml2js.parseStringPromise(
|
||||
response.data
|
||||
)) as FriendResponse;
|
||||
|
||||
return parsedXml;
|
||||
}
|
||||
|
||||
public async checkUserAccess(userId: number): Promise<boolean> {
|
||||
const settings = getSettings();
|
||||
|
||||
@@ -255,9 +227,9 @@ class PlexTvAPI extends ExternalAPI {
|
||||
throw new Error('Plex is not configured!');
|
||||
}
|
||||
|
||||
const friends = await this.getFriends();
|
||||
const usersResponse = await this.getUsers();
|
||||
|
||||
const users = friends.MediaContainer.User;
|
||||
const users = usersResponse.MediaContainer.User;
|
||||
|
||||
const user = users.find((u) => parseInt(u.$.id) === userId);
|
||||
|
||||
|
||||
56
server/api/pushover.ts
Normal file
56
server/api/pushover.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import ExternalAPI from './externalapi';
|
||||
|
||||
interface PushoverSoundsResponse {
|
||||
sounds: {
|
||||
[name: string]: string;
|
||||
};
|
||||
status: number;
|
||||
request: string;
|
||||
}
|
||||
|
||||
export interface PushoverSound {
|
||||
name: string;
|
||||
description: string;
|
||||
}
|
||||
|
||||
export const mapSounds = (sounds: {
|
||||
[name: string]: string;
|
||||
}): PushoverSound[] =>
|
||||
Object.entries(sounds).map(
|
||||
([name, description]) =>
|
||||
({
|
||||
name,
|
||||
description,
|
||||
} as PushoverSound)
|
||||
);
|
||||
|
||||
class PushoverAPI extends ExternalAPI {
|
||||
constructor() {
|
||||
super(
|
||||
'https://api.pushover.net/1',
|
||||
{},
|
||||
{
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
},
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
public async getSounds(appToken: string): Promise<PushoverSound[]> {
|
||||
try {
|
||||
const data = await this.get<PushoverSoundsResponse>('/sounds.json', {
|
||||
params: {
|
||||
token: appToken,
|
||||
},
|
||||
});
|
||||
|
||||
return mapSounds(data.sounds);
|
||||
} catch (e) {
|
||||
throw new Error(`[Pushover] Failed to retrieve sounds: ${e.message}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default PushoverAPI;
|
||||
195
server/api/rating/imdbRadarrProxy.ts
Normal file
195
server/api/rating/imdbRadarrProxy.ts
Normal file
@@ -0,0 +1,195 @@
|
||||
import ExternalAPI from '@server/api/externalapi';
|
||||
import cacheManager from '@server/lib/cache';
|
||||
|
||||
type IMDBRadarrProxyResponse = IMDBMovie[];
|
||||
|
||||
interface IMDBMovie {
|
||||
ImdbId: string;
|
||||
Overview: string;
|
||||
Title: string;
|
||||
OriginalTitle: string;
|
||||
TitleSlug: string;
|
||||
Ratings: Rating[];
|
||||
MovieRatings: MovieRatings;
|
||||
Runtime: number;
|
||||
Images: Image[];
|
||||
Genres: string[];
|
||||
Popularity: number;
|
||||
Premier: string;
|
||||
InCinema: string;
|
||||
PhysicalRelease: any;
|
||||
DigitalRelease: string;
|
||||
Year: number;
|
||||
AlternativeTitles: AlternativeTitle[];
|
||||
Translations: Translation[];
|
||||
Recommendations: Recommendation[];
|
||||
Credits: Credits;
|
||||
Studio: string;
|
||||
YoutubeTrailerId: string;
|
||||
Certifications: Certification[];
|
||||
Status: any;
|
||||
Collection: Collection;
|
||||
OriginalLanguage: string;
|
||||
Homepage: string;
|
||||
TmdbId: number;
|
||||
}
|
||||
|
||||
interface Rating {
|
||||
Count: number;
|
||||
Value: number;
|
||||
Origin: string;
|
||||
Type: string;
|
||||
}
|
||||
|
||||
interface MovieRatings {
|
||||
Tmdb: Tmdb;
|
||||
Imdb: Imdb;
|
||||
Metacritic: Metacritic;
|
||||
RottenTomatoes: RottenTomatoes;
|
||||
}
|
||||
|
||||
interface Tmdb {
|
||||
Count: number;
|
||||
Value: number;
|
||||
Type: string;
|
||||
}
|
||||
|
||||
interface Imdb {
|
||||
Count: number;
|
||||
Value: number;
|
||||
Type: string;
|
||||
}
|
||||
|
||||
interface Metacritic {
|
||||
Count: number;
|
||||
Value: number;
|
||||
Type: string;
|
||||
}
|
||||
|
||||
interface RottenTomatoes {
|
||||
Count: number;
|
||||
Value: number;
|
||||
Type: string;
|
||||
}
|
||||
|
||||
interface Image {
|
||||
CoverType: string;
|
||||
Url: string;
|
||||
}
|
||||
|
||||
interface AlternativeTitle {
|
||||
Title: string;
|
||||
Type: string;
|
||||
Language: string;
|
||||
}
|
||||
|
||||
interface Translation {
|
||||
Title: string;
|
||||
Overview: string;
|
||||
Language: string;
|
||||
}
|
||||
|
||||
interface Recommendation {
|
||||
TmdbId: number;
|
||||
Title: string;
|
||||
}
|
||||
|
||||
interface Credits {
|
||||
Cast: Cast[];
|
||||
Crew: Crew[];
|
||||
}
|
||||
|
||||
interface Cast {
|
||||
Name: string;
|
||||
Order: number;
|
||||
Character: string;
|
||||
TmdbId: number;
|
||||
CreditId: string;
|
||||
Images: Image2[];
|
||||
}
|
||||
|
||||
interface Image2 {
|
||||
CoverType: string;
|
||||
Url: string;
|
||||
}
|
||||
|
||||
interface Crew {
|
||||
Name: string;
|
||||
Job: string;
|
||||
Department: string;
|
||||
TmdbId: number;
|
||||
CreditId: string;
|
||||
Images: Image3[];
|
||||
}
|
||||
|
||||
interface Image3 {
|
||||
CoverType: string;
|
||||
Url: string;
|
||||
}
|
||||
|
||||
interface Certification {
|
||||
Country: string;
|
||||
Certification: string;
|
||||
}
|
||||
|
||||
interface Collection {
|
||||
Name: string;
|
||||
Images: any;
|
||||
Overview: any;
|
||||
Translations: any;
|
||||
Parts: any;
|
||||
TmdbId: number;
|
||||
}
|
||||
|
||||
export interface IMDBRating {
|
||||
title: string;
|
||||
url: string;
|
||||
criticsScore: number;
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a best-effort API. The IMDB API is technically
|
||||
* private and getting access costs money/requires approval.
|
||||
*
|
||||
* Radarr hosts a public proxy that's in use by all Radarr instances.
|
||||
*/
|
||||
class IMDBRadarrProxy extends ExternalAPI {
|
||||
constructor() {
|
||||
super('https://api.radarr.video/v1', {
|
||||
headers: {
|
||||
'Content-Type': 'application/json',
|
||||
Accept: 'application/json',
|
||||
},
|
||||
nodeCache: cacheManager.getCache('imdb').data,
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Ask the Radarr IMDB Proxy for the movie
|
||||
*
|
||||
* @param IMDBid Id of IMDB movie
|
||||
*/
|
||||
public async getMovieRatings(IMDBid: string): Promise<IMDBRating | null> {
|
||||
try {
|
||||
const data = await this.get<IMDBRadarrProxyResponse>(
|
||||
`/movie/imdb/${IMDBid}`
|
||||
);
|
||||
|
||||
if (!data?.length || data[0].ImdbId !== IMDBid) {
|
||||
return null;
|
||||
}
|
||||
|
||||
return {
|
||||
title: data[0].Title,
|
||||
url: `https://www.imdb.com/title/${data[0].ImdbId}`,
|
||||
criticsScore: data[0].MovieRatings.Imdb.Value,
|
||||
};
|
||||
} catch (e) {
|
||||
throw new Error(
|
||||
`[IMDB RADARR PROXY API] Failed to retrieve movie ratings: ${e.message}`
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default IMDBRadarrProxy;
|
||||
@@ -1,6 +1,6 @@
|
||||
import ExternalAPI from '@server/api/externalapi';
|
||||
import cacheManager from '@server/lib/cache';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
import ExternalAPI from './externalapi';
|
||||
|
||||
interface RTAlgoliaSearchResponse {
|
||||
results: {
|
||||
@@ -144,6 +144,9 @@ class RottenTomatoes extends ExternalAPI {
|
||||
? 'Fresh'
|
||||
: 'Rotten',
|
||||
criticsScore: movie.rottenTomatoes.criticsScore,
|
||||
audienceRating:
|
||||
movie.rottenTomatoes.audienceScore >= 60 ? 'Upright' : 'Spilled',
|
||||
audienceScore: movie.rottenTomatoes.audienceScore,
|
||||
year: Number(movie.releaseYear),
|
||||
};
|
||||
} catch (e) {
|
||||
@@ -192,6 +195,9 @@ class RottenTomatoes extends ExternalAPI {
|
||||
criticsRating:
|
||||
tvshow.rottenTomatoes.criticsScore >= 60 ? 'Fresh' : 'Rotten',
|
||||
criticsScore: tvshow.rottenTomatoes.criticsScore,
|
||||
audienceRating:
|
||||
tvshow.rottenTomatoes.audienceScore >= 60 ? 'Upright' : 'Spilled',
|
||||
audienceScore: tvshow.rottenTomatoes.audienceScore,
|
||||
year: Number(tvshow.releaseYear),
|
||||
};
|
||||
} catch (e) {
|
||||
7
server/api/ratings.ts
Normal file
7
server/api/ratings.ts
Normal file
@@ -0,0 +1,7 @@
|
||||
import { type IMDBRating } from '@server/api/rating/imdbRadarrProxy';
|
||||
import { type RTRating } from '@server/api/rating/rottentomatoes';
|
||||
|
||||
export interface RatingResponse {
|
||||
rt?: RTRating;
|
||||
imdb?: IMDBRating;
|
||||
}
|
||||
@@ -151,11 +151,11 @@ class Media {
|
||||
@Column({ nullable: true, type: 'varchar' })
|
||||
public ratingKey4k?: string | null;
|
||||
|
||||
@Column({ nullable: true })
|
||||
public jellyfinMediaId?: string;
|
||||
@Column({ nullable: true, type: 'varchar' })
|
||||
public jellyfinMediaId?: string | null;
|
||||
|
||||
@Column({ nullable: true })
|
||||
public jellyfinMediaId4k?: string;
|
||||
@Column({ nullable: true, type: 'varchar' })
|
||||
public jellyfinMediaId4k?: string | null;
|
||||
|
||||
public serviceUrl?: string;
|
||||
public serviceUrl4k?: string;
|
||||
|
||||
@@ -984,7 +984,7 @@ export class MediaRequest {
|
||||
(keyword) => keyword.id === ANIME_KEYWORD_ID
|
||||
)
|
||||
) {
|
||||
seriesType = 'anime';
|
||||
seriesType = sonarrSettings.animeSeriesType ?? 'anime';
|
||||
}
|
||||
|
||||
let rootFolder =
|
||||
|
||||
@@ -51,6 +51,9 @@ export class UserSettings {
|
||||
@Column({ nullable: true })
|
||||
public pushoverUserKey?: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
public pushoverSound?: string;
|
||||
|
||||
@Column({ nullable: true })
|
||||
public telegramChatId?: string;
|
||||
|
||||
|
||||
@@ -162,7 +162,7 @@ app
|
||||
cookie: {
|
||||
maxAge: 1000 * 60 * 60 * 24 * 30,
|
||||
httpOnly: true,
|
||||
sameSite: true,
|
||||
sameSite: settings.main.csrfProtection ? 'strict' : 'lax',
|
||||
secure: 'auto',
|
||||
},
|
||||
store: new TypeormStore({
|
||||
|
||||
@@ -22,7 +22,9 @@ export interface SettingsAboutResponse {
|
||||
|
||||
export interface PublicSettingsResponse {
|
||||
jellyfinHost?: string;
|
||||
jellyfinExternalHost?: string;
|
||||
jellyfinServerName?: string;
|
||||
jellyfinForgotPasswordUrl?: string;
|
||||
initialized: boolean;
|
||||
applicationTitle: string;
|
||||
applicationUrl: string;
|
||||
|
||||
@@ -29,6 +29,7 @@ export interface UserSettingsNotificationsResponse {
|
||||
pushbulletAccessToken?: string;
|
||||
pushoverApplicationToken?: string;
|
||||
pushoverUserKey?: string;
|
||||
pushoverSound?: string;
|
||||
telegramEnabled?: boolean;
|
||||
telegramBotUsername?: string;
|
||||
telegramChatId?: string;
|
||||
|
||||
@@ -1,6 +1,11 @@
|
||||
import { MediaServerType } from '@server/constants/server';
|
||||
import availabilitySync from '@server/lib/availabilitySync';
|
||||
import downloadTracker from '@server/lib/downloadtracker';
|
||||
import ImageProxy from '@server/lib/imageproxy';
|
||||
import {
|
||||
jellyfinFullScanner,
|
||||
jellyfinRecentScanner,
|
||||
} from '@server/lib/scanners/jellyfin';
|
||||
import { plexFullScanner, plexRecentScanner } from '@server/lib/scanners/plex';
|
||||
import { radarrScanner } from '@server/lib/scanners/radarr';
|
||||
import { sonarrScanner } from '@server/lib/scanners/sonarr';
|
||||
@@ -8,8 +13,8 @@ import type { JobId } from '@server/lib/settings';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
import watchlistSync from '@server/lib/watchlistsync';
|
||||
import logger from '@server/logger';
|
||||
import random from 'lodash/random';
|
||||
import schedule from 'node-schedule';
|
||||
import { jobJellyfinFullSync, jobJellyfinRecentSync } from './jellyfinsync';
|
||||
|
||||
interface ScheduledJob {
|
||||
id: JobId;
|
||||
@@ -71,57 +76,67 @@ export const startJobs = (): void => {
|
||||
) {
|
||||
// Run recently added jellyfin sync every 5 minutes
|
||||
scheduledJobs.push({
|
||||
id: 'jellyfin-recently-added-sync',
|
||||
name: 'Jellyfin Recently Added Sync',
|
||||
id: 'jellyfin-recently-added-scan',
|
||||
name: 'Jellyfin Recently Added Scan',
|
||||
type: 'process',
|
||||
interval: 'minutes',
|
||||
cronSchedule: jobs['jellyfin-recently-added-sync'].schedule,
|
||||
cronSchedule: jobs['jellyfin-recently-added-scan'].schedule,
|
||||
job: schedule.scheduleJob(
|
||||
jobs['jellyfin-recently-added-sync'].schedule,
|
||||
jobs['jellyfin-recently-added-scan'].schedule,
|
||||
() => {
|
||||
logger.info('Starting scheduled job: Jellyfin Recently Added Sync', {
|
||||
logger.info('Starting scheduled job: Jellyfin Recently Added Scan', {
|
||||
label: 'Jobs',
|
||||
});
|
||||
jobJellyfinRecentSync.run();
|
||||
jellyfinRecentScanner.run();
|
||||
}
|
||||
),
|
||||
running: () => jobJellyfinRecentSync.status().running,
|
||||
cancelFn: () => jobJellyfinRecentSync.cancel(),
|
||||
running: () => jellyfinRecentScanner.status().running,
|
||||
cancelFn: () => jellyfinRecentScanner.cancel(),
|
||||
});
|
||||
|
||||
// Run full jellyfin sync every 24 hours
|
||||
scheduledJobs.push({
|
||||
id: 'jellyfin-full-sync',
|
||||
name: 'Jellyfin Full Library Sync',
|
||||
id: 'jellyfin-full-scan',
|
||||
name: 'Jellyfin Full Library Scan',
|
||||
type: 'process',
|
||||
interval: 'hours',
|
||||
cronSchedule: jobs['jellyfin-full-sync'].schedule,
|
||||
job: schedule.scheduleJob(jobs['jellyfin-full-sync'].schedule, () => {
|
||||
logger.info('Starting scheduled job: Jellyfin Full Sync', {
|
||||
cronSchedule: jobs['jellyfin-full-scan'].schedule,
|
||||
job: schedule.scheduleJob(jobs['jellyfin-full-scan'].schedule, () => {
|
||||
logger.info('Starting scheduled job: Jellyfin Full Scan', {
|
||||
label: 'Jobs',
|
||||
});
|
||||
jobJellyfinFullSync.run();
|
||||
jellyfinFullScanner.run();
|
||||
}),
|
||||
running: () => jobJellyfinFullSync.status().running,
|
||||
cancelFn: () => jobJellyfinFullSync.cancel(),
|
||||
running: () => jellyfinFullScanner.status().running,
|
||||
cancelFn: () => jellyfinFullScanner.cancel(),
|
||||
});
|
||||
}
|
||||
|
||||
// Run watchlist sync every 5 minutes
|
||||
scheduledJobs.push({
|
||||
// Watchlist Sync
|
||||
const watchlistSyncJob: ScheduledJob = {
|
||||
id: 'plex-watchlist-sync',
|
||||
name: 'Plex Watchlist Sync',
|
||||
type: 'process',
|
||||
interval: 'minutes',
|
||||
interval: 'fixed',
|
||||
cronSchedule: jobs['plex-watchlist-sync'].schedule,
|
||||
job: schedule.scheduleJob(jobs['plex-watchlist-sync'].schedule, () => {
|
||||
job: schedule.scheduleJob(new Date(Date.now() + 1000 * 60 * 20), () => {
|
||||
logger.info('Starting scheduled job: Plex Watchlist Sync', {
|
||||
label: 'Jobs',
|
||||
});
|
||||
watchlistSync.syncWatchlist();
|
||||
}),
|
||||
};
|
||||
|
||||
// To help alleviate load on Plex's servers, we will add some fuzziness to the next schedule
|
||||
// after each run
|
||||
watchlistSyncJob.job.on('run', () => {
|
||||
watchlistSyncJob.job.schedule(
|
||||
new Date(Math.floor(Date.now() + 1000 * 60 * random(14, 24, true)))
|
||||
);
|
||||
});
|
||||
|
||||
scheduledJobs.push(watchlistSyncJob);
|
||||
|
||||
// Run full radarr scan every 24 hours
|
||||
scheduledJobs.push({
|
||||
id: 'radarr-scan',
|
||||
@@ -153,7 +168,7 @@ export const startJobs = (): void => {
|
||||
});
|
||||
|
||||
// Checks if media is still available in plex/sonarr/radarr libs
|
||||
/* scheduledJobs.push({
|
||||
scheduledJobs.push({
|
||||
id: 'availability-sync',
|
||||
name: 'Media Availability Sync',
|
||||
type: 'process',
|
||||
@@ -168,7 +183,6 @@ export const startJobs = (): void => {
|
||||
running: () => availabilitySync.running,
|
||||
cancelFn: () => availabilitySync.cancel(),
|
||||
});
|
||||
*/
|
||||
|
||||
// Run download sync every minute
|
||||
scheduledJobs.push({
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,7 @@ export type AvailableCacheIds =
|
||||
| 'radarr'
|
||||
| 'sonarr'
|
||||
| 'rt'
|
||||
| 'imdb'
|
||||
| 'github'
|
||||
| 'plexguid'
|
||||
| 'plextv';
|
||||
@@ -51,6 +52,10 @@ class CacheManager {
|
||||
stdTtl: 43200,
|
||||
checkPeriod: 60 * 30,
|
||||
}),
|
||||
imdb: new Cache('imdb', 'IMDB Radarr Proxy', {
|
||||
stdTtl: 43200,
|
||||
checkPeriod: 60 * 30,
|
||||
}),
|
||||
github: new Cache('github', 'GitHub API', {
|
||||
stdTtl: 21600,
|
||||
checkPeriod: 60 * 30,
|
||||
|
||||
@@ -159,6 +159,7 @@ class PushoverAgent
|
||||
...notificationPayload,
|
||||
token: settings.options.accessToken,
|
||||
user: settings.options.userToken,
|
||||
sound: settings.options.sound,
|
||||
} as PushoverPayload);
|
||||
} catch (e) {
|
||||
logger.error('Error sending Pushover notification', {
|
||||
@@ -198,6 +199,7 @@ class PushoverAgent
|
||||
...notificationPayload,
|
||||
token: payload.notifyUser.settings.pushoverApplicationToken,
|
||||
user: payload.notifyUser.settings.pushoverUserKey,
|
||||
sound: payload.notifyUser.settings.pushoverSound,
|
||||
} as PushoverPayload);
|
||||
} catch (e) {
|
||||
logger.error('Error sending Pushover notification', {
|
||||
|
||||
@@ -26,7 +26,7 @@ interface SyncStatus {
|
||||
libraries: Library[];
|
||||
}
|
||||
|
||||
class JobJellyfinSync {
|
||||
class JellyfinScanner {
|
||||
private sessionId: string;
|
||||
private tmdb: TheMovieDb;
|
||||
private jfClient: JellyfinAPI;
|
||||
@@ -62,7 +62,7 @@ class JobJellyfinSync {
|
||||
const metadata = await this.jfClient.getItemData(jellyfinitem.Id);
|
||||
const newMedia = new Media();
|
||||
|
||||
if (!metadata.Id) {
|
||||
if (!metadata?.Id) {
|
||||
logger.debug('No Id metadata for this title. Skipping', {
|
||||
label: 'Plex Sync',
|
||||
ratingKey: jellyfinitem.Id,
|
||||
@@ -168,9 +168,9 @@ class JobJellyfinSync {
|
||||
newMedia.jellyfinMediaId =
|
||||
hasOtherResolution || (!this.enable4kMovie && has4k)
|
||||
? metadata.Id
|
||||
: undefined;
|
||||
: null;
|
||||
newMedia.jellyfinMediaId4k =
|
||||
has4k && this.enable4kMovie ? metadata.Id : undefined;
|
||||
has4k && this.enable4kMovie ? metadata.Id : null;
|
||||
await mediaRepository.save(newMedia);
|
||||
this.log(`Saved ${metadata.Name}`);
|
||||
}
|
||||
@@ -197,6 +197,14 @@ class JobJellyfinSync {
|
||||
jellyfinitem.SeriesId ?? jellyfinitem.SeasonId ?? jellyfinitem.Id;
|
||||
const metadata = await this.jfClient.getItemData(Id);
|
||||
|
||||
if (!metadata?.Id) {
|
||||
logger.debug('No Id metadata for this title. Skipping', {
|
||||
label: 'Plex Sync',
|
||||
ratingKey: jellyfinitem.Id,
|
||||
});
|
||||
return;
|
||||
}
|
||||
|
||||
if (metadata.ProviderIds.Tvdb) {
|
||||
tvShow = await this.tmdb.getShowByTvdbId({
|
||||
tvdbId: Number(metadata.ProviderIds.Tvdb),
|
||||
@@ -275,7 +283,7 @@ class JobJellyfinSync {
|
||||
episode.Id
|
||||
);
|
||||
|
||||
ExtendedEpisodeData.MediaSources?.some((MediaSource) => {
|
||||
ExtendedEpisodeData?.MediaSources?.some((MediaSource) => {
|
||||
return MediaSource.MediaStreams.some((MediaStream) => {
|
||||
if (MediaStream.Type === 'Video') {
|
||||
if ((MediaStream.Width ?? 0) >= 2000) {
|
||||
@@ -311,13 +319,15 @@ class JobJellyfinSync {
|
||||
// setting the status to AVAILABLE if all of a type is there, partially if some,
|
||||
// and then not modifying the status if there are 0 items
|
||||
existingSeason.status =
|
||||
totalStandard >= season.episode_count
|
||||
totalStandard >= season.episode_count ||
|
||||
existingSeason.status === MediaStatus.AVAILABLE
|
||||
? MediaStatus.AVAILABLE
|
||||
: totalStandard > 0
|
||||
? MediaStatus.PARTIALLY_AVAILABLE
|
||||
: existingSeason.status;
|
||||
existingSeason.status4k =
|
||||
this.enable4kShow && total4k >= season.episode_count
|
||||
(this.enable4kShow && total4k >= season.episode_count) ||
|
||||
existingSeason.status4k === MediaStatus.AVAILABLE
|
||||
? MediaStatus.AVAILABLE
|
||||
: this.enable4kShow && total4k > 0
|
||||
? MediaStatus.PARTIALLY_AVAILABLE
|
||||
@@ -451,8 +461,9 @@ class JobJellyfinSync {
|
||||
tmdbId: tvShow.id,
|
||||
tvdbId: tvShow.external_ids.tvdb_id,
|
||||
mediaAddedAt: new Date(metadata.DateCreated ?? ''),
|
||||
jellyfinMediaId: Id,
|
||||
jellyfinMediaId4k: Id,
|
||||
jellyfinMediaId: isAllStandardSeasons ? Id : null,
|
||||
jellyfinMediaId4k:
|
||||
isAll4kSeasons && this.enable4kShow ? Id : null,
|
||||
status: isAllStandardSeasons
|
||||
? MediaStatus.AVAILABLE
|
||||
: newSeasons.some(
|
||||
@@ -673,7 +684,7 @@ class JobJellyfinSync {
|
||||
}
|
||||
}
|
||||
|
||||
export const jobJellyfinFullSync = new JobJellyfinSync();
|
||||
export const jobJellyfinRecentSync = new JobJellyfinSync({
|
||||
export const jellyfinFullScanner = new JellyfinScanner();
|
||||
export const jellyfinRecentScanner = new JellyfinScanner({
|
||||
isRecentOnly: true,
|
||||
});
|
||||
@@ -40,6 +40,7 @@ export interface JellyfinSettings {
|
||||
name: string;
|
||||
hostname: string;
|
||||
externalHostname?: string;
|
||||
jellyfinForgotPasswordUrl?: string;
|
||||
libraries: Library[];
|
||||
serverId: string;
|
||||
}
|
||||
@@ -77,6 +78,8 @@ export interface RadarrSettings extends DVRSettings {
|
||||
}
|
||||
|
||||
export interface SonarrSettings extends DVRSettings {
|
||||
seriesType: 'standard' | 'daily' | 'anime';
|
||||
animeSeriesType: 'standard' | 'daily' | 'anime';
|
||||
activeAnimeProfileId?: number;
|
||||
activeAnimeProfileName?: string;
|
||||
activeAnimeDirectory?: string;
|
||||
@@ -128,6 +131,8 @@ interface FullPublicSettings extends PublicSettings {
|
||||
originalLanguage: string;
|
||||
mediaServerType: number;
|
||||
jellyfinHost?: string;
|
||||
jellyfinExternalHost?: string;
|
||||
jellyfinForgotPasswordUrl?: string;
|
||||
jellyfinServerName?: string;
|
||||
partialRequestsEnabled: boolean;
|
||||
cacheImages: boolean;
|
||||
@@ -204,6 +209,7 @@ export interface NotificationAgentPushover extends NotificationAgentConfig {
|
||||
options: {
|
||||
accessToken: string;
|
||||
userToken: string;
|
||||
sound: string;
|
||||
};
|
||||
}
|
||||
|
||||
@@ -263,8 +269,8 @@ export type JobId =
|
||||
| 'sonarr-scan'
|
||||
| 'download-sync'
|
||||
| 'download-sync-reset'
|
||||
| 'jellyfin-recently-added-sync'
|
||||
| 'jellyfin-full-sync'
|
||||
| 'jellyfin-recently-added-scan'
|
||||
| 'jellyfin-full-scan'
|
||||
| 'image-cache-cleanup'
|
||||
| 'availability-sync';
|
||||
|
||||
@@ -327,6 +333,7 @@ class Settings {
|
||||
name: '',
|
||||
hostname: '',
|
||||
externalHostname: '',
|
||||
jellyfinForgotPasswordUrl: '',
|
||||
libraries: [],
|
||||
serverId: '',
|
||||
},
|
||||
@@ -396,6 +403,7 @@ class Settings {
|
||||
options: {
|
||||
accessToken: '',
|
||||
userToken: '',
|
||||
sound: '',
|
||||
},
|
||||
},
|
||||
webhook: {
|
||||
@@ -404,7 +412,7 @@ class Settings {
|
||||
options: {
|
||||
webhookUrl: '',
|
||||
jsonPayload:
|
||||
'IntcbiAgICBcIm5vdGlmaWNhdGlvbl90eXBlXCI6IFwie3tub3RpZmljYXRpb25fdHlwZX19XCIsXG4gICAgXCJldmVudFwiOiBcInt7ZXZlbnR9fVwiLFxuICAgIFwic3ViamVjdFwiOiBcInt7c3ViamVjdH19XCIsXG4gICAgXCJtZXNzYWdlXCI6IFwie3ttZXNzYWdlfX1cIixcbiAgICBcImltYWdlXCI6IFwie3tpbWFnZX19XCIsXG4gICAgXCJ7e21lZGlhfX1cIjoge1xuICAgICAgICBcIm1lZGlhX3R5cGVcIjogXCJ7e21lZGlhX3R5cGV9fVwiLFxuICAgICAgICBcInRtZGJJZFwiOiBcInt7bWVkaWFfdG1kYmlkfX1cIixcbiAgICAgICAgXCJ0dmRiSWRcIjogXCJ7e21lZGlhX3R2ZGJpZH19XCIsXG4gICAgICAgIFwic3RhdHVzXCI6IFwie3ttZWRpYV9zdGF0dXN9fVwiLFxuICAgICAgICBcInN0YXR1czRrXCI6IFwie3ttZWRpYV9zdGF0dXM0a319XCJcbiAgICB9LFxuICAgIFwie3tyZXF1ZXN0fX1cIjoge1xuICAgICAgICBcInJlcXVlc3RfaWRcIjogXCJ7e3JlcXVlc3RfaWR9fVwiLFxuICAgICAgICBcInJlcXVlc3RlZEJ5X2VtYWlsXCI6IFwie3tyZXF1ZXN0ZWRCeV9lbWFpbH19XCIsXG4gICAgICAgIFwicmVxdWVzdGVkQnlfdXNlcm5hbWVcIjogXCJ7e3JlcXVlc3RlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXF1ZXN0ZWRCeV9hdmF0YXJcIjogXCJ7e3JlcXVlc3RlZEJ5X2F2YXRhcn19XCJcbiAgICB9LFxuICAgIFwie3tpc3N1ZX19XCI6IHtcbiAgICAgICAgXCJpc3N1ZV9pZFwiOiBcInt7aXNzdWVfaWR9fVwiLFxuICAgICAgICBcImlzc3VlX3R5cGVcIjogXCJ7e2lzc3VlX3R5cGV9fVwiLFxuICAgICAgICBcImlzc3VlX3N0YXR1c1wiOiBcInt7aXNzdWVfc3RhdHVzfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2VtYWlsXCI6IFwie3tyZXBvcnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X3VzZXJuYW1lXCI6IFwie3tyZXBvcnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICAgICAgXCJyZXBvcnRlZEJ5X2F2YXRhclwiOiBcInt7cmVwb3J0ZWRCeV9hdmF0YXJ9fVwiXG4gICAgfSxcbiAgICBcInt7Y29tbWVudH19XCI6IHtcbiAgICAgICAgXCJjb21tZW50X21lc3NhZ2VcIjogXCJ7e2NvbW1lbnRfbWVzc2FnZX19XCIsXG4gICAgICAgIFwiY29tbWVudGVkQnlfZW1haWxcIjogXCJ7e2NvbW1lbnRlZEJ5X2VtYWlsfX1cIixcbiAgICAgICAgXCJjb21tZW50ZWRCeV91c2VybmFtZVwiOiBcInt7Y29tbWVudGVkQnlfdXNlcm5hbWV9fVwiLFxuICAgICAgICBcImNvbW1lbnRlZEJ5X2F2YXRhclwiOiBcInt7Y29tbWVudGVkQnlfYXZhdGFyfX1cIlxuICAgIH0sXG4gICAgXCJ7e2V4dHJhfX1cIjogW11cbn0i',
|
||||
'IntcbiAgXCJub3RpZmljYXRpb25fdHlwZVwiOiBcInt7bm90aWZpY2F0aW9uX3R5cGV9fVwiLFxuICBcImV2ZW50XCI6IFwie3tldmVudH19XCIsXG4gIFwic3ViamVjdFwiOiBcInt7c3ViamVjdH19XCIsXG4gIFwibWVzc2FnZVwiOiBcInt7bWVzc2FnZX19XCIsXG4gIFwiaW1hZ2VcIjogXCJ7e2ltYWdlfX1cIixcbiAgXCJ7e21lZGlhfX1cIjoge1xuICAgIFwibWVkaWFfdHlwZVwiOiBcInt7bWVkaWFfdHlwZX19XCIsXG4gICAgXCJ0bWRiSWRcIjogXCJ7e21lZGlhX3RtZGJpZH19XCIsXG4gICAgXCJ0dmRiSWRcIjogXCJ7e21lZGlhX3R2ZGJpZH19XCIsXG4gICAgXCJzdGF0dXNcIjogXCJ7e21lZGlhX3N0YXR1c319XCIsXG4gICAgXCJzdGF0dXM0a1wiOiBcInt7bWVkaWFfc3RhdHVzNGt9fVwiXG4gIH0sXG4gIFwie3tyZXF1ZXN0fX1cIjoge1xuICAgIFwicmVxdWVzdF9pZFwiOiBcInt7cmVxdWVzdF9pZH19XCIsXG4gICAgXCJyZXF1ZXN0ZWRCeV9lbWFpbFwiOiBcInt7cmVxdWVzdGVkQnlfZW1haWx9fVwiLFxuICAgIFwicmVxdWVzdGVkQnlfdXNlcm5hbWVcIjogXCJ7e3JlcXVlc3RlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICBcInJlcXVlc3RlZEJ5X2F2YXRhclwiOiBcInt7cmVxdWVzdGVkQnlfYXZhdGFyfX1cIixcbiAgICBcInJlcXVlc3RlZEJ5X3NldHRpbmdzX2Rpc2NvcmRJZFwiOiBcInt7cmVxdWVzdGVkQnlfc2V0dGluZ3NfZGlzY29yZElkfX1cIixcbiAgICBcInJlcXVlc3RlZEJ5X3NldHRpbmdzX3RlbGVncmFtQ2hhdElkXCI6IFwie3tyZXF1ZXN0ZWRCeV9zZXR0aW5nc190ZWxlZ3JhbUNoYXRJZH19XCJcbiAgfSxcbiAgXCJ7e2lzc3VlfX1cIjoge1xuICAgIFwiaXNzdWVfaWRcIjogXCJ7e2lzc3VlX2lkfX1cIixcbiAgICBcImlzc3VlX3R5cGVcIjogXCJ7e2lzc3VlX3R5cGV9fVwiLFxuICAgIFwiaXNzdWVfc3RhdHVzXCI6IFwie3tpc3N1ZV9zdGF0dXN9fVwiLFxuICAgIFwicmVwb3J0ZWRCeV9lbWFpbFwiOiBcInt7cmVwb3J0ZWRCeV9lbWFpbH19XCIsXG4gICAgXCJyZXBvcnRlZEJ5X3VzZXJuYW1lXCI6IFwie3tyZXBvcnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICBcInJlcG9ydGVkQnlfYXZhdGFyXCI6IFwie3tyZXBvcnRlZEJ5X2F2YXRhcn19XCIsXG4gICAgXCJyZXBvcnRlZEJ5X3NldHRpbmdzX2Rpc2NvcmRJZFwiOiBcInt7cmVwb3J0ZWRCeV9zZXR0aW5nc19kaXNjb3JkSWR9fVwiLFxuICAgIFwicmVwb3J0ZWRCeV9zZXR0aW5nc190ZWxlZ3JhbUNoYXRJZFwiOiBcInt7cmVwb3J0ZWRCeV9zZXR0aW5nc190ZWxlZ3JhbUNoYXRJZH19XCJcbiAgfSxcbiAgXCJ7e2NvbW1lbnR9fVwiOiB7XG4gICAgXCJjb21tZW50X21lc3NhZ2VcIjogXCJ7e2NvbW1lbnRfbWVzc2FnZX19XCIsXG4gICAgXCJjb21tZW50ZWRCeV9lbWFpbFwiOiBcInt7Y29tbWVudGVkQnlfZW1haWx9fVwiLFxuICAgIFwiY29tbWVudGVkQnlfdXNlcm5hbWVcIjogXCJ7e2NvbW1lbnRlZEJ5X3VzZXJuYW1lfX1cIixcbiAgICBcImNvbW1lbnRlZEJ5X2F2YXRhclwiOiBcInt7Y29tbWVudGVkQnlfYXZhdGFyfX1cIixcbiAgICBcImNvbW1lbnRlZEJ5X3NldHRpbmdzX2Rpc2NvcmRJZFwiOiBcInt7Y29tbWVudGVkQnlfc2V0dGluZ3NfZGlzY29yZElkfX1cIixcbiAgICBcImNvbW1lbnRlZEJ5X3NldHRpbmdzX3RlbGVncmFtQ2hhdElkXCI6IFwie3tjb21tZW50ZWRCeV9zZXR0aW5nc190ZWxlZ3JhbUNoYXRJZH19XCJcbiAgfSxcbiAgXCJ7e2V4dHJhfX1cIjogW11cbn0i',
|
||||
},
|
||||
},
|
||||
webpush: {
|
||||
@@ -446,10 +454,10 @@ class Settings {
|
||||
'download-sync-reset': {
|
||||
schedule: '0 0 1 * * *',
|
||||
},
|
||||
'jellyfin-recently-added-sync': {
|
||||
'jellyfin-recently-added-scan': {
|
||||
schedule: '0 */5 * * * *',
|
||||
},
|
||||
'jellyfin-full-sync': {
|
||||
'jellyfin-full-scan': {
|
||||
schedule: '0 0 3 * * *',
|
||||
},
|
||||
'image-cache-cleanup': {
|
||||
@@ -529,6 +537,7 @@ class Settings {
|
||||
applicationUrl: this.data.main.applicationUrl,
|
||||
hideAvailable: this.data.main.hideAvailable,
|
||||
localLogin: this.data.main.localLogin,
|
||||
jellyfinForgotPasswordUrl: this.data.jellyfin.jellyfinForgotPasswordUrl,
|
||||
movie4kEnabled: this.data.radarr.some(
|
||||
(radarr) => radarr.is4k && radarr.isDefault
|
||||
),
|
||||
@@ -539,6 +548,7 @@ class Settings {
|
||||
originalLanguage: this.data.main.originalLanguage,
|
||||
mediaServerType: this.main.mediaServerType,
|
||||
jellyfinHost: this.jellyfin.hostname,
|
||||
jellyfinExternalHost: this.jellyfin.externalHostname,
|
||||
partialRequestsEnabled: this.data.main.partialRequestsEnabled,
|
||||
cacheImages: this.data.main.cacheImages,
|
||||
vapidPublic: this.vapidPublic,
|
||||
|
||||
@@ -80,82 +80,80 @@ class WatchlistSync {
|
||||
)
|
||||
);
|
||||
|
||||
await Promise.all(
|
||||
unavailableItems.map(async (mediaItem) => {
|
||||
try {
|
||||
logger.info("Creating media request from user's Plex Watchlist", {
|
||||
label: 'Watchlist Sync',
|
||||
userId: user.id,
|
||||
mediaTitle: mediaItem.title,
|
||||
});
|
||||
for (const mediaItem of unavailableItems) {
|
||||
try {
|
||||
logger.info("Creating media request from user's Plex Watchlist", {
|
||||
label: 'Watchlist Sync',
|
||||
userId: user.id,
|
||||
mediaTitle: mediaItem.title,
|
||||
});
|
||||
|
||||
if (mediaItem.type === 'show' && !mediaItem.tvdbId) {
|
||||
throw new Error('Missing TVDB ID from Plex Metadata');
|
||||
}
|
||||
|
||||
// Check if they have auto-request permissons and watchlist sync
|
||||
// enabled for the media type
|
||||
if (
|
||||
((!user.hasPermission(
|
||||
[Permission.AUTO_REQUEST, Permission.AUTO_REQUEST_MOVIE],
|
||||
{ type: 'or' }
|
||||
) ||
|
||||
!user.settings?.watchlistSyncMovies) &&
|
||||
mediaItem.type === 'movie') ||
|
||||
((!user.hasPermission(
|
||||
[Permission.AUTO_REQUEST, Permission.AUTO_REQUEST_TV],
|
||||
{ type: 'or' }
|
||||
) ||
|
||||
!user.settings?.watchlistSyncTv) &&
|
||||
mediaItem.type === 'show')
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
await MediaRequest.request(
|
||||
{
|
||||
mediaId: mediaItem.tmdbId,
|
||||
mediaType:
|
||||
mediaItem.type === 'show' ? MediaType.TV : MediaType.MOVIE,
|
||||
seasons: mediaItem.type === 'show' ? 'all' : undefined,
|
||||
tvdbId: mediaItem.tvdbId,
|
||||
is4k: false,
|
||||
},
|
||||
user,
|
||||
{ isAutoRequest: true }
|
||||
);
|
||||
} catch (e) {
|
||||
if (!(e instanceof Error)) {
|
||||
return;
|
||||
}
|
||||
|
||||
switch (e.constructor) {
|
||||
// During watchlist sync, these errors aren't necessarily
|
||||
// a problem with Overseerr. Since we are auto syncing these constantly, it's
|
||||
// possible they are unexpectedly at their quota limit, for example. So we'll
|
||||
// instead log these as debug messages.
|
||||
case RequestPermissionError:
|
||||
case DuplicateMediaRequestError:
|
||||
case QuotaRestrictedError:
|
||||
case NoSeasonsAvailableError:
|
||||
logger.debug('Failed to create media request from watchlist', {
|
||||
label: 'Watchlist Sync',
|
||||
userId: user.id,
|
||||
mediaTitle: mediaItem.title,
|
||||
errorMessage: e.message,
|
||||
});
|
||||
break;
|
||||
default:
|
||||
logger.error('Failed to create media request from watchlist', {
|
||||
label: 'Watchlist Sync',
|
||||
userId: user.id,
|
||||
mediaTitle: mediaItem.title,
|
||||
errorMessage: e.message,
|
||||
});
|
||||
}
|
||||
if (mediaItem.type === 'show' && !mediaItem.tvdbId) {
|
||||
throw new Error('Missing TVDB ID from Plex Metadata');
|
||||
}
|
||||
})
|
||||
);
|
||||
|
||||
// Check if they have auto-request permissons and watchlist sync
|
||||
// enabled for the media type
|
||||
if (
|
||||
((!user.hasPermission(
|
||||
[Permission.AUTO_REQUEST, Permission.AUTO_REQUEST_MOVIE],
|
||||
{ type: 'or' }
|
||||
) ||
|
||||
!user.settings?.watchlistSyncMovies) &&
|
||||
mediaItem.type === 'movie') ||
|
||||
((!user.hasPermission(
|
||||
[Permission.AUTO_REQUEST, Permission.AUTO_REQUEST_TV],
|
||||
{ type: 'or' }
|
||||
) ||
|
||||
!user.settings?.watchlistSyncTv) &&
|
||||
mediaItem.type === 'show')
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
|
||||
await MediaRequest.request(
|
||||
{
|
||||
mediaId: mediaItem.tmdbId,
|
||||
mediaType:
|
||||
mediaItem.type === 'show' ? MediaType.TV : MediaType.MOVIE,
|
||||
seasons: mediaItem.type === 'show' ? 'all' : undefined,
|
||||
tvdbId: mediaItem.tvdbId,
|
||||
is4k: false,
|
||||
},
|
||||
user,
|
||||
{ isAutoRequest: true }
|
||||
);
|
||||
} catch (e) {
|
||||
if (!(e instanceof Error)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
switch (e.constructor) {
|
||||
// During watchlist sync, these errors aren't necessarily
|
||||
// a problem with Overseerr. Since we are auto syncing these constantly, it's
|
||||
// possible they are unexpectedly at their quota limit, for example. So we'll
|
||||
// instead log these as debug messages.
|
||||
case RequestPermissionError:
|
||||
case DuplicateMediaRequestError:
|
||||
case QuotaRestrictedError:
|
||||
case NoSeasonsAvailableError:
|
||||
logger.debug('Failed to create media request from watchlist', {
|
||||
label: 'Watchlist Sync',
|
||||
userId: user.id,
|
||||
mediaTitle: mediaItem.title,
|
||||
errorMessage: e.message,
|
||||
});
|
||||
break;
|
||||
default:
|
||||
logger.error('Failed to create media request from watchlist', {
|
||||
label: 'Watchlist Sync',
|
||||
userId: user.id,
|
||||
mediaTitle: mediaItem.title,
|
||||
errorMessage: e.message,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
31
server/migration/1697393491630-AddUserPushoverSound.ts
Normal file
31
server/migration/1697393491630-AddUserPushoverSound.ts
Normal file
@@ -0,0 +1,31 @@
|
||||
import type { MigrationInterface, QueryRunner } from 'typeorm';
|
||||
|
||||
export class AddUserPushoverSound1697393491630 implements MigrationInterface {
|
||||
name = 'AddUserPushoverSound1697393491630';
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "temporary_user_settings" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "notificationTypes" text, "discordId" varchar, "userId" integer, "region" varchar, "originalLanguage" varchar, "telegramChatId" varchar, "telegramSendSilently" boolean, "pgpKey" varchar, "locale" varchar NOT NULL DEFAULT (''), "pushbulletAccessToken" varchar, "pushoverApplicationToken" varchar, "pushoverUserKey" varchar, "watchlistSyncMovies" boolean, "watchlistSyncTv" boolean, "pushoverSound" varchar, CONSTRAINT "UQ_986a2b6d3c05eb4091bb8066f78" UNIQUE ("userId"), CONSTRAINT "FK_986a2b6d3c05eb4091bb8066f78" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`INSERT INTO "temporary_user_settings"("id", "notificationTypes", "discordId", "userId", "region", "originalLanguage", "telegramChatId", "telegramSendSilently", "pgpKey", "locale", "pushbulletAccessToken", "pushoverApplicationToken", "pushoverUserKey", "watchlistSyncMovies", "watchlistSyncTv") SELECT "id", "notificationTypes", "discordId", "userId", "region", "originalLanguage", "telegramChatId", "telegramSendSilently", "pgpKey", "locale", "pushbulletAccessToken", "pushoverApplicationToken", "pushoverUserKey", "watchlistSyncMovies", "watchlistSyncTv" FROM "user_settings"`
|
||||
);
|
||||
await queryRunner.query(`DROP TABLE "user_settings"`);
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "temporary_user_settings" RENAME TO "user_settings"`
|
||||
);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(
|
||||
`ALTER TABLE "user_settings" RENAME TO "temporary_user_settings"`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`CREATE TABLE "user_settings" ("id" integer PRIMARY KEY AUTOINCREMENT NOT NULL, "notificationTypes" text, "discordId" varchar, "userId" integer, "region" varchar, "originalLanguage" varchar, "telegramChatId" varchar, "telegramSendSilently" boolean, "pgpKey" varchar, "locale" varchar NOT NULL DEFAULT (''), "pushbulletAccessToken" varchar, "pushoverApplicationToken" varchar, "pushoverUserKey" varchar, "watchlistSyncMovies" boolean, "watchlistSyncTv" boolean, CONSTRAINT "UQ_986a2b6d3c05eb4091bb8066f78" UNIQUE ("userId"), CONSTRAINT "FK_986a2b6d3c05eb4091bb8066f78" FOREIGN KEY ("userId") REFERENCES "user" ("id") ON DELETE CASCADE ON UPDATE NO ACTION)`
|
||||
);
|
||||
await queryRunner.query(
|
||||
`INSERT INTO "user_settings"("id", "notificationTypes", "discordId", "userId", "region", "originalLanguage", "telegramChatId", "telegramSendSilently", "pgpKey", "locale", "pushbulletAccessToken", "pushoverApplicationToken", "pushoverUserKey", "watchlistSyncMovies", "watchlistSyncTv") SELECT "id", "notificationTypes", "discordId", "userId", "region", "originalLanguage", "telegramChatId", "telegramSendSilently", "pgpKey", "locale", "pushbulletAccessToken", "pushoverApplicationToken", "pushoverUserKey", "watchlistSyncMovies", "watchlistSyncTv" FROM "temporary_user_settings"`
|
||||
);
|
||||
await queryRunner.query(`DROP TABLE "temporary_user_settings"`);
|
||||
}
|
||||
}
|
||||
@@ -11,6 +11,7 @@ import logger from '@server/logger';
|
||||
import { isAuthenticated } from '@server/middleware/auth';
|
||||
import * as EmailValidator from 'email-validator';
|
||||
import { Router } from 'express';
|
||||
import gravatarUrl from 'gravatar-url';
|
||||
|
||||
const authRoutes = Router();
|
||||
|
||||
@@ -274,24 +275,87 @@ authRoutes.post('/jellyfin', async (req, res, next) => {
|
||||
where: { jellyfinUserId: account.User.Id },
|
||||
});
|
||||
|
||||
if (user) {
|
||||
if (!user && !(await userRepository.count())) {
|
||||
// Check if user is admin on jellyfin
|
||||
if (account.User.Policy.IsAdministrator === false) {
|
||||
throw new Error('not_admin');
|
||||
}
|
||||
|
||||
logger.info(
|
||||
'Sign-in attempt from Jellyfin user with access to the media server; creating initial admin user for Overseerr',
|
||||
{
|
||||
label: 'API',
|
||||
ip: req.ip,
|
||||
jellyfinUsername: account.User.Name,
|
||||
}
|
||||
);
|
||||
|
||||
// User doesn't exist, and there are no users in the database, we'll create the user
|
||||
// with admin permission
|
||||
settings.main.mediaServerType = MediaServerType.JELLYFIN;
|
||||
user = new User({
|
||||
email: body.email,
|
||||
jellyfinUsername: account.User.Name,
|
||||
jellyfinUserId: account.User.Id,
|
||||
jellyfinDeviceId: deviceId,
|
||||
jellyfinAuthToken: account.AccessToken,
|
||||
permissions: Permission.ADMIN,
|
||||
avatar: account.User.PrimaryImageTag
|
||||
? `${jellyfinHost}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`
|
||||
: gravatarUrl(body.email ?? '', { default: 'mm', size: 200 }),
|
||||
userType: UserType.JELLYFIN,
|
||||
});
|
||||
|
||||
settings.jellyfin.hostname = body.hostname ?? '';
|
||||
settings.jellyfin.serverId = account.User.ServerId;
|
||||
settings.save();
|
||||
startJobs();
|
||||
|
||||
await userRepository.save(user);
|
||||
}
|
||||
// User already exists, let's update their information
|
||||
else if (body.username === user?.jellyfinUsername) {
|
||||
logger.info(
|
||||
`Found matching ${
|
||||
settings.main.mediaServerType === MediaServerType.JELLYFIN
|
||||
? 'Jellyfin'
|
||||
: 'Emby'
|
||||
} user; updating user with ${
|
||||
settings.main.mediaServerType === MediaServerType.JELLYFIN
|
||||
? 'Jellyfin'
|
||||
: 'Emby'
|
||||
}`,
|
||||
{
|
||||
label: 'API',
|
||||
ip: req.ip,
|
||||
jellyfinUsername: account.User.Name,
|
||||
}
|
||||
);
|
||||
// Let's check if their authtoken is up to date
|
||||
if (user.jellyfinAuthToken !== account.AccessToken) {
|
||||
user.jellyfinAuthToken = account.AccessToken;
|
||||
}
|
||||
|
||||
// Update the users avatar with their jellyfin profile pic (incase it changed)
|
||||
if (account.User.PrimaryImageTag) {
|
||||
user.avatar = `${jellyfinHost}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`;
|
||||
} else {
|
||||
user.avatar = '/os_logo_square.png';
|
||||
user.avatar = gravatarUrl(user.email, {
|
||||
default: 'mm',
|
||||
size: 200,
|
||||
});
|
||||
}
|
||||
|
||||
user.jellyfinUsername = account.User.Name;
|
||||
|
||||
if (user.username === account.User.Name) {
|
||||
user.username = '';
|
||||
}
|
||||
|
||||
// TODO: If JELLYFIN_TYPE is set to 'emby' then set mediaServerType to EMBY
|
||||
// if (process.env.JELLYFIN_TYPE === 'emby') {
|
||||
// settings.main.mediaServerType = MediaServerType.EMBY;
|
||||
// settings.save();
|
||||
// }
|
||||
|
||||
await userRepository.save(user);
|
||||
} else if (!settings.main.newPlexLogin) {
|
||||
logger.warn(
|
||||
@@ -307,69 +371,38 @@ authRoutes.post('/jellyfin', async (req, res, next) => {
|
||||
status: 403,
|
||||
message: 'Access denied.',
|
||||
});
|
||||
} else {
|
||||
// Here we check if it's the first user. If it is, we create the user with no check
|
||||
// and give them admin permissions
|
||||
const totalUsers = await userRepository.count();
|
||||
if (totalUsers === 0) {
|
||||
logger.info(
|
||||
'Sign-in attempt from Jellyfin user with access to the media server; creating initial admin user for Overseerr',
|
||||
{
|
||||
label: 'API',
|
||||
ip: req.ip,
|
||||
jellyfinUsername: account.User.Name,
|
||||
}
|
||||
);
|
||||
user = new User({
|
||||
email: body.email,
|
||||
} else if (!user) {
|
||||
logger.info(
|
||||
'Sign-in attempt from Jellyfin user with access to the media server; creating new Overseerr user',
|
||||
{
|
||||
label: 'API',
|
||||
ip: req.ip,
|
||||
jellyfinUsername: account.User.Name,
|
||||
jellyfinUserId: account.User.Id,
|
||||
jellyfinDeviceId: deviceId,
|
||||
jellyfinAuthToken: account.AccessToken,
|
||||
permissions: Permission.ADMIN,
|
||||
avatar: account.User.PrimaryImageTag
|
||||
? `${jellyfinHost}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`
|
||||
: '/os_logo_square.png',
|
||||
userType: UserType.JELLYFIN,
|
||||
});
|
||||
await userRepository.save(user);
|
||||
|
||||
//Update hostname in settings if it doesn't exist (initial configuration)
|
||||
//Also set mediaservertype to JELLYFIN
|
||||
if (settings.jellyfin.hostname === '') {
|
||||
settings.main.mediaServerType = MediaServerType.JELLYFIN;
|
||||
settings.jellyfin.hostname = body.hostname ?? '';
|
||||
settings.jellyfin.serverId = account.User.ServerId;
|
||||
settings.save();
|
||||
startJobs();
|
||||
}
|
||||
);
|
||||
|
||||
if (!body.email) {
|
||||
throw new Error('add_email');
|
||||
}
|
||||
|
||||
if (!user) {
|
||||
if (!body.email) {
|
||||
throw new Error('add_email');
|
||||
}
|
||||
|
||||
user = new User({
|
||||
email: body.email,
|
||||
jellyfinUsername: account.User.Name,
|
||||
jellyfinUserId: account.User.Id,
|
||||
jellyfinDeviceId: deviceId,
|
||||
jellyfinAuthToken: account.AccessToken,
|
||||
permissions: settings.main.defaultPermissions,
|
||||
avatar: account.User.PrimaryImageTag
|
||||
? `${jellyfinHost}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`
|
||||
: '/os_logo_square.png',
|
||||
userType: UserType.JELLYFIN,
|
||||
});
|
||||
//initialize Jellyfin/Emby users with local login
|
||||
const passedExplicitPassword =
|
||||
body.password && body.password.length > 0;
|
||||
if (passedExplicitPassword) {
|
||||
await user.setPassword(body.password ?? '');
|
||||
}
|
||||
await userRepository.save(user);
|
||||
user = new User({
|
||||
email: body.email,
|
||||
jellyfinUsername: account.User.Name,
|
||||
jellyfinUserId: account.User.Id,
|
||||
jellyfinDeviceId: deviceId,
|
||||
jellyfinAuthToken: account.AccessToken,
|
||||
permissions: settings.main.defaultPermissions,
|
||||
avatar: account.User.PrimaryImageTag
|
||||
? `${jellyfinHost}/Users/${account.User.Id}/Images/Primary/?tag=${account.User.PrimaryImageTag}&quality=90`
|
||||
: gravatarUrl(body.email, { default: 'mm', size: 200 }),
|
||||
userType: UserType.JELLYFIN,
|
||||
});
|
||||
//initialize Jellyfin/Emby users with local login
|
||||
const passedExplicitPassword = body.password && body.password.length > 0;
|
||||
if (passedExplicitPassword) {
|
||||
await user.setPassword(body.password ?? '');
|
||||
}
|
||||
await userRepository.save(user);
|
||||
}
|
||||
|
||||
// Set logged in session
|
||||
@@ -395,11 +428,21 @@ authRoutes.post('/jellyfin', async (req, res, next) => {
|
||||
status: 401,
|
||||
message: 'Unauthorized',
|
||||
});
|
||||
} else if (e.message === 'not_admin') {
|
||||
return next({
|
||||
status: 403,
|
||||
message: 'CREDENTIAL_ERROR_NOT_ADMIN',
|
||||
});
|
||||
} else if (e.message === 'add_email') {
|
||||
return next({
|
||||
status: 406,
|
||||
message: 'CREDENTIAL_ERROR_ADD_EMAIL',
|
||||
});
|
||||
} else if (e.message === 'select_server_type') {
|
||||
return next({
|
||||
status: 406,
|
||||
message: 'CREDENTIAL_ERROR_NO_SERVER_TYPE',
|
||||
});
|
||||
} else {
|
||||
logger.error(e.message, { label: 'Auth' });
|
||||
return next({
|
||||
|
||||
@@ -848,7 +848,7 @@ discoverRoutes.get<Record<string, unknown>, WatchlistResponse>(
|
||||
if (total) {
|
||||
return res.json({
|
||||
page: page,
|
||||
totalPages: total / itemsPerPage,
|
||||
totalPages: Math.ceil(total / itemsPerPage),
|
||||
totalResults: total,
|
||||
results: result,
|
||||
});
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
import GithubAPI from '@server/api/github';
|
||||
import PushoverAPI from '@server/api/pushover';
|
||||
import TheMovieDb from '@server/api/themoviedb';
|
||||
import type {
|
||||
TmdbMovieResult,
|
||||
@@ -113,6 +114,31 @@ router.get('/settings/discover', isAuthenticated(), async (_req, res) => {
|
||||
|
||||
return res.json(sliders);
|
||||
});
|
||||
router.get(
|
||||
'/settings/notifications/pushover/sounds',
|
||||
isAuthenticated(),
|
||||
async (req, res, next) => {
|
||||
const pushoverApi = new PushoverAPI();
|
||||
|
||||
try {
|
||||
if (!req.query.token) {
|
||||
throw new Error('Pushover application token missing from request');
|
||||
}
|
||||
|
||||
const sounds = await pushoverApi.getSounds(req.query.token as string);
|
||||
res.status(200).json(sounds);
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving Pushover sounds', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve Pushover sounds.',
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
router.use('/settings', isAuthenticated(Permission.ADMIN), settingsRoutes);
|
||||
router.use('/search', isAuthenticated(), searchRoutes);
|
||||
router.use('/discover', isAuthenticated(), discoverRoutes);
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
import RottenTomatoes from '@server/api/rottentomatoes';
|
||||
import IMDBRadarrProxy from '@server/api/rating/imdbRadarrProxy';
|
||||
import RottenTomatoes from '@server/api/rating/rottentomatoes';
|
||||
import { type RatingResponse } from '@server/api/ratings';
|
||||
import TheMovieDb from '@server/api/themoviedb';
|
||||
import { MediaType } from '@server/constants/media';
|
||||
import Media from '@server/entity/Media';
|
||||
@@ -118,6 +120,9 @@ movieRoutes.get('/:id/similar', async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Endpoint backed by RottenTomatoes
|
||||
*/
|
||||
movieRoutes.get('/:id/ratings', async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
const rtapi = new RottenTomatoes();
|
||||
@@ -153,4 +158,53 @@ movieRoutes.get('/:id/ratings', async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
/**
|
||||
* Endpoint combining RottenTomatoes and IMDB
|
||||
*/
|
||||
movieRoutes.get('/:id/ratingscombined', async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
const rtapi = new RottenTomatoes();
|
||||
const imdbApi = new IMDBRadarrProxy();
|
||||
|
||||
try {
|
||||
const movie = await tmdb.getMovie({
|
||||
movieId: Number(req.params.id),
|
||||
});
|
||||
|
||||
const rtratings = await rtapi.getMovieRatings(
|
||||
movie.title,
|
||||
Number(movie.release_date.slice(0, 4))
|
||||
);
|
||||
|
||||
let imdbRatings;
|
||||
if (movie.imdb_id) {
|
||||
imdbRatings = await imdbApi.getMovieRatings(movie.imdb_id);
|
||||
}
|
||||
|
||||
if (!rtratings && !imdbRatings) {
|
||||
return next({
|
||||
status: 404,
|
||||
message: 'No ratings found.',
|
||||
});
|
||||
}
|
||||
|
||||
const ratings: RatingResponse = {
|
||||
...(rtratings ? { rt: rtratings } : {}),
|
||||
...(imdbRatings ? { imdb: imdbRatings } : {}),
|
||||
};
|
||||
|
||||
return res.status(200).json(ratings);
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving movie ratings', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
movieId: req.params.id,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve movie ratings.',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
export default movieRoutes;
|
||||
|
||||
@@ -12,12 +12,12 @@ import type {
|
||||
LogsResultsResponse,
|
||||
SettingsAboutResponse,
|
||||
} from '@server/interfaces/api/settingsInterfaces';
|
||||
import { jobJellyfinFullSync } from '@server/job/jellyfinsync';
|
||||
import { scheduledJobs } from '@server/job/schedule';
|
||||
import type { AvailableCacheIds } from '@server/lib/cache';
|
||||
import cacheManager from '@server/lib/cache';
|
||||
import ImageProxy from '@server/lib/imageproxy';
|
||||
import { Permission } from '@server/lib/permissions';
|
||||
import { jellyfinFullScanner } from '@server/lib/scanners/jellyfin';
|
||||
import { plexFullScanner } from '@server/lib/scanners/plex';
|
||||
import type { JobId, Library, MainSettings } from '@server/lib/settings';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
@@ -29,6 +29,7 @@ import { getAppVersion } from '@server/utils/appVersion';
|
||||
import { Router } from 'express';
|
||||
import rateLimit from 'express-rate-limit';
|
||||
import fs from 'fs';
|
||||
import gravatarUrl from 'gravatar-url';
|
||||
import { escapeRegExp, merge, omit, set, sortBy } from 'lodash';
|
||||
import { rescheduleJob } from 'node-schedule';
|
||||
import path from 'path';
|
||||
@@ -337,7 +338,7 @@ settingsRoutes.get('/jellyfin/users', async (req, res) => {
|
||||
id: user.Id,
|
||||
thumb: user.PrimaryImageTag
|
||||
? `${jellyfinHost}/Users/${user.Id}/Images/Primary/?tag=${user.PrimaryImageTag}&quality=90`
|
||||
: '/os_logo_square.png',
|
||||
: gravatarUrl(user.Name, { default: 'mm', size: 200 }),
|
||||
email: user.Name,
|
||||
}));
|
||||
|
||||
@@ -345,16 +346,16 @@ settingsRoutes.get('/jellyfin/users', async (req, res) => {
|
||||
});
|
||||
|
||||
settingsRoutes.get('/jellyfin/sync', (_req, res) => {
|
||||
return res.status(200).json(jobJellyfinFullSync.status());
|
||||
return res.status(200).json(jellyfinFullScanner.status());
|
||||
});
|
||||
|
||||
settingsRoutes.post('/jellyfin/sync', (req, res) => {
|
||||
if (req.body.cancel) {
|
||||
jobJellyfinFullSync.cancel();
|
||||
jellyfinFullScanner.cancel();
|
||||
} else if (req.body.start) {
|
||||
jobJellyfinFullSync.run();
|
||||
jellyfinFullScanner.run();
|
||||
}
|
||||
return res.status(200).json(jobJellyfinFullSync.status());
|
||||
return res.status(200).json(jellyfinFullScanner.status());
|
||||
});
|
||||
settingsRoutes.get('/tautulli', (_req, res) => {
|
||||
const settings = getSettings();
|
||||
@@ -367,25 +368,27 @@ settingsRoutes.post('/tautulli', async (req, res, next) => {
|
||||
|
||||
Object.assign(settings.tautulli, req.body);
|
||||
|
||||
try {
|
||||
const tautulliClient = new TautulliAPI(settings.tautulli);
|
||||
if (settings.tautulli.hostname) {
|
||||
try {
|
||||
const tautulliClient = new TautulliAPI(settings.tautulli);
|
||||
|
||||
const result = await tautulliClient.getInfo();
|
||||
const result = await tautulliClient.getInfo();
|
||||
|
||||
if (!semver.gte(semver.coerce(result?.tautulli_version) ?? '', '2.9.0')) {
|
||||
throw new Error('Tautulli version not supported');
|
||||
if (!semver.gte(semver.coerce(result?.tautulli_version) ?? '', '2.9.0')) {
|
||||
throw new Error('Tautulli version not supported');
|
||||
}
|
||||
|
||||
settings.save();
|
||||
} catch (e) {
|
||||
logger.error('Something went wrong testing Tautulli connection', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to connect to Tautulli.',
|
||||
});
|
||||
}
|
||||
|
||||
settings.save();
|
||||
} catch (e) {
|
||||
logger.error('Something went wrong testing Tautulli connection', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to connect to Tautulli.',
|
||||
});
|
||||
}
|
||||
|
||||
return res.status(200).json(settings.tautulli);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import RottenTomatoes from '@server/api/rottentomatoes';
|
||||
import RottenTomatoes from '@server/api/rating/rottentomatoes';
|
||||
import TheMovieDb from '@server/api/themoviedb';
|
||||
import { MediaType } from '@server/constants/media';
|
||||
import Media from '@server/entity/Media';
|
||||
|
||||
@@ -537,7 +537,10 @@ router.post(
|
||||
permissions: settings.main.defaultPermissions,
|
||||
avatar: jellyfinUser?.PrimaryImageTag
|
||||
? `${jellyfinHost}/Users/${jellyfinUser.Id}/Images/Primary/?tag=${jellyfinUser.PrimaryImageTag}&quality=90`
|
||||
: '/os_logo_square.png',
|
||||
: gravatarUrl(jellyfinUser?.Name ?? '', {
|
||||
default: 'mm',
|
||||
size: 200,
|
||||
}),
|
||||
userType: UserType.JELLYFIN,
|
||||
});
|
||||
|
||||
@@ -717,29 +720,31 @@ router.get<{ id: string }, WatchlistResponse>(
|
||||
|
||||
const user = await getRepository(User).findOneOrFail({
|
||||
where: { id: Number(req.params.id) },
|
||||
select: { id: true, plexToken: true },
|
||||
select: ['id', 'plexToken'],
|
||||
});
|
||||
|
||||
if (!user?.plexToken) {
|
||||
if (user) {
|
||||
const [result, total] = await getRepository(Watchlist).findAndCount({
|
||||
where: { requestedBy: { id: user?.id } },
|
||||
relations: { requestedBy: true },
|
||||
// loadRelationIds: true,
|
||||
take: itemsPerPage,
|
||||
skip: offset,
|
||||
if (user) {
|
||||
const [result, total] = await getRepository(Watchlist).findAndCount({
|
||||
where: { requestedBy: { id: user?.id } },
|
||||
relations: {
|
||||
/*requestedBy: true,media:true*/
|
||||
},
|
||||
// loadRelationIds: true,
|
||||
take: itemsPerPage,
|
||||
skip: offset,
|
||||
});
|
||||
if (total) {
|
||||
return res.json({
|
||||
page: page,
|
||||
totalPages: Math.ceil(total / itemsPerPage),
|
||||
totalResults: total,
|
||||
results: result,
|
||||
});
|
||||
if (total) {
|
||||
return res.json({
|
||||
page: page,
|
||||
totalPages: total / itemsPerPage,
|
||||
totalResults: total,
|
||||
results: result,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// We will just return an empty array if the user has no Plex token
|
||||
// We will just return an empty array if the user has no Plex token
|
||||
if (!user.plexToken) {
|
||||
return res.json({
|
||||
page: 1,
|
||||
totalPages: 1,
|
||||
|
||||
@@ -265,7 +265,7 @@ userSettingsRoutes.get<{ id: string }, UserSettingsNotificationsResponse>(
|
||||
}
|
||||
|
||||
return res.status(200).json({
|
||||
emailEnabled: settings?.email.enabled,
|
||||
emailEnabled: settings.email.enabled,
|
||||
pgpKey: user.settings?.pgpKey,
|
||||
discordEnabled:
|
||||
settings?.discord.enabled && settings.discord.options.enableMentions,
|
||||
@@ -277,11 +277,12 @@ userSettingsRoutes.get<{ id: string }, UserSettingsNotificationsResponse>(
|
||||
pushbulletAccessToken: user.settings?.pushbulletAccessToken,
|
||||
pushoverApplicationToken: user.settings?.pushoverApplicationToken,
|
||||
pushoverUserKey: user.settings?.pushoverUserKey,
|
||||
telegramEnabled: settings?.telegram.enabled,
|
||||
telegramBotUsername: settings?.telegram.options.botUsername,
|
||||
pushoverSound: user.settings?.pushoverSound,
|
||||
telegramEnabled: settings.telegram.enabled,
|
||||
telegramBotUsername: settings.telegram.options.botUsername,
|
||||
telegramChatId: user.settings?.telegramChatId,
|
||||
telegramSendSilently: user?.settings?.telegramSendSilently,
|
||||
webPushEnabled: settings?.webpush.enabled,
|
||||
telegramSendSilently: user.settings?.telegramSendSilently,
|
||||
webPushEnabled: settings.webpush.enabled,
|
||||
notificationTypes: user.settings?.notificationTypes ?? {},
|
||||
});
|
||||
} catch (e) {
|
||||
@@ -332,6 +333,7 @@ userSettingsRoutes.post<{ id: string }, UserSettingsNotificationsResponse>(
|
||||
user.settings.pushoverApplicationToken =
|
||||
req.body.pushoverApplicationToken;
|
||||
user.settings.pushoverUserKey = req.body.pushoverUserKey;
|
||||
user.settings.pushoverSound = req.body.pushoverSound;
|
||||
user.settings.telegramChatId = req.body.telegramChatId;
|
||||
user.settings.telegramSendSilently = req.body.telegramSendSilently;
|
||||
user.settings.notificationTypes = Object.assign(
|
||||
@@ -344,13 +346,14 @@ userSettingsRoutes.post<{ id: string }, UserSettingsNotificationsResponse>(
|
||||
userRepository.save(user);
|
||||
|
||||
return res.status(200).json({
|
||||
pgpKey: user.settings?.pgpKey,
|
||||
discordId: user.settings?.discordId,
|
||||
pushbulletAccessToken: user.settings?.pushbulletAccessToken,
|
||||
pushoverApplicationToken: user.settings?.pushoverApplicationToken,
|
||||
pushoverUserKey: user.settings?.pushoverUserKey,
|
||||
telegramChatId: user.settings?.telegramChatId,
|
||||
telegramSendSilently: user?.settings?.telegramSendSilently,
|
||||
pgpKey: user.settings.pgpKey,
|
||||
discordId: user.settings.discordId,
|
||||
pushbulletAccessToken: user.settings.pushbulletAccessToken,
|
||||
pushoverApplicationToken: user.settings.pushoverApplicationToken,
|
||||
pushoverUserKey: user.settings.pushoverUserKey,
|
||||
pushoverSound: user.settings.pushoverSound,
|
||||
telegramChatId: user.settings.telegramChatId,
|
||||
telegramSendSilently: user.settings.telegramSendSilently,
|
||||
notificationTypes: user.settings.notificationTypes,
|
||||
});
|
||||
} catch (e) {
|
||||
|
||||
@@ -6,7 +6,7 @@ description: >
|
||||
Jellyseerr is a free and open source software application for managing requests for your media library.
|
||||
It is a a fork of Overseerr built to bring support for & focusing mainly on Jellyfin & Emby media servers!
|
||||
It integrates with your existing services such as Sonarr, Radarr, and Jellyfin/Emby/Plex.
|
||||
base: core18
|
||||
base: core20
|
||||
confinement: strict
|
||||
|
||||
architectures:
|
||||
@@ -16,12 +16,12 @@ architectures:
|
||||
|
||||
parts:
|
||||
jellyseerr:
|
||||
plugin: nodejs
|
||||
nodejs-version: '16.17.0'
|
||||
nodejs-package-manager: 'yarn'
|
||||
nodejs-yarn-version: v1.22.17
|
||||
plugin: nil
|
||||
build-packages:
|
||||
- git
|
||||
- ca-certificates
|
||||
- curl
|
||||
- gnupg
|
||||
- on arm64:
|
||||
- build-essential
|
||||
- automake
|
||||
@@ -37,7 +37,7 @@ parts:
|
||||
override-pull: |
|
||||
snapcraftctl pull
|
||||
# Get information to determine snap grade and version
|
||||
git config --global --add safe.directory /data/parts/jellyyseerr/src
|
||||
git config --global --add safe.directory /data/parts/jellyseerr/src
|
||||
#setup yarn.rc
|
||||
echo "--install.frozen-lockfile\n--install.network-timeout 1000000" > .yarnrc
|
||||
BRANCH=$(git rev-parse --abbrev-ref HEAD)
|
||||
@@ -65,13 +65,30 @@ parts:
|
||||
snapcraftctl set-version "$SNAP_VERSION"
|
||||
snapcraftctl set-grade "$GRADE"
|
||||
build-environment:
|
||||
- PATH: '$SNAPCRAFT_PART_BUILD/node_modules/.bin:$SNAPCRAFT_PART_BUILD/../npm/bin:$PATH'
|
||||
- PATH: '$SNAPCRAFT_PART_BUILD/node_modules/.bin:$PATH'
|
||||
- CYPRESS_INSTALL_BINARY: '0'
|
||||
override-build: |
|
||||
set -e
|
||||
# Install necessary packages
|
||||
mkdir -p /etc/apt/keyrings
|
||||
# Add Node.js repository key
|
||||
curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg
|
||||
|
||||
# Set Node.js version
|
||||
NODE_MAJOR=18
|
||||
# Add Node.js repository to sources list
|
||||
echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_$NODE_MAJOR.x nodistro main" | tee /etc/apt/sources.list.d/nodesource.list
|
||||
|
||||
# Update package sources and install Node.js
|
||||
apt-get update
|
||||
apt-get install nodejs -y
|
||||
|
||||
# Install Yarn
|
||||
npm install -g yarn
|
||||
# Set COMMIT_TAG before the build begins
|
||||
export COMMIT_TAG=$(cat $SNAPCRAFT_PART_BUILD/commit.txt)
|
||||
snapcraftctl build
|
||||
yarn install --frozen-lockfile --network-timeout 1000000
|
||||
yarn build
|
||||
# Copy files needed for staging
|
||||
cp $SNAPCRAFT_PART_BUILD/committag.json $SNAPCRAFT_PART_INSTALL/
|
||||
@@ -79,7 +96,7 @@ parts:
|
||||
cp -R $SNAPCRAFT_PART_BUILD/dist $SNAPCRAFT_PART_INSTALL/
|
||||
cp -R $SNAPCRAFT_PART_BUILD/node_modules $SNAPCRAFT_PART_INSTALL/
|
||||
# Remove .github and gitbook as it will fail snap lint
|
||||
rm -rf $SNAPCRAFT_PART_INSTALL/.github && rm $SNAPCRAFT_PART_INSTALL/.gitbook.yaml
|
||||
rm -rf $SNAPCRAFT_PART_INSTALL/.github
|
||||
stage-packages:
|
||||
- on armhf:
|
||||
- libatomic1
|
||||
|
||||
20
src/assets/services/letterboxd.svg
Normal file
20
src/assets/services/letterboxd.svg
Normal file
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 7.4 KiB |
@@ -19,6 +19,7 @@ type ListViewProps = {
|
||||
isLoading?: boolean;
|
||||
isReachingEnd?: boolean;
|
||||
onScrollBottom: () => void;
|
||||
mutateParent?: () => void;
|
||||
};
|
||||
|
||||
const ListView = ({
|
||||
@@ -28,6 +29,7 @@ const ListView = ({
|
||||
onScrollBottom,
|
||||
isReachingEnd,
|
||||
plexItems,
|
||||
mutateParent,
|
||||
}: ListViewProps) => {
|
||||
const intl = useIntl();
|
||||
useVerticalScroll(onScrollBottom, !isLoading && !isEmpty && !isReachingEnd);
|
||||
@@ -46,7 +48,9 @@ const ListView = ({
|
||||
id={title.tmdbId}
|
||||
tmdbId={title.tmdbId}
|
||||
type={title.mediaType}
|
||||
isAddedToWatchlist={true}
|
||||
canExpand
|
||||
mutateParent={mutateParent}
|
||||
/>
|
||||
</li>
|
||||
);
|
||||
|
||||
@@ -30,6 +30,7 @@ const DiscoverWatchlist = () => {
|
||||
titles,
|
||||
fetchMore,
|
||||
error,
|
||||
mutate,
|
||||
} = useDiscover<WatchlistItem>(
|
||||
`/api/v1/${
|
||||
router.pathname.startsWith('/profile')
|
||||
@@ -76,6 +77,7 @@ const DiscoverWatchlist = () => {
|
||||
}
|
||||
isReachingEnd={isReachingEnd}
|
||||
onScrollBottom={fetchMore}
|
||||
mutateParent={mutate}
|
||||
/>
|
||||
</>
|
||||
);
|
||||
|
||||
@@ -139,6 +139,12 @@ const networks: Network[] = [
|
||||
'https://image.tmdb.org/t/p/w780_filter(duotone,ffffff,bababa)/ikZXxg6GnwpzqiZbRPhJGaZapqB.png',
|
||||
url: '/discover/tv/network/13',
|
||||
},
|
||||
{
|
||||
name: 'Peacock',
|
||||
image:
|
||||
'https://image.tmdb.org/t/p/w780_filter(duotone,ffffff,bababa)/gIAcGTjKKr0KOHL5s4O36roJ8p7.png',
|
||||
url: '/discover/tv/network/3353',
|
||||
},
|
||||
];
|
||||
|
||||
const NetworkSlider = () => {
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import EmbyLogo from '@app/assets/services/emby.svg';
|
||||
import ImdbLogo from '@app/assets/services/imdb.svg';
|
||||
import JellyfinLogo from '@app/assets/services/jellyfin.svg';
|
||||
import LetterboxdLogo from '@app/assets/services/letterboxd.svg';
|
||||
import PlexLogo from '@app/assets/services/plex.svg';
|
||||
import RTLogo from '@app/assets/services/rt.svg';
|
||||
import TmdbLogo from '@app/assets/services/tmdb.svg';
|
||||
@@ -103,6 +104,16 @@ const ExternalLinkBlock = ({
|
||||
<TraktLogo />
|
||||
</a>
|
||||
)}
|
||||
{tmdbId && mediaType === MediaType.MOVIE && (
|
||||
<a
|
||||
href={`https://letterboxd.com/tmdb/${tmdbId}`}
|
||||
className="w-8 opacity-50 transition duration-300 hover:opacity-100"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
<LetterboxdLogo />
|
||||
</a>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -72,9 +72,7 @@ const SidebarLinks: SidebarLinkProps[] = [
|
||||
{
|
||||
href: '/issues',
|
||||
messagesKey: 'issues',
|
||||
svgIcon: (
|
||||
<ExclamationTriangleIcon className="mr-3 h-6 w-6 text-gray-300 transition duration-150 ease-in-out group-hover:text-gray-100 group-focus:text-gray-300" />
|
||||
),
|
||||
svgIcon: <ExclamationTriangleIcon className="mr-3 h-6 w-6" />,
|
||||
activeRegExp: /^\/issues/,
|
||||
requiredPermission: [
|
||||
Permission.MANAGE_ISSUES,
|
||||
|
||||
@@ -10,8 +10,8 @@ import { defineMessages, useIntl } from 'react-intl';
|
||||
import useSWR from 'swr';
|
||||
|
||||
const messages = defineMessages({
|
||||
streamdevelop: 'Overseerr Develop',
|
||||
streamstable: 'Overseerr Stable',
|
||||
streamdevelop: 'Jellyseerr Develop',
|
||||
streamstable: 'Jellyseerr Stable',
|
||||
outofdate: 'Out of Date',
|
||||
commitsbehind:
|
||||
'{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind',
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import Button from '@app/components/Common/Button';
|
||||
import Tooltip from '@app/components/Common/Tooltip';
|
||||
import useSettings from '@app/hooks/useSettings';
|
||||
import { InformationCircleIcon } from '@heroicons/react/24/solid';
|
||||
import axios from 'axios';
|
||||
import { Field, Form, Formik } from 'formik';
|
||||
import getConfig from 'next/config';
|
||||
@@ -13,6 +15,8 @@ const messages = defineMessages({
|
||||
password: 'Password',
|
||||
host: '{mediaServerName} URL',
|
||||
email: 'Email',
|
||||
emailtooltip:
|
||||
'Address does not need to be associated with your {mediaServerName} instance.',
|
||||
validationhostrequired: '{mediaServerName} URL required',
|
||||
validationhostformat: 'Valid URL required',
|
||||
validationemailrequired: 'Email required',
|
||||
@@ -20,6 +24,7 @@ const messages = defineMessages({
|
||||
validationusernamerequired: 'Username required',
|
||||
validationpasswordrequired: 'Password required',
|
||||
loginerror: 'Something went wrong while trying to sign in.',
|
||||
adminerror: 'You must use an admin account to sign in.',
|
||||
credentialerror: 'The username or password is incorrect.',
|
||||
signingin: 'Signing in…',
|
||||
signin: 'Sign In',
|
||||
@@ -63,6 +68,11 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
|
||||
),
|
||||
password: Yup.string(),
|
||||
});
|
||||
|
||||
const mediaServerFormatValues = {
|
||||
mediaServerName:
|
||||
publicRuntimeConfig.JELLYFIN_TYPE == 'emby' ? 'Emby' : 'Jellyfin',
|
||||
};
|
||||
return (
|
||||
<Formik
|
||||
initialValues={{
|
||||
@@ -85,6 +95,8 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
|
||||
intl.formatMessage(
|
||||
e.message == 'Request failed with status code 401'
|
||||
? messages.credentialerror
|
||||
: e.message == 'Request failed with status code 403'
|
||||
? messages.adminerror
|
||||
: messages.loginerror
|
||||
),
|
||||
{
|
||||
@@ -101,12 +113,7 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
|
||||
<Form>
|
||||
<div className="sm:border-t sm:border-gray-800">
|
||||
<label htmlFor="host" className="text-label">
|
||||
{intl.formatMessage(messages.host, {
|
||||
mediaServerName:
|
||||
publicRuntimeConfig.JELLYFIN_TYPE == 'emby'
|
||||
? 'Emby'
|
||||
: 'Jellyfin',
|
||||
})}
|
||||
{intl.formatMessage(messages.host, mediaServerFormatValues)}
|
||||
</label>
|
||||
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
|
||||
<div className="flex rounded-md shadow-sm">
|
||||
@@ -114,20 +121,34 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
|
||||
id="host"
|
||||
name="host"
|
||||
type="text"
|
||||
placeholder={intl.formatMessage(messages.host, {
|
||||
mediaServerName:
|
||||
publicRuntimeConfig.JELLYFIN_TYPE == 'emby'
|
||||
? 'Emby'
|
||||
: 'Jellyfin',
|
||||
})}
|
||||
placeholder={intl.formatMessage(
|
||||
messages.host,
|
||||
mediaServerFormatValues
|
||||
)}
|
||||
/>
|
||||
</div>
|
||||
{errors.host && touched.host && (
|
||||
<div className="error">{errors.host}</div>
|
||||
)}
|
||||
</div>
|
||||
<label htmlFor="email" className="text-label">
|
||||
<label
|
||||
htmlFor="email"
|
||||
className="text-label"
|
||||
style={{ display: 'inline-flex' }}
|
||||
>
|
||||
{intl.formatMessage(messages.email)}
|
||||
<span className="label-tip">
|
||||
<Tooltip
|
||||
content={intl.formatMessage(
|
||||
messages.emailtooltip,
|
||||
mediaServerFormatValues
|
||||
)}
|
||||
>
|
||||
<span className="tooltip-trigger">
|
||||
<InformationCircleIcon className="h-4 w-4" />
|
||||
</span>
|
||||
</Tooltip>
|
||||
</span>
|
||||
</label>
|
||||
<div className="mt-1 mb-2 sm:col-span-2 sm:mt-0">
|
||||
<div className="flex rounded-md shadow-sm">
|
||||
@@ -201,6 +222,11 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
|
||||
),
|
||||
password: Yup.string(),
|
||||
});
|
||||
const baseUrl = settings.currentSettings.jellyfinExternalHost
|
||||
? settings.currentSettings.jellyfinExternalHost
|
||||
: settings.currentSettings.jellyfinHost;
|
||||
const jellyfinForgotPasswordUrl =
|
||||
settings.currentSettings.jellyfinForgotPasswordUrl;
|
||||
return (
|
||||
<div>
|
||||
<Formik
|
||||
@@ -278,11 +304,13 @@ const JellyfinLogin: React.FC<JellyfinLoginProps> = ({
|
||||
as="a"
|
||||
buttonType="ghost"
|
||||
href={
|
||||
process.env.JELLYFIN_TYPE == 'emby'
|
||||
? settings.currentSettings.jellyfinHost +
|
||||
'/web/index.html#!/startup/forgotpassword.html'
|
||||
: settings.currentSettings.jellyfinHost +
|
||||
'/web/index.html#!/forgotpassword.html'
|
||||
jellyfinForgotPasswordUrl
|
||||
? `${jellyfinForgotPasswordUrl}`
|
||||
: `${baseUrl}/web/index.html#!/${
|
||||
process.env.JELLYFIN_TYPE === 'emby'
|
||||
? 'startup/'
|
||||
: ''
|
||||
}forgotpassword.html`
|
||||
}
|
||||
>
|
||||
{intl.formatMessage(messages.forgotpassword)}
|
||||
|
||||
@@ -103,10 +103,10 @@ const ManageSlideOver = ({
|
||||
: null
|
||||
);
|
||||
const { data: radarrData } = useSWR<RadarrSettings[]>(
|
||||
'/api/v1/settings/radarr'
|
||||
hasPermission(Permission.ADMIN) ? '/api/v1/settings/radarr' : null
|
||||
);
|
||||
const { data: sonarrData } = useSWR<SonarrSettings[]>(
|
||||
'/api/v1/settings/sonarr'
|
||||
hasPermission(Permission.ADMIN) ? '/api/v1/settings/sonarr' : null
|
||||
);
|
||||
|
||||
const deleteMedia = async () => {
|
||||
@@ -330,11 +330,16 @@ const ManageSlideOver = ({
|
||||
key={`watch-user-${user.id}`}
|
||||
>
|
||||
<a className="z-0 mb-1 -mr-2 shrink-0 hover:z-50">
|
||||
<img
|
||||
src={user.avatar}
|
||||
alt={user.displayName}
|
||||
className="h-8 w-8 scale-100 transform-gpu rounded-full object-cover ring-1 ring-gray-500 transition duration-300 hover:scale-105"
|
||||
/>
|
||||
<Tooltip
|
||||
key={`watch-user-${user.id}`}
|
||||
content={user.displayName}
|
||||
>
|
||||
<img
|
||||
src={user.avatar}
|
||||
alt={user.displayName}
|
||||
className="h-8 w-8 scale-100 transform-gpu rounded-full object-cover ring-1 ring-gray-500 transition duration-300 hover:scale-105"
|
||||
/>
|
||||
</Tooltip>
|
||||
</a>
|
||||
</Link>
|
||||
))}
|
||||
@@ -485,11 +490,16 @@ const ManageSlideOver = ({
|
||||
key={`watch-user-${user.id}`}
|
||||
>
|
||||
<a className="z-0 mb-1 -mr-2 shrink-0 hover:z-50">
|
||||
<img
|
||||
src={user.avatar}
|
||||
alt={user.displayName}
|
||||
className="h-8 w-8 scale-100 transform-gpu rounded-full object-cover ring-1 ring-gray-500 transition duration-300 hover:scale-105"
|
||||
/>
|
||||
<Tooltip
|
||||
key={`watch-user-${user.id}`}
|
||||
content={user.displayName}
|
||||
>
|
||||
<img
|
||||
src={user.avatar}
|
||||
alt={user.displayName}
|
||||
className="h-8 w-8 scale-100 transform-gpu rounded-full object-cover ring-1 ring-gray-500 transition duration-300 hover:scale-105"
|
||||
/>
|
||||
</Tooltip>
|
||||
</a>
|
||||
</Link>
|
||||
))}
|
||||
|
||||
@@ -2,6 +2,7 @@ import RTAudFresh from '@app/assets/rt_aud_fresh.svg';
|
||||
import RTAudRotten from '@app/assets/rt_aud_rotten.svg';
|
||||
import RTFresh from '@app/assets/rt_fresh.svg';
|
||||
import RTRotten from '@app/assets/rt_rotten.svg';
|
||||
import ImdbLogo from '@app/assets/services/imdb.svg';
|
||||
import TmdbLogo from '@app/assets/tmdb_logo.svg';
|
||||
import Button from '@app/components/Common/Button';
|
||||
import CachedImage from '@app/components/Common/CachedImage';
|
||||
@@ -40,7 +41,7 @@ import {
|
||||
ChevronDoubleDownIcon,
|
||||
ChevronDoubleUpIcon,
|
||||
} from '@heroicons/react/24/solid';
|
||||
import type { RTRating } from '@server/api/rottentomatoes';
|
||||
import { type RatingResponse } from '@server/api/ratings';
|
||||
import { IssueStatus } from '@server/constants/issue';
|
||||
import { MediaStatus } from '@server/constants/media';
|
||||
import { MediaServerType } from '@server/constants/server';
|
||||
@@ -91,6 +92,7 @@ const messages = defineMessages({
|
||||
rtcriticsscore: 'Rotten Tomatoes Tomatometer',
|
||||
rtaudiencescore: 'Rotten Tomatoes Audience Score',
|
||||
tmdbuserscore: 'TMDB User Score',
|
||||
imdbuserscore: 'IMDB User Score',
|
||||
});
|
||||
|
||||
interface MovieDetailsProps {
|
||||
@@ -126,8 +128,8 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
),
|
||||
});
|
||||
|
||||
const { data: ratingData } = useSWR<RTRating>(
|
||||
`/api/v1/movie/${router.query.movieId}/ratings`
|
||||
const { data: ratingData } = useSWR<RatingResponse>(
|
||||
`/api/v1/movie/${router.query.movieId}/ratingscombined`
|
||||
);
|
||||
|
||||
const sortedCrew = useMemo(
|
||||
@@ -541,44 +543,62 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
)}
|
||||
<div className="media-facts">
|
||||
{(!!data.voteCount ||
|
||||
(ratingData?.criticsRating && !!ratingData?.criticsScore) ||
|
||||
(ratingData?.audienceRating && !!ratingData?.audienceScore)) && (
|
||||
(ratingData?.rt?.criticsRating &&
|
||||
!!ratingData?.rt?.criticsScore) ||
|
||||
(ratingData?.rt?.audienceRating &&
|
||||
!!ratingData?.rt?.audienceScore) ||
|
||||
ratingData?.imdb?.criticsScore) && (
|
||||
<div className="media-ratings">
|
||||
{ratingData?.criticsRating && !!ratingData?.criticsScore && (
|
||||
<Tooltip
|
||||
content={intl.formatMessage(messages.rtcriticsscore)}
|
||||
>
|
||||
{ratingData?.rt?.criticsRating &&
|
||||
!!ratingData?.rt?.criticsScore && (
|
||||
<Tooltip
|
||||
content={intl.formatMessage(messages.rtcriticsscore)}
|
||||
>
|
||||
<a
|
||||
href={ratingData.rt.url}
|
||||
className="media-rating"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
{ratingData.rt.criticsRating === 'Rotten' ? (
|
||||
<RTRotten className="w-6" />
|
||||
) : (
|
||||
<RTFresh className="w-6" />
|
||||
)}
|
||||
<span>{ratingData.rt.criticsScore}%</span>
|
||||
</a>
|
||||
</Tooltip>
|
||||
)}
|
||||
{ratingData?.rt?.audienceRating &&
|
||||
!!ratingData?.rt?.audienceScore && (
|
||||
<Tooltip
|
||||
content={intl.formatMessage(messages.rtaudiencescore)}
|
||||
>
|
||||
<a
|
||||
href={ratingData.rt.url}
|
||||
className="media-rating"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
{ratingData.rt.audienceRating === 'Spilled' ? (
|
||||
<RTAudRotten className="w-6" />
|
||||
) : (
|
||||
<RTAudFresh className="w-6" />
|
||||
)}
|
||||
<span>{ratingData.rt.audienceScore}%</span>
|
||||
</a>
|
||||
</Tooltip>
|
||||
)}
|
||||
{ratingData?.imdb?.criticsScore && (
|
||||
<Tooltip content={intl.formatMessage(messages.imdbuserscore)}>
|
||||
<a
|
||||
href={ratingData.url}
|
||||
href={ratingData.imdb.url}
|
||||
className="media-rating"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
{ratingData.criticsRating === 'Rotten' ? (
|
||||
<RTRotten className="w-6" />
|
||||
) : (
|
||||
<RTFresh className="w-6" />
|
||||
)}
|
||||
<span>{ratingData.criticsScore}%</span>
|
||||
</a>
|
||||
</Tooltip>
|
||||
)}
|
||||
{ratingData?.audienceRating && !!ratingData?.audienceScore && (
|
||||
<Tooltip
|
||||
content={intl.formatMessage(messages.rtaudiencescore)}
|
||||
>
|
||||
<a
|
||||
href={ratingData.url}
|
||||
className="media-rating"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
>
|
||||
{ratingData.audienceRating === 'Spilled' ? (
|
||||
<RTAudRotten className="w-6" />
|
||||
) : (
|
||||
<RTAudFresh className="w-6" />
|
||||
)}
|
||||
<span>{ratingData.audienceScore}%</span>
|
||||
<ImdbLogo className="mr-1 w-6" />
|
||||
<span>{ratingData.imdb.criticsScore}</span>
|
||||
</a>
|
||||
</Tooltip>
|
||||
)}
|
||||
@@ -827,7 +847,7 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
tmdbId={data.id}
|
||||
tvdbId={data.externalIds.tvdbId}
|
||||
imdbId={data.externalIds.imdbId}
|
||||
rtUrl={ratingData?.url}
|
||||
rtUrl={ratingData?.rt?.url}
|
||||
mediaUrl={
|
||||
data.mediaInfo?.mediaUrl ?? data.mediaInfo?.mediaUrl4k
|
||||
}
|
||||
|
||||
@@ -1,7 +1,9 @@
|
||||
import type { PermissionItem } from '@app/components/PermissionOption';
|
||||
import PermissionOption from '@app/components/PermissionOption';
|
||||
import useSettings from '@app/hooks/useSettings';
|
||||
import type { User } from '@app/hooks/useUser';
|
||||
import { Permission } from '@app/hooks/useUser';
|
||||
import { MediaServerType } from '@server/constants/server';
|
||||
import { defineMessages, useIntl } from 'react-intl';
|
||||
|
||||
export const messages = defineMessages({
|
||||
@@ -72,9 +74,9 @@ export const messages = defineMessages({
|
||||
viewrecent: 'View Recently Added',
|
||||
viewrecentDescription:
|
||||
'Grant permission to view the list of recently added media.',
|
||||
viewwatchlists: 'View Plex Watchlists',
|
||||
viewwatchlists: 'View {mediaServerName} Watchlists',
|
||||
viewwatchlistsDescription:
|
||||
"Grant permission to view other users' Plex Watchlists.",
|
||||
"Grant permission to view other users' {mediaServerName} Watchlists.",
|
||||
});
|
||||
|
||||
interface PermissionEditProps {
|
||||
@@ -91,6 +93,7 @@ export const PermissionEdit = ({
|
||||
onUpdate,
|
||||
}: PermissionEditProps) => {
|
||||
const intl = useIntl();
|
||||
const settings = useSettings();
|
||||
|
||||
const permissionList: PermissionItem[] = [
|
||||
{
|
||||
@@ -131,8 +134,24 @@ export const PermissionEdit = ({
|
||||
},
|
||||
{
|
||||
id: 'viewwatchlists',
|
||||
name: intl.formatMessage(messages.viewwatchlists),
|
||||
description: intl.formatMessage(messages.viewwatchlistsDescription),
|
||||
name: intl.formatMessage(messages.viewwatchlists, {
|
||||
mediaServerName:
|
||||
settings.currentSettings.mediaServerType === MediaServerType.PLEX
|
||||
? 'Plex'
|
||||
: settings.currentSettings.mediaServerType ===
|
||||
MediaServerType.JELLYFIN
|
||||
? 'Jellyfin'
|
||||
: 'Emby',
|
||||
}),
|
||||
description: intl.formatMessage(messages.viewwatchlistsDescription, {
|
||||
mediaServerName:
|
||||
settings.currentSettings.mediaServerType === MediaServerType.PLEX
|
||||
? 'Plex'
|
||||
: settings.currentSettings.mediaServerType ===
|
||||
MediaServerType.JELLYFIN
|
||||
? 'Jellyfin'
|
||||
: 'Emby',
|
||||
}),
|
||||
permission: Permission.WATCHLIST_VIEW,
|
||||
},
|
||||
],
|
||||
|
||||
@@ -76,8 +76,12 @@ const RegionSelector = ({
|
||||
}, [value, regions, allRegion]);
|
||||
|
||||
useEffect(() => {
|
||||
if (onChange && regions && selectedRegion) {
|
||||
onChange(name, selectedRegion.iso_3166_1);
|
||||
if (onChange && regions) {
|
||||
if (selectedRegion) {
|
||||
onChange(name, selectedRegion.iso_3166_1);
|
||||
} else {
|
||||
onChange(name, '');
|
||||
}
|
||||
}
|
||||
}, [onChange, selectedRegion, name, regions]);
|
||||
|
||||
|
||||
@@ -437,6 +437,7 @@ export const WatchProviderSelector = ({
|
||||
{otherProviders.length > 0 && (
|
||||
<button
|
||||
className="relative top-4 flex items-center justify-center space-x-2 text-sm text-gray-400 transition hover:text-gray-200"
|
||||
type="button"
|
||||
onClick={() => setShowMore(!showMore)}
|
||||
>
|
||||
<div className="h-0.5 flex-1 bg-gray-600" />
|
||||
|
||||
@@ -3,6 +3,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
|
||||
import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
|
||||
import type { PushoverSound } from '@server/api/pushover';
|
||||
import axios from 'axios';
|
||||
import { Field, Form, Formik } from 'formik';
|
||||
import { useState } from 'react';
|
||||
@@ -15,10 +16,12 @@ const messages = defineMessages({
|
||||
agentenabled: 'Enable Agent',
|
||||
accessToken: 'Application API Token',
|
||||
accessTokenTip:
|
||||
'<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Overseerr',
|
||||
'<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Jellyseerr',
|
||||
userToken: 'User or Group Key',
|
||||
userTokenTip:
|
||||
'Your 30-character <UsersGroupsLink>user or group identifier</UsersGroupsLink>',
|
||||
sound: 'Notification Sound',
|
||||
deviceDefault: 'Device Default',
|
||||
validationAccessTokenRequired: 'You must provide a valid application token',
|
||||
validationUserTokenRequired: 'You must provide a valid user or group key',
|
||||
pushoversettingssaved: 'Pushover notification settings saved successfully!',
|
||||
@@ -38,6 +41,11 @@ const NotificationsPushover = () => {
|
||||
error,
|
||||
mutate: revalidate,
|
||||
} = useSWR('/api/v1/settings/notifications/pushover');
|
||||
const { data: soundsData } = useSWR<PushoverSound[]>(
|
||||
data?.options.accessToken
|
||||
? `/api/v1/settings/notifications/pushover/sounds?token=${data.options.accessToken}`
|
||||
: null
|
||||
);
|
||||
|
||||
const NotificationsPushoverSchema = Yup.object().shape({
|
||||
accessToken: Yup.string()
|
||||
@@ -77,6 +85,7 @@ const NotificationsPushover = () => {
|
||||
types: data?.types,
|
||||
accessToken: data?.options.accessToken,
|
||||
userToken: data?.options.userToken,
|
||||
sound: data?.options.sound,
|
||||
}}
|
||||
validationSchema={NotificationsPushoverSchema}
|
||||
onSubmit={async (values) => {
|
||||
@@ -132,6 +141,7 @@ const NotificationsPushover = () => {
|
||||
options: {
|
||||
accessToken: values.accessToken,
|
||||
userToken: values.userToken,
|
||||
sound: values.sound,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -226,6 +236,30 @@ const NotificationsPushover = () => {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="sound" className="text-label">
|
||||
{intl.formatMessage(messages.sound)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
as="select"
|
||||
id="sound"
|
||||
name="sound"
|
||||
disabled={!soundsData?.length}
|
||||
>
|
||||
<option value="">
|
||||
{intl.formatMessage(messages.deviceDefault)}
|
||||
</option>
|
||||
{soundsData?.map((sound, index) => (
|
||||
<option key={`sound-${index}`} value={sound.name}>
|
||||
{sound.description}
|
||||
</option>
|
||||
))}
|
||||
</Field>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<NotificationTypeSelector
|
||||
currentTypes={values.enabled ? values.types : 0}
|
||||
onUpdate={(newTypes) => {
|
||||
|
||||
@@ -19,7 +19,7 @@ const messages = defineMessages({
|
||||
'Allow users to also start a chat with your bot and configure their own notifications',
|
||||
botAPI: 'Bot Authorization Token',
|
||||
botApiTip:
|
||||
'<CreateBotLink>Create a bot</CreateBotLink> for use with Overseerr',
|
||||
'<CreateBotLink>Create a bot</CreateBotLink> for use with Jellyseerr',
|
||||
chatId: 'Chat ID',
|
||||
chatIdTip:
|
||||
'Start a chat with your bot, add <GetIdBotLink>@get_id_bot</GetIdBotLink>, and issue the <code>/my_id</code> command',
|
||||
|
||||
@@ -18,7 +18,7 @@ const messages = defineMessages({
|
||||
toastWebPushTestSuccess: 'Web push test notification sent!',
|
||||
toastWebPushTestFailed: 'Web push test notification failed to send.',
|
||||
httpsRequirement:
|
||||
'In order to receive web push notifications, Overseerr must be served over HTTPS.',
|
||||
'In order to receive web push notifications, Jellyseerr must be served over HTTPS.',
|
||||
});
|
||||
|
||||
const NotificationsWebPush = () => {
|
||||
|
||||
@@ -39,6 +39,9 @@ const defaultPayload = {
|
||||
requestedBy_email: '{{requestedBy_email}}',
|
||||
requestedBy_username: '{{requestedBy_username}}',
|
||||
requestedBy_avatar: '{{requestedBy_avatar}}',
|
||||
requestedBy_settings_discordId: '{{requestedBy_settings_discordId}}',
|
||||
requestedBy_settings_telegramChatId:
|
||||
'{{requestedBy_settings_telegramChatId}}',
|
||||
},
|
||||
'{{issue}}': {
|
||||
issue_id: '{{issue_id}}',
|
||||
@@ -47,12 +50,18 @@ const defaultPayload = {
|
||||
reportedBy_email: '{{reportedBy_email}}',
|
||||
reportedBy_username: '{{reportedBy_username}}',
|
||||
reportedBy_avatar: '{{reportedBy_avatar}}',
|
||||
reportedBy_settings_discordId: '{{reportedBy_settings_discordId}}',
|
||||
reportedBy_settings_telegramChatId:
|
||||
'{{reportedBy_settings_telegramChatId}}',
|
||||
},
|
||||
'{{comment}}': {
|
||||
comment_message: '{{comment_message}}',
|
||||
commentedBy_email: '{{commentedBy_email}}',
|
||||
commentedBy_username: '{{commentedBy_username}}',
|
||||
commentedBy_avatar: '{{commentedBy_avatar}}',
|
||||
commentedBy_settings_discordId: '{{commentedBy_settings_discordId}}',
|
||||
commentedBy_settings_telegramChatId:
|
||||
'{{commentedBy_settings_telegramChatId}}',
|
||||
},
|
||||
'{{extra}}': [],
|
||||
};
|
||||
|
||||
@@ -16,7 +16,7 @@ import useSWR from 'swr';
|
||||
|
||||
const messages = defineMessages({
|
||||
about: 'About',
|
||||
overseerrinformation: 'About Overseerr',
|
||||
overseerrinformation: 'About Jellyseerr',
|
||||
version: 'Version',
|
||||
totalmedia: 'Total Media',
|
||||
totalrequests: 'Total Requests',
|
||||
@@ -25,6 +25,7 @@ const messages = defineMessages({
|
||||
timezone: 'Time Zone',
|
||||
appDataPath: 'Data Directory',
|
||||
supportoverseerr: 'Support Overseerr',
|
||||
supportjellyseerr: 'Support Jellyseerr',
|
||||
helppaycoffee: 'Help Pay for Coffee',
|
||||
documentation: 'Documentation',
|
||||
preferredmethod: 'Preferred',
|
||||
@@ -33,7 +34,7 @@ const messages = defineMessages({
|
||||
betawarning:
|
||||
'This is BETA software. Features may be broken and/or unstable. Please report any issues on GitHub!',
|
||||
runningDevelop:
|
||||
'You are running the <code>develop</code> branch of Overseerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.',
|
||||
'You are running the <code>develop</code> branch of Jellyseerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.',
|
||||
});
|
||||
|
||||
const SettingsAbout = () => {
|
||||
@@ -187,6 +188,54 @@ const SettingsAbout = () => {
|
||||
</List.Item>
|
||||
</List>
|
||||
</div>
|
||||
<div className="section">
|
||||
<List title={intl.formatMessage(messages.supportoverseerr)}>
|
||||
<List.Item
|
||||
title={`${intl.formatMessage(messages.helppaycoffee)} ☕️`}
|
||||
>
|
||||
<a
|
||||
href="https://github.com/sponsors/sct"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className="text-indigo-500 transition duration-300 hover:underline"
|
||||
>
|
||||
https://github.com/sponsors/sct
|
||||
</a>
|
||||
<Badge className="ml-2">
|
||||
{intl.formatMessage(messages.preferredmethod)}
|
||||
</Badge>
|
||||
</List.Item>
|
||||
<List.Item title="">
|
||||
<a
|
||||
href="https://patreon.com/overseerr"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className="text-indigo-500 transition duration-300 hover:underline"
|
||||
>
|
||||
https://patreon.com/overseerr
|
||||
</a>
|
||||
</List.Item>
|
||||
</List>
|
||||
</div>
|
||||
<div className="section">
|
||||
<List title={intl.formatMessage(messages.supportjellyseerr)}>
|
||||
<List.Item
|
||||
title={`${intl.formatMessage(messages.helppaycoffee)} ☕️`}
|
||||
>
|
||||
<a
|
||||
href="https://www.buymeacoffee.com/fallen.bagel"
|
||||
target="_blank"
|
||||
rel="noreferrer"
|
||||
className="text-indigo-500 transition duration-300 hover:underline"
|
||||
>
|
||||
https://www.buymeacoffee.com/fallen.bagel
|
||||
</a>
|
||||
<Badge className="ml-2">
|
||||
{intl.formatMessage(messages.preferredmethod)}
|
||||
</Badge>
|
||||
</List.Item>
|
||||
</List>
|
||||
</div>
|
||||
<div className="section">
|
||||
<Releases currentVersion={data.version} />
|
||||
</div>
|
||||
|
||||
@@ -9,7 +9,7 @@ const messages = defineMessages({
|
||||
experimentalTooltip:
|
||||
'Enabling this setting may result in unexpected application behavior',
|
||||
restartrequiredTooltip:
|
||||
'Overseerr must be restarted for changes to this setting to take effect',
|
||||
'Jellyseerr must be restarted for changes to this setting to take effect',
|
||||
});
|
||||
|
||||
const SettingsBadge = ({
|
||||
|
||||
@@ -30,8 +30,10 @@ const messages = defineMessages({
|
||||
jellyfinSettingsSuccess: '{mediaServerName} settings saved successfully!',
|
||||
jellyfinSettings: '{mediaServerName} Settings',
|
||||
jellyfinSettingsDescription:
|
||||
'Optionally configure an external player endpoint for your {mediaServerName} server that is different to the internal URL used during setup',
|
||||
'Optionally configure the internal and external endpoints for your {mediaServerName} server. In most cases, the external URL is different to the internal URL. A custom password reset URL can also be set for {mediaServerName} login, in case you would like to redirect to a different password reset page.',
|
||||
externalUrl: 'External URL',
|
||||
internalUrl: 'Internal URL',
|
||||
jellyfinForgotPasswordUrl: 'Forgot Password URL',
|
||||
validationUrl: 'You must provide a valid URL',
|
||||
syncing: 'Syncing',
|
||||
syncJellyfin: 'Sync Libraries',
|
||||
@@ -86,7 +88,15 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
|
||||
|
||||
const JellyfinSettingsSchema = Yup.object().shape({
|
||||
jellyfinExternalUrl: Yup.string().matches(
|
||||
/^(?:(?:(?:https?):)?\/\/)(?:\S+(?::\S*)?@)?(?:(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)(?:\.(?:[a-z\u00a1-\uffff0-9]-*)*[a-z\u00a1-\uffff0-9]+)*\.?)(?::\d{2,5})?(?:[/?#]\S*)?$/,
|
||||
/^(https?:\/\/)?(?:[\w-]+\.)*[\w-]+(?::\d{2,5})?(?:\/[\w-]+)*(?:\/)?$/gm,
|
||||
intl.formatMessage(messages.validationUrl)
|
||||
),
|
||||
jellyfinInternalUrl: Yup.string().matches(
|
||||
/^(https?:\/\/)?(?:[\w-]+\.)*[\w-]+(?::\d{2,5})?(?:\/[\w-]+)*(?:\/)?$/gm,
|
||||
intl.formatMessage(messages.validationUrl)
|
||||
),
|
||||
jellyfinForgotPasswordUrl: Yup.string().matches(
|
||||
/^(https?:\/\/)?(?:[\w-]+\.)*[\w-]+(?::\d{2,5})?(?:\/[\w-]+)*(?:\/)?$/gm,
|
||||
intl.formatMessage(messages.validationUrl)
|
||||
),
|
||||
});
|
||||
@@ -346,13 +356,17 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
|
||||
</div>
|
||||
<Formik
|
||||
initialValues={{
|
||||
jellyfinInternalUrl: data?.hostname || '',
|
||||
jellyfinExternalUrl: data?.externalHostname || '',
|
||||
jellyfinForgotPasswordUrl: data?.jellyfinForgotPasswordUrl || '',
|
||||
}}
|
||||
validationSchema={JellyfinSettingsSchema}
|
||||
onSubmit={async (values) => {
|
||||
try {
|
||||
await axios.post('/api/v1/settings/jellyfin', {
|
||||
hostname: values.jellyfinInternalUrl,
|
||||
externalHostname: values.jellyfinExternalUrl,
|
||||
jellyfinForgotPasswordUrl: values.jellyfinForgotPasswordUrl,
|
||||
} as JellyfinSettings);
|
||||
|
||||
addToast(
|
||||
@@ -388,6 +402,27 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
|
||||
{({ errors, touched, handleSubmit, isSubmitting, isValid }) => {
|
||||
return (
|
||||
<form className="section" onSubmit={handleSubmit}>
|
||||
<div className="form-row">
|
||||
<label htmlFor="jellyfinInternalUrl" className="text-label">
|
||||
{intl.formatMessage(messages.internalUrl)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
type="text"
|
||||
inputMode="url"
|
||||
id="jellyfinInternalUrl"
|
||||
name="jellyfinInternalUrl"
|
||||
/>
|
||||
</div>
|
||||
{errors.jellyfinInternalUrl &&
|
||||
touched.jellyfinInternalUrl && (
|
||||
<div className="error">
|
||||
{errors.jellyfinInternalUrl}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="jellyfinExternalUrl" className="text-label">
|
||||
{intl.formatMessage(messages.externalUrl)}
|
||||
@@ -409,6 +444,30 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label
|
||||
htmlFor="jellyfinForgotPasswordUrl"
|
||||
className="text-label"
|
||||
>
|
||||
{intl.formatMessage(messages.jellyfinForgotPasswordUrl)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
type="text"
|
||||
inputMode="url"
|
||||
id="jellyfinForgotPasswordUrl"
|
||||
name="jellyfinForgotPasswordUrl"
|
||||
/>
|
||||
</div>
|
||||
{errors.jellyfinForgotPasswordUrl &&
|
||||
touched.jellyfinForgotPasswordUrl && (
|
||||
<div className="error">
|
||||
{errors.jellyfinForgotPasswordUrl}
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="actions">
|
||||
<div className="flex justify-end">
|
||||
<span className="ml-3 inline-flex rounded-md shadow-sm">
|
||||
|
||||
@@ -30,7 +30,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages({
|
||||
jobsandcache: 'Jobs & Cache',
|
||||
jobs: 'Jobs',
|
||||
jobsDescription:
|
||||
'Overseerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered below. Manually running a job will not alter its schedule.',
|
||||
'Jellyseerr performs certain maintenance tasks as regularly-scheduled jobs, but they can also be manually triggered below. Manually running a job will not alter its schedule.',
|
||||
jobname: 'Job Name',
|
||||
jobtype: 'Type',
|
||||
nextexecution: 'Next Execution',
|
||||
@@ -42,7 +42,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages({
|
||||
command: 'Command',
|
||||
cache: 'Cache',
|
||||
cacheDescription:
|
||||
'Overseerr caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls.',
|
||||
'Jellyseerr caches requests to external API endpoints to optimize performance and avoid making unnecessary API calls.',
|
||||
cacheflushed: '{cachename} cache flushed.',
|
||||
cachename: 'Cache Name',
|
||||
cachehits: 'Hits',
|
||||
@@ -55,8 +55,8 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages({
|
||||
'plex-recently-added-scan': 'Plex Recently Added Scan',
|
||||
'plex-full-scan': 'Plex Full Library Scan',
|
||||
'plex-watchlist-sync': 'Plex Watchlist Sync',
|
||||
'jellyfin-recently-added-sync': 'Jellyfin Recently Added Scan',
|
||||
'jellyfin-full-sync': 'Jellyfin Full Library Scan',
|
||||
'jellyfin-recently-added-scan': 'Jellyfin Recently Added Scan',
|
||||
'jellyfin-full-scan': 'Jellyfin Full Library Scan',
|
||||
'availability-sync': 'Media Availability Sync',
|
||||
'radarr-scan': 'Radarr Scan',
|
||||
'sonarr-scan': 'Sonarr Scan',
|
||||
@@ -76,7 +76,7 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages({
|
||||
'Every {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}',
|
||||
imagecache: 'Image Cache',
|
||||
imagecacheDescription:
|
||||
'When enabled in settings, Overseerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.',
|
||||
'When enabled in settings, Jellyseerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.',
|
||||
imagecachecount: 'Images Cached',
|
||||
imagecachesize: 'Total Cache Size',
|
||||
});
|
||||
|
||||
@@ -27,7 +27,7 @@ const messages = defineMessages({
|
||||
general: 'General',
|
||||
generalsettings: 'General Settings',
|
||||
generalsettingsDescription:
|
||||
'Configure global and default settings for Overseerr.',
|
||||
'Configure global and default settings for Jellyseerr.',
|
||||
apikey: 'API Key',
|
||||
applicationTitle: 'Application Title',
|
||||
applicationurl: 'Application URL',
|
||||
@@ -49,7 +49,7 @@ const messages = defineMessages({
|
||||
'Cache externally sourced images (requires a significant amount of disk space)',
|
||||
trustProxy: 'Enable Proxy Support',
|
||||
trustProxyTip:
|
||||
'Allow Overseerr to correctly register client IP addresses behind a proxy',
|
||||
'Allow Jellyseerr to correctly register client IP addresses behind a proxy',
|
||||
validationApplicationTitle: 'You must provide an application title',
|
||||
validationApplicationUrl: 'You must provide a valid URL',
|
||||
validationApplicationUrlTrailingSlash: 'URL must not end in a trailing slash',
|
||||
|
||||
@@ -49,12 +49,12 @@ const messages = defineMessages({
|
||||
enablessl: 'Use SSL',
|
||||
plexlibraries: 'Plex Libraries',
|
||||
plexlibrariesDescription:
|
||||
'The libraries Overseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.',
|
||||
'The libraries Jellyseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.',
|
||||
scanning: 'Syncing…',
|
||||
scan: 'Sync Libraries',
|
||||
manualscan: 'Manual Library Scan',
|
||||
manualscanDescription:
|
||||
"Normally, this will only be run once every 24 hours. Overseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
|
||||
"Normally, this will only be run once every 24 hours. Jellyseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
|
||||
notrunning: 'Not Running',
|
||||
currentlibrary: 'Current Library: {name}',
|
||||
librariesRemaining: 'Libraries Remaining: {count}',
|
||||
@@ -67,7 +67,7 @@ const messages = defineMessages({
|
||||
'Optionally direct users to the web app on your server instead of the "hosted" web app',
|
||||
tautulliSettings: 'Tautulli Settings',
|
||||
tautulliSettingsDescription:
|
||||
'Optionally configure the settings for your Tautulli server. Overseerr fetches watch history data for your Plex media from Tautulli.',
|
||||
'Optionally configure the settings for your Tautulli server. Jellyseerr fetches watch history data for your Plex media from Tautulli.',
|
||||
urlBase: 'URL Base',
|
||||
tautulliApiKey: 'API Key',
|
||||
externalUrl: 'External URL',
|
||||
|
||||
@@ -23,7 +23,7 @@ const messages = defineMessages({
|
||||
toastSettingsFailure: 'Something went wrong while saving settings.',
|
||||
localLogin: 'Enable Local Sign-In',
|
||||
localLoginTip:
|
||||
'Allow users to sign in using their email address and password, instead of Plex OAuth',
|
||||
'Allow users to sign in using their email address and password, instead of {mediaServerName} OAuth',
|
||||
newPlexLogin: 'Enable New {mediaServerName} Sign-In',
|
||||
newPlexLoginTip:
|
||||
'Allow {mediaServerName} users to sign in without first being imported',
|
||||
@@ -114,7 +114,16 @@ const SettingsUsers = () => {
|
||||
<label htmlFor="localLogin" className="checkbox-label">
|
||||
{intl.formatMessage(messages.localLogin)}
|
||||
<span className="label-tip">
|
||||
{intl.formatMessage(messages.localLoginTip)}
|
||||
{intl.formatMessage(messages.localLoginTip, {
|
||||
mediaServerName:
|
||||
settings.currentSettings.mediaServerType ===
|
||||
MediaServerType.PLEX
|
||||
? 'Plex'
|
||||
: settings.currentSettings.mediaServerType ===
|
||||
MediaServerType.JELLYFIN
|
||||
? 'Jellyfin'
|
||||
: 'Emby',
|
||||
})}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
|
||||
@@ -1,8 +1,10 @@
|
||||
import Modal from '@app/components/Common/Modal';
|
||||
import SensitiveInput from '@app/components/Common/SensitiveInput';
|
||||
import useSettings from '@app/hooks/useSettings';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import { Transition } from '@headlessui/react';
|
||||
import type { SonarrSettings } from '@server/lib/settings';
|
||||
import { MediaServerType } from '@server/constants/server';
|
||||
import { type SonarrSettings } from '@server/lib/settings';
|
||||
import axios from 'axios';
|
||||
import { Field, Formik } from 'formik';
|
||||
import { useCallback, useEffect, useRef, useState } from 'react';
|
||||
@@ -43,6 +45,8 @@ const messages = defineMessages({
|
||||
qualityprofile: 'Quality Profile',
|
||||
languageprofile: 'Language Profile',
|
||||
rootfolder: 'Root Folder',
|
||||
seriesType: 'Series Type',
|
||||
animeSeriesType: 'Anime Series Type',
|
||||
animequalityprofile: 'Anime Quality Profile',
|
||||
animelanguageprofile: 'Anime Language Profile',
|
||||
animerootfolder: 'Anime Root Folder',
|
||||
@@ -107,6 +111,7 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
const { addToast } = useToasts();
|
||||
const [isValidated, setIsValidated] = useState(sonarr ? true : false);
|
||||
const [isTesting, setIsTesting] = useState(false);
|
||||
const settings = useSettings();
|
||||
const [testResponse, setTestResponse] = useState<TestResponse>({
|
||||
profiles: [],
|
||||
rootFolders: [],
|
||||
@@ -244,6 +249,8 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
activeProfileId: sonarr?.activeProfileId,
|
||||
activeLanguageProfileId: sonarr?.activeLanguageProfileId,
|
||||
rootFolder: sonarr?.activeDirectory,
|
||||
seriesType: sonarr?.seriesType,
|
||||
animeSeriesType: sonarr?.animeSeriesType,
|
||||
activeAnimeProfileId: sonarr?.activeAnimeProfileId,
|
||||
activeAnimeLanguageProfileId: sonarr?.activeAnimeLanguageProfileId,
|
||||
activeAnimeRootFolder: sonarr?.activeAnimeDirectory,
|
||||
@@ -251,7 +258,9 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
animeTags: sonarr?.animeTags ?? [],
|
||||
isDefault: sonarr?.isDefault ?? false,
|
||||
is4k: sonarr?.is4k ?? false,
|
||||
enableSeasonFolders: sonarr?.enableSeasonFolders ?? false,
|
||||
enableSeasonFolders:
|
||||
sonarr?.enableSeasonFolders ??
|
||||
settings.currentSettings.mediaServerType !== MediaServerType.PLEX,
|
||||
externalUrl: sonarr?.externalUrl,
|
||||
syncEnabled: sonarr?.syncEnabled ?? false,
|
||||
enableSearch: !sonarr?.preventSearch,
|
||||
@@ -280,6 +289,8 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
: undefined,
|
||||
activeProfileName: profileName,
|
||||
activeDirectory: values.rootFolder,
|
||||
seriesType: values.seriesType,
|
||||
animeSeriesType: values.animeSeriesType,
|
||||
activeAnimeProfileId: values.activeAnimeProfileId
|
||||
? Number(values.activeAnimeProfileId)
|
||||
: undefined,
|
||||
@@ -537,6 +548,27 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="seriesType" className="text-label">
|
||||
{intl.formatMessage(messages.seriesType)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
as="select"
|
||||
id="seriesType"
|
||||
name="seriesType"
|
||||
disabled={!isValidated || isTesting}
|
||||
>
|
||||
<option value="standard">Standard</option>
|
||||
<option value="daily">Daily</option>
|
||||
</Field>
|
||||
</div>
|
||||
</div>
|
||||
{errors.seriesType && touched.seriesType && (
|
||||
<div className="error">{errors.seriesType}</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="activeProfileId" className="text-label">
|
||||
{intl.formatMessage(messages.qualityprofile)}
|
||||
@@ -723,6 +755,27 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="animeSeriesType" className="text-label">
|
||||
{intl.formatMessage(messages.animeSeriesType)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
as="select"
|
||||
id="animeSeriesType"
|
||||
name="animeSeriesType"
|
||||
disabled={!isValidated || isTesting}
|
||||
>
|
||||
<option value="standard">Standard</option>
|
||||
<option value="anime">Anime</option>
|
||||
</Field>
|
||||
</div>
|
||||
</div>
|
||||
{errors.animeSeriesType && touched.animeSeriesType && (
|
||||
<div className="error">{errors.animeSeriesType}</div>
|
||||
)}
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="activeAnimeProfileId" className="text-label">
|
||||
{intl.formatMessage(messages.animequalityprofile)}
|
||||
@@ -913,11 +966,24 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
>
|
||||
{intl.formatMessage(messages.seasonfolders)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div
|
||||
className={`form-input-area ${
|
||||
settings.currentSettings.mediaServerType ===
|
||||
MediaServerType.JELLYFIN ||
|
||||
settings.currentSettings.mediaServerType ===
|
||||
MediaServerType.EMBY
|
||||
? 'opacity-50'
|
||||
: 'opacity-100'
|
||||
}`}
|
||||
>
|
||||
<Field
|
||||
type="checkbox"
|
||||
id="enableSeasonFolders"
|
||||
name="enableSeasonFolders"
|
||||
disabled={
|
||||
settings.currentSettings.mediaServerType !==
|
||||
MediaServerType.PLEX
|
||||
}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -156,6 +156,7 @@ const Slider = ({
|
||||
}`}
|
||||
onClick={() => slide(Direction.LEFT)}
|
||||
disabled={scrollPos.isStart}
|
||||
type="button"
|
||||
>
|
||||
<ChevronLeftIcon className="h-6 w-6" />
|
||||
</button>
|
||||
@@ -165,6 +166,7 @@ const Slider = ({
|
||||
}`}
|
||||
onClick={() => slide(Direction.RIGHT)}
|
||||
disabled={scrollPos.isEnd}
|
||||
type="button"
|
||||
>
|
||||
<ChevronRightIcon className="h-6 w-6" />
|
||||
</button>
|
||||
|
||||
@@ -176,11 +176,11 @@ const StatusBadge = ({
|
||||
</span>
|
||||
{inProgress && (
|
||||
<>
|
||||
{mediaType === 'tv' && (
|
||||
{mediaType === 'tv' && downloadItem[0].episode && (
|
||||
<span className="ml-1">
|
||||
{intl.formatMessage(messages.seasonepisodenumber, {
|
||||
seasonNumber: downloadItem[0].episode?.seasonNumber,
|
||||
episodeNumber: downloadItem[0].episode?.episodeNumber,
|
||||
seasonNumber: downloadItem[0].episode.seasonNumber,
|
||||
episodeNumber: downloadItem[0].episode.episodeNumber,
|
||||
})}
|
||||
</span>
|
||||
)}
|
||||
@@ -229,11 +229,11 @@ const StatusBadge = ({
|
||||
</span>
|
||||
{inProgress && (
|
||||
<>
|
||||
{mediaType === 'tv' && (
|
||||
{mediaType === 'tv' && downloadItem[0].episode && (
|
||||
<span className="ml-1">
|
||||
{intl.formatMessage(messages.seasonepisodenumber, {
|
||||
seasonNumber: downloadItem[0].episode?.seasonNumber,
|
||||
episodeNumber: downloadItem[0].episode?.episodeNumber,
|
||||
seasonNumber: downloadItem[0].episode.seasonNumber,
|
||||
episodeNumber: downloadItem[0].episode.episodeNumber,
|
||||
})}
|
||||
</span>
|
||||
)}
|
||||
@@ -282,11 +282,11 @@ const StatusBadge = ({
|
||||
</span>
|
||||
{inProgress && (
|
||||
<>
|
||||
{mediaType === 'tv' && (
|
||||
{mediaType === 'tv' && downloadItem[0].episode && (
|
||||
<span className="ml-1">
|
||||
{intl.formatMessage(messages.seasonepisodenumber, {
|
||||
seasonNumber: downloadItem[0].episode?.seasonNumber,
|
||||
episodeNumber: downloadItem[0].episode?.episodeNumber,
|
||||
seasonNumber: downloadItem[0].episode.seasonNumber,
|
||||
episodeNumber: downloadItem[0].episode.episodeNumber,
|
||||
})}
|
||||
</span>
|
||||
)}
|
||||
|
||||
@@ -12,6 +12,7 @@ export interface TmdbTitleCardProps {
|
||||
type: 'movie' | 'tv';
|
||||
canExpand?: boolean;
|
||||
isAddedToWatchlist?: boolean;
|
||||
mutateParent?: () => void;
|
||||
}
|
||||
|
||||
const isMovie = (movie: MovieDetails | TvDetails): movie is MovieDetails => {
|
||||
@@ -25,6 +26,7 @@ const TmdbTitleCard = ({
|
||||
type,
|
||||
canExpand,
|
||||
isAddedToWatchlist = false,
|
||||
mutateParent,
|
||||
}: TmdbTitleCardProps) => {
|
||||
const { hasPermission } = useUser();
|
||||
|
||||
@@ -71,6 +73,7 @@ const TmdbTitleCard = ({
|
||||
year={title.releaseDate}
|
||||
mediaType={'movie'}
|
||||
canExpand={canExpand}
|
||||
mutateParent={mutateParent}
|
||||
/>
|
||||
) : (
|
||||
<TitleCard
|
||||
@@ -87,6 +90,7 @@ const TmdbTitleCard = ({
|
||||
year={title.firstAirDate}
|
||||
mediaType={'tv'}
|
||||
canExpand={canExpand}
|
||||
mutateParent={mutateParent}
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
@@ -38,6 +38,7 @@ interface TitleCardProps {
|
||||
canExpand?: boolean;
|
||||
inProgress?: boolean;
|
||||
isAddedToWatchlist?: number | boolean;
|
||||
mutateParent?: () => void;
|
||||
}
|
||||
|
||||
const messages = defineMessages({
|
||||
@@ -61,6 +62,7 @@ const TitleCard = ({
|
||||
isAddedToWatchlist = false,
|
||||
inProgress = false,
|
||||
canExpand = false,
|
||||
mutateParent,
|
||||
}: TitleCardProps) => {
|
||||
const isTouch = useIsTouch();
|
||||
const intl = useIntl();
|
||||
@@ -148,6 +150,9 @@ const TitleCard = ({
|
||||
} finally {
|
||||
setIsUpdating(false);
|
||||
mutate('/api/v1/discover/watchlist');
|
||||
if (mutateParent) {
|
||||
mutateParent();
|
||||
}
|
||||
setToggleWatchlist((prevState) => !prevState);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -40,7 +40,7 @@ import {
|
||||
PlayIcon,
|
||||
} from '@heroicons/react/24/outline';
|
||||
import { ChevronDownIcon } from '@heroicons/react/24/solid';
|
||||
import type { RTRating } from '@server/api/rottentomatoes';
|
||||
import type { RTRating } from '@server/api/rating/rottentomatoes';
|
||||
import { ANIME_KEYWORD_ID } from '@server/api/themoviedb/constants';
|
||||
import { IssueStatus } from '@server/constants/issue';
|
||||
import { MediaRequestStatus, MediaStatus } from '@server/constants/media';
|
||||
|
||||
@@ -4,6 +4,7 @@ import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
|
||||
import useSettings from '@app/hooks/useSettings';
|
||||
import { useUser } from '@app/hooks/useUser';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import type { PushoverSound } from '@server/api/pushover';
|
||||
import type { UserSettingsNotificationsResponse } from '@server/interfaces/api/userSettingsInterfaces';
|
||||
import axios from 'axios';
|
||||
import { Field, Form, Formik } from 'formik';
|
||||
@@ -22,6 +23,8 @@ const messages = defineMessages({
|
||||
pushoverUserKey: 'User or Group Key',
|
||||
pushoverUserKeyTip:
|
||||
'Your 30-character <UsersGroupsLink>user or group identifier</UsersGroupsLink>',
|
||||
sound: 'Notification Sound',
|
||||
deviceDefault: 'Device Default',
|
||||
validationPushoverApplicationToken:
|
||||
'You must provide a valid application token',
|
||||
validationPushoverUserKey: 'You must provide a valid user or group key',
|
||||
@@ -40,6 +43,11 @@ const UserPushoverSettings = () => {
|
||||
} = useSWR<UserSettingsNotificationsResponse>(
|
||||
user ? `/api/v1/user/${user?.id}/settings/notifications` : null
|
||||
);
|
||||
const { data: soundsData } = useSWR<PushoverSound[]>(
|
||||
data?.pushoverApplicationToken
|
||||
? `/api/v1/settings/notifications/pushover/sounds?token=${data.pushoverApplicationToken}`
|
||||
: null
|
||||
);
|
||||
|
||||
const UserNotificationsPushoverSchema = Yup.object().shape({
|
||||
pushoverApplicationToken: Yup.string()
|
||||
@@ -191,6 +199,30 @@ const UserPushoverSettings = () => {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="sound" className="text-label">
|
||||
{intl.formatMessage(messages.sound)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
as="select"
|
||||
id="sound"
|
||||
name="sound"
|
||||
disabled={!soundsData?.length}
|
||||
>
|
||||
<option value="">
|
||||
{intl.formatMessage(messages.deviceDefault)}
|
||||
</option>
|
||||
{soundsData?.map((sound, index) => (
|
||||
<option key={`sound-${index}`} value={sound.name}>
|
||||
{sound.description}
|
||||
</option>
|
||||
))}
|
||||
</Field>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<NotificationTypeSelector
|
||||
user={user}
|
||||
currentTypes={values.types}
|
||||
|
||||
@@ -34,6 +34,7 @@ const messages = defineMessages({
|
||||
seriesrequest: 'Series Requests',
|
||||
recentlywatched: 'Recently Watched',
|
||||
plexwatchlist: 'Plex Watchlist',
|
||||
localWatchlist: "{username}'s Watchlist",
|
||||
emptywatchlist:
|
||||
'Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.',
|
||||
});
|
||||
@@ -78,17 +79,17 @@ const UserProfile = () => {
|
||||
? `/api/v1/user/${user.id}/watch_data`
|
||||
: null
|
||||
);
|
||||
|
||||
const { data: watchlistItems, error: watchlistError } =
|
||||
useSWR<WatchlistResponse>(
|
||||
user?.userType === UserType.PLEX &&
|
||||
(user.id === currentUser?.id ||
|
||||
currentHasPermission(
|
||||
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
|
||||
{
|
||||
type: 'or',
|
||||
}
|
||||
))
|
||||
? `/api/v1/user/${user.id}/watchlist`
|
||||
user?.id === currentUser?.id ||
|
||||
currentHasPermission(
|
||||
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
|
||||
{
|
||||
type: 'or',
|
||||
}
|
||||
)
|
||||
? `/api/v1/user/${user?.id}/watchlist`
|
||||
: null,
|
||||
{
|
||||
revalidateOnMount: true,
|
||||
@@ -117,6 +118,13 @@ const UserProfile = () => {
|
||||
return <Error statusCode={404} />;
|
||||
}
|
||||
|
||||
const watchlistSliderTitle = intl.formatMessage(
|
||||
user.userType === UserType.PLEX
|
||||
? messages.plexwatchlist
|
||||
: messages.localWatchlist,
|
||||
{ username: user.displayName }
|
||||
);
|
||||
|
||||
return (
|
||||
<>
|
||||
<PageTitle title={user.displayName} />
|
||||
@@ -309,12 +317,11 @@ const UserProfile = () => {
|
||||
/>
|
||||
</>
|
||||
)}
|
||||
{user.userType === UserType.PLEX &&
|
||||
(user.id === currentUser?.id ||
|
||||
currentHasPermission(
|
||||
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
|
||||
{ type: 'or' }
|
||||
)) &&
|
||||
{(user.id === currentUser?.id ||
|
||||
currentHasPermission(
|
||||
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
|
||||
{ type: 'or' }
|
||||
)) &&
|
||||
(!watchlistItems ||
|
||||
!!watchlistItems.results.length ||
|
||||
(user.id === currentUser?.id &&
|
||||
@@ -327,11 +334,11 @@ const UserProfile = () => {
|
||||
href={
|
||||
user.id === currentUser?.id
|
||||
? '/profile/watchlist'
|
||||
: `/users/${user?.id}/watchlist`
|
||||
: `/users/${user.id}/watchlist`
|
||||
}
|
||||
>
|
||||
<a className="slider-title">
|
||||
<span>{intl.formatMessage(messages.plexwatchlist)}</span>
|
||||
<span>{watchlistSliderTitle}</span>
|
||||
<ArrowRightCircleIcon />
|
||||
</a>
|
||||
</Link>
|
||||
|
||||
@@ -14,6 +14,7 @@ export type AvailableLocale =
|
||||
| 'hu'
|
||||
| 'it'
|
||||
| 'ja'
|
||||
| 'ko'
|
||||
| 'lt'
|
||||
| 'nb-NO'
|
||||
| 'nl'
|
||||
@@ -24,7 +25,7 @@ export type AvailableLocale =
|
||||
| 'sq'
|
||||
| 'sr'
|
||||
| 'sv'
|
||||
| 'ua'
|
||||
| 'uk'
|
||||
| 'zh-CN'
|
||||
| 'zh-TW';
|
||||
|
||||
@@ -126,10 +127,14 @@ export const availableLanguages: AvailableLanguageObject = {
|
||||
code: 'ja',
|
||||
display: '日本語',
|
||||
},
|
||||
ua: {
|
||||
code: 'ua',
|
||||
uk: {
|
||||
code: 'uk',
|
||||
display: 'українська',
|
||||
},
|
||||
ko: {
|
||||
code: 'ko',
|
||||
display: '한국어',
|
||||
},
|
||||
'zh-TW': {
|
||||
code: 'zh-TW',
|
||||
display: '繁體中文',
|
||||
|
||||
@@ -25,6 +25,7 @@ interface DiscoverResult<T, S> {
|
||||
error: unknown;
|
||||
titles: T[];
|
||||
firstResultData?: BaseSearchResult<T> & S;
|
||||
mutate?: () => void;
|
||||
}
|
||||
|
||||
const extraEncodes: [RegExp, string][] = [
|
||||
@@ -54,7 +55,7 @@ const useDiscover = <
|
||||
{ hideAvailable = true } = {}
|
||||
): DiscoverResult<T, S> => {
|
||||
const settings = useSettings();
|
||||
const { data, error, size, setSize, isValidating } = useSWRInfinite<
|
||||
const { data, error, size, setSize, isValidating, mutate } = useSWRInfinite<
|
||||
BaseSearchResult<T> & S
|
||||
>(
|
||||
(pageIndex: number, previousPageData) => {
|
||||
@@ -119,6 +120,7 @@ const useDiscover = <
|
||||
error,
|
||||
titles,
|
||||
firstResultData: data?.[0],
|
||||
mutate,
|
||||
};
|
||||
};
|
||||
|
||||
|
||||
@@ -1,17 +1,17 @@
|
||||
{
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "<code>{appDataPath}</code>مجلد التثبيت لم يتم إعداده بشكل صحيح سيتم تنظيف جميع البيانات عند إيقاف او إعادة تشغيل حاوي التطبيق.",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "إرسال تنبيهات في حالة وصول طلبات جديدة تتطلب الموافقة.",
|
||||
"components.NotificationTypeSelector.notificationTypes": "نوع التنبيه",
|
||||
"components.NotificationTypeSelector.notificationTypes": "أنواع التنبيهات",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "تلقي تنبيهات عندما يتم الموافقة على طلبات المحتوى.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "تلقي تنبيهات عندما يتم رفض الطلبات.",
|
||||
"components.PermissionEdit.createissuesDescription": "إعطاء صلاحية للإبلاغ عن مشاكل.",
|
||||
"components.PermissionEdit.managerequestsDescription": "إعطاء صلاحية بإدارة الطلبات. كل الطلبات المقدمة من قبل مستخدم يحمل هذا الإذن سيتم الموافقة عليها بشكل تلقائي.",
|
||||
"components.PermissionEdit.autoapproveDescription": "موافقة تلقائية لكل طلبات المحتوى باستثناء جودة الفور كي.",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "إعطاء صلاحية بطلب أفلام بجودة ٤ك.",
|
||||
"components.PermissionEdit.requestDescription": "إعطاء اصلاحية بطلب محتوى ليس بجودة ٤ك.",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "إعطاء صلاحيّة بطلب أفلام بجودة فور كي.",
|
||||
"components.PermissionEdit.requestDescription": "إعطاء اصلاحية بطلب محتوى ليس بجودة فور كي.",
|
||||
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "تم إستهلاك الحد الأقصى المسموح لك بطلب المواسم",
|
||||
"components.RequestModal.AdvancedRequester.selecttags": "إختيار علامات \"Tags\"",
|
||||
"components.RequestModal.AdvancedRequester.tags": "علامات\"Tags\"",
|
||||
"components.RequestModal.AdvancedRequester.selecttags": "إختار علامات التعريف",
|
||||
"components.RequestModal.AdvancedRequester.tags": "علامات التعريف",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "يمكنك الإطلاع على ملخص الحد الأقصى لطلباتك في <ProfileLink>صفحة ملف التعريف</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "تحتاج على الأقل ان تملك <strong>{seasons}</strong> {seasons, plural, one {طلب موسم} other {طلبات مواسم}} متبقية/متبقّي من حدك الأقصى لتتمكن من طلب هذا المسلسل.",
|
||||
"components.Discover.NetworkSlider.networks": "شبكات البث",
|
||||
@@ -45,7 +45,7 @@
|
||||
"components.ManageSlideOver.manageModalMedia4k": "محتوى جودة الفور كي",
|
||||
"components.ManageSlideOver.playedby": "تم تشغيله بواسطة",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {تشغيل} other {تشغيل}}",
|
||||
"components.ManageSlideOver.tvshow": "مسلسلات",
|
||||
"components.ManageSlideOver.tvshow": "مسلسل",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "رؤية المزيد",
|
||||
"components.MovieDetails.MovieCast.fullcast": "طاقم التمثيل",
|
||||
"components.MovieDetails.MovieCrew.fullcrew": "طاقم العمل",
|
||||
@@ -63,11 +63,11 @@
|
||||
"components.Discover.DiscoverStudio.studioMovies": "{studio} أفلام",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "{genre} مسلسلات",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "{language} مسلسلات",
|
||||
"components.Discover.MovieGenreList.moviegenres": "نوع الفيلم",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "نوع الفيلم",
|
||||
"components.Discover.StudioSlider.studios": "استديوهات الإنتاج",
|
||||
"components.Discover.TvGenreList.seriesgenres": "نوع المسلسل",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "نوع المسلسل",
|
||||
"components.Discover.MovieGenreList.moviegenres": "أنواع الأفلام",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "أنواع الأفلام",
|
||||
"components.Discover.StudioSlider.studios": "إستديوهات الإنتاج",
|
||||
"components.Discover.TvGenreList.seriesgenres": "أنواع المسلسلات",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "أنواع المسلسلات",
|
||||
"components.Discover.discover": "إكتشف",
|
||||
"components.Discover.popularmovies": "أفلام ذات شعبية",
|
||||
"components.Discover.populartv": "مسلسلات ذات شعبية",
|
||||
@@ -95,7 +95,7 @@
|
||||
"components.IssueDetails.deleteissueconfirm": "هل أنت متأكد من حذف هذه المشكلة ؟",
|
||||
"components.IssueDetails.episode": "حلقة {episodeNumber}",
|
||||
"components.IssueDetails.issuepagetitle": "مشكلة",
|
||||
"components.IssueDetails.issuetype": "نوع",
|
||||
"components.IssueDetails.issuetype": "النوع",
|
||||
"components.IssueDetails.lastupdated": "أخر تحديث",
|
||||
"components.IssueDetails.leavecomment": "تعليق",
|
||||
"components.IssueDetails.nocomments": "لا تعليقات.",
|
||||
@@ -135,7 +135,7 @@
|
||||
"components.IssueModal.CreateIssueModal.problemepisode": "الحلقة المعنيّة",
|
||||
"components.IssueModal.CreateIssueModal.problemseason": "الموسم المعني",
|
||||
"components.IssueModal.CreateIssueModal.providedetail": "رجاءا قم بتزويد شرح مفصل للمشكلة التي صادفتها.",
|
||||
"components.IssueModal.CreateIssueModal.reportissue": "الإبلاغ عن مشكلة",
|
||||
"components.IssueModal.CreateIssueModal.reportissue": "الإبلاغ عن مشكلةْ",
|
||||
"components.IssueModal.CreateIssueModal.season": "موسم {seasonNumber}",
|
||||
"components.IssueModal.CreateIssueModal.submitissue": "تأكيد المشكلة",
|
||||
"components.IssueModal.CreateIssueModal.toastFailedCreate": "حدث خطأ ما أثناء تأكيد المشكلة.",
|
||||
@@ -161,8 +161,8 @@
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {تأكيد} other {تأكيد}} behind",
|
||||
"components.Layout.VersionStatus.outofdate": "غير محدّث",
|
||||
"components.Login.email": "عنوان البريد الإلكتروني",
|
||||
"components.ManageSlideOver.markavailable": "الإشارة بأنه متوفر",
|
||||
"components.ManageSlideOver.movie": "فيلم",
|
||||
"components.ManageSlideOver.markavailable": "الإشارة بتوفر هذا المحتوى",
|
||||
"components.ManageSlideOver.movie": "فيلْم",
|
||||
"components.ManageSlideOver.openarr": "فتح في {arr}",
|
||||
"components.ManageSlideOver.mark4kavailable": "الإشارة بتوفّره بجودة فور كي",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "الإشارة بأن كل المواسم متوفرة بجودة فور كي",
|
||||
@@ -171,13 +171,13 @@
|
||||
"components.ManageSlideOver.opentautulli": "فتح في تطبيق تاتولي (Tautulli)",
|
||||
"components.ManageSlideOver.pastdays": "مضى من الأيام {days, number}",
|
||||
"components.MovieDetails.mark4kavailable": "الإشارة بأنه متوفر بجودة فور كي",
|
||||
"components.MovieDetails.markavailable": "الإشارة بالتوفر",
|
||||
"components.MovieDetails.markavailable": "الإشارة بتوفر هذا المحتوى",
|
||||
"components.MovieDetails.originallanguage": "اللغة الأصلية",
|
||||
"components.MovieDetails.originaltitle": "الإسم الأصلي",
|
||||
"components.MovieDetails.overviewunavailable": "النظرة العامة غير متوفرة.",
|
||||
"components.MovieDetails.play4konplex": "تشغيل بجودة فور كي في بليكس",
|
||||
"components.MovieDetails.playonplex": "تشغيل في بليكس",
|
||||
"components.MovieDetails.productioncountries": "الإنتاج {countryCount, plural, one {الدولة} other {الدول}}",
|
||||
"components.MovieDetails.productioncountries": "إنتاج {countryCount, plural, one {الدولة} other {الدول}}",
|
||||
"components.MovieDetails.recommendations": "توصيات",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {تاريخ الاصدار other {تواريخ الاصدار}}",
|
||||
"components.MovieDetails.revenue": "العائد / الربح",
|
||||
@@ -187,7 +187,7 @@
|
||||
"components.MovieDetails.similar": "عناوين مشابهه",
|
||||
"components.MovieDetails.overview": "نظرة عامة",
|
||||
"components.MovieDetails.streamingproviders": "يعرض حاليا على",
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {استديو} other {استديوهات}}",
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {إستديو الإنتاج} other {إستديوهات الإنتاج}}",
|
||||
"components.MovieDetails.viewfullcrew": "رؤية طاقم العمل",
|
||||
"components.MovieDetails.watchtrailer": "شاهد الإعلان",
|
||||
"components.NotificationTypeSelector.adminissuecommentDescription": "الحصول على تنبيهات عند تعليق المستخدمين على المشاكل.",
|
||||
@@ -232,18 +232,18 @@
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "موافقة تلقائية لكل طلبات الأفلام باستثناء جودة الفور كي.",
|
||||
"components.PermissionEdit.autoapproveSeries": "موافقة تلقائية للمسلسلات",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "موافقة تلقائية لكل طلبات المسلسلات باستثناء جودة الفور كي.",
|
||||
"components.PermissionEdit.createissues": "الإبلاغ عن مشكلة",
|
||||
"components.PermissionEdit.createissues": "الإبلاغ عن وجود مشاكل",
|
||||
"components.PermissionEdit.manageissues": "إدارة المشاكل",
|
||||
"components.PermissionEdit.manageissuesDescription": "إعطاء صلاحية بإدارة المشاكل.",
|
||||
"components.PermissionEdit.managerequests": "إدارة الطلبات",
|
||||
"components.PermissionEdit.request": "طلب",
|
||||
"components.PermissionEdit.request4k": "طلب بجودة ٤ك",
|
||||
"components.PermissionEdit.request4kDescription": "اعطاء صلاحية بطلب محتوى بجودة ٤ك.",
|
||||
"components.PermissionEdit.request4kMovies": "طلب أفلام بجودة ٤ك",
|
||||
"components.PermissionEdit.request4kTv": "طلب مسلسلات بجودة ٤ك",
|
||||
"components.PermissionEdit.request4kTvDescription": "إعطاء صلاحية بطلب مسلسلات بجودة ٤ك.",
|
||||
"components.PermissionEdit.request4k": "طلب بجودة فور كيّ",
|
||||
"components.PermissionEdit.request4kDescription": "اعطاء صلاحية بطلب محتوى بجودة فور كي.",
|
||||
"components.PermissionEdit.request4kMovies": "طلب أفلام بجودة فور كي",
|
||||
"components.PermissionEdit.request4kTv": "طلب مسلسلات بجودة فور كي",
|
||||
"components.PermissionEdit.request4kTvDescription": "إعطاء صلاحية بطلب مسلسلات بجودة فور كي.",
|
||||
"components.PermissionEdit.requestMovies": "طلب أفلام",
|
||||
"components.PermissionEdit.requestMoviesDescription": "إعطاء صلاحية بطلب أفلام ليست بجودة ٤ك.",
|
||||
"components.PermissionEdit.requestMoviesDescription": "إعطاء صلاحية بطلب أفلام ليست بجودة فور كي.",
|
||||
"components.PermissionEdit.requestTv": "طلب مسلسلات",
|
||||
"components.PermissionEdit.requestTvDescription": "إعطاء إذن بطلب مسلسلات ليست بجودة ٤ك.",
|
||||
"components.PermissionEdit.users": "إدارة المستخدمين",
|
||||
@@ -252,9 +252,9 @@
|
||||
"components.PermissionEdit.viewissuesDescription": "إعطاء صلاحية برؤية كل المشاكل المبلغ عنها من قبل المستخدمين.",
|
||||
"components.PermissionEdit.viewrequests": "الإطلاع على الطلبات",
|
||||
"components.PermissionEdit.viewrequestsDescription": "إعطاء صلاحية بالإطلاع على جميع الطلبات المقدمة من قبل المستخدمين.",
|
||||
"components.PersonDetails.alsoknownas": "أيضا معروف بـ: {names}",
|
||||
"components.PersonDetails.alsoknownas": "أيضا يُعرف بإسم: {names}",
|
||||
"components.PersonDetails.appearsin": "المظهر",
|
||||
"components.PersonDetails.ascharacter": "بـ {character}",
|
||||
"components.PersonDetails.ascharacter": "{character} شارك بِدوْر",
|
||||
"components.PersonDetails.birthdate": "ولد في {birthdate}",
|
||||
"components.PersonDetails.crewmember": "عضو",
|
||||
"components.PersonDetails.lifespan": "{birthdate} - {deathdate}",
|
||||
@@ -273,9 +273,9 @@
|
||||
"components.RequestBlock.rootfolder": "مجلّد الحفظ",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {موسم} other {مواسم}}",
|
||||
"components.RequestBlock.server": "وجهه السيرفر",
|
||||
"components.RequestButton.approve4krequests": "الموافقة على {requestCount, plural, one {طلبات ٤ك} other {{requestCount} طلبات ٤ك}}",
|
||||
"components.RequestButton.approve4krequests": "الموافقة على {requestCount, plural, one {طلب فور كي} other {{requestCount} طلبات فور كي}}",
|
||||
"components.RequestButton.approverequest": "الموافقة على الطلب",
|
||||
"components.RequestButton.approverequest4k": "الموافقة على طلب ٤ك",
|
||||
"components.RequestButton.approverequest4k": "الموافقة على طلب فور كي",
|
||||
"components.RequestButton.approverequests": "الموافقة على {requestCount, plural, one {طلب} other {{requestCount} طلبات}}",
|
||||
"components.RequestButton.decline4krequests": "رفض {requestCount, plural, one {طلب الفور كي} other {{requestCount} طلبات الفور كي}}",
|
||||
"components.RequestButton.declinerequest": "رفض الطلب",
|
||||
@@ -287,13 +287,13 @@
|
||||
"components.RequestButton.viewrequest4k": "رؤية تفاصيل طلب الفور كي",
|
||||
"components.RequestCard.deleterequest": "حذف الطلب",
|
||||
"components.RequestCard.failedretry": "حدث خطأ ما أثناء محاولة إعادة الطلب.",
|
||||
"components.RequestCard.mediaerror": "العنوان المتعلق بهذا الطلب لم يعد متوفراً.",
|
||||
"components.RequestCard.mediaerror": "{mediaType} غير موجود",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {موسم} other {مواسم}}",
|
||||
"components.RequestList.RequestItem.cancelRequest": "إلغاء الطلب",
|
||||
"components.RequestList.RequestItem.deleterequest": "حذف الطلب",
|
||||
"components.RequestList.RequestItem.editrequest": "تعديل الطلب",
|
||||
"components.RequestList.RequestItem.failedretry": "حدث خطأ ما أثناء محاولة إعادة الطلب.",
|
||||
"components.RequestList.RequestItem.mediaerror": "العنوان المتعلق بهذا الطلب لم يعد متوفرًا.",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} غير موجود",
|
||||
"components.RequestList.RequestItem.modified": "تم تعديله",
|
||||
"components.RequestList.RequestItem.modifieduserdate": "{date} من قبل {user}",
|
||||
"components.RequestList.RequestItem.requested": "تم طلبه",
|
||||
@@ -309,20 +309,20 @@
|
||||
"components.RequestModal.AdvancedRequester.destinationserver": "وجهه السيرفر",
|
||||
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})'",
|
||||
"components.RequestModal.AdvancedRequester.languageprofile": "ملف تعريف اللغة",
|
||||
"components.RequestModal.AdvancedRequester.notagoptions": "لا يوجد علامات\"Tags\".",
|
||||
"components.RequestModal.AdvancedRequester.notagoptions": "لا يوجد علامات تعريف.",
|
||||
"components.RequestModal.AdvancedRequester.qualityprofile": "ملف تعريف الجودة",
|
||||
"components.RequestModal.AdvancedRequester.requestas": "تقديم الطلب بإسم",
|
||||
"components.RequestModal.AdvancedRequester.rootfolder": "مجلد الحفظ",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequests": "مسموح لك بطلب <strong>{limit}</strong> {type} كل <strong>{days}</strong> أيام.",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "هذا المستخدم مسموح له بطلب <strong>{limit}</strong> {type} كل <strong>{days}</strong> أيام.",
|
||||
"components.RequestModal.QuotaDisplay.movie": "فيلم",
|
||||
"components.RequestModal.QuotaDisplay.movie": "فِيلم",
|
||||
"components.RequestModal.QuotaDisplay.movielimit": "{limit, plural, one {فيلم} other {أفلام}}",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "يمكنك الإطلاع على ملخص الحد الاقصى لطلبات هذا المستخدم في <ProfileLink>صفحة ملف التعريف</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{متبقي, plural, =0 {No} other {<strong>#</strong>}} {type} {متبقي, plural, one {طلب} other {طلبات}} متبقية",
|
||||
"components.RequestModal.QuotaDisplay.season": "موسم",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {موسم} other {مواسم}}",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "هذا المستخدم يحتاج أن يملك على الاقل <strong>{seasons}</strong> {seasons, plural, one {طلب موسم} other {طلبات مواسم}} متبقية/متبقي ليتمكن من طلب هذا المسلسل.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "لم نتمكن من مطابقة طلبك بشكل تلقائي. الرجاء إختيار العنوان المراد من القائمة بالإسفل.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "لم نتمكن من مطابقة هذا المسلسل بشكل تلقائي. الرجاء مطابقة المسلسل الصحيح من القائمة بالإسفل.",
|
||||
"components.RequestModal.alreadyrequested": "تم طلبه مُسبقاً",
|
||||
"components.RequestModal.approve": "الموافقة على الطلب",
|
||||
"components.RequestModal.autoapproval": "موافقة تلقائية",
|
||||
@@ -331,12 +331,12 @@
|
||||
"components.RequestModal.errorediting": "حدث خطأ ما أثناء محاولة تعديل الطلب.",
|
||||
"components.RequestModal.extras": "إضافات",
|
||||
"components.RequestModal.numberofepisodes": "# حلقات",
|
||||
"components.RequestModal.pending4krequest": "",
|
||||
"components.RequestModal.pending4krequest": "طلب فور كي مُعلّق",
|
||||
"components.RequestModal.pendingapproval": "طلبك معلق بانتظار الموافقة.",
|
||||
"components.RequestModal.pendingrequest": "",
|
||||
"components.RequestModal.pendingrequest": "طلب مُعلّق",
|
||||
"components.ResetPassword.validationpasswordmatch": "يجب مطابقة كلمة السر مع تأكيدها",
|
||||
"components.RequestModal.requestmovies": "طلب {count} {count, plural, one {فيلم} other {أفلام}}",
|
||||
"components.ResetPassword.email": "البريد الإلكتروني",
|
||||
"components.ResetPassword.email": "عنوان البريد الإلكتروني",
|
||||
"components.RequestModal.requestseasons4k": "طلب {seasonCount} {seasonCount, plural, one {موسم} other {مواسم}} بجودة فور كي",
|
||||
"components.ResetPassword.emailresetlink": "رابط إستعادة البريد الإلكتروني",
|
||||
"components.ResetPassword.passwordreset": "إعادة تعيين كلمة السر",
|
||||
@@ -392,15 +392,15 @@
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "مفتاح الدخول Token",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "جاري ارسال التنبيه…",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestFailed": "فشل إرسال تنبيه تجريبي Pushbullet.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "تم الإرسال!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "تم إرسال تنبيه إختبار Pushbullet!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "يجب إختيار نوع تنبيه واحد على الأقل",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSuccess": "تم الإرسال!",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSuccess": "تم إرسال تنبيه إختبار Pushover!",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "يجب ذكر application Token صحيح",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "يجب ذكر Access Token",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "الثلاثين خانة الخاصة بـ <UsersGroupsLink>بمعرف المستخدم او المجموعة </UsersGroupsLink>",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "اعادة تعيين",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "تم ارسال تنبيه تجريبي بنجاح!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "فشل حفظ الاعدادات.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "فشل حفظ إعدادات تنبيه webkook.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "تم حفظ الاعدادات!",
|
||||
"components.Settings.Notifications.agentenabled": "تفعيل الخدمة",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "عمل مفتاح من <PushbulletSettingsLink>اعدادات الحساب</PushbulletSettingsLink>",
|
||||
@@ -420,10 +420,10 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "يجب عليك اختيار نوع تنبيه واحد على الاقل",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "يجب ذكر مفتاح مستخدم أو مجموعة صحيح",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "تفعيل الخدمة",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "فشل حفظ الاعدادات.",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "فشل حفظ إعدادات تنبيه Slack.",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "تم حفظ الاعدادات بنجاح!",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestFailed": "فشل ارسال تنبيه تجريبي.",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSending": "جاري ارسال تنبيه تجريبي…",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSending": "جاري ارسال تنبيه Slack تجريبي…",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSuccess": "تم ارسال تنبيه تجريبي!",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "يجب عليك اختيار نوع تنبيه",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "الرجاء تزويد رابط صحيح",
|
||||
@@ -433,7 +433,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "لاستقبال تنبيهات بواسطة push , اوفرسيرر يجب ان يكون يعمل من خلال HTTPS.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "فشل ارسال التنبيه.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "تم الارسال!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingsfailed": "فشل حفظ الاعدادات.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingsfailed": "فشل حفظ إعدادات تنبيه web push.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingssaved": "تم حفظ الاعدادات بنجاح!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "تفعيل الخدمة",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "صلاحيات Header",
|
||||
@@ -441,7 +441,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "تم اعادة تعيين JSON payload بنجاح!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "\"Template Variable Help\"",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestFailed": "فشل ارسال تنبيه تجريبي.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "جاري ارسال تنبيه تجريبي…",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "جاري ارسال تنبيه webhook تجريبي…",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "يجب عليك كتابة رابط صحيح",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "يجب عليك اختيار نوع تنبيه واحد على الاقل",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "يجب عليك كتابة رابط صحيح",
|
||||
@@ -516,17 +516,17 @@
|
||||
"components.Settings.RadarrModal.editradarr": "تعديل سيرفر رادار",
|
||||
"components.Settings.RadarrModal.hostname": "عنوان المضيف أو رقم الأي بي",
|
||||
"components.Settings.RadarrModal.inCinemas": "متوفر بالسينما",
|
||||
"components.Settings.RadarrModal.loadingTags": "جاري تحميل العلامات \"Tags\"…",
|
||||
"components.Settings.RadarrModal.loadingTags": "جاري تحميل علامات التعريف…",
|
||||
"components.Settings.RadarrModal.loadingprofiles": "جاري تحميل ملفات تعريف الجودة…",
|
||||
"components.Settings.RadarrModal.notagoptions": "بدون علامات \"Tags\".",
|
||||
"components.Settings.RadarrModal.notagoptions": "لا يوجد علامات تعريف.",
|
||||
"components.Settings.RadarrModal.port": "المنفذ",
|
||||
"components.Settings.RadarrModal.released": "تم إصداره",
|
||||
"components.Settings.RadarrModal.minimumAvailability": "الحالة الأدنى للتوفر",
|
||||
"components.Settings.RadarrModal.rootfolder": "مجلد الحفظ",
|
||||
"components.Settings.RadarrModal.selectMinimumAvailability": "إختار الحالة الأدنى للتوفر",
|
||||
"components.Settings.RadarrModal.selectQualityProfile": "إختار ملف تعريف الجودة",
|
||||
"components.Settings.RadarrModal.selecttags": "إختار علامة \"Tags\"",
|
||||
"components.Settings.RadarrModal.server4k": "سيرفر 4K",
|
||||
"components.Settings.RadarrModal.selecttags": "إختار علامات التعريف",
|
||||
"components.Settings.RadarrModal.server4k": "سيرفر جودة الفور كي",
|
||||
"components.Settings.RadarrModal.servername": "اسم السيرفر",
|
||||
"components.Settings.RadarrModal.ssl": "استخدم SSL",
|
||||
"components.Settings.RadarrModal.validationProfileRequired": "يجب اختيار ملف تعريف للجودة",
|
||||
@@ -536,7 +536,7 @@
|
||||
"components.Settings.SettingsAbout.Releases.releasedataMissing": "بيانات الاصدار غير متوفرة حاليا.",
|
||||
"components.Settings.SettingsAbout.Releases.releases": "إصدارات",
|
||||
"components.Settings.RadarrModal.syncEnabled": "تفعيل البحث",
|
||||
"components.Settings.RadarrModal.tags": "علامات",
|
||||
"components.Settings.RadarrModal.tags": "علامات التعريف",
|
||||
"components.Settings.RadarrModal.testFirstQualityProfiles": "اختبار الاتصال لتحميل ملفات تعريف الجودة",
|
||||
"components.Settings.RadarrModal.testFirstRootFolders": "اختبار الاتصال لتحميل مجلدات الحفظ",
|
||||
"components.Settings.RadarrModal.testFirstTags": "اختبار الاتصال لتحميل العلامات",
|
||||
@@ -582,7 +582,7 @@
|
||||
"components.Settings.SettingsJobsCache.cacheksize": "حجم المفاتيح",
|
||||
"components.Settings.SettingsJobsCache.cachemisses": "مفقودات",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "السماح لمستخدمين بليكس بتسجيل الدخول دون الحاجة لدمجهم في أوفرسيرر",
|
||||
"components.Settings.SonarrModal.animeTags": "علامات الإنمي",
|
||||
"components.Settings.SonarrModal.animeTags": "علامات تعريف الإنمي",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "كل {jobScheduleMinutes, plural, one {دقيقة} other {{jobScheduleMinutes} دقائق}}",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "حدث خطأ ما اثناء حفظ المهمة.",
|
||||
"components.Settings.SettingsJobsCache.jobsDescription": "أوفرسيرر يعمل على جدولة بعض مهام الصيانة بشكل دوري ولكن بالإمكان عمل هذه المهام بشكل يدوي من القائمة بالإسفل. عمل اي مهمة بشكل يدوي لن يأثر على جدولتها التلقائية.",
|
||||
@@ -592,15 +592,15 @@
|
||||
"components.Settings.SettingsLogs.showall": "إظهار كل السجلات",
|
||||
"components.Settings.SettingsLogs.logs": "السجلات",
|
||||
"components.Settings.SonarrModal.baseUrl": "عنوان الارتباط URL BASE",
|
||||
"components.Settings.SonarrModal.create4ksonarr": "إضافة سيرفر سونار 4K جديد",
|
||||
"components.Settings.SonarrModal.create4ksonarr": "إضافة سيرفر سونارر لجودة الفور كي",
|
||||
"components.Settings.SonarrModal.loadinglanguageprofiles": "جاري تحميل ملفات تعريف اللغة…",
|
||||
"components.Settings.SonarrModal.loadingTags": "جاري تحميل العلامات…",
|
||||
"components.Settings.SonarrModal.loadingTags": "جاري تحميل علامات التعريف…",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "جاري تحميل ملفات تعريف الجودة…",
|
||||
"components.Settings.SettingsJobsCache.command": "أمر",
|
||||
"components.Settings.SettingsJobsCache.download-sync": "تحميل الدمج",
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "تحميل إعادة تعيين الدمج",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedule": "تعديل المهمة",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "معدل التكرار",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "مّعدل جديد",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "كل {jobScheduleHours, plural, one {ساعة} other {{jobScheduleHours} ساعات}}",
|
||||
"components.Settings.SettingsJobsCache.flushcache": "محو الملفات المؤقتة",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "تم تعديل المهمة بنجاح!",
|
||||
@@ -650,14 +650,14 @@
|
||||
"components.Settings.SonarrModal.createsonarr": "إضافة سيرفر سونار جديد",
|
||||
"components.Settings.SonarrModal.default4kserver": "سيرفر الفور كي الافتراضي",
|
||||
"components.Settings.SonarrModal.defaultserver": "السيرفر الافتراضي",
|
||||
"components.Settings.SonarrModal.edit4ksonarr": "تعديل سيرفر سونار 4K",
|
||||
"components.Settings.SonarrModal.edit4ksonarr": "تعديل سيرفر سونارر لجودة الفور كي",
|
||||
"components.Settings.SonarrModal.editsonarr": "تعديل سيرفر سونار",
|
||||
"components.Settings.SonarrModal.enableSearch": "تفعيل البحث التلقائي",
|
||||
"components.Settings.SonarrModal.externalUrl": "عنوان الارتباط الخارجي",
|
||||
"components.Settings.SonarrModal.hostname": "إسم المضيف أو رقم الأي بي",
|
||||
"components.Settings.SonarrModal.languageprofile": "ملف تعريف اللغة",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "جاري تحميل مجلدات الحفظ…",
|
||||
"components.Settings.SonarrModal.notagoptions": "بدون علامات.",
|
||||
"components.Settings.SonarrModal.notagoptions": "لا يوجد علامات تعريف.",
|
||||
"components.Settings.SonarrModal.port": "المنفذ",
|
||||
"components.Settings.SonarrModal.qualityprofile": "ملفات تعريف الجودة",
|
||||
"components.Settings.SonarrModal.rootfolder": "مجلد الحفظ",
|
||||
@@ -665,7 +665,7 @@
|
||||
"components.Settings.SonarrModal.selectLanguageProfile": "إختار ملف تعريف اللغة",
|
||||
"components.Settings.SonarrModal.selectQualityProfile": "إختار ملف تعريف الجودة",
|
||||
"components.Settings.SonarrModal.selectRootFolder": "إختار مجلد الحفظ",
|
||||
"components.Settings.SonarrModal.selecttags": "إختار العلامات",
|
||||
"components.Settings.SonarrModal.selecttags": "إختار علامات التعريف",
|
||||
"components.Settings.menuGeneralSettings": "عام",
|
||||
"components.Settings.manualscanDescription": "عادةً٫ سيتم عمل هذا الفحص مرة واحدة كل 24 ساعة. أوفرسيرر سيفحص المحتوى المضاف مؤخرا في مكتبة بليكس بشكل مكثف. إذا كانت هذه المرة الأولى التي تقوم بها بإعداد بليكس يستحسن أن تقوم بعمل فحص يدوي كامل لمرة واحدة!",
|
||||
"components.Settings.menuAbout": "حول",
|
||||
@@ -680,11 +680,11 @@
|
||||
"components.Settings.webhook": "ويب هوك Webhook",
|
||||
"components.Settings.webpush": "ويب بوش Web Push",
|
||||
"components.Setup.configureplex": "إعداد بليكس",
|
||||
"components.Settings.SonarrModal.server4k": "سيرفر الـ 4K",
|
||||
"components.Settings.SonarrModal.server4k": "سيرفر جودة الفور كي",
|
||||
"components.Settings.SonarrModal.servername": "إسم السيرفر",
|
||||
"components.Settings.SonarrModal.ssl": "إستخدم SSL",
|
||||
"components.Settings.SonarrModal.syncEnabled": "تفعيل الفحص",
|
||||
"components.Settings.SonarrModal.tags": "العلامات",
|
||||
"components.Settings.SonarrModal.tags": "علامات التعريف",
|
||||
"components.Settings.SonarrModal.testFirstLanguageProfiles": "إختبار الإتصال لتحميل ملفات تعريف اللغة",
|
||||
"components.Settings.SonarrModal.testFirstQualityProfiles": "إختبار الإتصال لتحميل ملفات تعريف الجودة",
|
||||
"components.Settings.SonarrModal.testFirstRootFolders": "إختبار الإتصال لتحميل مجلدات الحفظ",
|
||||
@@ -712,14 +712,14 @@
|
||||
"components.Settings.default": "الإفتراضي",
|
||||
"components.Settings.default4k": "فور كي الإفتراضي",
|
||||
"components.Settings.deleteserverconfirm": "هل أنت متأكد من حذف هذا السيرفر؟",
|
||||
"components.Settings.email": "البريد الإلكتروني",
|
||||
"components.Settings.email": "البريد الإلكترونيّ",
|
||||
"components.Settings.enablessl": "إستخدم SSL",
|
||||
"components.Settings.externalUrl": "عنوان الإرتباط الخارجي",
|
||||
"components.Settings.hostname": "عنوان المضيف أو رقم الأي بي",
|
||||
"components.Settings.is4k": "فور كي",
|
||||
"components.Settings.librariesRemaining": "المكتبات المتبقية: {count}",
|
||||
"components.Settings.manualscan": "فحص يدوي للمكتبة",
|
||||
"components.Settings.mediaTypeMovie": "فيلم",
|
||||
"components.Settings.mediaTypeMovie": "فِيلم",
|
||||
"components.Settings.mediaTypeSeries": "مسلسل",
|
||||
"components.Settings.menuJobs": "المهام والملفات المؤقتة",
|
||||
"components.Settings.menuLogs": "السجلات",
|
||||
@@ -777,8 +777,8 @@
|
||||
"components.UserList.users": "المستخدمين",
|
||||
"components.TvDetails.play4konplex": "تشغيل بجودة فور كي في بليكس",
|
||||
"components.TvDetails.seasons": "{seasonCount, plural, one {# موسم} other {# مواسم}}",
|
||||
"components.TvDetails.showtype": "نوع المسلسل",
|
||||
"components.UserList.accounttype": "النوع",
|
||||
"components.TvDetails.showtype": "نوُع المسلسل",
|
||||
"components.UserList.accounttype": "نوع العضويّة",
|
||||
"components.UserList.admin": "مسؤول",
|
||||
"components.UserList.displayName": "إسم العرض",
|
||||
"components.TvDetails.cast": "الطاقم",
|
||||
@@ -817,21 +817,21 @@
|
||||
"components.Setup.tip": "تلميحات",
|
||||
"components.Setup.welcome": "مرحبا بك في أوفرسيرر",
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.StatusBadge.status4k": "فور كي {status}",
|
||||
"components.TvDetails.TvCast.fullseriescast": "طاقم عمل المسلسل",
|
||||
"components.TvDetails.TvCrew.fullseriescrew": "طاقم فريق المسلسل",
|
||||
"components.TvDetails.anime": "إنمي",
|
||||
"components.TvDetails.episodeRuntime": "مدة عرض الحلقة",
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} دقيقة",
|
||||
"components.TvDetails.firstAirDate": "تاريخ العرض الأول",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {شبكة بث} other {شبكات بث}}",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {شبكة البث} other {شبكات البث}}",
|
||||
"components.TvDetails.nextAirDate": "تاريخ العرض التالي",
|
||||
"components.TvDetails.originallanguage": "اللغة الأصلية",
|
||||
"components.TvDetails.originaltitle": "العنوان الأصلي",
|
||||
"components.TvDetails.overview": "نظرة عامة",
|
||||
"components.TvDetails.overviewunavailable": "النظرة العامة غير متاحة.",
|
||||
"components.TvDetails.playonplex": "تشغيل في بليكس",
|
||||
"components.TvDetails.productioncountries": "الإنتاج {countryCount, plural, one {الدولة} other {الدول}}",
|
||||
"components.TvDetails.productioncountries": "إنتاج {countryCount, plural, one {الدولة} other {الدول}}",
|
||||
"components.TvDetails.recommendations": "التوصيات",
|
||||
"components.TvDetails.similar": "مسلسلات مشابهه",
|
||||
"components.TvDetails.viewfullcrew": "رؤية طاقم العمل",
|
||||
@@ -840,7 +840,7 @@
|
||||
"components.UserList.autogeneratepasswordTip": "أرسل كلمة السر المنشئة الى إيميل المستخدم",
|
||||
"components.UserList.bulkedit": "تعديل شامل ( للمحدد )",
|
||||
"components.UserList.create": "إنشاء",
|
||||
"components.UserList.created": "مُنضم",
|
||||
"components.UserList.created": "تاريخ الإنضمامْ",
|
||||
"components.UserList.createlocaluser": "إنشاء مستخدم محلي",
|
||||
"components.UserList.creating": "جاري الإنشاء…",
|
||||
"components.UserList.deleteconfirm": "هل أنت متأكد من حذف هذا المستخدم؟ كل الطلبات التي تم إنشاءها من خلاله سيتم حذفها بشكل نهائي.",
|
||||
@@ -854,18 +854,18 @@
|
||||
"components.UserList.password": "كلمة السر",
|
||||
"components.UserList.passwordinfodescription": "ضبط عنوان إرتباط التطبيق وتفعيل تنبيهات الإيميل للسماح بإنشاء كلمات سر تلقائية.",
|
||||
"components.UserList.plexuser": "مستخدم بليكس",
|
||||
"components.UserList.role": "الدور",
|
||||
"components.UserList.role": "صلاحيّات الحساب",
|
||||
"components.UserList.sortCreated": "تاريخ الإنضمام",
|
||||
"components.UserList.sortDisplayName": "إسم العرض",
|
||||
"components.UserList.sortRequests": "عدد الطلبات",
|
||||
"components.UserList.totalrequests": "الطلبات",
|
||||
"components.UserList.user": "المستخدم",
|
||||
"components.UserList.user": "مُستخدم/عضو",
|
||||
"components.UserList.usercreatedfailed": "حدث خطأ ما أثناء إنشاء المستخدم.",
|
||||
"components.UserList.usercreatedfailedexisting": "عنوان البريد الإلكتروني المزوّد مستعمل من قبل مستخدم أخر.",
|
||||
"components.UserList.usercreatedsuccess": "تم إنشاء المستخدم بنجاح!",
|
||||
"components.UserList.userdeleteerror": "حدث خطأ ما أثناء حذف المستخدم.",
|
||||
"components.UserList.userfail": "حدث خطأ ما أثناء حفظ صلاحيات المستخدم.",
|
||||
"components.UserList.userlist": "قائمة المستخدم",
|
||||
"components.UserList.userlist": "قائمة المستخدمين",
|
||||
"components.UserList.userssaved": "تم حفظ صلاحيات المستخدم بنجاح!",
|
||||
"components.UserList.validationEmail": "يجب عليك ذكر عنوان بريد إلكتروني صحيح",
|
||||
"components.UserList.validationpasswordminchars": "كلمة السر قصيرة جدا؛ الحد الأدنى 8 خانات",
|
||||
@@ -886,7 +886,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "المالك",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "مستخدم بليكس",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "المنطقة لـ إكتشف محتوى جديد",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "الدور",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "صلاحيّات الحساب",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "الحد الأقصى لطلبات المسلسلات",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "حدث خطأ ما أثناء حفظ الإعدادات.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "تم حفظ الإعدادات بنجاح!",
|
||||
@@ -894,7 +894,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "رقم عضوية المستخدم",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "ة <FindDiscordIdLink>رقم متعدد الخانات</FindDiscordIdLink> مرتبط بحساب المستخدم",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "فشل حفظ إعدادات تنبيه الديسكورد.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "البريد الإلكتروني",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "البريد الإلكترونيّ",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingsfailed": "فشل حفظ إعدادات تنبيه الإيميل.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "تم حفظ إعدادات تنبيه الإيميل بنجاح!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notifications": "التنبيهات",
|
||||
@@ -966,7 +966,7 @@
|
||||
"i18n.import": "إستيراد/جلب",
|
||||
"i18n.importing": "جاري الإستيراد…",
|
||||
"i18n.loading": "جاري التحميل…",
|
||||
"i18n.movie": "فيلم",
|
||||
"i18n.movie": "فيلِم",
|
||||
"i18n.movies": "أفلام",
|
||||
"i18n.next": "التالي",
|
||||
"i18n.noresults": "لا يوجد نتائج.",
|
||||
@@ -975,7 +975,7 @@
|
||||
"i18n.partiallyavailable": "متوفر بشكل جزئي",
|
||||
"i18n.pending": "معلّق",
|
||||
"i18n.previous": "السابق",
|
||||
"i18n.processing": "تنفيذ",
|
||||
"i18n.processing": "قيد التنفيذ",
|
||||
"i18n.request": "طلب",
|
||||
"i18n.request4k": "طلب بجودة فور كي",
|
||||
"i18n.requested": "تم طلبه",
|
||||
@@ -990,7 +990,7 @@
|
||||
"i18n.status": "الحالة",
|
||||
"i18n.test": "إختبار",
|
||||
"i18n.testing": "جاري الإختبار…",
|
||||
"i18n.tvshow": "مسلسلات",
|
||||
"i18n.tvshow": "مسلسلْ",
|
||||
"i18n.tvshows": "مسلسلات",
|
||||
"i18n.unavailable": "غير متاح",
|
||||
"i18n.usersettings": "إعدادات المستخدم",
|
||||
@@ -1001,5 +1001,236 @@
|
||||
"pages.pagenotfound": "الصفحة غير متاحة",
|
||||
"pages.returnHome": "عودة للقائمة الرئيسية",
|
||||
"pages.serviceunavailable": "الخدمة غير متاحة",
|
||||
"components.RequestBlock.languageprofile": "لغة ملف التعريف"
|
||||
"components.RequestBlock.languageprofile": "لغة ملف التعريف",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "عدد المقيّمين",
|
||||
"components.Discover.FilterSlideover.voteCount": "عدد المقيمين بين {minValue} و {maxValue}",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "قائمتك الخاصة برغبات بليكس",
|
||||
"components.Discover.resetfailed": "حدث خطأ ما خلال إعادة ضبط إعدادت (إكتشف) المخصّصة.",
|
||||
"components.Discover.resetwarning": "إعادة ضبط شرائط المحتوى لوضعها الإفتراضي. سيؤدي هذا أيضًا إلى حذف أي أشرطة محتوى مخصصة!",
|
||||
"components.Discover.stopediting": "إلغاء التعديل",
|
||||
"components.Discover.tmdbmoviekeyword": "كلمات بحث رئيسية للأفلام من (TMDB)",
|
||||
"components.Discover.studios": "إستديوهات الإنتاج",
|
||||
"components.Discover.updatesuccess": "تم تحديث إعدادات التخصيص لصفحة إكتشف.",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "طلبات الأفلام",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "طلبات المسلسلات",
|
||||
"components.MovieDetails.digitalrelease": "الإصدار الرقمي",
|
||||
"components.MovieDetails.reportissue": "قم بالإبلاغ عن مشكلة",
|
||||
"components.MovieDetails.rtaudiencescore": "تقييم الجمهور من موقع (Rotten Tomatoes)",
|
||||
"components.MovieDetails.rtcriticsscore": "تقييم النقاد من موقع Rotten Tomatoes",
|
||||
"components.RequestCard.declinerequest": "رفض الطلب",
|
||||
"components.RequestList.RequestItem.unknowntitle": "عنوان غير معروف",
|
||||
"components.RequestModal.requestseriestitle": "طلب مسلسل",
|
||||
"components.Selector.searchStudios": "بحث بالإستديوهات…",
|
||||
"components.Selector.showmore": "إظهار المزيد",
|
||||
"components.Selector.showless": "رؤية تفاصيل أقل",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "دمج توفر المحتويات",
|
||||
"components.Settings.SettingsMain.applicationTitle": "إسم التطبيق",
|
||||
"components.StatusBadge.managemedia": "إدارة {mediaType}",
|
||||
"i18n.restartRequired": "يتطلب إعادة التشغيل",
|
||||
"components.TvDetails.rtcriticsscore": "تقييم النقاد من موقع Rotten Tomatoes",
|
||||
"components.Settings.RadarrModal.tagRequests": "رموز تعريف الطلبات",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "بشكل تلقائي إضافة رمز تعريف يحتوي على معرّف المستخدم وإسم العرض الخاص بمقدّم الطلب",
|
||||
"components.Settings.SettingsMain.apikey": "مفتاح API",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "يجب تقديم عنوان للتطبيق",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "الرابط يجب لا أن ينتهي بعلامة سلاش",
|
||||
"components.Settings.SonarrModal.tagRequests": "علامات تعريف الطلبات",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "بشكل تلقائي إضافة علامة تعريف مع معرّف المستخدم وإسم العرض الخاص بمقدّم الطلب",
|
||||
"components.Settings.restartrequiredTooltip": "يجب إعادة تشغيل أوفرسيرر لتفعيل هذه التغييرات",
|
||||
"components.TitleCard.tvdbid": "معّرف موقع TVDB",
|
||||
"components.TvDetails.manageseries": "إدارة المسلسل",
|
||||
"components.TvDetails.tmdbuserscore": "تقييم المستخدمين من موقع TMDB",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "تقديم تلقائي لطلبات المسلسلات",
|
||||
"i18n.collection": "تجميعة",
|
||||
"components.RequestBlock.approve": "الموافقة على الطلب",
|
||||
"components.RequestBlock.requestedby": "تم الطلب من قبل",
|
||||
"components.Settings.SettingsMain.csrfProtection": "تفعيل حماية CSRF",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "ضبط الإعدادات العامة والإفتراضية بأوفرسيرر.",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} تم التحديث",
|
||||
"components.TitleCard.cleardata": "محو البيانات",
|
||||
"components.TitleCard.mediaerror": "{mediaType} غير موجود",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "قائمة الرغبات (watchlist) الخاصة ببليكس",
|
||||
"components.RequestList.RequestItem.tvdbid": "المعرّف الخاص بموقع TVDB",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "قائمة رغبات بليكس",
|
||||
"components.Settings.experimentalTooltip": "تفعيل هذا الخيار قد يؤدي الى نتائج غير متوقعة بأداء التطبيق",
|
||||
"components.Discover.tmdbtvstreamingservices": "شبكات بث المسلسلات من TMDB",
|
||||
"components.Discover.tmdbmoviestreamingservices": "شبكات بث الأفلام من (TMDB)",
|
||||
"components.Layout.UserDropdown.requests": "الطلبات",
|
||||
"components.MovieDetails.physicalrelease": "الإصدار الفعلي لأقراص البلوري",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "إستقبال تنبيهات عندما يتم تقديم طلبات بشكل تلقائي من رغبات بليكس.",
|
||||
"components.PermissionEdit.autorequestSeries": "طلبات تلقائية للمسلسلات",
|
||||
"components.PermissionEdit.viewrecentDescription": "إعطاء الإذن برؤية قائمة المُضاف مؤخراً.",
|
||||
"components.PermissionEdit.viewwatchlists": "رؤية قائمة رغبات بليكس",
|
||||
"components.RequestBlock.lastmodifiedby": "أخر تعديل بواسطة",
|
||||
"components.RequestBlock.requestdate": "تاريخ الطلب",
|
||||
"components.RequestCard.approverequest": "الموافقة على الطلب",
|
||||
"components.RequestCard.cancelrequest": "إلغاء الطلب",
|
||||
"components.RequestCard.editrequest": "تعديل الطلب",
|
||||
"components.RequestCard.tvdbid": "المعرّف الخاص بموقع TVDB",
|
||||
"components.Selector.searchKeywords": "بحث بالكلمات الرئيسية أو الدّالة…",
|
||||
"components.Selector.searchGenres": "إختيار نوع المحتوى…",
|
||||
"components.Selector.starttyping": "قم بالكتابة لبدء البحث.",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "المُعدّل الحالي",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "كل {jobScheduleSeconds, plural, one {ثانية} other {{jobScheduleSeconds} ثواني}}",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "تنظيف تخزين الصور المؤقت",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "تخزين الصور المؤقت",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "الصور والملتقطات المُخزّنة",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "المجموع الكُلي لحجم الملتقطات",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "دمج رغبات بليكس",
|
||||
"components.Settings.SettingsLogs.viewdetails": "رؤية التفاصيل",
|
||||
"components.Settings.SettingsMain.applicationurl": "رابط التطبيق",
|
||||
"components.Settings.SettingsMain.originallanguage": "اللغة الخاصة بصفحة إكتشف",
|
||||
"components.Settings.deleteServer": "حذف {serverType} سيرفر",
|
||||
"components.StatusBadge.openinarr": "فتح في {arr}",
|
||||
"components.StatusChecker.restartRequired": "مطلوب إعادة تشغيل السيرفر",
|
||||
"components.StatusBadge.playonplex": "تشغيل في بليكس",
|
||||
"components.StatusChecker.restartRequiredDescription": "الرجاء إعادة تشغيل السيرفر لتطبيق الإعدادات المُحدثة.",
|
||||
"components.TitleCard.tmdbid": "معرّف موقع TMDB",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# حلقة} other {# حلقات}}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "تقديم طلبات تلقائي للأفلام",
|
||||
"components.UserProfile.emptywatchlist": "المحتوى المضاف إلى <PlexWatchlistSupportLink>رغبات بليكس </PlexWatchlistSupportLink> سيظهر هنا.",
|
||||
"components.AirDateBadge.airsrelative": "تُعرضْ {relativeTime}",
|
||||
"components.PermissionEdit.autorequestMovies": "طلبات تلقائية للأفلام",
|
||||
"components.StatusChecker.reloadApp": "إعادة تحميل {applicationTitle}",
|
||||
"components.TvDetails.seasonstitle": "مواسم",
|
||||
"components.TvDetails.status4k": "فور كي {status}",
|
||||
"components.Discover.createnewslider": "إنشاء شريط محتوى جديد",
|
||||
"components.Discover.customizediscover": "تخصيص صفحة (إكتشف)",
|
||||
"components.Discover.moviegenres": "أنواع الأفلام",
|
||||
"components.Discover.networks": "شبكات البث",
|
||||
"components.Discover.resettodefault": "إعادة ضبط للوضع الإفتراضي",
|
||||
"components.Discover.resetsuccess": "تم إعادة ضبط إعدادات إكتشف المخصصة لوضعها الإفتراضي.",
|
||||
"components.Discover.tmdbstudio": "إستديوهات من TMDB",
|
||||
"components.Discover.tmdbnetwork": "شبكات البث من (TMDB)",
|
||||
"components.Discover.tmdbsearch": "بث في TMDB",
|
||||
"components.Discover.tvgenres": "أنواع المسلسلات",
|
||||
"components.Discover.updatefailed": "حدث خطأ ما أثناء تحديث الإعدادات المخصصة لصفحة إكتشف.",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: موسم {seasonNumber} حلقة {episodeNumber}",
|
||||
"components.TvDetails.reportissue": "الإبلاغ عن مشكلةْ",
|
||||
"components.TvDetails.rtaudiencescore": "تقييم الجمهور من موقع Rotten Tomatoes",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "السماح لأوفرسيرر بتسجيل عناوين IP خلف بروكسي",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "أفلام",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "الشعبية تصاعديا",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "الشعبية تنازلياً",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "العناوين بتصاعد أبجدي (بحسب الأحرف الإنجليزية)",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "العناوين بتنازل أبجدي (بحسب الأحرف الإنجليزية)",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "تقييم TMDB بترتيب تصاعدي",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "تم حذف شريط المحتوى.",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "تقييم TMDB بترتيب تنازلي",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "فشل حذف شريط المحتوى.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "التبديل للرؤية",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "حَذف",
|
||||
"components.Discover.DiscoverTv.discovertv": "مُسلسل",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "تاريخ البث بترتيب تصاعدي",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# الفلتر المفعل} other {# الفلاتر المفعلة}}",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "الشعبية بترتيب تصاعدي",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "الشعبية بترتيب تنازلي",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} مسلسل",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# الفلتر المفعل} other {# الفلاتر المفعلة}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "محو الفلاتر المفعلة",
|
||||
"components.Discover.FilterSlideover.filters": "فلاتر",
|
||||
"components.Discover.FilterSlideover.from": "من",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "اللغة الأصلية",
|
||||
"components.Discover.FilterSlideover.runtime": "مُدّة العرض",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "تقييم المستخدمين من (TMDB)",
|
||||
"components.Discover.FilterSlideover.to": "إلى",
|
||||
"components.Discover.FilterSlideover.studio": "إستديوهات",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "أُضيفَ مؤخراً",
|
||||
"components.Discover.tmdbmoviegenre": "نوع الأفلام من (TMDB)",
|
||||
"components.Discover.tmdbtvgenre": "أنواع المسلسلات من TMDB",
|
||||
"components.Discover.plexwatchlist": "قائمتك الخاصة برغبات بليكس",
|
||||
"components.MovieDetails.theatricalrelease": "الإصدار السينمائي (العرض بالسينما)",
|
||||
"components.MovieDetails.tmdbuserscore": "تقييم مستخدمين TMDB",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "تم تقديم الطلب بشكل تلقائي",
|
||||
"components.PermissionEdit.autorequest": "طلب تلقائي",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "إعطاء الإذن بتقديم طلبات تلقائية للمسلسلات بغير جودة الفور كي من خلال رغبات بليكس.",
|
||||
"components.PermissionEdit.viewrecent": "رؤية ماتم إضافته مؤخراً",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "إعطاء الإذن برؤية رغبات بليكس الخاصة بكل المستخدمين الأخرين.",
|
||||
"components.RequestBlock.decline": "رفض الطلب",
|
||||
"components.RequestBlock.edit": "تعديل الطلب",
|
||||
"components.RequestCard.tmdbid": "المعرّف الخاص بموقع TMDB",
|
||||
"components.RequestList.RequestItem.tmdbid": "المعرّف الخاص بموقع TMDB",
|
||||
"components.RequestModal.requestseries4ktitle": "طلب مسلسل بجودة فور كي",
|
||||
"components.Settings.SettingsMain.cacheImages": "تفعيل تخزين الملتقطات والصور",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "لا تقم بتفعيل هذا الخيار إلا إذا كنت تعيّ ماتقوم به!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "إعداد خارجي بمفتاح API بصلاحية القراءة فقط (هذا الخيار يتطلب إتصال مُشفر HTTP)",
|
||||
"components.Settings.SettingsMain.generalsettings": "إعدادات عامة",
|
||||
"components.Settings.SettingsMain.locale": "لغة العرض",
|
||||
"components.Settings.SettingsMain.region": "المنطقة/الإقليم الخاص بمحتوى إكتشف",
|
||||
"components.Settings.SettingsMain.regionTip": "فلترة المحتوى بحسب توفّره بالإقليم/المنطقة",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "تم حفظ الإعدادات!",
|
||||
"components.Settings.SettingsMain.trustProxy": "تفعيل دعم البروكسي",
|
||||
"components.StatusChecker.appUpdatedDescription": "الرجاء النقر على الزر بالإسفل لإعادة تحميل الصفحة.",
|
||||
"components.AirDateBadge.airedrelative": "عُرضت {relativeTime}",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# الفلتر المُفعّل } other {# الفلاتر المفعلة}}",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "تاريخ الإصدار تصاعدياً",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "تاريخ الإصدار تنازلياً",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "تاريخ البث بترتيب تنازلي",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "العنوانين بترتيب ابجدي تصاعدي",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "العناوين بترتيب أبجدي تنازلي",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "تقييم TMDB بترتيب تصاعدي",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "تقييم TMDB بترتيب تنازلي",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "تاريخ البث",
|
||||
"components.Discover.FilterSlideover.keywords": "كلمات رئيسية أو دالّة",
|
||||
"components.Discover.FilterSlideover.ratingText": "التقييم بين {minValue} و {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "تاريخ الإصدار",
|
||||
"components.MovieDetails.managemovie": "إدارة الفيلم",
|
||||
"components.Layout.Sidebar.browsemovies": "أفلام",
|
||||
"components.Layout.Sidebar.browsetv": "مسلسلاتْ",
|
||||
"components.PermissionEdit.autorequestDescription": "إعطاء الإذن بتقديم طلبات تلقائية للمحتويات (بغير جودة الفور كي) من خلال رغبات بليكس.",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "إعطاء الإذن بتقديم طلبات أفلام تلقائية بغير جودة الفور كي من خلال رغبات بليكس.",
|
||||
"components.RequestCard.unknowntitle": "عنوان غير معروف",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "لم يتم العثور على عنوان مطابق لهذا المسلسل.",
|
||||
"components.RequestModal.requestcollection4ktitle": "طلب تجميعة بجودة فور كي (تجمعية هي الأفلام بأجزاء متعددة أو مرتبطة)",
|
||||
"components.RequestModal.requestmovie4ktitle": "طلب فيلم بجودة فور كي",
|
||||
"components.RequestModal.requestmovietitle": "طلب فيلم",
|
||||
"components.Selector.nooptions": "لا يوجد نتائج.",
|
||||
"components.RequestModal.requestcollectiontitle": "طلب تجميعة (التجميعة هي حزمة أفلام مرتبطة ببعضها)",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "عند التفعيل بالإعدادات، أوفرسيرر سيقوم بحفظ الملتقطات والصور. يتم تخزين هذه الملتقطات في مجلد الضبط الخاص بك. تستطيع إيجاد هذه الملفات في <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "الملتقطات من المصادر الخارجية (تتطلب حجم هائل متوفر في مساحة التخزين الخاصة بجهازك)",
|
||||
"components.Settings.SettingsMain.general": "عام",
|
||||
"components.Settings.SettingsMain.hideAvailable": "إخفاء المحتوى المتوفّر",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "فلترة المحتوى باللغة الأصلية",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "السماح بالطلبات الجزئية للمسلسلات (بمعنى مسلسل لم ينتهي عرض الموسم بالكامل)",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "حدث خطأ ما أثناء إنشاء مفتاح API جديد.",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "حدث خطأ ما أثناء حفظ الإعدادات.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "تم إنشاء مفتاح API جديد بنجاح!",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "يجب تقديم رابط صحيح",
|
||||
"components.Settings.advancedTooltip": "ضبط هذا الإعداد بشكل غير صحيح قد يؤدي الى عدم عمل بعض الخصائص",
|
||||
"components.StatusBadge.seasonepisodenumber": "م{seasonNumber}ح{episodeNumber}",
|
||||
"components.TvDetails.Season.somethingwentwrong": "حدث خطأ ما أثناء محاولة جلب بيانات الموسم.",
|
||||
"components.TvDetails.Season.noepisodes": "قائمة الحلقات غير متوفرة.",
|
||||
"components.TvDetails.seasonnumber": "موسم {seasonNumber}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "بشكل تلقائي تقديم طلبات الأفلام <PlexWatchlistSupportLink>من رغبات بليكس </PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "تقديم الطلبات بشكل تلقائي للمسلسلات<PlexWatchlistSupportLink>من رغبات بليكس </PlexWatchlistSupportLink>",
|
||||
"components.Discover.FilterSlideover.genres": "أنواع المحتوى",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} مدة العرض بالدقائق",
|
||||
"components.RequestBlock.delete": "حذف الطلب",
|
||||
"components.UserProfile.plexwatchlist": "رغبات بليكس",
|
||||
"components.Discover.emptywatchlist": "المحتوى المُضاف إلى<PlexWatchlistSupportLink>رغبات بليكس </PlexWatchlistSupportLink> سيظهر هنا.",
|
||||
"components.Discover.tmdbtvkeyword": "كلمات بحث رئيسية عن المسلسلات من TMDB",
|
||||
"components.Discover.FilterSlideover.streamingservices": "شبكات البثّ",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "المحتوى المُضاف إلى <PlexWatchlistSupportLink>رغبات بليكس </PlexWatchlistSupportLink> سيظهر هنا.",
|
||||
"components.Discover.CreateSlider.addcustomslider": "إنشاء شريط محتوى مخصّص",
|
||||
"components.Discover.CreateSlider.addSlider": "إضافة شريط محتوى",
|
||||
"components.Discover.CreateSlider.addfail": "فشل إنشاء شريط محتوى جديد.",
|
||||
"components.Discover.CreateSlider.editSlider": "تعديل شريط المحتوى",
|
||||
"components.Discover.CreateSlider.editfail": "فشل تعديل شريط المحتوى.",
|
||||
"components.Discover.CreateSlider.editsuccess": "تم تعديل الشريط وتم حفظ إعدادات التخصيص لصفحة (إكتشف).",
|
||||
"components.Discover.CreateSlider.addsuccess": "تم إنشاء شريط جديد و تم حفظ إعدادات التخصيص لصفحة (إكتشف).",
|
||||
"components.Discover.CreateSlider.needresults": "يجب أن يكون لديك نتيجة واحدة على الأقل.",
|
||||
"components.Discover.CreateSlider.nooptions": "لا يوجد نتائج.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "قم بتوفير معرّف نوع المحتوى من (TMDB)",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "قم بتوفير معرّف شبكة البث من (TMDB)",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "قم بتوفير بحث إستعلام",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "قم بتوفير معرّف الإستديو من (TMDB)",
|
||||
"components.Discover.CreateSlider.searchGenres": "بحث بنوع المحتوى…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "بحث بكلمات رئيسية…",
|
||||
"components.Discover.CreateSlider.searchStudios": "بحث عن الإستديوهات…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "إسم شريط المحتوى",
|
||||
"components.Discover.CreateSlider.starttyping": "قم بالكتابة لبدء البحث.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "يجب تقديم بيانات.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "يجب تقديم عنوان.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} الأفلام",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "قم بتوفير معرّف كلمات بحث رئيسية من (TMDB)",
|
||||
"components.MovieDetails.imdbuserscore": "تقييم مستخدمين IMDB"
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
"components.RequestModal.numberofepisodes": "# d'episodis",
|
||||
"components.RequestModal.extras": "Extres",
|
||||
"components.RequestModal.errorediting": "S'ha produït un error en editar la sol·licitud.",
|
||||
"components.RequestModal.cancel": "Cancel·la la petició",
|
||||
"components.RequestModal.cancel": "Cancel·la la sol·licitud",
|
||||
"components.RequestModal.autoapproval": "Aprovació automàtica",
|
||||
"components.RequestModal.alreadyrequested": "Ja s'ha sol·licitat",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "No s'ha pogut trobar coincidència d'aquesta serie. Seleccioneu l'emparellament correcte de la llista següent.",
|
||||
@@ -108,22 +108,22 @@
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Concedeix l’aprovació automàtica a totes les sol·licituds de contingut 4K.",
|
||||
"components.PermissionEdit.autoapprove4k": "Aprovació automàtica 4K",
|
||||
"components.PermissionEdit.autoapprove": "Aprovació automàtica",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Continguts rebutjats",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Sol·licitud rebutjada",
|
||||
"components.NotificationTypeSelector.mediarequested": "Sol·licitud pendent d'aprovació",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Envieu notificacions quan els usuaris envien sol·licituds de suports nous que s’aprovin automàticament.",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Dona permís per modificar opcions avançades en les sol·licituds.",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Envieu notificacions quan els usuaris envien sol·licituds de contingut nous que s’aprovin automàticament.",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Dona permís per modificar opcions avançades en les sol·licituds de contingut.",
|
||||
"components.PermissionEdit.advancedrequest": "Sol·licituds avançades",
|
||||
"components.PermissionEdit.adminDescription": "Accés complet d'administrador. Ignora totes les altres comprovacions de permisos.",
|
||||
"components.PermissionEdit.admin": "Administrador",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Envia notificacions quan es demana contingut que requereix aprovació.",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Envia notificacions quan el mitjà sol·licitat no s’afegeix a Radarr o Sonarr.",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Envia notificacions quan es sol·licita contingut que requereix aprovació.",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Envia notificacions quan el contingut sol·licitat no s’afegeix a Radarr o Sonarr.",
|
||||
"components.NotificationTypeSelector.mediafailed": "S'ha produït un error en el processament de la sol·licitud",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Envia notificacions quan es rebutja una sol·licitud.",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Envia notificacions quan el contingut sol·licitat estigui disponible.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Continguts disponibles",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Envia notificacions quan el contingut sol·licitat s’aprova manualment.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Continguts aprovats",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Continguts aprovats automàticament",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Envia notificacions quan la sol·licitud estigui disponible.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Sol·licitud disponible",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Envia notificacions quan la sol·licitud s’aprova manualment.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Sol·licitud aprovada",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Sol·licituds aprovades automàticament",
|
||||
"components.MovieDetails.watchtrailer": "Mireu el tràiler",
|
||||
"components.MovieDetails.viewfullcrew": "Veure equip complet",
|
||||
"components.MovieDetails.similar": "Títols similars",
|
||||
@@ -191,7 +191,7 @@
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Gèneres de Sèries",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Gèneres de Sèries",
|
||||
"components.Discover.StudioSlider.studios": "Estudis",
|
||||
"components.Discover.NetworkSlider.networks": "Plataforma",
|
||||
"components.Discover.NetworkSlider.networks": "Emissors",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Gèneres de Pel·lícules",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Gèneres de Pel·lícules",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "Sèries en {language}",
|
||||
@@ -368,11 +368,11 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "S'ha produït un error en desar la configuració.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Límit de sol·licituds de sèries",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtra el contingut per disponibilitat regional",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Regió per a la secció \"Descobriu\"",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Regió de Descobriu",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Usuari de Plex",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Propietari",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtra el contingut per l'idioma original",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Idioma per a la secció \"Descobriu\"",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Idioma per a la secció «Descobriu»",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Límit de sol·licituds de pel·lícules",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Usuari local",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Configuració general",
|
||||
@@ -397,7 +397,7 @@
|
||||
"components.TvDetails.originaltitle": "Títol original",
|
||||
"components.TvDetails.originallanguage": "Idioma original",
|
||||
"components.TvDetails.nextAirDate": "Pròxima data d'emissió",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Plataforma} other {Plataformes}}",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Emissor} other {Emissors}}",
|
||||
"components.TvDetails.firstAirDate": "Primera data d'emissió",
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} minuts",
|
||||
"components.TvDetails.episodeRuntime": "Duració de l'episodi",
|
||||
@@ -457,7 +457,7 @@
|
||||
"components.Settings.partialRequestsEnabled": "Permet sol·licituds parcials de Sèries",
|
||||
"components.Settings.originallanguageTip": "Filtra el contingut per l'idioma original",
|
||||
"components.Settings.originallanguage": "Idioma per a la secció \"Descobriu\"",
|
||||
"components.Settings.manualscanDescription": "Normalment, només s’executarà una vegada cada 24 hores. Overseerr comprovarà de forma més agressiva el contingut afegit recentment del seu servidor Plex. Si és la primera vegada que configureu Plex, es recomana fer una exploració manual completa de la biblioteca!",
|
||||
"components.Settings.manualscanDescription": "Normalment, només s’executarà una vegada cada 24 hores. Jellyseerr comprovarà de forma més agressiva el contingut afegit recentment del seu servidor Plex. Si és la primera vegada que configureu Plex, es recomana fer una exploració manual completa de la biblioteca!",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Exploració d'elements de Plex afegits recentment",
|
||||
"components.Settings.notrunning": "No s'està executant",
|
||||
"components.Settings.notificationsettings": "Configuració de les notificacions",
|
||||
@@ -551,7 +551,7 @@
|
||||
"components.Settings.SettingsJobsCache.runnow": "Executa-ho ara",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Exploració completa de la biblioteca plex",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Exploració completa de la biblioteca Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.jelly-recently-added-scan": "Exploració d'elements de Jellyfin afegits recentment",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Exploració d'elements de Jellyfin afegits recentment",
|
||||
"components.Settings.SettingsJobsCache.nextexecution": "Pròxima execució",
|
||||
"components.Settings.SettingsJobsCache.jobstarted": "S'ha iniciat {jobname}.",
|
||||
"components.Settings.SettingsJobsCache.jobcancelled": "{jobname} s'ha cancel·lat.",
|
||||
@@ -563,7 +563,7 @@
|
||||
"components.Settings.SettingsJobsCache.cachekeys": "Claus totals",
|
||||
"components.Settings.SettingsJobsCache.cacheflushed": "La memòria cau de {cachename} s'ha buidat.",
|
||||
"components.Settings.SettingsAbout.totalrequests": "Sol·licituds totals",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Total de suports multimèdia",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Total de contingut",
|
||||
"components.Settings.SettingsAbout.preferredmethod": "Preferit",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Debats de GitHub",
|
||||
"components.Settings.SettingsAbout.Releases.viewongithub": "Visualitza a GitHub",
|
||||
@@ -775,7 +775,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSending": "S'està enviant la notificació de prova de Pushbullet…",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestFailed": "No s'ha pogut enviar la notificació de prova Pushbullet.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "URL del Webhook",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Heu de proporcionar un URL vàlid",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Has de proporcionar un URL vàlid",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSuccess": "S'ha enviat la notificació de prova de LunaSea!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSending": "S'està enviant la notificació de prova de LunaSea…",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "La configuració de les notificacions de LunaSea s'ha desat correctament!",
|
||||
@@ -821,12 +821,12 @@
|
||||
"components.QuotaSelector.movies": "{count, plural, one {pel·lícula} other {pel·lícules}}",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{pel·lícules} per {quotaDays} {dies}</quotaUnits>",
|
||||
"components.QuotaSelector.days": "{count, plural, one {dia} other {dies}}",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Rep notificacions quan altres usuaris envien sol·licituds de mitjans nous que requereixen aprovació.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Rep notificacions quan no es puguin afegir sol·licituds a Radarr o Sonarr.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Rep notificacions quan es rebutgin les teves sol·licituds.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Rep notificacions quan les teves sol·licituds multimèdia estiguin disponibles.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Rep notificacions quan s'aprovin les teves sol·licituds de suports.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Rep notificacions quan altres usuaris envien sol·licituds de mitjans nous que s’aprovin automàticament.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Rep notificacions quan altres usuaris envien sol·licituds de contingut noves que requereixen aprovació.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Rep notificacions quan no es puguin afegir sol·licituds de contingut a Radarr o Sonarr.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Rep notificacions quan es rebutgin les teves sol·licituds de contingut.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Rep notificacions quan les teves sol·licituds de contingut estiguin disponibles.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Rep notificacions quan s'aprovin les teves sol·licituds de contingut.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Rep notificacions quan altres usuaris envien sol·licituds de contingut noves que s’aprovin automàticament.",
|
||||
"components.MovieDetails.showmore": "Mostra més",
|
||||
"components.MovieDetails.showless": "Mostra menys",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Idioma de visualització",
|
||||
@@ -851,7 +851,7 @@
|
||||
"components.IssueDetails.deleteissueconfirm": "Esteu segur que voleu suprimir aquesta incidència?",
|
||||
"components.IssueDetails.episode": "Episodi {episodeNumber}",
|
||||
"components.IssueDetails.lastupdated": "Última actualització",
|
||||
"components.IssueDetails.openinarr": "Oberta en {arr}",
|
||||
"components.IssueDetails.openinarr": "Obre a {arr}",
|
||||
"components.IssueDetails.toasteditdescriptionfailed": "S'ha produït un error en editar la descripció de la incidència.",
|
||||
"components.IssueDetails.toastissuedeletefailed": "S'ha produït un error en suprimir la incidència.",
|
||||
"components.IssueDetails.unknownissuetype": "Desconegut",
|
||||
@@ -980,8 +980,8 @@
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "Heu de proporcionar un testimoni d'aplicació",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "El <FindDiscordIdLink>número d'ID de diversos dígits</FindDiscordIdLink> associat al vostre compte d'usuari de Discord",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Avançat",
|
||||
"components.ManageSlideOver.manageModalMedia": "Mitjans",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "Mitjans 4K",
|
||||
"components.ManageSlideOver.manageModalMedia": "Contingut",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "Contingut 4K",
|
||||
"components.ManageSlideOver.alltime": "Tots els temps",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Marqueu totes les temporades com a disponibles en 4K",
|
||||
"components.ManageSlideOver.markallseasonsavailable": "Marqueu totes les temporades com a disponibles",
|
||||
@@ -1003,7 +1003,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "Etiqueta de canal",
|
||||
"components.Settings.externalUrl": "URL extern",
|
||||
"components.Settings.tautulliSettings": "Configuració de Tautulli",
|
||||
"components.Settings.tautulliSettingsDescription": "Opcionalment podeu configurar del vostre servidor Tautulli. Jellyseerr recupera les dades de l'historial de visualitzacions dels vostres mitjans Plex de Tautulli.",
|
||||
"components.Settings.tautulliSettingsDescription": "Opcionalment podeu configurar del vostre servidor Tautulli. Jellyseerr recupera les dades de l'historial de visualitzacions dels vostres continguts Plex de Tautulli.",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Alguna cosa ha fallat en desar la configuració de Tautulli.",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "La configuració de Tautulli s'ha desat correctament!",
|
||||
"components.Settings.urlBase": "URL base",
|
||||
@@ -1022,7 +1022,7 @@
|
||||
"components.MovieDetails.digitalrelease": "Llançament digital",
|
||||
"components.MovieDetails.physicalrelease": "Alliberament físic",
|
||||
"components.PermissionEdit.viewrecent": "Veure afegits recentment",
|
||||
"components.PermissionEdit.viewrecentDescription": "Concediu permís per veure la llista de mitjans afegits recentment.",
|
||||
"components.PermissionEdit.viewrecentDescription": "Concediu permís per veure la llista de contingut afegits recentment.",
|
||||
"components.Settings.deleteServer": "Suprimeix el servidor {serverType}",
|
||||
"components.StatusChecker.reloadApp": "Torna a carregar {applicationTitle}",
|
||||
"components.TitleCard.cleardata": "Esborra les dades",
|
||||
@@ -1049,7 +1049,7 @@
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Llista de seguiment de Plex",
|
||||
"components.MovieDetails.managemovie": "Gestiona la pel·lícula",
|
||||
"components.MovieDetails.theatricalrelease": "Estrena en cines",
|
||||
"components.PermissionEdit.autorequestDescription": "Concediu permís per enviar automàticament sol·licituds de mitjans que no siguin 4K mitjançant llistes de seguiment de Plex.",
|
||||
"components.PermissionEdit.autorequestDescription": "Concediu permís per enviar automàticament sol·licituds de contingut que no siguin 4K mitjançant llistes de seguiment de Plex.",
|
||||
"components.PermissionEdit.viewwatchlists": "Veure les llistes de seguiment de Plex",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Concediu permís per veure les llistes de seguiment de Plex d'altres usuaris.",
|
||||
"components.RequestCard.tvdbid": "Identificador de TheTVDB",
|
||||
@@ -1062,7 +1062,7 @@
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Sol·licituds de pel·lícules",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Sol·licituds de sèries",
|
||||
"components.MovieDetails.reportissue": "Informa d'un problema",
|
||||
"components.StatusChecker.appUpdatedDescription": "Feu clic al botó següent per tornar a carregar l'aplicació.",
|
||||
"components.StatusChecker.appUpdatedDescription": "Fes clic al botó següent per a tornar a carregar l'aplicació.",
|
||||
"components.StatusChecker.appUpdated": "Actualitzat {applicationTitle}",
|
||||
"components.StatusChecker.restartRequiredDescription": "Si us plau, reinicieu el servidor per aplicar la configuració actualitzada.",
|
||||
"components.AirDateBadge.airsrelative": "Emissió {relativeTime}",
|
||||
@@ -1095,10 +1095,10 @@
|
||||
"components.TvDetails.tmdbuserscore": "Puntuació d'usuaris de TMDB",
|
||||
"components.TvDetails.status4k": "4K {status}",
|
||||
"components.StatusChecker.restartRequired": "Cal reiniciar el servidor",
|
||||
"components.Discover.emptywatchlist": "Els mitjans afegits a la vostra <PlexWatchlistSupportLink>Llista de seguiment de Plex</PlexWatchlistSupportLink> apareixeran aquí.",
|
||||
"components.Discover.emptywatchlist": "Els continguts afegits a la vostra <PlexWatchlistSupportLink>Llista de seguiment de Plex</PlexWatchlistSupportLink> apareixeran aquí.",
|
||||
"components.RequestModal.requestcollection4ktitle": "Sol·licitud de col·lecció en 4K",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "No hem pogut trobar cap coincidència per a aquesta sèrie.",
|
||||
"components.UserProfile.emptywatchlist": "Els mitjans afegits a la vostra <PlexWatchlistSupportLink>Llista de seguiment de Plex</PlexWatchlistSupportLink> apareixeran aquí.",
|
||||
"components.UserProfile.emptywatchlist": "Els continguts afegits a la vostra <PlexWatchlistSupportLink>Llista de seguiment de Plex</PlexWatchlistSupportLink> apareixeran aquí.",
|
||||
"components.RequestModal.requestseries4ktitle": "Sol·licitud de sèries en 4K",
|
||||
"components.RequestModal.requestcollectiontitle": "Sol·licitud de col·lecció",
|
||||
"components.RequestModal.requestmovie4ktitle": "Sol·licitud de pel·lícula en 4K",
|
||||
@@ -1110,5 +1110,135 @@
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Memòria cau d'imatges",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Imatges a la memòria cau",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Mida total de la memòria cau",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Quan està activat a la configuració, Overseerr enviarà les imatges a la memòria cau de fonts externes preconfigurades. Les imatges emmagatzemades a la memòria cau es desen a la vostra carpeta de configuració. Podeu trobar els fitxers a <code>{appDataPath}/cache/images</code>."
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Quan està activat a la configuració, Jellyseerr enviarà les imatges a la memòria cau de fonts externes preconfigurades. Les imatges emmagatzemades a la memòria cau es desen a la vostra carpeta de configuració. Podeu trobar els fitxers a <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "Pel·lícules {keywordTitle}",
|
||||
"components.Discover.tmdbtvgenre": "Gènere de la sèrie TMDB",
|
||||
"components.Discover.tmdbtvkeyword": "Paraula clau de la sèrie TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Proporciona un ID de paraula clau de TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Proporciona una consulta de cerca",
|
||||
"components.Discover.CreateSlider.searchStudios": "Cercar per estudi…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Nom del control lliscant",
|
||||
"components.Discover.CreateSlider.starttyping": "Començar a escriure per a cercar.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Commutar la visibilitat",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Suprimir",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "La teva llista Plex",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Afegit recentment",
|
||||
"components.Discover.CreateSlider.addSlider": "Afegir un control lliscant",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Crear un control lliscant personalitzat",
|
||||
"components.Discover.CreateSlider.addfail": "No s'ha pogut crear un control lliscant nou.",
|
||||
"components.Discover.CreateSlider.editSlider": "Editar el control lliscant",
|
||||
"components.Discover.CreateSlider.editfail": "No s'ha pogut editar el control lliscant.",
|
||||
"components.Discover.tmdbmoviegenre": "Gènere de pel·lícula TMDB",
|
||||
"components.Discover.tmdbsearch": "Cerca TMDB",
|
||||
"components.Discover.tmdbstudio": "Estudi TMDB",
|
||||
"components.Discover.CreateSlider.editsuccess": "S'ha editat el control lliscant i s'ha desat la configuració de la pàgina de Descobriu.",
|
||||
"components.Discover.CreateSlider.needresults": "Cal tenir almenys 1 resultat.",
|
||||
"components.Discover.CreateSlider.nooptions": "Sense resultats.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Proporciona un ID de categoria TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Proporciona l'ID d'emissor TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Proporciona l'ID d'estudi TMDB",
|
||||
"components.Discover.CreateSlider.searchGenres": "Cercar per gènere…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Cercar per paraules clau…",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "No s'ha pogut suprimir el control lliscant.",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "El contingut afegit a la teva <PlexWatchlistSupportLink>llista de visualització de Plex</PlexWatchlistSupportLink> apareixerà aquí.",
|
||||
"components.Discover.CreateSlider.addsuccess": "S'ha creat un control lliscant nou i s'ha desat la configuració de personalització de Descobriu.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Has de proporcionar un valor de dades.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Has de proporcionar un títol.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Control lliscant suprimit amb èxit.",
|
||||
"components.Discover.createnewslider": "Crear un control lliscant nou",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Pel·lícules",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Popularitat ascendent",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# filtre actiu} other {# filtres actius}}",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Popularitat descendent",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Data de llançament ascendent",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Data de llançament descendent",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Títol (A-Z) ascendent",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Títol (Z-A) descendent",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "Puntuació TMDB ascendent",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "Puntuació TMDB descendent",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# filtre actiu} other {# filtres actius}}",
|
||||
"components.Discover.DiscoverTv.discovertv": "Sèries",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Data de primera d'emissió ascendent",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Data de primera d'emissió descendent",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Popularitat ascendent",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Popularitat descendent",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "Puntuació TMDB ascendent",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "Puntuació TMDB descendent",
|
||||
"components.Discover.networks": "Emissors",
|
||||
"components.Discover.resetwarning": "Restablir tots els controls lliscants al valor predeterminat. Això també suprimirà els controls lliscants personalitzats!",
|
||||
"components.Discover.tmdbmoviekeyword": "Paraula clau de pel·lícula TMDB",
|
||||
"components.Discover.tmdbnetwork": "Emissors TMDB",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "Puntuació d'usuaris TMDB",
|
||||
"components.Discover.tvgenres": "Gèneres de sèries",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "Sèries {keywordTitle}",
|
||||
"components.Discover.moviegenres": "Gèneres de pel·lícules",
|
||||
"components.Discover.resetsuccess": "Restablerta la configuració personalitzada de Descobriu.",
|
||||
"components.Discover.studios": "Estudis",
|
||||
"components.Discover.stopediting": "Parar l'edició",
|
||||
"components.Discover.updatefailed": "S'ha produït un error en actualitzar la configuració de personalitzada de Descobriu.",
|
||||
"components.Discover.updatesuccess": "S'ha actualitzat la configuració de personalitzada de Descobriu.",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Data de publicació",
|
||||
"components.Discover.FilterSlideover.runtime": "Temps d'execució",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Títol desconegut",
|
||||
"components.RequestCard.unknowntitle": "Títol desconegut",
|
||||
"components.Selector.nooptions": "Sense resultats.",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Títol (A-Z) ascendent",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Títol (Z-A) descendent",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# filtre actiu} other {# filtres actius}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Netejar els filtres actius",
|
||||
"components.Discover.FilterSlideover.filters": "Filtres",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Data primera d'emissió",
|
||||
"components.Discover.FilterSlideover.from": "Des de",
|
||||
"components.Discover.FilterSlideover.genres": "Gèneres",
|
||||
"components.Discover.FilterSlideover.keywords": "Paraules clau",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Idioma original",
|
||||
"components.Discover.FilterSlideover.ratingText": "Puntuació entre {minValue} i {maxValue}",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} durada en minuts",
|
||||
"components.Discover.resetfailed": "S'ha produït un error en restablir la configuració de personalització de Descobriu.",
|
||||
"components.Discover.customizediscover": "Personalitza Descobriu",
|
||||
"components.Discover.resettodefault": "Restablir al valor predeterminat",
|
||||
"components.Layout.Sidebar.browsemovies": "Pel·lícules",
|
||||
"components.Layout.Sidebar.browsetv": "Sèries",
|
||||
"components.Selector.searchGenres": "Seleccionar gèneres…",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Temporada {temporadaNumber} Episodi {episodeNumber}",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Serveis en streaming",
|
||||
"components.Discover.FilterSlideover.studio": "Estudi",
|
||||
"components.Discover.FilterSlideover.to": "A",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Habilitar la protecció CSRF",
|
||||
"components.Settings.SettingsMain.general": "General",
|
||||
"components.Settings.SettingsMain.generalsettings": "Configuració general",
|
||||
"components.Settings.SettingsMain.cacheImages": "Activar la memòria cau d'imatges",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NO activis aquesta configuració tret que entenguis el que estàs fent!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Establir l'accés a l'API extern a només de lectura (requereix HTTPS)",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Configuració global i predeterminada per a Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Amagar el contingut disponible",
|
||||
"components.Settings.SettingsMain.apikey": "Clau API",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL de l'aplicació",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Memòria cau d'imatges d'origen extern (requereix una quantitat important d'espai en disc)",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Cada {jobScheduleSeconds, plural, one {segon} other {{jobScheduleSeconds} segons}}",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Títol de l'aplicació",
|
||||
"components.Selector.searchKeywords": "Cercar paraules clau…",
|
||||
"components.Selector.starttyping": "Començar a escriure per a cercar.",
|
||||
"components.Selector.searchStudios": "Cercar estudis…",
|
||||
"components.Selector.showless": "Mostrar menys",
|
||||
"components.Selector.showmore": "Mostrar més",
|
||||
"components.Settings.SettingsMain.locale": "Idioma de visualització",
|
||||
"components.Settings.SettingsMain.originallanguage": "Idioma a Descobriu",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtrar el contingut per idioma original",
|
||||
"components.Settings.SettingsMain.regionTip": "Filtrar continguts per disponibilitat regional",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "S'ha produït un error en generar una clau API nova.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "La clau API s'ha generat correctament!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "S'ha produït un error en desar la configuració.",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Permet sol·licituds parcials de sèries",
|
||||
"components.Settings.SettingsMain.region": "Regió de Descobriu",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "La configuració s'ha desat correctament!",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "L'URL no ha d'acabar amb una barra inclinada final",
|
||||
"components.Settings.SettingsMain.trustProxy": "Habilitar la compatibilitat amb proxy",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permetre a Overserr registrar correctament la IP del client darrere d'un proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Has de proporcionar un títol d'aplicació",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Has de proporcionar un URL vàlid",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Sincronització de disponibilitat de contingut",
|
||||
"components.Discover.tmdbmoviestreamingservices": "Serveis de transmissió de pel·lícules TMDB",
|
||||
"components.Discover.tmdbtvstreamingservices": "Serveis de transmissió de TV TMDB"
|
||||
}
|
||||
|
||||
@@ -39,7 +39,7 @@
|
||||
"components.Settings.SettingsAbout.totalrequests": "Celkový počet žádostí",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Celkový počet médií",
|
||||
"components.Settings.SettingsAbout.timezone": "Časové pásmo",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Podpořte Overseerr",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Podpořte Jellyseerr",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "O Jellyseerr",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Diskuze na GitHubu",
|
||||
"components.Settings.SettingsAbout.Releases.viewchangelog": "Zobrazit seznam změn",
|
||||
@@ -234,7 +234,7 @@
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Získat upozornění na schválení vašich žádostí o média.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Získat upozornění, když ostatní uživatelé zadají nové požadavky na média, která jsou automaticky schválena.",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Odeslat oznámení, když uživatelé zažádají o média vyžadující schválení.",
|
||||
"components.MovieDetails.streamingproviders": "Aktuálně streamovatelné na",
|
||||
"components.MovieDetails.streamingproviders": "Aktuálně streamované na",
|
||||
"pages.serviceunavailable": "Služba není k dispozici",
|
||||
"pages.returnHome": "Vrátit se domů",
|
||||
"pages.pagenotfound": "Stránka nebyla nalezena",
|
||||
@@ -322,20 +322,20 @@
|
||||
"components.NotificationTypeSelector.mediafailed": "Zpracování požadavku se nezdařilo",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Odeslat oznámení, pokud jsou požadavky na média odmítnuty.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Žádost zamítnuta",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Odeslat oznámení, jakmile budou k dispozici žádosti o média.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Žádost k dispozici",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Odeslat oznámení, když jsou požadavky na média ručně schváleny.",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Odesílat oznámení, když jsou žádosti o média dostupné.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Žádost je dostupná",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Odesílat upozornění, když jsou žádosti o média ručně schváleny.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Žádost schválena",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Odeslat oznámení, když uživatelé zadají nové požadavky na média, která jsou automaticky schválena.",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Odesílat upozornění, když uživatelé odešlou nové žádosti o média, které jsou automaticky schváleny.",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Žádost automaticky schválena",
|
||||
"components.MovieDetails.watchtrailer": "Sledovat trailer",
|
||||
"components.MovieDetails.watchtrailer": "Sledovat upoutávku",
|
||||
"components.MovieDetails.viewfullcrew": "Zobrazit kompletní štáb",
|
||||
"components.MovieDetails.similar": "Podobné tituly",
|
||||
"components.MovieDetails.showmore": "Zobrazit více",
|
||||
"components.MovieDetails.showless": "Zobrazit méně",
|
||||
"components.MovieDetails.runtime": "{minutes} minut",
|
||||
"components.MovieDetails.runtime": "{minutes} {minutes, plural, one {minuta} few {minuty} other {minut}}",
|
||||
"components.MovieDetails.revenue": "Výnos",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Dátum vydání} other {Dátumy vydání}}",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Datum vydání} other {Data vydání}}",
|
||||
"components.MovieDetails.recommendations": "Doporučení",
|
||||
"components.MovieDetails.play": "Přehrát v {mediaServerName}",
|
||||
"components.MovieDetails.play4k": "Přehrát v {mediaServerName} ve 4K",
|
||||
@@ -352,8 +352,8 @@
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Zobrazit více",
|
||||
"components.Login.validationpasswordrequired": "Musíte zadat heslo",
|
||||
"components.Login.validationemailrequired": "Musíte zadat platnou e-mailovou adresu",
|
||||
"components.Login.signinwithplex": "Použijte svůj Plex účet",
|
||||
"components.Login.signinwithoverseerr": "Použijte svůj {applicationTitle} účet",
|
||||
"components.Login.signinwithplex": "Použijte svůj účet Plex",
|
||||
"components.Login.signinwithoverseerr": "Použijte svůj účet {applicationTitle}",
|
||||
"components.Login.signinheader": "Pro pokračování se přihlaste",
|
||||
"components.Login.signingin": "Přihlašování…",
|
||||
"components.Login.signin": "Přihlásit se",
|
||||
@@ -361,8 +361,8 @@
|
||||
"components.Login.loginerror": "Při pokusu o přihlášení se něco pokazilo.",
|
||||
"components.Login.forgotpassword": "Zapomenuté heslo?",
|
||||
"components.Login.email": "E-mailová adresa",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr Stabilní",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Vývoj",
|
||||
"components.Layout.VersionStatus.streamstable": "Stabilní verze Jellyseerr",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Vývojová verze Jellyseerr",
|
||||
"components.Layout.VersionStatus.outofdate": "Zastaralý",
|
||||
"components.Layout.UserDropdown.signout": "Odhlásit se",
|
||||
"components.Layout.UserDropdown.settings": "Nastavení",
|
||||
@@ -371,43 +371,41 @@
|
||||
"components.Layout.Sidebar.settings": "Nastavení",
|
||||
"components.Layout.Sidebar.requests": "Žádosti",
|
||||
"components.Layout.Sidebar.dashboard": "Objevit",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Vyhledat Filmy a Seriály",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Hledat filmy a seriály",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Jazyk zobrazení",
|
||||
"components.LanguageSelector.originalLanguageDefault": "Všechny jazyky",
|
||||
"components.LanguageSelector.languageServerDefault": "Výchozí ({language})",
|
||||
"components.DownloadBlock.estimatedtime": "Odhadovaný {time}",
|
||||
"components.Discover.upcomingtv": "Nadcházející Seriály",
|
||||
"components.DownloadBlock.estimatedtime": "Odhadováno {time}",
|
||||
"components.Discover.upcomingtv": "Nadcházející seriály",
|
||||
"components.Discover.upcomingmovies": "Nadcházející filmy",
|
||||
"components.Discover.upcoming": "Nadcházející filmy",
|
||||
"components.Discover.trending": "Populární",
|
||||
"components.Discover.recentrequests": "Nedávné žádosti",
|
||||
"components.Discover.recentlyAdded": "Nedávno přidané",
|
||||
"components.Discover.populartv": "Populární Seriály",
|
||||
"components.Discover.discovertv": "Populární Seriály",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "{language} Seriály",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "{genre} Seriály",
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "{network} Seriály",
|
||||
"components.Discover.popularmovies": "Populární filmy",
|
||||
"components.Discover.discovermovies": "Populární filmy",
|
||||
"components.Discover.populartv": "Oblíbené seriály",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "Seriály: {language}",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "Seriály: {genre}",
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "Seriály: {network}",
|
||||
"components.Discover.popularmovies": "Oblíbené filmy",
|
||||
"components.Discover.discover": "Objevte",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Žánry seriálů",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Žánry seriálů",
|
||||
"components.Discover.StudioSlider.studios": "Studia",
|
||||
"components.Discover.NetworkSlider.networks": "Streamovací platformy",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Filmové žánry",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Filmové žánry",
|
||||
"components.CollectionDetails.numberofmovies": "{count} Filmů",
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "Připojení svazku <code>{appDataPath}</code> nebylo správně nakonfigurováno. Všechna data budou vymazána při zastavení nebo opětovném spuštění kontejneru.",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "{studio} Filmy",
|
||||
"components.Discover.DiscoverMovieLanguage.languageMovies": "{language} Filmy",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre} Filmy",
|
||||
"components.CollectionDetails.requestcollection4k": "Požádat o kolekci ve 4K",
|
||||
"components.CollectionDetails.requestcollection": "Požádat o kolekci",
|
||||
"components.Discover.NetworkSlider.networks": "Stanice",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Žánry filmů",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Žánry filmů",
|
||||
"components.CollectionDetails.numberofmovies": "{count} filmů",
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "Připojení svazku <code>{appDataPath}</code> nebylo správně nakonfigurováno. Při zastavení nebo opětovném spuštění kontejneru budou všechna data vymazána.",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "Filmy: {studio}",
|
||||
"components.Discover.DiscoverMovieLanguage.languageMovies": "Filmy: {language}",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "Filmy: {genre}",
|
||||
"components.CollectionDetails.requestcollection4k": "Zažádat o kolekci ve 4K",
|
||||
"components.CollectionDetails.requestcollection": "Zažádat o kolekci",
|
||||
"components.CollectionDetails.overview": "Přehled",
|
||||
"components.Settings.SettingsJobsCache.cachemisses": "Neúspěchy",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Dostat oznámení o odmítnutí vašich požadavků na média.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Dostat oznámení, jakmile budou k dispozici žádosti o média.",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commitů}} za",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {potvrzení} few {potvrzení} other {potvrzení}} za",
|
||||
"components.Setup.configureplex": "Konfigurovat Plex",
|
||||
"components.Settings.serverpresetRefreshing": "Načítání serverů…",
|
||||
"components.Settings.applicationTitle": "Název aplikace",
|
||||
@@ -436,10 +434,10 @@
|
||||
"components.RequestModal.numberofepisodes": "Počet epizod",
|
||||
"components.IssueDetails.issuepagetitle": "Problém",
|
||||
"components.IssueDetails.leavecomment": "Komentář",
|
||||
"components.ManageSlideOver.tvshow": "série",
|
||||
"components.ManageSlideOver.tvshow": "seriál",
|
||||
"i18n.open": "Otevřené",
|
||||
"components.IssueDetails.issuetype": "Typ",
|
||||
"components.IssueList.IssueItem.opened": "Otevřené",
|
||||
"components.IssueList.IssueItem.opened": "Otevřeno",
|
||||
"components.IssueList.IssueItem.unknownissuetype": "Neznámý",
|
||||
"components.IssueList.issues": "Problémy",
|
||||
"components.ManageSlideOver.manageModalRequests": "Žádosti",
|
||||
@@ -459,7 +457,7 @@
|
||||
"components.IssueModal.CreateIssueModal.toastviewissue": "Zobrazit problém",
|
||||
"components.ManageSlideOver.manageModalNoRequests": "Žádné žádosti.",
|
||||
"components.IssueList.IssueItem.issuetype": "Typ",
|
||||
"components.IssueDetails.problemseason": "Ovlivněná série",
|
||||
"components.IssueDetails.problemseason": "Ovlivněná sezóna",
|
||||
"components.IssueDetails.reopenissue": "Znovu otevřít problém",
|
||||
"components.NotificationTypeSelector.issuecreated": "Problém nahlášen",
|
||||
"components.PermissionEdit.viewissues": "Zobrazit problémy",
|
||||
@@ -467,7 +465,7 @@
|
||||
"components.IssueModal.CreateIssueModal.problemepisode": "Ovlivněná epizoda",
|
||||
"components.IssueDetails.IssueComment.delete": "Odstranit komentář",
|
||||
"components.IssueDetails.IssueComment.edit": "Upravit komentář",
|
||||
"components.IssueDetails.allseasons": "Všechny série",
|
||||
"components.IssueDetails.allseasons": "Všechny sezóny",
|
||||
"components.IssueDetails.closeissue": "Uzavřít problém",
|
||||
"components.ManageSlideOver.downloadstatus": "Stahování",
|
||||
"components.NotificationTypeSelector.issueresolved": "Problém vyřešen",
|
||||
@@ -498,16 +496,16 @@
|
||||
"components.IssueDetails.nocomments": "Žádné komentáře.",
|
||||
"components.IssueList.IssueItem.issuestatus": "Stav",
|
||||
"components.IssueDetails.problemepisode": "Ovlivněná epizoda",
|
||||
"components.IssueDetails.season": "Série {seasonNumber}",
|
||||
"components.IssueDetails.season": "Sezóna {seasonNumber}",
|
||||
"components.IssueList.IssueItem.problemepisode": "Ovlivněná epizoda",
|
||||
"components.IssueList.IssueItem.viewissue": "Zobrazit problém",
|
||||
"components.IssueList.sortAdded": "Nejnovější",
|
||||
"components.IssueList.sortModified": "Naposledy změněno",
|
||||
"components.IssueModal.CreateIssueModal.allepisodes": "Všechny epizody",
|
||||
"components.IssueModal.CreateIssueModal.allseasons": "Všechny série",
|
||||
"components.IssueModal.CreateIssueModal.allseasons": "Všechny sezóny",
|
||||
"components.IssueModal.CreateIssueModal.episode": "Epizoda {episodeNumber}",
|
||||
"components.IssueModal.CreateIssueModal.problemseason": "Ovlivněná série",
|
||||
"components.IssueModal.CreateIssueModal.season": "Série {seasonNumber}",
|
||||
"components.IssueModal.CreateIssueModal.season": "Sezóna {seasonNumber}",
|
||||
"components.IssueModal.CreateIssueModal.submitissue": "Odeslat problém",
|
||||
"components.ManageSlideOver.manageModalTitle": "Spravovat {mediaType}",
|
||||
"components.PermissionEdit.createissues": "Nahlásit problémy",
|
||||
@@ -537,46 +535,46 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "ID chatu",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Potvrďte heslo",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Aktuální heslo",
|
||||
"components.IssueDetails.toastissuedeleted": "Problém byl úspěšně smazán!",
|
||||
"components.IssueDetails.toaststatusupdated": "Stav problému byl úspěšně aktualizován!",
|
||||
"components.IssueDetails.toastissuedeleted": "Problém úspěšně odstraněn!",
|
||||
"components.IssueDetails.toaststatusupdated": "Stav problému úspěšně aktualizován!",
|
||||
"components.ManageSlideOver.markavailable": "Označit jako dostupné",
|
||||
"components.IssueDetails.commentplaceholder": "Přidat komentář…",
|
||||
"components.IssueDetails.openedby": "#{issueId} otevřeno {relativeTime} uživatelem {username}",
|
||||
"components.IssueDetails.openedby": "Č. {issueId} otevřeno {relativeTime} uživatelem {username}",
|
||||
"components.IssueDetails.openin4karr": "Otevřít ve 4K {arr}",
|
||||
"components.IssueDetails.reopenissueandcomment": "Znovu otevřít pomocí komentáře",
|
||||
"components.IssueDetails.reopenissueandcomment": "Znovu otevřít s komentářem",
|
||||
"components.IssueModal.CreateIssueModal.validationMessageRequired": "Musíte poskytnout popis",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "Vyčistit data",
|
||||
"components.ManageSlideOver.alltime": "Pořád",
|
||||
"components.ManageSlideOver.alltime": "Za celou dobu",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Pokročilý",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Tímto nenávratně odstraníte všechna data pro tento {mediaType}, včetně všech požadavků. Pokud tato položka existuje ve vaší knihovně {mediaServerName}, informace o médiích budou znovu vytvořeny během příštího skenování.",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Tímto nenávratně odeberete všechna data pro tento {mediaType}, včetně všech požadavků. Pokud tato položka existuje ve vaší knihovně {mediaServerName}, informace o médiích budou znovu vytvořeny během příštího skenování.",
|
||||
"components.ManageSlideOver.manageModalMedia": "Média",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4K Média",
|
||||
"components.ManageSlideOver.markallseasonsavailable": "Označte všechny sezóny jako dostupné",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Označte všechny sezóny jako dostupné ve 4K",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4K média",
|
||||
"components.ManageSlideOver.markallseasonsavailable": "Označit všechny sezóny jako dostupné",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Označit všechny sezóny jako dostupné ve 4K",
|
||||
"components.ManageSlideOver.openarr": "Otevřít v {arr}",
|
||||
"components.ManageSlideOver.openarr4k": "Otevřít ve 4K {arr}",
|
||||
"components.ManageSlideOver.opentautulli": "Otevřít v Tautulli",
|
||||
"components.NotificationTypeSelector.adminissuecommentDescription": "Buďte upozorněn, když ostatní uživatelé komentují problémy.",
|
||||
"components.NotificationTypeSelector.adminissuereopenedDescription": "Buďte upozorněn, když problémy znovu otevřou jiní uživatelé.",
|
||||
"components.NotificationTypeSelector.adminissuecommentDescription": "Nechte se upozornit, když ostatní uživatelé komentují problémy.",
|
||||
"components.NotificationTypeSelector.adminissuereopenedDescription": "Nechte se upozornit, když jsou problémy znovu otevřeny jinými uživateli.",
|
||||
"components.IssueDetails.toaststatusupdatefailed": "Při aktualizaci stavu problému se něco pokazilo.",
|
||||
"components.IssueDetails.IssueComment.postedby": "Zveřejněno {relativeTime} uživatelem {username}",
|
||||
"components.IssueDetails.playonplex": "Přehrát v {mediaServerName}",
|
||||
"components.IssueDetails.play4konplex": "Přehrát v {mediaServerName} ve 4K",
|
||||
"components.IssueList.IssueItem.openeduserdate": "{date} od uživatele {user}",
|
||||
"components.IssueDetails.playonplex": "Přehrát na {mediaServerName}",
|
||||
"components.IssueDetails.play4konplex": "Přehrát ve 4K na {mediaServerName}",
|
||||
"components.IssueList.IssueItem.openeduserdate": "{date} uživatelem {user}",
|
||||
"components.IssueModal.CreateIssueModal.providedetail": "Uveďte prosím podrobné vysvětlení problému, na který jste narazili.",
|
||||
"components.IssueModal.CreateIssueModal.reportissue": "Nahlásit problém",
|
||||
"components.IssueModal.CreateIssueModal.toastFailedCreate": "Při odesílání problému se něco pokazilo.",
|
||||
"components.IssueDetails.IssueComment.validationComment": "Musíte zadat zprávu",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Opravdu chcete tento komentář smazat?",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Opravdu chcete odstranit tento komentář?",
|
||||
"components.IssueDetails.openinarr": "Otevřít v {arr}",
|
||||
"components.IssueDetails.IssueComment.postedbyedited": "Zveřejněno {relativeTime} uživatelem {username} (upraveno)",
|
||||
"components.IssueDetails.toasteditdescriptionsuccess": "Popis problému byl úspěšně upraven!",
|
||||
"components.IssueDetails.deleteissueconfirm": "Opravdu chcete tento problém smazat?",
|
||||
"components.IssueDetails.toasteditdescriptionsuccess": "Popis problému úspěšně upraven!",
|
||||
"components.IssueDetails.deleteissueconfirm": "Opravdu chcete odstranit tento problém?",
|
||||
"components.IssueDetails.toasteditdescriptionfailed": "Při úpravě popisu problému se něco pokazilo.",
|
||||
"components.IssueDetails.toastissuedeletefailed": "Při mazání problému se něco pokazilo.",
|
||||
"components.IssueDetails.toastissuedeletefailed": "Při odstraňování problému se něco pokazilo.",
|
||||
"components.IssueModal.CreateIssueModal.extras": "Speciály",
|
||||
"components.IssueList.showallissues": "Zobrazit všechny problémy",
|
||||
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Zpráva o problému pro <strong>{title}</strong> byla úspěšně odeslána!",
|
||||
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Zpráva o problému pro <strong>{title}</strong> úspěšně odeslána!",
|
||||
"components.ManageSlideOver.mark4kavailable": "Označit jako dostupné ve 4K",
|
||||
"components.NotificationTypeSelector.issuereopened": "Problém znovu otevřen",
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "Získejte upozornění, když ostatní uživatelé nahlásí problémy.",
|
||||
@@ -664,9 +662,9 @@
|
||||
"components.Settings.RadarrModal.enableSearch": "Povolení automatického vyhledávání",
|
||||
"components.RequestModal.requestCancel": "Žádost o <strong>{title}</strong> zrušena.",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "Váš 30znakový <UsersGroupsLink>identifikátor uživatele nebo skupiny</UsersGroupsLink>",
|
||||
"components.ManageSlideOver.pastdays": "Posledních {days, number} dní",
|
||||
"components.ManageSlideOver.playedby": "Hraje",
|
||||
"components.NotificationTypeSelector.adminissueresolvedDescription": "Získejte upozornění, když problémy vyřeší ostatní uživatelé.",
|
||||
"components.ManageSlideOver.pastdays": "Posledních {days, number} {days, plural, one {den} few {dny} other {dní}}",
|
||||
"components.ManageSlideOver.playedby": "Přehráno uživatelem",
|
||||
"components.NotificationTypeSelector.adminissueresolvedDescription": "Nechte se upozornit, když jsou problémy vyřešeny jinými uživateli.",
|
||||
"components.NotificationTypeSelector.issuecomment": "Komentář k problému",
|
||||
"components.NotificationTypeSelector.issuecommentDescription": "Odesílat upozornění, když problémy obdrží nové komentáře.",
|
||||
"components.NotificationTypeSelector.userissuecommentDescription": "Získejte upozornění na nové komentáře k problémům, které jste nahlásili.",
|
||||
@@ -728,7 +726,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Nastavení oznámení Discordu úspěšně uloženo!",
|
||||
"components.RequestButton.requestmore4k": "Vyžádat si více informací v rozlišení 4K",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Souhrn limitů vašich požadavků si můžete prohlédnout na stránce vašeho <ProfileLink>profilu</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Abyste mohli podat žádost o tuto sérii, musíte mít alespoň <strong>{seasons}</strong> {seasons, plural, one {season request} other {season requests}} zbývajících pro podání žádosti o tuto sérii.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Abyste mohli zažádat o tento seriál, musíte mít alespoň <strong>{seasons}</strong> {seasons, plural, one {zbývající žádost o sezónu} few {zbývající žádosti o sezónu} other {zbývajících žádostí o sezónu}}.",
|
||||
"components.RequestModal.requestfrom": "Žádost od {username} čeká na schválení.",
|
||||
"components.RequestModal.requesterror": "Při odesílání žádosti se něco pokazilo.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Vaše adresa URL <LunaSeaLink>notification webhook</LunaSeaLink> pro uživatele nebo zařízení",
|
||||
@@ -739,7 +737,7 @@
|
||||
"components.Settings.SettingsAbout.uptodate": "Aktuální",
|
||||
"components.Settings.SonarrModal.validationProfileRequired": "Je třeba vybrat profil kvality",
|
||||
"components.Settings.currentlibrary": "Současná knihovna: {name}",
|
||||
"components.IssueDetails.closeissueandcomment": "Zavřete komentářem",
|
||||
"components.IssueDetails.closeissueandcomment": "Uzavřít s komentářem",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Nastavení oznámení Telegramu se nepodařilo uložit.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Musíte zadat platné ID uživatele",
|
||||
"components.RequestModal.pendingapproval": "Vaše žádost čeká na schválení.",
|
||||
@@ -1004,49 +1002,49 @@
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Tento uživatelský účet v současné době nemá nastavené heslo. Níže nastavte heslo, aby se tento účet mohl přihlašovat jako \"místní uživatel.\"",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Váš účet v současné době nemá nastavené heslo. Níže nastavte heslo, abyste se mohli přihlásit jako \"místní uživatel\" pomocí své e-mailové adresy.",
|
||||
"i18n.importing": "Importování…",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, zero {Epizod} one {Epizoda} other {Epizody}}",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, zero {Sezón} one {Sezóna} other {Sezóny}}",
|
||||
"components.TvDetails.productioncountries": "{countryCount, plural, one {země} other {země}} produkce",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Síť} other {Sítě}}",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {sezóna} other {sezóny}}",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {přehrání} other {přehrání}}",
|
||||
"components.MovieDetails.productioncountries": "Produkční {countryCount, plural, one {země} other {země}}",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {Epizoda} other {Epizody}}",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {Sezóna} other {Sezóny}}",
|
||||
"components.TvDetails.productioncountries": "{countryCount, plural, one {Země} other {Země}} produkce",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Stanice} other {Stanice}}",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {sezóna} few {sezóny} other {sezón}}",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {přehrání} few {přehrání} other {přehrání}}",
|
||||
"components.MovieDetails.productioncountries": "{countryCount, plural, one {Země} other {Země}} produkce",
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {Studio} other {Studia}}",
|
||||
"components.QuotaSelector.days": "{count, plural, zero {dní} one {den} other {dny}}",
|
||||
"components.TvDetails.seasons": "{seasonCount, plural, one {# Sezóna} other {# Sezóny}}",
|
||||
"components.QuotaSelector.days": "{count, plural, one {den} few {dny} other {dní}}",
|
||||
"components.TvDetails.seasons": "{seasonCount, plural, one {# sezóna} few {# sezóny} other {# sezón}}",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {Sezóna} other {Sezóny}}",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Aby mohl tento uživatel odeslat žádost o seriál, musí mít zbývajících alespoň <strong>{seasons}</strong> {seasons, plural, one {požadavku pro sezónu} other {požadavky pro sezóny}}.",
|
||||
"components.RequestModal.requestmovies4k": "Požádat {count} {count, plural, one {Movie} other {Movies}} v 4K",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Aby mohl tento uživatel zažádat o tento seriál, musí mít alespoň <strong>{seasons}</strong> {seasons, plural, one {zbývající žádost o sezónu} few {zbývající žádosti o sezónu} other {zbývajících žádostí o sezónu}}.",
|
||||
"components.RequestModal.requestmovies4k": "Zažádat o {count} {count, plural, one {film} few {filmy} other {filmů}} ve 4K",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "{jobScheduleHours, plural, one {Každou hodinu} few {Každé {jobScheduleHours} hodiny} other {Každých {jobScheduleHours} hodin}}",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, zero {Sezón} one {Sezóna} other {Sezóny}}",
|
||||
"components.RequestButton.approve4krequests": "Schválit {requestCount, plural, one {4K žádost} other {{requestCount} 4K žádosti}}",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Sezóna} other {Sezóny}}",
|
||||
"components.RequestButton.approve4krequests": "Schválit {requestCount, plural, one {4K žádost} few {{requestCount} 4K žádosti} other {{requestCount} 4K žádostí}}",
|
||||
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Sezóna} other {Sezóny}}",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "Tento uživatel může požádat o <strong>{limit}</strong> {type} každých <strong>{days}</strong> dní.",
|
||||
"components.RequestModal.QuotaDisplay.movielimit": "{limit, plural, one {film} other {filmy}}",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Žiadne} other {<strong>#</strong>}} {type} {remaining, plural, one {požadavka} other {požadavky}} zbývající",
|
||||
"components.RequestModal.requestseasons": "Požádat {seasonCount} {seasonCount, plural, one {sezónu} other {sezóny}}",
|
||||
"components.RequestModal.requestseasons4k": "Požádat {seasonCount} {seasonCount, plural, one {sezónu} other {sezóny}} v 4K",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex {userCount, plural, one {uživatel úspěšně importován} other {uživatelů úspěšně importováno}}!",
|
||||
"components.RequestModal.QuotaDisplay.movielimit": "{limit, plural, one {film} few {filmy} other {filmů}}",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Žádné} other {<strong>#</strong>}} {type} {remaining, plural, one {zbývající žádost} few {zbývající žádosti} other {zbývajících žádostí}}",
|
||||
"components.RequestModal.requestseasons": "Zažádat o {seasonCount} {seasonCount, plural, one {sezónu} few {sezóny} other {sezón}}",
|
||||
"components.RequestModal.requestseasons4k": "Zažádat o {seasonCount} {seasonCount, plural, one {sezónu} few {sezóny} other {sezón}} ve 4K",
|
||||
"components.UserList.importedfromplex": "Úspěšně {userCount, plural, one {importován} few {importováni} other {importováno}} <strong>{userCount}</strong> {userCount, plural, one {uživatel} few {uživatelé} other {uživatelů}} Plex!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtrovat obsah podle původního jazyka",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessTokenTip": "Vytvořte token z <PushbulletSettingsLink>Nastavení účtu</PushbulletSettingsLink>",
|
||||
"components.QuotaSelector.movies": "{count, plural, zero {filmů} one {film} other {filmy}}",
|
||||
"components.QuotaSelector.seasons": "{seasonCount, plural, zero {sezón} one {sezóna} other {sezóny}}",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {film} few {filmy} other {filmů}}",
|
||||
"components.QuotaSelector.seasons": "{seasonCount, plural, one {sezóna} few {sezóny} other {sezón}}",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} za {quotaDays} {days}</quotaUnits>",
|
||||
"components.RequestButton.approverequests": "Schválit {requestCount, plural, one {Žádost} other {{requestCount} Žádosti}}",
|
||||
"components.RequestButton.decline4krequests": "Odmítnout {requestCount, plural, one {4K žádost} other {{requestCount} 4K žádosti}}",
|
||||
"components.RequestButton.declinerequests": "Odmítnout {requestCount, plural, one {Žádost} other {{requestCount} Žádosti}}",
|
||||
"components.RequestModal.requestmovies": "Požádat {count} {count, plural, one {film} other {filmy}}",
|
||||
"components.RequestButton.approverequests": "Schválit {requestCount, plural, one {žádost} few {{requestCount} žádosti} other {{requestCount} žádostí}}",
|
||||
"components.RequestButton.decline4krequests": "Odmítnout {requestCount, plural, one {4K žádost} few {{requestCount} 4K žádosti} other {{requestCount} 4K žádostí}}",
|
||||
"components.RequestButton.declinerequests": "Odmítnout {requestCount, plural, one {žádost} few {{requestCount} žádosti} other {{requestCount} žádostí}}",
|
||||
"components.RequestModal.requestmovies": "Zažádat o {count} {count, plural, one {film} few {filmy} other {filmů}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "{jobScheduleMinutes, plural, one {Každou minutu} few {Každé {jobScheduleMinutes} minuty} other {Každých {jobScheduleMinutes} minut}}",
|
||||
"components.MovieDetails.digitalrelease": "Digitální vydání",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Váš Plex Watchlist",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Váš seznam ke zhlédnutí Plex",
|
||||
"components.MovieDetails.physicalrelease": "Fyzické vydání",
|
||||
"components.MovieDetails.managemovie": "Spravovat film",
|
||||
"components.AirDateBadge.airsrelative": "Vysíla se {relativeTime}",
|
||||
"components.AirDateBadge.airsrelative": "Vysílá se {relativeTime}",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Žádosti o filmy",
|
||||
"components.MovieDetails.rtaudiencescore": "Skóre publika Rotten Tomatoes",
|
||||
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Žádosti o seriály",
|
||||
"components.AirDateBadge.airedrelative": "Odvysílano {relativeTime}",
|
||||
"components.AirDateBadge.airedrelative": "Vysíláno {relativeTime}",
|
||||
"components.Layout.UserDropdown.requests": "Žádosti",
|
||||
"components.MovieDetails.reportissue": "Nahlásit problém",
|
||||
"components.StatusChecker.restartRequired": "Je vyžadován restart serveru",
|
||||
@@ -1099,15 +1097,15 @@
|
||||
"components.RequestModal.requestmovietitle": "Vyžádat si film",
|
||||
"components.RequestModal.requestseries4ktitle": "Žádost o sérii ve 4K",
|
||||
"components.RequestModal.requestseriestitle": "Vyžádat sérii",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Epizoda} other {# Epizody}}",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Žádost byla odeslána automaticky",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Získejte upozornění, když jsou automaticky odeslány nové požadavky na média pro položky na vašem Plex Watchlistu.",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# epizoda} few {# epizody} other {# epizod}}",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Žádost byla automaticky odeslána",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Nechte se upozornit, když jsou nové žádosti o média automaticky odeslány pro položky na vašem Seznamu ke zhlédnutí Plex.",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Udělte oprávnění k zobrazení Plex Watchlistu ostatních uživatelů.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Při načítání údajů o sezóně se něco pokazilo.",
|
||||
"i18n.restartRequired": "Je vyžadován restart",
|
||||
"components.Discover.plexwatchlist": "Váš Plex Watchlist",
|
||||
"components.MovieDetails.theatricalrelease": "Dostupné v kinách",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
|
||||
"components.Discover.plexwatchlist": "Váš seznam ke zhlédnutí Plex",
|
||||
"components.MovieDetails.theatricalrelease": "Uvedení v kinech",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Seznam ke zhlédnutí Plex",
|
||||
"components.TvDetails.reportissue": "Nahlásit problém",
|
||||
"components.MovieDetails.tmdbuserscore": "Uživatelské skóre TMDB",
|
||||
"components.TvDetails.seasonstitle": "Sezóny",
|
||||
@@ -1116,11 +1114,155 @@
|
||||
"components.TvDetails.rtaudiencescore": "Rotten Tomatoes Audience Skóre",
|
||||
"components.TvDetails.tmdbuserscore": "Uživatelské skóre TMDB",
|
||||
"components.TvDetails.status4k": "4K {status}",
|
||||
"components.Discover.emptywatchlist": "Média přidaná do vašeho <PlexWatchlistSupportLink>Plex Watchlistu</PlexWatchlistSupportLink> se zobrazí zde.",
|
||||
"components.Discover.emptywatchlist": "Zde se objeví média přidaná do vašeho <PlexWatchlistSupportLink>seznamu ke zhlédnutí Plex</PlexWatchlistSupportLink>.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automaticky vyžádat filmy na vašem <PlexWatchlistSupportLink>Plex Watchlistu</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automaticky vyžádejte sérii na vašem <PlexWatchlistSupportLink>Plex Watchlistu</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Automaticky vyžádat sérii",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Automaticky vyžádat filmy",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
"components.UserProfile.emptywatchlist": "Zde se zobrazí média přidaná do vašeho <PlexWatchlistSupportLink>Plex Watchlistu</PlexWatchlistSupportLink>."
|
||||
"components.UserProfile.emptywatchlist": "Zde se zobrazí média přidaná do vašeho <PlexWatchlistSupportLink>Plex Watchlistu</PlexWatchlistSupportLink>.",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Aktuální frekvence",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "Filmy: {keywordTitle}",
|
||||
"components.Discover.networks": "Stanice",
|
||||
"components.Discover.moviegenres": "Žánry filmů",
|
||||
"components.Discover.tmdbmoviegenre": "Žánr filmu TMDB",
|
||||
"components.Discover.tmdbnetwork": "Stanice TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Zadejte vyhledávací dotaz",
|
||||
"components.Discover.CreateSlider.starttyping": "Začínáte psát pro hledání.",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# aktivní filtr} few {# aktivní filtry} other {# aktivních filtrů}}",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Streamovací služby",
|
||||
"components.Discover.CreateSlider.addsuccess": "Vytvořen nový posuvník a uloženo nastavení přizpůsobení objevování.",
|
||||
"components.Discover.createnewslider": "Vytvořit nový posuvník",
|
||||
"components.Discover.customizediscover": "Přizpůsobit objevování",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Musíte zadat hodnotu dat.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Musíte zadat název.",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Nepodařilo se odstranit posuvník.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Posuvník úspěšně odstraněn.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Přepnout viditelnost",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Odebrat",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "Seriály: {keywordTitle}",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Zde se objeví média přidaná do vašeho <PlexWatchlistSupportLink>seznamu ke shlédnutí Plex</PlexWatchlistSupportLink>.",
|
||||
"components.Discover.stopediting": "Zastavit úpravy",
|
||||
"components.Discover.studios": "Studia",
|
||||
"components.Discover.tmdbmoviekeyword": "Klíčové slovo filmu TMDB",
|
||||
"components.Discover.tmdbtvkeyword": "Klíčové slovo seriálu TMDB",
|
||||
"components.Discover.tvgenres": "Žánry seriálu",
|
||||
"components.Discover.updatefailed": "Při aktualizaci nastavení přizpůsobení objevování se něco pokazilo.",
|
||||
"components.Discover.tmdbtvgenre": "Žánr seriálu TMDB",
|
||||
"components.Discover.updatesuccess": "Nastavení přizpůsobení objevování aktualizováno.",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filmy",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Oblíbenost vzestupně",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Oblíbenost sestupně",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Datum vydání vzestupně",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Datum vydání sestupně",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Název (A-Z) vzestupně",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Název (A-Z) sestupně",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "Hodnocení TMDB vzestupně",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "Hodnocení TMDB sestupně",
|
||||
"components.Discover.DiscoverTv.discovertv": "Seriály",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Datum prvního vysílání vzestupně",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# aktivní filtr} few {# aktivní filtry} other {# aktivních filtrů}}",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Datum prvního vysílání sestupně",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Oblíbenost vzestupně",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Oblíbenost sestupně",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Název (A-Z) vzestupně",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Název (A-Z) sestupně",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "Hodnocení TMDB vzestupně",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "Hodnocení TMDB sestupně",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Vymazat aktivní filtry",
|
||||
"components.Discover.FilterSlideover.filters": "Filtry",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Datum prvního vysílání",
|
||||
"components.Discover.FilterSlideover.from": "Od",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# aktivní filtr} few {# aktivní filtry} other {# aktivních filtrů}}",
|
||||
"components.Discover.FilterSlideover.genres": "Žánry",
|
||||
"components.Discover.FilterSlideover.keywords": "Klíčová slova",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Původní jazyk",
|
||||
"components.Discover.FilterSlideover.ratingText": "Hodnocení mezi {minValue} a {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Datum vydání",
|
||||
"components.Discover.FilterSlideover.runtime": "Délka",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} minut délky",
|
||||
"components.Discover.FilterSlideover.studio": "Studio",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "Uživatelské hodnocení TMDB",
|
||||
"components.Discover.FilterSlideover.to": "Do",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Váš seznam ke zhlédnutí Plex",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Sezóna {seasonNumber} Epizoda {episodeNumber}",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Nedávno přidané",
|
||||
"components.Discover.resetfailed": "Při obnovení nastavení přizpůsobení objevování se něco pokazilo.",
|
||||
"components.Discover.resetsuccess": "Nastavení přizpůsobení objevování úspěšně obnoveno.",
|
||||
"components.Discover.resettodefault": "Obnovit na výchozí",
|
||||
"components.Discover.resetwarning": "Obnovit všechny posuvníky na výchozí hodnoty. Toto také odstraní všechny vlastní posuvníky!",
|
||||
"components.Discover.tmdbsearch": "Hledání TMDB",
|
||||
"components.Discover.tmdbstudio": "Studio TMDB",
|
||||
"components.Layout.Sidebar.browsemovies": "Filmy",
|
||||
"components.Layout.Sidebar.browsetv": "Seriály",
|
||||
"components.Discover.CreateSlider.addSlider": "Přidat posuvník",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Vytvořit vlastní posuvník",
|
||||
"components.Discover.CreateSlider.addfail": "Nepodařilo se vytvořit nový posuvník.",
|
||||
"components.Discover.CreateSlider.editSlider": "Upravit posuvník",
|
||||
"components.Discover.CreateSlider.editfail": "Nepodařilo se upravit posuvník.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Upraven posuvník a uloženo nastavení přizpůsobení objevování.",
|
||||
"components.Discover.CreateSlider.needresults": "Musíte mít alespoň 1 výsledek.",
|
||||
"components.Discover.CreateSlider.nooptions": "Žádné výsledky.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Zadejte ID žánru TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Zadejte ID klíčového slova TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Zadejte ID stanice TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Zadejte ID studia TMDB",
|
||||
"components.Discover.CreateSlider.searchGenres": "Hledat žánry…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Hledat klíčová slova…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Hledat studia…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Název posuvníku",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nový klíč API byl úspěšně vygenerován!",
|
||||
"components.TvDetails.Season.noepisodes": "Seznam epizod není k dispozici.",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Celková velikost mezipaměti",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Musíte zadat platnou adresu URL",
|
||||
"components.Selector.starttyping": "Začínáte psát a hledáte.",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "Adresa URL nesmí končit koncovým lomítkem",
|
||||
"components.Selector.searchStudios": "Hledat studia…",
|
||||
"components.RequestCard.unknowntitle": "Neznámý název",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Neznámý název",
|
||||
"components.Selector.searchGenres": "Vyberte žánry…",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Každou {jobScheduleSeconds, plural, one {sekundu} other {{jobScheduleSeconds} sekund}}",
|
||||
"components.Settings.SettingsMain.apikey": "API klíč",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Název aplikace",
|
||||
"components.Settings.SettingsMain.applicationurl": "Adresa URL aplikace",
|
||||
"components.Settings.SettingsMain.cacheImages": "Povolení ukládání obrázků do mezipaměti",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Ukládání obrázků z externích zdrojů do mezipaměti (vyžaduje značné množství místa na disku)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Povolení ochrany CSRF",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Toto nastavení NEPOVOLUJTE, pokud nerozumíte tomu, co děláte!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Nastavení externího přístupu k rozhraní API pouze pro čtení (vyžaduje protokol HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Obecné",
|
||||
"components.Settings.SettingsMain.generalsettings": "Obecná nastavení",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfigurace globálních a výchozích nastavení pro Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Skrýt dostupná média",
|
||||
"components.Settings.SettingsMain.locale": "Jazyk zobrazení",
|
||||
"components.Settings.SettingsMain.originallanguage": "Objevte jazyk",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtrování obsahu podle původního jazyka",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Povolení požadavků na částečné série",
|
||||
"components.Settings.SettingsMain.region": "Objevte region",
|
||||
"components.Settings.SettingsMain.regionTip": "Filtrování obsahu podle regionální dostupnosti",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Umožnit Jellyseerru správně registrovat klientské IP adresy za proxy serverem",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Obrázky v mezipaměti",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Vyrovnávací paměť obrázků",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Pokud je tato funkce povolena v nastavení, bude služba Jellyseerr proxy serverem a ukládat do mezipaměti obrázky z předem nakonfigurovaných externích zdrojů. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Musíte uvést název žádosti",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Při generování nového klíče API se něco pokazilo.",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Při ukládání nastavení se něco pokazilo.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Nastavení úspěšně uloženo!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Povolení podpory proxy serveru",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Čištění mezipaměti obrázků",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.Selector.searchKeywords": "Klíčová slova pro vyhledávání…",
|
||||
"components.Selector.showless": "Zobrazit méně",
|
||||
"components.Selector.showmore": "Zobrazit více",
|
||||
"components.Selector.nooptions": "Žádné výsledky.",
|
||||
"components.Discover.FilterSlideover.voteCount": "Počet hlasů mezi {minValue} a {maxValue}",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Automatické přidání dodatočné značky s ID uživatele a zobrazovaným jménem žadatele",
|
||||
"components.Settings.SonarrModal.tagRequests": "Požadavky na štítek",
|
||||
"i18n.collection": "Kolekce",
|
||||
"components.Settings.RadarrModal.tagRequests": "Požadavky na štítek",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Synchronizace dostupnosti médií",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Počet hlasů uživatelů TMDB",
|
||||
"components.Discover.tmdbmoviestreamingservices": "Filmové streamovací služby TMDB",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Automatické přidání dodatočné značky s ID uživatele a zobrazovaným jménem žadatele",
|
||||
"components.Discover.tmdbtvstreamingservices": "Televizní streamovací služby TMDB"
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"components.Login.loginerror": "Noget gik galt under log ind.",
|
||||
"components.Login.forgotpassword": "Glemt Kodeord?",
|
||||
"components.Login.email": "Email Adresse",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Develop",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Udviklingsudgave",
|
||||
"components.Layout.VersionStatus.outofdate": "Forældet",
|
||||
"components.Layout.UserDropdown.signout": "Log ud",
|
||||
"components.Layout.UserDropdown.settings": "Indstillinger",
|
||||
@@ -56,7 +56,7 @@
|
||||
"components.DownloadBlock.estimatedtime": "Estimeret {time}",
|
||||
"components.MovieDetails.mark4kavailable": "Markér som Tilgængelig i 4K",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {ændring} other {ændringer}} bagud",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr Stable",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr stabil",
|
||||
"components.MovieDetails.markavailable": "Markér som Tilgængelig",
|
||||
"components.MovieDetails.originallanguage": "Originalsprog",
|
||||
"components.Login.signinwithoverseerr": "Brug din {applicationTitle} konto",
|
||||
@@ -267,7 +267,7 @@
|
||||
"components.RequestBlock.rootfolder": "Rodmappe",
|
||||
"components.RequestButton.viewrequest4k": "Vis 4K Forespørgsel",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.agentenabled": "Aktivér Agent",
|
||||
"components.RequestModal.seasonnumber": "Vis Alle Forespørgsler",
|
||||
"components.RequestModal.seasonnumber": "Sæson {number}",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Send notifikationer når medieforespørgsler afvises.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "For at kunne modtage web push-notifikationer skal Jellyseerr benytte HTTPS.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Medie Tilgængelig",
|
||||
@@ -575,7 +575,7 @@
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Seneste tilføjet fra Plex-skanning",
|
||||
"components.Settings.SettingsJobsCache.jobcancelled": "{jobname} er annulleret.",
|
||||
"components.Settings.SettingsJobsCache.jobtype": "Type",
|
||||
"components.Settings.SettingsLogs.logs": "Logs",
|
||||
"components.Settings.SettingsLogs.logs": "Logfiler",
|
||||
"components.Settings.SonarrModal.syncEnabled": "Aktivér Skanning",
|
||||
"components.Settings.SonarrModal.seasonfolders": "Sæsonmapper",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Noget gik galt i forsøget på at gemme jobbet.",
|
||||
@@ -618,7 +618,7 @@
|
||||
"components.Settings.manualscanDescription": "Normalt vil dette kun eksekveres én gang i døgnet. Jellyseerr vil tjekke din Plex-server's senest tilføjede medier mere aggressivt. Hvis dette er din første gang du konfigurerer Plex vil en enkelt manuel biblioteksskanning anbefales!",
|
||||
"components.Settings.menuGeneralSettings": "Generelt",
|
||||
"components.Settings.menuJobs": "Jobs & Cache",
|
||||
"components.Settings.menuLogs": "Logs",
|
||||
"components.Settings.menuLogs": "Logfiler",
|
||||
"components.Settings.menuNotifications": "Notifikationer",
|
||||
"components.Settings.menuPlexSettings": "Plex",
|
||||
"components.Settings.menuServices": "Tjenester",
|
||||
@@ -1008,5 +1008,263 @@
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "Der skal angives en applikations token",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Gemning notifikationsindstillinger kunne ikke gemmes.",
|
||||
"components.Settings.validationUrlTrailingSlash": "URL'en må ikke afsluttes med en skråstreg",
|
||||
"components.ManageSlideOver.manageModalMedia": "Medie"
|
||||
"components.ManageSlideOver.manageModalMedia": "Medie",
|
||||
"components.Settings.RadarrModal.released": "Udgivet",
|
||||
"components.Settings.tautulliApiKey": "API nøgle",
|
||||
"components.Settings.tautulliSettings": "Tautulli indstillinger",
|
||||
"components.Settings.tautulliSettingsDescription": "Alternativt kan du konfigurere indstillingerne for din Tautulli server. Jellyseerr henter visningshistorikken for dit Plex medie fra Tautulli.",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Noget gik galt, da du gemte Tautulli indstillinger.",
|
||||
"components.Settings.validationApiKey": "Du skal angive en API-nøgle",
|
||||
"components.UserProfile.recentlywatched": "For nylig set",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Tautulli indstillingerne blev gemt succesfuldt!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Discord-bruger-id",
|
||||
"components.Settings.validationUrl": "Du skal angive en gyldig URL",
|
||||
"components.Settings.validationUrlBaseLeadingSlash": "URL-basen skal have en foranstillet skråstreg",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Det <FindDiscordIdLink> flercifrede ID-nummer</FindDiscordIdLink>, der er knyttet til din Discord-brugerkonto",
|
||||
"components.Settings.validationUrlBaseTrailingSlash": "URL-basen må ikke ende i en efterfølgende skråstreg",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Du skal oplyse et gyldigt Discord-bruger-id",
|
||||
"i18n.import": "Importere",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4K medier",
|
||||
"components.Settings.externalUrl": "Ekstern URL",
|
||||
"components.Settings.RadarrModal.announced": "Annonceret",
|
||||
"components.Settings.RadarrModal.inCinemas": "I biograferne",
|
||||
"components.Settings.urlBase": "URL base",
|
||||
"components.UserList.newplexsigninenabled": "Indstillingen <strong>Aktiver nyt Plex-login</strong> er i øjeblikket aktiveret. Plex-brugere med biblioteksadgang behøver ikke at blive importeret for at kunne logge ind.",
|
||||
"components.Settings.SettingsAbout.appDataPath": "Data mappe",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "Kanal tag",
|
||||
"i18n.importing": "Importerer…",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Aktuel frekvens",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Oprydning af billedcache",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Billedcache",
|
||||
"components.Settings.experimentalTooltip": "Aktivering af denne indstilling kan resultere i uventet programadfærd",
|
||||
"components.TvDetails.Season.noepisodes": "Episodelisten er ikke tilgængelig.",
|
||||
"components.RequestBlock.edit": "Rediger forespørgsel",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Din Plex Watchlist",
|
||||
"components.Layout.UserDropdown.requests": "Forespørgsler",
|
||||
"components.MovieDetails.physicalrelease": "Fysisk udgivelse",
|
||||
"components.PermissionEdit.autorequestSeries": "Forespørg automatisk serier",
|
||||
"components.RequestCard.cancelrequest": "Annuller forespørgsel",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
|
||||
"components.RequestModal.requestcollectiontitle": "Anmod samling",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Når det er aktiveret i indstillinger, vil Jellyseerr proxy og cache billeder fra forudkonfigurerede eksterne kilder. Cachelagrede billeder gemmes i din konfigurationsmappe. Du kan finde filerne i <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Cachelagrede billeder",
|
||||
"components.Settings.SettingsLogs.viewdetails": "Se detaljer",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Samlet cachestørrelse",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} Opdateret",
|
||||
"components.StatusChecker.appUpdatedDescription": "Klik på knappen nedenfor for at genindlæse applikationen.",
|
||||
"components.StatusChecker.reloadApp": "Genindlæs {applicationTitle}",
|
||||
"components.TitleCard.cleardata": "Ryd data",
|
||||
"components.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.RequestModal.requestmovie4ktitle": "Forespørg film i 4K",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr skal genstartes for at ændringer til denne indstilling kan træde i kraft",
|
||||
"components.StatusChecker.restartRequiredDescription": "Genstart venligst serveren for at anvende de opdaterede indstillinger.",
|
||||
"components.UserProfile.emptywatchlist": "Medier føjet til din <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> vises her.",
|
||||
"components.MovieDetails.theatricalrelease": "Biografpremiere",
|
||||
"components.PermissionEdit.viewrecent": "Vis nyligt tilføjet",
|
||||
"components.PermissionEdit.viewrecentDescription": "Giv tilladelse til at se listen over nyligt tilføjede medier.",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.tvdbid": "TVDB ID",
|
||||
"components.StatusChecker.restartRequired": "Server genstart påkrævet",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
"components.MovieDetails.digitalrelease": "Digital udgivelse",
|
||||
"components.PermissionEdit.autorequest": "Automatisk forespørgsel",
|
||||
"components.PermissionEdit.autorequestMovies": "Forespørg film automatisk",
|
||||
"components.Settings.deleteServer": "Slet {serverType} server",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Forespørg automatisk film",
|
||||
"components.ManageSlideOver.alltime": "Hele tiden",
|
||||
"components.Settings.Notifications.enableMentions": "Aktiver omtaler",
|
||||
"components.TvDetails.manageseries": "Administrer serier",
|
||||
"components.MovieDetails.reportissue": "Rapporter et problem",
|
||||
"components.MovieDetails.managemovie": "Administrer film",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Giv tilladelse til automatisk at indsende forespørgsler om ikke-4K-film via Plex Watchlist.",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Giv tilladelse til automatisk at indsende forespørgsler om ikke-4K-serier via Plex Watchlist.",
|
||||
"components.TitleCard.mediaerror": "{mediaType} Ikke fundet",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
|
||||
"components.Discover.plexwatchlist": "Din Plex Watchlist",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Forespørgsel indsendt automatisk",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Få besked, når der automatisk indsendes nye medieanmodninger for emner på din Plex Watchlist.",
|
||||
"components.PermissionEdit.viewwatchlists": "Se Plex Watchlists",
|
||||
"components.Settings.advancedTooltip": "Forkert konfiguration af denne indstilling kan resultere i ødelagt funktionalitet",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Forespørg automatisk serier på din<PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Film forespørgsler",
|
||||
"components.AirDateBadge.airedrelative": "Sendt {relativeTime}",
|
||||
"components.AirDateBadge.airsrelative": "Sendes {relativeTime}",
|
||||
"components.MovieDetails.rtaudiencescore": "Rotten Tomatoes publikumsscore",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Giv tilladelse til at se andre brugeres Plex Watchlists.",
|
||||
"components.RequestBlock.approve": "Godkend forespørgsel",
|
||||
"components.RequestBlock.decline": "Afvis forespørgsel",
|
||||
"components.RequestBlock.lastmodifiedby": "Sidst ændret af",
|
||||
"components.RequestBlock.requestdate": "Forespørg dato",
|
||||
"components.RequestCard.declinerequest": "Afvis forespørgsel",
|
||||
"components.RequestCard.editrequest": "Rediger forespørgsel",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Synkronisering af Plex Watchlist",
|
||||
"components.StatusBadge.managemedia": "Administrer {mediaType}",
|
||||
"components.StatusBadge.openinarr": "Åbn i {arr}",
|
||||
"components.StatusBadge.playonplex": "Spil i Plex",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Noget gik galt under hentning af sæsondata.",
|
||||
"components.TvDetails.reportissue": "Rapporter et problem",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# episode} other {# episoder}}",
|
||||
"components.TvDetails.rtaudiencescore": "Rotten Tomatoes Publikumsresultat",
|
||||
"components.TvDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
|
||||
"components.RequestBlock.languageprofile": "Sprogprofil",
|
||||
"i18n.restartRequired": "Genstart påkrævet",
|
||||
"components.Discover.emptywatchlist": "Medier, der er tilføjet til din <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>, vises her.",
|
||||
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
|
||||
"components.MovieDetails.tmdbuserscore": "TMDB brugerscore",
|
||||
"components.RequestBlock.delete": "Slet forespørgsel",
|
||||
"components.RequestBlock.requestedby": "Forespurgt af",
|
||||
"components.RequestCard.approverequest": "Godkend forespørgsel",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "Vi var ikke i stand til at finde et match for denne serie.",
|
||||
"components.RequestModal.requestcollection4ktitle": "Anmod om samling i 4K",
|
||||
"components.RequestModal.requestmovietitle": "Forespørg film",
|
||||
"components.RequestModal.requestseries4ktitle": "Forespørg serie i 4K",
|
||||
"components.RequestModal.requestseriestitle": "Forespørg serie",
|
||||
"components.TvDetails.seasonnumber": "Sæson {seasonNumber}",
|
||||
"components.TvDetails.seasonstitle": "Sæsoner",
|
||||
"components.TvDetails.status4k": "4K {status}",
|
||||
"components.TvDetails.tmdbuserscore": "TMDB brugerscore",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serie forespørgsler",
|
||||
"components.PermissionEdit.autorequestDescription": "Giv tilladelse til automatisk at indsende forespørgsler om ikke-4K-medier via Plex Watchlist.",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, antal}</strong> {playCount, plural, one {spil} other{spiller}}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Forespørg automatisk film på din <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Forespørg automatisk serier",
|
||||
"components.Discover.studios": "Studier",
|
||||
"components.Discover.tmdbmoviegenre": "TMDB filmgenre",
|
||||
"components.Settings.SettingsMain.apikey": "API nøgle",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Applikationstitel",
|
||||
"components.Settings.SettingsMain.applicationurl": "Applikations-URL",
|
||||
"components.Settings.SettingsMain.cacheImages": "Aktiver billedcaching",
|
||||
"components.Settings.SettingsMain.locale": "Grænsefladesprog",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtrer indhold efter originalsprog",
|
||||
"components.Settings.SettingsMain.originallanguage": "Discover sprog",
|
||||
"components.Discover.CreateSlider.searchStudios": "Søg studier…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Navn på skyder",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Film",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Kunne ikke slette skyderen.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Skyderen blev slettet.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Slå Synlighed til/fra",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Fjern",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Serie",
|
||||
"components.Discover.CreateSlider.needresults": "Du skal have mindst 1 resultat.",
|
||||
"components.Discover.CreateSlider.nooptions": "Ingen resultater.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Angiv et TMDB-genre-ID",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Angiv et TMDB-søgeords-id",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Angiv TMDB-netværks-id",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Angiv en søgeforespørgsel",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Angiv TMDB Studio ID",
|
||||
"components.Discover.CreateSlider.searchGenres": "Søg genrer…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Søg nøgleord…",
|
||||
"components.Discover.CreateSlider.starttyping": "Begynder at skrive for at søge.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Du skal angive en titel.",
|
||||
"components.Discover.CreateSlider.addSlider": "Tilføj skyder",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Opret brugerdefineret skyder",
|
||||
"components.Discover.CreateSlider.addfail": "Kunne ikke oprette ny skyder.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Du skal angive en dataværdi.",
|
||||
"components.Discover.createnewslider": "Opret ny skyder",
|
||||
"components.Discover.customizediscover": "Tilpas Discover",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Medier føjet til din <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> vises her.",
|
||||
"components.Discover.resetwarning": "Nulstil alle skydere til standard. Dette vil også slette eventuelle brugerdefinerede skydere!",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Cache eksterne billeder (anvender en betydelig mængde diskplads)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Aktivér CSRF Beskyttelse",
|
||||
"components.Settings.SettingsMain.generalsettings": "Generelle Indstillinger",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Sæt ekstern API-adgang til skrivebeskyttet (kræver HTTPS)",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Ny API-nøgle er blevet genereret!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Noget gik galt da indstillingerne skulle gemmes.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Indstillingerne er blevet gemt!",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Sæson {seasonNumber} Episode {episodeNumber}",
|
||||
"components.RequestCard.unknowntitle": "Ukendt titel",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Ukendt titel",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.Discover.CreateSlider.addsuccess": "Oprettede en ny skyder og gemte indstillingerne for tilpasninger.",
|
||||
"components.Discover.CreateSlider.editSlider": "Rediger skyder",
|
||||
"components.Discover.CreateSlider.editfail": "Kunne ikke redigere skyderen.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Redigerede skyder og gemte Discover-tilpasningsindstillinger.",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Din Plex Watchlist",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Tilføjet for nyligt",
|
||||
"components.Discover.moviegenres": "Filmgenrer",
|
||||
"components.Discover.networks": "Netværk",
|
||||
"components.Discover.resetfailed": "Noget gik galt med at nulstille indstillingerne for Discover-tilpasning.",
|
||||
"components.Discover.resetsuccess": "Nulstilling af discover tilpasning lykkedes.",
|
||||
"components.Discover.resettodefault": "Nulstil til standard",
|
||||
"components.Discover.stopediting": "Stop redigering",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB film nøgleord",
|
||||
"components.Discover.tmdbnetwork": "TMDB netværk",
|
||||
"components.Discover.tmdbsearch": "TMDB-søgning",
|
||||
"components.Discover.tmdbstudio": "TMDB-studiet",
|
||||
"components.Discover.tmdbtvgenre": "TMDB-serie Genre",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB-seriens nøgleord",
|
||||
"components.Discover.tvgenres": "Seriegenrer",
|
||||
"components.Discover.updatefailed": "Noget gik galt med at nulstille indstillingerne for Discover-tilpasning.",
|
||||
"components.Discover.updatesuccess": "Opdaterede Discover-tilpasningsindstillinger.",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Du må IKKE aktivere denne indstilling, medmindre du ved, hvad du gør!",
|
||||
"components.Settings.SettingsMain.general": "Generelt",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfigurér global- og standardindstillinger for Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Skjul Tilgængelige Medier",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Tillad delvise serieanmodninger",
|
||||
"components.Settings.SettingsMain.region": "Discover region",
|
||||
"components.Settings.SettingsMain.regionTip": "Filtrér indhold efter regional tilgængelighed",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Noget gik galt under genereringen af en nye API-nøgle.",
|
||||
"components.Settings.SettingsMain.trustProxy": "Aktivér Proxy-understøttelse",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Tillad Jellyseerr at registrere klienters IP addresser korrekt bag en proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Du skal angive en applikationstitel",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Du skal angive en gyldig URL",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL'en må ikke afsluttes med en skråstreg",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Popularitet stigende",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Popularitet faldende",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Udgivelsesdato stigende",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Film",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, flertal, en {# Active Filter} andre {# Active Filters}}",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Udgivelsesdato faldende",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Titel (A-Z) stigende",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Titel (Z-A) faldende",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB-rating stigende",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB-rating faldende",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# Active Filter} andre{# Active Filters}}",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serier",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Første udsendelsesdato stigende",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Første udsendelsesdato faldende",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titel (A-Z) stigende",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-rating stigende",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB-rating faldende",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Active Filter} andre{# Active Filters}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Ryd aktive filtre",
|
||||
"components.Discover.FilterSlideover.filters": "Filtre",
|
||||
"components.Discover.FilterSlideover.from": "Fra",
|
||||
"components.Discover.FilterSlideover.genres": "Genrer",
|
||||
"components.Discover.FilterSlideover.keywords": "Nøgleord",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Originalsprog",
|
||||
"components.Discover.FilterSlideover.ratingText": "Bedømmelser mellem {minValue} og {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Udgivelsesdato",
|
||||
"components.Discover.FilterSlideover.runtime": "Spilletid",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} spilletidsminutter",
|
||||
"components.Discover.FilterSlideover.studio": "Studie",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "TMDB brugerscore",
|
||||
"components.Layout.Sidebar.browsemovies": "Film",
|
||||
"components.Layout.Sidebar.browsetv": "Serier",
|
||||
"components.Selector.nooptions": "Ingen resultater.",
|
||||
"components.Selector.searchGenres": "Vælg genrer…",
|
||||
"components.Selector.searchKeywords": "Søg nøgleord…",
|
||||
"components.Selector.starttyping": "Begynder at skrive for at søge.",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Popularitet faldende",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Popularitet stigende",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titel (Z-A) faldende",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Første udsendelsesdato",
|
||||
"components.Selector.searchStudios": "Søg efter studier…",
|
||||
"components.Discover.FilterSlideover.to": "Til",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Streamingtjenester",
|
||||
"components.Selector.showless": "Vis mindre",
|
||||
"components.Selector.showmore": "Vis mere",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Hvert {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}",
|
||||
"components.Discover.tmdbmoviestreamingservices": "TMDB Film Streaming Services",
|
||||
"components.Discover.tmdbtvstreamingservices": "TMDB TV Streaming Services",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Synkronisering af mediernes tilgængelighed",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Antal TMDB bruger stemmer",
|
||||
"components.Discover.FilterSlideover.voteCount": "Antal af stemmer mellem {minValue} og {maxValue}",
|
||||
"components.Settings.RadarrModal.tagRequests": "Tag forespørgsler",
|
||||
"components.Settings.SonarrModal.tagRequests": "Tag forespørgsler",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Tilføj automatisk et ekstra tag med forespørgerens bruger ID og viste navn",
|
||||
"i18n.collection": "Samling",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Tilføj automatisk et ekstra tag med forespørgerens bruger id og viste navn"
|
||||
}
|
||||
|
||||
@@ -6,14 +6,14 @@
|
||||
"components.CollectionDetails.overview": "Übersicht",
|
||||
"components.CollectionDetails.requestcollection": "Sammlung anfragen",
|
||||
"components.CollectionDetails.requestcollection4k": "Sammlung in 4K anfragen",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre} Filme",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre}-Filme",
|
||||
"components.Discover.DiscoverMovieLanguage.languageMovies": "Filme auf {language}",
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "{network} Serien",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "{studio} Filme",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "{genre} Serien",
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "{network}-Serien",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "{studio}-Filme",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "{genre}-Serien",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "Serien auf {language}",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Deine Plex Watchlist",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Deine Plex-Watchlist",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Merkliste",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Filmgenres",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Filmgenres",
|
||||
"components.Discover.NetworkSlider.networks": "Sender",
|
||||
@@ -23,9 +23,10 @@
|
||||
"components.Discover.discover": "Entdecken",
|
||||
"components.Discover.discovermovies": "Beliebte Filme",
|
||||
"components.Discover.discovertv": "Beliebte Serien",
|
||||
"components.Discover.emptywatchlist": "Medien, die zu deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> hinzugefügt wurden, werden hier angezeigt.",
|
||||
"components.Discover.emptywatchlist": "Hier erscheinen deine zur <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> hinzugefügte Medien.",
|
||||
"components.Discover.noRequests": "Keine Anfragen.",
|
||||
"components.Discover.plexwatchlist": "Deine Plex Watchlist",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Kürzlich hinzugefügt",
|
||||
"components.Discover.popularmovies": "Beliebte Filme",
|
||||
"components.Discover.populartv": "Beliebte Serien",
|
||||
"components.Discover.recentlyAdded": "Kürzlich hinzugefügt",
|
||||
@@ -34,8 +35,8 @@
|
||||
"components.Discover.upcoming": "Kommende Filme",
|
||||
"components.Discover.upcomingmovies": "Kommende Filme",
|
||||
"components.Discover.upcomingtv": "Kommende Serien",
|
||||
"components.DownloadBlock.estimatedtime": "Geschätzt {time}",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Staffel {seasonNumber} Folge {episodeNumber}",
|
||||
"components.DownloadBlock.estimatedtime": "Geschätzte {time}",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Staffel {seasonNumber} Episode {episodeNumber}",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Soll dieser Kommentar wirklich gelöscht werden?",
|
||||
"components.IssueDetails.IssueComment.delete": "Kommentar löschen",
|
||||
"components.IssueDetails.IssueComment.edit": "Kommentar bearbeiten",
|
||||
@@ -117,8 +118,8 @@
|
||||
"components.Layout.Sidebar.requests": "Anfragen",
|
||||
"components.Layout.Sidebar.settings": "Einstellungen",
|
||||
"components.Layout.Sidebar.users": "Benutzer",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Filmanfragen",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serienanfragen",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Film-Anfragen",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serien-Anfragen",
|
||||
"components.Layout.UserDropdown.myprofile": "Profil",
|
||||
"components.Layout.UserDropdown.requests": "Anfragen",
|
||||
"components.Layout.UserDropdown.settings": "Einstellungen",
|
||||
@@ -126,21 +127,21 @@
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {Version} other {Versionen}} hinterher",
|
||||
"components.Layout.VersionStatus.outofdate": "Veraltet",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Entwicklung",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr Stabil",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr Stable",
|
||||
"components.Login.email": "E-Mail-Adresse",
|
||||
"components.Login.forgotpassword": "Passwort vergessen?",
|
||||
"components.Login.loginerror": "Beim Anmelden ist etwas schief gelaufen.",
|
||||
"components.Login.password": "Passwort",
|
||||
"components.Login.signin": "Anmelden",
|
||||
"components.Login.signingin": "Anmelden …",
|
||||
"components.Login.signingin": "Anmelden …",
|
||||
"components.Login.signinheader": "Anmelden um fortzufahren",
|
||||
"components.Login.signinwithoverseerr": "Verwende dein {applicationTitle} Konto",
|
||||
"components.Login.signinwithplex": "Benutze dein Plex Konto",
|
||||
"components.Login.signinwithoverseerr": "Verwende dein {applicationTitle}-Konto",
|
||||
"components.Login.signinwithplex": "Benutze dein Plex-Konto",
|
||||
"components.Login.validationemailrequired": "Du musst eine gültige E-Mail-Adresse angeben",
|
||||
"components.Login.validationpasswordrequired": "Du musst ein Passwort angeben",
|
||||
"components.ManageSlideOver.alltime": "Gesamte Zeit",
|
||||
"components.ManageSlideOver.downloadstatus": "Downloads",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Fortgeschritten",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Fortgeschrittene",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "Daten löschen",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Dadurch werden alle Daten für diesen {mediaType} unwiderruflich entfernt, einschließlich aller Anfragen. Wenn dieses Element in deiner {mediaServerName}-Bibliothek existiert, werden die Medieninformationen beim nächsten Scan neu erstellt.",
|
||||
"components.ManageSlideOver.manageModalIssues": "Problem eröffnen",
|
||||
@@ -161,7 +162,7 @@
|
||||
"components.ManageSlideOver.playedby": "Abgespielt von",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {abgespielt} other {abgespielt}}",
|
||||
"components.ManageSlideOver.tvshow": "Serie",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Mehr anzeigen",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Mehr anschauen",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Komplette Besetzung",
|
||||
"components.MovieDetails.MovieCrew.fullcrew": "Komplette Crew",
|
||||
"components.MovieDetails.budget": "Budget",
|
||||
@@ -174,13 +175,13 @@
|
||||
"components.MovieDetails.originaltitle": "Originaltitel",
|
||||
"components.MovieDetails.overview": "Übersicht",
|
||||
"components.MovieDetails.overviewunavailable": "Übersicht nicht verfügbar.",
|
||||
"components.MovieDetails.physicalrelease": "Physikalische Veröffentlichung",
|
||||
"components.MovieDetails.physicalrelease": "DVD/Bluray-Veröffentlichungen",
|
||||
"components.MovieDetails.play4konplex": "In 4K auf Plex abspielen",
|
||||
"components.MovieDetails.playonplex": "Auf Plex abspielen",
|
||||
"components.MovieDetails.productioncountries": "Produktions{countryCount, plural, one {land} other {länder}}",
|
||||
"components.MovieDetails.productioncountries": "Produktions {countryCount, plural, one {Land} other {Länder}}",
|
||||
"components.MovieDetails.recommendations": "Empfehlungen",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Veröffentlichungstermin} other {Veröffentlichungstermine}}",
|
||||
"components.MovieDetails.reportissue": "Ein Problem melden",
|
||||
"components.MovieDetails.reportissue": "Problem melden",
|
||||
"components.MovieDetails.revenue": "Einnahmen",
|
||||
"components.MovieDetails.rtaudiencescore": "Rotten Tomatoes Publikumswertung",
|
||||
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
|
||||
@@ -191,7 +192,7 @@
|
||||
"components.MovieDetails.streamingproviders": "Streamt derzeit auf",
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {Studio} other {Studios}}",
|
||||
"components.MovieDetails.theatricalrelease": "Kinostart",
|
||||
"components.MovieDetails.tmdbuserscore": "TMDB-Benutzerbewertung",
|
||||
"components.MovieDetails.tmdbuserscore": "TMDB-Nutzerwertung",
|
||||
"components.MovieDetails.viewfullcrew": "Komplette Crew anzeigen",
|
||||
"components.MovieDetails.watchtrailer": "Trailer ansehen",
|
||||
"components.NotificationTypeSelector.adminissuecommentDescription": "Sende eine Benachrichtigung, wenn andere Benutzer Kommentare zu Problemen abgeben.",
|
||||
@@ -209,8 +210,8 @@
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Sende eine Benachrichtigung, wenn das angeforderte Medium automatisch genehmigt wird.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Anfrage genehmigt",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Sende Benachrichtigungen, wenn angeforderte Medien manuell genehmigt wurden.",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Anfrage automatisch eingereicht",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Lasse dich benachrichtigen, wenn neue Medienanfragen für Objekte auf deiner Plex Watchlist automatisch eingereicht werden.",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Automatisch übermittelte Anfrage",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Erhalten eine Benachrichtigung, wenn neue Medienanfragen für Objekte auf deiner Plex Watchlist automatisch übermittelt werden.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Anfrage verfügbar",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Sendet Benachrichtigungen, wenn angeforderte Medien verfügbar werden.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Anfrage abgelehnt",
|
||||
@@ -225,63 +226,63 @@
|
||||
"components.NotificationTypeSelector.userissuereopenedDescription": "Sende eine Benachrichtigung, wenn die von dir gemeldeten Probleme wieder geöffnet werden.",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Sende eine Benachrichtigung, wenn andere Benutzer Kommentare zu Problemen abgeben.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Werde benachrichtigt, wenn andere Nutzer Medien anfordern, welche automatisch angenommen werden.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Werde benachrichtigt, wenn deine Medienanfrage angenommen wurde.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Sende eine Benachrichtigung, wenn deine Medienanfragen verfügbar sind.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Werde benachrichtigt, wenn Ihre Medienanfrage angenommen wurde.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Sende eine Benachrichtigung, wenn Ihre Medienanfragen verfügbar sind.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Werde benachrichtigt, wenn deine Medienanfrage abgelehnt wurde.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Werde benachrichtigt, wenn die angeforderten Medien bei der Hinzufügung zu Radarr oder Sonarr fehlschlagen.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Werde benachrichtigt, wenn andere Nutzer ein Medium anfordern, welches eine Genehmigung erfordert.",
|
||||
"components.PermissionEdit.admin": "Admin",
|
||||
"components.PermissionEdit.adminDescription": "Voller Administratorzugriff. Umgeht alle anderen Rechteabfragen.",
|
||||
"components.PermissionEdit.advancedrequest": "Erweiterte Anfragen",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Gewähre Berechtigung zum Ändern erweiterter Anfrageoptionen.",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Autorisierung zur Änderung der erweiterten Optionen für Medienanfragen.",
|
||||
"components.PermissionEdit.autoapprove": "Automatische Genehmigung",
|
||||
"components.PermissionEdit.autoapprove4k": "Automatische Genehmigung von 4K",
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Gewähre Berechtigung zur automatischen Genehmigung von allen 4K Anfragen.",
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Autorisierung der automatischen Freigabe für alle 4K-Medienanfragen.",
|
||||
"components.PermissionEdit.autoapprove4kMovies": "Automatische Genehmigung von 4K Filmen",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "Gewähre Berechtigung zur automatischen Genehmigung von 4K Filmanfragen.",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "Autorisierung der automatischen Freigabe von Anfragen für 4K-Filme.",
|
||||
"components.PermissionEdit.autoapprove4kSeries": "Automatische Genehmigung von 4K Serien",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "Gewähre Berechtigung zur automatischen Genehmigung von 4K Serienanfragen.",
|
||||
"components.PermissionEdit.autoapproveDescription": "Gewähre Berechtigung zur automatischen Genehmigung von allen nicht-4K Anfragen.",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "Autorisierung der automatischen Freigabe von Anfragen für 4K-Serien.",
|
||||
"components.PermissionEdit.autoapproveDescription": "Autorisierung der automatischen Freigabe von nicht-4K Anfragen.",
|
||||
"components.PermissionEdit.autoapproveMovies": "Automatische Genehmigung von Filmen",
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "Gewähre Berechtigung zur automatischen Genehmigung von nicht-4K Filmanfragen.",
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "Autorisierung der automatischen Freigabe von Anfragen für nicht-4K-Filme.",
|
||||
"components.PermissionEdit.autoapproveSeries": "Automatische Genehmigung von Serien",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Gewähre Berechtigung zur automatischen Genehmigung von nicht-4K Serienanfragen.",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Autorisierung der automatischen Freigabe von Anfragen für nicht-4K-Serien.",
|
||||
"components.PermissionEdit.autorequest": "Automatische Anfrage",
|
||||
"components.PermissionEdit.autorequestDescription": "Erlaube die automatische Übermittlung von Anfragen für Nicht-4K-Medien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.autorequestMovies": "Auto-Request Filme",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Erlauben es, automatisch Anfragen für Nicht-4K-Filme über die Plex Watchlist zu stellen.",
|
||||
"components.PermissionEdit.autorequestSeries": "Auto-Request-Serie",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Erlaube es, automatisch Anfragen für Nicht-4K-Serien über die Plex Watchlist zu stellen.",
|
||||
"components.PermissionEdit.autorequestDescription": "Autorisierung zur automatischen Anfrage von Nicht-4K-Medien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.autorequestMovies": "Filme automatisch anfragen",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Autorisierung zur automatischen Anfrage von Nicht-4K-Medien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.autorequestSeries": "Auto-Anfrage-Serien",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Autorisierung der automatischen Anfrage von Nicht-4K-Serien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.createissues": "Probleme melden",
|
||||
"components.PermissionEdit.createissuesDescription": "Berechtigt, Medienprobleme zu melden.",
|
||||
"components.PermissionEdit.createissuesDescription": "Autorisierung zur Meldung von Medienproblemen.",
|
||||
"components.PermissionEdit.manageissues": "Probleme verwalten",
|
||||
"components.PermissionEdit.manageissuesDescription": "Berechtigt, Medienprobleme zu verwalten.",
|
||||
"components.PermissionEdit.manageissuesDescription": "Autorisierung zur Verwaltung von Medienproblemen.",
|
||||
"components.PermissionEdit.managerequests": "Anfragen verwalten",
|
||||
"components.PermissionEdit.managerequestsDescription": "Gewähre Berechtigung zum Verwalten von Medienanfragen. Alle Anfragen eines Benutzers mit dieser Berechtigung werden automatisch genehmigt.",
|
||||
"components.PermissionEdit.managerequestsDescription": "Autorisierung zur Verwaltung von Medienanfragen. Alle Anfragen, die von einem Benutzer mit dieser Berechtigung gestellt werden, werden automatisch genehmigt.",
|
||||
"components.PermissionEdit.request": "Anfrage",
|
||||
"components.PermissionEdit.request4k": "4K anfragen",
|
||||
"components.PermissionEdit.request4kDescription": "Gewähre Berechtigung Medien in 4K anzufragen.",
|
||||
"components.PermissionEdit.request4kDescription": "Autorisierung zur Anfrage von Medien in 4K.",
|
||||
"components.PermissionEdit.request4kMovies": "4K Filme anfragen",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "Berechtigt, Filme in 4K anzufragen.",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "Autorisierung zur Übermittlung von Anfragen für 4K-Filme.",
|
||||
"components.PermissionEdit.request4kTv": "4K Serien anfragen",
|
||||
"components.PermissionEdit.request4kTvDescription": "Berechtigt, Serien in 4K anzufragen.",
|
||||
"components.PermissionEdit.requestDescription": "Berechtigt, nicht-4K Inhalte anzufragen.",
|
||||
"components.PermissionEdit.request4kTvDescription": "Autorisierung zur Übermittlung von Anfragen für 4K-Serien.",
|
||||
"components.PermissionEdit.requestDescription": "Autorisierung zur Übermittlung von Anfragen für nicht-4K Medien.",
|
||||
"components.PermissionEdit.requestMovies": "Filme anfragen",
|
||||
"components.PermissionEdit.requestMoviesDescription": "Berechtigt, nicht-4K Filme anzufordern.",
|
||||
"components.PermissionEdit.requestMoviesDescription": "Autorisierung zur Übermittlung von Anfragen für nicht-4K-Filme.",
|
||||
"components.PermissionEdit.requestTv": "Serien anfragen",
|
||||
"components.PermissionEdit.requestTvDescription": "Berechtigt, nicht-4K Serien anzufragen.",
|
||||
"components.PermissionEdit.requestTvDescription": "Autorisierung zur Übermittlung von Anfragen für nicht-4K-Serien.",
|
||||
"components.PermissionEdit.settings": "Einstellungen verwalten",
|
||||
"components.PermissionEdit.settingsDescription": "Gewähre Berechtigung um globale Einstellungen zu ändern. Ein Benutzer muss über diese Berechtigung verfügen, um sie anderen Benutzern erteilen zu können.",
|
||||
"components.PermissionEdit.users": "Benutzer verwalten",
|
||||
"components.PermissionEdit.usersDescription": "Gewähre Berechtigung zum Verwalten von Benutzern. Benutzer mit dieser Berechtigung können Benutzer mit Adminrechten nicht bearbeiten oder Adminrechte erteilen.",
|
||||
"components.PermissionEdit.usersDescription": "Autorisierung zur Benutzerverwaltung erteilen. Benutzer mit dieser Berechtigung können keine Benutzer mit Admin-Recht ändern oder das Admin-Recht gewähren.",
|
||||
"components.PermissionEdit.viewissues": "Probleme ansehen",
|
||||
"components.PermissionEdit.viewissuesDescription": "Berechtigt, von andereren Nutzern gemeldete Medienprobleme zu sehen.",
|
||||
"components.PermissionEdit.viewissuesDescription": "Autorisierung zur Ansicht von Medienproblemen, die von anderen Benutzern gemeldet wurden.",
|
||||
"components.PermissionEdit.viewrecent": "Kürzlich hinzugefügt anzeigen",
|
||||
"components.PermissionEdit.viewrecentDescription": "Erteile die Erlaubnis, die Liste der kürzlich hinzugefügten Medien anzuzeigen.",
|
||||
"components.PermissionEdit.viewrecentDescription": "Autorisierung zur Anzeige der Liste der kürzlich hinzugefügten Medien.",
|
||||
"components.PermissionEdit.viewrequests": "Anfragen anzeigen",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Berechtigt, Anfragen anderer Nutzer zu sehen.",
|
||||
"components.PermissionEdit.viewwatchlists": "Plex Watchlists anzeigen",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Erteile die Erlaubnis, die Plex Watchlists anderer Benutzer einzusehen.",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Autorisierung zur Anzeige der von anderen Benutzern eingereichten Medienanfragen.",
|
||||
"components.PermissionEdit.viewwatchlists": "Plex Watchlist anzeigen",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Autorisierung zur Anzeige von Plex Watchlists anderer Benutzer.",
|
||||
"components.PersonDetails.alsoknownas": "Auch bekannt unter: {names}",
|
||||
"components.PersonDetails.appearsin": "Auftritte",
|
||||
"components.PersonDetails.ascharacter": "als {character}",
|
||||
@@ -305,20 +306,20 @@
|
||||
"components.RequestBlock.languageprofile": "Sprachprofil",
|
||||
"components.RequestBlock.lastmodifiedby": "Zuletzt geändert von",
|
||||
"components.RequestBlock.profilechanged": "Qualitätsprofil",
|
||||
"components.RequestBlock.requestdate": "Datum der Anfrage",
|
||||
"components.RequestBlock.requestedby": "Angefordert von",
|
||||
"components.RequestBlock.requestdate": "Anfrage-Datum",
|
||||
"components.RequestBlock.requestedby": "Angefragt von",
|
||||
"components.RequestBlock.requestoverrides": "Anfrage Überschreibungen",
|
||||
"components.RequestBlock.rootfolder": "Stammordner",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Staffel} other {Staffeln}}",
|
||||
"components.RequestBlock.server": "Zielserver",
|
||||
"components.RequestButton.approve4krequests": "Genehmige {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Anfragen}}",
|
||||
"components.RequestButton.approve4krequests": "Genehmige {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Requests}}",
|
||||
"components.RequestButton.approverequest": "Anfrage genehmigen",
|
||||
"components.RequestButton.approverequest4k": "4K Anfrage genehmigen",
|
||||
"components.RequestButton.approverequests": "Genehmige {requestCount, plural, one {Anfrage} other {{requestCount} Anfragen}}",
|
||||
"components.RequestButton.decline4krequests": "Lehne {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Anfragen}} ab",
|
||||
"components.RequestButton.approverequests": "Genehmige {requestCount, plural, one {Anfrage} other {{requestCount} Requests}}",
|
||||
"components.RequestButton.decline4krequests": "Lehne {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Requests}} ab",
|
||||
"components.RequestButton.declinerequest": "Anfrage ablehnen",
|
||||
"components.RequestButton.declinerequest4k": "4K Anfrage ablehnen",
|
||||
"components.RequestButton.declinerequests": "Lehne {requestCount, plural, one {Anfrage} other {{requestCount} Anfragen}} ab",
|
||||
"components.RequestButton.declinerequests": "Lehne {requestCount, plural, one {Anfrage} other {{requestCount} Requests}} ab",
|
||||
"components.RequestButton.requestmore": "Mehr anfragen",
|
||||
"components.RequestButton.requestmore4k": "Mehr in 4K anfragen",
|
||||
"components.RequestButton.viewrequest": "Anfrage anzeigen",
|
||||
@@ -329,23 +330,23 @@
|
||||
"components.RequestCard.deleterequest": "Anfrage löschen",
|
||||
"components.RequestCard.editrequest": "Anfrage bearbeiten",
|
||||
"components.RequestCard.failedretry": "Beim erneuten Versuch die Anfrage zu senden ist ein Fehler aufgetreten.",
|
||||
"components.RequestCard.mediaerror": "Der zugehörige Titel für diese Anfrage ist nicht mehr verfügbar.",
|
||||
"components.RequestCard.mediaerror": "{mediaType} wurde nicht gefunden",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {Staffel} other {Staffeln}}",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.tvdbid": "TheTVDB ID",
|
||||
"components.RequestCard.tmdbid": "TMDB-ID",
|
||||
"components.RequestCard.tvdbid": "TheTVDB-ID",
|
||||
"components.RequestCard.unknowntitle": "Unbekannter Titel",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Anfrage abbrechen",
|
||||
"components.RequestList.RequestItem.deleterequest": "Anfrage löschen",
|
||||
"components.RequestList.RequestItem.editrequest": "Anfrage bearbeiten",
|
||||
"components.RequestList.RequestItem.failedretry": "Beim Wiederholen der Anfrage ist etwas schief gelaufen.",
|
||||
"components.RequestList.RequestItem.mediaerror": "Der zugehörige Titel für diese Anfrage ist nicht mehr verfügbar.",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} wurde nicht gefunden",
|
||||
"components.RequestList.RequestItem.modified": "Geändert",
|
||||
"components.RequestList.RequestItem.modifieduserdate": "{date} von {user}",
|
||||
"components.RequestList.RequestItem.requested": "Angefragt",
|
||||
"components.RequestList.RequestItem.requesteddate": "Angefordert",
|
||||
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Staffel} other {Staffeln}}",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB-ID",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB-ID",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Unbekannter Titel",
|
||||
"components.RequestList.requests": "Anfragen",
|
||||
"components.RequestList.showallrequests": "Zeige alle Anfragen",
|
||||
@@ -376,7 +377,7 @@
|
||||
"components.RequestModal.QuotaDisplay.season": "Staffeln",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {Staffel} other {Staffeln}}",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "Wir konnten keine Übereinstimmung für diese Serie finden.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Wir konnten deine Anfrage nicht automatisch zuordnen. Bitte wähle eine korrekte Übereinstimmung aus der Liste aus.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Wir konnten diese Serie nicht automatisch zuordnen. Bitte wähle unten eine korrekte Übereinstimmung aus.",
|
||||
"components.RequestModal.alreadyrequested": "Bereits Angefragt",
|
||||
"components.RequestModal.approve": "Anfrage genehmigen",
|
||||
"components.RequestModal.autoapproval": "Automatische Genehmigung",
|
||||
@@ -393,19 +394,19 @@
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> erfolgreich angefragt!",
|
||||
"components.RequestModal.requestadmin": "Diese Anfrage wird automatisch genehmigt.",
|
||||
"components.RequestModal.requestcancelled": "Anfrage für <strong>{title}</strong> abgebrochen.",
|
||||
"components.RequestModal.requestcollection4ktitle": "Sammlung in 4K anfordern",
|
||||
"components.RequestModal.requestcollectiontitle": "Sammlung anfordern",
|
||||
"components.RequestModal.requestcollection4ktitle": "Sammlung in 4k anfragen",
|
||||
"components.RequestModal.requestcollectiontitle": "Sammlung anfragen",
|
||||
"components.RequestModal.requestedited": "Anfrage für <strong>{title}</strong> erfolgreich bearbeitet!",
|
||||
"components.RequestModal.requesterror": "Beim Senden der Anfragen ist etwas schief gelaufen.",
|
||||
"components.RequestModal.requestfrom": "Die Anfrage von {username} muss noch genehmigt werden.",
|
||||
"components.RequestModal.requestmovie4ktitle": "Film in 4K anfordern",
|
||||
"components.RequestModal.requestmovie4ktitle": "Film in 4k anfragen",
|
||||
"components.RequestModal.requestmovies": "Anfrage {count} {count, plural, one {Film} other {Filme}}",
|
||||
"components.RequestModal.requestmovies4k": "Anfrage {count} {count, plural, one {Film} other {Filme}} in 4K",
|
||||
"components.RequestModal.requestmovietitle": "Film anfordern",
|
||||
"components.RequestModal.requestmovietitle": "Film anfragen",
|
||||
"components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {Staffel} other {Staffeln}} anfragen",
|
||||
"components.RequestModal.requestseasons4k": "Anfrage {seasonCount} {seasonCount, plural, one {Serie} other {Serien}} in 4K",
|
||||
"components.RequestModal.requestseries4ktitle": "Serie in 4K anfordern",
|
||||
"components.RequestModal.requestseriestitle": "Serie anfordern",
|
||||
"components.RequestModal.requestseries4ktitle": "Serie in 4k anfragen",
|
||||
"components.RequestModal.requestseriestitle": "Serie anfragen",
|
||||
"components.RequestModal.season": "Staffel",
|
||||
"components.RequestModal.seasonnumber": "Staffel {number}",
|
||||
"components.RequestModal.selectmovies": "Wähle Film(e)",
|
||||
@@ -446,11 +447,11 @@
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSending": "LunaSea Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSuccess": "LunaSea Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Du musst eine gültige URL angeben",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Geben sie eine valide URL an",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Deine Benutzer oder Geräte basierende <LunaSeaLink>Benachrichtigungs-Webhook URL</LunaSeaLink>",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "Zugangstoken",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Erstelle einen Token aus deinen <PushbulletSettingsLink>Kontoeinstellungen</PushbulletSettingsLink>",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Erstellen Sie einen Token in Ihren <PushbulletSettingsLink>Account Einstellungen</PushbulletSettingsLink>",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "Agent aktivieren",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "Channel Tag",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "Pushbullet-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
@@ -645,17 +646,17 @@
|
||||
"components.Settings.SettingsJobsCache.download-sync": "Download Synchronisierung",
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "Download Synchronisierung Zurücksetzung",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedule": "Job ändern",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Aktuelle Frequenz",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Aktuelle Häufigkeit",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Häufigkeit",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Alle {jobScheduleHours, plural, one {Stunde} other {{jobScheduleHours} Stunden}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Alle {jobScheduleMinutes, plural, one {Minute} other {{jobScheduleMinutes} Minuten}}",
|
||||
"components.Settings.SettingsJobsCache.flushcache": "Cache leeren",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Bild Cache Bereinigung",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Bild Cache",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Wenn diese Funktion in den Einstellungen aktiviert ist, wird Jellyseerr Bilder aus vorkonfigurierten externen Quellen cachen und ausliefern. Bilder im Cache werden in deinem Config Ordner abgelegt. Die findest die Dateien unter <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Bild-Cache-Bereinigung",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Bild-Cache",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Wenn diese Funktion in den Einstellungen aktiviert ist, wird Jellyseerr Bilder aus vorkonfigurierten externen Quellen im Proxy-Cache zwischenspeichern. Bilder im Zwischenspeicher werden in deinem Konfigurationsordner gespeichert. Du findest die Dateien unter <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Bilder im Cache",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Gesamtgröße des Cache",
|
||||
"components.Settings.SettingsJobsCache.jelly-recently-added-scan": "Scan der zuletzt hinzugefügten Jellyfin Medien",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Gesamtgröße des Caches",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Scan der zuletzt hinzugefügten Jellyfin Medien",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Vollständiger Jellyfin Bibliotheken Scan",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Beim Speichern des Auftrags ging etwas schief.",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Auftrag erfolgreich bearbeitet!",
|
||||
@@ -669,7 +670,7 @@
|
||||
"components.Settings.SettingsJobsCache.nextexecution": "Nächste Ausführung",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Vollständiger Plex Bibliotheken Scan",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Scan der zuletzt hinzugefügten Plex Medien",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Watchlist Sync",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex-Watchlist Sync",
|
||||
"components.Settings.SettingsJobsCache.process": "Prozess",
|
||||
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr Scan",
|
||||
"components.Settings.SettingsJobsCache.runnow": "Jetzt ausführen",
|
||||
@@ -762,7 +763,7 @@
|
||||
"components.Settings.addradarr": "Radarr-Server hinzufügen",
|
||||
"components.Settings.address": "Adresse",
|
||||
"components.Settings.addsonarr": "Sonarr-Server hinzufügen",
|
||||
"components.Settings.advancedTooltip": "Wenn du diese Einstellung falsch konfigurierst, kann dies zu Funktionsstörungen führen.",
|
||||
"components.Settings.advancedTooltip": "Bei falscher Konfiguration dieser Einstellung, kann dies zu einer Funktionsstörung führen",
|
||||
"components.Settings.apikey": "API-Schlüssel",
|
||||
"components.Settings.applicationTitle": "Anwendungstitel",
|
||||
"components.Settings.applicationurl": "Anwendungs-URL",
|
||||
@@ -839,7 +840,7 @@
|
||||
"components.Settings.startscan": "Durchsuchung starten",
|
||||
"components.Settings.tautulliApiKey": "API-Schlüssel",
|
||||
"components.Settings.tautulliSettings": "Tautulli Einstellungen",
|
||||
"components.Settings.tautulliSettingsDescription": "Optional die Einstellungen für den Tautulli-Server konfigurieren. Jellyseerr holt die Überwachungsdaten für deine Plex-Medien von Tautulli.",
|
||||
"components.Settings.tautulliSettingsDescription": "Optional die Einstellungen für den Tautulli-Server konfigurieren. Jellyseerr holt die Überwachungsdaten für Ihre Plex-Medien von Tautulli.",
|
||||
"components.Settings.toastApiKeyFailure": "Bei der Generierung eines neuen API-Schlüssels ist etwas schief gelaufen.",
|
||||
"components.Settings.toastApiKeySuccess": "Neuer API-Schlüssel erfolgreich generiert!",
|
||||
"components.Settings.toastPlexConnecting": "Versuche mit Plex zu verbinden …",
|
||||
@@ -881,31 +882,31 @@
|
||||
"components.Setup.tip": "Tipp",
|
||||
"components.Setup.welcome": "Willkommen bei Jellyseerr",
|
||||
"components.StatusBadge.managemedia": "{mediaType} verwalten",
|
||||
"components.StatusBadge.openinarr": "Öffnen in {arr}",
|
||||
"components.StatusBadge.playonplex": "Abspielen in {mediaServerName}",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.StatusBadge.openinarr": "In {arr} öffnen",
|
||||
"components.StatusBadge.playonplex": "Auf Plex abspielen",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}F{episodeNumber}",
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.StatusChacker.newversionDescription": "Jellyseerr wurde aktualisiert! Bitte klicke auf die Schaltfläche unten, um die Seite neu zu laden.",
|
||||
"components.StatusChacker.newversionavailable": "Anwendungsaktualisierung",
|
||||
"components.StatusChacker.reloadOverseerr": "Jellyseerr neu laden",
|
||||
"components.StatusChacker.reloadJellyseerr": "Jellyseerr neu laden",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} aktualisiert",
|
||||
"components.StatusChecker.appUpdatedDescription": "Bitte klicke auf die Schaltfläche unten, um die Anwendung neu zu laden.",
|
||||
"components.StatusChecker.appUpdatedDescription": "Klicke bitte auf die Schaltfläche unten, um die Anwendung neu zu laden.",
|
||||
"components.StatusChecker.reloadApp": "{applicationTitle} neu laden",
|
||||
"components.StatusChecker.restartRequired": "Server-Neustart erforderlich",
|
||||
"components.StatusChecker.restartRequiredDescription": "Bitte starte den Server neu, um die aktualisierten Einstellungen zu übernehmen.",
|
||||
"components.StatusChecker.restartRequired": "Server Neustart erforderlich",
|
||||
"components.StatusChecker.restartRequiredDescription": "Starte bitte den Server neu, um die aktualisierten Einstellungen zu übernehmen.",
|
||||
"components.TitleCard.cleardata": "Daten löschen",
|
||||
"components.TitleCard.mediaerror": "{mediaType} nicht gefunden",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.TvDetails.Season.noepisodes": "Die Folgenliste ist nicht verfügbar.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Beim Abrufen der Staffeldaten ist etwas schief gelaufen.",
|
||||
"components.TitleCard.mediaerror": "{mediaType} wurde nicht gefunden",
|
||||
"components.TitleCard.tmdbid": "TMDB-ID",
|
||||
"components.TitleCard.tvdbid": "TheTVDB-ID",
|
||||
"components.TvDetails.Season.noepisodes": "Liste der Episoden nicht verfügbar.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Beim Datenabruf der Staffel ist etwas schief gelaufen.",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Komplette Serien Besetzung",
|
||||
"components.TvDetails.TvCrew.fullseriescrew": "Komplette Serien-Crew",
|
||||
"components.TvDetails.anime": "Anime",
|
||||
"components.TvDetails.cast": "Besetzung",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Folge} other {# Folgen}}",
|
||||
"components.TvDetails.episodeRuntime": "Folgenlaufzeit",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Episode} other {# Episoden}}",
|
||||
"components.TvDetails.episodeRuntime": "Episodenlaufzeit",
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} Minuten",
|
||||
"components.TvDetails.firstAirDate": "Erstausstrahlung",
|
||||
"components.TvDetails.manageseries": "Serie verwalten",
|
||||
@@ -919,7 +920,7 @@
|
||||
"components.TvDetails.playonplex": "Auf Plex abspielen",
|
||||
"components.TvDetails.productioncountries": "Produktions {countryCount, plural, one {Land} other {Länder}}",
|
||||
"components.TvDetails.recommendations": "Empfehlungen",
|
||||
"components.TvDetails.reportissue": "Ein Problem melden",
|
||||
"components.TvDetails.reportissue": "Problem melden",
|
||||
"components.TvDetails.rtaudiencescore": "Rotten Tomatoes Publikumswertung",
|
||||
"components.TvDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
|
||||
"components.TvDetails.seasonnumber": "Staffel {seasonNumber}",
|
||||
@@ -929,7 +930,7 @@
|
||||
"components.TvDetails.similar": "Ähnliche Serien",
|
||||
"components.TvDetails.status4k": "4K {status}",
|
||||
"components.TvDetails.streamingproviders": "Streamt derzeit auf",
|
||||
"components.TvDetails.tmdbuserscore": "TMDB-Benutzerbewertung",
|
||||
"components.TvDetails.tmdbuserscore": "TMDB-Nutzerwertung",
|
||||
"components.TvDetails.viewfullcrew": "Komplette Crew anzeigen",
|
||||
"components.TvDetails.watchtrailer": "Trailer ansehen",
|
||||
"components.UserList.accounttype": "Art",
|
||||
@@ -965,59 +966,129 @@
|
||||
"components.UserList.totalrequests": "Anfragen",
|
||||
"components.UserList.user": "Benutzer",
|
||||
"components.UserList.usercreatedfailed": "Beim Erstellen des Benutzers ist etwas schief gelaufen.",
|
||||
"components.UserList.usercreatedfailedexisting": "Die angegebene E-Mail-Adresse wird bereits von einem anderen Benutzer verwendet.",
|
||||
"components.UserList.usercreatedsuccess": "Benutzer wurde erfolgreich erstellt!",
|
||||
"components.UserList.userdeleted": "Benutzer erfolgreich gelöscht!",
|
||||
"components.UserList.userdeleteerror": "Beim Löschen des Benutzers ist etwas schief gelaufen.",
|
||||
"components.UserList.userfail": "Beim Speichern der Benutzerberechtigungen ist ein Fehler aufgetreten.",
|
||||
"components.UserList.userlist": "Benutzerliste",
|
||||
"components.UserList.users": "Benutzer",
|
||||
"i18n.edit": "Bearbeiten",
|
||||
"i18n.experimental": "Experimentell",
|
||||
"components.UserList.userssaved": "Benutzerberechtigungen erfolgreich gespeichert!",
|
||||
"i18n.advanced": "Erweitert",
|
||||
"components.UserList.validationEmail": "Du musst eine gültige E-Mail-Adresse angeben",
|
||||
"components.UserList.validationpasswordminchars": "Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.UserProfile.ProfileHeader.joindate": "Mitglied seit dem {joindate}",
|
||||
"components.UserProfile.ProfileHeader.profile": "Profil anzeigen",
|
||||
"components.UserList.users": "Benutzer",
|
||||
"components.UserProfile.recentrequests": "Kürzliche Anfragen",
|
||||
"components.UserProfile.UserSettings.menuPermissions": "Berechtigungen",
|
||||
"components.UserProfile.UserSettings.menuNotifications": "Benachrichtigungen",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Allgemein",
|
||||
"components.UserProfile.UserSettings.menuChangePass": "Passwort",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsSuccess": "Berechtigungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsFailure": "Beim Speichern der Einstellungen ist etwas schief gelaufen.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.permissions": "Berechtigungen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPasswordLength": "Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "Du musst ein neues Passwort angeben",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "Du musst dein aktuelles Passwort angeben",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPasswordSame": "Passwörter mussen übereinstimmen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "Du musst das neue Passwort bestätigen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "Passwort erfolgreich geändert!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "Beim Speichern des Passworts ist ein Fehler aufgetreten.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.newpassword": "Neues Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Aktuelles Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Passwort bestätigen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notificationsettings": "Benachrichtigungseinstellungen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "Benutzer-ID",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Einstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Beim Speichern der Einstellungen ist etwas schief gelaufen.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex-Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Lokaler Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Allgemeine Einstellungen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Anzeigename",
|
||||
"components.UserProfile.ProfileHeader.settings": "Einstellungen bearbeiten",
|
||||
"components.UserProfile.ProfileHeader.userid": "Benutzer-ID: {userid}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.accounttype": "Kontotyp",
|
||||
"components.UserProfile.ProfileHeader.profile": "Profil anzeigen",
|
||||
"components.UserList.userfail": "Beim Speichern der Benutzerberechtigungen ist ein Fehler aufgetreten.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "Du musst eine gültige Benutzer-ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "Die <FindDiscordIdLink>ID Nummer</FindDiscordIdLink> für dein Benutzerkonto",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtere Inhalte nach regionaler Verfügbarkeit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Region Entdecken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtere Inhalte nach Originalsprache",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Sprache Entdecken",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Sie haben keine Berechtigung, das Kennwort dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Rolle",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Besitzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.admin": "Admin",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.accounttype": "Kontotyp",
|
||||
"i18n.loading": "Lade …",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "Du musst eine gültige Chat-ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Starte einen Chat</TelegramBotLink>, füge <GetIdBotLink>@get_id_bot</GetIdBotLink> hinzu, und führe den Befehl <code>/my_id</code> aus",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat-ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Sende Benachrichtigungen ohne Ton",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Lautlos senden",
|
||||
"components.UserProfile.ProfileHeader.userid": "Benutzer-ID: {userid}",
|
||||
"components.UserProfile.ProfileHeader.joindate": "Mitglied seit dem {joindate}",
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "Sie haben keine Berechtigung, die Einstellungen dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Sie können Ihre eigenen Berechtigungen nicht ändern.",
|
||||
"pages.errormessagewithcode": "{statusCode} - {error}",
|
||||
"pages.somethingwentwrong": "Etwas ist schief gelaufen",
|
||||
"pages.serviceunavailable": "Dienst nicht verfügbar",
|
||||
"pages.pagenotfound": "Seite nicht gefunden",
|
||||
"pages.internalservererror": "Interner Serverfehler",
|
||||
"i18n.usersettings": "Benutzereinstellungen",
|
||||
"i18n.settings": "Einstellungen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailureVerifyCurrent": "Beim Speichern des Passworts ist ein Fehler aufgetreten. Wurde dein aktuelles Passwort korrekt eingegeben?",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notifications": "Benachrichtigungen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.general": "Allgemein",
|
||||
"i18n.delimitedlist": "{a}, {b}",
|
||||
"i18n.view": "Anzeigen",
|
||||
"i18n.tvshow": "Serie",
|
||||
"i18n.testing": "Testen…",
|
||||
"i18n.test": "Test",
|
||||
"i18n.status": "Status",
|
||||
"i18n.showingresults": "Zeige <strong>{from}</strong> bis <strong>{to}</strong> von <strong>{total}</strong> Ergebnissen",
|
||||
"i18n.saving": "Speichern…",
|
||||
"i18n.save": "Änderungen speichern",
|
||||
"i18n.retrying": "Wiederholen…",
|
||||
"i18n.resultsperpage": "Zeige {pageSize} Ergebnisse pro Seite",
|
||||
"i18n.requesting": "Anfordern…",
|
||||
"i18n.request4k": "In 4K anfragen",
|
||||
"i18n.previous": "Bisherige",
|
||||
"i18n.notrequested": "Nicht Angefragt",
|
||||
"i18n.noresults": "Keine Ergebnisse.",
|
||||
"i18n.next": "Weiter",
|
||||
"i18n.movie": "Film",
|
||||
"i18n.canceling": "Abbrechen…",
|
||||
"i18n.back": "Zurück",
|
||||
"i18n.areyousure": "Bist du sicher?",
|
||||
"i18n.all": "Alle",
|
||||
"components.UserProfile.totalrequests": "Anfragen insgesamt",
|
||||
"components.UserProfile.seriesrequest": "Serienanfragen",
|
||||
"components.UserProfile.pastdays": "{type} (vergangene {days} Tage)",
|
||||
"components.UserProfile.movierequests": "Filmanfragen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Für dein Konto ist derzeit kein Passwort festgelegt. Konfiguriere unten ein Passwort, um die Anmeldung als \"lokaler Benutzer\" mit deiner E-Mail-Adresse zu aktivieren.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Für dieses Benutzerkonto ist derzeit kein Kennwort festgelegt. Konfiguriere unten ein Kennwort, damit sich dieses Konto als \"lokaler Benutzer\" anmelden kann",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Du musst einen gültigen öffentlichen PGP-Schlüssel angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingssaved": "Telegram-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Die Einstellungen für die Telegram-Benachrichtigung konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "Verschlüssele E-Mail-Nachrichten mit <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKey": "Öffentlicher PGP-Schlüssel",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "E-Mail-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingsfailed": "E-Mail-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "E-Mail",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Discord-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Die Einstellungen für die Discord-Benachrichtigung konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.unlimited": "Unbegrenzt",
|
||||
"components.UserProfile.requestsperdays": "{limit} verbleibend",
|
||||
"components.UserProfile.limit": "{remaining} von {limit}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Serienanfragenlimit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Filmanfragenlimit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Überschreibe globales Limit",
|
||||
"components.UserList.usercreatedfailedexisting": "Die angegebene E-Mail-Adresse wird bereits von einem anderen Benutzer verwendet.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Standard ({language})",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpush": "Web Push",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "Sprache darstellen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Discord User ID",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Die <FindDiscordIdLink>mehrstellige ID-Nummer</FindDiscordIdLink> Deines Discord-Accounts",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Anzeigename",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Überschreibe globales Limit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.general": "Allgemein",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Allgemeine Einstellungen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Standard ({language})",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Lokaler Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Filmanfragenlimit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Sprache Entdecken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtere Inhalte nach Originalsprache",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Besitzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex-Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Auto-Request Filme",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Filme auf deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> automatisch anfordern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Auto-Request-Serie",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Serien auf deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> automatisch anfordern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Region Entdecken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtere Inhalte nach regionaler Verfügbarkeit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Rolle",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Serienanfragenlimit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Beim Speichern der Einstellungen ist etwas schief gelaufen.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Einstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Filme automatisch anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatisch Filme auf deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> anfordern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Serien automatisch anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatisch Serien auf deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Du musst eine gültige Discord User ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "Benutzer-ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "Die <FindDiscordIdLink>ID Nummer</FindDiscordIdLink> für dein Benutzerkonto",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Die Einstellungen für die Discord-Benachrichtigung konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Discord-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "E-Mail",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingsfailed": "E-Mail-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "E-Mail-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notifications": "Benachrichtigungen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notificationsettings": "Benachrichtigungseinstellungen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKey": "Öffentlicher PGP-Schlüssel",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "Verschlüssele E-Mail-Nachrichten mit <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessToken": "Zugangs-Token",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessTokenTip": "Erstelle ein Token aus deinen <PushbulletSettingsLink>Kontoeinstellungen</PushbulletSettingsLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingsfailed": "Die Einstellungen für Pushbullet-Benachrichtigungen konnten nicht gespeichert werden.",
|
||||
@@ -1028,113 +1099,251 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "Die 30-stellige <UsersGroupsLink>Benutzer- oder Gruppenkennung</UsersGroupsLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Die Einstellungen für die Pushover-Benachrichtigung konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Pushover-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Lautlos senden",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Sende Benachrichtigungen ohne Ton",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat-ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Starte einen Chat</TelegramBotLink>, füge <GetIdBotLink>@get_id_bot</GetIdBotLink> hinzu, und führe den Befehl <code>/my_id</code> aus",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Die Einstellungen für die Telegram-Benachrichtigung konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingssaved": "Telegram-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "Du musst eine gültige Benutzer-ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Du musst einen gültigen öffentlichen PGP-Schlüssel angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushbulletAccessToken": "Ein Zugriffstoken muss angegeben werden",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Sie müssen ein gültiges Anwendungs-Token angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverUserKey": "Du musst einen gültigen Benutzer- oder Gruppenschlüssel angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "Du musst eine gültige Chat-ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpush": "Web Push",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingsfailed": "Web push Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingssaved": "Web push Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Passwort bestätigen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Aktuelles Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.newpassword": "Neues Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Für dieses Benutzerkonto ist derzeit kein Kennwort festgelegt. Konfiguriere unten ein Kennwort, damit sich dieses Konto als \"lokaler Benutzer\" anmelden kann",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Für dein Konto ist derzeit kein Passwort festgelegt. Konfiguriere unten ein Passwort, um die Anmeldung als \"lokaler Benutzer\" mit deiner E-Mail-Adresse zu aktivieren.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Sie haben keine Berechtigung, das Kennwort dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "Beim Speichern des Passworts ist ein Fehler aufgetreten.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailureVerifyCurrent": "Beim Speichern des Passworts ist ein Fehler aufgetreten. Wurde dein aktuelles Passwort korrekt eingegeben?",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "Passwort erfolgreich geändert!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "Du musst das neue Passwort bestätigen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPasswordSame": "Passwörter mussen übereinstimmen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "Du musst dein aktuelles Passwort angeben",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "Du musst ein neues Passwort angeben",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPasswordLength": "Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.UserProfile.UserSettings.UserPermissions.permissions": "Berechtigungen",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsFailure": "Beim Speichern der Einstellungen ist etwas schief gelaufen.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsSuccess": "Berechtigungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Du kannst deine eigenen Berechtigungen nicht ändern.",
|
||||
"components.UserProfile.UserSettings.menuChangePass": "Passwort",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Allgemein",
|
||||
"components.UserProfile.UserSettings.menuNotifications": "Benachrichtigungen",
|
||||
"components.UserProfile.UserSettings.menuPermissions": "Berechtigungen",
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "Sie haben keine Berechtigung, die Einstellungen dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.emptywatchlist": "Medien, die zu deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> hinzugefügt wurden, werden hier angezeigt.",
|
||||
"components.UserProfile.limit": "{remaining} von {limit}",
|
||||
"components.UserProfile.movierequests": "Filmanfragen",
|
||||
"components.UserProfile.pastdays": "{type} (vergangene {days} Tage)",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
"i18n.resolved": "Gelöst",
|
||||
"i18n.importing": "Importieren…",
|
||||
"i18n.import": "Importieren",
|
||||
"components.UserProfile.recentlywatched": "Kürzlich angesehen",
|
||||
"components.UserProfile.recentrequests": "Kürzliche Anfragen",
|
||||
"components.UserProfile.requestsperdays": "{limit} verbleibend",
|
||||
"components.UserProfile.seriesrequest": "Serienanfragen",
|
||||
"components.UserProfile.totalrequests": "Anfragen insgesamt",
|
||||
"components.UserProfile.unlimited": "Unbegrenzt",
|
||||
"i18n.advanced": "Erweitert",
|
||||
"i18n.all": "Alle",
|
||||
"i18n.approve": "Genehmigen",
|
||||
"i18n.approved": "Genehmigt",
|
||||
"i18n.areyousure": "Bist du sicher?",
|
||||
"i18n.available": "Verfügbar",
|
||||
"i18n.back": "Zurück",
|
||||
"i18n.cancel": "Abbrechen",
|
||||
"i18n.canceling": "Abbrechen…",
|
||||
"i18n.restartRequired": "Neustart erforderlich",
|
||||
"components.UserProfile.emptywatchlist": "Hier erscheinen deine zur <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> hinzugefügte Medien.",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Serien",
|
||||
"components.Discover.moviegenres": "Film Genre",
|
||||
"components.Discover.studios": "Studios",
|
||||
"components.Discover.tmdbmoviegenre": "TMDB Film Genre",
|
||||
"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.csrfProtection": "Aktivere CSRF Schutz",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Anwendungstitel",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Limitiere externen API Zugriff auf Lese-Operationen (erfordert HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Allgemein",
|
||||
"components.Settings.SettingsMain.generalsettings": "Allgemeine Einstellungen",
|
||||
"components.Settings.SettingsMain.locale": "Anzeigesprache",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Verfügbare Medien ausblenden",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Neuer API Schlüssel erfolgreich generiert!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Proxyunterstützung aktivieren",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Du musst eine valide URL spezifizieren",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "Die URL darf nicht mit einem Slash \"/\" enden",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Filme",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Deine Plex Watchlist",
|
||||
"components.Discover.tmdbsearch": "TMDB Suche",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Etwas ist schiefgelaufen während der Generierung eines neuen API Schlüssels.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Einstellungen erfolgreich gespeichert!",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB Film Keyword",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Du musst einen Anwendungstitel spezifizieren",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Medien in deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> erscheinen hier.",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Cache extern gehostete Bilder (erfordert eine beträchtliche Menge an Speicherplatz)",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Aktiviere diese Einstellung nur wenn du weißt was du tust!",
|
||||
"components.Discover.networks": "Sender",
|
||||
"components.Discover.tmdbstudio": "TMDB Studio",
|
||||
"components.Settings.SettingsMain.applicationurl": "Anwendung URL",
|
||||
"components.Settings.SettingsMain.cacheImages": "Bild-Caching aktivieren",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfiguration der globalen und Standardeinstellungen für Jellyseerr.",
|
||||
"components.Settings.SettingsMain.originallanguage": "\"Entdecken\" Sprache",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Teilweise Serienanfragen zulassen",
|
||||
"components.Settings.SettingsMain.region": "\"Entdecken\" Region",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Beim Speichern der Einstellungen ist ein Fehler aufgetreten.",
|
||||
"components.Settings.SettingsMain.regionTip": "Inhalte nach regionaler Verfügbarkeit filtern",
|
||||
"components.Discover.tmdbnetwork": "TMDB Sender",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Inhalt nach Originalsprache filtern",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Erlaube Jellyseerr, Client-IP-Adressen hinter einem Proxy korrekt zu registrieren",
|
||||
"components.Discover.CreateSlider.addSlider": "Slider hinzufügen",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Benutzerdefinierten Slider erstellen",
|
||||
"components.Discover.CreateSlider.addfail": "Neuer Slider konnte nicht erstellt werden.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Ein neuer Slider wurde erstellt und die Einstellungen wurden gespeichert.",
|
||||
"components.Discover.CreateSlider.editSlider": "Slider bearbeiten",
|
||||
"components.Discover.CreateSlider.editfail": "Slider konnte nicht bearbeitet werden.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Slider bearbeitet und Einstellung gespeichert.",
|
||||
"components.Discover.CreateSlider.needresults": "Es muss mindestens 1 Ergebnis vorhanden sein.",
|
||||
"components.Layout.Sidebar.browsemovies": "Filme",
|
||||
"components.Layout.Sidebar.browsetv": "Serien",
|
||||
"components.Discover.CreateSlider.nooptions": "Keine Ergebnisse.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Hinterlege eine TMDB Genre ID",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Hinterlege eine TMDB Keyword ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Hinterlege eine TMDB Network ID",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Geben Sie eine Suchanfrage an",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Du musst einen Titel eingeben.",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Entfernen",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Slider konnte nicht gelöscht werden.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Slider erfolgreich entfernt.",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filme",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Erscheinungsdatum Aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Erscheinungsdatum Absteigend",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Titel (A-Z) Aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Titel (Z-A) Absteigend",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serien",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Erstausstrahlung (Absteigend)",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Erstausstrahlung (Aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Beliebtheit (Aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Beliebtheit (Absteigend)",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Name des Slider",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Medienverfügbarkeit Sync",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Aktiver Filter} other {# Aktive Filter}}",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Originalsprache",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Alle {jobScheduleSeconds, plural, one {Sekunde} other {{jobScheduleSeconds} Sekunden}}",
|
||||
"components.Discover.updatefailed": "Bei der Aktualisierung der Entdecken-Einstellungen ist ein Fehler aufgetreten.",
|
||||
"components.Selector.searchGenres": "Genres auswählen…",
|
||||
"components.Discover.updatesuccess": "Die Einstellungen für die Entdecken-Anpassung wurden aktualisiert.",
|
||||
"components.Selector.showmore": "Mehr anzeigen",
|
||||
"components.Selector.starttyping": "Start der Suche durch Tippen.",
|
||||
"components.Selector.showless": "Weniger anzeigen",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "TMDB Studio ID angeben",
|
||||
"components.Discover.CreateSlider.searchGenres": "Genres suchen…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Stichwörter suchen…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Studios suchen…",
|
||||
"components.Discover.CreateSlider.starttyping": "Start der Suche durch Tippen.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Du musst einen Datenwert angeben.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Sichtbarkeit umschalten",
|
||||
"components.Discover.customizediscover": "Discover anpassen",
|
||||
"components.Discover.resetfailed": "Beim Zurücksetzen der Entdecken-Einstellungen ist etwas schief gegangen.",
|
||||
"components.Discover.resetsuccess": "Die Entdecken-Einstellungen wurden erfolgreich zurückgesetzt.",
|
||||
"components.Discover.stopediting": "Bearbeitung stoppen",
|
||||
"components.Discover.resettodefault": "Zurücksetzen auf Standard",
|
||||
"components.Discover.resetwarning": "Setzt alle Slider auf die Standardwerte zurück. Dadurch werden auch alle benutzerdefinierten Slider gelöscht!",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# Aktiver Filter} other {# Aktive Filter}}",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Beliebtheit aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Beliebtheit absteigend",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB-Bewertung aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB-Bewertung Absteigend",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# Aktiver Filter} other {# Aktive Filter}}",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titel (A-Z) Aufsteigend",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titel (Z-A) Absteigend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-Bewertung aufsteigend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB-Bewertung Absteigend",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Aktive Filter löschen",
|
||||
"components.Discover.FilterSlideover.filters": "Filter",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Datum der Erstausstrahlung",
|
||||
"components.Discover.FilterSlideover.from": "Vom",
|
||||
"components.Discover.FilterSlideover.genres": "Genres",
|
||||
"components.Discover.FilterSlideover.keywords": "Stichwörter",
|
||||
"components.Discover.FilterSlideover.ratingText": "Bewertungen zwischen {minValue} und {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Erscheinungsdatum",
|
||||
"components.Discover.FilterSlideover.runtime": "Laufzeit",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} Minuten Laufzeit",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "TMDB-Benutzerbewertung",
|
||||
"components.Discover.FilterSlideover.to": "Bis",
|
||||
"components.Discover.createnewslider": "Neuen Slider erstellen",
|
||||
"components.Discover.FilterSlideover.studio": "Studio",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Streaming-Dienste",
|
||||
"components.Selector.nooptions": "Keine Ergebnisse.",
|
||||
"components.Selector.searchKeywords": "Stichwörter suchen…",
|
||||
"components.Selector.searchStudios": "Studios suchen…",
|
||||
"components.Discover.tmdbmoviestreamingservices": "TMDB Film-Streaming-Dienste",
|
||||
"components.Discover.tmdbtvstreamingservices": "TMDB TV-Streaming-Dienste",
|
||||
"i18n.collection": "Sammlung",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Anzahl an TMDB Benutzerbewertungen",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Füge automatisch ein Tag hinzu mit der ID und dem Namen des anfordernden Nutzers",
|
||||
"components.MovieDetails.imdbuserscore": "IMDB Nutzer Bewertung",
|
||||
"components.Settings.SonarrModal.tagRequests": "Tag Anforderungen",
|
||||
"components.Discover.FilterSlideover.voteCount": "Anzahl Abstimmungen zwischen {minValue} und {maxValue}",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Füge automatisch einen zusätzlichen Tag mit der ID & Namen des anfordernden Nutzers",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Ein Passwort ist erforderlich.",
|
||||
"components.Login.description": "Da du dich zum ersten Mal bei {applicationName} anmeldest, musst du eine gültige E-Mail-Adresse angeben.",
|
||||
"components.Layout.UserWarnings.emailRequired": "E-Mail ist erforderlich.",
|
||||
"components.Layout.UserWarnings.emailInvalid": "E-Mail ist nicht valide.",
|
||||
"components.Login.credentialerror": "Der Benutzername oder das Passwort ist falsch.",
|
||||
"components.Login.emailtooltip": "Die Adresse muss nicht mit Ihrer {mediaServerName}-Instanz verbunden sein.",
|
||||
"components.Login.host": "{mediaServerName} URL",
|
||||
"components.Login.initialsignin": "Verbinde",
|
||||
"components.Login.initialsigningin": "Verbinden…",
|
||||
"components.Login.save": "hinzufügen",
|
||||
"components.Login.saving": "Hinzufügen…",
|
||||
"components.Login.signinwithjellyfin": "Verwende dein {mediaServerName} Konto",
|
||||
"components.Login.title": "E-Mail hinzufügen",
|
||||
"components.Login.username": "Benutzername",
|
||||
"components.Login.validationEmailFormat": "Ungültige E-Mail",
|
||||
"components.Login.validationEmailRequired": "Du musst eine E-Mail angeben",
|
||||
"components.Login.validationemailformat": "Gültige E-Mail erforderlich",
|
||||
"components.Login.validationhostformat": "Gültige URL erforderlich",
|
||||
"components.Login.validationhostrequired": "{mediaServerName} URL erforderlich",
|
||||
"components.Login.validationusernamerequired": "Benutzername erforderlich",
|
||||
"components.ManageSlideOver.removearr": "Aus {arr} entfernen",
|
||||
"components.ManageSlideOver.removearr4k": "Aus 4K {arr} entfernen",
|
||||
"components.MovieDetails.downloadstatus": "Download-Status",
|
||||
"components.MovieDetails.openradarr4k": "Film in 4K Radarr öffnen",
|
||||
"components.MovieDetails.play": "Wiedergabe auf {mediaServerName}",
|
||||
"components.MovieDetails.play4k": "4K abspielen auf {mediaServerName}",
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Anime-Serien Typ",
|
||||
"components.Settings.jellyfinSettings": "{mediaServerName} Einstellungen",
|
||||
"components.Settings.jellyfinSettingsSuccess": "{mediaServerName} Einstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.jellyfinlibraries": "{mediaServerName} Bibliotheken",
|
||||
"components.Settings.jellyfinsettings": "{mediaServerName} Einstellungen",
|
||||
"components.Settings.jellyfinsettingsDescription": "Konfiguriere die Einstellungen für deinen {mediaServerName} Server. {mediaServerName} scannt deine {mediaServerName} Bibliotheken, um zu sehen, welche Inhalte verfügbar sind.",
|
||||
"components.Settings.manualscanJellyfin": "Manuelles Scannen der Bibliothek",
|
||||
"components.Settings.menuJellyfinSettings": "{mediaServerName}",
|
||||
"components.Settings.saving": "Speichern…",
|
||||
"components.Settings.syncing": "Synchronisierung",
|
||||
"components.Settings.timeout": "Zeitüberschreitung",
|
||||
"components.Setup.signin": "Anmelden",
|
||||
"components.Setup.signinWithJellyfin": "Verwende dein {mediaServerName} Konto",
|
||||
"components.Setup.signinWithPlex": "Verwende dein Plex-Konto",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Erfolgreich von der Beobachtungsliste entfernt!",
|
||||
"components.TitleCard.watchlistError": "Etwas ist schief gelaufen, versuche es noch einmal.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Beobachtungsliste hinzugefügt!",
|
||||
"components.TvDetails.play": "Wiedergabe auf {mediaServerName}",
|
||||
"components.TvDetails.play4k": "4K abspielen auf {mediaServerName}",
|
||||
"components.UserList.importfromJellyfin": "Importieren von {mediaServerName} Benutzern",
|
||||
"components.UserList.mediaServerUser": "{mediaServerName} Benutzer",
|
||||
"components.UserList.noJellyfinuserstoimport": "Es gibt keine {mediaServerName} Benutzer zu importieren.",
|
||||
"components.UserList.userdeleted": "Benutzer erfolgreich gelöscht!",
|
||||
"components.UserList.userdeleteerror": "Beim Löschen des Benutzers ist etwas schief gelaufen.",
|
||||
"components.UserList.userlist": "Benutzerliste",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.email": "E-Mail",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.mediaServerUser": "{mediaServerName} Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.saving": "Speichern…",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingssaved": "Web-Push-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"i18n.close": "Schließen",
|
||||
"i18n.decline": "Ablehnen",
|
||||
"i18n.declined": "Abgelehnt",
|
||||
"i18n.delete": "Löschen",
|
||||
"i18n.deleting": "Löschen …",
|
||||
"i18n.delimitedlist": "{a}, {b}",
|
||||
"i18n.edit": "Bearbeiten",
|
||||
"i18n.experimental": "Experimentell",
|
||||
"i18n.deleting": "Löschen…",
|
||||
"i18n.failed": "Fehlgeschlagen",
|
||||
"i18n.import": "Importieren",
|
||||
"i18n.importing": "Importieren…",
|
||||
"i18n.loading": "Lade …",
|
||||
"i18n.movie": "Film",
|
||||
"i18n.movies": "Filme",
|
||||
"i18n.next": "Weiter",
|
||||
"i18n.noresults": "Keine Ergebnisse.",
|
||||
"i18n.notrequested": "Nicht Angefragt",
|
||||
"i18n.open": "Offen",
|
||||
"i18n.partiallyavailable": "Teilweise verfügbar",
|
||||
"i18n.open": "Öffnen",
|
||||
"i18n.pending": "Ausstehend",
|
||||
"i18n.previous": "Bisherige",
|
||||
"i18n.processing": "Verarbeiten",
|
||||
"i18n.request": "Anfragen",
|
||||
"i18n.request4k": "In 4K anfragen",
|
||||
"i18n.processing": "Verarbeitung",
|
||||
"i18n.request": "Anfrage",
|
||||
"i18n.requested": "Angefragt",
|
||||
"i18n.requesting": "Anfordern…",
|
||||
"i18n.resolved": "Gelöst",
|
||||
"i18n.restartRequired": "Neustart erforderlich",
|
||||
"i18n.resultsperpage": "Zeige {pageSize} Ergebnisse pro Seite",
|
||||
"i18n.retry": "Wiederholen",
|
||||
"i18n.retrying": "Wiederholen…",
|
||||
"i18n.save": "Änderungen speichern",
|
||||
"i18n.saving": "Speichern…",
|
||||
"i18n.settings": "Einstellungen",
|
||||
"i18n.showingresults": "Zeige <strong>{from}</strong> bis <strong>{to}</strong> von <strong>{total}</strong> Ergebnissen",
|
||||
"i18n.status": "Status",
|
||||
"i18n.test": "Test",
|
||||
"i18n.testing": "Testen…",
|
||||
"i18n.tvshow": "Serie",
|
||||
"i18n.tvshows": "Serien",
|
||||
"i18n.tvshows": "Serie",
|
||||
"i18n.unavailable": "Nicht verfügbar",
|
||||
"i18n.usersettings": "Benutzereinstellungen",
|
||||
"i18n.view": "Anzeigen",
|
||||
"pages.errormessagewithcode": "{statusCode} - {error}",
|
||||
"pages.internalservererror": "Interner Serverfehler",
|
||||
"pages.oops": "Hoppla",
|
||||
"pages.pagenotfound": "Seite nicht gefunden",
|
||||
"pages.returnHome": "Zur Startseite",
|
||||
"pages.serviceunavailable": "Dienst nicht verfügbar",
|
||||
"pages.somethingwentwrong": "Etwas ist schief gelaufen"
|
||||
"pages.oops": "Ups",
|
||||
"components.MovieDetails.openradarr": "Film in Radarr öffnen",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Gerätestandard",
|
||||
"components.Settings.RadarrModal.tagRequests": "Tag-Anfragen",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Jellyseerr unterstützen",
|
||||
"components.Settings.internalUrl": "Interne URL",
|
||||
"components.Settings.jellyfinSettingsDescription": "Konfiguriere optional die internen und externen Endpunkte für deinen {mediaServerName} Server. In den meisten Fällen ist die externe URL eine andere als die interne URL. Für die Anmeldung bei {mediaServerName} kann auch eine benutzerdefinierte URL zum Zurücksetzen des Passworts festgelegt werden, falls du auf eine andere Seite zum Zurücksetzen des Passworts umleiten möchtest.",
|
||||
"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-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.",
|
||||
"components.UserList.importfromJellyfinerror": "Beim Importieren von {mediaServerName} Benutzern ist etwas schief gelaufen.",
|
||||
"components.Settings.syncJellyfin": "Bibliotheken synchronisieren",
|
||||
"components.Setup.configuremediaserver": "Medienserver konfigurieren",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Änderungen speichern",
|
||||
"i18n.available": "Verfügbar",
|
||||
"i18n.cancel": "Abbrechen",
|
||||
"components.TitleCard.addToWatchList": "Zur Beobachtungsliste hinzufügen",
|
||||
"components.TitleCard.watchlistCancel": "Überwachungsliste für <strong>{title}</strong> abgebrochen.",
|
||||
"components.UserList.usercreatedsuccess": "Benutzer erfolgreich angelegt!",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* Dadurch wird dieser {mediaType} unwiderruflich aus {arr} entfernt, einschließlich aller Dateien.",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {user} other {users}} erfolgreich importiert!",
|
||||
"components.UserList.validationpasswordminchars": "Das Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Gerätestandard",
|
||||
"i18n.approve": "Genehmigen",
|
||||
"i18n.partiallyavailable": "Teilweise verfügbar",
|
||||
"components.UserList.newJellyfinsigninenabled": "Die Einstellung <strong>Enable New {mediaServerName} Sign-In</strong> ist derzeit aktiviert. {mediaServerName}-Benutzer mit Bibliothekszugang müssen nicht importiert werden, um sich anmelden zu können.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Benachrichtigungston",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingsfailed": "Die Einstellungen für Web-Push-Benachrichtigungen konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.localWatchlist": "Beobachtungsliste von {username}",
|
||||
"i18n.approved": "Genehmigt",
|
||||
"pages.returnHome": "Zurück nach Hause"
|
||||
}
|
||||
|
||||
@@ -2,19 +2,19 @@
|
||||
"components.PermissionEdit.users": "Διαχείριση Χρηστών",
|
||||
"components.PermissionEdit.settingsDescription": "Εκχώρηση άδειας για τροποποίηση των ρυθμίσεων Jellyseerr. Ένας χρήστης χρειάζεται να έχει αυτό το δικαίωμα για να το εκχωρήσει σε άλλους.",
|
||||
"components.PermissionEdit.settings": "Διαχείριση Ρυθμίσεων",
|
||||
"components.PermissionEdit.requestTvDescription": "Εκχώρηση άδειας για αιτήματα που δεν είναι 4K σειρές.",
|
||||
"components.PermissionEdit.requestTvDescription": "Χορήγηση άδειας για υποβολής αιτημάτων σειρών που δεν είναι 4K.",
|
||||
"components.PermissionEdit.requestTv": "Αιτήματα για Σειρές",
|
||||
"components.PermissionEdit.requestMoviesDescription": "Εκχώρηση άδειας για αιτήματα που δεν είναι 4K ταινίες.",
|
||||
"components.PermissionEdit.requestMoviesDescription": "Χορήγηση άδειας για υποβολή αιτημάτων ταινιών που δεν είναι 4K.",
|
||||
"components.PermissionEdit.requestMovies": "Αιτήματα για Ταινίες",
|
||||
"components.PermissionEdit.requestDescription": "Εκχώρηση άδειας για αιτήματα που δεν είναι 4Κ μέσα.",
|
||||
"components.PermissionEdit.request4kTvDescription": "Εκχώρηση άδειας για αιτήματα 4K σειρών.",
|
||||
"components.PermissionEdit.requestDescription": "Χορήγηση άδειας για υποβολή αιτημάτων περιεχομένου που δεν είναι 4Κ.",
|
||||
"components.PermissionEdit.request4kTvDescription": "Χορήγηση άδειας για υποβολή αιτημάτων 4K σειρών.",
|
||||
"components.PermissionEdit.request4kTv": "Αιτήματα για 4K Σειρές",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "Εκχώρηση άδειας για αιτήματα 4K ταινιών.",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "Χορήγηση άδειας για υποβολή αιτημάτων 4K ταινιών.",
|
||||
"components.PermissionEdit.request4kMovies": "Αιτήματα για 4K Ταινίες",
|
||||
"components.PermissionEdit.request4k": "Αίτημα για 4K",
|
||||
"components.PermissionEdit.request4kDescription": "Εκχώρηση άδειας για αιτήματα 4Κ μέσων.",
|
||||
"components.PermissionEdit.request4kDescription": "Χορήγηση άδειας για υποβολή αιτημάτων 4Κ περιεχομένου.",
|
||||
"components.PermissionEdit.request": "Αίτημα",
|
||||
"components.PermissionEdit.managerequestsDescription": "Εκχώρηση άδειας για τη διαχείριση αιτημάτων Jellyseerr. Όλα τα αιτήματα που υποβάλλει ένας χρήστης με αυτήν την άδεια θα εγκριθούν αυτόματα.",
|
||||
"components.PermissionEdit.managerequestsDescription": "Χορήγηση άδειας για τη διαχείριση αιτημάτων. Όλα τα αιτήματα που υποβάλλει ένας χρήστης με αυτήν την άδεια θα εγκρίνονται αυτόματα.",
|
||||
"components.PermissionEdit.managerequests": "Διαχείριση Αιτημάτων",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Εκχώρηση αυτόματης έγκρισης για αιτήματα σειρών που δεν είναι 4K.",
|
||||
"components.PermissionEdit.autoapproveSeries": "Αυτόματη έγκριση Σειρών",
|
||||
@@ -27,30 +27,30 @@
|
||||
"components.PermissionEdit.autoapprove4kMovies": "Αυτόματη Έγκριση Ταινιών 4K",
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Εκχώρηση αυτόματης έγκρισης για όλα τα αιτήματα 4K.",
|
||||
"components.PermissionEdit.autoapprove4k": "Αυτόματη Έγκριση 4K",
|
||||
"components.PermissionEdit.autoapprove": "Αυτόματη Έγκριση",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Εκχώρηση δικαιωμάτων για χρήση των επιλογών για αίτημα για προχωρημένους.",
|
||||
"components.PermissionEdit.autoapprove": "Αυτό-Έγκριση",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Εκχώρηση δικαιωμάτων για χρήση των επιλογών αιτημάτων για προχωρημένους.",
|
||||
"components.PermissionEdit.advancedrequest": "Αιτήματα για Προχωρημένους",
|
||||
"components.PermissionEdit.adminDescription": "Πλήρης πρόσβαση διαχειριστή. Παρακάμπτει όλους τους άλλους ελέγχους δικαιωμάτων.",
|
||||
"components.PermissionEdit.admin": "Διαχειριστής",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Τύποι Ειδοποιήσεων",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Στέλνει ειδοποίηση όταν τα μέσα έχουν ζητηθεί και χρειάζονται έγκριση.",
|
||||
"components.NotificationTypeSelector.mediarequested": "Μέσα που έχουν αιτήματα",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Στέλνει ειδοποίηση όταν τα αιτούμενα μέσα δεν μπόρεσαν να προστεθούν στο Radarr ή στο Sonarr.",
|
||||
"components.NotificationTypeSelector.mediafailed": "Μέσα που απέτυχαν",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Στέλνει ειδοποίηση όταν τα αιτούμενα μέσα γίνονται διαθέσιμα.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Τα Mέσα Απορρίφθηκαν",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Στέλνει ειδοποίηση όταν ένα αίτημα μέσου απορρίπτεται.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Διαθέσιμα Μέσα",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Στέλνει ειδοποίηση οταν τα αιτούμενα μέσα εγκρίνονται χειροκίνητα.",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Στέλνει ειδοποίηση όταν τα μέσα εγκρίνονται αυτόματα.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Εγκεκριμένα Μέσα",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Μέσα που Εγκρίθηκαν Αυτόματα",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Αποστολή ειδοποιήσεων όταν έχουν ζητηθεί μέσα και χρειάζονται έγκριση.",
|
||||
"components.NotificationTypeSelector.mediarequested": "Αίτημα σε αναμονή έγκρισης",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Αποστολή ειδοποιήσεων όταν τα αιτούμενα μέσα δεν μπόρεσαν να προστεθούν στο Radarr ή στο Sonarr.",
|
||||
"components.NotificationTypeSelector.mediafailed": "Η επεξεργασία του αιτήματος απέτυχε",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Αποστολή ειδοποιήσεων όταν τα αιτούμενα μέσα γίνονται διαθέσιμα.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Το αίτημα απορρίφθηκε",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Αποστολή ειδοποιήσεων όταν ένα αίτημα μέσου απορρίπτεται.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Αίτημα διαθέσιμο",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Αποστολή ειδοποιήσεων όταν αιτήματα εγκρίνονται χειροκίνητα.",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Αποστολή ειδοποιήσεων όταν τα μέσα εγκρίνονται αυτόματα.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Το αίτημα εγκρίθηκε",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Το αίτημα εγκρίθηκε αυτόματα",
|
||||
"components.MovieDetails.watchtrailer": "Δες το Τρέιλερ",
|
||||
"components.MovieDetails.viewfullcrew": "Προβολή Πλήρους Συνεργείου",
|
||||
"components.MovieDetails.similar": "Παρόμοιοι Τίτλοι Ταινιών",
|
||||
"components.MovieDetails.runtime": "{minutes} λεπτά",
|
||||
"components.MovieDetails.revenue": "Έσοδα",
|
||||
"components.MovieDetails.releasedate": "Ημερομηνία Κυκλοφορίας",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Release Date} other {Release Dates}}",
|
||||
"components.MovieDetails.recommendations": "Προτάσεις",
|
||||
"components.MovieDetails.playonplex": "Αναπαραγωγή στο Plex",
|
||||
"components.MovieDetails.play4konplex": "Αναπαραγωγή σε 4K στο Plex",
|
||||
@@ -104,7 +104,7 @@
|
||||
"components.Layout.Sidebar.users": "Χρήστες",
|
||||
"components.Layout.Sidebar.settings": "Ρυθμίσεις",
|
||||
"components.Layout.Sidebar.requests": "Αιτήματα",
|
||||
"components.Layout.Sidebar.dashboard": "Ανακάλυψε",
|
||||
"components.Layout.Sidebar.dashboard": "Ανακαλύψτε",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Αναζήτηση Ταινιών και Τηλεοπτικών Σειρών",
|
||||
"components.LanguageSelector.originalLanguageDefault": "Όλες οι Γλώσσες",
|
||||
"components.LanguageSelector.languageServerDefault": "Προεπιλεγμένη ({language})",
|
||||
@@ -138,7 +138,7 @@
|
||||
"components.ResetPassword.passwordreset": "Επαναφορά κωδικού",
|
||||
"components.ResetPassword.password": "Κωδικός πρόσβασης",
|
||||
"components.ResetPassword.gobacklogin": "Επιστροφή στη σελίδα Εισόδου",
|
||||
"components.ResetPassword.emailresetlink": "Στείλε μέσω ηλεκτρονικού ταχυδρομείου έναν σύνδεσμο ανάκτησης",
|
||||
"components.ResetPassword.emailresetlink": "Αποστολή συνδέσμου ανάκτησης με email",
|
||||
"components.ResetPassword.email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
|
||||
"components.ResetPassword.confirmpassword": "Επιβεβαίωση κωδικού πρόσβασης",
|
||||
"components.RequestModal.selectseason": "Επιλογή Σεζόν",
|
||||
@@ -152,15 +152,15 @@
|
||||
"components.RequestModal.requestadmin": "Αυτό το αίτημα θα εγκριθεί αυτόματα.",
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> ζητήθηκε επιτυχώς!",
|
||||
"components.RequestModal.requestCancel": "Το αίτημα για <strong>{title}</strong> ακυρώθηκε.",
|
||||
"components.RequestModal.pendingrequest": "",
|
||||
"components.RequestModal.pendingrequest": "Εκκρεμές αίτημα",
|
||||
"components.RequestModal.pendingapproval": "Το αίτημα σου εκκρεμεί προς έγκριση.",
|
||||
"components.RequestModal.pending4krequest": "",
|
||||
"components.RequestModal.pending4krequest": "Εκκρεμές αίτημα 4K",
|
||||
"components.RequestModal.errorediting": "Κάτι πήγε στραβά κατά την επεξεργασία του αιτήματος.",
|
||||
"components.RequestModal.edit": "Επεξεργασία Αιτήματος",
|
||||
"components.RequestModal.cancel": "Ακύρωση Αιτήματος",
|
||||
"components.RequestModal.autoapproval": "Αυτόματη Έγκριση",
|
||||
"components.RequestModal.alreadyrequested": "Έχει ήδη ζητηθεί",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Δεν μπορέσαμε να αντιστοιχίσουμε αυτόματα το αίτημά σου. Παρακαλώ επίλεξε τη σωστή αντιστοιχία από την παρακάτω λίστα.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Δεν μπορέσαμε να αντιστοιχίσουμε αυτόματα αυτή τη σειρά. Παρακαλώ επίλεξε τη σωστή αντιστοιχία παρακάτω.",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {σεζόν} other {σεζόν}}",
|
||||
"components.RequestModal.QuotaDisplay.season": "σεζόν",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Αυτός ο χρήστης χρειάζεται τουλάχιστον <strong>{seasons}</strong> {seasons, plural, one {αίτημα σεζόν} other {αιτήματα σεζόν}} απομένουν έτσι ώστε να γίνει αίτημα για αυτή τη σειρά.",
|
||||
@@ -187,7 +187,7 @@
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PersonDetails.birthdate": "Γεννήθηκε {birthdate}",
|
||||
"components.PersonDetails.ascharacter": "ως {character}",
|
||||
"components.PermissionEdit.usersDescription": "Εκχώρηση άδειας για διαχείρηση των Jellyseerr χρηστών. Οι χρήστες με αυτή την άδεια δεν μπορούν να τροποποιήσουν τους χρήστες με το προνόμιο του διαχειριστή ή να κάνουν κάποιον διαχειριστή.",
|
||||
"components.PermissionEdit.usersDescription": "Χορήγηση άδειας για διαχείρηση των χρηστών. Οι χρήστες με αυτή την άδεια δεν μπορούν να τροποποιήσουν τους χρήστες με το προνόμιο του διαχειριστή ή να κάνουν κάποιον διαχειριστή.",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Develop",
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "Η <code>{appDataPath}</code> προσάρτηση τόμου δεν έχει ρυθμιστεί σωστά. Όλα τα δεδομένα θα διαγραφούν όταν ο περιέχοντας σταματήσει ή επανεκκινήσει.",
|
||||
"components.RequestModal.AdvancedRequester.rootfolder": "Ριζικός φάκελος",
|
||||
@@ -204,17 +204,17 @@
|
||||
"components.RequestModal.AdvancedRequester.animenote": "* Αυτή η σειρά είναι anime.",
|
||||
"components.RequestModal.AdvancedRequester.advancedoptions": "Για προχωρημένους",
|
||||
"components.RequestList.sortModified": "Τελευταία Τροποποίηση",
|
||||
"components.RequestList.sortAdded": "Ημερομηνία Αιτήματος",
|
||||
"components.RequestList.sortAdded": "Πιο πρόσφατα",
|
||||
"components.RequestList.showallrequests": "Εμφάνιση Όλων των Αιτημάτων",
|
||||
"components.RequestList.requests": "Αιτήματα",
|
||||
"components.RequestList.RequestItem.requested": "Ζητήθηκε",
|
||||
"components.RequestList.RequestItem.modified": "Τροποποιήθηκε",
|
||||
"components.RequestList.RequestItem.mediaerror": "Ο σχετικός τίτλος για αυτό το αίτημα δεν είναι πλέον διαθέσιμος.",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} Δε βρέθηκε",
|
||||
"components.RequestList.RequestItem.failedretry": "Κάτι πήγε στραβά κατά την επανάληψη του αιτήματος.",
|
||||
"components.RequestList.RequestItem.editrequest": "Επεξεργασία Αιτήματος",
|
||||
"components.RequestList.RequestItem.deleterequest": "Διαγραφή Αιτήματος",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Ακύρωση Αιτήματος",
|
||||
"components.RequestCard.mediaerror": "Ο σχετικός τίτλος για αυτό το αίτημα δεν είναι πλέον διαθέσιμος.",
|
||||
"components.RequestCard.mediaerror": "{mediaType} Δε βρέθηκε",
|
||||
"components.RequestCard.deleterequest": "Διαγραφή Αιτήματος",
|
||||
"components.RequestButton.viewrequest4k": "Προβολή 4K Αιτήματος",
|
||||
"components.RequestButton.viewrequest": "Προβολή Αιτήματος",
|
||||
@@ -232,7 +232,7 @@
|
||||
"components.PersonDetails.crewmember": "Συνεργείο",
|
||||
"components.PersonDetails.appearsin": "Εμφανίσεις",
|
||||
"components.PersonDetails.alsoknownas": "Επίσης Γνωστός/ή ως: {names}",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Εκχώρηση άδειας για να βλέπει τα αιτήματα άλλων χρηστών.",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Χορήγηση άδειας προβολής αιτημάτων που υποβλήθηκαν από άλλους χρήστες.",
|
||||
"components.PermissionEdit.viewrequests": "Προβολή Αιτημάτων",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Πρέπει να δώσεις ένα έγκυρο αναγνωριστικό συνομιλίας",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Πρέπει να δώσεις μια άδεια εξουσιοδότησης bot",
|
||||
@@ -310,7 +310,7 @@
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestFailed": "Αποτυχία αποστολής δοκιμαστικής ειδοποίησης Slack.",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Οι ρυθμίσεις ειδοποιήσεων Slack αποθηκεύτηκαν με επιτυχία!",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Ενεργοποίηση του Μεταφορέα",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Πρέπει να δώσεις ένα έγκυρο κλειδί χρήστη",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Πρέπει να δώσετε ένα έγκυρο κλειδί χρήστη ή ομάδας",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Πρέπει να δώσεις ένα έγκυρο διακριτικό εφαρμογής",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "<UsersGroupsLink>Το αναγνωριστικό χρήστη ή ομάδας 30 χαρακτήρων</UsersGroupsLink>",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Κλειδί Χρήστη ή Ομάδας",
|
||||
@@ -338,8 +338,8 @@
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "Πρέπει να δώσεις έναν έγκυρο αριθμό θύρας",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Πρέπει να δώσεις ένα έγκυρο όνομα κεντρικού υπολογιστή ή διεύθυνση IP",
|
||||
"components.Settings.validationHostnameRequired": "Πρέπει να δώσεις ένα έγκυρο όνομα κεντρικού υπολογιστή ή διεύθυνση IP",
|
||||
"components.Settings.Notifications.validationPgpPrivateKey": "Πρέπει να δώσεις ένα έγκυρο ιδιωτικό κλειδί PGP, αν έχει εισαχθεί κωδικός πρόσβασης PGP",
|
||||
"components.Settings.Notifications.validationPgpPassword": "Πρέπει να δώσεις έναν κωδικό πρόσβασης PGP αν έχει εισαχθεί ιδιωτικό κλειδί PGP",
|
||||
"components.Settings.Notifications.validationPgpPrivateKey": "Πρέπει να δώσετε ένα έγκυρο ιδιωτικό κλειδί PGP",
|
||||
"components.Settings.Notifications.validationPgpPassword": "Πρέπει να δώσετε έναν κωδικό πρόσβασης PGP",
|
||||
"components.Settings.Notifications.validationEmail": "Πρέπει να δώσεις μια έγκυρη διεύθυνση ηλεκτρονικού ταχυδρομείου",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Καθολικό όριο αιτημάτων στις Ταινίες",
|
||||
"components.Settings.SettingsUsers.localLogin": "Ενεργοποίηση τοπικής σύνδεσης",
|
||||
@@ -373,7 +373,7 @@
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Σάρωση Plex για μέσα που προστέθηκαν πρόσφατα",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Σάρωση πλήρους βιβλιοθήκης Plex",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Σάρωση πλήρους βιβλιοθήκης Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.jelly-recently-added-scan": "Σάρωση Jellyfin για μέσα που προστέθηκαν πρόσφατα",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Σάρωση Jellyfin για μέσα που προστέθηκαν πρόσφατα",
|
||||
"components.Settings.SettingsJobsCache.nextexecution": "Επόμενη εκτέλεση",
|
||||
"components.Settings.SettingsJobsCache.jobtype": "Είδος",
|
||||
"components.Settings.SettingsJobsCache.jobstarted": "{jobname} ξεκίνησε.",
|
||||
@@ -393,17 +393,17 @@
|
||||
"components.Settings.SettingsJobsCache.cache": "Κρυφή μνήμη",
|
||||
"components.Settings.SettingsAbout.version": "Έκδοση",
|
||||
"components.Settings.SettingsAbout.Releases.releases": "Εκδόσεις",
|
||||
"components.Settings.SettingsAbout.Releases.releasedataMissing": "Οι εκδόσεις λογισμικού δεν είναι διαθέσιμες. Μήπως έχει πέσει το GitHub;",
|
||||
"components.Settings.SettingsAbout.Releases.releasedataMissing": "Τα δεδομένα έκδοσης δεν είναι διαθέσιμα αυτή τη στιγμή.",
|
||||
"components.Settings.SettingsAbout.Releases.latestversion": "Πιο πρόσφατη",
|
||||
"components.Settings.SettingsAbout.Releases.currentversion": "Τρέχουσα έκδοση",
|
||||
"components.Settings.SettingsAbout.Releases.currentversion": "Τρέχουσα",
|
||||
"components.Settings.RadarrModal.validationRootFolderRequired": "Πρέπει να επιλέξεις ένα ριζικό φάκελο",
|
||||
"components.Settings.RadarrModal.validationProfileRequired": "Πρέπει να επιλέξεις ένα προφίλ ποιότητας",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Πρέπει να δώσεις έναν έγκυρο αριθμό θύρας",
|
||||
"components.Settings.RadarrModal.validationNameRequired": "Πρέπει να δώσεις ένα όνομα διακομιστή",
|
||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "Πρέπει να επιλέξεις μια ελάχιστη διαθεσιμότητα",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Πρέπει να δώσεις ένα όνομα κεντρικού υπολογιστή ή διεύθυνση IP",
|
||||
"components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "Η βασική διεύθυνση URL δεν πρέπει να τελειώνει με κάθετο",
|
||||
"components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "Η βασική διεύθυνση URL πρέπει να έχει μια κάθετο μπροστά",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Πρέπει να δώσετε ένα έγκυρο όνομα κεντρικού υπολογιστή ή διεύθυνση IP",
|
||||
"components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "Η βάση URL δεν πρέπει να τελειώνει με κάθετο",
|
||||
"components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "Η βάση URL πρέπει να έχει μια κάθετο μπροστά",
|
||||
"components.Settings.RadarrModal.validationApplicationUrlTrailingSlash": "Η διεύθυνση URL δεν πρέπει να τελειώνει με κάθετο",
|
||||
"components.Settings.RadarrModal.validationApplicationUrl": "Πρέπει να βάλεις μια έγκυρη διεύθυνση URL",
|
||||
"components.Settings.RadarrModal.validationApiKeyRequired": "Πρέπει να βάλεις ένα κλειδί API",
|
||||
@@ -445,14 +445,14 @@
|
||||
"components.Settings.SettingsAbout.timezone": "Ζώνη ώρας",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Υποστήριξε το Jellyseerr",
|
||||
"components.Settings.SettingsAbout.preferredmethod": "Προτιμώνενο",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Πληροφορίες Jellyseerr",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Σχετικά με το Jellyseerr",
|
||||
"components.Settings.SettingsAbout.helppaycoffee": "Κέρασε κάνα Καφεδάκι",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Συζητήσεις στο GitHub",
|
||||
"components.Settings.SettingsAbout.gettingsupport": "Λήψη Υποστήριξης",
|
||||
"components.Settings.SettingsAbout.documentation": "Εγχειρίδιο",
|
||||
"components.Settings.SettingsAbout.about": "Σχετικά",
|
||||
"components.Settings.SettingsAbout.Releases.viewongithub": "Προβολή στο GitHub",
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "Κατάλογος με τις αλλαγές στην έκδοση",
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "{version} Αλλαγές",
|
||||
"components.Settings.SettingsAbout.Releases.viewchangelog": "Προβολή καταλόγου με τις αλλαγές",
|
||||
"i18n.settings": "Ρυθμίσεις",
|
||||
"i18n.saving": "Αποθηκεύεται…",
|
||||
@@ -545,7 +545,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "Email",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Οι ρυθμίσεις των ειδοποιήσεων Discord αποθηκεύτηκαν επιτυχώς!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Οι ρυθμίσεις των ειδοποιήσεων Discord δεν κατάφεραν να αποθηκευτούν.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "Ο <FindDiscordIdLink> αριθμός αναγνώρισης </FindDiscordIdLink> για τον λογαριασμό του χρήστη σου",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "Ο <FindDiscordIdLink>multi-digit ID αριθμός</FindDiscordIdLink> που σχετίζεται με τον λογαριασμό σας",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "Αναγνωριστικό χρήστη",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Χρήστης",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Οι ρυθμίσεις αποθηκεύτηκαν με επιτυχία!",
|
||||
@@ -553,7 +553,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Όριο Αιτημάτων Σειρών",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Ρόλος",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Φιλτράρει το περιεχόμενο βάσει της διαθεσιμότητας του περιεχομένου",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Ανακάλυψε βάσει την περιοχή",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Ανακάλυψη βάσει περιοχής",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Χρήστης Plex",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Ιδιοκτήτης",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Φίλτραρε το περιεχόμενο με βάση την αρχική γλώσσα",
|
||||
@@ -563,7 +563,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Προεπιλεγμένη ({language})",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Γενικές Ρυθμίσεις",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.general": "Γενικές",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Ενεργοποίηση παράκαμψης",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Παράκαμψη καθολικού ορίου",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Εμφανιζόμενο όνομα",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "Προβολή Γλώσσας",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.admin": "Διαχειριστής",
|
||||
@@ -584,20 +584,20 @@
|
||||
"components.UserList.usercreatedfailedexisting": "Η παρεχόμενη διεύθυνση email χρησιμοποιείται ήδη από άλλο χρήστη.",
|
||||
"components.UserList.usercreatedfailed": "Κάτι πήγε στραβά κατά τη δημιουργία του χρήστη.",
|
||||
"components.UserList.user": "Χρήστης",
|
||||
"components.UserList.totalrequests": "Σύνολο αιτημάτων",
|
||||
"components.UserList.totalrequests": "Αιτήματα",
|
||||
"components.UserList.sortRequests": "Αριθμός αιτημάτων",
|
||||
"components.UserList.sortDisplayName": "Εμφανιζόμενο όνομα",
|
||||
"components.UserList.sortCreated": "Ημερομηνία δημιουργίας",
|
||||
"components.UserList.sortCreated": "Ημερομηνία που έγινε μέλος",
|
||||
"components.UserList.role": "Ρόλος",
|
||||
"components.UserList.plexuser": "Χρήστης Plex",
|
||||
"components.UserList.passwordinfodescription": "Ενεργοποίησε τις ειδοποιήσεις μέσω email για να επιτρέψεις την αυτόματη δημιουργία κωδικών πρόσβασης.",
|
||||
"components.UserList.passwordinfodescription": "Ορίστε ένα URL εφαρμογής και ενεργοποιήστε τις ειδοποιήσεις με email για να επιτρέψετε την αυτόματη δημιουργία κωδικού.",
|
||||
"components.UserList.password": "Κωδικός πρόσβασης",
|
||||
"components.UserList.owner": "Ιδιοκτήτης",
|
||||
"components.UserList.nouserstoimport": "Δεν υπάρχουν νέοι χρήστες για εισαγωγή από το Plex.",
|
||||
"components.UserList.nouserstoimport": "Δεν υπάρχουν χρήστες για εισαγωγή από το Plex.",
|
||||
"components.UserList.localuser": "Τοπικός χρήστης",
|
||||
"components.UserList.localLoginDisabled": "Η ρύθμιση <strong>Ενεργοποίηση τοπικής σύνδεσης</strong> είναι προς το παρόν απενεργοποιημένη.",
|
||||
"components.UserList.importfromplexerror": "Κάτι πήγε στραβά κατά την εισαγωγή χρηστών από το Plex.",
|
||||
"components.UserList.importfrommediaserver": "Εισαγωγή χρηστών από το {mediaServerName}",
|
||||
"components.UserList.importfrommediaserver": "Εισαγωγή χρηστών {mediaServerName}",
|
||||
"components.UserList.importfromplex": "Εισαγωγή χρηστών από το Plex",
|
||||
"components.UserList.importedfromplex": "{userCount, plural, one {# νέου χρήστη} other {#νέοι χρήστες}} εισήχθησαν απο το Plex επιτυχώς!",
|
||||
"components.UserList.email": "Διεύθυνση ηλεκτρονικού ταχυδρομείου",
|
||||
@@ -606,13 +606,13 @@
|
||||
"components.UserList.deleteconfirm": "Είσαι σίγουρος ότι θες να διαγράψεις αυτόν τον χρήστη; Όλα τα αποθηκευμένα αιτήματα του θα διαγραφούν οριστικά.",
|
||||
"components.UserList.creating": "Δημιουργείται…",
|
||||
"components.UserList.createlocaluser": "Δημιουργία τοπικού χρήστη",
|
||||
"components.UserList.created": "Δημιουργήθηκε",
|
||||
"components.UserList.created": "Έγινε μέλος",
|
||||
"components.UserList.create": "Δημιουργία",
|
||||
"components.UserList.bulkedit": "Μαζική επεξεργασία",
|
||||
"components.UserList.autogeneratepasswordTip": "Στείλε με μήνυμα ηλεκτρονικού ταχυδρομείου έναν κωδικό πρόσβασης που δημιουργείται από τον διακομιστή στον χρήστη",
|
||||
"components.UserList.autogeneratepassword": "Αυτόματη δημιουργία κωδικού πρόσβασης",
|
||||
"components.UserList.admin": "Διαχειριστής",
|
||||
"components.UserList.accounttype": "Τύπος Λογαριασμού",
|
||||
"components.UserList.accounttype": "Τύπος",
|
||||
"components.TvDetails.watchtrailer": "Δες το Τρέιλερ",
|
||||
"components.TvDetails.viewfullcrew": "Προβολή Πλήρους Συνεργείου",
|
||||
"components.TvDetails.similar": "Παρόμοιες σειρές",
|
||||
@@ -747,7 +747,7 @@
|
||||
"components.Settings.SonarrModal.validationPortRequired": "Πρέπει να δώσεις έναν έγκυρο αριθμό θύρας",
|
||||
"components.Settings.SonarrModal.validationNameRequired": "Πρέπει να δώσεις ένα όνομα διακομιστή",
|
||||
"components.Settings.SonarrModal.validationLanguageProfileRequired": "Πρέπει να επιλέξεις ένα προφίλ γλώσσας",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Πρέπει να δώσεις ένα όνομα κεντρικού υπολογιστή ή διεύθυνση IP",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Πρέπει να δώσετε ένα έγκυρο όνομα κεντρικού υπολογιστή ή διεύθυνση IP",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "Η βασική διεύθυνση URL δεν πρέπει να τελειώνει με κάθετο",
|
||||
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Η βασική διεύθυνση URL πρέπει να έχει μια κάθετο μπροστά",
|
||||
"components.Settings.SonarrModal.validationApplicationUrlTrailingSlash": "Η διεύθυνση URL δεν πρέπει να τελειώνει με κάθετο",
|
||||
@@ -802,7 +802,7 @@
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "Οι ρυθμίσεις του χρήστη αποθηκεύτηκαν επιτυχώς!",
|
||||
"components.Settings.SettingsUsers.toastSettingsFailure": "Κάτι πήγε στραβά κατά την αποθήκευση των ρυθμίσεων.",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Επίτρεψε στους χρήστες του {mediaServerName} να συνδεθούν χωρίς να εισαχθούν πρώτα",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Ενεργοποίηση σύνδεσης νέου χρήστη του {mediaServerName}",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Ενεργοποίηση νέας σύνδεσης {mediaServerName}",
|
||||
"components.Settings.SettingsJobsCache.jobsDescription": "Το Jellyseerr εκτελεί ορισμένες εργασίες συντήρησης ως τακτικά προγραμματισμένες εργασίες, αλλά μπορούν επίσης να ενεργοποιηθούν χειροκίνητα παρακάτω. Η χειροκίνητη εκτέλεση μιας εργασίας δεν θα αλλάξει το χρονοδιάγραμμα του.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Template Variable Help",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Ο χρήστης σου ή η συσκευή <LunaSeaLink>ειδοποίηση webhook URL</LunaSeaLink>",
|
||||
@@ -826,5 +826,448 @@
|
||||
"i18n.status": "Κατάσταση",
|
||||
"i18n.showingresults": "Εμφάνιση <strong>{from}</strong> έως <strong>{to}</strong> από <strong>{total}</strong> αποτελέσματα",
|
||||
"components.Settings.SettingsAbout.betawarning": "Αυτό είναι λογισμικό BETA. Οι λειτουργίες ενδέχεται να είναι σπασμένες ή/και ασταθείς. Παρακαλώ αναφέρετε τυχόν προβλήματα με το GitHub!",
|
||||
"components.StatusBadge.status": "{status}"
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.Settings.validationUrlBaseLeadingSlash": "Η βάση URL πρέπει να έχει μια κάθετο μπροστά",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Αυτόματη αίτηση ταινιών",
|
||||
"components.IssueModal.CreateIssueModal.reportissue": "Αναφορά προβλήματος",
|
||||
"i18n.resolved": "Επιλύθηκε",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"i18n.import": "Εισαγωγή",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Αριθμός ψήφων χρηστών TMDB",
|
||||
"components.Discover.FilterSlideover.voteCount": "Αριθμός ψήφων μεταξύ {minValue} και {maxValue}",
|
||||
"components.IssueDetails.comments": "Σχόλια",
|
||||
"components.IssueDetails.season": "Σεζόν {seasonNumber}",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {Episode} other {Episodes}}",
|
||||
"components.IssueList.IssueItem.openeduserdate": "{date} από {user}",
|
||||
"components.IssueModal.CreateIssueModal.providedetail": "Παρακαλώ δώστε λεπτομερή εξήγηση του προβλήματος που αντιμετωπίσατε.",
|
||||
"components.IssueModal.CreateIssueModal.submitissue": "Υποβολή προβλήματος",
|
||||
"components.IssueModal.issueSubtitles": "Υπότιτλος",
|
||||
"components.ManageSlideOver.movie": "ταινία",
|
||||
"components.ManageSlideOver.openarr": "Άνοιγμα σε {arr}",
|
||||
"components.MovieDetails.rtcriticsscore": "Τοματόμετρο Rotten Tomatoes",
|
||||
"components.MovieDetails.showmore": "Εμφάνιση περισσότερων",
|
||||
"components.MovieDetails.streamingproviders": "Γίνεται Streaming στο",
|
||||
"components.NotificationTypeSelector.issuecomment": "Σχόλιο προβλήματος",
|
||||
"components.NotificationTypeSelector.issuereopened": "Το πρόβλημα ανοίχθηκε ξανά",
|
||||
"components.NotificationTypeSelector.issueresolved": "Το πρόβλημα επιλύθηκε",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Ειδοποιηθείτε όταν αιτήματα αποτυγχάνουν να προστεθούν στο Radarr ή το Sonarr.",
|
||||
"components.PermissionEdit.createissuesDescription": "Χορήγηση άδειας για την αναφορά προβλημάτων.",
|
||||
"components.PermissionEdit.manageissues": "Διαχείριση προβλημάτων",
|
||||
"components.PermissionEdit.viewissuesDescription": "Χορήγηση άδειας για την προβολή προβλημάτων που αναφέρθηκαν από άλλους χρήστες.",
|
||||
"components.PermissionEdit.viewwatchlists": "Προβολή λιστών παρακολούθησης Plex",
|
||||
"components.QuotaSelector.days": "{count, plural, one {day} other {days}}",
|
||||
"components.RequestBlock.requestedby": "Αιτήθηκε από",
|
||||
"components.RequestCard.approverequest": "Έγκριση αίτησης",
|
||||
"components.RequestCard.declinerequest": "Απόρριψη αίτησης",
|
||||
"components.RequestCard.editrequest": "Επεξεργασία αίτησης",
|
||||
"components.RequestCard.failedretry": "Κάτι πήγε στραβά με την επανάληψη της αίτησης.",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
"components.RequestModal.requestseries4ktitle": "Αίτηση σειράς σε 4Κ",
|
||||
"components.RequestModal.selectmovies": "Επιλέξτε ταινία(ες)",
|
||||
"components.Selector.nooptions": "Δεν υπάρχουν αποτελέσματα.",
|
||||
"components.Selector.searchKeywords": "Αναζήτηση λέξεων-κλειδιών…",
|
||||
"components.Selector.searchStudios": "Αναζήτηση στούντιο…",
|
||||
"components.Selector.showless": "Εμφάνιση λιγότερων",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Οι ρυθμίσεις ειδοποιήσεων Gotify αποθηκεύτηκαν επιτυχώς!",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestFailed": "Η δοκιμαστική αποστολή ειδοποίησης Gotify απέτυχε.",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlTrailingSlash": "Ο σύνδεσμος δε μπορεί να τελειώνει σε κάθετο",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Τίτλος εφαρμογής",
|
||||
"components.Settings.SettingsMain.trustProxy": "Ενεργοποίηση Proxy",
|
||||
"components.StatusBadge.playonplex": "Αναπαραγωγή στο Plex",
|
||||
"components.TvDetails.rtaudiencescore": "Βαθμολογία κοινού Rotten Tomatoes",
|
||||
"components.TvDetails.tmdbuserscore": "Βαθμολογία χρηστών TMDB",
|
||||
"components.TvDetails.reportissue": "Αναφέρετε ένα πρόβλημα",
|
||||
"components.Settings.RadarrModal.tagRequests": "Αιτήματα ετικετών",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Αυτόματη προσθήκη πρόσθετης ετικέτας με το αναγνωριστικό χρήστη και το όνομα χρήστη του αιτούντος",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedule": "Μεταβολή εργασίας",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Κάτι πήγε στραβά με την αποθήκευση της εργασίας.",
|
||||
"components.Settings.SettingsMain.cacheImages": "Ενεργοποίηση caching εικόνων",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Κάνε cache εικόνες από εξωτερικές πηγές (απαιτεί πολύ αποθηκευτικό χώρο στο δίσκο)",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Ορισμός εξωτερικής πρόσβασης API σε read-only (απαιτεί HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Γενικά",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Διαμόρφωση των γενικών και προεπιλεγμένων ρυθμίσεων για το Jellyseerr.",
|
||||
"components.Settings.SettingsMain.regionTip": "Φιλτράρετε το περιεχόμενο βάσει διαθεσιμότητας ανά περιοχή",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Κάτι πήγε στραβά κατά την αποθήκευση των ρυθμίσεων.",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "Το URL δε μπορεί να τελειώνει με κάθετο",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Αρχικά δικαιώματα που ορίζονται σε νέους χρήστες",
|
||||
"components.Settings.deleteServer": "Διαγραφή {serverType} διακομιστή",
|
||||
"components.Settings.tautulliSettingsDescription": "Προαιρετικό: Διαμορφώστε τις ρυθμίσεις του Tautulli διακομιστή σας. Το Jellyseerr τραβάει το ιστορικό προβολών του Plex από το Tautulli.",
|
||||
"components.Settings.validationApiKey": "Πρέπει να δώσετε ένα κλειδί API",
|
||||
"components.StatusChecker.restartRequiredDescription": "Παρακαλώ επανεκκινήστε τον διακομιστή ώστε να εφαρμοστούν οι ενημερωμένες ρυθμίσεις.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Κάτι πήγε στραβά κατά την ανάκτηση των δεδομένων της σεζόν.",
|
||||
"components.TvDetails.manageseries": "Διαχείριση σειράς",
|
||||
"components.TvDetails.productioncountries": "Παραγωγή {countryCount, plural, one {Country} other {Countries}}",
|
||||
"components.TvDetails.rtcriticsscore": "Τοματόμετρο Rotten Tomatoes",
|
||||
"components.TvDetails.seasonnumber": "Σεζόν {seasonNumber}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Πρέπει να εισάγετε ένα έγκυρο αναγνωριστικό χρήστη Discord",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverUserKey": "Πρέπει να δώσετε ένα έγκυρο κλειδί χρήστη ή ομάδας",
|
||||
"components.UserProfile.emptywatchlist": "Περιεχόμενο που εισάγεται στη <PlexWatchlistSupportLink>λίστα παρακολούθησης του Plex</PlexWatchlistSupportLink> θα εμφανίζεται εδώ.",
|
||||
"components.UserProfile.recentlywatched": "Είδατε πρόσφατα",
|
||||
"i18n.collection": "Συλλογή",
|
||||
"components.MovieDetails.digitalrelease": "Ψηφιακή κυκλοφορία",
|
||||
"components.MovieDetails.physicalrelease": "Κυκλοφορία σε φυσική έκδοση",
|
||||
"components.RequestModal.approve": "Έγκριση αίτησης",
|
||||
"components.IssueDetails.deleteissueconfirm": "Είστε σίγουροι πως θέλετε να διαγράψετε αυτό το πρόβλημα;",
|
||||
"components.IssueDetails.commentplaceholder": "Προσθέστε ένα σχόλιο…",
|
||||
"components.IssueDetails.playonplex": "Αναπαραγωγή στο Plex",
|
||||
"components.IssueList.IssueItem.unknownissuetype": "Άγνωστο",
|
||||
"components.IssueDetails.unknownissuetype": "Άγνωστο",
|
||||
"components.IssueList.IssueItem.viewissue": "Προβολή προβλήματος",
|
||||
"components.ManageSlideOver.manageModalTitle": "Διαχείριση {mediaType}",
|
||||
"components.MovieDetails.showless": "Εμφάνιση λιγότερων",
|
||||
"components.QuotaSelector.seasons": "{count, plural, one {season} other {seasons}}",
|
||||
"components.Discover.tmdbmoviekeyword": "Λέξη-κλειδί ταινίας από TMDB",
|
||||
"components.IssueDetails.IssueDescription.description": "Περιγραφή",
|
||||
"components.ManageSlideOver.openarr4k": "Άνοιγμα σε 4K {arr}",
|
||||
"components.NotificationTypeSelector.adminissuecommentDescription": "Ειδοποιηθείτε όταν άλλοι χρήστες σχολιάζουν σε προβλήματα.",
|
||||
"components.NotificationTypeSelector.adminissuereopenedDescription": "Ειδοποιηθείτε όταν άλλοι χρήστες ξανανοίγουν προβλήματα.",
|
||||
"components.NotificationTypeSelector.adminissueresolvedDescription": "Ειδοποιηθείτε όταν προβλήματα λύνονται από άλλους χρήστες.",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Ειδοποιηθείτε όταν νέα αιτήματα καταχωρούνται αυτόματα από τη λίστα παρακολούθησης Plex.",
|
||||
"components.RequestBlock.approve": "Έγκριση αίτησης",
|
||||
"components.PermissionEdit.viewissues": "Προβολή προβλημάτων",
|
||||
"components.RequestBlock.edit": "Επεξεργασία αίτησης",
|
||||
"components.RequestCard.cancelrequest": "Ακύρωση αίτησης",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "Πρέπει να δώσετε ένα token εφαρμογής",
|
||||
"components.Settings.Notifications.NotificationsGotify.url": "URL διακομιστή",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlRequired": "Πρέπει να δώσετε έναν έγκυρο σύνδεσμο",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushbulletAccessToken": "Πρέπει να δώσετε ένα token πρόσβασης",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL εφαρμογής",
|
||||
"components.Settings.SettingsMain.originallanguage": "Γλώσσα σελίδας ανακάλυψης",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Το νέο κλειδί API δημιουργήθηκε με επιτυχία!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessToken": "Token πρόσβασης",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationToken": "API Token εφαρμογής",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Οι ρυθμίσεις ειδοποιήσεων Pushbullet αποθηκεύτηκαν επιτυχώς!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Οι ρυθμίσεις ειδοποιήσεων του Pushover αποθηκεύτηκαν επιτυχώς!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Οι ρυθμίσεις ειδοποιήσεων του Pushover απέτυχαν να αποθηκευτούν.",
|
||||
"components.PermissionEdit.viewrecent": "Προβολή αυτών που προστέθηκαν πρόσφατα",
|
||||
"components.Settings.SettingsAbout.appDataPath": "Κατάλογος Δεδομένων",
|
||||
"components.RequestModal.requestApproved": "Η αίτηση για το <strong>{title}</strong> εγκρίθηκε!",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Ενεργοποίηση Agent",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Ειδοποιηθείτε όταν άλλοι χρήστες κάνουν αιτήματα που εγκρίνονται αυτόματα.",
|
||||
"components.IssueModal.issueOther": "Άλλο",
|
||||
"components.ManageSlideOver.manageModalIssues": "Ανοιχτά προβλήματα",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.NotificationTypeSelector.issuecreatedDescription": "Αποστολή ειδοποιήσεων όταν αναφέρονται προβλήματα.",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Λίστα παρακολούθησης Plex",
|
||||
"components.IssueDetails.closeissueandcomment": "Κλείσιμο με σχόλιο",
|
||||
"components.IssueDetails.deleteissue": "Διαγραφή προβλήματος",
|
||||
"components.IssueDetails.nocomments": "Δεν υπάρχουν σχόλια.",
|
||||
"components.IssueDetails.problemepisode": "Επηρεασμένο επεισόδιο",
|
||||
"components.IssueDetails.reopenissue": "Ανοίξτε ξανά το πρόβλημα",
|
||||
"components.IssueModal.issueAudio": "Ήχος",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "Καθαρισμός δεδομένων",
|
||||
"components.ManageSlideOver.opentautulli": "Άνοιγμα στο Tautulli",
|
||||
"components.MovieDetails.managemovie": "Διαχείριση ταινίας",
|
||||
"components.MovieDetails.reportissue": "Αναφορά προβλήματος",
|
||||
"components.PermissionEdit.createissues": "Αναφορά προβλημάτων",
|
||||
"components.Settings.SettingsLogs.viewdetails": "Προβολή λεπτομερειών",
|
||||
"components.IssueDetails.IssueComment.delete": "Διαγραφή σχολίου",
|
||||
"components.IssueList.IssueItem.issuetype": "Τύπος",
|
||||
"components.Settings.Notifications.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.RequestList.RequestItem.requesteddate": "Ζητήθηκε",
|
||||
"components.Discover.tmdbmoviestreamingservices": "Υπηρεσίες streaming ταινίας από TMDB",
|
||||
"components.Discover.tmdbtvstreamingservices": "TMDB Υπηρεσίες streaming τηλεόρασης",
|
||||
"components.IssueDetails.allseasons": "Όλες οι σεζόν",
|
||||
"components.Discover.updatesuccess": "Ενημέρωση των ρυθμίσεων προσαρμογής της ανακάλυψης.",
|
||||
"components.IssueDetails.closeissue": "Κλείσιμο προβλήματος",
|
||||
"components.IssueDetails.openedby": "#{issueId} ανοίχτηκε {relativeTime} από {username}",
|
||||
"components.IssueDetails.leavecomment": "Σχόλιο",
|
||||
"components.IssueDetails.openinarr": "Άνοιγμα σε {arr}",
|
||||
"components.IssueModal.CreateIssueModal.extras": "Πρόσθετα",
|
||||
"components.IssueDetails.toasteditdescriptionfailed": "Κάτι πήγε στραβά κατά την επεξεργασία της περιγραφής του προβλήματος.",
|
||||
"components.IssueDetails.toasteditdescriptionsuccess": "Η περιγραφή του προβλήματος επεξεργάστηκε με επιτυχία!",
|
||||
"components.Layout.Sidebar.issues": "Προβλήματα",
|
||||
"components.IssueModal.CreateIssueModal.toastFailedCreate": "Κάτι πήγε στραβά με την υποβολή του προβλήματος.",
|
||||
"components.ManageSlideOver.manageModalMedia": "Περιεχόμενο",
|
||||
"components.ManageSlideOver.downloadstatus": "Λήψεις",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4Κ περιεχόμενο",
|
||||
"components.ManageSlideOver.mark4kavailable": "Επισήμανση ως διαθέσιμο σε 4K",
|
||||
"components.ManageSlideOver.markavailable": "Επισήμανση ως διαθέσιμο",
|
||||
"components.ManageSlideOver.playedby": "Προβλήθηκε από",
|
||||
"components.ManageSlideOver.pastdays": "Προηγούμενες {days, number} Ημέρες",
|
||||
"components.MovieDetails.theatricalrelease": "Κινηματογραφική κυκλοφορία",
|
||||
"components.MovieDetails.tmdbuserscore": "Βαθμολογία χρηστών TMDB",
|
||||
"components.NotificationTypeSelector.issuecreated": "Αναφέρθηκε πρόβλημα",
|
||||
"components.NotificationTypeSelector.issuecommentDescription": "Αποστολή ειδοποιήσεων όταν υπάρχουν νέα σχόλια σε προβλήματα.",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Καταχωρήθηκε αίτημα αυτόματα",
|
||||
"components.NotificationTypeSelector.userissuereopenedDescription": "Ειδοποιηθείτε όταν προβλήματα που αναφέρατε ξανανοίγουν.",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Ειδοποιηθείτε όταν προβλήματα που αναφέρατε επιλύονται.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Ειδοποιηθείτε όταν τα αιτήματα σας εγκρίνονται.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Ειδοποιηθείτε όταν τα αιτήματα σας γίνονται διαθέσιμα.",
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "Ειδοποιηθείτε όταν άλλοι χρήστες αναφέρουν προβλήματα.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Ειδοποιηθείτε όταν τα αιτήματα σας απορρίπτονται.",
|
||||
"components.PermissionEdit.autorequest": "Αυτόματη αίτηση",
|
||||
"components.PermissionEdit.autorequestMovies": "Αυτόματη αίτηση ταινιών",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Χορήγηση άδειας για την αυτόματη υποβολή αιτημάτων για μη-4Κ σειρές από τη λίστα προβολής του Plex.",
|
||||
"components.PermissionEdit.manageissuesDescription": "Χορήγηση άδειας για τη διαχείριση προβλημάτων.",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} ανά {quotaDays} {days}</quotaUnits>",
|
||||
"components.RequestCard.tvdbid": "TheTVDB ID",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "Δε μπορέσαμε να αντιστοιχήσουμε αυτή τη σειρά.",
|
||||
"components.RequestModal.requestmovies": "Αίτηση {count} {count, plural, one {Movie} other {Movies}}",
|
||||
"components.Selector.showmore": "Εμφάνιση περισσότερων",
|
||||
"components.Selector.starttyping": "Αρχίστε να πληκτρολογείτε για αναζήτηση.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSending": "Αποστολή δοκιμαστικής ειδοποίησης Gotify…",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "Ετικέτα καναλιού",
|
||||
"components.Settings.RadarrModal.announced": "Ανακοινώθηκε",
|
||||
"components.Settings.RadarrModal.inCinemas": "Στους Κινηματογράφους",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Συγχρονισμός διαθεσιμότητας περιεχομένου",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Οι εικόνες έγιναν cache",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Καθαρισμός cached εικόνων",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Καθαρισμός Cache",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Συγχρονισμός λίστας παρακολούθησης Plex",
|
||||
"components.Settings.SettingsMain.generalsettings": "Γενικές ρυθμίσεις",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Απόκρυψη διαθέσιμου περιεχομένου",
|
||||
"components.Settings.SettingsMain.region": "Περιοχή σελίδας ανακάλυψης",
|
||||
"components.Settings.restartrequiredTooltip": "Το Jellyseerr πρέπει να κάνει επανεκκίνηση ώστε να εφαρμοστεί αυτή η ρύθμιση",
|
||||
"components.Settings.tautulliSettings": "Ρυθμίσεις Tautulli",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Οι ρυθμίσεις του Tautulli αποθηκεύτηκαν επιτυχώς!",
|
||||
"components.Settings.validationUrlBaseTrailingSlash": "Η βάση URL δεν πρέπει να τελειώνει με κάθετο",
|
||||
"components.Settings.validationUrlTrailingSlash": "Το URL δε μπορεί να τελειώνει με κάθετο",
|
||||
"components.StatusChecker.reloadApp": "Επαναφόρτωση {applicationTitle}",
|
||||
"components.StatusBadge.seasonepisodenumber": "Σ{seasonNumber}Ε{episodeNumber}",
|
||||
"components.TitleCard.cleardata": "Καθαρισμός δεδομένων",
|
||||
"components.TvDetails.seasonstitle": "Σεζόν",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Ζητήστε αυτόματα ταινίες που βρίσκονται στη <PlexWatchlistSupportLink>λίστα παρακολούθησης του Plex</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "Το αναγνωριστικό 30 χαρακτήρων <UsersGroupsLink>του χρήστη ή της ομάδας σας</UsersGroupsLink>",
|
||||
"components.AirDateBadge.airedrelative": "Προβλήθηκε {relativeTime}",
|
||||
"components.ManageSlideOver.manageModalRequests": "Αιτήματα",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Επισημάνετε όλες τις σεζόν ως διαθέσιμες σε 4Κ",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Δώστε ένα TMDB Genre ID",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Δώστε ένα TMDB Keyword ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Δώστε το TMDB Network ID",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Δώστε ένα ερώτημα αναζήτησης",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Δώστε το TMDB Studio ID",
|
||||
"components.Discover.CreateSlider.searchGenres": "Αναζήτηση ειδών…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Αναζήτηση λέξεων-κλειδιών…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Αναζήτηση στούντιο…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Όνομα Slider",
|
||||
"components.Discover.CreateSlider.starttyping": "Αρχίστε να πληκτρολογείτε για αναζήτηση.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Πρέπει να δώσετε μια τιμή.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Πρέπει να δώσετε έναν τίτλο.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Ταινίες",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Εναλλαγή ορατότητας",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Αφαίρεση",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Σειρά",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Η λίστα παρακολούθησης σας του Plex",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Η λίστα παρακολούθησης σας του Plex",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Προστέθηκαν πρόσφατα",
|
||||
"components.Discover.createnewslider": "Δημιουργία νέου Slider",
|
||||
"components.Discover.customizediscover": "Προσαρμογή σελίδας ανακάλυψης",
|
||||
"components.Discover.plexwatchlist": "Η λίστα παρακολούθησης σας του Plex",
|
||||
"components.Discover.networks": "Δίκτυα",
|
||||
"components.Discover.resetwarning": "Επαναφορά όλων των sliders την προεπιλογή. Αυτό θα διαγράψει και οποιοδήποτε εξατομικευμένο slider!",
|
||||
"components.Discover.stopediting": "Διακοπή επεξεργασίας",
|
||||
"components.Discover.studios": "Στούντιο",
|
||||
"components.Discover.tmdbmoviegenre": "Είδος Ταινίας TMDB",
|
||||
"components.Discover.updatefailed": "Κάτι πήγε στραβά με την ενημέρωση των ρυθμίσεων προσαρμογής της ανακάλυψης.",
|
||||
"components.Discover.tvgenres": "Είδη σειρών",
|
||||
"components.IssueDetails.episode": "Επεισόδιο {episodeNumber}",
|
||||
"components.IssueDetails.openin4karr": "Άνοιγμα σε 4K {arr}",
|
||||
"components.IssueDetails.IssueDescription.deleteissue": "Διαγραφή προβλήματος",
|
||||
"components.IssueModal.CreateIssueModal.allseasons": "Όλες οι σεζόν",
|
||||
"components.IssueList.IssueItem.issuestatus": "Κατάσταση",
|
||||
"components.IssueList.IssueItem.opened": "Ανοίχτηκε",
|
||||
"components.IssueList.IssueItem.problemepisode": "Επηρεασμένο επεισόδιο",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {Season} other {Seasons}}",
|
||||
"components.IssueModal.CreateIssueModal.problemepisode": "Επηρεασμένο επεισόδιο",
|
||||
"components.IssueModal.CreateIssueModal.problemseason": "Επηρεασμένη σεζόν",
|
||||
"components.IssueModal.issueVideo": "Βίντεο",
|
||||
"components.IssueModal.CreateIssueModal.whatswrong": "Τι συμβαίνει;",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Αιτήματα ταινιών",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Αιτήματα σειρών",
|
||||
"components.Layout.UserDropdown.requests": "Αιτήματα",
|
||||
"components.ManageSlideOver.tvshow": "σειρά",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {play} other {plays}}",
|
||||
"components.RequestBlock.decline": "Απόρριψη αίτησης",
|
||||
"components.RequestBlock.delete": "Διαγραφή αίτησης",
|
||||
"components.RequestBlock.lastmodifiedby": "Τελευταία τροποποίηση από",
|
||||
"components.RequestBlock.requestdate": "Ημ/νία αίτησης",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Episode} other {# Episodes}}",
|
||||
"components.TvDetails.streamingproviders": "Γίνεται Streaming στο",
|
||||
"components.RequestBlock.languageprofile": "Προφίλ γλώσσας",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.Settings.Notifications.enableMentions": "Ενεργοποίηση αναφορών",
|
||||
"i18n.importing": "Γίνεται εισαγωγή…",
|
||||
"components.IssueDetails.issuetype": "Τύπος",
|
||||
"components.IssueDetails.toaststatusupdated": "Η κατάσταση του προβλήματος ενημερώθηκε επιτυχώς!",
|
||||
"components.IssueModal.CreateIssueModal.allepisodes": "Όλα τα επεισόδια",
|
||||
"components.IssueList.showallissues": "Προβολή όλων των προβλημάτων",
|
||||
"components.IssueList.sortAdded": "Πιο πρόσφατα",
|
||||
"components.IssueModal.CreateIssueModal.toastviewissue": "Προβολή προβλήματος",
|
||||
"components.AirDateBadge.airsrelative": "Θα προβληθεί σε {relativeTime}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Κάθε {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Συνολικό μέγεθος cache",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "ΜΗΝ ενεργοποιήσετε αυτή τη ρύθμιση εάν δε γνωρίζετε τι κάνετε!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Επιτρέψτε στο Overseer να καταχωρήσει διευθύνσεις IP τερματικών πίσω από proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Πρέπει να δώσετε έναν τίτλο εφαρμογής",
|
||||
"components.Settings.advancedTooltip": "Λανθασμένη παραμετροποίηση αυτή της ρύθμισης μπορεί να οδηγήσει σε διακοπή της λειτουργίας",
|
||||
"components.Settings.experimentalTooltip": "Η ενεργοποίηση αυτής της ρύθμισης μπορεί να οδηγήσει σε απρόσμενη συμπεριφορά της εφαρμογής",
|
||||
"components.Settings.urlBase": "Βάση URL",
|
||||
"components.Settings.validationUrl": "Πρέπει να δώσετε ένα έγκυρο URL",
|
||||
"components.StatusBadge.managemedia": "Διαχείριση {mediaType}",
|
||||
"components.StatusBadge.openinarr": "Άνοιγμα σε {arr}",
|
||||
"components.UserList.displayName": "Εμφανιζόμενο όνομα",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Αυτόματη αίτηση σειρών",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessTokenTip": "Δημιουργήστε ένα token από τις <PushbulletSettingsLink>Ρυθμίσεις Λογαριασμού</PushbulletSettingsLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationTokenTip": "<ApplicationRegistrationLink>Καταχωρήστε μια εφαρμογή</ApplicationRegistrationLink> για χρήση με το {applicationTitle}",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Ταινίες",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Τίτλος (Α-Ω) Αύξουσα σειρά",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Τίτλος (Ω-Α) φθίνουσα σειρά",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "Βαθμολογία TMDB αύξουσα",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "Βαθμολογία TMDB φθίνουσα",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Εκκαθάριση ενεργών φίλτρων",
|
||||
"components.Discover.FilterSlideover.filters": "Φίλτρα",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Ημ/νία πρώτης προβολής",
|
||||
"components.Discover.FilterSlideover.from": "Από",
|
||||
"components.Discover.FilterSlideover.genres": "Είδη",
|
||||
"components.Discover.FilterSlideover.keywords": "Λέξεις κλειδιά",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Πρωτότυπη γλώσσα",
|
||||
"components.Discover.FilterSlideover.ratingText": "Βαθμολογίες από {minValue} έως {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Ημερομηνία κυκλοφορίας",
|
||||
"components.Discover.FilterSlideover.runtime": "Διάρκεια",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Χορήγηση άδειας για την αυτόματη υποβολή αιτήσεων για ταινίες μη-4K μέσω της λίστας παρακολούθησης του Plex.",
|
||||
"components.PermissionEdit.autorequestSeries": "Αυτόματη αίτηση σειρών",
|
||||
"components.RequestModal.requestcollection4ktitle": "Αίτηση συλλογής σε 4K",
|
||||
"components.RequestModal.requestcollectiontitle": "Αίτηση συλλογής",
|
||||
"components.Selector.searchGenres": "Επιλέξτε είδη…",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Νέα συχνότητα",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Κάθε {jobScheduleHours, plural, one {hour} other {{jobScheduleHours} hours}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Κάθε {jobScheduleMinutes, plural, one {minute} other {{jobScheduleMinutes} minutes}}",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Όταν είναι ενεργοποιημένο στις ρυθμίσεις, το Jellyseerr θα κάνει proxy και cache εικόνες από προκαθορισμένες εξωτερικές πηγές. Οι εικόνες που έχουν γίνει cached θα αποθηκευτούν στον φάκελο των αρχείων. Μπορείτε να βρείτε τα αρχεία στο <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Ενεργοποίηση προστασίας CSRF",
|
||||
"components.Settings.SettingsMain.locale": "Γλώσσα εμφάνισης",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Φιλτράρετε το περιεχόμενο με βάση τη πρωτότυπη γλώσσα",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Επιτρέψτε τις αιτήσεων σειρών μερικώς",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Χορήγηση άδειας σε χρήστες να συνδεθούν χρησιμοποιώντας το email τους και τον κωδικό τους, αντί να συνδεθούν μέσω Plex",
|
||||
"components.Settings.externalUrl": "Εξωτερικό URL",
|
||||
"components.Settings.tautulliApiKey": "Κλειδί API",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Κάτι πήγε στραβά κατά την αποθήκευση των ρυθμίσεων του Tautulli.",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} Ενημερώθηκε",
|
||||
"components.StatusChecker.restartRequired": "Απαιτείται επανεκκίνηση του διακομιστή",
|
||||
"components.TitleCard.mediaerror": "{mediaType} Δε βρέθηκε",
|
||||
"components.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.TvDetails.Season.noepisodes": "Η λίστα επεισοδίων δεν είναι διαθέσιμη.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Ο <FindDiscordIdLink>multi-digit ID αριθμός</FindDiscordIdLink> που σχετίζεται με τον λογαριασμό σας στο Discord",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingsfailed": "Οι ρυθμίσεις ειδοποιήσεων Pushbullet απέτυχαν να αποθηκευτούν.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKey": "Κλειδί χρήστη ή ομάδας",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Πρέπει να δώσετε ένα έγκυρο token εφαρμογής",
|
||||
"i18n.open": "Άνοιγμα",
|
||||
"i18n.restartRequired": "Απαιτείται επανεκκίνηση",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Σεζόν {seasonNumber} Επεισόδιο {episodeNumber}",
|
||||
"components.NotificationTypeSelector.issueresolvedDescription": "Αποστολή ειδοποιήσεων όταν λύνονται προβλήματα.",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Άγνωστος τίτλος",
|
||||
"components.RequestModal.requestseriestitle": "Αίτηση σειράς",
|
||||
"components.Discover.moviegenres": "Είδη ταινιών",
|
||||
"components.Discover.resetfailed": "Κάτι πήγε στραβά με την επαναφορά των ρυθμίσεων εξατομίκευσης ανακάλυψης.",
|
||||
"components.Discover.resetsuccess": "Επιτυχής επαναφορά των ρυθμίσεων προσαρμογής ανακάλυψης.",
|
||||
"components.Discover.FilterSlideover.studio": "Στούντιο",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "Βαθμολογία χρηστών TMDB",
|
||||
"components.Discover.FilterSlideover.to": "Εως",
|
||||
"components.Discover.tmdbnetwork": "Δίκτυο TMDB",
|
||||
"components.Discover.tmdbsearch": "TMDB Αναζήτηση",
|
||||
"components.Discover.tmdbtvgenre": "Είδος σειράς TMDB",
|
||||
"components.IssueDetails.IssueComment.postedby": "Δημοσιεύθηκε {relativeTime} από {username}",
|
||||
"components.IssueDetails.IssueComment.postedbyedited": "Δημοσιεύθηκε {relativeTime} από {username} (Επεξεργάστηκε)",
|
||||
"components.IssueDetails.play4konplex": "Αναπαραγωγή σε 4K στο Plex",
|
||||
"components.IssueDetails.toastissuedeleted": "Το πρόβλημα διαγράφηκε επιτυχώς!",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Γλώσσα εμφάνισης",
|
||||
"components.Layout.Sidebar.browsemovies": "Ταινίες",
|
||||
"components.Layout.Sidebar.browsetv": "Σειρές",
|
||||
"components.RequestCard.unknowntitle": "Άγνωστος τίτλος",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Δημιουργία προσαρμοσμένου Slider",
|
||||
"components.Discover.CreateSlider.editSlider": "Επεξεργασία Slider",
|
||||
"components.Discover.CreateSlider.addSlider": "Προσθήκη Slider",
|
||||
"components.Discover.CreateSlider.addfail": "Απέτυχε η δημιουργία νέου slider.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Δημιουργήθηνε νέο slider και αποθηκεύτηκαν οι προσαρμοσμένες ρυθμίσεις ανακάλυψης.",
|
||||
"components.Discover.CreateSlider.nooptions": "Δεν υπάρχουν αποτελέσματα.",
|
||||
"components.Discover.CreateSlider.editfail": "Αποτυχία επεξεργασίας slider.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Επεξεργάστηκε το slider και αποθηκεύτηκαν οι προσαρμοσμένες ρυθμίσεις ανακάλυψης.",
|
||||
"components.Discover.CreateSlider.needresults": "Πρέπει να έχετε τουλάχιστον 1 αποτέλεσμα.",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Δημοτικότητα Αύξουσα",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Δημοτικότητα φθίνουσα",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Ημ/νία κυκλοφορίας αύξουσα",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Τίτλος (Ω-Α) φθίνουσα σειρά",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Ημ/νία κυκλοφορίας φθίνουσα",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Τίτλος (Α-Ω) Αύξουσα σειρά",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "Βαθμολογία TMDB αύξουσα",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "Βαθμολογία TMDB φθίνουσα",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Αποτυχία διαγραφής Slider.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Το Slider διαγράφηκε επιτυχώς.",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Δημοτικότητα φθίνουσα",
|
||||
"components.Discover.DiscoverTv.discovertv": "Σειρές",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Πρώτη ημ/νία προβολής φθίνουσα",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Δημοτικότητα αύξουσα",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Πρώτη ημ/νία προβολής αύξουσα",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} λεπτά διάρκειας",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Υπηρεσίες streaming",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Περιεχόμενο που προστέθηκε στη <PlexWatchlistSupportLink>Λίστα παρακολούθησης Plex</PlexWatchlistSupportLink> θα εμφανίζεται εδώ.",
|
||||
"components.Discover.resettodefault": "Επαναφορά στην προεπιλογή",
|
||||
"components.Discover.emptywatchlist": "Περιεχόμενο που προστέθηκε στη <PlexWatchlistSupportLink>Λίστα παρακολούθησης Plex</PlexWatchlistSupportLink> θα εμφανίζεται εδώ.",
|
||||
"components.Discover.tmdbstudio": "Στούντιο TMDB",
|
||||
"components.Discover.tmdbtvkeyword": "Λέξη-κλειδί σειράς TMDB",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Είστε σίγουροι πως θέλετε να διαγράψετε αυτό το σχόλιο;",
|
||||
"components.IssueDetails.IssueComment.edit": "Επεξεργασία σχολίου",
|
||||
"components.IssueDetails.IssueComment.validationComment": "Πρέπει να εισάγετε ένα μήνυμα",
|
||||
"components.IssueDetails.IssueDescription.edit": "Επεξεργασία περιγραφής",
|
||||
"components.IssueDetails.allepisodes": "Όλα τα επεισόδια",
|
||||
"components.IssueDetails.issuepagetitle": "Πρόβλημα",
|
||||
"components.IssueDetails.lastupdated": "Τελευταία ενημέρωση",
|
||||
"components.IssueDetails.reopenissueandcomment": "Ανοίξτε ξανά με σχόλιο",
|
||||
"components.IssueDetails.problemseason": "Επηρεασμένη σεζόν",
|
||||
"components.IssueDetails.toastissuedeletefailed": "Κάτι πήγε στραβά κατά τη διαγραφή του προβλήματος.",
|
||||
"components.IssueDetails.toaststatusupdatefailed": "Κάτι πήγε στραβά με την ενημέρωση της κατάστασης του προβλήματος.",
|
||||
"components.IssueList.sortModified": "Τελευταία τροποποιημένα",
|
||||
"components.IssueModal.CreateIssueModal.season": "Σεζόν {seasonNumber}",
|
||||
"components.IssueList.issues": "Προβλήματα",
|
||||
"components.IssueModal.CreateIssueModal.episode": "Επεισόδιο {episodeNumber}",
|
||||
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Η αναφορά προβλήματος για το <strong>{title}</strong> υποβλήθηκε επιτυχώς!",
|
||||
"components.IssueModal.CreateIssueModal.validationMessageRequired": "Πρέπει να δώσετε μια περιγραφή",
|
||||
"components.ManageSlideOver.alltime": "Από πάντα",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Για προχωρημένους",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Αυτό θα αφαιρέσει αμετάκλητα όλα τα δεδομένα για αυτό το {mediaType}, συμπεριλαμβανομένων τυχόν αιτήσεων. Εάν αυτό το στοιχείο υπάρχει στη βιβλιοθήκη Plex, οι πληροφορίες του μέσου θα δημιουργηθούν εκ νέου κατά την επόμενη σάρωση.",
|
||||
"components.ManageSlideOver.manageModalNoRequests": "Δεν υπάρχουν αιτήματα.",
|
||||
"components.ManageSlideOver.markallseasonsavailable": "Επισημάνετε όλες τις σεζόν ως διαθέσιμες",
|
||||
"components.MovieDetails.productioncountries": "Παραγωγή {countryCount, plural, one {Country} other {Countries}}",
|
||||
"components.MovieDetails.rtaudiencescore": "Βαθμολογία κοινού Rotten Tomatoes",
|
||||
"components.NotificationTypeSelector.issuereopenedDescription": "Αποστολή ειδοποιήσεων όταν ξανανοίγονται προβλήματα.",
|
||||
"components.NotificationTypeSelector.userissuecommentDescription": "Ειδοποιηθείτε όταν προβλήματα που έχετε αναφέρει λαμβάνουν νέα σχόλια.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Ειδοποιηθείτε όταν άλλοι χρήστες υποβάλλουν αιτήματα τα οποία απαιτούν έγκριση.",
|
||||
"components.PermissionEdit.autorequestDescription": "Χορήγηση άδειας για την αυτόματη υποβολή αιτήσεων για μέσα μη-4K μέσω της λίστας παρακολούθησης του Plex.",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} ανά {quotaDays} {days}</quotaUnits>",
|
||||
"components.PermissionEdit.viewrecentDescription": "Χορήγηση άδειας για την προβολή της λίστας του περιεχομένου που προστέθηκε πρόσφατα.",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Χορήγηση άδειας για την προβολή λιστών παρακολούθησης Plex άλλων χρηστών.",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {movie} other {movies}}",
|
||||
"components.RequestModal.requestmovie4ktitle": "Αίτηση ταινίας σε 4Κ",
|
||||
"components.RequestModal.requestmovies4k": "Αίτηση {count} {count, plural, one {Movie} other {Movies}} σε 4Κ",
|
||||
"components.RequestModal.requestmovietitle": "Αίτηση ταινίας",
|
||||
"components.RequestModal.requestseasons4k": "Αίτηση {seasonCount} {seasonCount, plural, one {Season} other {Seasons}} σε 4Κ",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Οι ρυθμίσεις ειδοποιήσεων Gotify απέτυχαν να αποθηκευτούν.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSuccess": "Η δοκιμαστική ειδοποίηση Gotify στάλθηκε!",
|
||||
"components.Settings.Notifications.NotificationsGotify.token": "Token εφαρμογής",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.Settings.RadarrModal.released": "Κυκλοφόρησε",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "Εκτελείτε την έκδοση <code>ανάπτυξης</code> του Jellyseerr, το οποίο προτείνεται μόνο για αυτούς που προσφέρουν την ανάπτυξη της εφαρμογής ή σε αυτούς που βοηθούν με τον έλεγχο των τελευταίων εκδόσεων.",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Τρέχουσα συχνότητα",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Η εργασία μεταβλήθηκε επιτυχώς!",
|
||||
"components.Settings.SettingsMain.apikey": "Κλειδί API",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Κάτι πήγε στραβά κατά τη δημιουργία νέου κλειδιού API.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Οι ρυθμίσεις αποθηκεύτηκαν με επιτυχία!",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Πρέπει να δώσετε ένα έγκυρο URL",
|
||||
"components.Settings.SonarrModal.tagRequests": "Ετικέτες αιτημάτων",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Αυτόματη προσθήκη πρόσθετης ετικέτας με το αναγνωριστικό χρήστη και το όνομα χρήστη του αιτούντος",
|
||||
"components.StatusChecker.appUpdatedDescription": "Παρακαλώ πατήστε το κουμπί παρακάτω ώστε να γίνει επαναφόρτωση της εφαρμογής.",
|
||||
"components.TvDetails.status4k": "4Κ {status}",
|
||||
"components.UserList.newplexsigninenabled": "Η ρύθμιση <strong>Ενεργοποίηση νέας εισόδου Plex</strong> είναι ενεργοποιημένη. Οι χρήστες Plex με πρόσβαση στη βιβλιοθήκη δε χρειάζεται να γίνουν εισαγωγή ώστε να συνδεθούν.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Αναγνωριστικό χρήστη Discord",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Ζητήστε αυτόματα σειρές που βρίσκονται στη <PlexWatchlistSupportLink>λίστα παρακολούθησης του Plex</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.plexwatchlist": "Λίστα παρακολούθησης Plex",
|
||||
"components.MovieDetails.imdbuserscore": "Βαθμολογία χρηστών IMDB"
|
||||
}
|
||||
|
||||
@@ -6,11 +6,58 @@
|
||||
"components.CollectionDetails.overview": "Overview",
|
||||
"components.CollectionDetails.requestcollection": "Request Collection",
|
||||
"components.CollectionDetails.requestcollection4k": "Request Collection in 4K",
|
||||
"components.Discover.CreateSlider.addSlider": "Add Slider",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Create Custom Slider",
|
||||
"components.Discover.CreateSlider.addfail": "Failed to create new slider.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Created new slider and saved discover customization settings.",
|
||||
"components.Discover.CreateSlider.editSlider": "Edit Slider",
|
||||
"components.Discover.CreateSlider.editfail": "Failed to edit slider.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Edited slider and saved discover customization settings.",
|
||||
"components.Discover.CreateSlider.needresults": "You need to have at least 1 result.",
|
||||
"components.Discover.CreateSlider.nooptions": "No results.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Provide a TMDB Genre ID",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Provide a TMDB Keyword ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Provide TMDB Network ID",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Provide a search query",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Provide TMDB Studio ID",
|
||||
"components.Discover.CreateSlider.searchGenres": "Search genres…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Search keywords…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Search studios…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Slider Name",
|
||||
"components.Discover.CreateSlider.starttyping": "Starting typing to search.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "You must provide a data value.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "You must provide a title.",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre} Movies",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Movies",
|
||||
"components.Discover.DiscoverMovieLanguage.languageMovies": "{language} Movies",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Movies",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Popularity Ascending",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Popularity Descending",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Release Date Ascending",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Release Date Descending",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Title (A-Z) Ascending",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Title (Z-A) Descending",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB Rating Ascending",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB Rating Descending",
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "{network} Series",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Failed to delete slider.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Sucessfully deleted slider.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Toggle Visibility",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Remove",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "{studio} Movies",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}",
|
||||
"components.Discover.DiscoverTv.discovertv": "Series",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "First Air Date Ascending",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "First Air Date Descending",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Popularity Ascending",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Popularity Descending",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Title (A-Z) Ascending",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Title (Z-A) Descending",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB Rating Ascending",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB Rating Descending",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "{genre} Series",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Series",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "{language} Series",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Your Watchlist",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
|
||||
@@ -35,14 +82,18 @@
|
||||
"components.Discover.MovieGenreList.moviegenres": "Movie Genres",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Movie Genres",
|
||||
"components.Discover.NetworkSlider.networks": "Networks",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Your Watchlist",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Recently Added",
|
||||
"components.Discover.StudioSlider.studios": "Studios",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Series Genres",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Series Genres",
|
||||
"components.Discover.createnewslider": "Create New Slider",
|
||||
"components.Discover.customizediscover": "Customize Discover",
|
||||
"components.Discover.discover": "Discover",
|
||||
"components.Discover.discovermovies": "Popular Movies",
|
||||
"components.Discover.discovertv": "Popular Series",
|
||||
"components.Discover.emptywatchlist": "Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.",
|
||||
"components.Discover.noRequests": "No requests.",
|
||||
"components.Discover.moviegenres": "Movie Genres",
|
||||
"components.Discover.networks": "Networks",
|
||||
"components.Discover.plexwatchlist": "Your Watchlist",
|
||||
"components.Discover.popularmovies": "Popular Movies",
|
||||
"components.Discover.populartv": "Popular Series",
|
||||
@@ -64,9 +115,12 @@
|
||||
"components.Discover.tmdbtvkeyword": "TMDB Series Keyword",
|
||||
"components.Discover.tmdbtvstreamingservices": "TMDB TV Streaming Services",
|
||||
"components.Discover.trending": "Trending",
|
||||
"components.Discover.tvgenres": "Series Genres",
|
||||
"components.Discover.upcoming": "Upcoming Movies",
|
||||
"components.Discover.upcomingmovies": "Upcoming Movies",
|
||||
"components.Discover.upcomingtv": "Upcoming Series",
|
||||
"components.Discover.updatefailed": "Something went wrong updating the discover customization settings.",
|
||||
"components.Discover.updatesuccess": "Updated discover customization settings.",
|
||||
"components.DownloadBlock.estimatedtime": "Estimated {time}",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Season {seasonNumber} Episode {episodeNumber}",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Are you sure you want to delete this comment?",
|
||||
@@ -145,6 +199,8 @@
|
||||
"components.LanguageSelector.originalLanguageDefault": "All Languages",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Display Language",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Search Movies & TV",
|
||||
"components.Layout.Sidebar.browsemovies": "Movies",
|
||||
"components.Layout.Sidebar.browsetv": "Series",
|
||||
"components.Layout.Sidebar.dashboard": "Discover",
|
||||
"components.Layout.Sidebar.issues": "Issues",
|
||||
"components.Layout.Sidebar.requests": "Requests",
|
||||
@@ -156,21 +212,42 @@
|
||||
"components.Layout.UserDropdown.requests": "Requests",
|
||||
"components.Layout.UserDropdown.settings": "Settings",
|
||||
"components.Layout.UserDropdown.signout": "Sign Out",
|
||||
"components.Layout.UserWarnings.emailInvalid": "Email address is invalid.",
|
||||
"components.Layout.UserWarnings.emailRequired": "An email address is required.",
|
||||
"components.Layout.UserWarnings.passwordRequired": "A password is required.",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind",
|
||||
"components.Layout.VersionStatus.outofdate": "Out of Date",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Develop",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr Stable",
|
||||
"components.Login.credentialerror": "The username or password is incorrect.",
|
||||
"components.Login.adminerror": "You must use an admin account to sign in.",
|
||||
"components.Login.description": "Since this is your first time logging into {applicationName}, you are required to add a valid email address.",
|
||||
"components.Login.email": "Email Address",
|
||||
"components.Login.emailtooltip": "Address does not need to be associated with your {mediaServerName} instance.",
|
||||
"components.Login.forgotpassword": "Forgot Password?",
|
||||
"components.Login.host": "{mediaServerName} URL",
|
||||
"components.Login.initialsignin": "Connect",
|
||||
"components.Login.initialsigningin": "Connecting…",
|
||||
"components.Login.loginerror": "Something went wrong while trying to sign in.",
|
||||
"components.Login.password": "Password",
|
||||
"components.Login.save": "Add",
|
||||
"components.Login.saving": "Adding…",
|
||||
"components.Login.signin": "Sign In",
|
||||
"components.Login.signingin": "Signing In…",
|
||||
"components.Login.signinheader": "Sign in to continue",
|
||||
"components.Login.signinwithjellyfin": "Use your {mediaServerName} account",
|
||||
"components.Login.signinwithoverseerr": "Use your {applicationTitle} account",
|
||||
"components.Login.signinwithplex": "Use your Plex account",
|
||||
"components.Login.title": "Add Email",
|
||||
"components.Login.username": "Username",
|
||||
"components.Login.validationEmailFormat": "Invalid email",
|
||||
"components.Login.validationEmailRequired": "You must provide an email",
|
||||
"components.Login.validationemailformat": "Valid email required",
|
||||
"components.Login.validationemailrequired": "You must provide a valid email address",
|
||||
"components.Login.validationhostformat": "Valid URL required",
|
||||
"components.Login.validationhostrequired": "{mediaServerName} URL required",
|
||||
"components.Login.validationpasswordrequired": "You must provide a password",
|
||||
"components.Login.validationusernamerequired": "Username required",
|
||||
"components.ManageSlideOver.alltime": "All Time",
|
||||
"components.ManageSlideOver.downloadstatus": "Downloads",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Advanced",
|
||||
@@ -180,6 +257,7 @@
|
||||
"components.ManageSlideOver.manageModalMedia": "Media",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4K Media",
|
||||
"components.ManageSlideOver.manageModalNoRequests": "No requests.",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* This will irreversibly remove this {mediaType} from {arr}, including all files.",
|
||||
"components.ManageSlideOver.manageModalRequests": "Requests",
|
||||
"components.ManageSlideOver.manageModalTitle": "Manage {mediaType}",
|
||||
"components.ManageSlideOver.mark4kavailable": "Mark as Available in 4K",
|
||||
@@ -193,6 +271,8 @@
|
||||
"components.ManageSlideOver.pastdays": "Past {days, number} Days",
|
||||
"components.ManageSlideOver.playedby": "Played By",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {play} other {plays}}",
|
||||
"components.ManageSlideOver.removearr": "Remove from {arr}",
|
||||
"components.ManageSlideOver.removearr4k": "Remove from 4K {arr}",
|
||||
"components.ManageSlideOver.tvshow": "series",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "See More",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Full Cast",
|
||||
@@ -200,16 +280,20 @@
|
||||
"components.MovieDetails.budget": "Budget",
|
||||
"components.MovieDetails.cast": "Cast",
|
||||
"components.MovieDetails.digitalrelease": "Digital Release",
|
||||
"components.MovieDetails.downloadstatus": "Download Status",
|
||||
"components.MovieDetails.imdbuserscore": "IMDB User Score",
|
||||
"components.MovieDetails.managemovie": "Manage Movie",
|
||||
"components.MovieDetails.mark4kavailable": "Mark as Available in 4K",
|
||||
"components.MovieDetails.markavailable": "Mark as Available",
|
||||
"components.MovieDetails.openradarr": "Open Movie in Radarr",
|
||||
"components.MovieDetails.openradarr4k": "Open Movie in 4K Radarr",
|
||||
"components.MovieDetails.originallanguage": "Original Language",
|
||||
"components.MovieDetails.originaltitle": "Original Title",
|
||||
"components.MovieDetails.overview": "Overview",
|
||||
"components.MovieDetails.overviewunavailable": "Overview unavailable.",
|
||||
"components.MovieDetails.physicalrelease": "Physical Release",
|
||||
"components.MovieDetails.play4konplex": "Play in 4K on Plex",
|
||||
"components.MovieDetails.playonplex": "Play on Plex",
|
||||
"components.MovieDetails.play": "Play on {mediaServerName}",
|
||||
"components.MovieDetails.play4k": "Play 4K on {mediaServerName}",
|
||||
"components.MovieDetails.productioncountries": "Production {countryCount, plural, one {Country} other {Countries}}",
|
||||
"components.MovieDetails.recommendations": "Recommendations",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Release Date} other {Release Dates}}",
|
||||
@@ -303,8 +387,6 @@
|
||||
"components.PermissionEdit.requestMoviesDescription": "Grant permission to submit requests for non-4K movies.",
|
||||
"components.PermissionEdit.requestTv": "Request Series",
|
||||
"components.PermissionEdit.requestTvDescription": "Grant permission to submit requests for non-4K series.",
|
||||
"components.PermissionEdit.settings": "Manage Settings",
|
||||
"components.PermissionEdit.settingsDescription": "Grant permission to modify global settings. A user must have this permission to grant it to others.",
|
||||
"components.PermissionEdit.users": "Manage Users",
|
||||
"components.PermissionEdit.usersDescription": "Grant permission to manage users. Users with this permission cannot modify users with or grant the Admin privilege.",
|
||||
"components.PermissionEdit.viewissues": "View Issues",
|
||||
@@ -313,8 +395,8 @@
|
||||
"components.PermissionEdit.viewrecentDescription": "Grant permission to view the list of recently added media.",
|
||||
"components.PermissionEdit.viewrequests": "View Requests",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Grant permission to view media requests submitted by other users.",
|
||||
"components.PermissionEdit.viewwatchlists": "View Plex Watchlists",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Grant permission to view other users' Plex Watchlists.",
|
||||
"components.PermissionEdit.viewwatchlists": "View {mediaServerName} Watchlists",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Grant permission to view other users' {mediaServerName} Watchlists.",
|
||||
"components.PersonDetails.alsoknownas": "Also Known As: {names}",
|
||||
"components.PersonDetails.appearsin": "Appearances",
|
||||
"components.PersonDetails.ascharacter": "as {character}",
|
||||
@@ -458,6 +540,13 @@
|
||||
"components.ResetPassword.validationpasswordrequired": "You must provide a password",
|
||||
"components.Search.search": "Search",
|
||||
"components.Search.searchresults": "Search Results",
|
||||
"components.Selector.nooptions": "No results.",
|
||||
"components.Selector.searchGenres": "Select genres…",
|
||||
"components.Selector.searchKeywords": "Search keywords…",
|
||||
"components.Selector.searchStudios": "Search studios…",
|
||||
"components.Selector.showless": "Show Less",
|
||||
"components.Selector.showmore": "Show More",
|
||||
"components.Selector.starttyping": "Starting typing to search.",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Enable Agent",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Gotify notification settings failed to save.",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Gotify notification settings saved successfully!",
|
||||
@@ -496,8 +585,10 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Application API Token",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessTokenTip": "<ApplicationRegistrationLink>Register an application</ApplicationRegistrationLink> for use with Jellyseerr",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Enable Agent",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Device Default",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Pushover notification settings failed to save.",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover notification settings saved successfully!",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Notification Sound",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestFailed": "Pushover test notification failed to send.",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSending": "Sending Pushover test notification…",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSuccess": "Pushover test notification sent!",
|
||||
@@ -581,6 +672,7 @@
|
||||
"components.Settings.Notifications.toastTelegramTestFailed": "Telegram test notification failed to send.",
|
||||
"components.Settings.Notifications.toastTelegramTestSending": "Sending Telegram test notification…",
|
||||
"components.Settings.Notifications.toastTelegramTestSuccess": "Telegram test notification sent!",
|
||||
"components.Settings.Notifications.userEmailRequired": "Require user email",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "You must provide a bot authorization token",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "You must provide a valid chat ID",
|
||||
"components.Settings.Notifications.validationEmail": "You must provide a valid email address",
|
||||
@@ -660,7 +752,8 @@
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "About Jellyseerr",
|
||||
"components.Settings.SettingsAbout.preferredmethod": "Preferred",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "You are running the <code>develop</code> branch of Jellyseerr, which is only recommended for those contributing to development or assisting with bleeding-edge testing.",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Support Jellyseerr",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Support Overseerr",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Support Jellyseerr",
|
||||
"components.Settings.SettingsAbout.timezone": "Time Zone",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Total Media",
|
||||
"components.Settings.SettingsAbout.totalrequests": "Total Requests",
|
||||
@@ -687,13 +780,13 @@
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Every {jobScheduleMinutes, plural, one {minute} other {{jobScheduleMinutes} minutes}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Every {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}",
|
||||
"components.Settings.SettingsJobsCache.flushcache": "Flush Cache",
|
||||
"components.Settings.SettingsJobsCache.jelly-recently-added-scan": "Jellyfin Recently Added Scan",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Jellyfin Full Library Scan",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Image Cache Cleanup",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Image Cache",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "When enabled in settings, Overseerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "When enabled in settings, Jellyseerr will proxy and cache images from pre-configured external sources. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Images Cached",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Total Cache Size",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Jellyfin Full Library Scan",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Jellyfin Recently Added Scan",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Something went wrong while saving the job.",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Job edited successfully!",
|
||||
"components.Settings.SettingsJobsCache.jobcancelled": "{jobname} canceled.",
|
||||
@@ -730,10 +823,37 @@
|
||||
"components.Settings.SettingsLogs.showall": "Show All Logs",
|
||||
"components.Settings.SettingsLogs.time": "Timestamp",
|
||||
"components.Settings.SettingsLogs.viewdetails": "View Details",
|
||||
"components.Settings.SettingsMain.apikey": "API Key",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Application Title",
|
||||
"components.Settings.SettingsMain.applicationurl": "Application URL",
|
||||
"components.Settings.SettingsMain.cacheImages": "Enable Image Caching",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Cache externally sourced images (requires a significant amount of disk space)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Enable CSRF Protection",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Do NOT enable this setting unless you understand what you are doing!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Set external API access to read-only (requires HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "General",
|
||||
"components.Settings.SettingsMain.generalsettings": "General Settings",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Configure global and default settings for Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Hide Available Media",
|
||||
"components.Settings.SettingsMain.locale": "Display Language",
|
||||
"components.Settings.SettingsMain.originallanguage": "Discover Language",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filter content by original language",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Allow Partial Series Requests",
|
||||
"components.Settings.SettingsMain.region": "Discover Region",
|
||||
"components.Settings.SettingsMain.regionTip": "Filter content by regional availability",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Something went wrong while generating a new API key.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "New API key generated successfully!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Something went wrong while saving settings.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Settings saved successfully!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Enable Proxy Support",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Allow Jellyseerr to correctly register client IP addresses behind a proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "You must provide an application title",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "You must provide a valid URL",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL must not end in a trailing slash",
|
||||
"components.Settings.SettingsUsers.defaultPermissions": "Default Permissions",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Initial permissions assigned to new users",
|
||||
"components.Settings.SettingsUsers.localLogin": "Enable Local Sign-In",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Allow users to sign in using their email address and password, instead of Plex OAuth",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Allow users to sign in using their email address and password, instead of {mediaServerName} OAuth",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Global Movie Request Limit",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Enable New {mediaServerName} Sign-In",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Allow {mediaServerName} users to sign in without first being imported",
|
||||
@@ -744,6 +864,7 @@
|
||||
"components.Settings.SettingsUsers.userSettingsDescription": "Configure global and default user settings.",
|
||||
"components.Settings.SettingsUsers.users": "Users",
|
||||
"components.Settings.SonarrModal.add": "Add Server",
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Anime Series Type",
|
||||
"components.Settings.SonarrModal.animeTags": "Anime Tags",
|
||||
"components.Settings.SonarrModal.animelanguageprofile": "Anime Language Profile",
|
||||
"components.Settings.SonarrModal.animequalityprofile": "Anime Quality Profile",
|
||||
@@ -773,6 +894,7 @@
|
||||
"components.Settings.SonarrModal.selectQualityProfile": "Select quality profile",
|
||||
"components.Settings.SonarrModal.selectRootFolder": "Select root folder",
|
||||
"components.Settings.SonarrModal.selecttags": "Select tags",
|
||||
"components.Settings.SonarrModal.seriesType": "Series Type",
|
||||
"components.Settings.SonarrModal.server4k": "4K Server",
|
||||
"components.Settings.SonarrModal.servername": "Server Name",
|
||||
"components.Settings.SonarrModal.ssl": "Use SSL",
|
||||
@@ -802,16 +924,8 @@
|
||||
"components.Settings.address": "Address",
|
||||
"components.Settings.addsonarr": "Add Sonarr Server",
|
||||
"components.Settings.advancedTooltip": "Incorrectly configuring this setting may result in broken functionality",
|
||||
"components.Settings.apikey": "API Key",
|
||||
"components.Settings.applicationTitle": "Application Title",
|
||||
"components.Settings.applicationurl": "Application URL",
|
||||
"components.Settings.cacheImages": "Enable Image Caching",
|
||||
"components.Settings.cacheImagesTip": "Cache externally sourced images (requires a significant amount of disk space)",
|
||||
"components.Settings.cancelscan": "Cancel Scan",
|
||||
"components.Settings.copied": "Copied API key to clipboard.",
|
||||
"components.Settings.csrfProtection": "Enable CSRF Protection",
|
||||
"components.Settings.csrfProtectionHoverTip": "Do NOT enable this setting unless you understand what you are doing!",
|
||||
"components.Settings.csrfProtectionTip": "Set external API access to read-only (requires HTTPS, and Jellyseerr must be reloaded for changes to take effect)",
|
||||
"components.Settings.currentlibrary": "Current Library: {name}",
|
||||
"components.Settings.default": "Default",
|
||||
"components.Settings.default4k": "Default 4K",
|
||||
@@ -821,20 +935,27 @@
|
||||
"components.Settings.enablessl": "Use SSL",
|
||||
"components.Settings.experimentalTooltip": "Enabling this setting may result in unexpected application behavior",
|
||||
"components.Settings.externalUrl": "External URL",
|
||||
"components.Settings.general": "General",
|
||||
"components.Settings.generalsettings": "General Settings",
|
||||
"components.Settings.generalsettingsDescription": "Configure global and default settings for Jellyseerr.",
|
||||
"components.Settings.hideAvailable": "Hide Available Media",
|
||||
"components.Settings.hostname": "Hostname or IP Address",
|
||||
"components.Settings.internalUrl": "Internal URL",
|
||||
"components.Settings.is4k": "4K",
|
||||
"components.Settings.jellyfinSettings": "{mediaServerName} Settings",
|
||||
"components.Settings.jellyfinSettingsDescription": "Optionally configure the internal and external endpoints for your {mediaServerName} server. In most cases, the external URL is different to the internal URL. A custom password reset URL can also be set for {mediaServerName} login, in case you would like to redirect to a different password reset page.",
|
||||
"components.Settings.jellyfinSettingsFailure": "Something went wrong while saving {mediaServerName} settings.",
|
||||
"components.Settings.jellyfinSettingsSuccess": "{mediaServerName} settings saved successfully!",
|
||||
"components.Settings.jellyfinlibraries": "{mediaServerName} Libraries",
|
||||
"components.Settings.jellyfinlibrariesDescription": "The libraries {mediaServerName} scans for titles. Click the button below if no libraries are listed.",
|
||||
"components.Settings.jellyfinsettings": "{mediaServerName} Settings",
|
||||
"components.Settings.jellyfinsettingsDescription": "Configure the settings for your {mediaServerName} server. {mediaServerName} scans your {mediaServerName} libraries to see what content is available.",
|
||||
"components.Settings.librariesRemaining": "Libraries Remaining: {count}",
|
||||
"components.Settings.locale": "Display Language",
|
||||
"components.Settings.manualscan": "Manual Library Scan",
|
||||
"components.Settings.manualscanDescription": "Normally, this will only be run once every 24 hours. Jellyseerr will check your Plex server's recently added more aggressively. If this is your first time configuring Plex, a one-time full manual library scan is recommended!",
|
||||
"components.Settings.manualscanDescriptionJellyfin": "Normally, this will only be run once every 24 hours. Jellyseerr will check your {mediaServerName} server's recently added more aggressively. If this is your first time configuring Jellyseerr, a one-time full manual library scan is recommended!",
|
||||
"components.Settings.manualscanJellyfin": "Manual Library Scan",
|
||||
"components.Settings.mediaTypeMovie": "movie",
|
||||
"components.Settings.mediaTypeSeries": "series",
|
||||
"components.Settings.menuAbout": "About",
|
||||
"components.Settings.menuGeneralSettings": "General",
|
||||
"components.Settings.menuJellyfinSettings": "{mediaServerName}",
|
||||
"components.Settings.menuJobs": "Jobs & Cache",
|
||||
"components.Settings.menuLogs": "Logs",
|
||||
"components.Settings.menuNotifications": "Notifications",
|
||||
@@ -848,9 +969,6 @@
|
||||
"components.Settings.notifications": "Notifications",
|
||||
"components.Settings.notificationsettings": "Notification Settings",
|
||||
"components.Settings.notrunning": "Not Running",
|
||||
"components.Settings.originallanguage": "Discover Language",
|
||||
"components.Settings.originallanguageTip": "Filter content by original language",
|
||||
"components.Settings.partialRequestsEnabled": "Allow Partial Series Requests",
|
||||
"components.Settings.plex": "Plex",
|
||||
"components.Settings.plexlibraries": "Plex Libraries",
|
||||
"components.Settings.plexlibrariesDescription": "The libraries Jellyseerr scans for titles. Set up and save your Plex connection settings, then click the button below if no libraries are listed.",
|
||||
@@ -858,9 +976,9 @@
|
||||
"components.Settings.plexsettingsDescription": "Configure the settings for your Plex server. Jellyseerr scans your Plex libraries to determine content availability.",
|
||||
"components.Settings.port": "Port",
|
||||
"components.Settings.radarrsettings": "Radarr Settings",
|
||||
"components.Settings.region": "Discover Region",
|
||||
"components.Settings.regionTip": "Filter content by regional availability",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr must be restarted for changes to this setting to take effect",
|
||||
"components.Settings.save": "Save Changes",
|
||||
"components.Settings.saving": "Saving…",
|
||||
"components.Settings.scan": "Sync Libraries",
|
||||
"components.Settings.scanning": "Syncing…",
|
||||
"components.Settings.serverLocal": "local",
|
||||
@@ -876,28 +994,22 @@
|
||||
"components.Settings.sonarrsettings": "Sonarr Settings",
|
||||
"components.Settings.ssl": "SSL",
|
||||
"components.Settings.startscan": "Start Scan",
|
||||
"components.Settings.syncJellyfin": "Sync Libraries",
|
||||
"components.Settings.syncing": "Syncing",
|
||||
"components.Settings.tautulliApiKey": "API Key",
|
||||
"components.Settings.tautulliSettings": "Tautulli Settings",
|
||||
"components.Settings.tautulliSettingsDescription": "Optionally configure the settings for your Tautulli server. Jellyseerr fetches watch history data for your Plex media from Tautulli.",
|
||||
"components.Settings.toastApiKeyFailure": "Something went wrong while generating a new API key.",
|
||||
"components.Settings.toastApiKeySuccess": "New API key generated successfully!",
|
||||
"components.Settings.timeout": "Timeout",
|
||||
"components.Settings.toastPlexConnecting": "Attempting to connect to Plex…",
|
||||
"components.Settings.toastPlexConnectingFailure": "Failed to connect to Plex.",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Plex connection established successfully!",
|
||||
"components.Settings.toastPlexRefresh": "Retrieving server list from Plex…",
|
||||
"components.Settings.toastPlexRefreshFailure": "Failed to retrieve Plex server list.",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Plex server list retrieved successfully!",
|
||||
"components.Settings.toastSettingsFailure": "Something went wrong while saving settings.",
|
||||
"components.Settings.toastSettingsSuccess": "Settings saved successfully!",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Something went wrong while saving Tautulli settings.",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Tautulli settings saved successfully!",
|
||||
"components.Settings.trustProxy": "Enable Proxy Support",
|
||||
"components.Settings.trustProxyTip": "Allow Jellyseerr to correctly register client IP addresses behind a proxy (Jellyseerr must be reloaded for changes to take effect)",
|
||||
"components.Settings.urlBase": "URL Base",
|
||||
"components.Settings.validationApiKey": "You must provide an API key",
|
||||
"components.Settings.validationApplicationTitle": "You must provide an application title",
|
||||
"components.Settings.validationApplicationUrl": "You must provide a valid URL",
|
||||
"components.Settings.validationApplicationUrlTrailingSlash": "URL must not end in a trailing slash",
|
||||
"components.Settings.validationHostnameRequired": "You must provide a valid hostname or IP address",
|
||||
"components.Settings.validationPortRequired": "You must provide a valid port number",
|
||||
"components.Settings.validationUrl": "You must provide a valid URL",
|
||||
@@ -908,15 +1020,17 @@
|
||||
"components.Settings.webAppUrlTip": "Optionally direct users to the web app on your server instead of the \"hosted\" web app",
|
||||
"components.Settings.webhook": "Webhook",
|
||||
"components.Settings.webpush": "Web Push",
|
||||
"components.Setup.configureplex": "Configure Plex",
|
||||
"components.Setup.configuremediaserver": "Configure Media Server",
|
||||
"components.Setup.configureservices": "Configure Services",
|
||||
"components.Setup.continue": "Continue",
|
||||
"components.Setup.finish": "Finish Setup",
|
||||
"components.Setup.finishing": "Finishing…",
|
||||
"components.Setup.loginwithplex": "Sign in with Plex",
|
||||
"components.Setup.scanbackground": "Scanning will run in the background. You can continue the setup process in the meantime.",
|
||||
"components.Setup.setup": "Setup",
|
||||
"components.Setup.signinMessage": "Get started by signing in with your Plex account",
|
||||
"components.Setup.signin": "Sign In",
|
||||
"components.Setup.signinMessage": "Get started by signing in",
|
||||
"components.Setup.signinWithJellyfin": "Use your {mediaServerName} account",
|
||||
"components.Setup.signinWithPlex": "Use your Plex account",
|
||||
"components.Setup.tip": "Tip",
|
||||
"components.Setup.welcome": "Welcome to Jellyseerr",
|
||||
"components.StatusBadge.managemedia": "Manage {mediaType}",
|
||||
@@ -925,18 +1039,20 @@
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.StatusChacker.newversionDescription": "Jellyseerr has been updated! Please click the button below to reload the page.",
|
||||
"components.StatusChacker.newversionavailable": "Application Update",
|
||||
"components.StatusChacker.reloadOverseerr": "Reload",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} Updated",
|
||||
"components.StatusChecker.appUpdatedDescription": "Please click the button below to reload the application.",
|
||||
"components.StatusChecker.reloadApp": "Reload {applicationTitle}",
|
||||
"components.StatusChecker.restartRequired": "Server Restart Required",
|
||||
"components.StatusChecker.restartRequiredDescription": "Please restart the server to apply the updated settings.",
|
||||
"components.TitleCard.addToWatchList": "Add to watchlist",
|
||||
"components.TitleCard.cleardata": "Clear Data",
|
||||
"components.TitleCard.mediaerror": "{mediaType} Not Found",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.TitleCard.watchlistCancel": "watchlist for <strong>{title}</strong> canceled.",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Removed from watchlist successfully!",
|
||||
"components.TitleCard.watchlistError": "Something went wrong try again.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> added to watchlist successfully!",
|
||||
"components.TvDetails.Season.noepisodes": "Episode list unavailable.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Something went wrong while retrieving season data.",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Full Series Cast",
|
||||
@@ -954,8 +1070,8 @@
|
||||
"components.TvDetails.originaltitle": "Original Title",
|
||||
"components.TvDetails.overview": "Overview",
|
||||
"components.TvDetails.overviewunavailable": "Overview unavailable.",
|
||||
"components.TvDetails.play4konplex": "Play in 4K on Plex",
|
||||
"components.TvDetails.playonplex": "Play on Plex",
|
||||
"components.TvDetails.play": "Play on {mediaServerName}",
|
||||
"components.TvDetails.play4k": "Play 4K on {mediaServerName}",
|
||||
"components.TvDetails.productioncountries": "Production {countryCount, plural, one {Country} other {Countries}}",
|
||||
"components.TvDetails.recommendations": "Recommendations",
|
||||
"components.TvDetails.reportissue": "Report an Issue",
|
||||
@@ -985,13 +1101,19 @@
|
||||
"components.UserList.displayName": "Display Name",
|
||||
"components.UserList.edituser": "Edit User Permissions",
|
||||
"components.UserList.email": "Email Address",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {user} other {users}} imported successfully!",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex {userCount, plural, one {user} other {users}} imported successfully!",
|
||||
"components.UserList.importfromJellyfin": "Import {mediaServerName} Users",
|
||||
"components.UserList.importfromJellyfinerror": "Something went wrong while importing {mediaServerName} users.",
|
||||
"components.UserList.importfrommediaserver": "Import {mediaServerName} Users",
|
||||
"components.UserList.importfromplex": "Import Plex Users",
|
||||
"components.UserList.importfromplexerror": "Something went wrong while importing Plex users.",
|
||||
"components.UserList.localLoginDisabled": "The <strong>Enable Local Sign-In</strong> setting is currently disabled.",
|
||||
"components.UserList.localuser": "Local User",
|
||||
"components.UserList.mediaServerUser": "{mediaServerName} User",
|
||||
"components.UserList.newJellyfinsigninenabled": "The <strong>Enable New {mediaServerName} Sign-In</strong> setting is currently enabled. {mediaServerName} users with library access do not need to be imported in order to sign in.",
|
||||
"components.UserList.newplexsigninenabled": "The <strong>Enable New Plex Sign-In</strong> setting is currently enabled. Plex users with library access do not need to be imported in order to sign in.",
|
||||
"components.UserList.noJellyfinuserstoimport": "There are no {mediaServerName} users to import.",
|
||||
"components.UserList.nouserstoimport": "There are no Plex users to import.",
|
||||
"components.UserList.owner": "Owner",
|
||||
"components.UserList.password": "Password",
|
||||
@@ -1024,11 +1146,13 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Discord User ID",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "The <FindDiscordIdLink>multi-digit ID number</FindDiscordIdLink> associated with your Discord user account",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Display Name",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.email": "Email",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Override Global Limit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.general": "General",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "General Settings",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Default ({language})",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Local User",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.mediaServerUser": "{mediaServerName} User",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Movie Request Limit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Discover Language",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filter content by original language",
|
||||
@@ -1041,11 +1165,14 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Discover Region",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filter content by regional availability",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Role",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Save Changes",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.saving": "Saving…",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Series Request Limit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Something went wrong while saving settings.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Settings saved successfully!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "User",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "You must provide a valid Discord user ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Device Default",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "User ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "The <FindDiscordIdLink>multi-digit ID number</FindDiscordIdLink> associated with your user account",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Discord notification settings failed to save.",
|
||||
@@ -1069,6 +1196,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Pushover notification settings saved successfully!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Send Silently",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Send notifications with no sound",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Notification Sound",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Start a chat</TelegramBotLink>, add <GetIdBotLink>@get_id_bot</GetIdBotLink>, and issue the <code>/my_id</code> command",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Telegram notification settings failed to save.",
|
||||
@@ -1108,6 +1236,7 @@
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "You do not have permission to modify this user's settings.",
|
||||
"components.UserProfile.emptywatchlist": "Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.",
|
||||
"components.UserProfile.limit": "{remaining} of {limit}",
|
||||
"components.UserProfile.localWatchlist": "{username}'s Watchlist",
|
||||
"components.UserProfile.movierequests": "Movie Requests",
|
||||
"components.UserProfile.pastdays": "{type} (past {days} days)",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
@@ -1117,11 +1246,6 @@
|
||||
"components.UserProfile.seriesrequest": "Series Requests",
|
||||
"components.UserProfile.totalrequests": "Total Requests",
|
||||
"components.UserProfile.unlimited": "Unlimited",
|
||||
"components.TitleCard.addToWatchList": "Add to watchlist",
|
||||
"components.TitleCard.watchlistCancel": "watchlist for <strong>{title}</strong> canceled.",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Removed from watchlist successfully!",
|
||||
"components.TitleCard.watchlistError": "Something went wrong try again.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> added to watchlist successfully!",
|
||||
"i18n.advanced": "Advanced",
|
||||
"i18n.all": "All",
|
||||
"i18n.approve": "Approve",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -76,7 +76,7 @@
|
||||
"components.Layout.Sidebar.users": "משתמשים",
|
||||
"components.Layout.UserDropdown.myprofile": "פרופיל",
|
||||
"components.Layout.UserDropdown.settings": "הגדרות",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Overseerr פיתוח",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr פיתוח",
|
||||
"components.AirDateBadge.airedrelative": "שודר ב-{relativeTime}",
|
||||
"components.Discover.NetworkSlider.networks": "רשתות שידור",
|
||||
"components.Discover.discover": "לגלות",
|
||||
@@ -122,7 +122,7 @@
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "בקשות סרטים",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "בקשות סדרות",
|
||||
"components.Login.forgotpassword": "שכחת סיסמה?",
|
||||
"components.Layout.VersionStatus.streamstable": "Overseerr יציבה",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr יציבה",
|
||||
"components.Login.email": "כתובת אימייל",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "מתקדם",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "מחק מידע",
|
||||
@@ -135,5 +135,67 @@
|
||||
"components.Login.loginerror": "משהו השתבש בזמן ההתחברות.",
|
||||
"components.Login.password": "סיסמה",
|
||||
"components.Login.signin": "התחברות",
|
||||
"components.Login.validationpasswordrequired": "חובה לכתוב סיסמה"
|
||||
"components.Login.validationpasswordrequired": "חובה לכתוב סיסמה",
|
||||
"components.Discover.CreateSlider.editSlider": "ערוך סליידר",
|
||||
"components.Discover.CreateSlider.editfail": "נכשלה עריכת סליידר.",
|
||||
"components.Discover.CreateSlider.needresults": "אתה צריך לפחות תוצאה אחת.",
|
||||
"components.Discover.CreateSlider.nooptions": "אין תוצאות.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "ספק מזהה ז'אנר TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "ספק מזהה מילת מפתח TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "ספק שאילתת חיפוש",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "ספק מזהה סטודיו TMDB",
|
||||
"components.Discover.CreateSlider.searchGenres": "חפש ז'אנרים…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "חפש מילות מפתח…",
|
||||
"components.Discover.CreateSlider.searchStudios": "חפש אולפנים…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "שם הסליידר",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "עליך לספק ערך.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "עליך לספק כותר.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "סרטים {keywordTitle}",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "סרטים",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "פופולריות בסדר עולה",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "פופולריות בסדר יורד",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "תאריך שחרור בסדר עולה",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "תאריך שחרור בסדר יורד",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "כותר (א-ת, A-Z) עולה",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "כותר (ת-א, A-Z) יורד",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "דירוג TMDB בסדר עולה",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "דירוג TMDB בסדר יורד",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "סליידר נמחק בהצלחה.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "שנה נראות",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "הסר",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {פילטר אחד פעיל} other {# פילטרים פעילים}}",
|
||||
"components.Discover.DiscoverTv.discovertv": "סדרה",
|
||||
"components.Discover.CreateSlider.addfail": "נכשלה יצירת סליידר חדש.",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "פופולריות בסדר עולה",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "פופולריות בסדר יורד",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "כותר (א-ת, A-Z) עולה",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "כותר (א-ת, A-Z) יורד",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "דירוג TMDB בסדר עולה",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "סדרה {keywordTitle}",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {פילטר אחד פעיל} other {# פילטרים פעילים}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "נקה פילטרים פעילים",
|
||||
"components.Discover.FilterSlideover.filters": "פילטרים",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "תאריך שידור ראשון",
|
||||
"components.Discover.FilterSlideover.from": "מאת",
|
||||
"components.Discover.FilterSlideover.keywords": "מילות מפתח",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "שפה מקורית",
|
||||
"components.Discover.FilterSlideover.ratingText": "דירוג בין {minValue} ל {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "תאריך שחרור",
|
||||
"components.Discover.FilterSlideover.runtime": "זמן ריצה",
|
||||
"components.Discover.FilterSlideover.streamingservices": "שירותי הזרמה",
|
||||
"components.Discover.FilterSlideover.studio": "אולפן",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "דירוג משתמש TMDB",
|
||||
"components.Discover.CreateSlider.addSlider": "הוסף סליידר",
|
||||
"components.Discover.CreateSlider.addcustomslider": "צור סליידר מותאם",
|
||||
"components.Discover.CreateSlider.addsuccess": "סליידר חדש נוצר בהצלחה ונשמרו הגדרות התאמה.",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "ספק מזהה רשת TMDB",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "תאריך שידור ראשון בסדר יורד",
|
||||
"components.Discover.CreateSlider.starttyping": "התחל להזין כדי לחפש.",
|
||||
"components.Discover.FilterSlideover.runtimeText": "זמן ריצה בין {minValue} ל {maxValue}",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {פילטר פעיל} other {# פילטרים פעילים}}",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "כשל במחיקת סליידר.",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "תאריך שידור ראשון בסדר עולה",
|
||||
"components.Discover.CreateSlider.editsuccess": "סליידר נערך ונשמר בהצלחה.",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "דירוג TMDB בסדר יורד",
|
||||
"components.Discover.FilterSlideover.genres": "ז'אנרים"
|
||||
}
|
||||
|
||||
@@ -72,9 +72,9 @@
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {Sezona} other {Sezone}}",
|
||||
"components.Layout.UserDropdown.myprofile": "Profil",
|
||||
"components.Layout.UserDropdown.requests": "Zahtjevi",
|
||||
"components.Layout.VersionStatus.streamstable": "Overseerr Stabilan",
|
||||
"components.Login.password": "Zaporka",
|
||||
"components.ManageSlideOver.openarr4k": "Otvori 4K u {arr}-u",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr stablina verzija",
|
||||
"components.Login.password": "Lozinka",
|
||||
"components.ManageSlideOver.openarr4k": "Otvori 4K u {arr}u",
|
||||
"components.ManageSlideOver.pastdays": "Proteklih {days, number} dana",
|
||||
"components.Login.signinwithplex": "Koristite svoj Plex račun",
|
||||
"components.ManageSlideOver.movie": "film",
|
||||
@@ -88,16 +88,16 @@
|
||||
"components.ManageSlideOver.mark4kavailable": "Označi kao dostupno u 4K",
|
||||
"components.MovieDetails.originaltitle": "Izvorni naslov",
|
||||
"components.MovieDetails.overview": "Pregled",
|
||||
"components.ManageSlideOver.openarr": "Otvori u {arr}-u",
|
||||
"components.MovieDetails.cast": "Postava",
|
||||
"components.ManageSlideOver.openarr": "Otvori u {arr}u",
|
||||
"components.MovieDetails.cast": "Glumci",
|
||||
"components.MovieDetails.budget": "Proračun",
|
||||
"components.ManageSlideOver.opentautulli": "Otvori u Tautulli-u",
|
||||
"components.ManageSlideOver.opentautulli": "Otvori u Tautulliju",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Vidi više",
|
||||
"components.MovieDetails.markavailable": "Označi kao dostupno",
|
||||
"components.ManageSlideOver.tvshow": "serije",
|
||||
"components.MovieDetails.productioncountries": "{countryCount, plural, one {Država produkcije} other {Države produkcije}}",
|
||||
"components.MovieDetails.managemovie": "Upravljanje filmom",
|
||||
"components.MovieDetails.playonplex": "Reproduciraj na Plex-u",
|
||||
"components.MovieDetails.productioncountries": "{countryCount, plural, one {zemlja produkcije} few {zemlje produkcije} other {zemalja produkcije}}",
|
||||
"components.MovieDetails.managemovie": "Upravljaj filmom",
|
||||
"components.MovieDetails.playonplex": "Reproduciraj na {mediaServerName}u",
|
||||
"components.MovieDetails.overviewunavailable": "Pregled nedostupan.",
|
||||
"components.MovieDetails.reportissue": "Prijavi problem",
|
||||
"components.MovieDetails.revenue": "Prihod",
|
||||
@@ -113,13 +113,13 @@
|
||||
"components.NotificationTypeSelector.issuereopenedDescription": "Pošalji obavijest kada se problem ponovno otvori.",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Automatsko odobravanje zahtjeva",
|
||||
"components.IssueDetails.issuepagetitle": "Problem",
|
||||
"components.IssueDetails.issuetype": "Tip",
|
||||
"components.IssueDetails.play4konplex": "Reproduciraj u 4K na Plex-u",
|
||||
"components.IssueDetails.playonplex": "Reproduciraj na Plex-u",
|
||||
"components.IssueDetails.problemseason": "Zahvaćene Sezone",
|
||||
"components.IssueDetails.problemepisode": "Zahvaćene Epizode",
|
||||
"components.IssueDetails.reopenissue": "Ponovno otvorite problem",
|
||||
"components.IssueDetails.reopenissueandcomment": "Ponovno otvori s komentarom",
|
||||
"components.IssueDetails.issuetype": "Vrsta",
|
||||
"components.IssueDetails.play4konplex": "Reproduciraj u 4K na {mediaServerName}u",
|
||||
"components.IssueDetails.playonplex": "Reproduciraj na {mediaServerName}u",
|
||||
"components.IssueDetails.problemseason": "Zahvaćena sezona",
|
||||
"components.IssueDetails.problemepisode": "Zahvaćena epizoda",
|
||||
"components.IssueDetails.reopenissue": "Ponovo otvori problem",
|
||||
"components.IssueDetails.reopenissueandcomment": "Ponovo otvori s komentarom",
|
||||
"components.IssueDetails.season": "Sezona {seasonNumber}",
|
||||
"components.IssueDetails.toasteditdescriptionsuccess": "Opis problema je uspješno uređen!",
|
||||
"components.IssueDetails.toastissuedeletefailed": "Nešto nije u redu prilikom brisanja problema.",
|
||||
@@ -162,7 +162,7 @@
|
||||
"components.Layout.UserDropdown.settings": "Postavke",
|
||||
"components.Layout.UserDropdown.signout": "Odjavi se",
|
||||
"components.Layout.VersionStatus.outofdate": "Zastarjelo",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Overseerr Razvoj",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Razvoj",
|
||||
"components.Login.email": "Adresa e-pošte",
|
||||
"components.Login.forgotpassword": "Zaboravljena lozinka?",
|
||||
"components.Login.loginerror": "Nešto nije u redu prilikom pokušaja prijave.",
|
||||
@@ -188,7 +188,7 @@
|
||||
"components.MovieDetails.originallanguage": "Izvorni jezik",
|
||||
"components.MovieDetails.MovieCrew.fullcrew": "Filmska postava",
|
||||
"components.MovieDetails.physicalrelease": "Fizičko izdanje",
|
||||
"components.MovieDetails.play4konplex": "Reproduciraj u 4K na Plex-u",
|
||||
"components.MovieDetails.play4konplex": "Reproduciraj u 4K na Plexu",
|
||||
"components.MovieDetails.recommendations": "Preporuke",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Datum Izlaska} other {Datumi izlaska}}",
|
||||
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
|
||||
@@ -258,7 +258,850 @@
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Dozvolite automatsko odobravanje svih zahtjeva za 4K medije.",
|
||||
"components.PermissionEdit.autoapproveDescription": "Dozvolite automatsko odobravanje svih zahtjeva koji nisu u 4K mediji.",
|
||||
"components.PermissionEdit.autoapproveMovies": "Automatsko odobravanje filmova",
|
||||
"components.PermissionEdit.autoapproveSeries": "Automatsko odobravanje serijala",
|
||||
"components.RequestButton.declinerequests": "Odbiti {requestCount, plural, one {Zahtjev} other {{requestCount} Zahtjeve}}",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {No} other {<strong>#</strong>}} {type} {remaining, plural, one {zahtjev preostalo} other {zahtjeva preostala}}"
|
||||
"components.PermissionEdit.autoapproveSeries": "Automatsko odobravanje serija",
|
||||
"components.RequestButton.declinerequests": "Odbij {requestCount, plural, one {zahtjev} few {{requestCount} zahtjeva} other {{requestCount} zahtjeva}}",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {No} other {<strong>#</strong>}} {type} {remaining, plural, one {zahtjev preostalo} other {zahtjeva preostala}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Aktualna učestalost",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Nova učestalost",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "{jobScheduleHours, plural, one {Svaki sat} few {Svaka {jobScheduleHours} sata} other {Svakih {jobScheduleHours} sati}}",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Dogodila se greška prilikom spremanja zadatka.",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Zadatak uspješno promijenjen!",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Sinkronizacija Plex popisa gledanja",
|
||||
"components.Settings.SettingsJobsCache.runnow": "Pokreni sada",
|
||||
"components.Settings.SettingsJobsCache.unknownJob": "Nepoznat zadatak",
|
||||
"components.Settings.SettingsLogs.extraData": "Dodatni podaci",
|
||||
"components.Settings.SettingsLogs.copiedLogMessage": "Poruka zapisnika je kopirana u međuspremnik.",
|
||||
"components.Settings.SettingsLogs.filterDebug": "Otklanjanje grešaka",
|
||||
"components.Settings.SettingsLogs.filterError": "Greška",
|
||||
"components.Settings.SettingsLogs.filterInfo": "Informacije",
|
||||
"components.Settings.SettingsLogs.filterWarn": "Upozorenje",
|
||||
"components.Settings.SettingsLogs.label": "Etiketa",
|
||||
"components.Settings.SettingsLogs.level": "Važnost",
|
||||
"components.Settings.SettingsLogs.logDetails": "Detalji zapisa",
|
||||
"components.Settings.SettingsLogs.logs": "Zapisi",
|
||||
"components.Settings.SettingsLogs.resumeLogs": "Nastavi",
|
||||
"components.Settings.SettingsLogs.showall": "Prikaži sve zapise",
|
||||
"components.Settings.SettingsLogs.time": "Vremenska oznaka",
|
||||
"components.Settings.SettingsLogs.viewdetails": "Prikaz detalja",
|
||||
"components.Settings.SettingsUsers.defaultPermissions": "Zadane dozvole",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Početne dozvole dodijeljene novim korisnicima",
|
||||
"components.Settings.SettingsUsers.localLogin": "Aktiviraj lokalnu prijavu",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Dozvoli korisnicima da se prijave koristeći svoju e-mail adresu i lozinku, umjesto Plex OAutha",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Globalno ograničenje zahtjeva za filmove",
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "Korisničke postavke su uspješno spremljene!",
|
||||
"components.Settings.SettingsUsers.tvRequestLimitLabel": "Globalno ograničenje zahtjeva za serije",
|
||||
"components.Settings.SettingsUsers.userSettings": "Korisničke postavke",
|
||||
"components.Settings.SettingsUsers.userSettingsDescription": "Konfiguriraj globalne i zadane korisničke postavke.",
|
||||
"components.Settings.SettingsUsers.users": "Korisnici",
|
||||
"components.Settings.SonarrModal.add": "Dodaj poslužitelj",
|
||||
"components.Settings.SonarrModal.animeTags": "Anime oznake",
|
||||
"components.Settings.SonarrModal.animelanguageprofile": "Anime profil jezika",
|
||||
"components.Settings.SonarrModal.animequalityprofile": "Anime profil kvalitete",
|
||||
"components.Settings.SonarrModal.animerootfolder": "Anime početna mapa",
|
||||
"components.Settings.SonarrModal.apiKey": "API ključ",
|
||||
"components.Settings.SonarrModal.baseUrl": "Osnovni URL",
|
||||
"components.Settings.SonarrModal.create4ksonarr": "Dodaj novi 4K Sonarr poslužitelj",
|
||||
"components.Settings.SonarrModal.createsonarr": "Dodaj novi Sonarr poslužitelj",
|
||||
"components.Settings.SonarrModal.default4kserver": "Zadani 4K poslužitelj",
|
||||
"components.Settings.SonarrModal.defaultserver": "Zadani poslužitelj",
|
||||
"components.Settings.SonarrModal.edit4ksonarr": "Uredi 4K Sonarr poslužitelj",
|
||||
"components.Settings.SonarrModal.editsonarr": "Uredi Sonarr poslužitelj",
|
||||
"components.Settings.SonarrModal.enableSearch": "Aktiviraj automatsku pretragu",
|
||||
"components.Settings.SonarrModal.externalUrl": "Eksterni URL",
|
||||
"components.Settings.SonarrModal.hostname": "Ime računala ili IP adresa",
|
||||
"components.Settings.SonarrModal.languageprofile": "Profil jezika",
|
||||
"components.Settings.SonarrModal.loadingTags": "Učitavanje oznaka …",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "Učitavanje profila kvalitete …",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "Učitavanje početnih mapa …",
|
||||
"components.Settings.SonarrModal.notagoptions": "Nema oznaka.",
|
||||
"components.Settings.SonarrModal.port": "Priključak",
|
||||
"components.Settings.SonarrModal.rootfolder": "Početna mapa",
|
||||
"components.Settings.SonarrModal.qualityprofile": "Profil kvalitete",
|
||||
"components.Settings.SonarrModal.seasonfolders": "Mape za sezone",
|
||||
"components.Settings.SonarrModal.selectLanguageProfile": "Odaberi profil jezika",
|
||||
"components.Settings.SonarrModal.selectQualityProfile": "Odaberi profil kvalitete",
|
||||
"components.Settings.SonarrModal.selectRootFolder": "Odaberi početnu mapu",
|
||||
"components.Settings.SonarrModal.selecttags": "Odaberi oznake",
|
||||
"components.Settings.SonarrModal.server4k": "4K poslužitelj",
|
||||
"components.Settings.SonarrModal.servername": "Ime poslužitelja",
|
||||
"components.Settings.SonarrModal.ssl": "Koristi SSL",
|
||||
"components.Settings.SonarrModal.tags": "Oznake",
|
||||
"components.Settings.SonarrModal.testFirstQualityProfiles": "Provjeri vezu za učitavanje profila kvalitete",
|
||||
"components.Settings.SonarrModal.testFirstRootFolders": "Provjeri vezu za učitavanje početnih mapa",
|
||||
"components.Settings.SonarrModal.testFirstTags": "Provjeri vezu za učitavanje oznaka",
|
||||
"components.Settings.SonarrModal.toastSonarrTestSuccess": "Sonarr veza je uspješno uspostavljena!",
|
||||
"components.Settings.SonarrModal.validationApiKeyRequired": "Moraš navesti valjani API ključ",
|
||||
"components.Settings.SonarrModal.validationApplicationUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Osnovni URL mora početi s kosom crtom",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "Osnovni URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Moraš navesti valjano ime računala ili IP adresu",
|
||||
"components.Settings.SonarrModal.validationLanguageProfileRequired": "Moraš odabrati profil jezika",
|
||||
"components.Settings.SonarrModal.validationNameRequired": "Moraš navesti ime poslužitelja",
|
||||
"components.Settings.SonarrModal.validationPortRequired": "Moraš navesti valjani broj priključka",
|
||||
"components.Settings.SonarrModal.validationProfileRequired": "Moraš odabrati profil kvalitete",
|
||||
"components.Settings.SonarrModal.validationRootFolderRequired": "Moraš odabrati početnu mapu",
|
||||
"components.Settings.activeProfile": "Aktivni profil",
|
||||
"components.Settings.addradarr": "Dodaj Radarr poslužitelj",
|
||||
"components.Settings.address": "Adresa",
|
||||
"components.Settings.addsonarr": "Dodaj Sonarr poslužitelj",
|
||||
"components.Settings.copied": "API ključ je kopiran u međuspremnik.",
|
||||
"components.Settings.currentlibrary": "Aktualna biblioteka: {name}",
|
||||
"components.Settings.default": "Zadano",
|
||||
"components.Settings.default4k": "Zadano 4K",
|
||||
"components.Settings.deleteServer": "Izbriši {serverType} poslužitelj",
|
||||
"components.Settings.deleteserverconfirm": "Stvarno želiš izbrisati ovaj poslužitelj?",
|
||||
"components.Settings.email": "E-mail",
|
||||
"components.Settings.enablessl": "Koristi SSL",
|
||||
"components.Settings.experimentalTooltip": "Aktiviranjem ove postavke može doći do neočekivanog ponašanja programa",
|
||||
"components.Settings.externalUrl": "Eksterni URL",
|
||||
"components.Settings.hostname": "Ime računala ili IP adresa",
|
||||
"components.Settings.is4k": "4K",
|
||||
"components.Settings.librariesRemaining": "Preostale biblioteke: {count}",
|
||||
"components.Settings.menuAbout": "Informacije",
|
||||
"components.Settings.menuGeneralSettings": "Opće",
|
||||
"components.Settings.menuJobs": "Zadaci i predmemorija",
|
||||
"components.Settings.menuLogs": "Zapisi",
|
||||
"components.Settings.menuNotifications": "Obavijesti",
|
||||
"components.Settings.menuPlexSettings": "Plex",
|
||||
"components.Settings.menuServices": "Usluge",
|
||||
"components.Settings.menuUsers": "Korisnici",
|
||||
"components.Settings.noDefault4kServer": "4K {serverType} poslužitelj mora biti označen kao zadani kako bi se korisnicima omogućilo slanje zahtjeva za 4K {mediaType}.",
|
||||
"components.Settings.noDefaultServer": "Najmanje jedan {serverType} poslužitelj mora biti označen kao zadani kako bi se zahtjevi za {mediaType} mogli obraditi.",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Konfiguriraj i aktiviraj agente obavijesti.",
|
||||
"components.Settings.notifications": "Obavijesti",
|
||||
"components.Settings.notificationsettings": "Postavke obavijesti",
|
||||
"components.Settings.plex": "Plex",
|
||||
"components.Settings.plexlibraries": "Plex biblioteke",
|
||||
"components.Settings.plexsettings": "Plex postavke",
|
||||
"components.Settings.plexsettingsDescription": "Konfiguriraj postavke za tvoj Plex poslužitelj. Jellyseerr skenira tvoje Plex biblioteke kako bi utvrdio dostupnost sadržaja.",
|
||||
"components.Settings.port": "Priključak",
|
||||
"components.Settings.radarrsettings": "Radarr postavke",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr se mora ponovo pokrenuti kako bi promjene ove postavke stupile na snagu",
|
||||
"components.Settings.scan": "Sinkronizraj biblioteke",
|
||||
"components.Settings.scanning": "Sinkronizacija …",
|
||||
"components.Settings.serverLocal": "lokalni",
|
||||
"components.Settings.serverSecure": "sigurno",
|
||||
"components.Settings.serverpreset": "Poslužitelj",
|
||||
"components.Settings.serverpresetRefreshing": "Dohvaćanje poslužitelja …",
|
||||
"components.Settings.serviceSettingsDescription": "Dolje donfiguriraj svoje {serverType} poslužitelje. Možeš povezati više {serverType} poslužitelja, ali samo dva od njih mogu biti označena kao zadana (jedan ne-4K i jedan 4K). Administratori mogu promijeniti poslužitelj koji se koristi za obradu novih zahtjeva prije odobrenja.",
|
||||
"components.Settings.serverpresetLoad": "Pritisni gumb za učitavanje dostupnih polsužitelja",
|
||||
"components.Settings.serverpresetManualMessage": "Ručna konfiguracija",
|
||||
"components.Settings.services": "Usluge",
|
||||
"components.Settings.settingUpPlexDescription": "Za postavljanje Plexa, unesi detalje ručno ili odaberi poslužitelj preuzet s <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>. Pritisni gumb desno od padajućeg izbornika za dohvaćanje popisa dostupnih poslužitelja.",
|
||||
"components.Settings.sonarrsettings": "Sonarr postavke",
|
||||
"components.Settings.ssl": "SSL",
|
||||
"components.Settings.tautulliApiKey": "API ključ",
|
||||
"components.Settings.tautulliSettingsDescription": "Opcionalno konfiguriraj postavke za tvoj Tautulli poslužitelj. Jellyseerr dohvaća podatke o povijesti gledanja za tvoje Plex medije od Tautullija.",
|
||||
"components.Settings.toastPlexConnecting": "Pokušaj povezivanja na Plex …",
|
||||
"components.Settings.toastPlexConnectingFailure": "Neuspjelo povezivanje na Plex.",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Plex veza je uspješno uspostavljena!",
|
||||
"components.Settings.toastPlexRefresh": "Dohvaćanje popisa poslužitelja od Plexa …",
|
||||
"components.Settings.toastPlexRefreshFailure": "Neuspjelo dohvaćanje popisa Plex poslužitelja.",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Popis Plex poslužitelja je uspješno dohvaćen!",
|
||||
"components.Settings.urlBase": "Osnovni URL",
|
||||
"components.Settings.validationApiKey": "Moraš navesti valjani API ključ",
|
||||
"components.Settings.webpush": "Web Push",
|
||||
"components.Setup.continue": "Nastavi",
|
||||
"components.Setup.finish": "Završi postavljanje",
|
||||
"components.Setup.tip": "Savjet",
|
||||
"components.Setup.welcome": "Jellyseerr dobrodošlica",
|
||||
"components.Setup.finishing": "Završavanje…",
|
||||
"components.Setup.loginwithplex": "Prijavi se s Plexom",
|
||||
"components.Setup.setup": "Postavljanje",
|
||||
"components.Setup.signinMessage": "Za postavljanje se prijavi s tvojim Plex računom",
|
||||
"components.StatusBadge.managemedia": "Upravljaj {mediaType}",
|
||||
"components.StatusBadge.openinarr": "Otvori u {arr}",
|
||||
"components.StatusBadge.playonplex": "Reproduciraj na Plexu",
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} ažuriran",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Svi glumci serije",
|
||||
"components.TvDetails.TvCrew.fullseriescrew": "Svi suradnici serije",
|
||||
"components.TvDetails.cast": "Glumci",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# epizoda} few {# epizode} other {# epizoda}}",
|
||||
"components.TvDetails.seasons": "{seasonCount, plural, one {# sezona} few {# sezone} other {# sezona}}",
|
||||
"components.TvDetails.seasonstitle": "Sezone",
|
||||
"components.UserList.creating": "Stvaranje …",
|
||||
"components.UserList.edituser": "Uredi korisničke dozvole",
|
||||
"components.UserList.email": "E-mail adresa",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex {userCount, plural, one {korisnik je uspješno uvezen} few {korisnika su uspješno uvezena} other {korisnika su uspješno uvezeni}}!",
|
||||
"components.UserList.importfromplex": "Uvezi Plex korisnike",
|
||||
"components.UserList.localuser": "Lokalni korisnik",
|
||||
"components.UserList.newplexsigninenabled": "Postavka <strong>Aktiviraj novu Plex prijavu</strong> je trenutačno dektivirana. Plex korisnici s pristupom biblioteci se ne moraju uvesti da bi se mogli prijaviti.",
|
||||
"components.UserList.owner": "Vlasnik",
|
||||
"components.UserList.password": "Lozinka",
|
||||
"components.UserList.passwordinfodescription": "Konfiguriraj URL programa i aktiviraj e-mail obavijesti za dozvoljavanje automatskog generiranja lozinke.",
|
||||
"components.UserList.plexuser": "Plex korisnik",
|
||||
"components.UserList.role": "Uloga",
|
||||
"components.UserList.sortCreated": "Datum pridruživanja",
|
||||
"components.UserList.sortDisplayName": "Prikazano ime",
|
||||
"components.UserList.sortRequests": "Broj zahtjeva",
|
||||
"components.UserList.totalrequests": "Zahtjevi",
|
||||
"components.UserList.user": "Korisnik",
|
||||
"components.UserList.usercreatedfailed": "Dogodila se greška prilikom stvaranja korisnika.",
|
||||
"components.UserList.usercreatedfailedexisting": "Navedenu e-mail adresu koristi već jedan drugi korisnik.",
|
||||
"components.UserList.userdeleteerror": "Dogodila se greška prilikom brisanja korisnika.",
|
||||
"components.UserProfile.ProfileHeader.joindate": "Datum pridruživanja: {joindate}",
|
||||
"components.UserProfile.ProfileHeader.userid": "ID korisnika: {userid}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.accounttype": "Vrsta računa",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.admin": "Administrator",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "Jezik prikaza",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Korisnički ID na Discordu",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "<FindDiscordIdLink>Višeznamenkasti ID broj</FindDiscordIdLink> povezan s tvojim korisničkim računom na Discordu",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Prikazano ime",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Mijenjanje globalnih ograničenja",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.general": "Opće",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Opće postavke",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Zadano ({language})",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtriraj sadržaj prema izvornom jeziku",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Otkrij jezik",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex korisnik",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Automatsko zahtijevanje filmova",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatski zatraži filmove na tvom <PlexWatchlistSupportLink>Plex popisu gledanja</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Automatsko zahtijevanje serija",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Ograničenje zahtjeva za serije",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtriraj sadržaj prema regionalnoj dostupnosti",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Uloga",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Discord postavke obavijesti su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "E-mail",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingsfailed": "Neuspjelo spremanje e-mail postavki obavijesti.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "E-mail postavke obavijesti su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notifications": "Obavijesti",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.notificationsettings": "Postavke za obavijesti",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessToken": "Token za pristup",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Pushbullet postavke obavijesti su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationToken": "API token programa",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationTokenTip": "<ApplicationRegistrationLink>Registriraj jedan program</ApplicationRegistrationLink> za korištenje s {applicationTitle}",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Pošalji tiho",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Pošalji obavijesti bez zvuka",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Započni chat</TelegramBotLink>, dodaj <GetIdBotLink>@get_id_bot</GetIdBotLink> zadaj naredbu <code>/my_id</code>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Neuspjelo spremanje Telegram postavki obavijesti.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpush": "Web Push",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Aktualna lozinka",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Ovaj korisnički račun trenutačno nema postavljenu lozinku. Dolje konfiguriraj lozinku kako bi se ovom računu omogućila prijava kao „lokalni korisnik.”",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Tvoj račun trenutačno nema postavljenu lozinku. Konfiguriraj lozinku za omogućavanje prijave kao „lokalni korisnik” koristeći tvoju e-mail adresu.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Nemaš dozvole za mijenjenje lozinke ovog korisnika.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Lozinka",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "Dogodila se greška prilikom spremanja lozinke.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailureVerifyCurrent": "Dogodila se greška prilikom spremanja lozinke. Je li vaša aktualna lozinka bila ispravno upisana?",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "Lozinka je uspješno spremljena!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "Moraš navesti tvoju aktualnu lozinku",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "Moraš navesti novu lozinku",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPasswordLength": "Lozinka je prekratka; mora sadržati barem 8 znakova",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsFailure": "Dogodila se greška prilikom spremanja postavki.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsSuccess": "Dozvole su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Ne možeš promijeniti vlastite dozvole.",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Opće",
|
||||
"components.UserProfile.UserSettings.menuNotifications": "Obavijesti",
|
||||
"components.UserProfile.UserSettings.menuPermissions": "Dozvole",
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "Nemaš dozvole za mijenjenje postavki ovog korisnika.",
|
||||
"components.UserProfile.emptywatchlist": "Mediji koji su dodani u tvoj <PlexWatchlistSupportLink>popis gledanja na Plexu</PlexWatchlistSupportLink> pojavit će se ovdje.",
|
||||
"components.UserProfile.movierequests": "Zahtjevi za filmove",
|
||||
"components.UserProfile.pastdays": "{type} (zadnjih {days} dana)",
|
||||
"components.UserProfile.plexwatchlist": "Popis gledanja na Plexu",
|
||||
"components.UserProfile.seriesrequest": "Zahtjevi za serije",
|
||||
"components.UserProfile.totalrequests": "Ukupno zahtjeva",
|
||||
"components.UserProfile.unlimited": "Neograničeno",
|
||||
"i18n.available": "Dostupno",
|
||||
"i18n.back": "Natrag",
|
||||
"i18n.delimitedlist": "{a}, {b}",
|
||||
"i18n.edit": "Uredi",
|
||||
"i18n.experimental": "Eksperimentalno",
|
||||
"i18n.pending": "Na čekanju",
|
||||
"i18n.previous": "Prethodno",
|
||||
"i18n.processing": "Obrada",
|
||||
"i18n.request": "Zahtjev",
|
||||
"i18n.request4k": "Zatraži u 4K",
|
||||
"i18n.requested": "Zatraženo",
|
||||
"i18n.resultsperpage": "Prikaži {pageSize} rezultata po stranici",
|
||||
"i18n.retrying": "Pokušaj se ponavlja …",
|
||||
"i18n.requesting": "Zahtijevanje …",
|
||||
"i18n.resolved": "Riješeno",
|
||||
"i18n.save": "Spremi promjene",
|
||||
"i18n.saving": "Spremanje …",
|
||||
"i18n.settings": "Postavke",
|
||||
"i18n.showingresults": "Prikaz <strong>{from}</strong> do <strong>{to}</strong> od <strong>{total}</strong> rezultata",
|
||||
"i18n.test": "Provjeri",
|
||||
"i18n.testing": "Provjeravanje …",
|
||||
"i18n.tvshow": "Serije",
|
||||
"i18n.tvshows": "Serije",
|
||||
"i18n.unavailable": "Nedostupno",
|
||||
"i18n.usersettings": "Korisničke postavke",
|
||||
"i18n.view": "Prikaz",
|
||||
"pages.errormessagewithcode": "{statusCode} – {error}",
|
||||
"pages.internalservererror": "Interna greška poslužitelja",
|
||||
"pages.pagenotfound": "Stranica nije pronađena",
|
||||
"pages.returnHome": "Vrati se na početnu stranicu",
|
||||
"pages.serviceunavailable": "Usluga nije dostupna",
|
||||
"pages.somethingwentwrong": "Dogodila se greška",
|
||||
"components.PermissionEdit.requestTv": "Zahtjev za serijama",
|
||||
"components.PermissionEdit.users": "Upravljanje korisnicima",
|
||||
"components.PermissionEdit.viewissues": "Prikaz problema",
|
||||
"components.PermissionEdit.viewrecent": "Prikaz nedavno dodanih",
|
||||
"components.PermissionEdit.viewrequests": "Prikaz zahtjeva",
|
||||
"components.PermissionEdit.viewwatchlists": "Prikaz Plex popisa gledanja",
|
||||
"components.PersonDetails.alsoknownas": "Poznat/a i kao: {names}",
|
||||
"components.PersonDetails.appearsin": "Nastupanja",
|
||||
"components.PersonDetails.ascharacter": "kao {character}",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PlexLoginButton.signingin": "Prijava…",
|
||||
"components.PlexLoginButton.signinwithplex": "Prijavi se",
|
||||
"components.QuotaSelector.unlimited": "Neograničeno",
|
||||
"components.RegionSelector.regionDefault": "Sve regije",
|
||||
"components.RegionSelector.regionServerDefault": "Zadano ({region})",
|
||||
"components.RequestBlock.approve": "Odobri zahtjev",
|
||||
"components.RequestBlock.decline": "Odbij zahtjev",
|
||||
"components.RequestBlock.delete": "Izbriši zahtjev",
|
||||
"components.RequestBlock.edit": "Uredi zahtjev",
|
||||
"components.RequestBlock.server": "Odredišni poslužitelj",
|
||||
"components.RequestButton.approverequest": "Odobri zahtjev",
|
||||
"components.RequestButton.approverequest4k": "Odobri 4K zahtjev",
|
||||
"components.RequestButton.requestmore": "Zatraži više",
|
||||
"components.RequestButton.requestmore4k": "Zatraži više u 4K",
|
||||
"components.RequestButton.viewrequest": "Prikaz zahtjeva",
|
||||
"components.RequestButton.viewrequest4k": "Prikaz 4K zahtjeva",
|
||||
"components.RequestCard.approverequest": "Odobri zahtjev",
|
||||
"components.RequestCard.cancelrequest": "Prekini zahtjev",
|
||||
"components.RequestCard.declinerequest": "Odbij zahtjev",
|
||||
"components.RequestCard.deleterequest": "Izbriši zahtjev",
|
||||
"components.RequestCard.editrequest": "Uredi zahtjev",
|
||||
"components.RequestCard.failedretry": "Dogodila se greška prilikom ponovnog pokušaja slanja zahtjeva.",
|
||||
"components.RequestCard.mediaerror": "{mediaType} nije pronađen",
|
||||
"components.RequestList.RequestItem.requested": "Zatraženo",
|
||||
"components.RequestList.requests": "Zahtjevi",
|
||||
"components.RequestList.showallrequests": "Prikaži sve zahtjeve",
|
||||
"components.RequestList.sortModified": "Zadnja promjena",
|
||||
"components.RequestModal.AdvancedRequester.advancedoptions": "Napredno",
|
||||
"components.RequestModal.AdvancedRequester.requestas": "Zatraži kao",
|
||||
"components.RequestModal.AdvancedRequester.selecttags": "Odaberi oznake",
|
||||
"components.RequestModal.AdvancedRequester.tags": "Oznake",
|
||||
"components.RequestModal.QuotaDisplay.movie": "film",
|
||||
"components.RequestModal.errorediting": "Dogodila se greška prilikom uređivanja zahtjeva.",
|
||||
"components.RequestModal.extras": "Dodaci",
|
||||
"components.RequestModal.numberofepisodes": "Broj epizoda",
|
||||
"components.RequestModal.pending4krequest": "4K zahtjeva na čekanju",
|
||||
"components.RequestModal.pendingapproval": "Tvoj zahtjev čeka na odobrenje.",
|
||||
"components.RequestCard.tvdbid": "TVDB ID",
|
||||
"components.RequestModal.pendingrequest": "Zahtjevai na čekanju",
|
||||
"components.RequestModal.requestApproved": "Zahtjev za <strong>{title}</strong> je odobren!",
|
||||
"components.RequestModal.requestcancelled": "Zahtjev za <strong>{title}</strong> je prekinut.",
|
||||
"components.RequestModal.requestcollection4ktitle": "Zahtjev za zbirkom u 4K",
|
||||
"components.RequestModal.requestcollectiontitle": "Zahtjev za zbirkom",
|
||||
"components.RequestModal.requesterror": "Dogodila se greška prilikom slanja zahtjeva.",
|
||||
"components.RequestModal.requestfrom": "Zahtjev korisnika {username} čeka na odobrenje.",
|
||||
"components.RequestModal.requestmovie4ktitle": "Zatraži film u 4K",
|
||||
"components.RequestModal.requestseries4ktitle": "Zatraži serije u 4K",
|
||||
"components.RequestModal.requestseriestitle": "Zatraži serije",
|
||||
"components.RequestModal.season": "Sezona",
|
||||
"components.RequestModal.seasonnumber": "Sezona {number}",
|
||||
"components.RequestModal.selectmovies": "Odaberi filmove",
|
||||
"components.RequestModal.selectseason": "Odaberi sezone",
|
||||
"components.ResetPassword.gobacklogin": "Vrati se na stranicu za prijavu",
|
||||
"components.ResetPassword.validationpasswordmatch": "Lozinke se moraju poklapati",
|
||||
"components.ResetPassword.validationpasswordminchars": "Lozinka je prekratka; mora sadržati barem 8 znakova",
|
||||
"components.ResetPassword.validationpasswordrequired": "Moraš navesti lozinku",
|
||||
"components.Search.searchresults": "Rezultati pretrage",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Neuspjelo spremanje postavki Gotify obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSending": "Slanje Gotify obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSuccess": "Gotify obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsGotify.token": "Token programa",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsGotify.url": "URL poslužitelja",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlTrailingSlash": "URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.profileName": "Ime profila",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.profileNameTip": "Potrebno je samo ako se ne koristi <code>zadani</code> profil",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestFailed": "Neuspjelo slanje LunaSea obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSending": "Slanje LunaSea obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSuccess": "LunaSea obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "Token za pristup",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "Neuspjelo spremanje postavki Pushbullet obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestFailed": "Neuspjelo slanje Pushbullet obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "Moraš navesti valjani token za pristup",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "API token programa",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessTokenTip": "<ApplicationRegistrationLink>Registriraj jedan program</ApplicationRegistrationLink> za korištenje s Jellyseerr",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Neuspjelo spremanje Pushover postavki obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestFailed": "Neuspjelo slanje Pushover obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Moraš navesti valjani token programa",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Moraš navesti valjani ključ korisnika ili grupe",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Neuspjelo spremanje Slack postavki obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slack postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestFailed": "Neuspjelo slanje Slack obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSending": "Slanje Slack obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSuccess": "Slack obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Slanje webhook obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "Webhook obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.allowselfsigned": "Dozvoli samopotpisane certifikate",
|
||||
"components.Settings.Notifications.authPass": "SMTP lozinka",
|
||||
"components.Settings.Notifications.authUser": "SMTP korisničko ime",
|
||||
"components.Settings.Notifications.botAPI": "Token autorizacije bota",
|
||||
"components.Settings.Notifications.botAvatarUrl": "URL avatara bota",
|
||||
"components.Settings.Notifications.botUsername": "Korisničko ime bota",
|
||||
"components.Settings.Notifications.botUsernameTip": "Dozvoli korisnicima da započnu chat s tvojim botom i da konfiguriraju vlastite obavijesti",
|
||||
"components.Settings.Notifications.encryption": "Metoda šifriranja",
|
||||
"components.Settings.Notifications.encryptionDefault": "Koristi STARTTLS ako je dostupno",
|
||||
"components.Settings.Notifications.encryptionImplicitTls": "Koristi implicitni TLS",
|
||||
"components.Settings.Notifications.encryptionNone": "Ništa",
|
||||
"components.Settings.Notifications.encryptionOpportunisticTls": "Uvijek koristi STARTTLS",
|
||||
"components.Settings.Notifications.encryptionTip": "U većini slučajeva implicitni TLS koristi priključak 465, a STARTTLS priključak 587",
|
||||
"components.Settings.Notifications.pgpPassword": "PGP lozinka",
|
||||
"components.Settings.Notifications.sendSilentlyTip": "Pošalji obavijesti bez zvuka",
|
||||
"components.Settings.Notifications.senderName": "Ime pošiljatelja",
|
||||
"components.Settings.Notifications.smtpHost": "SMTP računalo",
|
||||
"components.Settings.Notifications.smtpPort": "SMTP priključak",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "Neuspjelo spremanje Telegram postavki obavijesti.",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Telegram postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.toastEmailTestFailed": "Neuspjelo slanje e-mail obavijesti provjere.",
|
||||
"components.Settings.Notifications.toastEmailTestSending": "Slanje e-mail obavijesti provjere …",
|
||||
"components.Settings.Notifications.toastEmailTestSuccess": "E-mail obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.toastTelegramTestFailed": "Neuspjelo slanje Telegram obavijesti provjere.",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Moraš navesti token autorizacije za bot",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Moraš navesti valjani chat ID",
|
||||
"components.Settings.RadarrModal.baseUrl": "Osnovni URL",
|
||||
"components.Settings.RadarrModal.create4kradarr": "Dodaj novi 4K Radarr poslužitelj",
|
||||
"components.Settings.RadarrModal.createradarr": "Dodaj novi Radarr poslužitelj",
|
||||
"components.Settings.RadarrModal.default4kserver": "Zadani 4K poslužitelj",
|
||||
"components.Settings.RadarrModal.editradarr": "Uredi Radarr poslužitelj",
|
||||
"components.Settings.RadarrModal.enableSearch": "Aktiviraj automatsku pretragu",
|
||||
"components.Settings.RadarrModal.externalUrl": "Eksterni URL",
|
||||
"components.Settings.RadarrModal.hostname": "Ime računala ili IP adresa",
|
||||
"components.Settings.RadarrModal.inCinemas": "U kinima",
|
||||
"components.Settings.RadarrModal.notagoptions": "Nema oznaka.",
|
||||
"components.Settings.RadarrModal.selectQualityProfile": "Odaberi profil kvalitete",
|
||||
"components.Settings.RadarrModal.port": "Priključak",
|
||||
"components.Settings.RadarrModal.selectRootFolder": "Odaberi početnu mapu",
|
||||
"components.Settings.RadarrModal.selecttags": "Odaberi oznake",
|
||||
"components.Settings.RadarrModal.server4k": "4K poslužitelj",
|
||||
"components.Settings.RadarrModal.servername": "Ime poslužitelja",
|
||||
"components.Settings.RadarrModal.ssl": "Koristi SSL",
|
||||
"components.Settings.RadarrModal.testFirstRootFolders": "Provjeri vezu za učitavanje početnih mapa",
|
||||
"components.Settings.RadarrModal.toastRadarrTestSuccess": "Radarr veza je uspješno uspostavljena!",
|
||||
"components.Settings.RadarrModal.validationApiKeyRequired": "Moraš navesti valjani API ključ",
|
||||
"components.Settings.RadarrModal.validationApplicationUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.RadarrModal.validationApplicationUrlTrailingSlash": "URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "Osnovni URL mora početi s kosom crtom",
|
||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "Moraš odabrati najmanju dostupnost",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Moraš navesti valjani broj priključka",
|
||||
"components.Settings.RadarrModal.validationProfileRequired": "Moraš odabrati profil kvalitete",
|
||||
"components.Settings.SettingsAbout.Releases.currentversion": "Aktualno",
|
||||
"components.Settings.SettingsAbout.Releases.latestversion": "Najnovije",
|
||||
"components.Settings.SettingsAbout.Releases.releasedataMissing": "Podaci izdanja trenutačno nisu nedostupni.",
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "{version} – zapisnik promjena",
|
||||
"components.Settings.SettingsAbout.Releases.viewchangelog": "Prikaz promjena",
|
||||
"components.Settings.SettingsAbout.Releases.viewongithub": "Prikaz na GitHubu",
|
||||
"components.Settings.SettingsAbout.about": "Informacije",
|
||||
"components.Settings.SettingsAbout.appDataPath": "Mapa podataka",
|
||||
"components.Settings.SettingsAbout.betawarning": "Ovo je BETA softver. Značajke su možda pokvarene i/ili nestabilne. Prijavi sve probleme na GitHub!",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Jellyseerr informacije",
|
||||
"components.Settings.SettingsAbout.totalrequests": "Ukupno zahtjeva",
|
||||
"components.Settings.SettingsAbout.uptodate": "Aktualno",
|
||||
"components.Settings.SettingsJobsCache.cacheDescription": "Jellyseerr sprema zahtjeve na eksterne točke pristupa API-u za optimiranje izvedbe i izbjegavanje upućivanja nepotrebnih API poziva.",
|
||||
"components.Settings.SettingsJobsCache.cacheflushed": "Predmemorija {cachename} je ispražnjena.",
|
||||
"components.Settings.SettingsJobsCache.cachehits": "Pogodci",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Aktiviraj novu Plex prijavu",
|
||||
"components.Settings.SettingsUsers.toastSettingsFailure": "Dogodila se greška prilikom spremanja postavki.",
|
||||
"components.Settings.SonarrModal.loadinglanguageprofiles": "Učitavanje profila jezika …",
|
||||
"components.Settings.SonarrModal.toastSonarrTestFailure": "Neuspjelo povezivanje na Sonarr.",
|
||||
"components.Settings.manualscan": "Ručno skeniranje biblioteke",
|
||||
"components.Settings.mediaTypeSeries": "serija",
|
||||
"components.Settings.tautulliSettings": "Tautulli postavke",
|
||||
"components.Settings.validationUrlBaseLeadingSlash": "Osnovni URL mora početi s kosom crtom",
|
||||
"components.Settings.webAppUrlTip": "Opcionalno usmjeri korisnike na web program na tvom poslužitelju umjesto na „hostirani” web program",
|
||||
"components.StatusChecker.appUpdatedDescription": "Pritisni donji gumb za ponovno pokretanje programa.",
|
||||
"components.StatusChecker.restartRequiredDescription": "Ponovo pokreni poslužitelja kako bi se ažurirane postavke primijenile.",
|
||||
"components.TvDetails.episodeRuntime": "Trajanje epizode",
|
||||
"components.TvDetails.nextAirDate": "Datum sljedećeg emitiranja",
|
||||
"components.TvDetails.rtaudiencescore": "Ocjena publike na Rotten Tomatoes",
|
||||
"components.TvDetails.seasonnumber": "Sezona {seasonNumber}",
|
||||
"components.UserList.createlocaluser": "Stvori lokalnog korisnika",
|
||||
"components.UserList.deleteuser": "Izbriši korisnika",
|
||||
"components.UserList.displayName": "Prikazano ime",
|
||||
"components.UserList.importfromplexerror": "Dogodila se greška prilikom uvoza Plex korisnika.",
|
||||
"components.UserList.localLoginDisabled": "Postavka <strong>Aktiviraj lokalnu prijavu</strong> je trenutačno deaktivirana.",
|
||||
"components.UserList.nouserstoimport": "Nema Plex korisnika za uvoz.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKey": "Javni PGP ključ",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "Šifriraj e-mail poruke koristeći <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "Moraš navesti valjani chat ID",
|
||||
"components.UserProfile.limit": "{remaining} od {limit}",
|
||||
"components.RequestList.RequestItem.tvdbid": "TVDB ID",
|
||||
"components.PermissionEdit.autorequest": "Automatsko zahtijevanje",
|
||||
"components.PermissionEdit.autorequestMovies": "Automatsko zahtijevanje filmova",
|
||||
"components.PermissionEdit.autorequestSeries": "Automatsko zahtijevanje serija",
|
||||
"components.PermissionEdit.createissues": "Prijavljivanje problema",
|
||||
"components.PermissionEdit.manageissues": "Upravljanje problemima",
|
||||
"components.PermissionEdit.managerequests": "Upravljanje zahtjevima",
|
||||
"components.PermissionEdit.request": "Zahtjev",
|
||||
"components.PermissionEdit.request4k": "Zahtjev za 4K",
|
||||
"components.PermissionEdit.request4kMovies": "Zahtjev za 4K filmove",
|
||||
"components.PermissionEdit.request4kTv": "Zahtjev za 4K serije",
|
||||
"components.PermissionEdit.requestMovies": "Zahtjev za filmovima",
|
||||
"components.PersonDetails.birthdate": "Datum rođenja {birthdate}",
|
||||
"components.PersonDetails.crewmember": "Suradnik",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} po {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} po {quotaDays} {days}</quotaUnits>",
|
||||
"components.RequestBlock.languageprofile": "Profil jezika",
|
||||
"components.RequestBlock.lastmodifiedby": "Zadnja promjena od",
|
||||
"components.RequestBlock.profilechanged": "Profil kvalitete",
|
||||
"components.RequestBlock.requestdate": "Datum zahtjeva",
|
||||
"components.RequestBlock.requestedby": "Podnositelj zahtjeva",
|
||||
"components.RequestBlock.requestoverrides": "Promjene zahtjeva",
|
||||
"components.RequestBlock.rootfolder": "Početna mapa",
|
||||
"components.RequestButton.declinerequest": "Odbij zahtjev",
|
||||
"components.RequestButton.declinerequest4k": "Odbij 4K zahtjev",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Prekini zahtjev",
|
||||
"components.RequestList.RequestItem.deleterequest": "Izbriši zahtjev",
|
||||
"components.RequestList.RequestItem.editrequest": "Uredi zahtjev",
|
||||
"components.RequestList.RequestItem.failedretry": "Dogodila se greška prilikom ponovnog pokušaja slanja zahtjeva.",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} nije pronađen",
|
||||
"components.RequestList.RequestItem.modified": "Promijenjeno",
|
||||
"components.RequestList.RequestItem.modifieduserdate": "{date}, korisnik: {user}",
|
||||
"components.RequestList.RequestItem.requesteddate": "Zatraženo",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
"components.RequestList.sortAdded": "Najnoviji",
|
||||
"components.RequestModal.AdvancedRequester.animenote": "* Ovo je serija anime filmova.",
|
||||
"components.RequestModal.AdvancedRequester.default": "{name} (zadano)",
|
||||
"components.RequestModal.AdvancedRequester.destinationserver": "Odredišni poslužitelj",
|
||||
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
|
||||
"components.RequestModal.AdvancedRequester.languageprofile": "Profil jezika",
|
||||
"components.RequestModal.AdvancedRequester.notagoptions": "Nema oznaka.",
|
||||
"components.RequestModal.AdvancedRequester.qualityprofile": "Profil kvalitete",
|
||||
"components.RequestModal.AdvancedRequester.rootfolder": "Početna mapa",
|
||||
"components.RequestModal.QuotaDisplay.season": "sezona",
|
||||
"components.RequestModal.alreadyrequested": "Već zatraženo",
|
||||
"components.RequestModal.approve": "Odobri zahtjev",
|
||||
"components.RequestModal.autoapproval": "Automatsko odobravanje",
|
||||
"components.RequestModal.cancel": "Prekini zahtjev",
|
||||
"components.RequestModal.edit": "Uredi zahtjev",
|
||||
"components.RequestModal.requestCancel": "Zahtjev za <strong>{title}</strong> je prekinut.",
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> je uspješno zatražen!",
|
||||
"components.RequestModal.requestedited": "Zahtjev za <strong>{title}</strong> je uspješno uređen!",
|
||||
"components.RequestModal.requestmovietitle": "Zatraži film",
|
||||
"components.RequestModal.requestseasons": "Zatraži {seasonCount} {seasonCount, plural, one {sezonu} few {sezone} other {sezona}}",
|
||||
"components.RequestModal.requestseasons4k": "Zatraži {seasonCount} {seasonCount, plural, one {sezonu} few {sezone} other {sezona}} u 4K",
|
||||
"components.ResetPassword.confirmpassword": "Potvrdi lozinku",
|
||||
"components.ResetPassword.email": "E-mail adresa",
|
||||
"components.ResetPassword.password": "Lozinka",
|
||||
"components.ResetPassword.passwordreset": "Ponovo postavljanje lozinke",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Poveznica za ponovno postavljanje lozinke bit će poslana na navedenu e-mail adresu ako je povezana s valjanim korisnikom.",
|
||||
"components.ResetPassword.resetpassword": "Obnovni svoju lozinku",
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "Lozinka je uspješno ponovno postavljena!",
|
||||
"components.ResetPassword.validationemailrequired": "Moraš zadati valjanju e‑mail adresu",
|
||||
"components.Search.search": "Pretraga",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Gotify postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestFailed": "Neuspjelo slanje Gotify obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "Moraš navesti token programa",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlRequired": "Moraš navesti valjani URL",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsFailed": "Neuspjelo spremanje postavki LunaSea obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "LunaSea postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Stvori token iz tvojih <PushbulletSettingsLink>postavki računa</PushbulletSettingsLink>",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "Oznaka kanala",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Pushbullet postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSending": "Slanje Pushbullet obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "Pushbullet obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Pushover postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSending": "Slanje Pushover obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSuccess": "Pushover obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Ključ korisnika ili grupe",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "Tvoj <UsersGroupsLink>identifikator korisnika ili grupe</UsersGroupsLink> s 30 znakova",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsWebPush.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrlTip": "Stvori <WebhookLink>ulaznu Webhook</WebhookLink> integraciju",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "Neuspjelo slanje Web push obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Slanje web push obavijesti provjere …",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Web push obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingsfailed": "Neuspjelo spremanje Web push postavki obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingssaved": "Web push postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "Zaglavlje autorizacije",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Vrati na zadane vrijednosti",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestFailed": "Neuspjelo slanje Webhook obavijesti provjere.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Neuspjelo spremanje Webhook postavki obavijesti.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Webhook postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.agentenabled": "Aktiviraj agenta",
|
||||
"components.Settings.Notifications.botApiTip": "<CreateBotLink>Stvori bot</CreateBotLink> za korištenje s Jellyseerr",
|
||||
"components.Settings.Notifications.chatId": "Chat ID",
|
||||
"components.Settings.Notifications.discordsettingsfailed": "Neuspjelo spremanje Discord postavki za obavijesti.",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Discord postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.emailsender": "Adresa pošiljatelja",
|
||||
"components.Settings.Notifications.emailsettingsfailed": "Neuspjelo spremanje e-mail postavki obavijesti.",
|
||||
"components.Settings.Notifications.emailsettingssaved": "E-mail postavke obavijesti su uspješno spremljene!",
|
||||
"components.Settings.Notifications.enableMentions": "Aktiviraj spominjanja",
|
||||
"components.Settings.Notifications.pgpPasswordTip": "Potpiši šifrirane e-mail poruke koristeći <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.Settings.Notifications.pgpPrivateKey": "Privatni PGP ključ",
|
||||
"components.Settings.Notifications.pgpPrivateKeyTip": "Potpiši šifrirane e-mail poruke koristeći <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.Settings.Notifications.sendSilently": "Pošalji tiho",
|
||||
"components.Settings.Notifications.toastDiscordTestFailed": "Neuspjelo slanje Discord obavijesti provjere.",
|
||||
"components.Settings.Notifications.toastDiscordTestSending": "Slanje Discord obavijesti provjere …",
|
||||
"components.Settings.Notifications.toastDiscordTestSuccess": "Discord obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.toastTelegramTestSending": "Slanje Telegram obavijesti provjere …",
|
||||
"components.Settings.Notifications.toastTelegramTestSuccess": "Telegram obavijest provjere je poslana!",
|
||||
"components.Settings.Notifications.validationEmail": "Moraš navesti valjanju e‑mail adresu",
|
||||
"components.Settings.Notifications.validationPgpPassword": "Moraš navesti PGP lozinku",
|
||||
"components.Settings.Notifications.validationPgpPrivateKey": "Moraš navesti valjan privatni PGP ključ",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Moraš navesti valjano ime računala ili IP adresu",
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "Moraš navesti valjani broj priključka",
|
||||
"components.Settings.Notifications.validationTypes": "Moraš odabrati barem jednu vrstu obavijesti",
|
||||
"components.Settings.Notifications.validationUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.Notifications.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.webhookUrlTip": "Stvori <DiscordWebhookLink>webhook integraciju</DiscordWebhookLink> u tvom poslužitelju",
|
||||
"components.Settings.RadarrModal.add": "Dodaj poslužitelj",
|
||||
"components.Settings.RadarrModal.announced": "Najavljeno",
|
||||
"components.Settings.RadarrModal.apiKey": "API ključ",
|
||||
"components.Settings.RadarrModal.defaultserver": "Zadani poslužitelj",
|
||||
"components.Settings.RadarrModal.edit4kradarr": "Uredi 4K Radarr poslužitelj",
|
||||
"components.Settings.RadarrModal.loadingTags": "Učitavanje oznaka …",
|
||||
"components.Settings.RadarrModal.loadingprofiles": "Učitavanje profila kvalitete …",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Učitavanje početnih mapa …",
|
||||
"components.Settings.RadarrModal.minimumAvailability": "Najmanja dostupnost",
|
||||
"components.Settings.RadarrModal.qualityprofile": "Profil kvalitete",
|
||||
"components.Settings.RadarrModal.released": "Objavljeno",
|
||||
"components.Settings.RadarrModal.rootfolder": "Početna mapa",
|
||||
"components.Settings.RadarrModal.selectMinimumAvailability": "Odaberi najmanju dostupnost",
|
||||
"components.Settings.RadarrModal.tags": "Oznake",
|
||||
"components.Settings.RadarrModal.testFirstQualityProfiles": "Provjeri vezu za učitavanje profila kvalitete",
|
||||
"components.Settings.RadarrModal.testFirstTags": "Provjeri vezu za učitavanje oznaka",
|
||||
"components.Settings.RadarrModal.toastRadarrTestFailure": "Neuspjelo povezivanje na Radarr.",
|
||||
"components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "Osnovni URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Moraš navesti valjano ime računala ili IP adresu",
|
||||
"components.Settings.RadarrModal.validationNameRequired": "Moraš navesti ime poslužitelja",
|
||||
"components.Settings.RadarrModal.validationRootFolderRequired": "Moraš odabrati početnu mapu",
|
||||
"components.Settings.SettingsAbout.Releases.releases": "Izdanja",
|
||||
"components.Settings.SettingsAbout.documentation": "Dokumentacija",
|
||||
"components.Settings.SettingsAbout.gettingsupport": "Dobivanje pomoći",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Rasprave na GitHubu",
|
||||
"components.Settings.SettingsAbout.helppaycoffee": "Pomogni platiti kavu",
|
||||
"components.Settings.SettingsAbout.outofdate": "Zastarjela verzija",
|
||||
"components.Settings.SettingsAbout.preferredmethod": "Preferirano",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "Pokrećeš <code>razvojnu</code> Jellyseerr granu, koja se preporučuje samo onima koji doprinose razvoju ili pomažu najnovijem testiranju.",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Podrži Jellyseerr",
|
||||
"components.Settings.SettingsAbout.timezone": "Vremenska zona",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Ukupno medija",
|
||||
"components.Settings.SettingsAbout.version": "Verzija",
|
||||
"components.Settings.SettingsJobsCache.cache": "Predmemorija",
|
||||
"components.Settings.SettingsJobsCache.cachekeys": "Ukupno ključeva",
|
||||
"components.Settings.SettingsJobsCache.cacheksize": "Veličina ključa",
|
||||
"components.Settings.SettingsJobsCache.cachemisses": "Promašaji",
|
||||
"components.Settings.SettingsJobsCache.cachename": "Ime predmemorije",
|
||||
"components.Settings.SettingsJobsCache.cachevsize": "Veličina vrijednosti",
|
||||
"components.Settings.SettingsJobsCache.canceljob": "Prekini zadatak",
|
||||
"components.Settings.SettingsJobsCache.command": "Naredba",
|
||||
"components.Settings.SettingsJobsCache.download-sync": "Sinkronizacija preuzimanja",
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "Resetiraj sinkronizaciju preuzimanja",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedule": "Promijeni zadatak",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "{jobScheduleHours, plural, one {Svake minute} few {Svake {jobScheduleHours} minute} other {Svakih {jobScheduleHours} minuta}}",
|
||||
"components.Settings.SettingsJobsCache.flushcache": "Isprazni predmemoriju",
|
||||
"components.Settings.SettingsJobsCache.jobcancelled": "Zadatak {jobname} prekinut.",
|
||||
"components.Settings.SettingsJobsCache.jobname": "Ime zadatka",
|
||||
"components.Settings.SettingsJobsCache.jobs": "Zadaci",
|
||||
"components.Settings.SettingsJobsCache.jobsDescription": "Jellyseerr obavlja određene zadatke održavanja kao redovito planirane zadatke, ali oni se također mogu dolje ručno pokrenuti. Ručno pokretanje zadatka neće promijeniti njegov plan.",
|
||||
"components.Settings.SettingsJobsCache.jobtype": "Vrsta",
|
||||
"components.Settings.SettingsJobsCache.jobsandcache": "Zadaci i predmemorija",
|
||||
"components.Settings.SettingsJobsCache.jobstarted": "Zadatak {jobname} je pokrenut.",
|
||||
"components.Settings.SettingsJobsCache.nextexecution": "Sljedeće izvršavanje",
|
||||
"components.Settings.SettingsJobsCache.process": "Obrada",
|
||||
"components.Settings.SettingsLogs.copyToClipboard": "Kopiraj u međuspremnik",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Ove zapise možeš izravno vidjeti i putem <code>stdout</code> ili u <code>{appDataPath}/logs/overseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.message": "Poruka",
|
||||
"components.Settings.SettingsLogs.pauseLogs": "Zaustavi",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Dozvoli Plex korisnicima da se prijave bez da se prethodno uvezu",
|
||||
"components.Settings.SonarrModal.testFirstLanguageProfiles": "Provjeri vezu za učitavanje profila jezika",
|
||||
"components.Settings.SonarrModal.validationApplicationUrlTrailingSlash": "URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.mediaTypeMovie": "film",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Dogodila se greška prilikom spremanja Tautulli postavki.",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Tautulli postavke su uspješno spremljene!",
|
||||
"components.Settings.validationHostnameRequired": "Moraš navesti valjano ime računala ili IP adresu",
|
||||
"components.Settings.validationPortRequired": "Moraš navesti valjani broj priključka",
|
||||
"components.Settings.validationUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.validationUrlBaseTrailingSlash": "Osnovni URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.validationUrlTrailingSlash": "URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.webAppUrl": "URL <WebAppLink>web programa</WebAppLink>",
|
||||
"components.Settings.webhook": "Webhook",
|
||||
"components.Setup.configureplex": "Konfiguriraj Plex",
|
||||
"components.Setup.configureservices": "Konfiguriraj usluge",
|
||||
"components.StatusChecker.reloadApp": "Ponovo pokreni {applicationTitle}",
|
||||
"components.StatusChecker.restartRequired": "Zahtijeva ponovno pokretanje poslužitelja",
|
||||
"components.TitleCard.tvdbid": "TVDB ID",
|
||||
"components.TitleCard.cleardata": "Izbriši podatke",
|
||||
"components.TitleCard.mediaerror": "{mediaType} nije pronađen",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Dogodila se greška prilikom preuzimanja podataka sezona.",
|
||||
"components.TvDetails.anime": "Anime",
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} min",
|
||||
"components.TvDetails.firstAirDate": "Datum prvog emitiranja",
|
||||
"components.TvDetails.manageseries": "Upravljaj serijama",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {mreža} few {mreže} other {mreža}}",
|
||||
"components.TvDetails.originallanguage": "Izvorni jezik",
|
||||
"components.TvDetails.originaltitle": "Izvorni naslov",
|
||||
"components.TvDetails.overview": "Pregled",
|
||||
"components.TvDetails.overviewunavailable": "Pregled nedostupan.",
|
||||
"components.TvDetails.play4konplex": "Reproduciraj u 4K na Plexu",
|
||||
"components.TvDetails.playonplex": "Reproduciraj na Plexu",
|
||||
"components.TvDetails.productioncountries": "{countryCount, plural, one {zemlja produkcije} few {zemlje produkcije} other {zemalja produkcije}}",
|
||||
"components.TvDetails.recommendations": "Preporuke",
|
||||
"components.TvDetails.reportissue": "Prijavi problem",
|
||||
"components.TvDetails.rtcriticsscore": "Tomatometer na Rotten Tomatoes",
|
||||
"components.TvDetails.showtype": "Vrste serija",
|
||||
"components.TvDetails.similar": "Slične serije",
|
||||
"components.TvDetails.status4k": "4K {status}",
|
||||
"components.TvDetails.streamingproviders": "Trenutačno se prikazuje na",
|
||||
"components.TvDetails.tmdbuserscore": "TMDB ocjena korisnika",
|
||||
"components.TvDetails.viewfullcrew": "Prikaz svih suradnika",
|
||||
"components.TvDetails.watchtrailer": "Gledaj najavu",
|
||||
"components.UserList.autogeneratepassword": "Automatski generiraj lozinku",
|
||||
"components.UserList.autogeneratepasswordTip": "Pošalji korisniku e-mail s lozinkom koju je generirao poslužitelj",
|
||||
"components.UserList.bulkedit": "Grupno uređivanje",
|
||||
"components.UserList.accounttype": "Vrsta",
|
||||
"components.UserList.admin": "Administrator",
|
||||
"components.UserList.create": "Stvori",
|
||||
"components.UserList.created": "Pridruživanje",
|
||||
"components.UserList.deleteconfirm": "Stvarno želiš izbrisati ovog korisnika? Svi podaci njegovih zahtjeva će se trajno ukloniti.",
|
||||
"components.UserList.usercreatedsuccess": "Korisnik je uspješno stvoren!",
|
||||
"components.UserList.userdeleted": "Korisnik je uspješno izbrisan!",
|
||||
"components.UserList.userfail": "Dogodila se greška prilikom spremanja korisničkih dozvola.",
|
||||
"components.UserList.userlist": "Popis korisnika",
|
||||
"components.UserList.users": "Korisnici",
|
||||
"components.UserList.userssaved": "Korisničke dozvole su uspješno spremljene!",
|
||||
"components.UserList.validationEmail": "Moraš zadati valjanju e‑mail adresu",
|
||||
"components.UserList.validationpasswordminchars": "Lozinka je prekratka; mora sadržati barem 8 znakova",
|
||||
"components.UserProfile.ProfileHeader.profile": "Prikaz profila",
|
||||
"components.UserProfile.ProfileHeader.settings": "Uredi postavke",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Lokalni korisnik",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Ograničenje zahtjeva za filmove",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Vlasnik",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatski zatraži serije na tvom <PlexWatchlistSupportLink>Plex popisu gledanja</PlexWatchlistSupportLink>",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Otkrij regiju",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Dogodila se greška prilikom spremanja postavki.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Postavke su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Korisnik",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Moraš navesti valjani Discord korisnički ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "ID korisnika",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "<FindDiscordIdLink>Višeznamenkasti ID broj</FindDiscordIdLink> povezan s tvojim korisničkim računom",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Neuspjelo spremanje Discord postavki obavijesti.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessTokenTip": "Stvori token iz tvojih <PushbulletSettingsLink>postavki računa</PushbulletSettingsLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingsfailed": "Neuspjelo spremanje Pushbullet postavki obavijesti.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKey": "Ključ korisnika ili grupe",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "Tvoj <UsersGroupsLink>identifikator korisnika ili grupe</UsersGroupsLink> s 30 znakova",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Neuspjelo spremanje Pushover postavki obavijesti.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Pushover postavke obavijesti su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingssaved": "Telegram postavke obavijesti su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "Moraš navesti valjani korisnički ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Moraš navesti valjani javni ključ stvoren PGP-om",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushbulletAccessToken": "Moraš navesti valjani token za pristup",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Moraš navesti valjani token programa",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverUserKey": "Moraš navesti valjani ključ korisnika ili grupe",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingsfailed": "Neuspjelo spremanje Web push postavki obavijesti.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingssaved": "Web push postavke obavijesti su uspješno spremljene!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Potvrdi lozinku",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.newpassword": "Nova lozinka",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "Moraš potvrditi novu lozinku",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPasswordSame": "Lozinke se moraju poklapati",
|
||||
"components.UserProfile.UserSettings.UserPermissions.permissions": "Dozvole",
|
||||
"components.UserProfile.UserSettings.menuChangePass": "Lozinka",
|
||||
"components.UserProfile.recentrequests": "Nedavni zahtjevi",
|
||||
"components.UserProfile.recentlywatched": "Nedavno gledano",
|
||||
"components.UserProfile.requestsperdays": "{limit} preostalo",
|
||||
"i18n.advanced": "Napredno",
|
||||
"i18n.all": "Sve",
|
||||
"i18n.approve": "Odobri",
|
||||
"i18n.approved": "Odobreno",
|
||||
"i18n.areyousure": "Sigurno?",
|
||||
"i18n.cancel": "Odustani",
|
||||
"i18n.canceling": "Prekidanje …",
|
||||
"i18n.close": "Zatvori",
|
||||
"i18n.decline": "Odbij",
|
||||
"i18n.declined": "Odbijeno",
|
||||
"i18n.delete": "Izbriši",
|
||||
"i18n.deleting": "Brisanje …",
|
||||
"i18n.failed": "Neuspjelo",
|
||||
"i18n.import": "Uvezi",
|
||||
"i18n.importing": "Uvoz …",
|
||||
"i18n.loading": "Učitavanje …",
|
||||
"i18n.movie": "Film",
|
||||
"i18n.movies": "Filmovi",
|
||||
"i18n.next": "Dalje",
|
||||
"i18n.noresults": "Nema rezultata.",
|
||||
"i18n.notrequested": "Nije zatraženo",
|
||||
"i18n.open": "Otvori",
|
||||
"i18n.partiallyavailable": "Djelomično dostupno",
|
||||
"i18n.restartRequired": "Zahtijeva ponovno pokretanje",
|
||||
"i18n.retry": "Pokušaj ponovo",
|
||||
"i18n.status": "Stanje",
|
||||
"pages.oops": "Ups",
|
||||
"components.Settings.advancedTooltip": "Neispravno konfiguriranje ove postavke može pokvariti funkcionalnost",
|
||||
"components.Settings.noDefaultNon4kServer": "Ako imate samo jedan {serverType} poslužitelj za ne-4K i za 4K sadržaj (ili ako preuzimaš samo 4K sadržaj), tvoj {serverType} poslužitelj <strong>NE </strong> bi trebao biti određen kao 4K poslužitelj.",
|
||||
"components.PermissionEdit.requestMoviesDescription": "Dozvoli automatsko slanje zahtjeva za filmove koje nisu u 4K rezoluciji.",
|
||||
"components.PermissionEdit.autorequestDescription": "Dozvoli automatsko slanje zahtjeva za medije koji nisu u 4K rezoluciji putem Plex popisa gledanja.",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Dozvoli automatsko slanje zahtjeva za filmove koji nisu u 4K rezoluciji putem Plex popisa gledanja.",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Dozvoli automatsko slanje zahtjeva za serije koje nisu u 4K rezoluciji putem Plex popisa gledanja.",
|
||||
"components.PermissionEdit.requestDescription": "Dozvoli automatsko slanje zahtjeva za medije koje nisu u 4K rezoluciji.",
|
||||
"components.PermissionEdit.requestTvDescription": "Dozvoli automatsko slanje zahtjeva za serije koje nisu u 4K rezoluciji.",
|
||||
"components.PermissionEdit.viewrecentDescription": "Dozvoli prikaz za pregled popisa nedavno dodanih medija.",
|
||||
"components.PermissionEdit.createissuesDescription": "Dozvoli prijavljivanje problema s medijima.",
|
||||
"components.PermissionEdit.manageissuesDescription": "Dozvoli upravljanje problemima s medijima.",
|
||||
"components.PermissionEdit.request4kDescription": "Dozvoli slanje zahtjeva za medije u 4K rezoluciji.",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "Dozvoli slanje zahtjeva za filmove u 4K rezoluciji.",
|
||||
"components.PermissionEdit.request4kTvDescription": "Dozvoli slanje zahtjeva za serijama u 4K rezoluciji.",
|
||||
"components.PermissionEdit.usersDescription": "Dozvoli upravljanje korisnicima. Korisnici s ovom dozvolom ne mogu mijenjati korisnike s administratorskom privilegijom ili dozvoliti administratorske privilegije.",
|
||||
"components.PermissionEdit.viewissuesDescription": "Dozvoli prikaz problema s medijima koje su prijavili drugi korisnici.",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Dozvoli prikaz medijskih zahtjeva koje su prijavili drugi korisnici.",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Dozvoli prikaz Plex popisa gledanja drugih korisnika.",
|
||||
"components.Settings.notrunning": "Ne pokreće se",
|
||||
"components.Settings.serverRemote": "udaljeni",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Sažetak tvojih ograničenja zahtjeva možeš vidjeti na tvojoj <ProfileLink>stranici profila</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Sažetak ograničenja zahtjeva korisničkih zahtjeva možeš vidjeti na njihovoj <ProfileLink>stranici profila</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Nema dovoljno preostalih zahtjeva za sezonama",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "Nismo uspjeli pronaći seriju koja odgovara ovoj seriji.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nismo uspjeli automatski naći odgovarajuću seriju. Dolje odaberi odgovarajuću seriju.",
|
||||
"components.RequestModal.requestadmin": "Ovaj će se zahtjev automatski prihvatiti.",
|
||||
"components.ResetPassword.emailresetlink": "E-mail poveznica za obnavljanje lozinke",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Tvoj korisničke ili na osnovi uređaja <LunaSeaLink>webhook URL obavijesti</LunaSeaLink>",
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Za primanje web push obavijesti, Jellyseerr se mora posluživati putem HTTPS-a.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Pomoć za varijablu predloška",
|
||||
"components.Settings.Notifications.chatIdTip": "Započni chat s tvojim botom, dodaj <GetIdBotLink>@get_id_bot</GetIdBotLink> i zadaj naredbu <code>/my_id</code>",
|
||||
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr pretraživanje",
|
||||
"components.Settings.SettingsJobsCache.sonarr-scan": "Sonarr pretraživanje",
|
||||
"components.Settings.SonarrModal.syncEnabled": "Aktiviraj pretraživanje",
|
||||
"components.Settings.cancelscan": "Prekini pretraživanje",
|
||||
"components.Settings.manualscanDescription": "Obično će se to pokrenuti samo jednom svaka 24 sata. Jellyseerr će agresivnije provjeriti tvoj Plex poslužitelj za nedavno dodanim. Ako po prvi put konfiguriraš Plex, preporučuje se jednom ručno pretražiti cijelu biblioteku!",
|
||||
"components.Settings.plexlibrariesDescription": "Biblioteke u kojima će Jellyseerr tražiti naslove. Postavi i spremi tvoje postavke Plex veze, a zatim pritisni gumb ispod ako je popis biblioteka prazan.",
|
||||
"components.Settings.startscan": "Pokreni pretraživanje",
|
||||
"components.Setup.scanbackground": "Pretraživanje se pokreće u pozadini. U međuvremenu možeš nastaviti s postupkom postavljanja.",
|
||||
"components.PermissionEdit.managerequestsDescription": "Dozvoli upravljanje zahtjevima za medijima. Svi zahtjevi korisnika s ovom dozvolom će se automatski odobriti.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "JSON sadržaj",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Pretraživanje cijele Plex biblioteke",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequests": "Smiješ zatražiti <strong>{limit}</strong> {type} svakih <strong>{days}</strong> dana.",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "Ovaj korisnik smije zatražiti <strong>{limit}</strong> {type} svakih <strong>{days}</strong> dana.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON sadržaj je uspješno resetiran!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "Moraš zadati valjani JSON sadržaj",
|
||||
"components.Settings.RadarrModal.syncEnabled": "Aktiviraj pretraživanje",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Pretraživanje nedavno dodanih u Plex biblioteku",
|
||||
"components.TvDetails.Season.noepisodes": "Popis epizoda nije dostupan.",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Brisanje predmemorije slika",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Predmemorija slika",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Ukupna veličina predmemorije",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Slike spremljene u predmemoriju",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Kad je u postavkama aktivirano, Jellyseerr će služiti kao posrednik i predmemorirati slike iz unaprijed konfiguriranih vanjskih izvora. Predmemorirane slike spremaju se u mapu konfiguracije. Datoteke možeš pronaći u <code>{appDataPath}/cache/images</code>.",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Sezona {seasonNumber} Episoda {episodeNumber}",
|
||||
"components.RequestCard.unknowntitle": "Nepoznat naslov",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Nepoznat naslov",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serije",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Nedavno dodano",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filmovi"
|
||||
}
|
||||
|
||||
@@ -447,7 +447,7 @@
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Plex \"nemrégiben hozzáadott\" beolvasása",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Plex összes könyvtárának beolvasása",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Jellyfin összes könyvtárának beolvasása",
|
||||
"components.Settings.SettingsJobsCache.jelly-recently-added-scan": "Jellyfin \"nemrégiben hozzáadott\" beolvasása",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Jellyfin \"nemrégiben hozzáadott\" beolvasása",
|
||||
"components.Settings.SettingsJobsCache.nextexecution": "Következő végrehajtás",
|
||||
"components.Settings.SettingsJobsCache.jobtype": "Típus",
|
||||
"components.Settings.SettingsJobsCache.jobstarted": "{jobname} elindult.",
|
||||
@@ -695,7 +695,7 @@
|
||||
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
|
||||
"components.RequestList.RequestItem.requesteddate": "Kérve",
|
||||
"components.RequestList.RequestItem.requested": "Kérve",
|
||||
"components.RequestList.RequestItem.modifieduserdate": "{date} {user} álltal",
|
||||
"components.RequestList.RequestItem.modifieduserdate": "{date} {user} által",
|
||||
"components.RequestList.RequestItem.modified": "Módosított",
|
||||
"components.RequestList.RequestItem.mediaerror": "A kéréshez társított címe már nem érhető el.",
|
||||
"components.RequestList.RequestItem.editrequest": "Kérés szerkesztése",
|
||||
|
||||
@@ -423,7 +423,7 @@
|
||||
"components.ResetPassword.email": "Indirizzo e-mail",
|
||||
"components.ResetPassword.confirmpassword": "Conferma la password",
|
||||
"components.RequestModal.requesterror": "Qualcosa è andato storto durante l'invio della richiesta.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Non siamo riusciti a soddisfare automaticamente la tua richiesta. Seleziona la corrispondenza corretta dall'elenco seguente.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Non siamo riusciti a trovare una corrispondenza per questa serie. Seleziona la corrispondenza corretta dall'elenco seguente.",
|
||||
"components.RequestModal.AdvancedRequester.requestas": "Richiedi come",
|
||||
"components.RequestModal.AdvancedRequester.languageprofile": "Profilo lingua",
|
||||
"components.PlexLoginButton.signinwithplex": "Accedi",
|
||||
@@ -550,7 +550,7 @@
|
||||
"components.Settings.SettingsJobsCache.download-sync": "Scarica sincronizzazione",
|
||||
"components.Settings.Notifications.botUsername": "Username del Bot",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "Serie di {genre}",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "Film {studio}",
|
||||
"components.Discover.DiscoverStudio.studioMovies": "Film di {studio}",
|
||||
"components.Setup.scanbackground": "La scansione verrà eseguita in background. Puoi continuare con l'installazione nel frattempo.",
|
||||
"components.Settings.scanning": "Sincronizzazione…",
|
||||
"components.Settings.scan": "Sincronizza Librerie",
|
||||
@@ -718,10 +718,10 @@
|
||||
"components.Settings.Notifications.validationPgpPassword": "È necessario fornire una password PGP",
|
||||
"components.Settings.Notifications.botUsernameTip": "Consenti inoltre agli utenti di avviare una chat con il tuo bot e configurare le proprie notifiche personali",
|
||||
"components.RequestModal.pendingapproval": "La richiesta è in attesa di approvazione.",
|
||||
"components.RequestList.RequestItem.mediaerror": "Il titolo associato a questa richiesta non è più disponibile.",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} non trovato",
|
||||
"components.RequestList.RequestItem.deleterequest": "Elimina Richiesta",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Annulla Richiesta",
|
||||
"components.RequestCard.mediaerror": "Il titolo associato a questa richiesta non è più disponibile.",
|
||||
"components.RequestCard.mediaerror": "{mediaType} non trovato",
|
||||
"components.RequestCard.deleterequest": "Elimina Richiesta",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Tipi di Notifica",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Beta",
|
||||
@@ -945,7 +945,7 @@
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "Ottieni una notifica quando altri utenti segnalano dei problemi.",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Ricevi una notifica quando le tue segnalazioni vengono risolte.",
|
||||
"components.PermissionEdit.viewissuesDescription": "Concedi l'autorizzazione per visualizzare le segnalazioni sui media effettuati da altri utenti.",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Frequenza",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Nuova frequenza",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Ogni {jobScheduleMinutes, plural, one {minuto} other {{jobScheduleMinutes} minuti}}",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Job modificato correttamente!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Impossibile salvare le impostazioni Pushover.",
|
||||
@@ -1039,5 +1039,131 @@
|
||||
"components.MovieDetails.managemovie": "Gestisci Film",
|
||||
"components.MovieDetails.physicalrelease": "Uscita versione fisica",
|
||||
"components.MovieDetails.theatricalrelease": "Uscita nelle sale",
|
||||
"components.MovieDetails.reportissue": "Segnala un problema"
|
||||
"components.MovieDetails.reportissue": "Segnala un problema",
|
||||
"components.Discover.CreateSlider.addSlider": "Aggiungi Slider",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Cerca parole chiave…",
|
||||
"components.Discover.CreateSlider.searchGenres": "Cerca generi…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Cerca studi…",
|
||||
"components.Discover.CreateSlider.nooptions": "Nessun risultato.",
|
||||
"components.AirDateBadge.airedrelative": "Trasmesso {relativeTime}",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Nome Slider",
|
||||
"components.Discover.CreateSlider.starttyping": "Inizia a scrivere per cercare.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Devi inserire un valore di dati.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Devi inserire un titolo.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Film",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Impossibile eliminare slider.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Slider eliminato correttamente.",
|
||||
"components.Discover.createnewslider": "Crea nuovo Slider",
|
||||
"components.AirDateBadge.airsrelative": "In onda {relativeTime}",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# filtro attivo} other {# filtri attivi}}",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Film",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Popolarità Crescente",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Data di Uscita Crescente",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Popolarità Decrescente",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Data di Uscita Decrescente",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Titolo (A-Z) Crescente",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Titolo (Z-A) Decrescente",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "Voto TMDB Crescente",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "Voto TMDB Decrescente",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serie",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Data messa in onda Crescente",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Data messa in onda Decrescente",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Popolarità Crescente",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Popolarità Decrescente",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Crea Slider Personalizzato",
|
||||
"components.Discover.CreateSlider.addfail": "Impossibile creare un nuovo slider.",
|
||||
"components.Discover.CreateSlider.editSlider": "Modifica Slider",
|
||||
"components.Discover.CreateSlider.editfail": "Impossibile modificare lo slider.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Modifica slider e salva le impostazioni di ricerca personalizzate.",
|
||||
"components.Discover.CreateSlider.needresults": "Devi avere almeno 1 risultato.",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Fornire un TMDB Keyword ID",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Fornire un TMDB Genre ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Fornire un TMDB Network ID",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Fornire una query di ricerca",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Fornire un TMDB Studio ID",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Attiva/disattiva visibilità",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Rimuovi",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Aggiunti di recente",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {#filtro attivo} other {# filtri attivi}}",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titolo (A-Z) Crescente",
|
||||
"components.Discover.FilterSlideover.voteCount": "Numero di voti tra {minValue} e {maxValue}",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB Film Parola chiave",
|
||||
"components.Discover.tmdbsearch": "TMDB Cerca",
|
||||
"components.Discover.tvgenres": "Serie Generi",
|
||||
"components.Discover.tmdbmoviestreamingservices": "TMDB Film Servizi di streaming",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Richieste Film",
|
||||
"components.Layout.Sidebar.browsetv": "Serie",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Richieste Serie",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "I media aggiunti alla tua <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> appariranno qui.",
|
||||
"components.Discover.tmdbmoviegenre": "TMDB Film Genere",
|
||||
"components.Discover.tmdbtvgenre": "TMDB Serie Genere",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB Serie Parola chiave",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB Punteggio Decrescente",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Resetta Filtri Attivi",
|
||||
"components.Discover.FilterSlideover.filters": "Filtri",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Data messa in onda",
|
||||
"components.Discover.FilterSlideover.from": "Da",
|
||||
"components.Discover.FilterSlideover.genres": "Generi",
|
||||
"components.Discover.FilterSlideover.keywords": "Parole chiave",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Lingua Originale",
|
||||
"components.Discover.FilterSlideover.ratingText": "Punteggi tra {minValue} e {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Data di rilascio",
|
||||
"components.Discover.FilterSlideover.runtime": "Durata",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} minuti durata",
|
||||
"components.Discover.FilterSlideover.to": "A",
|
||||
"components.Discover.customizediscover": "Personalizza Esplora",
|
||||
"components.Layout.UserDropdown.requests": "Richieste",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Stagione {seasonNumber} Episodio {episodeNumber}",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "La tua Plex Watchlist",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titolo (Z-A) Decrescente",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB Punteggio Crescente",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Servizi di streaming",
|
||||
"components.Discover.emptywatchlist": "I media aggiunti alla tua <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> appariranno qui.",
|
||||
"components.Layout.Sidebar.browsemovies": "Film",
|
||||
"components.Selector.showmore": "Mostra di più",
|
||||
"components.Selector.starttyping": "Inizia a digitare per cercare.",
|
||||
"components.Settings.SettingsMain.apikey": "Chiave API",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Titolo applicazione",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Abilita protezione CSRF",
|
||||
"components.Settings.SettingsMain.generalsettings": "Impostazioni generali",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Nascondi media disponibili",
|
||||
"components.Settings.SettingsMain.locale": "Lingua interfaccia",
|
||||
"components.Settings.SettingsMain.originallanguage": "Lingua ricerca",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtra contenuti per lingua originale",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nuova chiave API generata con successo!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Qualcosa è andato storto durante il salvataggio delle impostazioni.",
|
||||
"components.StatusBadge.managemedia": "Gestisci {mediaType}",
|
||||
"components.StatusBadge.playonplex": "Riproduci su Plex",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} aggiornato",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Qualcosa è andato storto durante il recupero dei dati della stagione.",
|
||||
"components.TvDetails.reportissue": "Segnala un problema",
|
||||
"components.TvDetails.seasonnumber": "Stagione {seasonNumber}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Richiedi automaticamente i film presenti nella tua <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>",
|
||||
"i18n.collection": "Collezione",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Sincronizza Plex Watchlist",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Qualcosa è andato storto durante la generazione di una nuova chiave API.",
|
||||
"components.TvDetails.manageseries": "Gestisci Serie",
|
||||
"components.Settings.SettingsLogs.viewdetails": "Mostra Dettagli",
|
||||
"components.Selector.searchKeywords": "Ricerca parole chiave…",
|
||||
"components.Selector.searchGenres": "Seleziona generi…",
|
||||
"components.Selector.showless": "Mostra meno",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL applicazione",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Devi fornire un titolo dell'applicazione",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Devi fornire un URL valido",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr deve essere riavviato per rendere effettive le modifiche",
|
||||
"components.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.UserProfile.emptywatchlist": "I media aggiunti alla tua <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> appariranno qui.",
|
||||
"components.TvDetails.status4k": "4K {status}",
|
||||
"i18n.restartRequired": "Riavvio necessario",
|
||||
"components.Selector.nooptions": "Nessun risultato.",
|
||||
"components.StatusChecker.appUpdatedDescription": "Clicca il bottone sottostante per ricaricare l'applicazione.",
|
||||
"components.StatusChecker.reloadApp": "Ricarica {applicationTitle}",
|
||||
"components.StatusChecker.restartRequired": "Riavvio del server necessario",
|
||||
"components.TitleCard.mediaerror": "{mediaType} non trovato",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Impostazioni salvate con successo!",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
"components.TvDetails.seasonstitle": "Stagioni",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Richiedi automaticamente le serie presenti nella tua <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>"
|
||||
}
|
||||
|
||||
1236
src/i18n/locale/ko.json
Normal file
1236
src/i18n/locale/ko.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -375,7 +375,7 @@
|
||||
"components.RequestButton.decline4krequests": "Atmesti {requestCount, plural, one {4K rezervaciją} other {{requestCount} 4K rezervacijas}}",
|
||||
"components.RequestButton.declinerequests": "Atmesti {requestCount, plural, one {rezervaciją} other {{requestCount} rezervacijas}}",
|
||||
"components.RequestButton.viewrequest4k": "Peržiūrėti 4K rezervacijas",
|
||||
"components.RequestCard.mediaerror": "Susijusio pavadinimo rezervacija nebeprieinama.",
|
||||
"components.RequestCard.mediaerror": "{mediaType} Nerasta",
|
||||
"components.RequestList.RequestItem.mediaerror": "Susijusio pavadinimo nebeprieinama rezervacijai.",
|
||||
"components.RequestModal.AdvancedRequester.animenote": "* Šis serialas yra anime.",
|
||||
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
|
||||
@@ -534,5 +534,199 @@
|
||||
"components.Settings.SonarrModal.create4ksonarr": "Pridėti naują 4K Sonarr serverį",
|
||||
"components.Settings.SonarrModal.qualityprofile": "Kokybės profilis",
|
||||
"components.Settings.SonarrModal.seasonfolders": "Sezono aplankai",
|
||||
"components.Settings.SonarrModal.syncEnabled": "Įjungti nuskaitymą"
|
||||
"components.Settings.SonarrModal.syncEnabled": "Įjungti nuskaitymą",
|
||||
"components.Discover.CreateSlider.nooptions": "Nėra rezultatų.",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filmai",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serialai",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Nuo mažiausiai populiarių",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Nuo seniausiai išleistų",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Nuo populiariausių",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Šalinti",
|
||||
"components.StatusBadge.openinarr": "Atverti {arr}",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Pavadinimus (A-Z) pagal abėcėlę",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "Nuo aukščiausio TMDB reitingo",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# aktyvus filtras} other {# aktyvūs filtrai}}",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Pavadinimus (Z-A) nuo abėcėlės galo",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "Nuo žemiausio TMDB reitingo",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# aktyvus filtras} other {# aktyvūs filtrai}}",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# aktyvus filtras} other {# aktyvūs filtrai}}",
|
||||
"components.Discover.CreateSlider.searchGenres": "Ieškoti žanrų…",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Nuo naujausių",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Nuo seniausiai išleistų",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "Nuo aukščiausio TMDB reitingo",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Transliavimo paslaugos",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Nuo naujausių",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Nuo mažiausiai populiarių",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Nuo populiariausių",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Pavadinimus (A-Z) pagal abėcėlę",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Pavadinimus (Z-A) nuo abėcėlės galo",
|
||||
"components.Discover.FilterSlideover.genres": "Žanrai",
|
||||
"components.Discover.FilterSlideover.keywords": "Raktažodžiai",
|
||||
"components.Discover.FilterSlideover.to": "iki",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "Nuo žemiausio TMDB reitingo",
|
||||
"components.Discover.FilterSlideover.from": "Nuo",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Parodymo data",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Pašalinti aktyvius filtrus",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Originali kalba",
|
||||
"components.Discover.FilterSlideover.ratingText": "Reitingas tarp {minValue} ir {maxValue}",
|
||||
"components.Discover.moviegenres": "Filmų žanrai",
|
||||
"components.Discover.FilterSlideover.filters": "Filtrai",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Pirmo parodymo data",
|
||||
"components.Discover.FilterSlideover.runtime": "Trukmė",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} minučių trukmė",
|
||||
"components.Discover.FilterSlideover.studio": "Studija",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "TMDB naudotojų balai",
|
||||
"components.Discover.networks": "Tinklai",
|
||||
"components.PermissionEdit.autoapproveSeries": "Automatiškai patvirtinti serialą",
|
||||
"components.PermissionEdit.createissuesDescription": "Suteikite leidimą pranešti apie medijos problemas.",
|
||||
"components.RequestBlock.decline": "Atmesti rezervacijas",
|
||||
"components.PermissionEdit.autoapproveMovies": "Automatiškai patvirtinti 4K filmus",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.editrequest": "Redaguoti rezervaciją",
|
||||
"components.RequestCard.tvdbid": "TVDB ID",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
"components.RequestBlock.edit": "Redaguoti rezervaciją",
|
||||
"components.RequestBlock.lastmodifiedby": "Paskutinį kartą pakeitė",
|
||||
"components.RequestBlock.requestedby": "Rezervuota",
|
||||
"components.RequestCard.declinerequest": "Atmesti rezervaciją",
|
||||
"components.RequestBlock.delete": "Ištrinti rezervaciją",
|
||||
"components.RequestCard.cancelrequest": "Atšaukti rezervaciją",
|
||||
"components.RequestBlock.requestdate": "Rezervacijos data",
|
||||
"components.RequestCard.approverequest": "Tvirtinti rezervaciją",
|
||||
"components.TvDetails.tmdbuserscore": "TMDB naudotojų balai",
|
||||
"components.PermissionEdit.viewrecentDescription": "Suteikite leidimą peržiūrėti neseniai pridėtos medijos sąrašą.",
|
||||
"components.TitleCard.mediaerror": "{mediaType} Nerasta",
|
||||
"components.TitleCard.tmdbid": "TMDB ID",
|
||||
"components.TitleCard.tvdbid": "TVDB ID",
|
||||
"components.StatusBadge.playonplex": "Groti per Plex",
|
||||
"components.TitleCard.cleardata": "Išvalyti duomenis",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} filmai",
|
||||
"components.Discover.tvgenres": "Serialų žanrai",
|
||||
"components.PermissionEdit.viewrecent": "Peržiūrėti neseniai pridėtus",
|
||||
"components.RequestList.RequestItem.tvdbid": "TVDB ID",
|
||||
"components.RequestBlock.approve": "Tvirtinti rezervacijas",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Ieškoti raktažodžių…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Ieškoti studijų…",
|
||||
"components.Discover.CreateSlider.starttyping": "Pradėjus rašyti bus ieškoma.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Turite pateikti duomenų.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Turite pateikti pavadinimą.",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} serialai",
|
||||
"components.Discover.resettodefault": "Atstatyti į numatytuosius",
|
||||
"components.Discover.stopediting": "Nustoti redaguoti",
|
||||
"components.Discover.studios": "Studijos",
|
||||
"components.Discover.tmdbmoviegenre": "TMDB filmo žanras",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB filmo raktažodis",
|
||||
"components.Discover.tmdbnetwork": "TMDB tinklas",
|
||||
"components.Discover.tmdbsearch": "TMDB paieška",
|
||||
"components.Discover.tmdbstudio": "TMDB studijos",
|
||||
"components.Discover.tmdbtvgenre": "TMDB serialo žanras",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB serialo raktažodis",
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "Suteikite automatinį patvirtinimą ne 4K filmų rezervacijoms.",
|
||||
"components.RequestModal.requestcollection4ktitle": "4k rezervacijų kolekcija",
|
||||
"components.RequestModal.requestcollectiontitle": "Rezervacijų kolekcija",
|
||||
"components.RequestModal.requestmovietitle": "Rezervuoti filmą",
|
||||
"components.RequestModal.requestseries4ktitle": "Rezervuoti serialą 4K formatu",
|
||||
"components.RequestModal.requestseriestitle": "Rezervuoti serialą",
|
||||
"components.StatusBadge.managemedia": "Valdyti {mediaType}",
|
||||
"components.TvDetails.rtaudiencescore": "\"Rotten Tomatoes\" žiūrovų balai",
|
||||
"components.Settings.SettingsJobsCache.command": "Komanda",
|
||||
"components.PermissionEdit.autoapprove4kSeries": "Automatiškai patvirtinti 4K serialų rezervacijas",
|
||||
"components.Settings.plex": "Plex",
|
||||
"components.Setup.tip": "Patarimas",
|
||||
"components.Settings.SettingsLogs.resumeLogs": "Tęsti",
|
||||
"components.Settings.address": "Adresas",
|
||||
"components.StatusBadge.status": "{status}",
|
||||
"components.Settings.SettingsMain.general": "Bendri",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Jūsų Plex grojaraštis",
|
||||
"components.Settings.menuUsers": "Vartotojai",
|
||||
"components.Settings.SettingsLogs.message": "Žinutė",
|
||||
"components.UserList.owner": "Savininkas",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex grojaraštis",
|
||||
"components.MovieDetails.reportissue": "Pranešti apie problemą",
|
||||
"components.PermissionEdit.autorequest": "Auto rezervacija",
|
||||
"components.Settings.SettingsJobsCache.jobtype": "Tipas",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Rolė",
|
||||
"components.MovieDetails.managemovie": "Tvarkyti filmą",
|
||||
"components.UserList.user": "Vartotojas",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Savininkas",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Slaptažodis",
|
||||
"components.Discover.tmdbmoviestreamingservices": "TMDB filmų transliavimo paslaugos",
|
||||
"components.Discover.tmdbtvstreamingservices": "TMDB TV transliacijos paslaugos",
|
||||
"components.Layout.Sidebar.browsemovies": "Filmai",
|
||||
"components.Layout.Sidebar.browsetv": "Serialai",
|
||||
"components.MovieDetails.digitalrelease": "Skaitmeninė premjera",
|
||||
"components.MovieDetails.physicalrelease": "Fizinė premjera",
|
||||
"components.MovieDetails.rtaudiencescore": "\"Rotten Tomatoes\" žiūrovų balai",
|
||||
"components.MovieDetails.rtcriticsscore": "\"Rotten Tomatoes\" Tomatometras",
|
||||
"components.MovieDetails.theatricalrelease": "Teatrinė premjera",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "Suteikite automatinį patvirtinimą 4K filmų rezervacijoms.",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "Suteikite automatinį patvirtinimą 4K serialų rezervacijoms.",
|
||||
"components.PermissionEdit.request4kTvDescription": "Sutiekti teisę prašyti 4K filmų rezervacijų.",
|
||||
"components.Settings.Notifications.encryptionNone": "Joks",
|
||||
"components.Settings.RadarrModal.tags": "Žymės",
|
||||
"components.Settings.SettingsJobsCache.jobs": "Darbai",
|
||||
"components.Settings.default": "Numatytasis",
|
||||
"components.Settings.mediaTypeMovie": "filmas",
|
||||
"components.Settings.mediaTypeSeries": "serialas",
|
||||
"components.Settings.menuAbout": "Apie",
|
||||
"components.Settings.menuGeneralSettings": "Bendri",
|
||||
"components.Settings.menuPlexSettings": "Plex",
|
||||
"components.Settings.notifications": "Pranešimai",
|
||||
"components.Settings.scanning": "Sinchronizuojama…",
|
||||
"components.Setup.continue": "Tęsti",
|
||||
"components.Setup.finishing": "Baigiama…",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.TvDetails.seasonstitle": "Sezonai",
|
||||
"components.UserList.create": "Sukurti",
|
||||
"components.UserList.password": "Slaptažodis",
|
||||
"components.UserList.role": "Rolė",
|
||||
"components.UserList.totalrequests": "Rezervacijos",
|
||||
"components.UserList.users": "Vartotojai",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.admin": "Administratorius",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Vartotojas",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "El. paštas",
|
||||
"components.UserProfile.UserSettings.menuChangePass": "Slaptažodis",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Bendri",
|
||||
"components.AirDateBadge.airsrelative": "Premjera {relativeTime}",
|
||||
"components.Discover.plexwatchlist": "Jūsų Plex grojaraštis",
|
||||
"components.MovieDetails.tmdbuserscore": "TMDB naudotojų balai",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Nepavyko ištrinti rėžio.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Rėžis sėkmingai ištrintas.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Pakeisti matomumą",
|
||||
"components.Discover.createnewslider": "Sukurti naują rėžį",
|
||||
"components.Discover.customizediscover": "Koreguoti Naršymo skiltį",
|
||||
"components.Discover.updatesuccess": "Atnaujinti naršymo pritaikymo nustatymus.",
|
||||
"components.Settings.SettingsLogs.time": "Laiko žyma",
|
||||
"components.AirDateBadge.airedrelative": "Premjera {relativeTime}",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Rėžio pavadiniams",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Paskutiniai pridėti",
|
||||
"components.PermissionEdit.autoapproveDescription": "Suteikti automatinius patvirtinimus visoms ne 4K medijos rezervacijoms.",
|
||||
"components.UserList.creating": "Kuriama…",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: sezonas {seasonNumber} epizodas {episodeNumber}",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Filmų rezervacijos",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serijų rezervacijos",
|
||||
"components.Layout.UserDropdown.requests": "Rezervacijos",
|
||||
"components.Settings.email": "El. paštas",
|
||||
"components.Settings.is4k": "4K",
|
||||
"i18n.experimental": "Eksperimentinis",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Jūsų Plex grojaraštis",
|
||||
"components.Discover.CreateSlider.addSlider": "Pridėti slankiklį",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Sukurti rėžį",
|
||||
"components.Discover.CreateSlider.addfail": "Nepavyko sukurti naujo rėžio.",
|
||||
"components.Discover.CreateSlider.editSlider": "Redaguoti rėžį",
|
||||
"components.Discover.CreateSlider.editfail": "Nepavyko redaguoti rėžio.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Sukurti naują rėžį ir išsaugoti nestandartinius naršyko nustatymus.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Redaguotas rėžį ir išsaugoti nestandartinius naršymo nustatymus.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Pateikite TMDB žanro ID",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Pateikite TMDB raktažodžio ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Pateikite TMDB tinklo ID",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Pateikite paieškos užklausą",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Pateikite TMDB studijos ID",
|
||||
"components.Discover.CreateSlider.needresults": "Turite turėti bent 1 rezultatą.",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "TMDB vartotojų balsų skaičius",
|
||||
"components.Discover.resetfailed": "Kažkas nepavyko atstatant į pirminius atradimo korekcijų nustatymus.",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Suteikite automatinį patvirtinimą ne 4K serialų rezervacijoms.",
|
||||
"components.Discover.emptywatchlist": "Čia bus rodoma medija, pridėta prie <PlexWatchlistSupportLink> Plex grojaraščio</PlexWatchlistSupportLink>.",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Čia bus rodoma į <PlexWatchlistSupportLink> Plex grojaraštyje </PlexWatchlistSupportLink> pridėta medija.",
|
||||
"components.Discover.FilterSlideover.voteCount": "Balsų skaičius nuo {minValue} iki {maxValue}"
|
||||
}
|
||||
|
||||
@@ -3,12 +3,12 @@
|
||||
"components.Discover.discovertv": "Populaire series",
|
||||
"components.Discover.popularmovies": "Populaire films",
|
||||
"components.Discover.populartv": "Populaire series",
|
||||
"components.Discover.recentlyAdded": "Recent toegevoegd",
|
||||
"components.Discover.recentlyAdded": "Onlangs toegevoegd",
|
||||
"components.Discover.recentrequests": "Recente verzoeken",
|
||||
"components.Discover.trending": "Trending",
|
||||
"components.Discover.upcoming": "Verwachte films",
|
||||
"components.Discover.upcomingmovies": "Verwachte films",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Zoek films en series",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Films en series zoeken",
|
||||
"components.Layout.Sidebar.dashboard": "Ontdekken",
|
||||
"components.Layout.Sidebar.requests": "Verzoeken",
|
||||
"components.Layout.Sidebar.settings": "Instellingen",
|
||||
@@ -16,7 +16,7 @@
|
||||
"components.Layout.UserDropdown.signout": "Uitloggen",
|
||||
"components.MovieDetails.budget": "Budget",
|
||||
"components.MovieDetails.cast": "Cast",
|
||||
"components.MovieDetails.originallanguage": "Originele taal",
|
||||
"components.MovieDetails.originallanguage": "Oorspronkelijke taal",
|
||||
"components.MovieDetails.overview": "Overzicht",
|
||||
"components.MovieDetails.overviewunavailable": "Overzicht niet beschikbaar.",
|
||||
"components.MovieDetails.recommendations": "Aanbevelingen",
|
||||
@@ -114,7 +114,7 @@
|
||||
"components.Settings.hostname": "Hostnaam of IP-adres",
|
||||
"components.Settings.librariesRemaining": "Resterende bibliotheken: {count}",
|
||||
"components.Settings.manualscan": "Handmatige bibliotheekscan",
|
||||
"components.Settings.manualscanDescription": "Normaal wordt dit eens elke 24 uur uitgevoerd. Jellyseerr controleert de recent toegevoegde items van je Plex-server agressiever. Als je Plex voor de eerste keer configureert, is een eenmalige handmatige volledige bibliotheekscan aanbevolen!",
|
||||
"components.Settings.manualscanDescription": "Normaliter wordt dit eenmaal per 24 uur uitgevoerd. Jellyseerr zal de lijst met onlangs toegevoegde media op je Plex-server vaker controleren. Als dit de eerste keer is dat je Jellyseerr instelt, wordt aanbevolen eenmalig een handmatige, volledige bibliotheekscan uit te voeren!",
|
||||
"components.Settings.menuAbout": "Over",
|
||||
"components.Settings.menuGeneralSettings": "Algemeen",
|
||||
"components.Settings.menuJobs": "Taken en cache",
|
||||
@@ -127,7 +127,7 @@
|
||||
"components.Settings.plexlibraries": "Plex-bibliotheken",
|
||||
"components.Settings.plexlibrariesDescription": "De bibliotheken die Jellyseerr scant voor titels. Stel je Plex-verbinding in en sla ze op. Klik daarna op de onderstaande knop als er geen bibliotheken staan.",
|
||||
"components.Settings.plexsettings": "Plex-instellingen",
|
||||
"components.Settings.plexsettingsDescription": "Configureer de instellingen voor je Plex-server. Jellyseerr scant je Plex-bibliotheken om te zien welke content beschikbaar is.",
|
||||
"components.Settings.plexsettingsDescription": "Configureer de instellingen voor je Plex-server. Jellyseerr scant je Plex-bibliotheken om te zien welke inhoud beschikbaar is.",
|
||||
"components.Settings.port": "Poort",
|
||||
"components.Settings.radarrsettings": "Radarr-instellingen",
|
||||
"components.Settings.sonarrsettings": "Sonarr-instellingen",
|
||||
@@ -137,12 +137,12 @@
|
||||
"components.Setup.configureservices": "Diensten configureren",
|
||||
"components.Setup.continue": "Doorgaan",
|
||||
"components.Setup.finish": "Installatie voltooien",
|
||||
"components.Setup.finishing": "Bezig met voltooien…",
|
||||
"components.Setup.finishing": "Voltooien…",
|
||||
"components.Setup.loginwithplex": "Inloggen met Plex",
|
||||
"components.Setup.signinMessage": "Ga aan de slag door in te loggen met je Plex-account",
|
||||
"components.Setup.signinMessage": "Ga aan de slag door je aan te melden",
|
||||
"components.Setup.welcome": "Welkom bij Jellyseerr",
|
||||
"components.TvDetails.cast": "Cast",
|
||||
"components.TvDetails.originallanguage": "Originele taal",
|
||||
"components.TvDetails.originallanguage": "Oorspronkelijke taal",
|
||||
"components.TvDetails.overview": "Overzicht",
|
||||
"components.TvDetails.overviewunavailable": "Overzicht niet beschikbaar.",
|
||||
"components.TvDetails.recommendations": "Aanbevelingen",
|
||||
@@ -164,7 +164,7 @@
|
||||
"i18n.movies": "Films",
|
||||
"i18n.partiallyavailable": "Deels beschikbaar",
|
||||
"i18n.pending": "In behandeling",
|
||||
"i18n.processing": "Bezig met verwerken",
|
||||
"i18n.processing": "Verwerken",
|
||||
"i18n.tvshows": "Series",
|
||||
"i18n.unavailable": "Niet beschikbaar",
|
||||
"pages.oops": "Oeps",
|
||||
@@ -187,14 +187,14 @@
|
||||
"components.Setup.tip": "Tip",
|
||||
"components.Settings.SonarrModal.testFirstRootFolders": "Test verbinding om hoofdmappen te laden",
|
||||
"components.Settings.SonarrModal.testFirstQualityProfiles": "Test verbinding om kwaliteitsprofielen te laden",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "Bezig met laden van hoofdmappen…",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "Bezig met laden van kwaliteitsprofielen…",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "Hoofdmappen laden…",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "Kwaliteitsprofielen laden…",
|
||||
"components.Settings.SettingsAbout.gettingsupport": "Ondersteuning krijgen",
|
||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "Je moet een minimale beschikbaarheid selecteren",
|
||||
"components.Settings.RadarrModal.testFirstRootFolders": "Test verbinding om hoofdmappen te laden",
|
||||
"components.Settings.RadarrModal.testFirstQualityProfiles": "Test verbinding om kwaliteitsprofielen te laden",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Bezig met laden van hoofdmappen…",
|
||||
"components.Settings.RadarrModal.loadingprofiles": "Bezig met laden van kwaliteitsprofielen…",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Hoofdmappen laden…",
|
||||
"components.Settings.RadarrModal.loadingprofiles": "Kwaliteitsprofielen laden…",
|
||||
"components.Settings.SettingsAbout.Releases.releasedataMissing": "Versiegegevens zijn momenteel niet beschikbaar.",
|
||||
"components.Settings.SettingsAbout.Releases.latestversion": "Nieuwste",
|
||||
"components.Settings.SettingsAbout.Releases.currentversion": "Huidig",
|
||||
@@ -208,7 +208,7 @@
|
||||
"i18n.retry": "Opnieuw proberen",
|
||||
"i18n.requested": "Aangevraagd",
|
||||
"i18n.failed": "Mislukt",
|
||||
"i18n.deleting": "Bezig met verwijderen…",
|
||||
"i18n.deleting": "Verwijderen…",
|
||||
"i18n.close": "Sluiten",
|
||||
"components.UserList.userdeleteerror": "Er ging iets mis bij het verwijderen van de gebruiker.",
|
||||
"components.UserList.userdeleted": "Gebruiker succesvol verwijderd!",
|
||||
@@ -223,7 +223,7 @@
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Netwerk} other {Netwerken}}",
|
||||
"components.TvDetails.firstAirDate": "Datum eerste uitzending",
|
||||
"components.TvDetails.anime": "Anime",
|
||||
"components.StatusChacker.reloadOverseerr": "Herladen",
|
||||
"components.StatusChacker.reloadJellyseerr": "Herladen",
|
||||
"components.StatusChacker.newversionavailable": "Toepassingsupdate",
|
||||
"components.StatusChacker.newversionDescription": "Jellyseerr is geüpdatet! Klik op de onderstaande knop om de pagina opnieuw te laden.",
|
||||
"components.Settings.toastSettingsSuccess": "Instellingen succesvol opgeslagen!",
|
||||
@@ -303,10 +303,10 @@
|
||||
"components.UserList.create": "Aanmaken",
|
||||
"components.UserList.createlocaluser": "Lokale gebruiker aanmaken",
|
||||
"components.UserList.usercreatedfailed": "Er ging iets mis bij het aanmaken van de gebruiker.",
|
||||
"components.UserList.creating": "Bezig met aanmaken…",
|
||||
"components.UserList.creating": "Aanmaken…",
|
||||
"components.UserList.validationpasswordminchars": "Wachtwoord is te kort; moet minimaal 8 tekens bevatten",
|
||||
"components.UserList.usercreatedsuccess": "Gebruiker succesvol aangemaakt!",
|
||||
"components.UserList.passwordinfodescription": "Configureer een applicatie-URL en schakel e-mailmeldingen in om automatische wachtwoordgeneratie mogelijk te maken.",
|
||||
"components.UserList.passwordinfodescription": "Stel een applicatie-URL in en schakel e-mailmeldingen in om automatische wachtwoordgeneratie mogelijk te maken.",
|
||||
"components.UserList.password": "Wachtwoord",
|
||||
"components.UserList.localuser": "Lokale gebruiker",
|
||||
"components.UserList.email": "E-mailadres",
|
||||
@@ -340,23 +340,23 @@
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "We kunnen deze serie niet automatisch matchen. Selecteer hieronder de juiste match.",
|
||||
"components.Login.signinwithplex": "Plex-account gebruiken",
|
||||
"components.Login.signinheader": "Log in om verder te gaan",
|
||||
"components.Login.signingin": "Bezig met inloggen…",
|
||||
"components.Login.signingin": "Aanmelden…",
|
||||
"components.Login.signin": "Inloggen",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Meldingsagenten configureren en inschakelen.",
|
||||
"components.PlexLoginButton.signinwithplex": "Inloggen",
|
||||
"components.PlexLoginButton.signingin": "Bezig met inloggen…",
|
||||
"components.PlexLoginButton.signingin": "Aanmelden…",
|
||||
"components.PermissionEdit.advancedrequest": "Geavanceerde aanvragen",
|
||||
"components.PermissionEdit.admin": "Beheerder",
|
||||
"components.UserList.userssaved": "Gebruikersrechten succesvol opgeslagen!",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Serverlijst van Plex succesvol opgehaald!",
|
||||
"components.Settings.toastPlexRefresh": "Bezig met serverlijst ophalen van Plex…",
|
||||
"components.Settings.toastPlexConnecting": "Bezig met verbinden met Plex-server…",
|
||||
"components.Settings.toastPlexConnecting": "Verbinden met Plex…",
|
||||
"components.UserList.bulkedit": "Meerdere bewerken",
|
||||
"components.Settings.toastPlexRefreshFailure": "Kan serverlijst van Plex niet ophalen.",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Succesvol verbonden met Plex-server!",
|
||||
"components.Settings.toastPlexConnectingFailure": "Kan geen verbinding maken met Plex.",
|
||||
"components.Settings.settingUpPlexDescription": "Om Plex in te stellen, kan je de gegevens handmatig invoeren of een server selecteren die is opgehaald van <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>. Druk op de knop rechts van de vervolgkeuzelijst om de lijst van beschikbare servers op te halen.",
|
||||
"components.Settings.serverpresetRefreshing": "Bezig met servers ophalen…",
|
||||
"components.Settings.serverpresetRefreshing": "Servers ophalen…",
|
||||
"components.Settings.serverpresetManualMessage": "Handmatige configuratie",
|
||||
"components.Settings.serverpresetLoad": "Klik op de knop om de beschikbare servers te laden",
|
||||
"components.Settings.serverpreset": "Server",
|
||||
@@ -431,7 +431,7 @@
|
||||
"components.RequestModal.AdvancedRequester.requestas": "Aanvragen als",
|
||||
"components.Discover.discover": "Ontdekken",
|
||||
"components.Settings.validationApplicationTitle": "Je moet een toepassingstitel opgeven",
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "De volumekoppeling <code>{appDataPath}</code> was niet correct geconfigureerd. Alle gegevens zullen worden gewist wanneer de container wordt gestopt of opnieuw wordt gestart.",
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "De volumekoppeling <code>{appDataPath}</code> is niet correct geconfigureerd. Alle gegevens zullen worden gewist wanneer de container wordt gestopt of opnieuw wordt gestart.",
|
||||
"components.Settings.validationApplicationUrlTrailingSlash": "URL mag niet eindigen op een schuine streep",
|
||||
"components.Settings.validationApplicationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.SonarrModal.validationApplicationUrlTrailingSlash": "URL mag niet eindigen op een schuine streep",
|
||||
@@ -520,7 +520,7 @@
|
||||
"components.Layout.UserDropdown.myprofile": "Profiel",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "Je moet een geldige gebruikers-ID opgeven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "Het <FindDiscordIdLink>meercijferige ID-nummer</FindDiscordIdLink> van je gebruikersaccount",
|
||||
"components.CollectionDetails.requestcollection4k": "Collectie in 4K aanvragen",
|
||||
"components.CollectionDetails.requestcollection4k": "Collectie aanvragen in 4K",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Inhoud filteren op regionale beschikbaarheid",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Regio van Ontdekken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Inhoud filteren op oorspronkelijke taal",
|
||||
@@ -546,7 +546,7 @@
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "Reset download sync",
|
||||
"components.Settings.SettingsJobsCache.download-sync": "Synchronisatie downloads",
|
||||
"components.TvDetails.seasons": "{seasonCount, plural, one {# seizoen} other {# seizoenen}}",
|
||||
"i18n.loading": "Bezig met laden…",
|
||||
"i18n.loading": "Laden…",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "Je moet een geldige chat-ID opgeven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Een chat starten</TelegramBotLink>, <GetIdBotLink>@get_id_bot</GetIdBotLink> toevoegen en de opdracht <code>/my_id</code> geven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat-ID",
|
||||
@@ -558,14 +558,14 @@
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "Series van {network}",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre} films",
|
||||
"components.Setup.scanbackground": "Het scannen wordt op de achtergrond uitgevoerd. Je kunt in de tussentijd doorgaan met het installatieproces.",
|
||||
"components.Settings.scanning": "Bezig met synchroniseren…",
|
||||
"components.Settings.scanning": "Synchroniseren…",
|
||||
"components.Settings.scan": "Bibliotheken synchroniseren",
|
||||
"components.Settings.SettingsJobsCache.sonarr-scan": "Sonarr-scan",
|
||||
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr-scan",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Plex recent toegevoegde scan",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Plex volledige bibliotheekscan",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "volledige bibliotheekscan Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.jelly-recently-added-scan": "Jellyfin recent toegevoegde scan",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Scan van 'onlangs toegevoegd' in Jellyfin",
|
||||
"components.Settings.Notifications.validationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.Notifications.botAvatarUrl": "URL bot-avatar",
|
||||
"components.RequestList.RequestItem.requested": "Aangevraagd",
|
||||
@@ -670,27 +670,27 @@
|
||||
"components.QuotaSelector.unlimited": "Onbeperkt",
|
||||
"i18n.view": "Bekijken",
|
||||
"i18n.tvshow": "Serie",
|
||||
"i18n.testing": "Bezig met testen…",
|
||||
"i18n.testing": "Testen…",
|
||||
"i18n.test": "Test",
|
||||
"i18n.status": "Status",
|
||||
"i18n.showingresults": "<strong>{from}</strong> tot <strong>{to}</strong> van de <strong>{total}</strong> resultaten worden weergegeven",
|
||||
"i18n.saving": "Bezig met opslaan…",
|
||||
"i18n.saving": "Opslaan…",
|
||||
"i18n.save": "Wijzigingen opslaan",
|
||||
"i18n.resultsperpage": "{pageSize} resultaten per pagina weergeven",
|
||||
"i18n.requesting": "Bezig met aanvragen…",
|
||||
"i18n.requesting": "Aanvragen…",
|
||||
"i18n.request4k": "Aanvragen in 4K",
|
||||
"i18n.previous": "Vorige",
|
||||
"i18n.notrequested": "Niet aangevraagd",
|
||||
"i18n.noresults": "Geen resultaten.",
|
||||
"i18n.next": "Volgende",
|
||||
"i18n.movie": "Film",
|
||||
"i18n.canceling": "Bezig met annuleren…",
|
||||
"i18n.canceling": "Annuleren…",
|
||||
"i18n.back": "Terug",
|
||||
"i18n.areyousure": "Weet je het zeker?",
|
||||
"i18n.all": "Alle",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Deze gebruiker heeft nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensverzoek} other {seizoensverzoeken}} nodig om deze serie aan te vragen.",
|
||||
"components.TvDetails.originaltitle": "Originele titel",
|
||||
"components.MovieDetails.originaltitle": "Originele titel",
|
||||
"components.TvDetails.originaltitle": "Oorspronkelijke titel",
|
||||
"components.MovieDetails.originaltitle": "Oorspronkelijke titel",
|
||||
"components.LanguageSelector.originalLanguageDefault": "Alle talen",
|
||||
"components.LanguageSelector.languageServerDefault": "Standaard ({language})",
|
||||
"components.Settings.SonarrModal.testFirstTags": "Test de verbinding om labels te laden",
|
||||
@@ -733,9 +733,9 @@
|
||||
"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. Configureer hieronder een wachtwoord om in te kunnen loggen als een \"lokale gebruiker\" met uw e-mailadres.",
|
||||
"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": "Configureer je {serverType} server(s) hieronder. 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 de goedkeuring de server die gebruikt wordt om nieuwe aanvragen te verwerken aanpassen.",
|
||||
"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.",
|
||||
"components.Settings.noDefaultNon4kServer": "Als je slechts één enkele {serverType} server hebt voor zowel niet-4K als 4K-inhoud (of als je alleen 4K-inhoud downloadt), dan moet je {serverType} server <strong>NIET</strong> aangeduid worden als een 4K-server.",
|
||||
"components.Settings.mediaTypeSeries": "serie",
|
||||
@@ -747,7 +747,7 @@
|
||||
"components.Layout.VersionStatus.outofdate": "Verouderd",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} achter",
|
||||
"components.UserList.autogeneratepasswordTip": "Een door de server gegenereerd wachtwoord naar de gebruiker e-mailen",
|
||||
"i18n.retrying": "Bezig met opnieuw proberen…",
|
||||
"i18n.retrying": "Opnieuw proberen…",
|
||||
"components.Settings.serverSecure": "veilig",
|
||||
"components.UserList.usercreatedfailedexisting": "Het opgegeven e-mailadres wordt al gebruikt door een andere gebruiker.",
|
||||
"components.RequestModal.edit": "Verzoek bewerken",
|
||||
@@ -847,7 +847,7 @@
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Een melding ontvangen wanneer je mediaverzoeken worden geweigerd.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Een melding ontvangen wanneer je mediaverzoeken beschikbaar zijn.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Een melding ontvangen wanneer andere gebruikers nieuwe mediaverzoeken indienen die automatisch worden goedgekeurd.",
|
||||
"components.Settings.SettingsAbout.betawarning": "Dit is BETA software. Functies kunnen kapot en/of instabiel zijn. Meld eventuele problemen op GitHub!",
|
||||
"components.Settings.SettingsAbout.betawarning": "Dit is BETA-software. Functies kunnen kapot en/of instabiel zijn. Meld eventuele problemen op GitHub!",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Weergavetaal",
|
||||
"components.MovieDetails.showmore": "Meer tonen",
|
||||
"components.MovieDetails.showless": "Minder tonen",
|
||||
@@ -971,7 +971,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverUserKey": "Je moet een geldige gebruikers- of groepssleutel opgeven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Instellingen voor Pushbullet-meldingen succesvol opgeslagen!",
|
||||
"components.IssueDetails.playonplex": "Afspelen op {mediaServerName}",
|
||||
"components.IssueDetails.play4konplex": "Afspelen in 4K 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}}",
|
||||
@@ -982,7 +982,7 @@
|
||||
"components.NotificationTypeSelector.adminissuereopenedDescription": "Ontvang een melding wanneer problemen door andere gebruikers opnieuw worden ingediend.",
|
||||
"components.NotificationTypeSelector.issuereopenedDescription": "Stuur meldingen wanneer problemen opnieuw worden ingediend.",
|
||||
"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}} in 4K aanvragen",
|
||||
"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": "Film(s) selecteren",
|
||||
"components.MovieDetails.productioncountries": "Productie{countryCount, plural, one {land} other {landen}}",
|
||||
@@ -998,7 +998,7 @@
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Agent inschakelen",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Instellingen voor meldingen Gotify succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsGotify.token": "Toepassingstoken",
|
||||
"i18n.importing": "Bezig met importeren…",
|
||||
"i18n.importing": "Importeren…",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Instellingen voor meldingen Gotify niet opgeslagen.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestFailed": "Testmelding Gotify niet verzonden.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSuccess": "Testmelding Gotify verzonden!",
|
||||
@@ -1012,7 +1012,7 @@
|
||||
"components.UserList.newplexsigninenabled": "De instelling <strong>Nieuwe Plex-aanmelding inschakelen</strong> is momenteel ingeschakeld. Plex-gebruikers met bibliotheektoegang hoeven niet te worden geïmporteerd om in te loggen.",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Geavanceerd",
|
||||
"components.ManageSlideOver.alltime": "Altijd",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Alle seizoenen als beschikbaar in 4K markeren",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "Alle seizoenen markeren als beschikbaar in 4K",
|
||||
"components.ManageSlideOver.opentautulli": "In Tautulli openen",
|
||||
"components.ManageSlideOver.pastdays": "Afgelopen {days, number} dagen",
|
||||
"components.ManageSlideOver.playedby": "Afgespeeld door",
|
||||
@@ -1046,8 +1046,8 @@
|
||||
"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 recent toegevoegde media te bekijken.",
|
||||
"components.PermissionEdit.viewrecent": "Recent toegevoegd bekijken",
|
||||
"components.PermissionEdit.viewrecentDescription": "Toestemming geven om de lijst met onlangs toegevoegde media weer te geven.",
|
||||
"components.PermissionEdit.viewrecent": "Onlangs toegevoegd weergeven",
|
||||
"components.Settings.deleteServer": "{serverType}-server verwijderen",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} bijgewerkt",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
@@ -1072,8 +1072,8 @@
|
||||
"components.TvDetails.seasonnumber": "Seizoen {seasonNumber}",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Er ging iets mis bij het ophalen van de seizoensgegevens.",
|
||||
"components.TvDetails.seasonstitle": "Seizoenen",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Je Plex Kijklijst",
|
||||
"components.Discover.plexwatchlist": "Je Plex Kijklijst",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Jouw kijklijst",
|
||||
"components.Discover.plexwatchlist": "Jouw kijklijst",
|
||||
"components.MovieDetails.physicalrelease": "Fysieke release",
|
||||
"components.PermissionEdit.autorequest": "Automatisch aanvragen",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Kijklijst synchroniseren",
|
||||
@@ -1082,7 +1082,7 @@
|
||||
"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.Discover.DiscoverWatchlist.watchlist": "Plex-kijklijst",
|
||||
"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.",
|
||||
@@ -1099,11 +1099,11 @@
|
||||
"components.TvDetails.manageseries": "Serie beheren",
|
||||
"components.MovieDetails.managemovie": "Film beheren",
|
||||
"components.MovieDetails.reportissue": "Probleem melden",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Toestemming geven om niet-4K films in je Plex Kijklijst automatisch aan te vragen.",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Toestemming geven om niet-4K films in je Plex-kijklijst automatisch aan te vragen.",
|
||||
"components.PermissionEdit.autorequestSeries": "Series automatisch aanvragen",
|
||||
"components.PermissionEdit.autorequestMovies": "Films automatisch aanvragen",
|
||||
"components.Settings.experimentalTooltip": "Deze instelling inschakelen, kan leiden tot onverwacht gedrag van de toepassing",
|
||||
"components.Settings.restartrequiredTooltip": "Overseerr moet opnieuw worden gestart om wijzigingen in deze instelling door te voeren",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr moet opnieuw worden gestart om wijzigingen in deze instelling door te voeren",
|
||||
"components.AirDateBadge.airedrelative": "{relativeTime} uitgezonden",
|
||||
"components.AirDateBadge.airsrelative": "Uitzending {relativeTime}",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serieverzoeken",
|
||||
@@ -1125,5 +1125,224 @@
|
||||
"components.RequestBlock.lastmodifiedby": "Laatst gewijzigd door",
|
||||
"components.RequestBlock.requestdate": "Aanvraagdatum",
|
||||
"components.RequestBlock.requestedby": "Aangevraagd door",
|
||||
"components.RequestCard.approverequest": "Verzoek goedkeuren"
|
||||
"components.RequestCard.approverequest": "Verzoek goedkeuren",
|
||||
"components.TvDetails.Season.noepisodes": "Afleveringenlijst niet beschikbaar.",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Afbeeldingcache",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Afbeeldingen in cache",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Totale cachegrootte",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Afbeeldingcache legen",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Wanneer ingeschakeld in de instellingen, zal Jellyseerr afbeeldingen proxyen en cachen van vooraf geconfigureerde externe bronnen. Gecachete afbeeldingen worden opgeslagen in je configuratiemap. Je kan de bestanden vinden in <code>{appDataPath}/cache/images</code>.",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: seizoen {seasonNumber} aflevering {episodeNumber}",
|
||||
"components.RequestCard.unknowntitle": "Onbekende titel",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Onbekende titel",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.Discover.CreateSlider.needresults": "Je moet minstens 1 resultaat hebben.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Geef een TMDB Genre ID op",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Geef een TMDB Network ID op",
|
||||
"components.Discover.CreateSlider.nooptions": "Geen resultaten.",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Geef een TMDB Keyword ID op",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Zichtbaarheid in-/uitschakelen",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Geef een zoekopdracht op",
|
||||
"components.Discover.CreateSlider.searchGenres": "Genres zoeken…",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Geef een TMDB Studio ID op",
|
||||
"components.Discover.moviegenres": "Filmgenres",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Trefwoorden zoeken…",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} serie",
|
||||
"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.plexwatchlist": "Jouw kijklijst",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Onlangs toegevoegd",
|
||||
"components.Discover.networks": "Netwerken",
|
||||
"components.Discover.CreateSlider.searchStudios": "Studio's zoeken…",
|
||||
"components.Discover.CreateSlider.starttyping": "Begin met typen om te zoeken.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Je moet een gegevenswaarde opgeven.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Je moet een titel opgeven.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} films",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB-filmtrefwoord",
|
||||
"components.Discover.tmdbnetwork": "TMDB-netwerk",
|
||||
"components.Discover.tmdbsearch": "TMDB-zoekopdracht",
|
||||
"components.Settings.SettingsMain.apikey": "API-sleutel",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Externe afbeeldingen cachen (vereist veel schijfruimte)",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Algemene en standaardinstellingen van Jellyseerr configureren.",
|
||||
"components.Settings.SettingsMain.general": "Algemeen",
|
||||
"components.Settings.SettingsMain.generalsettings": "Algemene instellingen",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Beschikbare media verbergen",
|
||||
"components.Settings.SettingsMain.regionTip": "Inhoud filteren op regionale beschikbaarheid",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Instellingen succesvol opgeslagen!",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Slider succesvol verwijderd.",
|
||||
"components.Discover.createnewslider": "Nieuwe slider maken",
|
||||
"components.Discover.resetwarning": "Zet alle sliders terug naar standaard. Dit zal ook alle aangepaste sliders verwijderen!",
|
||||
"components.Discover.stopediting": "Stop met bewerken",
|
||||
"components.Discover.studios": "Studio's",
|
||||
"components.Discover.tmdbmoviegenre": "TMDB-filmgenre",
|
||||
"components.Discover.tmdbstudio": "TMDB-studio",
|
||||
"components.Discover.tmdbtvgenre": "TMDB-genre serie",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB-trefwoord serie",
|
||||
"components.Discover.updatesuccess": "Instellingen Ontdekken bijgewerkt.",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Populariteit oplopend",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Populariteit aflopend",
|
||||
"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",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB-beoordeling aflopend",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Slider verwijderen mislukt.",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# filter actief} other {# filters actief}}",
|
||||
"components.Discover.DiscoverTv.discovertv": "Series",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Eerste uitzenddatum oplopend",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Populariteit aflopend",
|
||||
"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",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Eerste uitzenddatum",
|
||||
"components.Discover.FilterSlideover.from": "Van",
|
||||
"components.Discover.FilterSlideover.genres": "Genres",
|
||||
"components.Discover.FilterSlideover.keywords": "Trefwoorden",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Oorspronkelijke taal",
|
||||
"components.Discover.FilterSlideover.ratingText": "Beoordelingen tussen {minValue} en {maxValue}",
|
||||
"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",
|
||||
"components.Discover.FilterSlideover.to": "Tot",
|
||||
"components.Discover.resetsuccess": "Instellingen Ontdekken succesvol teruggezet.",
|
||||
"components.Discover.resettodefault": "Terugzetten naar standaard",
|
||||
"components.Discover.tvgenres": "Seriegenre",
|
||||
"components.Discover.updatefailed": "Er is iets fout gegaan bij het bijwerken van de instellingen van Ontdekken.",
|
||||
"components.Layout.Sidebar.browsemovies": "Films",
|
||||
"components.Selector.nooptions": "Geen resultaten.",
|
||||
"components.Selector.searchStudios": "Studio's zoeken…",
|
||||
"components.Selector.starttyping": "Begin met typen om te zoeken.",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Toepassingstitel",
|
||||
"components.Settings.SettingsMain.csrfProtection": "CSRF-bescherming inschakelen",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Schakel deze instelling NIET in tenzij je begrijpt wat je doet!",
|
||||
"components.Settings.SettingsMain.locale": "Weergavetaal",
|
||||
"components.Settings.SettingsMain.originallanguage": "Taal van Ontdekken",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Inhoud filteren op oorspronkelijke taal",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Aanvragen voor gedeeltelijke series toestaan",
|
||||
"components.Settings.SettingsMain.region": "Regio van Ontdekken",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Er ging iets mis bij het genereren van een nieuwe API-sleutel.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nieuwe API-sleutel succesvol gegenereerd!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Proxy-ondersteuning inschakelen",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Jellyseerr toestaan om IP-adressen van clients correct te registreren achter een proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Je moet een toepassingstitel opgeven",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL mag niet eindigen op een schuine streep",
|
||||
"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": "Releasedatum aflopend",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Populariteit oplopend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-beoordeling oplopend",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Eerste uitzenddatum aflopend",
|
||||
"components.Settings.SettingsMain.applicationurl": "Applicatie-URL",
|
||||
"components.Layout.Sidebar.browsetv": "Series",
|
||||
"components.Selector.searchGenres": "Genres selecteren…",
|
||||
"components.Selector.searchKeywords": "Trefwoorden zoeken…",
|
||||
"components.Settings.SettingsMain.cacheImages": "Afbeeldingscaching inschakelen",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Externe API-toegang instellen op alleen-lezen (vereist HTTPS)",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Er ging iets mis bij het opslaan van de instellingen.",
|
||||
"components.Discover.CreateSlider.addSlider": "Slider toevoegen",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Aangepaste slider maken",
|
||||
"components.Discover.CreateSlider.addfail": "Nieuwe slider maken mislukt.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Nieuwe slider aangemaakt en instellingen Ontdekken opgeslagen.",
|
||||
"components.Discover.CreateSlider.editSlider": "Slider bewerken",
|
||||
"components.Discover.CreateSlider.editfail": "Slider bewerken mislukt.",
|
||||
"components.Discover.CreateSlider.editsuccess": "Slider bewerkt en instellingen Ontdekken opgeslagen.",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Naam slider",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Streamingdiensten",
|
||||
"components.Selector.showless": "Minder tonen",
|
||||
"components.Selector.showmore": "Meer tonen",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Elke {jobScheduleSeconds, plural, one {seconde} other {{jobScheduleSeconds} seconden}}",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Synchronisatie van mediabeschikbaarheid",
|
||||
"components.Discover.tmdbmoviestreamingservices": "Streamingdiensten voor films TMDB",
|
||||
"components.Discover.tmdbtvstreamingservices": "Streamingdiensten voor series TMDB",
|
||||
"components.Login.validationhostrequired": "{mediaServerName}-URL vereist",
|
||||
"components.Layout.UserWarnings.emailInvalid": "E-mailadres is ongeldig.",
|
||||
"components.Login.description": "Aangezien dit de eerste keer is dat je je aanmeldt bij {applicationName}, dien je een geldig e-mailadres op te geven.",
|
||||
"components.Login.saving": "Toevoegen…",
|
||||
"components.ManageSlideOver.removearr": "Verwijderen van {arr}",
|
||||
"components.Settings.RadarrModal.tagRequests": "Aanvragen taggen",
|
||||
"components.MovieDetails.openradarr4k": "Film openen in 4K-Radarr",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Automatisch een extra label toevoegen met de gebruikers-id en weergavenaam van de aanvrager",
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Serietype anime",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Automatisch een extra label toevoegen met de gebruikers-id en weergavenaam van de aanvrager",
|
||||
"components.Settings.internalUrl": "Interne URL",
|
||||
"components.Settings.jellyfinsettings": "{mediaServerName}-instellingen",
|
||||
"components.Settings.jellyfinlibrariesDescription": "De {mediaServerName}-bibliotheken die op titels worden gescand. Klik op onderstaande knop als er geen bibliotheken in de lijst staan.",
|
||||
"components.Settings.manualscanDescriptionJellyfin": "Normaliter wordt dit eenmaal per 24 uur uitgevoerd. Jellyseerr zal de lijst met onlangs toegevoegde media op je {mediaServerName}-server vaker controleren. Als dit de eerste keer is dat je Jellyseerr instelt, wordt aanbevolen eenmalig een handmatige, volledige bibliotheekscan uit te voeren!",
|
||||
"components.Settings.save": "Wijzigingen opslaan",
|
||||
"components.Settings.syncJellyfin": "Bibliotheken synchoniseren",
|
||||
"components.TvDetails.play": "Afspelen op {mediaServerName}",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Aantal gebruikersstemmen TMDB",
|
||||
"components.Login.save": "Toevoegen",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* Hiermee wordt deze {mediaType} onomkeerbaar verwijderd van {arr}, inclusief alle bestanden.",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Apparaatstandaard",
|
||||
"components.Settings.Notifications.userEmailRequired": "Gebruikerse-mail vereisen",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Jellyseerr ondersteunen",
|
||||
"components.Settings.SonarrModal.seriesType": "Serietype",
|
||||
"components.Settings.jellyfinSettings": "{mediaServerName}-instellingen",
|
||||
"components.Setup.configuremediaserver": "Mediaserver instellen",
|
||||
"components.TvDetails.play4k": "Afspelen op {mediaServerName} in 4K",
|
||||
"components.UserList.mediaServerUser": "{mediaServerName}-gebruiker",
|
||||
"components.UserList.noJellyfinuserstoimport": "Er zijn geen {mediaServerName}-gebruikers om te importeren.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.email": "E-mail",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Apparaatstandaard",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Meldingsgeluid",
|
||||
"components.Login.signinwithjellyfin": "{mediaServerName}-account gebruiken",
|
||||
"components.Discover.FilterSlideover.voteCount": "Aantal stemmen tussen {minValue} en {maxValue}",
|
||||
"components.Layout.UserWarnings.emailRequired": "Een e-mailadres is vereist.",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Een wachtwoord is vereist.",
|
||||
"components.Login.credentialerror": "Gebruikersnaam of wachtwoord is onjuist.",
|
||||
"components.Login.emailtooltip": "Het adres hoeft niet gelieerd te zijn aan je {mediaServerName}-instantie.",
|
||||
"components.Login.host": "{mediaServerName}-URL",
|
||||
"components.Login.initialsignin": "Verbinden",
|
||||
"components.Login.initialsigningin": "Verbinden…",
|
||||
"components.Login.title": "E-mail toevoegen",
|
||||
"components.Login.username": "Gebruikersnaam",
|
||||
"components.Login.validationEmailRequired": "Je moet een e-mailadres opgeven",
|
||||
"components.Login.validationEmailFormat": "Ongeldig e-mailadres",
|
||||
"components.Login.validationemailformat": "Geldig e-mailadres vereist",
|
||||
"components.Login.validationhostformat": "Geldige URL vereist",
|
||||
"components.Login.validationusernamerequired": "Gebruikersnaam vereist",
|
||||
"components.ManageSlideOver.removearr4k": "Verwijderen van 4K-{arr}",
|
||||
"components.MovieDetails.downloadstatus": "Downloadstatus",
|
||||
"components.MovieDetails.imdbuserscore": "Gebruikersbeoordeling IMDB",
|
||||
"components.MovieDetails.openradarr": "Film openen in Radarr",
|
||||
"components.MovieDetails.play": "Afspelen op {mediaServerName}",
|
||||
"components.MovieDetails.play4k": "Afspelen op {mediaServerName} in 4K",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Meldingsgeluid",
|
||||
"components.Settings.SonarrModal.tagRequests": "Aanvragen taggen",
|
||||
"components.Settings.jellyfinSettingsFailure": "Er is iets misgegaan bij het opslaan van de {mediaServerName}-instellingen.",
|
||||
"components.Settings.jellyfinSettingsSuccess": "{mediaServerName}-instellingen opgeslagen!",
|
||||
"components.Settings.jellyfinlibraries": "{mediaServerName}-bibliotheken",
|
||||
"components.Settings.manualscanJellyfin": "Handmatige bibliotheekscan",
|
||||
"components.Settings.menuJellyfinSettings": "{mediaServerName}",
|
||||
"components.Settings.saving": "Opslaan…",
|
||||
"components.Settings.syncing": "Synchroniseren",
|
||||
"components.Settings.timeout": "Time-out",
|
||||
"components.Setup.signin": "Aanmelden",
|
||||
"components.Setup.signinWithJellyfin": "{mediaServerName}-account gebruiken",
|
||||
"components.TitleCard.addToWatchList": "Toevoegen aan kijklijst",
|
||||
"components.TitleCard.watchlistError": "Er is iets misgegaan. Probeer het opnieuw.",
|
||||
"components.UserList.importfromJellyfin": "{mediaServerName}-gebruikers importeren",
|
||||
"components.UserList.importfromJellyfinerror": "Er is iets misgegaan bij het importeren van {mediaServerName}-gebruikers.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.mediaServerUser": "{mediaServerName}-gebruiker",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Wijzigingen opslaan",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.saving": "Opslaan…",
|
||||
"i18n.collection": "Collectie",
|
||||
"components.UserProfile.localWatchlist": "Kijklijst van {username}",
|
||||
"components.Setup.signinWithPlex": "Plex-account gebruiken",
|
||||
"components.Settings.jellyfinSettingsDescription": "Optioneel, configureer de interne en externe eindpunten voor uw {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 u doorverwezen wilt worden naar een andere wachtwoord reset pagina.",
|
||||
"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 {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."
|
||||
}
|
||||
|
||||
@@ -1060,5 +1060,75 @@
|
||||
"components.Layout.UserDropdown.requests": "Prośby",
|
||||
"components.MovieDetails.rtaudiencescore": "Ocena Rotten Tomatoes",
|
||||
"components.MovieDetails.rtcriticsscore": "Tomatometer Rotten Tomatoes",
|
||||
"components.MovieDetails.tmdbuserscore": "Ocena użytkowników TMDB"
|
||||
"components.MovieDetails.tmdbuserscore": "Ocena użytkowników TMDB",
|
||||
"components.Discover.CreateSlider.addSlider": "Dodaj suwak",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Utwórz niestandardowy suwak",
|
||||
"components.Discover.CreateSlider.addfail": "Nie udało się utworzyć nowego suwaka.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Stworzony nowy suwak i zapisano dostosowywania odkrywania.",
|
||||
"components.Discover.CreateSlider.editSlider": "Edytuj suwak",
|
||||
"components.Discover.CreateSlider.editfail": "Nie udało się edytować suwaka.",
|
||||
"components.Discover.CreateSlider.needresults": "Musisz mieć przynajmniej 1 wynik.",
|
||||
"components.Discover.CreateSlider.nooptions": "Brak wyników.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Podaj ID gatunku TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Podaj ID stacji TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Podaj zapytanie wyszukiwania",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Podaj ID studia TMDB",
|
||||
"components.Discover.CreateSlider.searchGenres": "Szukaj gatunków…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Wyszukaj studia…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Nazwa suwaka",
|
||||
"components.Discover.CreateSlider.starttyping": "Zacznij pisać aby wyszukać.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Należy wprowadzić wartość danych.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Należy podać tytuł.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "Filmy: {keywordTitle}",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filmy",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Popularność rosnąco",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Popularność malejąco",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Data wydania malejąco",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Tytuł (A-Z) rosnąco",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Tytuł (Z-A) malejąco",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "Ocena TMDB rosnąco",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "Ocena TMDB malejąco",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Nie udało się usunąć suwaka.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Pomyślnie usunięto suwak.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Przełącz widoczność",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Usuń",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Data premiery rosnąco",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Data premiery malejąco",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Popularność rosnąco",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Popularność malejąco",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Tytuł (A-Z) rosnąco",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Tytuł (Z-A) malejąco",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "Ocena TMDB malejąco",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Wyczyść aktywne filtry",
|
||||
"components.Discover.FilterSlideover.filters": "Filtry",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Data pierwszego wyemitowania",
|
||||
"components.Discover.FilterSlideover.from": "Od",
|
||||
"components.Discover.FilterSlideover.genres": "Gatunki",
|
||||
"components.Discover.FilterSlideover.keywords": "Słowa kluczowe",
|
||||
"components.Discover.FilterSlideover.ratingText": "Oceny między {minValue} a {maxValue}",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Podaj ID słowa kluczowego TMDB",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Wyszukaj słowa kluczowe…",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Data wydania rosnąco",
|
||||
"components.Discover.DiscoverTv.discovertv": "Seriale",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "Ocena TMDB rosnąco",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "Seriale: {keywordTitle}",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Oryginalny język",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Data wydania",
|
||||
"components.Discover.FilterSlideover.runtime": "Długość",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} minut trwania",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Serwisy streamingowe",
|
||||
"components.Discover.FilterSlideover.studio": "Studio",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Liczba głosów użytkowników TMDB",
|
||||
"components.Discover.FilterSlideover.to": "Do",
|
||||
"components.Discover.FilterSlideover.voteCount": "Liczba głosów między {minValue} a {maxValue}",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Twoja lista obserwowanych Plex",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Niedawno dodane",
|
||||
"components.Discover.createnewslider": "Dodaj nowy suwak",
|
||||
"components.Discover.customizediscover": "Dostosuj Odkryj",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Media dodane do twojej <PlexWatchlistSupportLink>listy obserwowanych Plex</PlexWatchlistSupportLink> zostaną wyświetlone tutaj.",
|
||||
"components.Discover.emptywatchlist": "Media dodane do twojej <PlexWatchlistSupportLink>listy obserwowanych Plex</PlexWatchlistSupportLink> zostaną wyświetlone tutaj.",
|
||||
"components.Discover.tmdbstudio": "Studio TMDB",
|
||||
"components.Discover.tmdbtvkeyword": "Słowo kluczowe serialu TMDB",
|
||||
"components.Discover.tmdbtvgenre": "Gatunek serialu TMDB",
|
||||
"components.Discover.tmdbsearch": "Wyszukiwanie TMDB"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user