Compare commits

..

115 Commits

Author SHA1 Message Date
semantic-release-bot
4a5421a9ba chore(release): 1.30.0 2022-09-19 07:17:15 +00:00
Ryan Cohen
24b9c00b2a Merge branch 'develop' 2022-09-19 16:12:44 +09:00
Weblate (bot)
16cb53f703 feat(lang): translations update from Hosted Weblate (#3026)
* feat(lang): translated using Weblate (Swedish)

Currently translated at 91.8% (1028 of 1119 strings)

Co-authored-by: Johan Ruda <johan.ruda@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sv/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Hungarian)

Currently translated at 89.7% (1004 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Nandor Rusz <nandor.rusz@vodafone.de>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hu/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Dutch)

Currently translated at 100.0% (1119 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Croatian)

Currently translated at 23.3% (261 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Milo Ivir <mail@milotype.de>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hr/
Translation: Overseerr/Overseerr Frontend

Co-authored-by: Johan Ruda <johan.ruda@gmail.com>
Co-authored-by: Nandor Rusz <nandor.rusz@vodafone.de>
Co-authored-by: Kobe <kobaubarr@gmail.com>
Co-authored-by: Milo Ivir <mail@milotype.de>
2022-09-18 21:07:58 -07:00
Brandon Cohen
407af32d32 fix: new status indicators added to series list on mobile (#3024)
* fix: new status indicators added to series list

* refactor: component will render icons and has updated props
2022-09-17 14:52:51 +09:00
aedelbro
5c01313cc4 fix(ui): remove 'all' badge from request cards (#2992)
if all seasons are requested for a TV show, show each indivdual season badge. This prevents the
admin from needing to open a second tab / navigate to see how many seasons / what seasons have been
requested.
2022-09-16 21:27:45 +00:00
Ryan Cohen
d8da5cbe9d fix(plex): add container-size header to recently added api call (#3023) 2022-09-16 02:01:29 +00:00
Weblate (bot)
3d458dd2fd feat(lang): translations update from Hosted Weblate (#3014)
* feat(lang): translated using Weblate (Catalan)

Currently translated at 100.0% (1119 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Maite Guix <maite.guix@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ca/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Simplified))

Currently translated at 95.6% (1070 of 1119 strings)

feat(lang): translated using Weblate (Chinese (Simplified))

Currently translated at 95.6% (1070 of 1119 strings)

feat(lang): translated using Weblate (Chinese (Simplified))

Currently translated at 92.3% (1033 of 1119 strings)

Co-authored-by: Eric <hamburger1024@mailbox.org>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Linyue-GitHub <592746995@qq.com>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hans/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (1119 of 1119 strings)

feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (1119 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (1119 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: exentler <gurandsrud@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nb_NO/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Croatian)

Currently translated at 23.3% (261 of 1119 strings)

feat(lang): translated using Weblate (Croatian)

Currently translated at 18.1% (203 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lpispek <lpispek@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hr/
Translation: Overseerr/Overseerr Frontend

Co-authored-by: Maite Guix <maite.guix@gmail.com>
Co-authored-by: Eric <hamburger1024@mailbox.org>
Co-authored-by: Linyue-GitHub <592746995@qq.com>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: exentler <gurandsrud@gmail.com>
Co-authored-by: lpispek <lpispek@gmail.com>
2022-09-13 23:27:24 +00:00
Brandon Cohen
e486623310 fix: compatibility issue with safari (#3019) 2022-09-14 08:16:55 +09:00
renovate[bot]
f20ba3fc2e fix(deps): pin dependency cronstrue to 2.11.0 (#3018) [skip ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-09-12 13:11:21 +09:00
Danshil Kokil Mungur
30141f76e0 feat(logs): add search filter (#2505)
* feat(logs): add search filter

* refactor(logs): move loading spinner inside log viewer

Inputting text in the search bar on the logs page would refresh the page
losing focus on the search bar.
This moves the loading spinner inside the log viewer, so that it is not
as disruptive as it would

* fix(logs): escape string for search filter

* chore: rebase

* fix(logs): suggested changes
2022-09-12 02:21:16 +00:00
Brandon Cohen
87825a0e05 feat: pull down to refresh (#2908)
* feat: pull down to refresh functionality

Custom pull down to refresh added to replace the default browser pull down to refresh. This will
allow you to manually reload the page if you are using it as a PWA.

* test: update test to check api call correctly

changed api call for test and made sure it pulls down all the way to trigger refresh

* fix: changed positioning of pull to refresh

Refresh indicator now has absolute positioning and will prevent the top edge from pulling down.
2022-09-12 02:07:37 +00:00
Danshil Kokil Mungur
99fc9a2da0 feat(jobs): show current job frequency in edit modal (#3008)
* fix(jobs): reset job schedule edit modal values when closed

* feat(jobs): show job's current frequency

* fix(jobs): reset job schedule edit modal values when cancelled

* chore: rebase

* refactor(jobs): use reducer instead of several react states

* fix(jobs): reset modal state when opening instead of closing the modal

This prevents the modal state from glitching when saving/closing the modal

* feat(jobs): parse job schedule cron string

unavailable locale will fallback to english
2022-09-12 01:14:27 +00:00
Weblate (bot)
611ceeb5f4 feat(lang): translations update from Hosted Weblate (#3006)
* feat(lang): translated using Weblate (Albanian)

Currently translated at 95.0% (1063 of 1118 strings)

Co-authored-by: Denis Çerri <deniscerri3@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sq/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Czech)

Currently translated at 100.0% (1118 of 1118 strings)

feat(lang): translated using Weblate (Czech)

Currently translated at 94.3% (1055 of 1118 strings)

feat(lang): translated using Weblate (Czech)

Currently translated at 94.3% (1055 of 1118 strings)

feat(lang): translated using Weblate (Czech)

Currently translated at 88.5% (990 of 1118 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Pollyi <weblate.ntxx4@simplelogin.co>
Co-authored-by: Smexhy <smexhy@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/cs/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Dutch)

Currently translated at 92.1% (1030 of 1118 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Stevie Robinson <stevie.robinson@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (1118 of 1118 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Croatian)

Currently translated at 4.7% (53 of 1118 strings)

feat(lang): added translation using Weblate (Croatian)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: lpispek <lpispek@gmail.com>
Co-authored-by: sct <sctsnipe@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hr/
Translation: Overseerr/Overseerr Frontend

Co-authored-by: Denis Çerri <deniscerri3@gmail.com>
Co-authored-by: Pollyi <weblate.ntxx4@simplelogin.co>
Co-authored-by: Smexhy <smexhy@gmail.com>
Co-authored-by: Stevie Robinson <stevie.robinson@gmail.com>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: lpispek <lpispek@gmail.com>
Co-authored-by: sct <sctsnipe@gmail.com>
2022-09-10 14:59:40 -07:00
Ryan Cohen
14280c5437 fix: scroll restoration (#3005) 2022-09-06 13:27:13 +09:00
Weblate (bot)
867286996b feat(lang): translations update from Hosted Weblate (#2999)
* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Serbian)

Currently translated at 54.8% (613 of 1118 strings)

feat(lang): translated using Weblate (Serbian)

Currently translated at 54.8% (613 of 1118 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: lpispek <lpispek@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sr/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (French)

Currently translated at 100.0% (1118 of 1118 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Catalan)

Currently translated at 100.0% (1118 of 1118 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: dtalens <databio@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ca/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Simplified))

Currently translated at 92.3% (1033 of 1118 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Eric <hamburger1024@firemail.cc>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hans/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 100.0% (1118 of 1118 strings)

feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 99.8% (1116 of 1118 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 99.8% (1117 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (1118 of 1118 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Norwegian Bokmål)

Currently translated at 100.0% (1119 of 1119 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: exentler <gurandsrud@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nb_NO/
Translation: Overseerr/Overseerr Frontend

* Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translation: Overseerr/Overseerr Frontend

Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: lpispek <lpispek@gmail.com>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Co-authored-by: dtalens <databio@gmail.com>
Co-authored-by: Eric <hamburger1024@firemail.cc>
Co-authored-by: exentler <gurandsrud@gmail.com>
2022-09-03 10:27:16 -07:00
TheCatLady
03d5e56678 fix(ui): hide 'Recently Added' & 'Recent Requests' sliders when empty (#2190)
* fix(ui): hide 'Recently Added' & 'Recent Requests' sliders when empty

* fix(ui): hide 'errored' sliders too

* fix: type import

* fix: remove unneeded React import

* fix: missing TmdbTitleCard props

* refactor: remove isEmpty param for never-empty sliders

* fix: display empty watchlist message if autorequest enabled

* fix: pr suggestion

* fix(lang): remove no-longer-needed string
2022-08-30 23:51:55 +00:00
TheCatLady
410ad0d4b4 fix: failure to load SearchByNameModal (#3000) 2022-08-31 08:29:41 +09:00
TheCatLady
23f93e311d fix: do not display 'Request More' button if no requestable seasons (#2998) 2022-08-30 19:14:03 +09:00
Weblate (bot)
2950cf4438 feat(lang): translations update from Hosted Weblate (#2971)
* feat(lang): translated using Weblate (Greek)

Currently translated at 68.6% (768 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/el/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Japanese)

Currently translated at 58.3% (653 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ja/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Serbian)

Currently translated at 54.4% (609 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sr/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Albanian)

Currently translated at 92.0% (1030 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sq/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (French)

Currently translated at 99.1% (1110 of 1119 strings)

feat(lang): translated using Weblate (French)

Currently translated at 99.1% (1110 of 1119 strings)

feat(lang): translated using Weblate (French)

Currently translated at 99.1% (1110 of 1119 strings)

feat(lang): translated using Weblate (French)

Currently translated at 99.1% (1110 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (French)

Currently translated at 100.0% (1115 of 1115 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/fr/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Spanish)

Currently translated at 85.7% (959 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/es/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Catalan)

Currently translated at 99.2% (1111 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Catalan)

Currently translated at 100.0% (1115 of 1115 strings)

feat(lang): translated using Weblate (Catalan)

Currently translated at 92.8% (1035 of 1115 strings)

Co-authored-by: Cleiton Carvalho <cleitonsilvacarvalho@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: dtalens <databio@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ca/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Czech)

Currently translated at 87.9% (984 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/cs/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Polish)

Currently translated at 94.7% (1060 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Polish)

Currently translated at 95.5% (1065 of 1115 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Patryk <byakurau1@gmail.com>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pl/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Swedish)

Currently translated at 92.7% (1038 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/sv/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Russian)

Currently translated at 86.9% (973 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ru/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Arabic)

Currently translated at 91.9% (1029 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/ar/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Portuguese (Portugal))

Currently translated at 72.0% (806 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_PT/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Danish)

Currently translated at 91.5% (1025 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/da/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Simplified))

Currently translated at 92.4% (1034 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Chinese (Simplified))

Currently translated at 93.1% (1039 of 1115 strings)

Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hans/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Hungarian)

Currently translated at 87.9% (984 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/hu/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Dutch)

Currently translated at 92.1% (1031 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nl/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Portuguese (Brazil))

Currently translated at 98.8% (1106 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Portuguese (Brazil))

Currently translated at 99.6% (1111 of 1115 strings)

feat(lang): translated using Weblate (Portuguese (Brazil))

Currently translated at 96.0% (1071 of 1115 strings)

Co-authored-by: Cleiton Carvalho <cleitonsilvacarvalho@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/pt_BR/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Italian)

Currently translated at 92.9% (1040 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Italian)

Currently translated at 96.2% (1044 of 1085 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Simone <simoneungaro@hotmail.it>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/it/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 99.8% (1117 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 99.8% (1113 of 1115 strings)

feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 99.0% (1104 of 1115 strings)

feat(lang): translated using Weblate (Chinese (Traditional))

Currently translated at 99.8% (1086 of 1088 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/zh_Hant/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (German)

Currently translated at 95.3% (1067 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/de/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Norwegian Bokmål)

Currently translated at 99.9% (1118 of 1119 strings)

feat(lang): translated using Weblate (Norwegian Bokmål)

Currently translated at 95.8% (1073 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

feat(lang): translated using Weblate (Norwegian Bokmål)

Currently translated at 96.5% (1076 of 1115 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: exentler <gurandsrud@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/nb_NO/
Translation: Overseerr/Overseerr Frontend

* feat(lang): translated using Weblate (Lithuanian)

Currently translated at 47.9% (537 of 1119 strings)

Update translation files

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/
Translate-URL: https://hosted.weblate.org/projects/overseerr/overseerr-frontend/lt/
Translation: Overseerr/Overseerr Frontend

Co-authored-by: TheCatLady <o40yoym9@anonaddy.me>
Co-authored-by: Mathieu <math_du_88@yahoo.fr>
Co-authored-by: Cleiton Carvalho <cleitonsilvacarvalho@gmail.com>
Co-authored-by: dtalens <databio@gmail.com>
Co-authored-by: Patryk <byakurau1@gmail.com>
Co-authored-by: Eric <alchemillatruth@purelymail.com>
Co-authored-by: Simone <simoneungaro@hotmail.it>
Co-authored-by: exentler <gurandsrud@gmail.com>
2022-08-29 16:54:33 -07:00
TheCatLady
dbdecb1e0a fix(frontend): only allow 'request as' users w/ request perms (#2991) 2022-08-29 10:33:17 +00:00
renovate[bot]
833f52de56 fix(deps): pin dependency @headlessui/react to v0.0.0-insiders.b301f04 (#2993) [skip ci]
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2022-08-29 19:22:24 +09:00
semantic-release-bot
5125abdbf0 chore(release): 1.29.1 2022-04-06 23:34:24 +00:00
Ryan Cohen
724f8bb538 Merge branch 'develop' 2022-04-07 08:33:04 +09:00
semantic-release-bot
512f6e51e4 chore(release): 1.29.0 2022-04-01 09:03:58 +00:00
Ryan Cohen
1b36dded3f Merge branch 'develop' 2022-04-01 18:02:32 +09:00
Ryan Cohen
77511bf199 ci: disable husky for release ci 2022-04-01 18:01:22 +09:00
Ryan Cohen
26d77af3a4 Merge branch 'develop' 2022-04-01 17:45:51 +09:00
semantic-release-bot
2b111f1c34 chore(release): 1.28.0 2022-01-01 04:20:46 +00:00
Ryan Cohen
a6392cb2db Merge branch 'develop' 2022-01-01 13:11:57 +09:00
semantic-release-bot
6d55b50e5e chore(release): 1.27.0 2021-10-19 14:01:17 +00:00
sct
f7dc6256ba Merge branch 'develop' 2021-10-19 22:54:07 +09:00
semantic-release-bot
f1df1caea5 chore(release): 1.26.1 2021-09-20 00:22:06 +00:00
sct
d23c120dc0 Merge branch 'develop' 2021-09-20 09:14:29 +09:00
semantic-release-bot
353efa39d0 chore(release): 1.26.0 2021-09-19 12:15:52 +00:00
sct
21cdf7d113 Merge branch 'develop' 2021-09-19 21:08:16 +09:00
semantic-release-bot
f858f025fe chore(release): 1.25.0 2021-06-10 10:25:49 +00:00
sct
c92bb134d4 Merge branch 'develop' 2021-06-10 19:18:12 +09:00
semantic-release-bot
7e0e2a92e3 chore(release): 1.24.0 2021-05-05 08:57:48 +00:00
sct
e840489e57 Merge branch 'develop' 2021-05-05 17:50:27 +09:00
sct
800f4668ec chore: fix gitattributes for images [skip ci] 2021-05-05 17:49:55 +09:00
semantic-release-bot
f2c37babeb chore(release): 1.23.2 2021-04-21 12:28:28 +00:00
sct
24095eac03 Merge branch 'develop' 2021-04-21 21:20:07 +09:00
semantic-release-bot
8c782e0c93 chore(release): 1.23.1 2021-04-16 14:19:53 +00:00
sct
08ce7f24b8 Merge branch 'develop' 2021-04-16 23:11:54 +09:00
semantic-release-bot
67e794aca4 chore(release): 1.23.0 2021-04-16 12:38:05 +00:00
sct
c9c429d027 Merge branch 'develop' 2021-04-16 21:30:30 +09:00
semantic-release-bot
31ac11f4eb chore(release): 1.22.0 2021-04-01 06:33:50 +00:00
sct
f072a4e11d Merge branch 'develop' 2021-04-01 15:27:10 +09:00
semantic-release-bot
b24c23e549 chore(release): 1.21.1 2021-03-15 08:04:26 +00:00
sct
e602e9f758 Merge branch 'develop' 2021-03-15 07:56:33 +00:00
semantic-release-bot
afd46ebee8 chore(release): 1.21.0 2021-03-15 02:00:59 +00:00
sct
be47d1e56c Merge branch 'develop' 2021-03-15 01:52:10 +00:00
semantic-release-bot
0e612f01f1 chore(release): 1.20.1 2021-02-28 04:10:48 +00:00
sct
cd9d9ae8d2 Merge branch 'develop' 2021-02-28 04:03:43 +00:00
semantic-release-bot
ea2765f8c7 chore(release): 1.20.0 2021-02-23 12:33:56 +00:00
sct
448e7c3a7d Merge branch 'develop' 2021-02-23 12:26:58 +00:00
sct
6ab3cd77a7 Merge branch 'develop' 2021-02-23 12:09:08 +00:00
semantic-release-bot
3dfbb0e0a5 chore(release): 1.19.1 2021-02-06 05:14:36 +00:00
TheCatLady
726f62b9b6 fix(ui): Fix webhook URL validation regex (#864) 2021-02-06 14:08:24 +09:00
sct
81c30347f6 Merge branch 'develop' 2021-02-05 14:15:02 +00:00
semantic-release-bot
a397893217 chore(release): 1.19.0 2021-02-05 10:32:05 +00:00
sct
12c5bbd778 Merge branch 'develop' 2021-02-05 10:25:43 +00:00
sct
06261c1118 ci(snapcraft): remove --unshallow argument from fetch in Prepare step 2021-01-30 06:31:34 +00:00
semantic-release-bot
686fe6fdf8 chore(release): 1.18.0 2021-01-30 06:13:16 +00:00
sct
c80a1fa261 Merge branch 'develop' 2021-01-30 06:06:49 +00:00
semantic-release-bot
6167011ee5 chore(release): 1.17.2 2021-01-20 07:27:33 +00:00
sct
bc399d95a0 Merge branch 'develop' 2021-01-20 07:21:48 +00:00
semantic-release-bot
519dd17d37 chore(release): 1.17.1 2021-01-19 10:24:57 +00:00
sct
0761593411 Merge branch 'develop' 2021-01-19 10:18:51 +00:00
semantic-release-bot
caa45415b1 chore(release): 1.17.0 2021-01-19 07:58:37 +00:00
sct
ed297d9d6c Merge branch 'develop' 2021-01-19 07:52:47 +00:00
semantic-release-bot
c6486c3643 chore(release): 1.16.0 2021-01-07 09:58:09 +00:00
sct
f9695068a8 Merge branch 'develop' 2021-01-07 09:53:04 +00:00
semantic-release-bot
fd90adba4d chore(release): 1.15.0 2021-01-04 12:01:25 +00:00
sct
970aa612fe Merge pull request #570 from sct/release/release-20210104
Release
2021-01-04 20:56:34 +09:00
sct
71169944dc Merge branch 'develop' into release/release-20210104 2021-01-04 11:54:45 +00:00
semantic-release-bot
d77f9eb44e chore(release): 1.14.1 2021-01-02 08:57:24 +00:00
sct
22f2037ea6 fix(holiday): remove special holiday slider 2021-01-02 08:33:24 +00:00
semantic-release-bot
2cdf755c20 chore(release): 1.14.0 2020-12-25 11:52:44 +00:00
sct
f99ab47c01 Merge branch 'develop' 2020-12-25 20:47:19 +09:00
semantic-release-bot
7e4175ff21 chore(release): 1.13.0 2020-12-23 12:44:01 +00:00
sct
4157432aa7 Merge branch 'develop' 2020-12-23 21:39:00 +09:00
semantic-release-bot
741b2c4e9f chore(release): 1.12.1 2020-12-22 03:17:58 +00:00
sct
6dbe9ea814 Merge branch 'develop' 2020-12-22 12:12:25 +09:00
semantic-release-bot
96328ab5c6 chore(release): 1.12.0 2020-12-22 02:26:31 +00:00
sct
c31709681a Merge branch 'develop' 2020-12-22 11:21:19 +09:00
semantic-release-bot
0a3d7c5915 chore(release): 1.11.0 2020-12-20 01:18:39 +00:00
sct
912c63e562 Merge branch 'develop' 2020-12-20 10:12:59 +09:00
semantic-release-bot
077513151e chore(release): 1.10.0 2020-12-19 04:54:22 +00:00
sct
191f39e8bd Merge branch 'develop' 2020-12-19 13:49:05 +09:00
semantic-release-bot
048b6c1d90 chore(release): 1.9.1 2020-12-18 16:08:58 +00:00
sct
a6a065ac0b Merge branch 'develop' 2020-12-19 01:03:48 +09:00
semantic-release-bot
abb0b2d763 chore(release): 1.9.0 2020-12-18 12:05:35 +00:00
sct
d2668d3f49 Merge branch 'develop' 2020-12-18 21:00:48 +09:00
semantic-release-bot
bee6eb288f chore(release): 1.8.0 2020-12-17 15:54:40 +00:00
sct
3473aed27e Merge branch 'develop' 2020-12-17 15:49:18 +00:00
semantic-release-bot
a9144a2167 chore(release): 1.7.0 2020-12-17 14:09:58 +00:00
sct
59822d6e42 Merge branch 'develop' 2020-12-17 14:05:24 +00:00
semantic-release-bot
0bd1bee1fa chore(release): 1.6.0 2020-12-16 05:56:57 +00:00
sct
46326f9d16 Merge branch 'develop' 2020-12-16 05:52:26 +00:00
semantic-release-bot
54b96cc451 chore(release): 1.5.0 2020-12-15 09:05:37 +00:00
sct
7d2a187865 Merge branch 'develop' 2020-12-15 09:00:44 +00:00
semantic-release-bot
17df5dd072 chore(release): 1.4.0 2020-12-15 00:53:05 +00:00
sct
4b48a36ad3 Merge branch 'develop' 2020-12-15 00:48:28 +00:00
semantic-release-bot
16bd3e9fd5 chore(release): 1.3.2 2020-12-14 13:11:15 +00:00
sct
6360c82898 Merge branch 'develop' 2020-12-14 13:06:22 +00:00
semantic-release-bot
f1df9eeb2f chore(release): 1.3.1 2020-12-14 08:03:51 +00:00
sct
a3973791fb Merge branch 'develop' 2020-12-14 07:59:18 +00:00
semantic-release-bot
157ab80be1 chore(release): 1.3.0 2020-12-14 05:32:31 +00:00
sct
ac0f95b773 Merge branch 'develop' 2020-12-14 05:27:01 +00:00
semantic-release-bot
45ebfb937e chore(release): 1.2.0 2020-12-11 22:55:12 +00:00
sct
85325cda7f Merge branch 'develop' 2020-12-11 22:50:33 +00:00
semantic-release-bot
5fc02d0d94 chore(release): 1.1.0 2020-12-08 08:21:58 +00:00
sct
16902f85fb Merge branch 'develop' 2020-12-08 08:16:24 +00:00
semantic-release-bot
17b5a0bf9c chore(release): 1.0.0 2020-12-06 01:58:28 +00:00
64 changed files with 3304 additions and 745 deletions

View File

@@ -9,6 +9,8 @@ jobs:
semantic-release:
name: Tag and release latest version
runs-on: ubuntu-20.04
env:
HUSKY: 0
steps:
- name: Checkout
uses: actions/checkout@v3

1352
CHANGELOG.md Normal file

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,25 @@
describe('Pull To Refresh', () => {
beforeEach(() => {
cy.login(Cypress.env('ADMIN_EMAIL'), Cypress.env('ADMIN_PASSWORD'));
cy.viewport(390, 844);
cy.visitMobile('/');
});
it('reloads the current page', () => {
cy.wait(500);
cy.intercept({
method: 'GET',
url: '/api/v1/*',
}).as('apiCall');
cy.get('.searchbar').swipe('bottom', [190, 400]);
cy.wait('@apiCall').then((interception) => {
assert.isNotNull(
interception.response.body,
'API was called and received data'
);
});
});
});

View File

@@ -1,4 +1,5 @@
/// <reference types="cypress" />
import 'cy-mobile-commands';
Cypress.Commands.add('login', (email, password) => {
cy.session(

View File

@@ -17,4 +17,7 @@ module.exports = {
return config;
},
experimental: {
scrollRestoration: true,
},
};

View File

@@ -121,9 +121,6 @@ components:
hideAvailable:
type: boolean
example: false
hideRequested:
type: boolean
example: false
partialRequestsEnabled:
type: boolean
example: false
@@ -2542,6 +2539,12 @@ paths:
nullable: true
enum: [debug, info, warn, error]
default: debug
- in: query
name: search
schema:
type: string
nullable: true
example: plex
responses:
'200':
description: Server log returned

View File

@@ -1,6 +1,6 @@
{
"name": "overseerr",
"version": "0.1.0",
"version": "1.30.0",
"private": true,
"scripts": {
"dev": "nodemon -e ts --watch server --watch overseerr-api.yml -e .json,.ts,.yml -x ts-node -r tsconfig-paths/register --files --project server/tsconfig.json server/index.ts",
@@ -33,7 +33,7 @@
"@formatjs/intl-locale": "3.0.3",
"@formatjs/intl-pluralrules": "5.0.3",
"@formatjs/intl-utils": "3.8.4",
"@headlessui/react": "^0.0.0-insiders.b301f04",
"@headlessui/react": "0.0.0-insiders.b301f04",
"@heroicons/react": "1.0.6",
"@supercharge/request-ip": "1.2.0",
"@svgr/webpack": "6.3.1",
@@ -47,6 +47,7 @@
"cookie-parser": "1.4.6",
"copy-to-clipboard": "3.3.2",
"country-flag-icons": "1.5.5",
"cronstrue": "2.11.0",
"csurf": "1.11.0",
"date-fns": "2.29.1",
"email-templates": "9.0.0",
@@ -66,6 +67,7 @@
"openpgp": "5.4.0",
"plex-api": "5.3.2",
"pug": "3.0.2",
"pulltorefreshjs": "0.1.22",
"react": "18.2.0",
"react-ace": "10.1.0",
"react-animate-height": "2.1.2",
@@ -115,6 +117,7 @@
"@types/node": "17.0.36",
"@types/node-schedule": "2.1.0",
"@types/nodemailer": "6.4.5",
"@types/pulltorefreshjs": "0.1.5",
"@types/react": "18.0.17",
"@types/react-dom": "18.0.6",
"@types/react-transition-group": "4.4.5",
@@ -132,6 +135,7 @@
"babel-plugin-react-intl-auto": "3.3.0",
"commitizen": "4.2.5",
"copyfiles": "2.4.1",
"cy-mobile-commands": "0.3.0",
"cypress": "10.6.0",
"cz-conventional-changelog": "3.3.0",
"eslint": "8.22.0",

View File

@@ -232,6 +232,10 @@ class PlexAPI {
uri: `/library/sections/${id}/all?sort=addedAt%3Adesc&addedAt>>=${Math.floor(
options.addedAt / 1000
)}`,
extraHeaders: {
'X-Plex-Container-Start': `0`,
'X-Plex-Container-Size': `500`,
},
});
return response.MediaContainer.Metadata;

View File

@@ -25,7 +25,6 @@ export interface PublicSettingsResponse {
applicationTitle: string;
applicationUrl: string;
hideAvailable: boolean;
hideRequested: boolean;
localLogin: boolean;
movie4kEnabled: boolean;
series4kEnabled: boolean;

View File

@@ -14,6 +14,7 @@ interface ScheduledJob {
name: string;
type: 'process' | 'command';
interval: 'short' | 'long' | 'fixed';
cronSchedule: string;
running?: () => boolean;
cancelFn?: () => void;
}
@@ -29,6 +30,7 @@ export const startJobs = (): void => {
name: 'Plex Recently Added Scan',
type: 'process',
interval: 'short',
cronSchedule: jobs['plex-recently-added-scan'].schedule,
job: schedule.scheduleJob(jobs['plex-recently-added-scan'].schedule, () => {
logger.info('Starting scheduled job: Plex Recently Added Scan', {
label: 'Jobs',
@@ -45,6 +47,7 @@ export const startJobs = (): void => {
name: 'Plex Full Library Scan',
type: 'process',
interval: 'long',
cronSchedule: jobs['plex-full-scan'].schedule,
job: schedule.scheduleJob(jobs['plex-full-scan'].schedule, () => {
logger.info('Starting scheduled job: Plex Full Library Scan', {
label: 'Jobs',
@@ -61,6 +64,7 @@ export const startJobs = (): void => {
name: 'Plex Watchlist Sync',
type: 'process',
interval: 'long',
cronSchedule: jobs['plex-watchlist-sync'].schedule,
job: schedule.scheduleJob(jobs['plex-watchlist-sync'].schedule, () => {
logger.info('Starting scheduled job: Plex Watchlist Sync', {
label: 'Jobs',
@@ -75,6 +79,7 @@ export const startJobs = (): void => {
name: 'Radarr Scan',
type: 'process',
interval: 'long',
cronSchedule: jobs['radarr-scan'].schedule,
job: schedule.scheduleJob(jobs['radarr-scan'].schedule, () => {
logger.info('Starting scheduled job: Radarr Scan', { label: 'Jobs' });
radarrScanner.run();
@@ -89,6 +94,7 @@ export const startJobs = (): void => {
name: 'Sonarr Scan',
type: 'process',
interval: 'long',
cronSchedule: jobs['sonarr-scan'].schedule,
job: schedule.scheduleJob(jobs['sonarr-scan'].schedule, () => {
logger.info('Starting scheduled job: Sonarr Scan', { label: 'Jobs' });
sonarrScanner.run();
@@ -103,6 +109,7 @@ export const startJobs = (): void => {
name: 'Download Sync',
type: 'command',
interval: 'fixed',
cronSchedule: jobs['download-sync'].schedule,
job: schedule.scheduleJob(jobs['download-sync'].schedule, () => {
logger.debug('Starting scheduled job: Download Sync', {
label: 'Jobs',
@@ -117,6 +124,7 @@ export const startJobs = (): void => {
name: 'Download Sync Reset',
type: 'command',
interval: 'long',
cronSchedule: jobs['download-sync-reset'].schedule,
job: schedule.scheduleJob(jobs['download-sync-reset'].schedule, () => {
logger.info('Starting scheduled job: Download Sync Reset', {
label: 'Jobs',

View File

@@ -94,7 +94,6 @@ export interface MainSettings {
tv: Quota;
};
hideAvailable: boolean;
hideRequested: boolean;
localLogin: boolean;
newPlexLogin: boolean;
region: string;
@@ -112,7 +111,6 @@ interface FullPublicSettings extends PublicSettings {
applicationTitle: string;
applicationUrl: string;
hideAvailable: boolean;
hideRequested: boolean;
localLogin: boolean;
movie4kEnabled: boolean;
series4kEnabled: boolean;
@@ -289,7 +287,6 @@ class Settings {
tv: {},
},
hideAvailable: false,
hideRequested: false,
localLogin: true,
newPlexLogin: true,
region: '',
@@ -482,7 +479,6 @@ class Settings {
applicationTitle: this.data.main.applicationTitle,
applicationUrl: this.data.main.applicationUrl,
hideAvailable: this.data.main.hideAvailable,
hideRequested: this.data.main.hideRequested,
localLogin: this.data.main.localLogin,
movie4kEnabled: this.data.radarr.some(
(radarr) => radarr.is4k && radarr.isDefault

View File

@@ -25,7 +25,7 @@ import { getAppVersion } from '@server/utils/appVersion';
import { Router } from 'express';
import rateLimit from 'express-rate-limit';
import fs from 'fs';
import { merge, omit, set, sortBy } from 'lodash';
import { escapeRegExp, merge, omit, set, sortBy } from 'lodash';
import { rescheduleJob } from 'node-schedule';
import path from 'path';
import semver from 'semver';
@@ -344,6 +344,8 @@ settingsRoutes.get(
(req, res, next) => {
const pageSize = req.query.take ? Number(req.query.take) : 25;
const skip = req.query.skip ? Number(req.query.skip) : 0;
const search = (req.query.search as string) ?? '';
const searchRegexp = new RegExp(escapeRegExp(search), 'i');
let filter: string[] = [];
switch (req.query.filter) {
@@ -375,6 +377,22 @@ settingsRoutes.get(
'data',
];
const deepValueStrings = (obj: Record<string, unknown>): string[] => {
const values = [];
for (const val of Object.values(obj)) {
if (typeof val === 'string') {
values.push(val);
} else if (typeof val === 'number') {
values.push(val.toString());
} else if (val !== null && typeof val === 'object') {
values.push(...deepValueStrings(val as Record<string, unknown>));
}
}
return values;
};
try {
fs.readFileSync(logFile, 'utf-8')
.split('\n')
@@ -399,6 +417,19 @@ settingsRoutes.get(
});
}
if (req.query.search) {
if (
// label and data are sometimes undefined
!searchRegexp.test(logMessage.label ?? '') &&
!searchRegexp.test(logMessage.message) &&
!deepValueStrings(logMessage.data ?? {}).some((val) =>
searchRegexp.test(val)
)
) {
return;
}
}
logs.push(logMessage);
});
@@ -433,6 +464,7 @@ settingsRoutes.get('/jobs', (_req, res) => {
name: job.name,
type: job.type,
interval: job.interval,
cronSchedule: job.cronSchedule,
nextExecutionTime: job.job.nextInvocation(),
running: job.running ? job.running() : false,
}))
@@ -453,6 +485,7 @@ settingsRoutes.post<{ jobId: string }>('/jobs/:jobId/run', (req, res, next) => {
name: scheduledJob.name,
type: scheduledJob.type,
interval: scheduledJob.interval,
cronSchedule: scheduledJob.cronSchedule,
nextExecutionTime: scheduledJob.job.nextInvocation(),
running: scheduledJob.running ? scheduledJob.running() : false,
});
@@ -478,6 +511,7 @@ settingsRoutes.post<{ jobId: string }>(
name: scheduledJob.name,
type: scheduledJob.type,
interval: scheduledJob.interval,
cronSchedule: scheduledJob.cronSchedule,
nextExecutionTime: scheduledJob.job.nextInvocation(),
running: scheduledJob.running ? scheduledJob.running() : false,
});
@@ -502,11 +536,14 @@ settingsRoutes.post<{ jobId: string }>(
settings.jobs[scheduledJob.id].schedule = req.body.schedule;
settings.save();
scheduledJob.cronSchedule = req.body.schedule;
return res.status(200).json({
id: scheduledJob.id,
name: scheduledJob.name,
type: scheduledJob.type,
interval: scheduledJob.interval,
cronSchedule: scheduledJob.cronSchedule,
nextExecutionTime: scheduledJob.job.nextInvocation(),
running: scheduledJob.running ? scheduledJob.running() : false,
});

View File

@@ -0,0 +1,45 @@
import {
BellIcon,
CheckIcon,
ClockIcon,
MinusSmIcon,
} from '@heroicons/react/solid';
import { MediaStatus } from '@server/constants/media';
interface StatusBadgeMiniProps {
status: MediaStatus;
is4k?: boolean;
}
const StatusBadgeMini = ({ status, is4k = false }: StatusBadgeMiniProps) => {
const badgeStyle = ['w-5 rounded-full p-0.5 text-white ring-1'];
let indicatorIcon: React.ReactNode;
switch (status) {
case MediaStatus.PROCESSING:
badgeStyle.push('bg-indigo-500 ring-indigo-400');
indicatorIcon = <ClockIcon />;
break;
case MediaStatus.AVAILABLE:
badgeStyle.push('bg-green-500 ring-green-400');
indicatorIcon = <CheckIcon />;
break;
case MediaStatus.PENDING:
badgeStyle.push('bg-yellow-500 ring-yellow-400');
indicatorIcon = <BellIcon />;
break;
case MediaStatus.PARTIALLY_AVAILABLE:
badgeStyle.push('bg-green-500 ring-green-400');
indicatorIcon = <MinusSmIcon />;
break;
}
return (
<div className="inline-flex whitespace-nowrap rounded-full text-xs font-semibold leading-5 ring-1 ring-gray-700">
<div className={badgeStyle.join(' ')}>{indicatorIcon}</div>
{is4k && <span className="pl-1 pr-2 text-gray-200">4K</span>}
</div>
);
};
export default StatusBadgeMini;

View File

@@ -23,10 +23,11 @@ const messages = defineMessages({
populartv: 'Popular Series',
upcomingtv: 'Upcoming Series',
recentlyAdded: 'Recently Added',
noRequests: 'No requests.',
upcoming: 'Upcoming Movies',
trending: 'Trending',
plexwatchlist: 'Your Plex Watchlist',
emptywatchlist:
'Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.',
});
const Discover = () => {
@@ -58,76 +59,97 @@ const Discover = () => {
return (
<>
<PageTitle title={intl.formatMessage(messages.discover)} />
{hasPermission([Permission.MANAGE_REQUESTS, Permission.RECENT_VIEW], {
type: 'or',
}) && (
<>
<div className="slider-header">
<div className="slider-title">
<span>{intl.formatMessage(messages.recentlyAdded)}</span>
{(!media || !!media.results.length) &&
!mediaError &&
hasPermission([Permission.MANAGE_REQUESTS, Permission.RECENT_VIEW], {
type: 'or',
}) && (
<>
<div className="slider-header">
<div className="slider-title">
<span>{intl.formatMessage(messages.recentlyAdded)}</span>
</div>
</div>
</div>
<Slider
sliderKey="media"
isLoading={!media && !mediaError}
isEmpty={!!media && !mediaError && media.results.length === 0}
items={media?.results?.map((item) => (
<TmdbTitleCard
key={`media-slider-item-${item.id}`}
id={item.id}
tmdbId={item.tmdbId}
tvdbId={item.tvdbId}
type={item.mediaType}
/>
))}
/>
</>
)}
<div className="slider-header">
<Link href="/requests?filter=all">
<a className="slider-title">
<span>{intl.formatMessage(messages.recentrequests)}</span>
<ArrowCircleRightIcon />
</a>
</Link>
</div>
<Slider
sliderKey="requests"
isLoading={!requests && !requestError}
isEmpty={!!requests && !requestError && requests.results.length === 0}
items={(requests?.results ?? []).map((request) => (
<RequestCard
key={`request-slider-item-${request.id}`}
request={request}
/>
))}
placeholder={<RequestCard.Placeholder />}
emptyMessage={intl.formatMessage(messages.noRequests)}
/>
{(!watchlistItems || !!watchlistItems.results.length) && !watchlistError && (
<Slider
sliderKey="media"
isLoading={!media}
items={(media?.results ?? []).map((item) => (
<TmdbTitleCard
key={`media-slider-item-${item.id}`}
id={item.id}
tmdbId={item.tmdbId}
tvdbId={item.tvdbId}
type={item.mediaType}
/>
))}
/>
</>
)}
{(!requests || !!requests.results.length) && !requestError && (
<>
<div className="slider-header">
<Link href="/discover/watchlist">
<Link href="/requests?filter=all">
<a className="slider-title">
<span>{intl.formatMessage(messages.plexwatchlist)}</span>
<span>{intl.formatMessage(messages.recentrequests)}</span>
<ArrowCircleRightIcon />
</a>
</Link>
</div>
<Slider
sliderKey="watchlist"
isLoading={!watchlistItems && !watchlistError}
items={watchlistItems?.results.map((item) => (
<TmdbTitleCard
id={item.tmdbId}
key={`watchlist-slider-item-${item.ratingKey}`}
tmdbId={item.tmdbId}
type={item.mediaType}
sliderKey="requests"
isLoading={!requests}
items={(requests?.results ?? []).map((request) => (
<RequestCard
key={`request-slider-item-${request.id}`}
request={request}
/>
))}
placeholder={<RequestCard.Placeholder />}
/>
</>
)}
{user?.userType === UserType.PLEX &&
(!watchlistItems ||
!!watchlistItems.results.length ||
user.settings?.watchlistSyncMovies ||
user.settings?.watchlistSyncTv) &&
!watchlistError && (
<>
<div className="slider-header">
<Link href="/discover/watchlist">
<a className="slider-title">
<span>{intl.formatMessage(messages.plexwatchlist)}</span>
<ArrowCircleRightIcon />
</a>
</Link>
</div>
<Slider
sliderKey="watchlist"
isLoading={!watchlistItems}
isEmpty={!!watchlistItems && watchlistItems.results.length === 0}
emptyMessage={intl.formatMessage(messages.emptywatchlist, {
PlexWatchlistSupportLink: (msg: React.ReactNode) => (
<a
href="https://support.plex.tv/articles/universal-watchlist/"
className="text-white transition duration-300 hover:underline"
target="_blank"
rel="noreferrer"
>
{msg}
</a>
),
})}
items={watchlistItems?.results.map((item) => (
<TmdbTitleCard
id={item.tmdbId}
key={`watchlist-slider-item-${item.ratingKey}`}
tmdbId={item.tmdbId}
type={item.mediaType}
/>
))}
/>
</>
)}
<MediaSlider
sliderKey="trending"
title={intl.formatMessage(messages.trending)}

View File

@@ -20,7 +20,6 @@ import * as Yup from 'yup';
const messages = defineMessages({
validationMessageRequired: 'You must provide a description',
issomethingwrong: 'Is there a problem with {title}?',
whatswrong: "What's wrong?",
providedetail:
'Please provide a detailed explanation of the issue you encountered.',

View File

@@ -1,6 +1,7 @@
import SearchInput from '@app/components/Layout/SearchInput';
import Sidebar from '@app/components/Layout/Sidebar';
import UserDropdown from '@app/components/Layout/UserDropdown';
import PullToRefresh from '@app/components/PullToRefresh';
import type { AvailableLocale } from '@app/context/LanguageContext';
import useLocale from '@app/hooks/useLocale';
import useSettings from '@app/hooks/useSettings';
@@ -57,6 +58,7 @@ const Layout = ({ children }: LayoutProps) => {
<Sidebar open={isSidebarOpen} setClosed={() => setSidebarOpen(false)} />
<div className="relative mb-16 flex w-0 min-w-0 flex-1 flex-col lg:ml-64">
<PullToRefresh />
<div
className={`searchbar fixed left-0 right-0 top-0 z-10 flex flex-shrink-0 bg-opacity-80 transition duration-300 ${
isScrolled ? 'bg-gray-700' : 'bg-transparent'

View File

@@ -55,18 +55,12 @@ const MediaSlider = ({
[] as (MovieResult | TvResult | PersonResult)[]
);
if (
settings.currentSettings.hideAvailable ||
settings.currentSettings.hideRequested
) {
if (settings.currentSettings.hideAvailable) {
titles = titles.filter(
(i) =>
i.mediaType === 'person' ||
(i.mediaInfo?.status !== MediaStatus.AVAILABLE &&
i.mediaInfo?.status !== MediaStatus.PARTIALLY_AVAILABLE &&
(!settings.currentSettings.hideRequested ||
(i.mediaInfo?.status !== MediaStatus.PENDING &&
i.mediaInfo?.status !== MediaStatus.PROCESSING)))
(i.mediaType === 'movie' || i.mediaType === 'tv') &&
i.mediaInfo?.status !== MediaStatus.AVAILABLE &&
i.mediaInfo?.status !== MediaStatus.PARTIALLY_AVAILABLE
);
}

View File

@@ -0,0 +1,40 @@
import { RefreshIcon } from '@heroicons/react/outline';
import Router from 'next/router';
import PR from 'pulltorefreshjs';
import { useEffect } from 'react';
import ReactDOMServer from 'react-dom/server';
const PullToRefresh: React.FC = () => {
useEffect(() => {
PR.init({
mainElement: '#pull-to-refresh',
onRefresh() {
Router.reload();
},
iconArrow: ReactDOMServer.renderToString(
<div className="p-2">
<RefreshIcon className="z-50 m-auto h-9 w-9 rounded-full border-4 border-gray-800 bg-gray-800 text-indigo-500 ring-1 ring-gray-700" />
</div>
),
iconRefreshing: ReactDOMServer.renderToString(
<div
className="animate-spin p-2"
style={{ animationDirection: 'reverse' }}
>
<RefreshIcon className="z-50 m-auto h-9 w-9 rounded-full border-4 border-gray-800 bg-gray-800 text-indigo-500 ring-1 ring-gray-700" />
</div>
),
instructionsPullToRefresh: ReactDOMServer.renderToString(<div />),
instructionsReleaseToRefresh: ReactDOMServer.renderToString(<div />),
instructionsRefreshing: ReactDOMServer.renderToString(<div />),
distReload: 60,
});
return () => {
PR.destroyAll();
};
}, []);
return <div id="pull-to-refresh"></div>;
};
export default PullToRefresh;

View File

@@ -292,7 +292,6 @@ const RequestButton = ({
}) &&
media &&
media.status !== MediaStatus.AVAILABLE &&
media.status !== MediaStatus.UNKNOWN &&
!isShowComplete
) {
buttons.push({
@@ -338,7 +337,6 @@ const RequestButton = ({
}) &&
media &&
media.status4k !== MediaStatus.AVAILABLE &&
media.status4k !== MediaStatus.UNKNOWN &&
!is4kShowComplete &&
settings.currentSettings.series4kEnabled
) {

View File

@@ -357,20 +357,13 @@ const RequestCard = ({ request, onTitleData }: RequestCardProps) => {
: request.seasons.length,
})}
</span>
{title.seasons.filter((season) => season.seasonNumber !== 0)
.length === request.seasons.length ? (
<span className="mr-2 uppercase">
<Badge>{intl.formatMessage(globalMessages.all)}</Badge>
</span>
) : (
<div className="hide-scrollbar overflow-x-scroll">
{request.seasons.map((season) => (
<span key={`season-${season.id}`} className="mr-2">
<Badge>{season.seasonNumber}</Badge>
</span>
))}
</div>
)}
<div className="hide-scrollbar overflow-x-scroll">
{request.seasons.map((season) => (
<span key={`season-${season.id}`} className="mr-2">
<Badge>{season.seasonNumber}</Badge>
</span>
))}
</div>
</div>
)}
<div className="mt-2 flex items-center text-sm sm:mt-1">

View File

@@ -420,20 +420,13 @@ const RequestItem = ({ request, revalidateList }: RequestItemProps) => {
: request.seasons.length,
})}
</span>
{title.seasons.filter((season) => season.seasonNumber !== 0)
.length === request.seasons.length ? (
<span className="mr-2 uppercase">
<Badge>{intl.formatMessage(globalMessages.all)}</Badge>
</span>
) : (
<div className="hide-scrollbar flex flex-nowrap overflow-x-scroll">
{request.seasons.map((season) => (
<span key={`season-${season.id}`} className="mr-2">
<Badge>{season.seasonNumber}</Badge>
</span>
))}
</div>
)}
<div className="hide-scrollbar flex flex-nowrap overflow-x-scroll">
{request.seasons.map((season) => (
<span key={`season-${season.id}`} className="mr-2">
<Badge>{season.seasonNumber}</Badge>
</span>
))}
</div>
</div>
)}
</div>

View File

@@ -44,6 +44,7 @@ const RequestList = () => {
const { user } = useUser({
id: Number(router.query.userId),
});
const { user: currentUser } = useUser();
const [currentFilter, setCurrentFilter] = useState<Filter>(Filter.PENDING);
const [currentSort, setCurrentSort] = useState<Sort>('added');
const [currentPageSize, setCurrentPageSize] = useState<number>(10);
@@ -60,7 +61,11 @@ const RequestList = () => {
`/api/v1/request?take=${currentPageSize}&skip=${
pageIndex * currentPageSize
}&filter=${currentFilter}&sort=${currentSort}${
router.query.userId ? `&requestedBy=${router.query.userId}` : ''
router.pathname.startsWith('/profile')
? `&requestedBy=${currentUser?.id}`
: router.query.userId
? `&requestedBy=${router.query.userId}`
: ''
}`
);
@@ -116,7 +121,11 @@ const RequestList = () => {
<div className="mb-4 flex flex-col justify-between lg:flex-row lg:items-end">
<Header
subtext={
router.query.userId ? (
router.pathname.startsWith('/profile') ? (
<Link href={`/profile`}>
<a className="hover:underline">{currentUser?.displayName}</a>
</Link>
) : router.query.userId ? (
<Link href={`/users/${user?.id}`}>
<a className="hover:underline">{user?.displayName}</a>
</Link>

View File

@@ -11,8 +11,9 @@ import type {
ServiceCommonServerWithDetails,
} from '@server/interfaces/api/serviceInterfaces';
import type { UserResultsResponse } from '@server/interfaces/api/userInterfaces';
import { hasPermission } from '@server/lib/permissions';
import { isEqual } from 'lodash';
import { useEffect, useState } from 'react';
import { useEffect, useMemo, useState } from 'react';
import { defineMessages, useIntl } from 'react-intl';
import Select from 'react-select';
import useSWR from 'swr';
@@ -64,7 +65,7 @@ const AdvancedRequester = ({
onChange,
}: AdvancedRequesterProps) => {
const intl = useIntl();
const { user, hasPermission } = useUser();
const { user: currentUser, hasPermission: currentHasPermission } = useUser();
const { data, error } = useSWR<ServiceCommonServer[]>(
`/api/v1/service/${type === 'movie' ? 'radarr' : 'sonarr'}`,
{
@@ -113,16 +114,41 @@ const AdvancedRequester = ({
);
const { data: userData } = useSWR<UserResultsResponse>(
hasPermission([Permission.MANAGE_REQUESTS, Permission.MANAGE_USERS])
currentHasPermission([Permission.MANAGE_REQUESTS, Permission.MANAGE_USERS])
? '/api/v1/user?take=1000&sort=displayname'
: null
);
const filteredUserData = useMemo(
() =>
userData?.results.filter((user) =>
hasPermission(
is4k
? [
Permission.REQUEST_4K,
type === 'movie'
? Permission.REQUEST_4K_MOVIE
: Permission.REQUEST_4K_TV,
]
: [
Permission.REQUEST,
type === 'movie'
? Permission.REQUEST_MOVIE
: Permission.REQUEST_TV,
],
user.permissions,
{ type: 'or' }
)
),
[userData?.results]
);
useEffect(() => {
if (userData?.results && !requestUser) {
setSelectedUser(userData.results.find((u) => u.id === user?.id) ?? null);
if (filteredUserData && !requestUser) {
setSelectedUser(
filteredUserData.find((u) => u.id === currentUser?.id) ?? null
);
}
}, [userData?.results]);
}, [filteredUserData]);
useEffect(() => {
let defaultServer = data?.find(
@@ -273,7 +299,7 @@ const AdvancedRequester = ({
serverData.rootFolders.length < 2 &&
(serverData.languageProfiles ?? []).length < 2 &&
!serverData.tags?.length)))) &&
(!selectedUser || (userData?.results ?? []).length < 2)
(!selectedUser || (filteredUserData ?? []).length < 2)
) {
return null;
}
@@ -512,9 +538,12 @@ const AdvancedRequester = ({
/>
</div>
)}
{hasPermission([Permission.MANAGE_REQUESTS, Permission.MANAGE_USERS]) &&
{currentHasPermission([
Permission.MANAGE_REQUESTS,
Permission.MANAGE_USERS,
]) &&
selectedUser &&
(userData?.results ?? []).length > 1 && (
(filteredUserData ?? []).length > 1 && (
<Listbox
as="div"
value={selectedUser}
@@ -565,7 +594,7 @@ const AdvancedRequester = ({
static
className="shadow-xs max-h-60 overflow-auto rounded-md py-1 text-base leading-6 focus:outline-none sm:text-sm sm:leading-5"
>
{userData?.results.map((user) => (
{filteredUserData?.map((user) => (
<Listbox.Option key={user.id} value={user}>
{({ selected, active }) => (
<div

View File

@@ -1,5 +1,4 @@
import Alert from '@app/components/Common/Alert';
import { SmallLoadingSpinner } from '@app/components/Common/LoadingSpinner';
import Modal from '@app/components/Common/Modal';
import globalMessages from '@app/i18n/globalMessages';
import type { SonarrSeries } from '@server/api/servarr/sonarr';
@@ -8,30 +7,30 @@ import useSWR from 'swr';
const messages = defineMessages({
notvdbiddescription:
"We couldn't automatically match your request. Please select the correct match from the list below.",
nosummary: 'No summary for this title was found.',
'We were unable to automatically match this series. Please select the correct match below.',
nomatches: 'We were unable to find a match for this series.',
});
interface SearchByNameModalProps {
setTvdbId: (id: number) => void;
tvdbId: number | undefined;
loading: boolean;
onCancel?: () => void;
closeModal: () => void;
modalTitle: string;
modalSubTitle: string;
tmdbId: number;
backdrop?: string;
}
const SearchByNameModal = ({
setTvdbId,
tvdbId,
loading,
onCancel,
closeModal,
modalTitle,
modalSubTitle,
tmdbId,
backdrop,
}: SearchByNameModalProps) => {
const intl = useIntl();
const { data, error } = useSWR<SonarrSeries[]>(
@@ -42,9 +41,25 @@ const SearchByNameModal = ({
setTvdbId(tvdbId);
};
if ((data ?? []).length === 0 || error) {
return (
<Modal
loading={!data && !error}
backgroundClickable
onOk={onCancel}
title={modalTitle}
subTitle={modalSubTitle}
okText={intl.formatMessage(globalMessages.close)}
okButtonType="primary"
backdrop={backdrop}
>
<Alert title={intl.formatMessage(messages.nomatches)} type="info" />
</Modal>
);
}
return (
<Modal
loading={loading && !error}
backgroundClickable
onCancel={onCancel}
onOk={closeModal}
@@ -53,12 +68,12 @@ const SearchByNameModal = ({
okText={intl.formatMessage(globalMessages.next)}
okDisabled={!tvdbId}
okButtonType="primary"
backdrop={backdrop}
>
<Alert
title={intl.formatMessage(messages.notvdbiddescription)}
type="info"
/>
{!data && !error && <SmallLoadingSpinner />}
<div className="grid grid-cols-1 gap-4 pb-2 md:grid-cols-2">
{data?.slice(0, 6).map((item) => (
<button
@@ -67,7 +82,7 @@ const SearchByNameModal = ({
onClick={() => handleClick(item.tvdbId)}
>
<div
className={`flex h-40 w-full items-center overflow-hidden rounded-xl bg-gray-600 p-2 shadow transition ${
className={`flex h-40 w-full items-center overflow-hidden rounded-xl border border-gray-700 bg-gray-700 bg-opacity-20 p-2 shadow backdrop-blur transition ${
tvdbId === item.tvdbId ? 'ring ring-indigo-500' : ''
} `}
>
@@ -82,12 +97,35 @@ const SearchByNameModal = ({
/>
</div>
<div className="flex-grow self-start p-3 text-left">
<div className="text-grey-200 text-sm font-medium">
<div className="text-sm font-medium leading-tight">
{item.year}
</div>
<div
className="text-grey-200 text-xl font-bold leading-tight"
style={{
WebkitLineClamp: 1,
display: '-webkit-box',
overflow: 'hidden',
WebkitBoxOrient: 'vertical',
wordBreak: 'break-word',
}}
>
{item.title}
</div>
<div className="h-24 overflow-hidden text-sm text-gray-400">
{item.overview ?? intl.formatMessage(messages.nosummary)}
</div>
{item.overview && (
<div
className="whitespace-normal text-xs text-gray-400"
style={{
WebkitLineClamp: 5,
display: '-webkit-box',
overflow: 'hidden',
WebkitBoxOrient: 'vertical',
wordBreak: 'break-word',
}}
>
{item.overview}
</div>
)}
</div>
</div>
</button>

View File

@@ -358,18 +358,18 @@ const TvRequestModal = ({
const isOwner = editRequest && editRequest.requestedBy.id === user?.id;
return data && !data.externalIds.tvdbId && searchModal.show ? (
return data && !error && !data.externalIds.tvdbId && searchModal.show ? (
<SearchByNameModal
tvdbId={tvdbId}
setTvdbId={setTvdbId}
closeModal={() => setSearchModal({ show: false })}
loading={!error}
onCancel={onCancel}
modalTitle={intl.formatMessage(
is4k ? messages.requestseries4ktitle : messages.requestseriestitle
)}
modalSubTitle={data.name}
tmdbId={tmdbId}
backdrop={`https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/${data?.backdropPath}`}
/>
) : (
<Modal

View File

@@ -33,7 +33,7 @@ const Search = () => {
{
query: router.query.query,
},
{ hideAvailableOrRequested: true }
{ hideAvailable: false }
);
if (error) {

View File

@@ -5,6 +5,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import Modal from '@app/components/Common/Modal';
import PageTitle from '@app/components/Common/PageTitle';
import Table from '@app/components/Common/Table';
import useLocale from '@app/hooks/useLocale';
import globalMessages from '@app/i18n/globalMessages';
import { formatBytes } from '@app/utils/numberHelpers';
import { Transition } from '@headlessui/react';
@@ -13,7 +14,8 @@ import { PencilIcon } from '@heroicons/react/solid';
import type { CacheItem } from '@server/interfaces/api/settingsInterfaces';
import type { JobId } from '@server/lib/settings';
import axios from 'axios';
import { Fragment, useState } from 'react';
import cronstrue from 'cronstrue/i18n';
import { Fragment, useReducer, useState } from 'react';
import type { MessageDescriptor } from 'react-intl';
import { defineMessages, FormattedRelativeTime, useIntl } from 'react-intl';
import { useToasts } from 'react-toast-notifications';
@@ -55,7 +57,8 @@ const messages: { [messageName: string]: MessageDescriptor } = defineMessages({
editJobSchedule: 'Modify Job',
jobScheduleEditSaved: 'Job edited successfully!',
jobScheduleEditFailed: 'Something went wrong while saving the job.',
editJobSchedulePrompt: 'Frequency',
editJobScheduleCurrent: 'Current Frequency',
editJobSchedulePrompt: 'New Frequency',
editJobScheduleSelectorHours:
'Every {jobScheduleHours, plural, one {hour} other {{jobScheduleHours} hours}}',
editJobScheduleSelectorMinutes:
@@ -67,12 +70,56 @@ interface Job {
name: string;
type: 'process' | 'command';
interval: 'short' | 'long' | 'fixed';
cronSchedule: string;
nextExecutionTime: string;
running: boolean;
}
type JobModalState = {
isOpen?: boolean;
job?: Job;
scheduleHours: number;
scheduleMinutes: number;
};
type JobModalAction =
| { type: 'set'; hours?: number; minutes?: number }
| {
type: 'close';
}
| { type: 'open'; job?: Job };
const jobModalReducer = (
state: JobModalState,
action: JobModalAction
): JobModalState => {
switch (action.type) {
case 'close':
return {
...state,
isOpen: false,
};
case 'open':
return {
isOpen: true,
job: action.job,
scheduleHours: 1,
scheduleMinutes: 5,
};
case 'set':
return {
...state,
scheduleHours: action.hours ?? state.scheduleHours,
scheduleMinutes: action.minutes ?? state.scheduleMinutes,
};
}
};
const SettingsJobs = () => {
const intl = useIntl();
const { locale } = useLocale();
const { addToast } = useToasts();
const {
data,
@@ -88,15 +135,12 @@ const SettingsJobs = () => {
}
);
const [jobEditModal, setJobEditModal] = useState<{
isOpen: boolean;
job?: Job;
}>({
const [jobModalState, dispatch] = useReducer(jobModalReducer, {
isOpen: false,
scheduleHours: 1,
scheduleMinutes: 5,
});
const [isSaving, setIsSaving] = useState(false);
const [jobScheduleMinutes, setJobScheduleMinutes] = useState(5);
const [jobScheduleHours, setJobScheduleHours] = useState(1);
if (!data && !error) {
return <LoadingSpinner />;
@@ -146,10 +190,10 @@ const SettingsJobs = () => {
const jobScheduleCron = ['0', '0', '*', '*', '*', '*'];
try {
if (jobEditModal.job?.interval === 'short') {
jobScheduleCron[1] = `*/${jobScheduleMinutes}`;
} else if (jobEditModal.job?.interval === 'long') {
jobScheduleCron[2] = `*/${jobScheduleHours}`;
if (jobModalState.job?.interval === 'short') {
jobScheduleCron[1] = `*/${jobModalState.scheduleMinutes}`;
} else if (jobModalState.job?.interval === 'long') {
jobScheduleCron[2] = `*/${jobModalState.scheduleHours}`;
} else {
// jobs with interval: fixed should not be editable
throw new Error();
@@ -157,16 +201,18 @@ const SettingsJobs = () => {
setIsSaving(true);
await axios.post(
`/api/v1/settings/jobs/${jobEditModal.job?.id}/schedule`,
`/api/v1/settings/jobs/${jobModalState.job.id}/schedule`,
{
schedule: jobScheduleCron.join(' '),
}
);
addToast(intl.formatMessage(messages.jobScheduleEditSaved), {
appearance: 'success',
autoDismiss: true,
});
setJobEditModal({ isOpen: false });
dispatch({ type: 'close' });
revalidate();
} catch (e) {
addToast(intl.formatMessage(messages.jobScheduleEditFailed), {
@@ -194,7 +240,7 @@ const SettingsJobs = () => {
leave="opacity-100 transition duration-300"
leaveFrom="opacity-100"
leaveTo="opacity-0"
show={jobEditModal.isOpen}
show={jobModalState.isOpen}
>
<Modal
title={intl.formatMessage(messages.editJobSchedule)}
@@ -203,24 +249,43 @@ const SettingsJobs = () => {
? intl.formatMessage(globalMessages.saving)
: intl.formatMessage(globalMessages.save)
}
onCancel={() => setJobEditModal({ isOpen: false })}
onCancel={() => dispatch({ type: 'close' })}
okDisabled={isSaving}
onOk={() => scheduleJob()}
>
<div className="section">
<form>
<div className="form-row pb-6">
<form className="mb-6">
<div className="form-row">
<label className="text-label">
{intl.formatMessage(messages.editJobScheduleCurrent)}
</label>
<div className="form-input-area mt-2 mb-1">
<div>
{jobModalState.job &&
cronstrue.toString(jobModalState.job.cronSchedule, {
locale,
})}
</div>
<div className="text-sm text-gray-500">
{jobModalState.job?.cronSchedule}
</div>
</div>
</div>
<div className="form-row">
<label htmlFor="jobSchedule" className="text-label">
{intl.formatMessage(messages.editJobSchedulePrompt)}
</label>
<div className="form-input-area">
{jobEditModal.job?.interval === 'short' ? (
{jobModalState.job?.interval === 'short' ? (
<select
name="jobScheduleMinutes"
className="inline"
value={jobScheduleMinutes}
value={jobModalState.scheduleMinutes}
onChange={(e) =>
setJobScheduleMinutes(Number(e.target.value))
dispatch({
type: 'set',
minutes: Number(e.target.value),
})
}
>
{[5, 10, 15, 20, 30, 60].map((v) => (
@@ -238,9 +303,12 @@ const SettingsJobs = () => {
<select
name="jobScheduleHours"
className="inline"
value={jobScheduleHours}
value={jobModalState.scheduleHours}
onChange={(e) =>
setJobScheduleHours(Number(e.target.value))
dispatch({
type: 'set',
hours: Number(e.target.value),
})
}
>
{[1, 2, 3, 4, 6, 8, 12, 24, 48, 72].map((v) => (
@@ -319,9 +387,7 @@ const SettingsJobs = () => {
<Button
className="mr-2"
buttonType="warning"
onClick={() =>
setJobEditModal({ isOpen: true, job: job })
}
onClick={() => dispatch({ type: 'open', job })}
>
<PencilIcon />
<span>{intl.formatMessage(globalMessages.edit)}</span>

View File

@@ -5,6 +5,7 @@ import Modal from '@app/components/Common/Modal';
import PageTitle from '@app/components/Common/PageTitle';
import Table from '@app/components/Common/Table';
import Tooltip from '@app/components/Common/Tooltip';
import useDebouncedState from '@app/hooks/useDebouncedState';
import { useUpdateQueryParams } from '@app/hooks/useUpdateQueryParams';
import globalMessages from '@app/i18n/globalMessages';
import Error from '@app/pages/_error';
@@ -17,6 +18,7 @@ import {
FilterIcon,
PauseIcon,
PlayIcon,
SearchIcon,
} from '@heroicons/react/solid';
import type {
LogMessage,
@@ -59,6 +61,8 @@ const SettingsLogs = () => {
const { addToast } = useToasts();
const [currentFilter, setCurrentFilter] = useState<Filter>('debug');
const [currentPageSize, setCurrentPageSize] = useState(25);
const [searchFilter, debouncedSearchFilter, setSearchFilter] =
useDebouncedState('');
const [refreshInterval, setRefreshInterval] = useState(5000);
const [activeLog, setActiveLog] = useState<{
isOpen: boolean;
@@ -76,7 +80,9 @@ const SettingsLogs = () => {
const { data, error } = useSWR<LogsResultsResponse>(
`/api/v1/settings/logs?take=${currentPageSize}&skip=${
pageIndex * currentPageSize
}&filter=${currentFilter}`,
}&filter=${currentFilter}${
debouncedSearchFilter ? `&search=${debouncedSearchFilter}` : ''
}`,
{
refreshInterval: refreshInterval,
revalidateOnFocus: false,
@@ -118,15 +124,13 @@ const SettingsLogs = () => {
});
};
if (!data && !error) {
return <LoadingSpinner />;
}
if (!data) {
// check if there's no data and no errors in the table
// so as to show a spinner inside the table and not refresh the whole component
if (!data && error) {
return <Error statusCode={500} />;
}
const hasNextPage = data.pageInfo.pages > pageIndex + 1;
const hasNextPage = data?.pageInfo.pages ?? 0 > pageIndex + 1;
const hasPrevPage = pageIndex > 0;
return (
@@ -245,10 +249,21 @@ const SettingsLogs = () => {
appDataPath: appData ? appData.appDataPath : '/app/config',
})}
</p>
<div className="mt-2 flex flex-grow flex-row sm:flex-grow-0 sm:justify-end">
<div className="mt-2 flex flex-grow flex-col sm:flex-grow-0 sm:flex-row sm:justify-end">
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 md:flex-grow-0">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<SearchIcon className="h-6 w-6" />
</span>
<input
type="text"
className="rounded-r-only"
value={searchFilter}
onChange={(e) => setSearchFilter(e.target.value as string)}
/>
</div>
<div className="mb-2 flex flex-1 flex-row justify-between sm:mb-0 sm:flex-none">
<Button
className="mr-2 w-full flex-grow"
className="mr-2 flex flex-grow"
buttonType={refreshInterval ? 'default' : 'primary'}
onClick={() => toggleLogs()}
>
@@ -259,34 +274,34 @@ const SettingsLogs = () => {
)}
</span>
</Button>
</div>
<div className="mb-2 flex flex-1 sm:mb-0 sm:flex-none">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<FilterIcon className="h-6 w-6" />
</span>
<select
id="filter"
name="filter"
onChange={(e) => {
setCurrentFilter(e.target.value as Filter);
router.push(router.pathname);
}}
value={currentFilter}
className="rounded-r-only"
>
<option value="debug">
{intl.formatMessage(messages.filterDebug)}
</option>
<option value="info">
{intl.formatMessage(messages.filterInfo)}
</option>
<option value="warn">
{intl.formatMessage(messages.filterWarn)}
</option>
<option value="error">
{intl.formatMessage(messages.filterError)}
</option>
</select>
<div className="flex flex-grow">
<span className="inline-flex cursor-default items-center rounded-l-md border border-r-0 border-gray-500 bg-gray-800 px-3 text-sm text-gray-100">
<FilterIcon className="h-6 w-6" />
</span>
<select
id="filter"
name="filter"
onChange={(e) => {
setCurrentFilter(e.target.value as Filter);
router.push(router.pathname);
}}
value={currentFilter}
className="rounded-r-only"
>
<option value="debug">
{intl.formatMessage(messages.filterDebug)}
</option>
<option value="info">
{intl.formatMessage(messages.filterInfo)}
</option>
<option value="warn">
{intl.formatMessage(messages.filterWarn)}
</option>
<option value="error">
{intl.formatMessage(messages.filterError)}
</option>
</select>
</div>
</div>
</div>
<Table>
@@ -300,73 +315,81 @@ const SettingsLogs = () => {
</tr>
</thead>
<Table.TBody>
{data.results.map((row: LogMessage, index: number) => {
return (
<tr key={`log-list-${index}`}>
<Table.TD className="text-gray-300">
{intl.formatDate(row.timestamp, {
year: 'numeric',
month: 'short',
day: '2-digit',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
})}
</Table.TD>
<Table.TD className="text-gray-300">
<Badge
badgeType={
row.level === 'error'
? 'danger'
: row.level === 'warn'
? 'warning'
: row.level === 'info'
? 'success'
: 'default'
}
>
{row.level.toUpperCase()}
</Badge>
</Table.TD>
<Table.TD className="text-gray-300">
{row.label ?? ''}
</Table.TD>
<Table.TD className="text-gray-300">{row.message}</Table.TD>
<Table.TD className="-m-1 flex flex-wrap items-center justify-end">
{row.data && (
{!data ? (
<tr>
<Table.TD colSpan={5} noPadding>
<LoadingSpinner />
</Table.TD>
</tr>
) : (
data.results.map((row: LogMessage, index: number) => {
return (
<tr key={`log-list-${index}`}>
<Table.TD className="text-gray-300">
{intl.formatDate(row.timestamp, {
year: 'numeric',
month: 'short',
day: '2-digit',
hour: 'numeric',
minute: 'numeric',
second: 'numeric',
})}
</Table.TD>
<Table.TD className="text-gray-300">
<Badge
badgeType={
row.level === 'error'
? 'danger'
: row.level === 'warn'
? 'warning'
: row.level === 'info'
? 'success'
: 'default'
}
>
{row.level.toUpperCase()}
</Badge>
</Table.TD>
<Table.TD className="text-gray-300">
{row.label ?? ''}
</Table.TD>
<Table.TD className="text-gray-300">{row.message}</Table.TD>
<Table.TD className="-m-1 flex flex-wrap items-center justify-end">
{row.data && (
<Tooltip
content={intl.formatMessage(messages.viewdetails)}
>
<Button
buttonSize="sm"
buttonType="primary"
onClick={() =>
setActiveLog({ log: row, isOpen: true })
}
className="m-1"
>
<DocumentSearchIcon className="icon-md" />
</Button>
</Tooltip>
)}
<Tooltip
content={intl.formatMessage(messages.viewdetails)}
content={intl.formatMessage(messages.copyToClipboard)}
>
<Button
buttonType="primary"
buttonSize="sm"
onClick={() =>
setActiveLog({ log: row, isOpen: true })
}
onClick={() => copyLogString(row)}
className="m-1"
>
<DocumentSearchIcon className="icon-md" />
<ClipboardCopyIcon className="icon-md" />
</Button>
</Tooltip>
)}
<Tooltip
content={intl.formatMessage(messages.copyToClipboard)}
>
<Button
buttonType="primary"
buttonSize="sm"
onClick={() => copyLogString(row)}
className="m-1"
>
<ClipboardCopyIcon className="icon-md" />
</Button>
</Tooltip>
</Table.TD>
</tr>
);
})}
</Table.TD>
</tr>
);
})
)}
{data.results.length === 0 && (
{data?.results.length === 0 && (
<tr className="relative h-24 p-2 text-white">
<Table.TD colSpan={5} noPadding>
<div className="flex w-screen flex-col items-center justify-center p-6 md:w-full">
@@ -396,15 +419,15 @@ const SettingsLogs = () => {
>
<div className="hidden lg:flex lg:flex-1">
<p className="text-sm">
{data.results.length > 0 &&
{(data?.results.length ?? 0) > 0 &&
intl.formatMessage(globalMessages.showingresults, {
from: pageIndex * currentPageSize + 1,
to:
data.results.length < currentPageSize
data?.results.length ?? 0 < currentPageSize
? pageIndex * currentPageSize +
data.results.length
(data?.results.length ?? 0)
: (pageIndex + 1) * currentPageSize,
total: data.pageInfo.results,
total: data?.pageInfo.results ?? 0,
strong: (msg: React.ReactNode) => (
<span className="font-medium">{msg}</span>
),

View File

@@ -40,7 +40,6 @@ const messages = defineMessages({
toastSettingsSuccess: 'Settings saved successfully!',
toastSettingsFailure: 'Something went wrong while saving settings.',
hideAvailable: 'Hide Available Media',
hideRequested: 'Hide Requested Media',
csrfProtection: 'Enable CSRF Protection',
csrfProtectionTip: 'Set external API access to read-only (requires HTTPS)',
csrfProtectionHoverTip:
@@ -129,7 +128,6 @@ const SettingsMain = () => {
applicationUrl: data?.applicationUrl,
csrfProtection: data?.csrfProtection,
hideAvailable: data?.hideAvailable,
hideRequested: data?.hideRequested,
locale: data?.locale ?? 'en',
region: data?.region,
originalLanguage: data?.originalLanguage,
@@ -146,7 +144,6 @@ const SettingsMain = () => {
applicationUrl: values.applicationUrl,
csrfProtection: values.csrfProtection,
hideAvailable: values.hideAvailable,
hideRequested: values.hideRequested,
locale: values.locale,
region: values.region,
originalLanguage: values.originalLanguage,
@@ -401,33 +398,12 @@ const SettingsMain = () => {
type="checkbox"
id="hideAvailable"
name="hideAvailable"
checked={values.hideAvailable || values.hideRequested}
disabled={values.hideRequested}
className={values.hideRequested ? 'opacity-50' : ''}
onChange={() => {
setFieldValue('hideAvailable', !values.hideAvailable);
}}
/>
</div>
</div>
<div className="form-row">
<label htmlFor="hideRequested" className="checkbox-label">
<span className="mr-2">
{intl.formatMessage(messages.hideRequested)}
</span>
<SettingsBadge badgeType="experimental" />
</label>
<div className="form-input">
<Field
type="checkbox"
id="hideRequested"
name="hideRequested"
onChange={() => {
setFieldValue('hideRequested', !values.hideRequested);
}}
/>
</div>
</div>
<div className="form-row">
<label
htmlFor="partialRequestsEnabled"

View File

@@ -11,7 +11,7 @@ interface SliderProps {
items?: JSX.Element[];
isLoading: boolean;
isEmpty?: boolean;
emptyMessage?: string;
emptyMessage?: React.ReactNode;
placeholder?: React.ReactNode;
}
@@ -192,7 +192,7 @@ const Slider = ({
</div>
))}
{isEmpty && (
<div className="mt-16 mb-16 text-center text-white">
<div className="mt-16 mb-16 text-center font-medium text-gray-400">
{emptyMessage
? emptyMessage
: intl.formatMessage(globalMessages.noresults)}

View File

@@ -10,6 +10,7 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
import PageTitle from '@app/components/Common/PageTitle';
import type { PlayButtonLink } from '@app/components/Common/PlayButton';
import PlayButton from '@app/components/Common/PlayButton';
import StatusBadgeMini from '@app/components/Common/StatusBadgeMini';
import Tooltip from '@app/components/Common/Tooltip';
import ExternalLinkBlock from '@app/components/ExternalLinkBlock';
import IssueModal from '@app/components/IssueModal';
@@ -239,7 +240,9 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
seasonCount <=
(
data.mediaInfo?.seasons.filter(
(season) => season.status === MediaStatus.AVAILABLE
(season) =>
season.status === MediaStatus.AVAILABLE ||
season.status === MediaStatus.PARTIALLY_AVAILABLE
) ?? []
).length;
@@ -247,7 +250,9 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
seasonCount <=
(
data.mediaInfo?.seasons.filter(
(season) => season.status4k === MediaStatus.AVAILABLE
(season) =>
season.status4k === MediaStatus.AVAILABLE ||
season.status4k === MediaStatus.PARTIALLY_AVAILABLE
) ?? []
).length;
@@ -557,75 +562,149 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
{((!mSeason &&
request?.status === MediaRequestStatus.APPROVED) ||
mSeason?.status === MediaStatus.PROCESSING) && (
<Badge badgeType="primary">
{intl.formatMessage(globalMessages.requested)}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="primary">
{intl.formatMessage(globalMessages.requested)}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.PROCESSING}
/>
</div>
</>
)}
{((!mSeason &&
request?.status === MediaRequestStatus.PENDING) ||
mSeason?.status === MediaStatus.PENDING) && (
<Badge badgeType="warning">
{intl.formatMessage(globalMessages.pending)}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="warning">
{intl.formatMessage(globalMessages.pending)}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini status={MediaStatus.PENDING} />
</div>
</>
)}
{mSeason?.status ===
MediaStatus.PARTIALLY_AVAILABLE && (
<Badge badgeType="success">
{intl.formatMessage(
globalMessages.partiallyavailable
)}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="success">
{intl.formatMessage(
globalMessages.partiallyavailable
)}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.PARTIALLY_AVAILABLE}
/>
</div>
</>
)}
{mSeason?.status === MediaStatus.AVAILABLE && (
<Badge badgeType="success">
{intl.formatMessage(globalMessages.available)}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="success">
{intl.formatMessage(globalMessages.available)}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.AVAILABLE}
/>
</div>
</>
)}
{((!mSeason4k &&
request4k?.status ===
MediaRequestStatus.APPROVED) ||
mSeason4k?.status4k === MediaStatus.PROCESSING) &&
show4k && (
<Badge badgeType="primary">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.requested
),
})}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="primary">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.requested
),
})}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.PROCESSING}
is4k={true}
/>
</div>
</>
)}
{((!mSeason4k &&
request4k?.status === MediaRequestStatus.PENDING) ||
mSeason?.status4k === MediaStatus.PENDING) &&
show4k && (
<Badge badgeType="warning">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.pending
),
})}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="warning">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.pending
),
})}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.PENDING}
is4k={true}
/>
</div>
</>
)}
{mSeason4k?.status4k ===
MediaStatus.PARTIALLY_AVAILABLE &&
show4k && (
<Badge badgeType="success">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.partiallyavailable
),
})}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="success">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.partiallyavailable
),
})}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.PARTIALLY_AVAILABLE}
is4k={true}
/>
</div>
</>
)}
{mSeason4k?.status4k === MediaStatus.AVAILABLE &&
show4k && (
<Badge badgeType="success">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.available
),
})}
</Badge>
<>
<div className="hidden md:flex">
<Badge badgeType="success">
{intl.formatMessage(messages.status4k, {
status: intl.formatMessage(
globalMessages.available
),
})}
</Badge>
</div>
<div className="flex md:hidden">
<StatusBadgeMini
status={MediaStatus.AVAILABLE}
is4k={true}
/>
</div>
</>
)}
<ChevronUpIcon
className={`${

View File

@@ -20,12 +20,11 @@ import type { TvDetails } from '@server/models/Tv';
import Link from 'next/link';
import { useRouter } from 'next/router';
import { useCallback, useEffect, useState } from 'react';
import { defineMessages, FormattedNumber, useIntl } from 'react-intl';
import { defineMessages, useIntl } from 'react-intl';
import useSWR from 'swr';
const messages = defineMessages({
recentrequests: 'Recent Requests',
norequests: 'No requests.',
limit: '{remaining} of {limit}',
requestsperdays: '{limit} remaining',
unlimited: 'Unlimited',
@@ -35,6 +34,8 @@ const messages = defineMessages({
seriesrequest: 'Series Requests',
recentlywatched: 'Recently Watched',
plexwatchlist: 'Plex Watchlist',
emptywatchlist:
'Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.',
});
type MediaTitle = MovieDetails | TvDetails;
@@ -70,22 +71,24 @@ const UserProfile = () => {
? `/api/v1/user/${user.id}/quota`
: null
);
const { data: watchData } = useSWR<UserWatchDataResponse>(
user?.userType === UserType.PLEX &&
(user.id === currentUser?.id || currentHasPermission(Permission.ADMIN))
? `/api/v1/user/${user.id}/watch_data`
: null
);
const { data: watchData, error: watchDataError } =
useSWR<UserWatchDataResponse>(
user?.userType === UserType.PLEX &&
(user.id === currentUser?.id || currentHasPermission(Permission.ADMIN))
? `/api/v1/user/${user.id}/watch_data`
: null
);
const { data: watchlistItems, error: watchlistError } =
useSWR<WatchlistResponse>(
user?.id === currentUser?.id ||
currentHasPermission(
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
{
type: 'or',
}
)
? `/api/v1/user/${user?.id}/watchlist`
user?.userType === UserType.PLEX &&
(user.id === currentUser?.id ||
currentHasPermission(
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
{
type: 'or',
}
))
? `/api/v1/user/${user.id}/watchlist`
: null,
{
revalidateOnMount: true,
@@ -146,7 +149,15 @@ const UserProfile = () => {
{intl.formatMessage(messages.totalrequests)}
</dt>
<dd className="mt-1 text-3xl font-semibold text-white">
<FormattedNumber value={user.requestCount} />
<Link
href={
user.id === currentUser?.id
? '/profile/requests?filter=all'
: `/users/${user?.id}/requests?filter=all`
}
>
<a>{intl.formatNumber(user.requestCount)}</a>
</Link>
</dd>
</div>
<div
@@ -266,40 +277,49 @@ const UserProfile = () => {
currentHasPermission(
[Permission.MANAGE_REQUESTS, Permission.REQUEST_VIEW],
{ type: 'or' }
)) && (
<>
<div className="slider-header">
<Link href={`/users/${user?.id}/requests?filter=all`}>
<a className="slider-title">
<span>{intl.formatMessage(messages.recentrequests)}</span>
<ArrowCircleRightIcon />
</a>
</Link>
</div>
<Slider
sliderKey="requests"
isLoading={!requests && !requestError}
isEmpty={
!!requests && !requestError && requests.results.length === 0
}
items={(requests?.results ?? []).map((request) => (
<RequestCard
key={`request-slider-item-${request.id}`}
request={request}
onTitleData={updateAvailableTitles}
/>
))}
placeholder={<RequestCard.Placeholder />}
emptyMessage={intl.formatMessage(messages.norequests)}
/>
</>
)}
{(user.id === currentUser?.id ||
currentHasPermission(
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
{ type: 'or' }
)) &&
(!watchlistItems || !!watchlistItems.results.length) &&
(!requests || !!requests.results.length) &&
!requestError && (
<>
<div className="slider-header">
<Link
href={
user.id === currentUser?.id
? '/profile/requests?filter=all'
: `/users/${user?.id}/requests?filter=all`
}
>
<a className="slider-title">
<span>{intl.formatMessage(messages.recentrequests)}</span>
<ArrowCircleRightIcon />
</a>
</Link>
</div>
<Slider
sliderKey="requests"
isLoading={!requests}
items={(requests?.results ?? []).map((request) => (
<RequestCard
key={`request-slider-item-${request.id}`}
request={request}
onTitleData={updateAvailableTitles}
/>
))}
placeholder={<RequestCard.Placeholder />}
/>
</>
)}
{user.userType === UserType.PLEX &&
(user.id === currentUser?.id ||
currentHasPermission(
[Permission.MANAGE_REQUESTS, Permission.WATCHLIST_VIEW],
{ type: 'or' }
)) &&
(!watchlistItems ||
!!watchlistItems.results.length ||
(user.id === currentUser?.id &&
(user.settings?.watchlistSyncMovies ||
user.settings?.watchlistSyncTv))) &&
!watchlistError && (
<>
<div className="slider-header">
@@ -318,7 +338,20 @@ const UserProfile = () => {
</div>
<Slider
sliderKey="watchlist"
isLoading={!watchlistItems && !watchlistError}
isLoading={!watchlistItems}
isEmpty={!!watchlistItems && watchlistItems.results.length === 0}
emptyMessage={intl.formatMessage(messages.emptywatchlist, {
PlexWatchlistSupportLink: (msg: React.ReactNode) => (
<a
href="https://support.plex.tv/articles/universal-watchlist/"
className="text-white transition duration-300 hover:underline"
target="_blank"
rel="noreferrer"
>
{msg}
</a>
),
})}
items={watchlistItems?.results.map((item) => (
<TmdbTitleCard
id={item.tmdbId}
@@ -330,9 +363,11 @@ const UserProfile = () => {
/>
</>
)}
{(user.id === currentUser?.id ||
currentHasPermission(Permission.ADMIN)) &&
!!watchData?.recentlyWatched.length && (
{user.userType === UserType.PLEX &&
(user.id === currentUser?.id ||
currentHasPermission(Permission.ADMIN)) &&
(!watchData || !!watchData.recentlyWatched.length) &&
!watchDataError && (
<>
<div className="slider-header">
<div className="slider-title">
@@ -342,8 +377,7 @@ const UserProfile = () => {
<Slider
sliderKey="media"
isLoading={!watchData}
isEmpty={!watchData?.recentlyWatched.length}
items={watchData.recentlyWatched.map((item) => (
items={watchData?.recentlyWatched.map((item) => (
<TmdbTitleCard
key={`media-slider-item-${item.id}`}
id={item.id}

View File

@@ -12,7 +12,6 @@ const defaultSettings = {
applicationTitle: 'Overseerr',
applicationUrl: '',
hideAvailable: false,
hideRequested: false,
localLogin: true,
movie4kEnabled: false,
series4kEnabled: false,

View File

@@ -30,7 +30,7 @@ interface DiscoverResult<T, S> {
const useDiscover = <T extends BaseMedia, S = Record<string, never>>(
endpoint: string,
options?: Record<string, unknown>,
{ hideAvailableOrRequested = true } = {}
{ hideAvailable = true } = {}
): DiscoverResult<T, S> => {
const settings = useSettings();
const { data, error, size, setSize, isValidating } = useSWRInfinite<
@@ -71,19 +71,12 @@ const useDiscover = <T extends BaseMedia, S = Record<string, never>>(
let titles = (data ?? []).reduce((a, v) => [...a, ...v.results], [] as T[]);
if (
hideAvailableOrRequested &&
(settings.currentSettings.hideAvailable ||
settings.currentSettings.hideRequested)
) {
if (settings.currentSettings.hideAvailable && hideAvailable) {
titles = titles.filter(
(i) =>
i.mediaType === 'person' ||
(i.mediaInfo?.status !== MediaStatus.AVAILABLE &&
i.mediaInfo?.status !== MediaStatus.PARTIALLY_AVAILABLE &&
(!settings.currentSettings.hideRequested ||
(i.mediaInfo?.status !== MediaStatus.PENDING &&
i.mediaInfo?.status !== MediaStatus.PROCESSING)))
(i.mediaType === 'movie' || i.mediaType === 'tv') &&
i.mediaInfo?.status !== MediaStatus.AVAILABLE &&
i.mediaInfo?.status !== MediaStatus.PARTIALLY_AVAILABLE
);
}

View File

@@ -16,7 +16,6 @@
"components.RequestModal.QuotaDisplay.requiredquota": "تحتاج على الأقل ان تملك <strong>{seasons}</strong> {seasons, plural, one {طلب موسم} other {طلبات مواسم}} متبقية/متبقّي من حدك الأقصى لتتمكن من طلب هذا المسلسل.",
"components.Discover.NetworkSlider.networks": "شبكات البث",
"components.Discover.upcomingmovies": "أفلام قادمة",
"components.Discover.noRequests": "لا يوجد طلبات.",
"components.Discover.upcomingtv": "مسلسلات قادمة",
"components.IssueDetails.season": "موسم {seasonNumber}",
"components.IssueModal.issueVideo": "الفديو",
@@ -135,7 +134,6 @@
"components.IssueModal.CreateIssueModal.allseasons": "جميع المواسم",
"components.IssueModal.CreateIssueModal.episode": "حلقة {episodeNumber}",
"components.IssueModal.CreateIssueModal.extras": "الإضافات",
"components.IssueModal.CreateIssueModal.issomethingwrong": "هل هناك مشكلة في {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "الحلقة المعنيّة",
"components.IssueModal.CreateIssueModal.problemseason": "الموسم المعني",
"components.IssueModal.CreateIssueModal.providedetail": "رجاءا قم بتزويد شرح مفصل للمشكلة التي صادفتها.",
@@ -326,7 +324,6 @@
"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.nosummary": "لم يتم العثور على ملخص لهذا العنوان.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "لم نتمكن من مطابقة طلبك بشكل تلقائي. الرجاء إختيار العنوان المراد من القائمة بالإسفل.",
"components.RequestModal.alreadyrequested": "تم طلبه مُسبقاً",
"components.RequestModal.approve": "الموافقة على الطلب",
@@ -336,10 +333,9 @@
"components.RequestModal.errorediting": "حدث خطأ ما أثناء محاولة تعديل الطلب.",
"components.RequestModal.extras": "إضافات",
"components.RequestModal.numberofepisodes": "# حلقات",
"components.RequestModal.pending4krequest": "طلب فور كي معلّق لـ {title}",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.pendingapproval": "طلبك معلق بانتظار الموافقة.",
"components.RequestModal.pendingrequest": "طلب معلق لـ {title}",
"components.RequestModal.request4ktitle": "طلب {title} بجودة فور كي",
"components.RequestModal.pendingrequest": "",
"components.ResetPassword.validationpasswordmatch": "يجب مطابقة كلمة السر مع تأكيدها",
"components.RequestModal.requestmovies": "طلب {count} {count, plural, one {فيلم} other {أفلام}}",
"components.ResetPassword.email": "البريد الإلكتروني",
@@ -358,7 +354,6 @@
"components.RequestModal.requestfrom": "{username} طلب هذا المستخدم معلق بانتظار الموافقة.",
"components.RequestModal.requestmovies4k": "طلب {count} {count, plural, one {فيلم} other {أفلام}} بجودة فور كي",
"components.RequestModal.requestseasons": "طلب {seasonCount} {seasonCount, plural, one {موسم} other {مواسم}}",
"components.RequestModal.requesttitle": "طلب {title}",
"components.RequestModal.season": "موسم",
"components.RequestModal.seasonnumber": "موسم {number}",
"components.RequestModal.selectmovies": "إختيار فيلم /أفلام",
@@ -839,7 +834,6 @@
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "حساب هذا المستخدم بدون كلمة سر حاليا. قم بإعداد كلمة سر بالإسفل لإتاحة هذا الحساب من تسجيل الدخول \"كمستخدم محلي.\"",
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "تم حفظ كلمة السر بنجاح!",
"components.UserProfile.UserSettings.unauthorizedDescription": "لا تملك الصلاحية لتعديل إعدادات هذا المستخدم.",
"components.UserProfile.norequests": "لا يوجد طلبات.",
"components.UserProfile.totalrequests": "مجموع الطلبات",
"i18n.deleting": "جاري الحذف…",
"i18n.delete": "حذف",

View File

@@ -14,16 +14,15 @@
"components.UserList.accounttype": "Tipus",
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Podeu veure un resum dels límits de sol·licituds daquest usuari a la seva <ProfileLink>pàgina de perfil</ProfileLink>.",
"components.RequestModal.QuotaDisplay.requiredquota": "Necessites tenir al menys <strong>{seasons}</strong> {seasons, plural, one {petició de temporada} other {peticions de temporades}} restant(s) per a poder enviar una petició per a aquesta sèrie.",
"components.RequestModal.pendingrequest": "Sol·licitud pendent de {title}",
"components.RequestModal.pending4krequest": "Sol·licitud en 4K pendent per a {title}",
"components.RequestModal.pendingrequest": "Sol·licitud pendent",
"components.RequestModal.pending4krequest": "Sol·licitud en 4K pendent",
"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.autoapproval": "Aprovació automàtica",
"components.RequestModal.alreadyrequested": "Ja s'ha sol·licitat",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "No s'ha pogut emparellat automàticament la vostra sol·licitud. Seleccioneu l'emparellament correcte de la llista següent.",
"components.RequestModal.SearchByNameModal.nosummary": "No s'ha trobat cap sinopsi per a aquest títol.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "No s'ha pogut trobar coincidència d'aquesta serie. Seleccioneu l'emparellament correcte de la llista següent.",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {temporada} other {temporades}}",
"components.RequestModal.QuotaDisplay.season": "temporada",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Aquest usuari ha de tenir almenys <strong>{seasons}</strong> {seasons, plural, one {sol·licitud de temporada} other {sol·licituds de temporades}} per enviar una sol·licitud per a aquesta sèrie.",
@@ -215,7 +214,6 @@
"components.RequestModal.requestadmin": "Aquesta sol·licitud s'aprovarà automàticament.",
"components.RequestModal.requestCancel": "S'ha cancel·lat la sol·licitud de <strong>{title}</strong>.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> s'ha sol·licitat correctament!",
"components.RequestModal.request4ktitle": "Sol·licita {title} en 4K",
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "Heu de proporcionar un URL vàlid",
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "La configuració de notificacions Slack s'ha desat correctament!",
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "No s'ha pogut desar la configuració de notificacions Slack.",
@@ -250,7 +248,6 @@
"components.RequestModal.selectseason": "Selecciona les temporades",
"components.RequestModal.seasonnumber": "Temporada {number}",
"components.RequestModal.season": "Temporada",
"components.RequestModal.requesttitle": "Sol·licita {title}",
"components.RequestModal.requestseasons": "Sol·licita {seasonCount} {seasonCount, plural, one {Temporada} other {Temporades}}",
"components.Settings.Notifications.discordsettingssaved": "La configuració de les notificacions de Discord s'ha desat correctament!",
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "No s'ha pogut desar la configuració de notificacions del Webhook.",
@@ -333,7 +330,6 @@
"components.UserProfile.requestsperdays": "{limit} restants",
"components.UserProfile.recentrequests": "Sol·licituds recents",
"components.UserProfile.pastdays": "{type} (últims {days} dies)",
"components.UserProfile.norequests": "Sense sol·licituds.",
"components.UserProfile.movierequests": "Sol·licituds de pel·lícules",
"components.UserProfile.limit": "{remaining} de {limit}",
"components.UserProfile.UserSettings.unauthorizedDescription": "No teniu permís per modificar la configuració d'aquest usuari.",
@@ -490,7 +486,7 @@
"components.Settings.deleteserverconfirm": "Esteu segur que voleu suprimir aquest servidor?",
"components.Settings.currentlibrary": "Biblioteca actual: {name}",
"components.Settings.cancelscan": "Cancel·la l'exploració",
"components.Settings.cacheImagesTip": "Optimitzeu i emmagatzemeu totes les imatges de forma local (consumeix una quantitat important d'espai en disc)",
"components.Settings.cacheImagesTip": "Posa en memòria cau i carrega imatges optimitzades (requereix una quantitat important d'espai en disc)",
"components.Settings.applicationTitle": "Títol de l'aplicació",
"components.Settings.addsonarr": "Afegeix un servidor Sonarr",
"components.Settings.activeProfile": "Perfil actiu",
@@ -735,17 +731,16 @@
"components.Settings.Notifications.validationPgpPassword": "Heu de proporcionar una contrasenya PGP",
"components.Settings.Notifications.botUsernameTip": "Permetre als usuaris iniciar un xat amb el bot i configurar les seves pròpies notificacions",
"components.RequestModal.pendingapproval": "La vostra sol·licitud està pendent d'aprovació.",
"components.RequestList.RequestItem.mediaerror": "El títol associat per a aquesta sol·licitud ja no està disponible.",
"components.RequestList.RequestItem.mediaerror": "No s'ha trobat {mediaType}",
"components.RequestList.RequestItem.deleterequest": "Suprimeix la sol·licitud",
"components.RequestList.RequestItem.cancelRequest": "Cancel·la la sol·licitud",
"components.RequestCard.mediaerror": "El títol associat per a aquesta sol·licitud ja no està disponible.",
"components.RequestCard.mediaerror": "No s'ha trobat {mediaType}",
"components.RequestCard.deleterequest": "Suprimeix la sol·licitud",
"components.NotificationTypeSelector.notificationTypes": "Tipus de notificacions",
"components.Layout.VersionStatus.streamstable": "Overseer (Estable)",
"components.Layout.VersionStatus.streamdevelop": "Overseerr (Desenvolupament)",
"components.Layout.VersionStatus.outofdate": "No està actualitzat",
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {canvi} other {canvis}} posterior(s)",
"components.Discover.noRequests": "No hi ha cap sol·licitud.",
"components.UserList.usercreatedfailedexisting": "Un altre usuari ja utilitza l'adreça electrònica proporcionada.",
"components.Settings.SonarrModal.enableSearch": "Activa la cerca automàtica",
"components.Settings.RadarrModal.enableSearch": "Activa la cerca automàtica",
@@ -914,7 +909,6 @@
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "L'informe de la incidència per a <strong>{title}</strong> s'ha enviat correctament!",
"components.IssueModal.CreateIssueModal.problemseason": "Temporada afectada",
"components.IssueModal.CreateIssueModal.episode": "Episodi {episodeNumber}",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Hi ha algun problema amb {title}?",
"components.IssueList.sortModified": "Última modificació",
"components.IssueList.sortAdded": "Més recent",
"components.NotificationTypeSelector.issuecommentDescription": "Envia notificacions quan les incidències rebin comentaris nous.",
@@ -925,7 +919,7 @@
"components.NotificationTypeSelector.adminissuecommentDescription": "Notifica'm quan altres usuaris facin comentaris sobre incidències.",
"components.ManageSlideOver.tvshow": "sèries",
"components.Settings.SettingsJobsCache.editJobSchedule": "Modifica la tasca programada",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Freqüència",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Freqüència nova",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Cada {jobScheduleHours, plural, one {hora} other {{jobScheduleHours} hores}}",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Cada {jobScheduleMinutes, plural, one {minut} other {{jobScheduleMinutes} minuts}}",
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationTokenTip": "<ApplicationRegistrationLink>Registreu una aplicació</ApplicationRegistrationLink> per utilitzar-la amb {applicationTitle}",
@@ -1036,5 +1030,92 @@
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Identificador d'usuari de Discord",
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Heu de proporcionar un identificador d'usuari de Discord vàlid",
"i18n.importing": "S'està important…",
"components.RequestBlock.languageprofile": "Perfil d'idioma"
"components.RequestBlock.languageprofile": "Perfil d'idioma",
"components.AirDateBadge.airedrelative": "Emès {relativeTime}",
"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.Settings.deleteServer": "Suprimeix el servidor {serverType}",
"components.StatusChecker.reloadApp": "Torna a carregar {applicationTitle}",
"components.TitleCard.cleardata": "Esborra les dades",
"i18n.restartRequired": "Cal reiniciar",
"components.RequestList.RequestItem.tvdbid": "Identificador de TheTVDB",
"components.TitleCard.tvdbid": "Identificador de TheTVDB",
"components.RequestList.RequestItem.tmdbid": "Identificador TMDB",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "La vostra llista de seguiment de Plex",
"components.Discover.plexwatchlist": "La vostra llista de seguiment de Plex",
"components.PermissionEdit.autorequest": "Sol·licitud automàtica",
"components.NotificationTypeSelector.mediaautorequested": "Sol·licitud enviada automàticament",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Rep notificacions quan s'enviïn automàticament sol·licituds de contingut multimèdia nous per als elements de la teva llista de seguiment de Plex.",
"components.RequestCard.tmdbid": "Identificador TMDB",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Sol·liciteu automàticament pel·lícules de la vostra <PlexWatchlistSupportLink>Llista de seguiment de Plex</PlexWatchlistSupportLink>",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Sol·licitud automàtica de pel·lícules",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Sol·licitud automàtica de sèries",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Sol·liciteu sèries automàticament de la vostra <PlexWatchlistSupportLink>Llista de seguiment de Plex</PlexWatchlistSupportLink>",
"components.PermissionEdit.autorequestSeries": "Sol·licitud automàtica de sèrie",
"components.PermissionEdit.autorequestMovies": "Sol·licitud automàtica de pel·lícules",
"components.PermissionEdit.autorequestMoviesDescription": "Concediu permís per enviar automàticament sol·licituds de pel·lícules que no siguin 4K mitjançant Plex Watchlist.",
"components.PermissionEdit.autorequestSeriesDescription": "Concediu permís per enviar automàticament sol·licituds de sèries que no siguin 4K mitjançant Plex Watchlist.",
"components.Settings.SettingsLogs.viewdetails": "Veure detalls",
"components.TitleCard.tmdbid": "Identificador TMDB",
"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.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",
"components.Settings.advancedTooltip": "La configuració incorrecta d'aquesta configuració pot provocar un malfuncionament",
"components.Settings.experimentalTooltip": "L'activació d'aquesta configuració pot provocar un comportament inesperat de l'aplicació",
"components.TvDetails.reportissue": "Informar d'un problema",
"components.TitleCard.mediaerror": "No s'ha trobat {mediaType}",
"components.UserProfile.plexwatchlist": "Llista de seguiment de Plex",
"components.Layout.UserDropdown.requests": "Sol·licituds",
"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.appUpdated": "Actualitzat {applicationTitle}",
"components.StatusChecker.restartRequiredDescription": "Si us plau, reinicieu el servidor per aplicar la configuració actualitzada.",
"components.AirDateBadge.airsrelative": "Emissió {relativeTime}",
"components.MovieDetails.rtaudiencescore": "Puntuació d'audiència de Rotten Tomatoes",
"components.MovieDetails.rtcriticsscore": "Tomàmetre Rotten Tomatoes",
"components.MovieDetails.tmdbuserscore": "Puntuació d'usuaris de TMDB",
"components.RequestBlock.approve": "Aprova la sol·licitud",
"components.RequestBlock.decline": "Rebutja la sol·licitud",
"components.RequestBlock.requestdate": "Data de sol·licitud",
"components.RequestBlock.requestedby": "Sol·licitat per",
"components.Settings.restartrequiredTooltip": "Overseerr s'ha de reiniciar perquè els canvis a aquesta configuració tinguin efecte",
"components.StatusBadge.managemedia": "Gestiona {mediaType}",
"components.TvDetails.Season.somethingwentwrong": "S'ha produït un error en recuperar les dades de la temporada.",
"components.TvDetails.rtaudiencescore": "Puntuació d'audiència de Rotten Tomatoes",
"components.TvDetails.rtcriticsscore": "Tomàmetre Rotten Tomatoes",
"components.TvDetails.seasonstitle": "Temporades",
"components.RequestCard.approverequest": "Aprova la sol·licitud",
"components.RequestCard.cancelrequest": "Cancel·la la sol·licitud",
"components.RequestCard.editrequest": "Edita la sol·licitud",
"components.TvDetails.manageseries": "Gestiona les Sèries",
"components.RequestBlock.delete": "Suprimeix la sol·licitud",
"components.RequestBlock.edit": "Edita la sol·licitud",
"components.RequestBlock.lastmodifiedby": "Última modificació per",
"components.StatusBadge.playonplex": "Reprodueix a Plex",
"components.RequestCard.declinerequest": "Rebutja la sol·licitud",
"components.StatusBadge.openinarr": "Obre a {arr}",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Sincronització de la llista de seguiment de Plex",
"components.TvDetails.seasonnumber": "Temporada {seasonNumber}",
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Episodi} other {# Episodis}}",
"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.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.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",
"components.RequestModal.requestmovietitle": "Sol·licitud de pel·lícula",
"components.RequestModal.requestseriestitle": "Sol·licitud de sèries",
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Freqüència actual"
}

View File

@@ -26,9 +26,9 @@
"components.Settings.SettingsUsers.userSettings": "Uživatelské nastavení",
"components.Settings.SettingsUsers.defaultPermissions": "Výchozí oprávnění",
"components.Settings.SettingsJobsCache.unknownJob": "Neznámá úloha",
"components.Settings.SettingsJobsCache.sonarr-scan": "Sonarr Sken",
"components.Settings.SettingsJobsCache.sonarr-scan": "Sonarr sken",
"components.Settings.SettingsJobsCache.runnow": "Spustit nyní",
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr Sken",
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr sken",
"components.Settings.SettingsJobsCache.jobstarted": "{jobname} zahájeno.",
"components.Settings.SettingsJobsCache.jobname": "Název úlohy",
"components.Settings.SettingsJobsCache.jobcancelled": "{jobname} zrušeno.",
@@ -40,11 +40,11 @@
"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.overseerrinformation": "Overseerr Informace",
"components.Settings.SettingsAbout.overseerrinformation": "O Overseer",
"components.Settings.SettingsAbout.githubdiscussions": "Diskuze na GitHubu",
"components.Settings.SettingsAbout.Releases.viewchangelog": "Zobrazit seznam změn",
"components.Settings.SettingsAbout.Releases.versionChangelog": "Seznam změn",
"components.Settings.SettingsAbout.Releases.currentversion": "Aktuální verze",
"components.Settings.SettingsAbout.Releases.versionChangelog": "{version} Seznam změn",
"components.Settings.SettingsAbout.Releases.currentversion": "Aktuální",
"components.Settings.RadarrModal.syncEnabled": "Povolit skenování",
"components.Settings.RadarrModal.ssl": "Použít SSL",
"components.Settings.RadarrModal.servername": "Název serveru",
@@ -85,13 +85,12 @@
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook URL",
"components.Settings.Notifications.NotificationsLunaSea.profileName": "Jméno profilu",
"components.Settings.Notifications.NotificationsLunaSea.agentenabled": "Povolit agenta",
"components.Search.searchresults": "Výsledek vyhledávání",
"components.Search.searchresults": "Výsledky vyhledávání",
"components.ResetPassword.passwordreset": "Obnovení hesla",
"components.ResetPassword.email": "E-mailová adresa",
"components.ResetPassword.confirmpassword": "Potvrďte heslo",
"components.RequestModal.selectseason": "Vyberte série",
"components.RequestModal.seasonnumber": "{number} Série",
"components.RequestModal.requesttitle": "Zažádat o {title}",
"components.RequestModal.edit": "Upravit žádost",
"components.RequestModal.cancel": "Zrušit žádost",
"components.RequestModal.autoapproval": "Automatické schválení",
@@ -106,7 +105,7 @@
"components.RequestModal.AdvancedRequester.destinationserver": "Cílový server",
"components.RequestModal.AdvancedRequester.default": "{name} (výchozí)",
"components.RequestList.sortModified": "Naposledy změněno",
"components.RequestList.sortAdded": "Datum žádosti",
"components.RequestList.sortAdded": "Nejnovější",
"components.RequestList.RequestItem.editrequest": "Upravit žádost",
"components.RequestList.RequestItem.deleterequest": "Odstranit žádost",
"components.RequestList.RequestItem.cancelRequest": "Zrušit žádost",
@@ -128,8 +127,8 @@
"components.PermissionEdit.viewrequests": "Zobrazit žádosti",
"components.PermissionEdit.users": "Spravovat uživatele",
"components.PermissionEdit.requestTv": "Žádat seriály",
"components.PermissionEdit.requestMovies": "Žádat filmy",
"components.PermissionEdit.request4k": "Žádosti ve 4K",
"components.PermissionEdit.requestMovies": "Vyžádat filmy",
"components.PermissionEdit.request4k": "Vyžádat ve 4K",
"components.PermissionEdit.managerequests": "Spravovat žádosti",
"components.PermissionEdit.autoapproveSeries": "Automaticky schvalovat seriály",
"components.PermissionEdit.autoapproveMovies": "Automaticky schvalovat filmy",
@@ -233,7 +232,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é zde",
"components.MovieDetails.streamingproviders": "Aktuálně streamovatelné na",
"pages.serviceunavailable": "Služba není k dispozici",
"pages.returnHome": "Vrátit se domů",
"pages.pagenotfound": "Stránka nebyla nalezena",
@@ -292,7 +291,6 @@
"components.UserProfile.seriesrequest": "Seriál zažádán",
"components.UserProfile.requestsperdays": "Zbývá {limit}",
"components.UserProfile.recentrequests": "Nedávné žádosti",
"components.UserProfile.norequests": "Žádné žádosti.",
"components.UserProfile.UserSettings.menuPermissions": "Oprávnění",
"components.UserProfile.UserSettings.menuNotifications": "Oznámení",
"components.UserProfile.UserSettings.menuGeneralSettings": "Obecné",
@@ -388,7 +386,6 @@
"components.Discover.DiscoverTvGenre.genreSeries": "{genre} Seriály",
"components.Discover.DiscoverNetwork.networkSeries": "{network} Seriály",
"components.Discover.popularmovies": "Populární filmy",
"components.Discover.noRequests": "Žádné požadavky.",
"components.Discover.discovermovies": "Populární filmy",
"components.Discover.discover": "Objevte",
"components.Discover.TvGenreSlider.tvgenres": "Žánry seriálů",
@@ -470,7 +467,7 @@
"components.IssueDetails.IssueComment.edit": "Upravit komentář",
"components.IssueDetails.allseasons": "Všechny série",
"components.IssueDetails.closeissue": "Uzavřít problém",
"components.ManageSlideOver.downloadstatus": "Stav stahování",
"components.ManageSlideOver.downloadstatus": "Stahování",
"components.NotificationTypeSelector.issueresolved": "Problém vyřešen",
"components.RequestList.RequestItem.modifieduserdate": "{date} od {user}",
"components.RequestList.showallrequests": "Zobrazit všechny žádosti",
@@ -564,7 +561,6 @@
"components.IssueDetails.play4konplex": "Přehrát ve 4K na Plex",
"components.IssueList.IssueItem.openeduserdate": "{date} od uživatele {user}",
"components.IssueModal.CreateIssueModal.providedetail": "Uveďte prosím podrobné vysvětlení problému, na který jste narazili.",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Je problém s {title}?",
"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",
@@ -650,7 +646,7 @@
"components.UserList.edituser": "Úprava oprávnění uživatele",
"components.NotificationTypeSelector.issuecreatedDescription": "Odesílat upozornění, když jsou nahlášeny problémy.",
"components.NotificationTypeSelector.issuereopenedDescription": "Odesílat upozornění, když se problémy znovu otevřou.",
"components.RequestModal.pending4krequest": "Čeká na vyřízení žádosti 4K pro {title}",
"components.RequestModal.pending4krequest": "Čeká na vyřízení žádosti 4K",
"components.Settings.Notifications.NotificationsWebPush.webpushsettingsfailed": "Nastavení webových push oznámení se nepodařilo uložit.",
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Odeslání testovacího oznámení webhooku…",
"components.Settings.Notifications.toastEmailTestSending": "Odeslání e-mailového oznámení o testu…",
@@ -709,7 +705,7 @@
"components.Settings.SonarrModal.toastSonarrTestSuccess": "Připojení Sonarr úspěšně navázáno!",
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Základní adresa URL musí mít na začátku lomítko",
"components.Settings.cacheImages": "Povolení ukládání obrázků do mezipaměti",
"components.Settings.cacheImagesTip": "Optimalizovat a ukládat všechny obrázky lokálně (spotřebovává značné množství místa na disku)",
"components.Settings.cacheImagesTip": "Ukládat do mezipaměti a poskytovat optimalizované obrazy (vyžaduje značné množství místa na disku)",
"components.Settings.manualscanDescription": "Obvykle se provádí pouze jednou za 24 hodin. Overseerr bude kontrolovat nedávno přidané položky vašeho serveru Plex agresivněji. Pokud Plex konfigurujete poprvé, doporučujeme provést jednorázovou úplnou ruční kontrolu knihovny!",
"components.Settings.originallanguageTip": "Filtrování obsahu podle původního jazyka",
"components.Settings.urlBase": "Základní adresa URL",
@@ -757,7 +753,6 @@
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Odesílání oznámení bez zvuku",
"components.RequestBlock.languageprofile": "Jazykový profil",
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Souhrn limitů požadavků tohoto uživatele můžete zobrazit na jeho <ProfileLink>profilové stránce</ProfileLink>.",
"components.RequestModal.SearchByNameModal.nosummary": "K tomuto titulu nebylo nalezeno žádné shrnutí.",
"components.Settings.Notifications.NotificationsGotify.token": "Token aplikace",
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestFailed": "Testovací oznámení LunaSea se nepodařilo odeslat.",
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Musíte zadat platnou adresu URL",
@@ -893,11 +888,11 @@
"components.Settings.Notifications.NotificationsPushover.userToken": "Klíč uživatele nebo skupiny",
"components.RequestCard.failedretry": "Při opakovaném pokusu o zadání požadavku se něco pokazilo.",
"components.Settings.Notifications.NotificationsLunaSea.profileNameTip": "Vyžaduje se pouze v případě, že nepoužíváte profil <code>default</code>",
"components.RequestCard.mediaerror": "Související titul pro tuto žádost již není k dispozici.",
"components.RequestCard.mediaerror": "{mediaType} Nenalezeno",
"components.Settings.trustProxyTip": "Povolit Overseerr správně registrovat IP adresy klientů za proxy serverem",
"components.RequestList.RequestItem.mediaerror": "Související titul pro tuto žádost již není k dispozici.",
"components.RequestList.RequestItem.mediaerror": "{mediaType} Nenalezeno",
"components.RequestModal.QuotaDisplay.allowedRequests": "Můžete požádat o <strong>{limit}</strong> {type} každé <strong>{days}</strong> dny.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Váš požadavek jsme nemohli automaticky porovnat. Vyberte prosím správnou shodu ze seznamu níže.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Tuto sérii jsme nemohli automaticky spárovat. Níže prosím vyberte správnou shodu.",
"components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "Základ URL musí mít na začátku lomítko",
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Plex Nedávno přidané skenování",
"components.Settings.SettingsLogs.logsDescription": "Tyto protokoly můžete také zobrazit přímo prostřednictvím <code>stdout</code> nebo v <code>{appDataPath}/logs/overseerr.log</code>.",
@@ -905,8 +900,7 @@
"components.Settings.SonarrModal.loadingprofiles": "Načítání kvalitních profilů…",
"components.Settings.SonarrModal.selectRootFolder": "Vyberte kořenovou složku",
"components.ResetPassword.requestresetlinksuccessmessage": "Na zadanou e-mailovou adresu bude zaslán odkaz pro obnovení hesla, pokud je spojena s platným uživatelem.",
"components.RequestModal.pendingrequest": "Čekající žádost o {title}",
"components.RequestModal.request4ktitle": "Požadavek {title} v rozlišení 4K",
"components.RequestModal.pendingrequest": "Čekající žádost",
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "Nastavení oznámení LunaSea úspěšně uloženo!",
"components.Settings.SonarrModal.default4kserver": "Výchozí server 4K",
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "Váš 30znakový <UsersGroupsLink>identifikátor uživatele nebo skupiny</UsersGroupsLink>",
@@ -1036,5 +1030,91 @@
"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.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "{jobScheduleMinutes, plural, one {Každou minutu} few {Každé {jobScheduleMinutes} minuty} other {Každých {jobScheduleMinutes} minut}}"
"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.MovieDetails.physicalrelease": "Fyzické vydání",
"components.MovieDetails.managemovie": "Spravovat film",
"components.AirDateBadge.airsrelative": "Vysíla 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.Layout.UserDropdown.requests": "Žádosti",
"components.MovieDetails.reportissue": "Nahlásit problém",
"components.StatusChecker.restartRequired": "Je vyžadován restart serveru",
"components.PermissionEdit.viewrecent": "Zobrazit naposledy přidané",
"components.StatusChecker.appUpdated": "{applicationTitle} Aktualizováno",
"components.StatusChecker.appUpdatedDescription": "Chcete-li aplikaci znovu načíst, klikněte na tlačítko níže.",
"components.StatusChecker.restartRequiredDescription": "Chcete-li použít aktualizovaná nastavení, restartujte server.",
"components.RequestCard.tmdbid": "TMDB ID",
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
"components.TitleCard.tmdbid": "TMDB ID",
"components.TitleCard.tvdbid": "TheTVDB ID",
"components.RequestCard.tvdbid": "TheTVDB ID",
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
"components.PermissionEdit.autorequestMovies": "Automatické vyžádání filmů",
"components.PermissionEdit.autorequestMoviesDescription": "Udělte oprávnění k automatickému odesílání žádostí o filmy v jiném rozlišení než 4K prostřednictvím Plex Watchlistu.",
"components.PermissionEdit.viewrecentDescription": "Udělte oprávnění k zobrazení seznamu nedávno přidaných médií.",
"components.Settings.restartrequiredTooltip": "Aby se změny tohoto nastavení projevily, musí být Overserr restartován",
"components.StatusChecker.reloadApp": "Znovu načíst {applicationTitle}",
"components.TitleCard.cleardata": "Vyčistit data",
"components.TitleCard.mediaerror": "{mediaType} Nenalezeno",
"components.PermissionEdit.autorequestDescription": "Udělte oprávnění k automatickému odesílání žádostí o média jiná než 4K prostřednictvím seznamu Plex Watchlist.",
"components.PermissionEdit.autorequest": "Automatická žádost",
"components.PermissionEdit.autorequestSeries": "Automaticky vyžádat seriál",
"components.PermissionEdit.viewwatchlists": "Zobrazit Plex Watchilisty",
"components.Settings.advancedTooltip": "Nesprávná konfigurace tohoto nastavení může vést k narušení funkčnosti",
"components.Settings.deleteServer": "Smazat server {serverType}",
"components.Settings.experimentalTooltip": "Povolení tohoto nastavení může vést k neočekávanému chování aplikace",
"components.Settings.SettingsLogs.viewdetails": "Zobrazit podrobnosti",
"components.PermissionEdit.autorequestSeriesDescription": "Udělte oprávnění k automatickému odesílání žádostí o seriály jiné než 4K prostřednictvím Plex Watchlist.",
"components.RequestBlock.approve": "Schválit žádost",
"components.RequestBlock.decline": "Odmítnout požadavek",
"components.RequestBlock.lastmodifiedby": "Naposledy změněno od",
"components.RequestBlock.requestdate": "Datum požadavku",
"components.RequestBlock.requestedby": "Vyžádáno od",
"components.RequestCard.approverequest": "Schválit žádost",
"components.RequestCard.cancelrequest": "Zrušit žádost",
"components.RequestCard.declinerequest": "Odmítnout požadavek",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Watchlist synchronizace",
"components.StatusBadge.managemedia": "Spravovat {mediaType}",
"components.StatusBadge.openinarr": "Otevřít v {arr}",
"components.StatusBadge.playonplex": "Přehrávání cez Plex",
"components.TvDetails.manageseries": "Spravovat sérii",
"components.RequestBlock.delete": "Smazat požadavek",
"components.RequestBlock.edit": "Upravit požadavek",
"components.RequestCard.editrequest": "Upravit požadavek",
"components.RequestModal.SearchByNameModal.nomatches": "Pro tuto sérii jsme nenašli shodu.",
"components.RequestModal.requestcollection4ktitle": "Vyžádejte si kolekci ve 4K",
"components.RequestModal.requestcollectiontitle": "Vyžádat kolekci",
"components.RequestModal.requestmovie4ktitle": "Vyžádejte si film ve 4K",
"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.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.TvDetails.reportissue": "Nahlásit problém",
"components.MovieDetails.tmdbuserscore": "Uživatelské skóre TMDB",
"components.TvDetails.seasonstitle": "Sezóny",
"components.TvDetails.seasonnumber": "Sezóna {seasonNumber}",
"components.TvDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
"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.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>."
}

View File

@@ -32,7 +32,6 @@
"components.Discover.recentlyAdded": "Tilføjet for nyligt",
"components.Discover.populartv": "Populære Serier",
"components.Discover.popularmovies": "Populære Film",
"components.Discover.noRequests": "Ingen forespørgsler.",
"components.Discover.discovertv": "Populære Serier",
"components.Discover.discover": "Udforsk",
"components.Discover.TvGenreSlider.tvgenres": "Seriegenrer",
@@ -161,7 +160,6 @@
"components.PermissionEdit.viewissues": "Vis Problemer",
"components.RequestBlock.server": "Destinationsserver",
"components.IssueModal.CreateIssueModal.extras": "Ekstra",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Er der et problem med {title}?",
"components.IssueModal.CreateIssueModal.problemseason": "Berørt Sæson",
"components.IssueModal.CreateIssueModal.providedetail": "Giv venligst en detaljeret beskrivelse af problemet du stødte på.",
"components.IssueModal.CreateIssueModal.reportissue": "Rapportér et Problem",
@@ -286,14 +284,13 @@
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Denne bruger skal mindst have <strong>{seasons}</strong> {seasons, plural, one {sæsonforespørgsel} other {sæsonforespørgsler}} tilbage for at indsende en forespørgsel fore denne serie.",
"components.RequestModal.QuotaDisplay.season": "sæson",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {sæson} other {sæsoner}}",
"components.RequestModal.SearchByNameModal.nosummary": "Der kunne ikke findes en beskrivelse for denne titel.",
"components.RequestModal.alreadyrequested": "Allerede Forespurgt",
"components.RequestModal.cancel": "Annullér Forespørgsel",
"components.RequestModal.edit": "Redigér Forespørgsel",
"components.RequestModal.errorediting": "Noget gik galt under redigeringen af forespørgslen.",
"components.RequestModal.extras": "Ekstra",
"components.RequestModal.numberofepisodes": "Antal Episoder",
"components.RequestModal.pending4krequest": "Afventende 4K Forespørgsler for {title}",
"components.RequestModal.pending4krequest": "Afventende 4K Forespørgsler",
"components.RequestModal.pendingapproval": "Din forespørgsel afventer godkendelse.",
"components.ResetPassword.resetpasswordsuccessmessage": "Kodeord er nulstillet!",
"components.Settings.Notifications.NotificationsLunaSea.profileName": "Profilnavn",
@@ -336,7 +333,6 @@
"components.RequestModal.requesterror": "Noget gik galt under indsendelsen af forespørgslen.",
"components.RequestModal.requestfrom": "{username}s forespørgsel afventer godkendelse.",
"components.RequestModal.requestseasons": "Forespørg om {seasonCount} {seasonCount, plural, one {Sæson} other {Sæsoner}}",
"components.RequestModal.requesttitle": "Forespørg om {title}",
"components.RequestModal.season": "Sæson",
"components.ResetPassword.passwordreset": "Nulstil Kodeord",
"components.ResetPassword.requestresetlinksuccessmessage": "Et link til nulstilling af dit kodeord vil blive sendt til den angivne email adresse såfremt der eksisterer en konto til den.",
@@ -408,8 +404,7 @@
"components.RequestCard.failedretry": "Noget gik galt ved nyt forsøg på forespørgslen.",
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Ingen} other {<strong>#</strong>}} {type} {remaining, plural, one {forespørgsel} other {forespørgsler}} tilbage",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Vi kunne ikke automatisk matche din forespørgsel. Vælg venligst det korrekte match fra listen nedenfor.",
"components.RequestModal.pendingrequest": "Afventende Forespørgsel for {title}",
"components.RequestModal.request4ktitle": "Forespørg om {title} i 4K",
"components.RequestModal.pendingrequest": "Afventende Forespørgsel",
"components.Settings.Notifications.NotificationsPushover.userToken": "Bruger- eller Gruppenøgle",
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "Dit 30-tegns <UsersGroupsLink>bruger- eller gruppe-ID</UsersGroupsLink>",
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Du skal angive en gyldig bruger- eller gruppenøgle",
@@ -928,7 +923,6 @@
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "Noget gik galt, kodeordet kunne ikke gemmes.",
"components.UserProfile.UserSettings.menuPermissions": "Tilladelser",
"components.UserProfile.UserSettings.unauthorizedDescription": "Du har ikke tilladelse til at ændre denne bruger's indstillinger.",
"components.UserProfile.norequests": "Ingen forespørgsler.",
"components.UserProfile.pastdays": "{type} (seneste {days} dage)",
"components.UserProfile.recentrequests": "Seneste Forespørgsler",
"components.UserProfile.requestsperdays": "{limit} tilbage",

View File

@@ -33,13 +33,12 @@
"components.RequestModal.cancel": "Anfrage abbrechen",
"components.RequestModal.extras": "Extras",
"components.RequestModal.numberofepisodes": "Anzahl der Folgen",
"components.RequestModal.pendingrequest": "Ausstehende Anfrage für {title}",
"components.RequestModal.pendingrequest": "Ausstehende Anfrage",
"components.RequestModal.requestCancel": "Anfrage für <strong>{title}</strong> abgebrochen.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> erfolgreich angefragt!",
"components.RequestModal.requestadmin": "Diese Anfrage wird automatisch genehmigt.",
"components.RequestModal.requestfrom": "Die Anfrage von {username} muss noch genehmigt werden.",
"components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {Staffel} other {Staffeln}} anfragen",
"components.RequestModal.requesttitle": "{title} anfragen",
"components.RequestModal.season": "Staffel",
"components.RequestModal.seasonnumber": "Staffel {number}",
"components.RequestModal.selectseason": "Staffel(n) Auswählen",
@@ -190,7 +189,7 @@
"i18n.deleting": "Löschen …",
"components.UserList.userdeleteerror": "Beim Löschen des Benutzers ist etwas schief gelaufen.",
"components.UserList.userdeleted": "Benutzer erfolgreich gelöscht!",
"components.UserList.deleteuser": "{username} löschen",
"components.UserList.deleteuser": "Benutzer löschen",
"components.UserList.deleteconfirm": "Möchtest du diesen Benutzer wirklich löschen? Alle seine Anfragendaten werden dauerhaft entfernt.",
"components.Settings.SonarrModal.testFirstRootFolders": "Teste die Verbindung, um Stammordner zu laden",
"components.Settings.SonarrModal.testFirstQualityProfiles": "Teste die Verbindung, um Qualitätsprofile zu laden",
@@ -283,8 +282,7 @@
"components.Settings.Notifications.NotificationsWebhook.customJson": "JSON-Inhalt",
"components.Settings.Notifications.NotificationsWebhook.authheader": "Autorisierungsüberschrift",
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Dienst aktivieren",
"components.RequestModal.request4ktitle": "{title} in 4K anfragen",
"components.RequestModal.pending4krequest": "Ausstehende 4K Anfrage für {title}",
"components.RequestModal.pending4krequest": "Ausstehende 4K Anfrage",
"components.RequestButton.viewrequest4k": "4K Anfrage anzeigen",
"components.RequestButton.viewrequest": "Anfrage anzeigen",
"components.RequestButton.requestmore4k": "Mehr in 4K anfragen",
@@ -336,7 +334,6 @@
"components.Settings.hideAvailable": "Verfügbare Medien ausblenden",
"components.RequestModal.requesterror": "Beim Senden der Anfragen ist etwas schief gelaufen.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Wir konnten deine Anfrage nicht automatisch zuordnen. Bitte wähle eine korrekte Übereinstimmung aus der Liste aus.",
"components.RequestModal.SearchByNameModal.nosummary": "Keine Zusammenfassung für diesen Titel gefunden.",
"components.Login.signinwithplex": "Benutze dein Plex-Konto",
"components.Login.signinheader": "Anmelden um fortzufahren",
"components.Login.signingin": "Anmelden …",
@@ -581,7 +578,6 @@
"components.Settings.SettingsUsers.toastSettingsFailure": "Beim Speichern der Einstellungen ist ein Fehler aufgetreten.",
"components.Settings.Notifications.pgpPrivateKeyTip": "Signiere verschlüsselte E-Mail-Nachrichten mit <OpenPgpLink>OpenPGP</OpenPgpLink>",
"components.Settings.Notifications.pgpPasswordTip": "Signiere verschlüsselte E-Mail-Nachrichten mit <OpenPgpLink>OpenPGP</OpenPgpLink>",
"components.UserProfile.norequests": "Keine Anfragen.",
"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.",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} Minuten",
@@ -748,7 +744,6 @@
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {Version} other {Versionen}} hinterher",
"components.LanguageSelector.originalLanguageDefault": "Alle Sprachen",
"components.LanguageSelector.languageServerDefault": "Standard ({language})",
"components.Discover.noRequests": "Keine Anfragen.",
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "Webhook Test Benachrichtigung gesendet!",
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Webhook test Benachrichtigung wird gesendet…",
@@ -853,7 +848,6 @@
"components.StatusBadge.status": "{status}",
"components.IssueDetails.reopenissueandcomment": "Mit Kommentar wieder öffnen",
"components.IssueModal.CreateIssueModal.allseasons": "Alle Staffeln",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Gibt es ein Problem mit {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Betroffene Episode",
"components.IssueModal.CreateIssueModal.problemseason": "Betroffene Staffel",
"components.IssueModal.CreateIssueModal.providedetail": "Geben Sie eine detaillierte Erklärung des Problems an.",

View File

@@ -114,7 +114,6 @@
"components.Discover.recentrequests": "Πρόσφατα Αιτήματα",
"components.Discover.recentlyAdded": "Προστέθηκαν πρόσφατα",
"components.Discover.populartv": "Δημοφιλείς Σειρές",
"components.Discover.noRequests": "Δεν υπάρχουν αιτήματα.",
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook URL",
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Πρέπει να βάλεις μια έγκυρη διεύθυνση URL",
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSuccess": "Η δοκιμαστική ειδοποίηση LunaSea εστάλη!",
@@ -143,7 +142,6 @@
"components.RequestModal.selectseason": "Επιλογή Σεζόν",
"components.RequestModal.seasonnumber": "Σεζόν {number}",
"components.RequestModal.season": "Σεζόν",
"components.RequestModal.requesttitle": "Ζήτα {title}",
"components.RequestModal.requestseasons": "Ζήτα {seasonCount} {seasonCount, plural, one {Σεζόν} other {Σεζόν}}",
"components.RequestModal.requestfrom": "Το αίτημα του/της {username} εκκρεμεί προς έγκριση.",
"components.RequestModal.requesterror": "Κάτι πήγε στραβά κατά την υποβολή του αιτήματος.",
@@ -152,17 +150,15 @@
"components.RequestModal.requestadmin": "Αυτό το αίτημα θα εγκριθεί αυτόματα.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> ζητήθηκε επιτυχώς!",
"components.RequestModal.requestCancel": "Το αίτημα για <strong>{title}</strong> ακυρώθηκε.",
"components.RequestModal.request4ktitle": "Ζήτα {title} σε 4K",
"components.RequestModal.pendingrequest": "Εκκρεμές Αίτημα για {title}",
"components.RequestModal.pendingrequest": "",
"components.RequestModal.pendingapproval": "Το αίτημα σου εκκρεμεί προς έγκριση.",
"components.RequestModal.pending4krequest": "Εκκρεμές 4K Αίτημα για {title}",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.errorediting": "Κάτι πήγε στραβά κατά την επεξεργασία του αιτήματος.",
"components.RequestModal.edit": "Επεξεργασία Αιτήματος",
"components.RequestModal.cancel": "Ακύρωση Αιτήματος",
"components.RequestModal.autoapproval": "Αυτόματη Έγκριση",
"components.RequestModal.alreadyrequested": "Έχει ήδη ζητηθεί",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Δεν μπορέσαμε να αντιστοιχίσουμε αυτόματα το αίτημά σου. Παρακαλώ επίλεξε τη σωστή αντιστοιχία από την παρακάτω λίστα.",
"components.RequestModal.SearchByNameModal.nosummary": "Δεν βρέθηκε περίληψη για αυτόν τον τίτλο.",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {σεζόν} other {σεζόν}}",
"components.RequestModal.QuotaDisplay.season": "σεζόν",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Αυτός ο χρήστης χρειάζεται τουλάχιστον <strong>{seasons}</strong> {seasons, plural, one {αίτημα σεζόν} other {αιτήματα σεζόν}} απομένουν έτσι ώστε να γίνει αίτημα για αυτή τη σειρά.",
@@ -498,7 +494,6 @@
"components.UserProfile.requestsperdays": "Απομένει {limit}",
"components.UserProfile.recentrequests": "Πρόσφατα Αιτήματα",
"components.UserProfile.pastdays": "{type} (περασμένες {days} ημέρες)",
"components.UserProfile.norequests": "Δεν υπάρχουν αιτήματα.",
"components.UserProfile.movierequests": "Αιτήματα Ταινιών",
"components.UserProfile.limit": "{remaining} από {limit}",
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Δεν έχεις άδεια να τροποποιήσεις τον κωδικό πρόσβασης αυτού του χρήστη.",

View File

@@ -23,7 +23,7 @@
"components.Discover.discover": "Discover",
"components.Discover.discovermovies": "Popular Movies",
"components.Discover.discovertv": "Popular Series",
"components.Discover.noRequests": "No requests.",
"components.Discover.emptywatchlist": "Media added to your <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> will appear here.",
"components.Discover.plexwatchlist": "Your Plex Watchlist",
"components.Discover.popularmovies": "Popular Movies",
"components.Discover.populartv": "Popular Series",
@@ -91,7 +91,6 @@
"components.IssueModal.CreateIssueModal.allseasons": "All Seasons",
"components.IssueModal.CreateIssueModal.episode": "Episode {episodeNumber}",
"components.IssueModal.CreateIssueModal.extras": "Extras",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Is there a problem with {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Affected Episode",
"components.IssueModal.CreateIssueModal.problemseason": "Affected Season",
"components.IssueModal.CreateIssueModal.providedetail": "Please provide a detailed explanation of the issue you encountered.",
@@ -370,8 +369,8 @@
"components.RequestModal.QuotaDisplay.requiredquotaUser": "This user needs to have at least <strong>{seasons}</strong> {seasons, plural, one {season request} other {season requests}} remaining in order to submit a request for this series.",
"components.RequestModal.QuotaDisplay.season": "season",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {season} other {seasons}}",
"components.RequestModal.SearchByNameModal.nosummary": "No summary for this title was found.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "We couldn't automatically match your request. Please select the correct match from the list below.",
"components.RequestModal.SearchByNameModal.nomatches": "We were unable to find a match for this series.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "We were unable to automatically match this series. Please select the correct match below.",
"components.RequestModal.alreadyrequested": "Already Requested",
"components.RequestModal.approve": "Approve Request",
"components.RequestModal.autoapproval": "Automatic Approval",
@@ -640,7 +639,8 @@
"components.Settings.SettingsJobsCache.download-sync": "Download Sync",
"components.Settings.SettingsJobsCache.download-sync-reset": "Download Sync Reset",
"components.Settings.SettingsJobsCache.editJobSchedule": "Modify Job",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Frequency",
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Current Frequency",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "New Frequency",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Every {jobScheduleHours, plural, one {hour} other {{jobScheduleHours} hours}}",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Every {jobScheduleMinutes, plural, one {minute} other {{jobScheduleMinutes} minutes}}",
"components.Settings.SettingsJobsCache.flushcache": "Flush Cache",
@@ -773,7 +773,6 @@
"components.Settings.generalsettings": "General Settings",
"components.Settings.generalsettingsDescription": "Configure global and default settings for Overseerr.",
"components.Settings.hideAvailable": "Hide Available Media",
"components.Settings.hideRequested": "Hide Requested Media",
"components.Settings.hostname": "Hostname or IP Address",
"components.Settings.is4k": "4K",
"components.Settings.librariesRemaining": "Libraries Remaining: {count}",
@@ -1049,9 +1048,9 @@
"components.UserProfile.UserSettings.menuNotifications": "Notifications",
"components.UserProfile.UserSettings.menuPermissions": "Permissions",
"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.movierequests": "Movie Requests",
"components.UserProfile.norequests": "No requests.",
"components.UserProfile.pastdays": "{type} (past {days} days)",
"components.UserProfile.plexwatchlist": "Plex Watchlist",
"components.UserProfile.recentlywatched": "Recently Watched",

View File

@@ -63,13 +63,12 @@
"components.RequestModal.selectseason": "Seleccionar Temporada(s)",
"components.RequestModal.seasonnumber": "Temporada {number}",
"components.RequestModal.season": "Temporada",
"components.RequestModal.requesttitle": "Solicitar {title}",
"components.RequestModal.requestseasons": "Solicitar {seasonCount} {seasonCount, plural, one {Temporada} other {Temporadas}}",
"components.RequestModal.requestfrom": "La solicitud de {username} está pendiente de aprobación.",
"components.RequestModal.requestadmin": "Esta solicitud será aprobada automáticamente.",
"components.RequestModal.requestSuccess": "¡<strong>{title}</strong> solicitada con éxito!",
"components.RequestModal.requestCancel": "Solicitud para <strong>{title}</strong> cancelada.",
"components.RequestModal.pendingrequest": "Solicitud pendiente para {title}",
"components.RequestModal.pendingrequest": "Solicitud pendiente",
"components.RequestModal.numberofepisodes": "# de Episodios",
"components.RequestModal.extras": "Extras",
"components.RequestModal.cancel": "Cancelar Petición",
@@ -298,8 +297,7 @@
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Habilitar Agente",
"components.RequestModal.requestedited": "¡Solicitud para <strong>{title}</strong> modificada con éxito!",
"components.RequestModal.requestcancelled": "Solicitud para <strong>{title}</strong> cancelada.",
"components.RequestModal.request4ktitle": "Solicitar {title} en 4K",
"components.RequestModal.pending4krequest": "Solicitud pendiente en 4K para {title}",
"components.RequestModal.pending4krequest": "Solicitud pendiente en 4K",
"components.RequestModal.errorediting": "Algo salió mal al editar la solicitud.",
"components.RequestModal.AdvancedRequester.rootfolder": "Carpeta Raíz",
"components.RequestModal.AdvancedRequester.qualityprofile": "Perfil de calidad",
@@ -358,7 +356,6 @@
"components.ResetPassword.confirmpassword": "Confirmar Contraseña",
"components.RequestModal.requesterror": "Algo fue mal al realizar la solicitud.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "No hemos podido emparejar automáticamente tu solicitud. Por favor, selecciona el correcto de la lista.",
"components.RequestModal.SearchByNameModal.nosummary": "No se ha encontrado un resumen para este título.",
"components.RequestModal.AdvancedRequester.requestas": "Pedir como",
"components.RequestModal.AdvancedRequester.languageprofile": "Perfil de Idioma",
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
@@ -609,7 +606,6 @@
"i18n.settings": "Ajustes",
"i18n.advanced": "Avanzado",
"components.UserProfile.recentrequests": "Solicitudes Recientes",
"components.UserProfile.norequests": "Sin solicitudes.",
"components.UserProfile.UserSettings.menuPermissions": "Permisos",
"components.UserProfile.UserSettings.menuNotifications": "Notificaciones",
"components.UserProfile.UserSettings.menuGeneralSettings": "General",
@@ -742,7 +738,6 @@
"components.Layout.VersionStatus.streamstable": "Overseer (Estable)",
"components.Layout.VersionStatus.streamdevelop": "Overseer (Desarrollo)",
"components.Layout.VersionStatus.outofdate": "Desactualizado",
"components.Discover.noRequests": "Sin solicitudes.",
"components.UserList.autogeneratepasswordTip": "Envía por email una contraseña al usuario generada por el servidor",
"i18n.retrying": "Reintentando…",
"components.Settings.serverSecure": "seguro",
@@ -896,7 +891,6 @@
"components.ManageSlideOver.manageModalRequests": "Solicitudes",
"components.IssueList.sortModified": "Última Modificación",
"components.IssueModal.CreateIssueModal.allseasons": "Todas las Temporadas",
"components.IssueModal.CreateIssueModal.issomethingwrong": "¿Hay algún problema con {title}?",
"components.IssueModal.CreateIssueModal.episode": "Episodio {episodeNumber}",
"components.IssueModal.CreateIssueModal.problemseason": "Temporada Afectada",
"components.IssueModal.CreateIssueModal.toastviewissue": "Ver Incidencia",

View File

@@ -33,13 +33,12 @@
"components.RequestModal.cancel": "Annuler la demande",
"components.RequestModal.extras": "Extras",
"components.RequestModal.numberofepisodes": "Nbr d'épisodes",
"components.RequestModal.pendingrequest": "Demande en attente pour {title}",
"components.RequestModal.pendingrequest": "Demande en attente",
"components.RequestModal.requestCancel": "Demande pour <strong>{title}</strong> refusée.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> demandé avec succès !",
"components.RequestModal.requestadmin": "Cette demande sera validée automatiquement.",
"components.RequestModal.requestfrom": "La demande de {username} est en attente de validation.",
"components.RequestModal.requestseasons": "Demander {seasonCount} {seasonCount, plural, one {saison} other {saisons}}",
"components.RequestModal.requesttitle": "Demander {title}",
"components.RequestModal.season": "Saison",
"components.RequestModal.seasonnumber": "Saison {number}",
"components.RequestModal.selectseason": "Sélectionner la/les saison(s)",
@@ -236,7 +235,7 @@
"components.MovieDetails.watchtrailer": "Regarder la bande-annonce",
"components.CollectionDetails.requestcollection": "Demander la collection",
"components.CollectionDetails.overview": "Résumé",
"components.CollectionDetails.numberofmovies": "{count} Films",
"components.CollectionDetails.numberofmovies": "{count} films",
"i18n.requested": "Demandé",
"i18n.retry": "Réessayer",
"i18n.failed": "Échec",
@@ -279,8 +278,7 @@
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Aide sur les variables de modèle",
"components.Settings.Notifications.NotificationsWebhook.authheader": "En-tête d'autorisation",
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Activer l'agent",
"components.RequestModal.request4ktitle": "Demander {title} en 4K",
"components.RequestModal.pending4krequest": "Demande en attente pour {title} en 4K",
"components.RequestModal.pending4krequest": "Demande 4K en attente",
"components.RequestButton.viewrequest4k": "Voir la demande 4K",
"components.RequestButton.viewrequest": "Voir la demande",
"components.RequestButton.requestmore4k": "Demander d'autres ajouts en 4K",
@@ -335,8 +333,7 @@
"i18n.experimental": "Expérimentale",
"components.Settings.hideAvailable": "Masquer les médias disponibles",
"components.RequestModal.requesterror": "Une erreur s'est produite lors de la demande.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nous n'avons pas pu associer votre demande automatiquement. Veuillez sélectionner l'association correcte dans la liste ci-dessous.",
"components.RequestModal.SearchByNameModal.nosummary": "Aucun résumé trouvé pour ce titre.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nous n'avons pas pu associer cette série automatiquement. Veuillez sélectionner l'association correcte dans la liste ci-dessous.",
"components.Login.signinwithplex": "Utilisez votre compte Plex",
"components.Login.signin": "Connexion",
"components.Login.signinheader": "Connectez-vous pour continuer",
@@ -585,7 +582,6 @@
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Vous ne pouvez pas modifier vos propres permissions.",
"components.Settings.Notifications.pgpPrivateKeyTip": "Signer des emails chiffrés en utilisant <OpenPgpLink>OpenPGP</OpenPgpLink>",
"components.Settings.Notifications.pgpPasswordTip": "Signer des emails chiffrés en utilisant <OpenPgpLink>OpenPGP</OpenPgpLink>",
"components.UserProfile.norequests": "Aucune demande.",
"components.Settings.Notifications.pgpPrivateKey": "PGP Clé privée",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} minutes",
"components.TvDetails.episodeRuntime": "Durée d'un épisode",
@@ -625,7 +621,7 @@
"components.ResetPassword.passwordreset": "Réinitialiser le mot de passe",
"pages.internalservererror": "Erreur interne du serveur",
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailureVerifyCurrent": "Un problème est survenu lors de l'enregistrement du mot de passe. Votre mot de passe actuel a-t-il été saisi correctement ?",
"components.Settings.cacheImagesTip": "Optimiser et stocker toutes les images localement (consomme une quantité considérable d'espace disque)",
"components.Settings.cacheImagesTip": "Met en cache localement et utilise des images optimisées (nécessite une quantité considérable d'espace disque)",
"components.Settings.cacheImages": "Activer la mise en cache d'image",
"components.Settings.SettingsLogs.time": "Horodatage",
"components.Settings.SettingsLogs.resumeLogs": "Résumer",
@@ -724,17 +720,16 @@
"components.Settings.Notifications.validationPgpPassword": "Vous devez fournir un mot de passe PGP",
"components.Settings.Notifications.botUsernameTip": "Permet aux utilisateurs de démarrer également une conversation avec votre bot et de configurer leurs propres notifications personnelles",
"components.RequestModal.pendingapproval": "Votre demande est en attente de validation.",
"components.RequestList.RequestItem.mediaerror": "Le titre associé à cette demande nest plus disponible.",
"components.RequestList.RequestItem.mediaerror": "{mediaType} non trouvé",
"components.RequestList.RequestItem.deleterequest": "Supprimer la Demande",
"components.RequestList.RequestItem.cancelRequest": "Annuler la demande",
"components.RequestCard.mediaerror": "Le titre associé à cette demande nest plus disponible.",
"components.RequestCard.mediaerror": "{mediaType} non trouvé",
"components.RequestCard.deleterequest": "Supprimer la Demande",
"components.NotificationTypeSelector.notificationTypes": "Types de Notification",
"components.Layout.VersionStatus.streamstable": "Overseerr stable",
"components.Layout.VersionStatus.streamdevelop": "Développement d'Overseerr",
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} en retard",
"components.Layout.VersionStatus.outofdate": "Obsolète",
"components.Discover.noRequests": "Aucune demande.",
"components.RequestModal.QuotaDisplay.requiredquota": "Vous devez avoir au moins <strong>{seasons}</strong> {seasons, plural, one {demande de saison} other {demandes de saisons}} afin de soumettre une demande pour cette série.",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Cet utilisateur doit avoir au moins <strong>{seasons}</strong> {seasons, plural, one {demande de saison} other {demandes de saisons}} afin de soumettre une demande pour cette série.",
"components.Settings.noDefaultNon4kServer": "Si vous navez quun seul serveur {serverType} pour les contenus non-4K et 4K (ou si vous ne téléchargez que du contenu 4K), votre serveur {serverType} ne devrait <strong>PAS</strong> être désigné comme serveur 4K.",
@@ -866,7 +861,6 @@
"components.IssueDetails.reopenissueandcomment": "Rouvrir avec un commentaire",
"components.IssueDetails.season": "Saison {seasonNumber}",
"components.IssueModal.CreateIssueModal.episode": "Épisode {episodeNumber}",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Y a-t-il un problème avec {title} ?",
"components.IssueModal.CreateIssueModal.problemepisode": "Épisode concerné",
"components.IssueModal.CreateIssueModal.problemseason": "Saison affectée",
"components.IssueModal.CreateIssueModal.providedetail": "Fournissez une explication détaillée du problème.",
@@ -1056,7 +1050,7 @@
"components.StatusChecker.appUpdatedDescription": "Veuillez cliquer sur le bouton ci-dessous pour recharger l'application.",
"components.StatusChecker.restartRequiredDescription": "Veuillez redémarrer le serveur pour appliquer les paramètres mis à jour.",
"components.TitleCard.cleardata": "Effacer les données",
"components.TitleCard.mediaerror": "{mediaType} Non trouvé",
"components.TitleCard.mediaerror": "{mediaType} non trouvé",
"components.TitleCard.tmdbid": "TMDB ID",
"components.TitleCard.tvdbid": "TheTVDB ID",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Demander automatiquement les films",
@@ -1068,5 +1062,59 @@
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Synchronisation de la Plex Watchlist",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Demande automatiquement les films sur ta <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Recevez une notification lorsque de nouvelles demandes de médias sont automatiquement soumises pour des éléments de votre Plex Watchlist.",
"components.StatusChecker.restartRequired": "Redémarrage du serveur requis"
"components.StatusChecker.restartRequired": "Redémarrage du serveur requis",
"components.StatusChecker.appUpdated": "{applicationTitle} mis à jour",
"components.Settings.SettingsLogs.viewdetails": "Voir les détails",
"components.Settings.advancedTooltip": "Une configuration incorrecte de ce paramètre peut entraîner un dysfonctionnement",
"components.Settings.experimentalTooltip": "L'activation de ce paramètre peut entraîner un comportement inattendu de l'application",
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
"components.PermissionEdit.viewwatchlists": "Voir Plex Watchlists",
"components.TvDetails.reportissue": "Signaler un problème",
"components.AirDateBadge.airedrelative": "Diffusé {relativeTime}",
"components.AirDateBadge.airsrelative": "Diffusion {relativeTime}",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Demandes de films",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Demandes de séries",
"components.Layout.UserDropdown.requests": "Demandes",
"components.MovieDetails.managemovie": "Gérer le film",
"components.MovieDetails.reportissue": "Signaler un problème",
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# épisode} sur {# épisodes}}",
"components.TvDetails.manageseries": "Gérer les séries",
"components.TvDetails.seasonnumber": "Saison {seasonNumber}",
"components.TvDetails.seasonstitle": "Saisons",
"components.TvDetails.status4k": "4K {status}",
"components.MovieDetails.rtaudiencescore": "Note d'audience de Rotten Tomatoes",
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatomètre",
"components.MovieDetails.tmdbuserscore": "Note des utilisateurs TMDB",
"components.PermissionEdit.viewwatchlistsDescription": "Autorise à voir la Plex Watchlist des autres utilisateurs.",
"components.RequestBlock.approve": "Approuver la demande",
"components.RequestBlock.decline": "Refuser la demande",
"components.RequestBlock.delete": "Supprimer la demande",
"components.RequestBlock.edit": "Modifier la demande",
"components.RequestBlock.languageprofile": "Profil de langue",
"components.RequestBlock.lastmodifiedby": "Dernière modification par",
"components.RequestBlock.requestdate": "Date de la demande",
"components.RequestBlock.requestedby": "Demandé par",
"components.RequestCard.approverequest": "Approuver la demande",
"components.RequestCard.cancelrequest": "Annuler la demande",
"components.RequestCard.declinerequest": "Refuser la demande",
"components.StatusBadge.managemedia": "Gérer {mediaType}",
"components.StatusBadge.openinarr": "Ouvrir dans {arr}",
"components.StatusBadge.playonplex": "Lire sur Plex",
"components.TvDetails.Season.somethingwentwrong": "Une erreur s'est produite lors de la récupération des données de la saison.",
"components.TvDetails.rtaudiencescore": "Note d'audience de Rotten Tomatoes",
"components.TvDetails.rtcriticsscore": "Rotten Tomatoes Tomatomètre",
"components.TvDetails.tmdbuserscore": "Note des utilisateurs TMDB",
"components.UserProfile.plexwatchlist": "Plex Watchlist",
"components.RequestCard.editrequest": "Modifier la demande",
"components.Settings.restartrequiredTooltip": "Overseerr doit être redémarré pour que les modifications de ce paramètre prennent effet",
"components.Settings.deleteServer": "Supprimer {serverType} serveur",
"components.RequestModal.requestcollection4ktitle": "Demander la collection en 4K",
"components.Discover.emptywatchlist": "Les médias ajoutés à ta <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> apparaîtront ici.",
"components.RequestModal.requestcollectiontitle": "Demander la collection",
"components.UserProfile.emptywatchlist": "Les médias ajoutés à ta <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> apparaîtront ici.",
"components.RequestModal.SearchByNameModal.nomatches": "Nous n'avons pas pu trouver de correspondance pour cette série.",
"components.RequestModal.requestmovie4ktitle": "Demander le film en 4K",
"components.RequestModal.requestmovietitle": "Demander le film",
"components.RequestModal.requestseries4ktitle": "Demander la série en 4K",
"components.RequestModal.requestseriestitle": "Demander la série"
}

264
src/i18n/locale/hr.json Normal file
View File

@@ -0,0 +1,264 @@
{
"components.CollectionDetails.numberofmovies": "{count} Filmovi",
"components.CollectionDetails.overview": "Pregled",
"components.CollectionDetails.requestcollection4k": "Zahtjev za serijalom u 4K",
"components.CollectionDetails.requestcollection": "Zahtjev za serijalom",
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre} Filmovi",
"components.Discover.DiscoverMovieLanguage.languageMovies": "{language} Filmovi",
"components.Discover.DiscoverNetwork.networkSeries": "{network} Serije",
"components.Discover.DiscoverStudio.studioMovies": "{studio} Filmovi",
"components.Discover.discover": "Otkrivanje",
"components.Discover.discovermovies": "Popularni Filmovi",
"components.Discover.discovertv": "Popularne Serije",
"components.Discover.DiscoverTvGenre.genreSeries": "{genre} Serije",
"components.Discover.DiscoverTvLanguage.languageSeries": "{language} Serije",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Vaš Plex popis za gledanje",
"components.Discover.MovieGenreList.moviegenres": "Filmski Žanrovi",
"components.Discover.StudioSlider.studios": "Studio",
"components.Discover.TvGenreList.seriesgenres": "Serijski Žanrovi",
"components.Discover.TvGenreSlider.tvgenres": "Serijski Žanrovi",
"components.Discover.plexwatchlist": "Vaš Plex popis za gledanje",
"components.Discover.popularmovies": "Popularni Filmovi",
"components.Discover.recentlyAdded": "Nedavno Dodano",
"components.Discover.recentrequests": "Nedavni Zahtjevi",
"components.Discover.trending": "Popularno",
"components.IssueDetails.IssueComment.edit": "Uredi Komentar",
"components.IssueDetails.IssueDescription.deleteissue": "Izbriši problem",
"components.IssueDetails.IssueDescription.description": "Opis",
"components.IssueDetails.IssueDescription.edit": "Uredi opis",
"components.IssueDetails.allepisodes": "Sve Epizode",
"components.IssueDetails.closeissue": "Zatvori Problem",
"components.IssueDetails.closeissueandcomment": "Zatvori s komentarom",
"components.IssueDetails.commentplaceholder": "Dodaj komentar…",
"components.IssueDetails.comments": "Komentari",
"components.IssueDetails.deleteissue": "Izbriši problem",
"components.AirDateBadge.airedrelative": "Emitirano {relativeTime}",
"components.AirDateBadge.airsrelative": "Emitiranje {relativeTime}",
"components.AppDataWarning.dockerVolumeMissingDescription": "Navedeni <code>{appDataPath}</code> mapirani volumen nije ispravno podešen. Svi podaci će biti izbrisani kada se spremnik (container) zaustavi ili ponovno pokrene.",
"components.Discover.DiscoverWatchlist.watchlist": "Plex popis za gledanje",
"components.Discover.emptywatchlist": "Filmovi dodani na Vaš <PlexWatchlistSupportLink> popis za gledanje </PlexWatchlistSupportLink> pojaviti će se ovdje.",
"components.Discover.MovieGenreSlider.moviegenres": "Filmski Žanrovi",
"components.Discover.NetworkSlider.networks": "Striming servisi",
"components.Discover.populartv": "Popularne Serije",
"components.Discover.upcomingtv": "Nadolazeće Serije",
"components.Discover.upcoming": "Nadolazeći Filmovi",
"components.Discover.upcomingmovies": "Nadolazeći Filmovi",
"components.DownloadBlock.estimatedtime": "Procijenjeno {time}",
"components.IssueDetails.IssueComment.areyousuredelete": "Jeste li sigurni da želite izbrisati ovaj komentar?",
"components.IssueDetails.IssueComment.delete": "Izbriši Komentar",
"components.IssueDetails.IssueComment.postedby": "Objavljeno u {relativeTime} od korisnika {username}",
"components.IssueDetails.IssueComment.validationComment": "Morate unijeti poruku",
"components.IssueDetails.IssueComment.postedbyedited": "Objavljeno u {relativeTime} od korisnika {username} (Uređeno)",
"components.IssueDetails.allseasons": "Sve Sezone",
"components.IssueDetails.episode": "Epizode {episodeNumber}",
"components.IssueDetails.deleteissueconfirm": "Jeste li sigurni da želite izbrisati ovaj problem?",
"components.IssueDetails.lastupdated": "Zadnje ažurirano",
"components.IssueDetails.leavecomment": "Komentar",
"components.IssueDetails.nocomments": "Bez komentara.",
"components.IssueDetails.openedby": "#{issueId} otvoren u {relativeTime} od korisnka {username}",
"components.IssueDetails.openin4karr": "Otvoren u 4K {arr}",
"components.IssueDetails.openinarr": "Otvoren u {arr}",
"components.IssueDetails.toasteditdescriptionfailed": "Nešto nije u redu prilikom uređivanja opisa problema.",
"components.IssueModal.CreateIssueModal.allepisodes": "Sve epizode",
"components.IssueDetails.toastissuedeleted": "Problem je uspješno izbrisan!",
"components.IssueDetails.unknownissuetype": "Nepoznato",
"components.IssueList.issues": "Problem",
"components.IssueList.IssueItem.openeduserdate": "{date} od korinika {user}",
"components.IssueModal.CreateIssueModal.allseasons": "Sve sezone",
"components.IssueModal.issueOther": "Ostalo",
"components.IssueModal.issueAudio": "Zvuk",
"components.IssueModal.issueSubtitles": "Podnaslov",
"components.IssueModal.issueVideo": "Video",
"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.ManageSlideOver.pastdays": "Proteklih {days, number} dana",
"components.Login.signinwithplex": "Koristite svoj Plex račun",
"components.ManageSlideOver.movie": "film",
"components.Login.validationemailrequired": "Morate unijeti valjanu adresu e-pošte",
"components.ManageSlideOver.manageModalRequests": "Zahtjevi",
"components.ManageSlideOver.manageModalClearMediaWarning": "* Ovo će nepovratno ukloniti sve podatke za ovaj {mediaType}, uključujući sve zahtjeve. Ako ova stavka postoji u vašoj Plex biblioteci, informacije o medijima ponovno će se stvoriti tijekom sljedećeg skeniranja.",
"components.ManageSlideOver.manageModalMedia4k": "4K Mediji",
"components.ManageSlideOver.manageModalNoRequests": "Nema zahtjeva.",
"components.ManageSlideOver.manageModalMedia": "Mediji",
"components.ManageSlideOver.manageModalTitle": "Upravljanje {mediaType}",
"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.MovieDetails.budget": "Proračun",
"components.ManageSlideOver.opentautulli": "Otvori u Tautulli-u",
"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.overviewunavailable": "Pregled nedostupan.",
"components.MovieDetails.reportissue": "Prijavi problem",
"components.MovieDetails.revenue": "Prihod",
"components.MovieDetails.rtaudiencescore": "Rotten Tomatoes ocjena publike",
"components.MovieDetails.showless": "Prikaži manje",
"components.MovieDetails.showmore": "Prikaži više",
"components.MovieDetails.similar": "Slični naslovi",
"components.MovieDetails.streamingproviders": "Trenutačno se prikacuje na",
"components.NotificationTypeSelector.issuecommentDescription": "Pošaljite obavijest kada problemi dobiju nove komentare.",
"components.NotificationTypeSelector.issueresolved": "Problem riješen",
"components.NotificationTypeSelector.issuereopened": "Problem ponovno otvoren",
"components.NotificationTypeSelector.issueresolvedDescription": "Pošalji obavijest kada se problem riješi.",
"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.season": "Sezona {seasonNumber}",
"components.IssueDetails.toasteditdescriptionsuccess": "Opis problema je uspješno uređen!",
"components.IssueDetails.toastissuedeletefailed": "Nešto nije u redu prilikom brisanja problema.",
"components.IssueDetails.toaststatusupdated": "Status problema je uspješno ažuriran!",
"components.IssueDetails.toaststatusupdatefailed": "Nešto nije u redu prilikom ažuriranja statusa problema.",
"components.IssueList.IssueItem.issuestatus": "Status",
"components.IssueList.IssueItem.issuetype": "Vrsta",
"components.IssueList.IssueItem.opened": "Otvoren",
"components.IssueList.IssueItem.problemepisode": "Zahvaćene Epizode",
"components.IssueList.IssueItem.unknownissuetype": "Nepoznato",
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {Epizoda} other {Epizode}}",
"components.IssueList.IssueItem.viewissue": "Pogledaj problem",
"components.IssueList.showallissues": "Prikaži sve probleme",
"components.IssueList.sortAdded": "Najnoviji",
"components.IssueList.sortModified": "Zadnje promjene",
"components.IssueModal.CreateIssueModal.episode": "Epizoda {episodeNumber}",
"components.IssueModal.CreateIssueModal.extras": "Dodaci",
"components.IssueModal.CreateIssueModal.problemepisode": "Zahvaćene epizode",
"components.IssueModal.CreateIssueModal.problemseason": "Zahvaćene sezone",
"components.IssueModal.CreateIssueModal.providedetail": "Navedite detaljno objašnjenje problema na koji ste naišli.",
"components.IssueModal.CreateIssueModal.reportissue": "Prijavite problem",
"components.IssueModal.CreateIssueModal.season": "Sezona {seasonNumber}",
"components.IssueModal.CreateIssueModal.submitissue": "Pošalji problem",
"components.IssueModal.CreateIssueModal.toastFailedCreate": "Nešto nije u redu prilikom slanja problema.",
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Problem prijavljen za <strong>{title}</strong> je uspješno predan!",
"components.IssueModal.CreateIssueModal.toastviewissue": "Pogledaj problem",
"components.IssueModal.CreateIssueModal.validationMessageRequired": "Morate unijeti opis",
"components.IssueModal.CreateIssueModal.whatswrong": "Što nije u redu?",
"components.LanguageSelector.languageServerDefault": "Default ({language})",
"components.LanguageSelector.originalLanguageDefault": "Svi jezici",
"components.Layout.LanguagePicker.displaylanguage": "Jezik prikaza",
"components.Layout.SearchInput.searchPlaceholder": "Pretražite filmove i TV",
"components.Layout.Sidebar.dashboard": "Otkrivanje",
"components.Layout.Sidebar.issues": "Problemi",
"components.Layout.Sidebar.requests": "Zahtjevi",
"components.Layout.Sidebar.settings": "Postavke",
"components.Layout.Sidebar.users": "Korisnici",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Zahtjevi za serije",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Zahtjevi za filmove",
"components.Layout.UserDropdown.settings": "Postavke",
"components.Layout.UserDropdown.signout": "Odjavi se",
"components.Layout.VersionStatus.outofdate": "Zastarjelo",
"components.Layout.VersionStatus.streamdevelop": "Overseerr 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.",
"components.Login.signin": "Prijavite se",
"components.Login.signingin": "Prijava…",
"components.Layout.VersionStatus.commitsbehind": "",
"components.Login.signinheader": "Prijavite se za nastavak",
"components.Login.signinwithoverseerr": "Koristite svoj {applicationTitle} račun",
"components.Login.validationpasswordrequired": "Morate unijeti lozinku",
"components.ManageSlideOver.alltime": "Cijelo vrijeme",
"components.ManageSlideOver.downloadstatus": "Preuzimanja",
"components.ManageSlideOver.manageModalAdvanced": "Napredna",
"components.ManageSlideOver.manageModalClearMedia": "Obriši podatke",
"components.ManageSlideOver.manageModalIssues": "Otvoreni problemi",
"components.ManageSlideOver.markallseasons4kavailable": "Označi sve sezone kao dostupne u 4K",
"components.ManageSlideOver.markallseasonsavailable": "Označi sve sezone kao dostupne",
"components.ManageSlideOver.markavailable": "Označi kao dostupno",
"components.ManageSlideOver.playedby": "Reproducirano od",
"components.ManageSlideOver.plays": "<strong>{playCount, broj}</strong> {playCount, plural, one {reproducirano} other {reproducirano}}",
"components.MovieDetails.MovieCast.fullcast": "Glumačka postava",
"components.MovieDetails.digitalrelease": "Digitalno izdanje",
"components.MovieDetails.mark4kavailable": "Označi kao dostupno u 4K",
"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.recommendations": "Preporuke",
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Datum Izlaska} other {Datumi izlaska}}",
"components.MovieDetails.rtcriticsscore": "Rotten Tomatoes Tomatometer",
"components.MovieDetails.runtime": "{minutes} minute",
"components.MovieDetails.studio": "{studioCount, plural, one {Studio} other {Studiji}}",
"components.MovieDetails.theatricalrelease": "Izdanje u kinima",
"components.MovieDetails.tmdbuserscore": "Ocjena korisnika TMDB-a",
"components.MovieDetails.viewfullcrew": "Pogledajte cijelu filmsku postavu",
"components.MovieDetails.watchtrailer": "Pogledajte najavu",
"components.NotificationTypeSelector.adminissuecommentDescription": "Primite obavijest kada drugi korisnici komentiraju probleme.",
"components.NotificationTypeSelector.adminissuereopenedDescription": "Primite obavijest kada problem ponovno otvore drugi korisnici.",
"components.NotificationTypeSelector.adminissueresolvedDescription": "Primite obavijest kada drugi korisnici riješe probleme.",
"components.NotificationTypeSelector.issuecomment": "Komentiraj problem",
"components.NotificationTypeSelector.issuecreated": "Problem prijavljen",
"components.NotificationTypeSelector.issuecreatedDescription": "Pošalji obavijest kada se problem prijavi.",
"components.NotificationTypeSelector.userissueresolvedDescription": "Primite obavijest kada problemi koje ste prijavili budu riješeni.",
"components.NotificationTypeSelector.mediaavailableDescription": "Slanje obavijesti kada medijski zahtjevi postanu dostupni.",
"components.NotificationTypeSelector.mediadeclinedDescription": "Slanje obavijesti kada su medijski zahtjevi odbijeni.",
"components.NotificationTypeSelector.mediarequested": "Zahtjev čeka odobrenje",
"components.NotificationTypeSelector.mediarequestedDescription": "Slanje obavijesti kada korisnici pošalju nove medijske zahtjeve koji zahtijevaju odobrenje.",
"components.NotificationTypeSelector.mediaautorequested": "Zahtjev je automatski poslan",
"components.NotificationTypeSelector.mediaavailable": "Zahtjev dostupan",
"components.NotificationTypeSelector.mediafailedDescription": "Slanje obavijesti kada se medijski zahtjevi ne uspiju dodati u Radarr ili Sonarr.",
"components.NotificationTypeSelector.userissuecommentDescription": "Primite obavijest kada problemi koje ste prijavili dobiju nove komentare.",
"components.PermissionEdit.autoapprove4kSeries": "Automatsko odobravanje serija u 4K",
"components.NotificationTypeSelector.usermediafailedDescription": "Primite obavijest kada se medijski zahtjevi ne uspiju dodati u Radarr ili Sonarr.",
"components.NotificationTypeSelector.usermediarequestedDescription": "Primite obavijest kada drugi korisnici pošalju nove medijske zahtjeve koji zahtijevaju odobrenje.",
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Primite obavijest kada drugi korisnici pošalju nove medijske zahtjeve koji se automatski odobravaju.",
"components.NotificationTypeSelector.usermediadeclinedDescription": "Primite obavijest kada vaši medijski zahtjevi budu odbijeni.",
"components.PermissionEdit.adminDescription": "Potpuni administratorski pristup. Zaobilazi sve druge provjere dopuštenja.",
"components.PermissionEdit.advancedrequest": "Napredni zahtjevi",
"components.PermissionEdit.autoapprove4k": "Automatsko odobravanje 4K",
"components.PermissionEdit.autoapproveSeriesDescription": "Dozvolite automatsko odobravanje zahtjeva za serijale koji nisu u 4K.",
"components.PermissionEdit.autoapprove4kMoviesDescription": "Dozvolite automatsko odobravanje zahtjeva za filmove u 4K.",
"components.PermissionEdit.autoapprove4kSeriesDescription": "Dozvolite automatsko odobravanje zahtjeva za serije u 4K.",
"components.QuotaSelector.days": "{count, plural, one {danu} other {danu}}",
"components.QuotaSelector.movies": "{count, plural, one {film} other {filmova}}",
"components.PermissionEdit.autoapproveMoviesDescription": "Dozvolite automatsko odobravanje zahtjeva za filmove koji nisu u 4K.",
"components.RequestButton.approve4krequests": "Odobriti {requestCount, plural, one {4K Zahtjev} other {{requestCount} 4K Zahtjeve}}",
"components.RequestModal.QuotaDisplay.movielimit": "{limit, plural, one {film} other {filmova}}",
"components.RequestButton.approverequests": "Odobriti {requestCount, plural, one {Zatjev} other {{requestCount} Zahtjeve}}",
"components.QuotaSelector.seasons": "{count, plural, one {sezona} other {sezone}}",
"components.RequestCard.seasons": "{seasonCount, plural, one {Sezona} other {Sezone}}",
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Sezona} other {Sezone}}",
"components.RequestBlock.seasons": "{seasonCount, plural, one {Sezona} other {Sezone}}",
"components.RequestButton.decline4krequests": "Odbiti {requestCount, plural, one {4K Zahtjev} other {{requestCount} 4K Zahtjeve}}",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Ovaj korisnik treba imati još barem <strong>{seasons}</strong> {seasons, plural, one {jedan zahtjev za sezonu} other {nekoliko zahtjeva za sezone}} kako bi mogao preadti zahtjev za ovu seriju.",
"components.RequestModal.QuotaDisplay.requiredquota": "Morate imati još barem <strong>{seasons}</strong> {seasons, plural, one {jedan zahtjev za sezonu} other {nekoliko zahtjeva za sezone}} kako bi mogli preadti zahtjev za ovu seriju.",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {sezona} other {sezona/e}}",
"components.RequestModal.requestmovies": "{count} {count, plural, one {Zahtjev za film} other {Zahtjevi za filmove}}",
"components.RequestModal.requestmovies4k": "{count} {count, plural, one {Zahtjev za film} other {Zahtejvi za filmove}} u 4K",
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Slanje obavijesti kada korisnici pošalju novi medijski zahtjev koji se automatski odobrava.",
"components.NotificationTypeSelector.mediaapproved": "Zahtjev odobren",
"components.NotificationTypeSelector.mediaapprovedDescription": "Slanje obavijesti kada se medijski zahtjev ručno odobri.",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Primite obavijest kada se automatski pošalje novi medijski zahtjevi za stavke na vašoj Plex listi koju pratite.",
"components.NotificationTypeSelector.mediadeclined": "Zahtjev je odbijen",
"components.NotificationTypeSelector.mediafailed": "Obrada zahtjeva nije uspjela",
"components.NotificationTypeSelector.notificationTypes": "Vrste obavijesti",
"components.NotificationTypeSelector.userissuecreatedDescription": "Primite obavijest kada drugi korisnici prijave probleme.",
"components.NotificationTypeSelector.userissuereopenedDescription": "Primite obavijest kada se problemi koje ste prijavili ponovno otvore.",
"components.NotificationTypeSelector.usermediaapprovedDescription": "Primite obavijest kada vaši zahtjevi za medije budu odobreni.",
"components.NotificationTypeSelector.usermediaavailableDescription": "Primite obavijest kada vaši medijski zahtjevi postanu dostupni.",
"components.PermissionEdit.admin": "Administrator",
"components.PermissionEdit.advancedrequestDescription": "Dodajte dozvolu za izmjenu naprednih opcija zahtjeva za medije.",
"components.PermissionEdit.autoapprove": "Automatsko odobravanje",
"components.PermissionEdit.autoapprove4kMovies": "Automatsko odobravanje 4K filmova",
"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}}"
}

View File

@@ -103,7 +103,6 @@
"components.RequestModal.extras": "Extrák",
"components.RequestModal.errorediting": "Hiba történt a kérés szerkesztése közben.",
"components.RequestModal.cancel": "Kérés visszavonása",
"components.RequestModal.SearchByNameModal.nosummary": "Nem található összefoglaló ehhez a címhez.",
"components.RequestModal.AdvancedRequester.rootfolder": "Root könyvtár",
"components.RequestModal.AdvancedRequester.qualityprofile": "Minőség profil",
"components.RequestModal.AdvancedRequester.destinationserver": "Cél szerver",
@@ -201,13 +200,11 @@
"components.Setup.configureservices": "Szolgáltatások beállítása",
"components.Setup.configureplex": "Plex beállítása",
"components.RequestModal.requestfrom": "Jelenleg van egy folyamatban lévő kérés {username} felhasználótól.",
"components.RequestModal.requesttitle": "{title} kérése",
"components.RequestModal.requestseasons": "{seasonCount} évad kérése",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> kérés elküldve!",
"components.RequestModal.requestCancel": "<strong>{title}</strong> kérése visszavonva.",
"components.RequestModal.request4ktitle": "{title} kérése - 4K-ban",
"components.RequestModal.pendingrequest": "Függőben lévő kérés {title} - hez",
"components.RequestModal.pending4krequest": "Függőben lévő 4k-s kérés a {title}-hoz",
"components.RequestModal.pendingrequest": "Elbírálásra váró kérelem",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.autoapproval": "Automatikus jóváhagyás",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nem sikerült azonosítani a kérésed. Kérlek, válaszd ki a megfelelő találatot az alábbi listából.",
"components.RequestBlock.profilechanged": "Minőség profil",
@@ -645,7 +642,6 @@
"components.UserProfile.seriesrequest": "Sorozatkérések",
"components.UserProfile.requestsperdays": "{limit} maradt",
"components.UserProfile.recentrequests": "Legutóbbi kérések",
"components.UserProfile.norequests": "Nincs kérés.",
"components.UserProfile.movierequests": "Filmkérések",
"components.UserProfile.limit": "{remaining} a {limit}-ből",
"components.UserProfile.UserSettings.unauthorizedDescription": "Nincs jogosultsága a felhasználó beállításainak módosítására.",
@@ -750,7 +746,6 @@
"components.LanguageSelector.languageServerDefault": "Alap ({language})",
"components.DownloadBlock.estimatedtime": "Becsült {time}",
"components.Discover.upcomingtv": "Hamarosan megjelenő sorozatok",
"components.Discover.noRequests": "Nincsenek kérések.",
"components.Discover.TvGenreSlider.tvgenres": "Sorozat műfajok",
"components.Discover.TvGenreList.seriesgenres": "Sorozat műfajok",
"components.Discover.StudioSlider.studios": "Studiók",
@@ -885,7 +880,6 @@
"components.IssueModal.CreateIssueModal.allseasons": "Minden Évad",
"components.IssueModal.CreateIssueModal.episode": "{episodeNumber}. Epizód",
"components.IssueModal.CreateIssueModal.extras": "Extrák",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Probléma van ezzel? {title}",
"components.IssueModal.CreateIssueModal.problemepisode": "Érintett Epizód",
"components.IssueModal.CreateIssueModal.problemseason": "Érintett Évad",
"components.IssueModal.CreateIssueModal.providedetail": "Kérjük, adjon részletes magyarázatot a felmerült problémára.",
@@ -1018,5 +1012,31 @@
"i18n.importing": "Importálás…",
"i18n.import": "Importálás",
"components.PermissionEdit.viewissues": "Problémák Megtekintése",
"components.Settings.externalUrl": "Külső URL"
"components.Settings.externalUrl": "Külső URL",
"components.MovieDetails.physicalrelease": "Fizikai kiadás",
"components.MovieDetails.digitalrelease": "Digitális kiadás",
"components.RequestCard.cancelrequest": "Kérés visszavonása",
"components.RequestCard.declinerequest": "Kérelem elutasítása",
"components.RequestCard.editrequest": "Kérelem szerkesztése",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "",
"components.PermissionEdit.autorequest": "Automatikus kérés",
"components.NotificationTypeSelector.mediaautorequested": "A kérelem automatikusan elküldve",
"components.MovieDetails.reportissue": "Probléma bejelentése",
"components.PermissionEdit.autorequestMovies": "Filmek automatikus kérése",
"components.NotificationTypeSelector.issuecomment": "Probléma Megjegyzés",
"components.PermissionEdit.autorequestSeries": "Automatikus kérés sorozatok",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Sorozatkérések",
"components.MovieDetails.managemovie": "Film kezelése",
"components.MovieDetails.rtaudiencescore": "Rotten Tomatoes közönségpontszám",
"components.MovieDetails.tmdbuserscore": "TMDB felhasználói pontszám",
"components.RequestBlock.delete": "Kérelem törlése",
"components.RequestBlock.edit": "Kérelem szerkesztése",
"components.RequestBlock.approve": "Kérelem jóváhagyása",
"components.RequestBlock.decline": "Kérelem elutasítása",
"components.RequestBlock.lastmodifiedby": "Utoljára módosította",
"components.RequestBlock.requestdate": "Igénylés dátuma",
"components.RequestCard.approverequest": "Kérelem jóváhagyása",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Filmkérések",
"components.Layout.UserDropdown.requests": "Kérések",
"components.RequestModal.requestcollectiontitle": "Gyűjtemény kérése"
}

View File

@@ -90,9 +90,8 @@
"components.Settings.RadarrModal.apiKey": "Chiave API",
"components.Settings.RadarrModal.add": "Aggiungi un server",
"components.Settings.Notifications.discordsettingsfailed": "Impossibile salvare le impostazioni di Discord.",
"components.RequestModal.requesttitle": "Richiedi {title}",
"components.RequestModal.requestfrom": "La richiesta di {username} è in attesa di approvazione.",
"components.RequestModal.pendingrequest": "Richiesta in sospeso per {title}",
"components.RequestModal.pendingrequest": "Richiesta in sospeso",
"components.Layout.Sidebar.dashboard": "Esplora",
"components.TvDetails.cast": "Cast",
"components.TvDetails.anime": "Anime",
@@ -302,7 +301,6 @@
"components.Login.email": "Indirizzo e-mail",
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Guida per variabili di modello",
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Abilita Agente",
"components.RequestModal.request4ktitle": "Richiedi {title} in 4K",
"components.Settings.Notifications.NotificationsWebhook.authheader": "Intestazione di autorizzazione",
"components.MediaSlider.ShowMoreCard.seemore": "Vedi altro",
"components.RequestBlock.server": "Server di destinazione",
@@ -323,7 +321,7 @@
"components.Settings.Notifications.NotificationsWebhook.customJson": "Payload JSON",
"components.RequestModal.requestedited": "Richiesta di <strong>{title}</strong> modificata correttamente!",
"components.RequestModal.requestcancelled": "Richiesta per <strong>{title}</strong> eliminata.",
"components.RequestModal.pending4krequest": "Richiesta 4K in sospeso per {title}",
"components.RequestModal.pending4krequest": "Richiesta 4K in sospeso",
"components.RequestModal.errorediting": "Qualcosa è andato storto durante la modifica della richiesta.",
"components.RequestModal.autoapproval": "Approvazione automatica",
"components.RequestModal.AdvancedRequester.rootfolder": "Cartella principale",
@@ -426,7 +424,6 @@
"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.nosummary": "Non è stato trovato alcun riassunto per questo titolo.",
"components.RequestModal.AdvancedRequester.requestas": "Richiedi come",
"components.RequestModal.AdvancedRequester.languageprofile": "Profilo lingua",
"components.PlexLoginButton.signinwithplex": "Accedi",
@@ -587,7 +584,6 @@
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
"components.Discover.TvGenreSlider.tvgenres": "Generi Serie",
"components.Discover.MovieGenreSlider.moviegenres": "Generi film",
"components.UserProfile.norequests": "Nessuna richiesta.",
"components.UserProfile.UserSettings.unauthorizedDescription": "Non hai l'autorizzazione per modificare le impostazioni di questo utente.",
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Non è possibile modificare le proprie autorizzazioni.",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} minuti",
@@ -709,7 +705,6 @@
"components.RequestModal.AdvancedRequester.tags": "Tag",
"components.RequestModal.AdvancedRequester.selecttags": "Seleziona i tag",
"components.RequestModal.AdvancedRequester.notagoptions": "Nessun tag.",
"components.Discover.noRequests": "Nessuna richiesta.",
"components.Layout.VersionStatus.outofdate": "Non aggiornato",
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {versione} other {versioni}} indietro",
"components.Settings.serviceSettingsDescription": "Configura i tuoi server {serverType} qui sotto. Puoi collegare più server {serverType}, ma solo due possono essere contrassegnati come predefiniti (uno non-4K e uno 4K). Gli amministratori possono selezionare il server usato per elaborare le nuove richieste prima dell'approvazione.",
@@ -871,7 +866,6 @@
"components.IssueDetails.toaststatusupdated": "Stato segnalazione aggiornato correttamente!",
"components.IssueDetails.toaststatusupdatefailed": "Qualcosa è andato storto durante l'aggiornamento dello stato della segnalazione.",
"components.IssueList.IssueItem.problemepisode": "Episodio coinvolto",
"components.IssueModal.CreateIssueModal.issomethingwrong": "C'è un problema con {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Episodio coinvolto",
"components.IssueModal.CreateIssueModal.problemseason": "Stagione coinvolta",
"components.IssueModal.CreateIssueModal.toastFailedCreate": "Qualcosa è andato storto durante l'invio della segnalazione.",
@@ -1036,5 +1030,14 @@
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "ID Utente Discord",
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Il <FindDiscordIdLink>numero ID a più cifre</FindDiscordIdLink> associato al tuo account utente Discord",
"components.Settings.SettingsAbout.appDataPath": "Cartella applicazione",
"components.RequestBlock.languageprofile": "Lingua Profilo"
"components.RequestBlock.languageprofile": "Lingua Profilo",
"components.MovieDetails.digitalrelease": "Uscita versione digitale",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "La tua lista da guardare Plex",
"components.Discover.plexwatchlist": "La tua lista da guardare Plex",
"components.PermissionEdit.autorequest": "Richiesta automatica",
"components.Discover.DiscoverWatchlist.watchlist": "Lista da guardare Plex",
"components.MovieDetails.managemovie": "Gestisci Film",
"components.MovieDetails.physicalrelease": "Uscita versione fisica",
"components.MovieDetails.theatricalrelease": "Uscita nelle sale",
"components.MovieDetails.reportissue": "Segnala un problema"
}

View File

@@ -33,13 +33,12 @@
"components.RequestModal.cancel": "キャンセルリクエスト",
"components.RequestModal.extras": "おまけ",
"components.RequestModal.numberofepisodes": "エピソード数",
"components.RequestModal.pendingrequest": "{title} がリクエスト中",
"components.RequestModal.pendingrequest": "",
"components.RequestModal.requestCancel": "<strong>{title}</strong> のリクエストは取り消されました。",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> のリクエストは完了しました。",
"components.RequestModal.requestadmin": "このリクエストは今すぐ承認されます。",
"components.RequestModal.requestfrom": "{username} はすでにリクエストを上げています。",
"components.RequestModal.requestseasons": "{seasonCount} シーズンをリクエスト",
"components.RequestModal.requesttitle": "{title}をリクエスト",
"components.RequestModal.season": "シーズン",
"components.RequestModal.seasonnumber": "シーズン {number}",
"components.RequestModal.selectseason": "シーズンを選ぶ",
@@ -345,7 +344,6 @@
"components.LanguageSelector.languageServerDefault": "デフォルト言語({language}",
"components.DownloadBlock.estimatedtime": "所要時間:{time}",
"components.Discover.upcomingtv": "今後リリースされるシリーズ",
"components.Discover.noRequests": "リクエストが有りません。",
"components.Discover.TvGenreSlider.tvgenres": "シリーズのジャンル",
"components.Discover.DiscoverTvGenre.genreSeries": "{genre}シリーズ",
"components.Discover.DiscoverTvLanguage.languageSeries": "{language}のシリーズ",
@@ -356,13 +354,12 @@
"components.Discover.DiscoverNetwork.networkSeries": "{network}シーリーズ",
"components.Discover.DiscoverMovieLanguage.languageMovies": "{language}の映画",
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre}映画",
"components.RequestModal.pending4krequest": "{title} が 4K リクエスト中",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.errorediting": "リクエストを編集するときに問題が発生しました。",
"components.RequestModal.edit": "リクエストを編集",
"components.RequestModal.autoapproval": "自動承認",
"components.RequestModal.alreadyrequested": "すでにリクエスト済み",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "リクエストは自動的にマッチできませんでした。以下のリストから正しいマッチングを選択してください。",
"components.RequestModal.SearchByNameModal.nosummary": "このタイトルの概要は見つかりませんでした。",
"components.RequestModal.QuotaDisplay.seasonlimit": "シーズン",
"components.RequestModal.QuotaDisplay.season": "シーズン",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "このユーザーはこのシーズンをリクエストするには、最低でも <strong>{seasons}</strong> シーズンリクエストが残っている必要があります。",
@@ -502,7 +499,6 @@
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "表示言語",
"components.Settings.locale": "表示言語",
"components.StatusBadge.status": "{status}",
"components.UserProfile.norequests": "リクエストが有りません。",
"components.ManageSlideOver.downloadstatus": "ダウンロード",
"components.ManageSlideOver.manageModalClearMedia": "データを消去",
"components.ManageSlideOver.manageModalRequests": "リクエスト",
@@ -570,7 +566,6 @@
"components.IssueList.showallissues": "すべてのチケットを表示",
"components.IssueModal.CreateIssueModal.episode": "エピソード {episodeNumber}",
"components.IssueModal.CreateIssueModal.extras": "特典",
"components.IssueModal.CreateIssueModal.issomethingwrong": "{title}に問題がありますか?",
"components.IssueModal.CreateIssueModal.problemseason": "該当シーズン",
"components.IssueModal.CreateIssueModal.providedetail": "チケットの詳細をご記入ください。",
"components.IssueModal.CreateIssueModal.submitissue": "報告を送信",
@@ -654,7 +649,6 @@
"components.NotificationTypeSelector.adminissueresolvedDescription": "他ユーザーがチケットを解決した際に通知を受ける",
"components.NotificationTypeSelector.issuereopenedDescription": "チケットが再度開く際に通知を受ける",
"components.ManageSlideOver.markavailable": "視聴可能にする",
"components.RequestModal.request4ktitle": "4Kで {title} をリクエストする",
"components.RequestModal.requestedited": "<strong>{title}</strong>のリクエストは編集に成功しました!",
"components.RequestModal.requesterror": "リクエストの送信中に問題が発生しました。",
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "アプリケーショントークンを入力してください",

View File

@@ -11,7 +11,6 @@
"components.Discover.populartv": "Populiarūs serialai",
"components.Discover.recentlyAdded": "Paskutiniai pridėti",
"components.Discover.TvGenreSlider.tvgenres": "Serialų žanrai",
"components.Discover.noRequests": "Nėra rezervacijų.",
"components.Discover.trending": "Populiarėjantys",
"components.DownloadBlock.estimatedtime": "Liko {time}",
"components.IssueDetails.IssueComment.areyousuredelete": "Ar tikrai norite ištrinti šį komentarą?",
@@ -231,7 +230,6 @@
"components.RequestModal.season": "Sezonas",
"components.RequestModal.requestApproved": "<strong>{title}</strong> rezervacija patvirtinta!",
"components.RequestModal.requestadmin": "Rezervacija bus automatiškai patvirtinta.",
"components.RequestModal.requesttitle": "Rezervuoti {title}",
"components.RequestModal.selectmovies": "Pasirinkite filmą(-us)",
"components.RequestModal.selectseason": "Pasirinkite sezoną(-us)",
"components.Search.searchresults": "Paieškos rezultatai",
@@ -303,7 +301,6 @@
"components.IssueList.sortAdded": "Naujausi",
"components.IssueList.sortModified": "Paskutinės redaguotos",
"components.IssueModal.CreateIssueModal.extras": "Papildomos",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Ar iškilo problema su {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Paveikti epizodai",
"components.IssueModal.CreateIssueModal.providedetail": "Prašome pateikti detalų kilusios problemos aprašą.",
"components.IssueModal.CreateIssueModal.reportissue": "Pranešti apie problemą",
@@ -399,13 +396,11 @@
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Šiam vartootjui reikia <strong>{seasons}</strong> {seasons, plural, one {sezono rezervacijos} other {sezonų rezervacijų}}, kad rezervuoti šį serialą.",
"components.RequestModal.QuotaDisplay.season": "sezonas",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {sezonas} other {sezonai}}",
"components.RequestModal.SearchByNameModal.nosummary": "Nerastas aprašymas.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Negalėjome automatiškai surasti jūsų rezervacijos. Prašau pasirinkti tinkamą variantą iš galimų.",
"components.RequestModal.approve": "Tvirtinti rezervaciją",
"components.RequestModal.autoapproval": "Automatinis patvirtinimas",
"components.RequestModal.pending4krequest": "Laukiama 4K rezervacija {title}",
"components.RequestModal.pendingrequest": "Laukiama rezervacijos {title}",
"components.RequestModal.request4ktitle": "Rezervuoti {title} 4K raiška",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.pendingrequest": "",
"components.RequestModal.requestmovies4k": "Rezervacijos {count} {count, plural, one {filmo} other {filmų}} 4K raiška",
"components.RequestModal.requestseasons4k": "Rezervuoti {seasonCount} {seasonCount, plural, one {sezoną} other {sezonus}} 4K raiška",
"components.ResetPassword.emailresetlink": "El. pašto atkūrimo nuoroda",

View File

@@ -30,16 +30,15 @@
"components.RequestCard.seasons": "{seasonCount, plural, one {Sesong} other {Sesonger}}",
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Sesong} other {Sesonger}}",
"components.RequestList.requests": "Forespørsler",
"components.RequestModal.cancel": "Slett forespørsel",
"components.RequestModal.cancel": "Avbryt Forespørsel",
"components.RequestModal.extras": "Ekstra",
"components.RequestModal.numberofepisodes": "Antall episoder",
"components.RequestModal.pendingrequest": "Ventende forespørsel for {title}",
"components.RequestModal.pendingrequest": "Ventende forespørsel",
"components.RequestModal.requestCancel": "Forespørsel for <strong>{title}</strong> kansellert.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> forespurt!",
"components.RequestModal.requestadmin": "Din forespørsel vil bli godkjent automatisk.",
"components.RequestModal.requestadmin": "Denne forespørselen vil bli godkjent automagisk.",
"components.RequestModal.requestfrom": "{username} sin forespørsel venter på godkjenning.",
"components.RequestModal.requestseasons": "Forespør {seasonCount} {seasonCount, plural, one {Sesong} other {Sesonger}}",
"components.RequestModal.requesttitle": "Forespør {title}",
"components.RequestModal.season": "Sesong",
"components.RequestModal.seasonnumber": "Sesong {number}",
"components.RequestModal.selectseason": "Velg sesong(er)",
@@ -181,7 +180,7 @@
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Rolle",
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtrer innhold basert på regiontilgjengelighet",
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Utforskelsesregion",
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plexbruker",
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex-bruker",
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Eier",
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtrer innhold basert på originalspråk",
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Utforskelsesspråk",
@@ -255,11 +254,9 @@
"components.ResetPassword.confirmpassword": "Verifiser passord",
"components.RequestModal.requesterror": "Noe gikk galt ved sending av forespørsel.",
"components.RequestModal.requestcancelled": "Forespørsel for <strong>{title}</strong> kansellert.",
"components.RequestModal.request4ktitle": "Forespør {title} i 4K",
"components.RequestModal.pending4krequest": "Ventende forespørsel i 4K for {title}",
"components.RequestModal.pending4krequest": "Ventende forespørsel i 4K",
"components.RequestModal.errorediting": "Noe gikk galt under endring av forespørselen.",
"components.RequestModal.autoapproval": "Automatisk Godkjenning",
"components.RequestModal.SearchByNameModal.nosummary": "Fant ingen sammendrag.",
"components.RequestModal.autoapproval": "Automagisk Godkjenning",
"components.RequestModal.AdvancedRequester.rootfolder": "Grunnmappe",
"components.RequestModal.AdvancedRequester.requestas": "Forespør som",
"components.RequestModal.AdvancedRequester.qualityprofile": "Kvalitetsprofil",
@@ -274,7 +271,7 @@
"components.RequestList.showallrequests": "Vis Alle Forespørsler",
"components.RequestList.RequestItem.modifieduserdate": "{date} av {user}",
"components.RequestList.RequestItem.modified": "Endret",
"components.RequestList.RequestItem.failedretry": "Noe gikk galt under forespørsel-forsøket.",
"components.RequestList.RequestItem.failedretry": "Noe gikk galt mens du prøvde forespørselen på nytt.",
"components.RequestButton.viewrequest4k": "Vis forespørsel i 4K",
"components.RequestButton.viewrequest": "Vis Forespørsel",
"components.RequestButton.requestmore4k": "Forespør mer i 4K",
@@ -300,38 +297,38 @@
"components.PersonDetails.birthdate": "Født {birthdate}",
"components.PersonDetails.alsoknownas": "Også kjent som: {names}",
"components.PermissionEdit.viewrequests": "Vis Forespørsler",
"components.PermissionEdit.requestDescription": "Gi tilgang til å forespørre medie som ikke er i 4K.",
"components.PermissionEdit.requestDescription": "Gi tilgang til å forespørre matriale som ikke er i 4K.",
"components.PermissionEdit.request4kTvDescription": "Gi tilgang til å forespørre serier i 4K.",
"components.PermissionEdit.request4kTv": "Forespør Serier i 4K",
"components.PermissionEdit.request4kMoviesDescription": "Gi tilgang til å forespørre filmer i 4K.",
"components.PermissionEdit.request4kMovies": "Forespør Filmer i 4K",
"components.PermissionEdit.request4kDescription": "Gi tillatelse til å forespørre medie i 4K.",
"components.PermissionEdit.request4kDescription": "Gi tillatelse til å forespørre matriale i 4K.",
"components.PermissionEdit.request4k": "Forespør i 4K",
"components.PermissionEdit.request": "Forespør",
"components.PermissionEdit.managerequestsDescription": "Gi tilgang til å administrere medie-forespørsler. Alle forespørsler utført av en bruker med denne tilgangen vil automatisk bli godkjent.",
"components.PermissionEdit.managerequestsDescription": "Gi tilgang til å administrere forespørsler. Alle forespørsler utført av en bruker med denne tilgangen vil automagisk bli godkjent.",
"components.PermissionEdit.managerequests": "Administrer Forespørsler",
"components.PermissionEdit.autoapproveSeriesDescription": "Godkjenn serieforespørsler som ikke er i 4K automatisk.",
"components.PermissionEdit.autoapproveSeries": "Godkjenn serieforespørsler automatisk",
"components.PermissionEdit.autoapproveMoviesDescription": "Godkjenn filmforespørsler som ikke er i 4K automatisk.",
"components.PermissionEdit.autoapproveMovies": "Godkjenn filmforespørsler automatisk",
"components.PermissionEdit.autoapproveDescription": "Godkjenn alle forespørsler som ikke er i 4K automatisk.",
"components.PermissionEdit.autoapprove4kSeriesDescription": "Godkjenn serieforespørsler i 4K automatisk.",
"components.PermissionEdit.autoapprove4kSeries": "Automatisk godkjenning av serier i 4K",
"components.PermissionEdit.autoapprove4kMoviesDescription": "Godkjenn filmforespørsler i 4K automatisk.",
"components.PermissionEdit.autoapprove4kMovies": "Automatisk godkjenning av filmer i 4K",
"components.PermissionEdit.autoapprove4kDescription": "Godkjenn alle forespørsler av 4K automatisk.",
"components.PermissionEdit.autoapprove4k": "Godkjenn 4K Automatisk",
"components.PermissionEdit.autoapprove": "Godkjenn Automatisk",
"components.PermissionEdit.autoapproveSeriesDescription": "Godkjenn serieforespørsler som ikke er i 4K automagisk.",
"components.PermissionEdit.autoapproveSeries": "Godkjenn serieforespørsler automagisk",
"components.PermissionEdit.autoapproveMoviesDescription": "Godkjenn filmforespørsler som ikke er i 4K automagisk.",
"components.PermissionEdit.autoapproveMovies": "Godkjenn filmforespørsler automagisk",
"components.PermissionEdit.autoapproveDescription": "Godkjenn alle forespørsler som ikke er i 4K automagisk.",
"components.PermissionEdit.autoapprove4kSeriesDescription": "Godkjenn serieforespørsler i 4K automagisk.",
"components.PermissionEdit.autoapprove4kSeries": "Automagisk godkjenning av serier i 4K",
"components.PermissionEdit.autoapprove4kMoviesDescription": "Godkjenn filmforespørsler i 4K automagisk.",
"components.PermissionEdit.autoapprove4kMovies": "Automagisk godkjenning av filmer i 4K",
"components.PermissionEdit.autoapprove4kDescription": "Godkjenn alle forespørsler av 4K automagisk.",
"components.PermissionEdit.autoapprove4k": "Godkjenn 4K Automagisk",
"components.PermissionEdit.autoapprove": "Godkjenn Automagisk",
"components.PermissionEdit.advancedrequestDescription": "Gi tilgang til å endre avanserte forespørsler.",
"components.PermissionEdit.advancedrequest": "Avanserte Forespørsler",
"components.PermissionEdit.adminDescription": "Full administrator tilgang. Overstyrer alle andre tillatelser.",
"components.PermissionEdit.admin": "Administrator",
"components.NotificationTypeSelector.mediafailed": "Forespørsel Feilet",
"components.NotificationTypeSelector.mediadeclinedDescription": "Bli varslet når en medieforespørsel blir avvist.",
"components.NotificationTypeSelector.mediadeclinedDescription": "Bli varslet når en forespørsel om nytt matriale blir avvist.",
"components.NotificationTypeSelector.mediadeclined": "Forespørsel Avvist",
"components.NotificationTypeSelector.mediaavailable": "Forespørsel Tilgjengelig",
"components.NotificationTypeSelector.mediaapproved": "Forespørsel Godkjent",
"components.NotificationTypeSelector.mediaAutoApproved": "Forespørsel Automatisk Godkjent",
"components.NotificationTypeSelector.mediaAutoApproved": "Forespørsel Automagisk Godkjent",
"components.MovieDetails.watchtrailer": "Se Trailer",
"components.MovieDetails.playonplex": "Spill av med Plex",
"components.MovieDetails.play4konplex": "Spill av i 4K i Plex",
@@ -340,7 +337,7 @@
"components.MediaSlider.ShowMoreCard.seemore": "Vis mer",
"components.Login.validationpasswordrequired": "Du må skrive et passord",
"components.Login.validationemailrequired": "Du må bruke en gyldig E-postadresse",
"components.Login.signinwithplex": "Bruk Plex-konto",
"components.Login.signinwithplex": "Bruk din Plex-konto",
"components.Login.signinwithoverseerr": "Bruk {applicationTitle}-konto",
"components.Login.signinheader": "Logg inn for å fortsette",
"components.Login.signingin": "Logger inn…",
@@ -354,12 +351,12 @@
"components.RequestModal.requestedited": "Redigerte forespørsel for <strong>{title}</strong>!",
"components.RequestModal.alreadyrequested": "Allerede forespurt",
"components.RequestList.RequestItem.requested": "Forespurt",
"components.NotificationTypeSelector.mediarequestedDescription": "Bli varslet når medie blir forespurt og krever godkjenning.",
"components.NotificationTypeSelector.mediarequestedDescription": "Bli varslet når nytt matriale blir forespurt og krever godkjenning.",
"components.NotificationTypeSelector.mediarequested": "Forespørsel venter Godkjenning",
"components.NotificationTypeSelector.mediafailedDescription": "Bli varslet når forespurt medie ikke kan bli lagt til i Radarr eller Sonarr.",
"components.NotificationTypeSelector.mediaavailableDescription": "Bli varslet når forespurt medie blir tilgjengelig.",
"components.NotificationTypeSelector.mediaapprovedDescription": "Bli varslet når forespurt medie blir manuelt godkjent.",
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Bli varslet når medie blir forespurt og forespørselen automatisk blir godkjent.",
"components.NotificationTypeSelector.mediafailedDescription": "Bli varslet når forespurt matriale ikke kan bli lagt til i Radarr eller Sonarr.",
"components.NotificationTypeSelector.mediaavailableDescription": "Bli varslet når forespurt matriale blir tilgjengelig.",
"components.NotificationTypeSelector.mediaapprovedDescription": "Bli varslet når forespurt matriale blir manuelt godkjent.",
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Bli varslet når nytt matriale blir forespurt og forespørselen blir automagisk godkjent.",
"i18n.delimitedlist": "{a}, {b}",
"i18n.tvshow": "Serie",
"components.UserProfile.seriesrequest": "Serieforespørsler",
@@ -370,13 +367,13 @@
"components.MovieDetails.originaltitle": "Originaltittel",
"i18n.all": "Alle",
"components.UserList.deleteconfirm": "Er du sikker på at du ønsker å slette denne brukeren? All forespørseldata for denne brukeren vil bli slettet.",
"components.UserList.autogeneratepassword": "Generer passord automatisk",
"components.UserList.autogeneratepassword": "Generer passord automagisk",
"components.Settings.originallanguageTip": "Filtrer innhold basert på originalspråk",
"components.Settings.originallanguage": "Utforskelsesspråk",
"components.Settings.SettingsLogs.showall": "Vis all logg",
"components.Settings.SettingsJobsCache.cacheDescription": "Overseerr mellomlagrer forespørsler til eksterne APIer for å optimalisere ytelsen samt unngå unødvendige API-kall.",
"components.Settings.Notifications.allowselfsigned": "Godta selvsignerte sertifikater",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Vi kunne ikke koble forespørselen din automatisk. Vennligst velg korrekt kobling fra listen under.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Vi klarte ikke å koble denne serien automagisk. Vennligst velg riktig serie under.",
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "Denne brukeren har tillatelse til å forespørre <strong>{limit}</strong> {type} hver <strong>{days}.</strong> dag.",
"components.RequestModal.QuotaDisplay.allowedRequests": "Du har tillatelse til å forespørre <strong>{limit}</strong> {type} hver <strong>{days}.</strong> dag.",
"components.Settings.partialRequestsEnabled": "Godta ufullstendige serieforespørsler",
@@ -459,7 +456,7 @@
"components.RequestModal.QuotaDisplay.quotaLink": "Du kan se en oppsummering av dine forespørselbegrensninger på <ProfileLink>profilsiden</ProfileLink>.",
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Ikke nok gjenværende sesongforespørsler",
"components.Settings.csrfProtectionTip": "Sett ekstern API-tilgang til skrivebeskyttet modus (krever HTTPS)",
"components.Settings.csrfProtectionHoverTip": "Ikke aktiver dette med mindre du vet hva du gjør!",
"components.Settings.csrfProtectionHoverTip": "Ikke aktiver denne instillingen med mindre du vet hva du gjør!",
"components.Settings.csrfProtection": "Aktiver CSRF-beskyttelse",
"components.Settings.cacheImages": "Aktiver mellomlagring av bilder",
"components.Settings.region": "Utforskelsesregion",
@@ -574,15 +571,13 @@
"components.UserProfile.totalrequests": "Totalt antall forespørsler",
"components.UserProfile.requestsperdays": "{limit} gjenstår",
"components.UserProfile.recentrequests": "Nylig Forespurt",
"components.UserProfile.norequests": "Ingen forespørsler.",
"components.Settings.noDefaultServer": "Minst én {serverType} server må være definert som standard for at {mediaType}-forespørsler skal kunne bli håndtert.",
"components.RequestModal.pendingapproval": "Forespørselen din avventer godkjenning.",
"components.RequestList.RequestItem.mediaerror": "{mediaType} Finnes ikke",
"components.RequestCard.deleterequest": "Slett forespørsel",
"components.RequestList.RequestItem.deleterequest": "Slett forespørsel",
"components.RequestList.RequestItem.cancelRequest": "Avbryt forespørsel",
"components.RequestList.RequestItem.cancelRequest": "Avbryt Forespørsel",
"components.RequestCard.mediaerror": "{mediaType} Finnes ikke",
"components.Discover.noRequests": "Ingen forespørsler.",
"components.Settings.SettingsAbout.betawarning": "Dette er beta-programvare. Funksjoner kan slutte og fungerer og/eller være ustabile. Reporter gjerne problemer på GitHub!",
"components.Settings.noDefaultNon4kServer": "Dersom du har én {serverType} server for både ikke-4K og 4K-media (eller hvis du kun laster ned 4K-innhold), skal {serverType} server <strong>IKKE</strong> være huket av som en 4K server.",
"components.Settings.noDefault4kServer": "En 4K {serverType} server må være satt som standard for at brukere skal kunne forspørre 4K {mediaType}.",
@@ -620,10 +615,10 @@
"components.PermissionEdit.requestTv": "Forespør Serier",
"components.PermissionEdit.requestMoviesDescription": "Gi tilgang til å forespørre filmer som ikke er i 4K.",
"components.PermissionEdit.requestMovies": "Forespør Filmer",
"components.NotificationTypeSelector.usermediarequestedDescription": "Bli varslet når andre brukere forespør medie hvor forespørselen krever godkjenning.",
"components.NotificationTypeSelector.usermediarequestedDescription": "Bli varslet når andre brukere forespør nytt matriale hvor forespørselen krever godkjenning.",
"components.NotificationTypeSelector.usermediafailedDescription": "Bli varslet når dine forespørsler ikke kan bli lagt til Radarr eller Sonarr.",
"components.NotificationTypeSelector.usermediadeclinedDescription": "Bli varslet når dine forespørsler blir avvist.",
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Bli varslet når andre brukere forespør medie og forespørselen er automatisk godkjent.",
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Bli varslet når andre brukere forespør nytt matriale og forespørselen er automagisk godkjent.",
"components.NotificationTypeSelector.usermediaapprovedDescription": "Bli varslet når dine forespørsler blir godkjent.",
"components.NotificationTypeSelector.usermediaavailableDescription": "Bli varslet når dine forespørsler blir tilgjengelig.",
"components.NotificationTypeSelector.notificationTypes": "Varselstyper",
@@ -653,9 +648,9 @@
"components.IssueDetails.closeissueandcomment": "Lukk med Kommentar",
"components.IssueModal.issueOther": "Annet",
"components.ManageSlideOver.manageModalRequests": "Forespørsler",
"components.ManageSlideOver.manageModalTitle": "Adminstrer {mediaType}",
"components.ManageSlideOver.manageModalTitle": "Administrer {mediaType}",
"components.ManageSlideOver.mark4kavailable": "Marker som Tilgjengelig i 4K",
"components.ManageSlideOver.openarr": "Åpne i {arr}",
"components.ManageSlideOver.openarr": "Vis i {arr}",
"components.MovieDetails.streamingproviders": "Tilgjengelig på",
"components.NotificationTypeSelector.adminissuereopenedDescription": "Bli varslet når avvik blir gjenåpnet av andre brukere.",
"components.NotificationTypeSelector.adminissueresolvedDescription": "Bli varslet når avvik blir utbedret av andre brukere.",
@@ -682,7 +677,7 @@
"components.IssueModal.issueSubtitles": "Undertekster",
"components.Layout.Sidebar.issues": "Avvik",
"components.ManageSlideOver.downloadstatus": "Nedlastningsstatus",
"components.ManageSlideOver.manageModalClearMedia": "Fjern all Medieinfo",
"components.ManageSlideOver.manageModalClearMedia": "Fjern all Info",
"components.ManageSlideOver.manageModalIssues": "Åpne et Avvik",
"components.ManageSlideOver.manageModalNoRequests": "Ingen forespørsler.",
"components.ManageSlideOver.markavailable": "Marker som Tilgjengelig",
@@ -758,7 +753,7 @@
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "Du må oppgi en applikasjon/API-nøkkel",
"i18n.next": "Neste",
"components.Settings.SettingsJobsCache.editJobSchedule": "Endre Oppgave",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Frekvens",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Ny Frekvens",
"components.TvDetails.firstAirDate": "Første gang sendt",
"i18n.deleting": "Sletter…",
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "Innstillingene for E-post ble lagret!",
@@ -778,7 +773,7 @@
"components.Settings.validationPortRequired": "Du må oppgi et gyldig port-nummer",
"components.PermissionEdit.manageissuesDescription": "Gi tillatelse til å administre avvik.",
"i18n.retrying": "Prøver på nytt…",
"components.Settings.RadarrModal.enableSearch": "Aktiver Automatisk Søk",
"components.Settings.RadarrModal.enableSearch": "Aktiver Automagisk Søk",
"components.Settings.Notifications.validationPgpPrivateKey": "Du må oppgi en gyldig PGP-privatnøkkel",
"components.Settings.SettingsJobsCache.cachekeys": "Totalt antall nøkkler",
"components.MovieDetails.productioncountries": "Produksjonsland",
@@ -801,7 +796,6 @@
"components.IssueModal.CreateIssueModal.episode": "Episode {episodeNumber}",
"components.IssueModal.CreateIssueModal.problemepisode": "Gjelder Episode",
"components.IssueModal.CreateIssueModal.extras": "Tillegg",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Hva er problemet med {title}?",
"components.IssueList.sortAdded": "Nylig Lagt til",
"components.IssueModal.CreateIssueModal.problemseason": "Gjelder Sesong",
"components.IssueModal.CreateIssueModal.providedetail": "Vennligst gi en forklaring av problemet som oppsto, gjerne så detaljert som mulig.",
@@ -860,8 +854,8 @@
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Oppgaven ble endret!",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Hver {jobScheduleHours}. time",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Hvert {jobScheduleMinutes}. minutt",
"components.Settings.SettingsUsers.localLoginTip": "Tillater brukere å kunne logge inn med kun deres E-postadresse og passord istedenfor med Plex OAuth",
"components.Settings.SettingsUsers.newPlexLoginTip": "Tillater Plex brukere å logge inn uten å være importert på forhånd",
"components.Settings.SettingsUsers.localLoginTip": "Tilllat brukere å logge med kun E-postadresse og passord istedenfor med Plex OAuth",
"components.Settings.SettingsUsers.newPlexLoginTip": "Tillat Plex brukere å logge inn uten å være importert på forhånd",
"components.Settings.SonarrModal.validationApplicationUrl": "Du må oppgi en gyldig nettadresse",
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "Base URL kan ikke slutte med en skråstrek",
"components.Settings.locale": "Visningsspråk",
@@ -881,7 +875,7 @@
"components.UserList.password": "Passord",
"components.UserList.nouserstoimport": "Det er ingen brukere å importere fra Plex.",
"components.UserList.userdeleteerror": "Noe gikk galt under sletting av brukeren.",
"components.UserList.passwordinfodescription": "Sett opp en nettadresse for Overseerr og aktiver E-postvarsler for å kunne sende ut automatiske genererte passord.",
"components.UserList.passwordinfodescription": "Sett opp en nettadresse for Overseerr og aktiver E-postvarsler for å kunne sende ut automagisk genererte passord.",
"components.UserList.usercreatedfailedexisting": "Denne E-postadressen er allerede i bruk av en annen bruker.",
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Kunne ikke lagre instillingene for Discord.",
"components.UserProfile.UserSettings.UserNotificationSettings.email": "E-post",
@@ -937,10 +931,10 @@
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Kunne ikke lagre instillingene for Telegram.",
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat ID",
"components.Settings.SettingsUsers.newPlexLogin": "Aktiver \"Plex Sign-In\" for nye brukere",
"components.Settings.SonarrModal.enableSearch": "Aktiver Automatisk Søk",
"components.Settings.SonarrModal.enableSearch": "Aktiver Automagisk Søk",
"components.Settings.notificationAgentSettingsDescription": "Konfigurer og aktiver varslingstjenester.",
"components.UserList.displayName": "Visningsnavn",
"components.UserList.autogeneratepasswordTip": "Send et automatisk generet passord til bruken på E-post",
"components.UserList.autogeneratepasswordTip": "Send et automagisk generet passord til bruken på E-post",
"components.UserList.usercreatedsuccess": "Bruker opprettet!",
"components.UserList.userdeleted": "Bruker slettet!",
"components.UserList.validationEmail": "Du må oppgi en gyldig E-postadresse",
@@ -984,7 +978,7 @@
"components.Settings.Notifications.toastEmailTestSuccess": "Test-varsel ble sendt med E-post!",
"components.Settings.Notifications.toastTelegramTestFailed": "Telegram mislykkes med å sende test-varsel.",
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Noe gikk galt under lagring av oppgaven.",
"components.Settings.cacheImagesTip": "Optimaliser alle bilder og lagre de lokalt på serveren (Dette kommer til å ta veldig mye plass på harddisken)",
"components.Settings.cacheImagesTip": "Mellomlagrer og serverer optimaliserte bilder (Dette tar veldig mye diskplass)",
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Din konto har ikke noe passord på nåværende tidspunkt. Lag et passord under for å kunne logge inn med din E-postadresse som \"lokal-bruker\".",
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailureVerifyCurrent": "Noe gikk galt under lagring av passordet. Var ditt nåværende passord skrevet korrekt?",
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON payload tilbakestilt!",
@@ -1046,5 +1040,82 @@
"components.Settings.deleteServer": "Slett {serverType} tjener",
"components.RequestCard.tmdbid": "TMDB ID",
"components.RequestCard.tvdbid": "TheTVDB ID",
"components.StatusChecker.appUpdatedDescription": "Vennligst klikk her for å laste applikasjonen på nytt."
"components.StatusChecker.appUpdatedDescription": "Vennligst klikk her for å laste applikasjonen på nytt.",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Din Plex Watchlist",
"components.Discover.plexwatchlist": "Din Plex Watchlist",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Bli varslet når nytt matriale fra diin Plex Watchlist blir automagisk forespurt.",
"components.PermissionEdit.autorequestSeries": "Forespør Serier Automagisk",
"components.PermissionEdit.autorequestMoviesDescription": "Gi tilgang til å automagisk sende film forespørsler som ikke er i 4K via Plex Watchlist.",
"components.PermissionEdit.autorequest": "Auto-Forespørsel",
"components.PermissionEdit.autorequestDescription": "Gi tilgang til å automagisk sende forespørsler som ikke er i 4K via Plex Watchlist.",
"components.PermissionEdit.autorequestMovies": "Forespør Serier Automagisk",
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
"components.MovieDetails.managemovie": "Administrer Film",
"components.MovieDetails.reportissue": "Rapporter Avvik",
"components.NotificationTypeSelector.mediaautorequested": "Forespørsel Automagisk Forespurt",
"components.PermissionEdit.autorequestSeriesDescription": "Gi tilgang til å automagisk sende serie forespørsler som ikke er i 4K via Plex Watchlist.",
"components.Settings.SettingsLogs.viewdetails": "Vis Detaljer",
"components.AirDateBadge.airedrelative": "Sendt {relativeTime}",
"components.AirDateBadge.airsrelative": "Sendes {relativeTime}",
"components.MovieDetails.rtaudiencescore": "Publikumspoeng for Rotten Tomatoes",
"components.PermissionEdit.viewwatchlists": "Vis Plex Watchlist",
"components.PermissionEdit.viewwatchlistsDescription": "Gi tilgang til å vise andre brukere sin Plex Watchlist.",
"components.RequestBlock.requestdate": "Tidspunkt for Forespørsel",
"components.RequestBlock.requestedby": "Forespurt av",
"components.RequestCard.approverequest": "Godkjenn Forespørsel",
"components.RequestCard.cancelrequest": "Avbryt Forespørsel",
"components.RequestCard.declinerequest": "Avvis Forespørsel",
"components.RequestCard.editrequest": "Rediger forespørsel",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Filmforespørsler",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serieforespørsler",
"components.Layout.UserDropdown.requests": "Forespørsler",
"components.MovieDetails.tmdbuserscore": "Brukerpoeng for TMDb",
"components.MovieDetails.rtcriticsscore": "Tomatometer for Rotten Tomatoes",
"components.RequestBlock.edit": "Rediger forespørsel",
"components.RequestBlock.lastmodifiedby": "Sist endret av",
"components.RequestBlock.approve": "Godkjenn Forespørsel",
"components.RequestBlock.delete": "Slett forespørsel",
"components.RequestBlock.decline": "Avvis Forespørsel",
"components.TitleCard.mediaerror": "{mediaType} Finnes ikke",
"components.RequestList.RequestItem.tmdbid": "TMDb ID",
"i18n.restartRequired": "Omstart Nødvendig",
"components.TitleCard.cleardata": "Fjern all Info",
"components.TitleCard.tmdbid": "TMDb ID",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Forespør Filmer Automagisk",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Synkronisering av Plex-Watchlist",
"components.Settings.restartrequiredTooltip": "Overseerr må startes på nytt for at de nye innstillingene skal tre i kraft",
"components.TvDetails.reportissue": "Rapporter Avvik",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automagisk forespør serier som ligger på <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Forespør Serier Automagisk",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automagisk forespør filmer som ligger på <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink>",
"components.UserProfile.plexwatchlist": "Plex Watchlist",
"components.RequestList.RequestItem.tvdbid": "TheTVDb ID",
"components.StatusChecker.restartRequiredDescription": "Start tjeneren på nytt for å ta i bruk de nye innstillingene.",
"components.StatusChecker.restartRequired": "Omstart av tjener nødvendig",
"components.TitleCard.tvdbid": "TheTVDb ID",
"components.Settings.experimentalTooltip": "Aktivering av denne innstillingen kan føre til uventet oppførsel av programmet",
"components.Settings.advancedTooltip": "Feil konfigurering av denne innstillingen kan føre til defekt funksjonalitet",
"components.TvDetails.Season.somethingwentwrong": "Noe gikk galt under henting av data for denne sesongen.",
"components.StatusChecker.reloadApp": "Last inn {applicationTitle} på nytt",
"components.StatusBadge.playonplex": "Spill av med Plex",
"components.StatusBadge.openinarr": "Vis i {arr}",
"components.StatusBadge.managemedia": "Administrer {mediaType}",
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Episode} other {# Episoder}}",
"components.TvDetails.rtcriticsscore": "Tomatometer for Rotten Tomatoes",
"components.TvDetails.manageseries": "Administrer Serie",
"components.TvDetails.rtaudiencescore": "Publikumspoeng for Rotten Tomatoes",
"components.TvDetails.seasonstitle": "Sesonger",
"components.TvDetails.seasonnumber": "Sesong {seasonNumber}",
"components.RequestModal.requestseriestitle": "Forespør Serier",
"components.TvDetails.status4k": "4K {status}",
"components.TvDetails.tmdbuserscore": "Brukerpoeng for TMDb",
"components.RequestModal.requestseries4ktitle": "Forespør Serier i 4K",
"components.RequestModal.requestmovietitle": "Forespør Film",
"components.RequestModal.requestcollection4ktitle": "Forespør hele samlingen i 4K",
"components.RequestModal.requestmovie4ktitle": "Forespør Film i 4K",
"components.RequestModal.requestcollectiontitle": "Forespør hele samlingen",
"components.Discover.emptywatchlist": "Matriale som du legger til via <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> vil dukke opp her.",
"components.UserProfile.emptywatchlist": "Matriale som du legger til via <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> vil dukke opp her.",
"components.RequestModal.SearchByNameModal.nomatches": "Vi klarte ikke å koble denne serien med et søkbart treff.",
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Nåværende frekvens"
}

View File

@@ -33,13 +33,12 @@
"components.RequestModal.cancel": "Verzoek annuleren",
"components.RequestModal.extras": "Extra's",
"components.RequestModal.numberofepisodes": "Aantal afleveringen",
"components.RequestModal.pendingrequest": "Verzoek voor {title} in behandeling",
"components.RequestModal.pendingrequest": "Verzoek in behandeling",
"components.RequestModal.requestCancel": "Verzoek voor <strong>{title}</strong> is geannuleerd.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> is succesvol aangevraagd!",
"components.RequestModal.requestadmin": "Dit verzoek zal automatisch goedgekeurd worden.",
"components.RequestModal.requestfrom": "Het verzoek van {user} is in behandeling.",
"components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {seizoen} other {seizoenen}} aanvragen",
"components.RequestModal.requesttitle": "{title} aanvragen",
"components.RequestModal.season": "Seizoen",
"components.RequestModal.seasonnumber": "Seizoen {number}",
"components.RequestModal.selectseason": "Seizoen(en) selecteren",
@@ -288,8 +287,7 @@
"components.Settings.Notifications.NotificationsWebhook.customJson": "JSON-payload",
"components.Settings.Notifications.NotificationsWebhook.authheader": "Autorisatie-header",
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Agent inschakelen",
"components.RequestModal.request4ktitle": "{title} in 4K aanvragen",
"components.RequestModal.pending4krequest": "4K-verzoek voor {title} in behandeling",
"components.RequestModal.pending4krequest": "4K-verzoek in behandeling",
"components.RequestButton.viewrequest4k": "4K-verzoek bekijken",
"components.RequestButton.viewrequest": "Verzoek bekijken",
"components.RequestButton.requestmore": "Meer aanvragen",
@@ -335,8 +333,7 @@
"i18n.experimental": "Experimenteel",
"components.Settings.hideAvailable": "Beschikbare media verbergen",
"components.RequestModal.requesterror": "Er ging iets mis bij het aanvragen.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "We konden je verzoek niet automatisch matchen. Selecteer de juiste match uit de onderstaande lijst.",
"components.RequestModal.SearchByNameModal.nosummary": "Er is geen samenvatting voor deze titel gevonden.",
"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…",
@@ -583,7 +580,6 @@
"components.NotificationTypeSelector.mediaAutoApproved": "Verzoek automatisch goedgekeurd",
"components.UserProfile.UserSettings.unauthorizedDescription": "Je hebt geen toestemming om de instellingen van deze gebruiker te wijzigen.",
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Je kan je eigen machtigingen niet wijzigen.",
"components.UserProfile.norequests": "Geen verzoeken.",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} minuten",
"components.TvDetails.episodeRuntime": "Afleveringsduur",
"components.Settings.Notifications.pgpPrivateKeyTip": "Versleutelde e-mailberichten ondertekenen met <OpenPgpLink>OpenPGP</OpenPgpLink>",
@@ -628,7 +624,7 @@
"components.Settings.SettingsJobsCache.jobsandcache": "Taken en cache",
"components.Settings.SettingsAbout.about": "Over",
"components.ResetPassword.passwordreset": "Wachtwoord opnieuw instellen",
"components.Settings.cacheImagesTip": "Alle afbeeldingen optimaliseren en lokaal opslaan (gebruikt een aanzienlijke hoeveelheid schijfruimte)",
"components.Settings.cacheImagesTip": "Geoptimaliseerde afbeeldingen cachen en hosten (vereist veel schijfruimte)",
"components.Settings.cacheImages": "Afbeeldingscaching inschakelen",
"components.Settings.SettingsLogs.logDetails": "Loggegevens",
"components.Settings.SettingsLogs.extraData": "Aanvullende gegevens",
@@ -709,9 +705,9 @@
"components.RequestModal.AdvancedRequester.selecttags": "Labels selecteren",
"components.RequestModal.AdvancedRequester.notagoptions": "Geen labels.",
"components.Settings.RadarrModal.loadingTags": "Labels laden…",
"components.RequestList.RequestItem.mediaerror": "De gekoppelde titel voor dit verzoek is niet meer beschikbaar.",
"components.RequestList.RequestItem.mediaerror": "{mediaType} niet gevonden",
"components.RequestList.RequestItem.deleterequest": "Verzoek verwijderen",
"components.RequestCard.mediaerror": "De gekoppelde titel voor dit verzoek is niet meer beschikbaar.",
"components.RequestCard.mediaerror": "{mediaType} niet gevonden",
"components.RequestCard.deleterequest": "Verzoek verwijderen",
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Je moet een geldige openbare PGP-sleutel opgeven",
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingssaved": "Instellingen Telegrammeldingen succesvol opgeslagen!",
@@ -729,7 +725,6 @@
"components.RequestModal.pendingapproval": "Je verzoek is in afwachting van goedkeuring.",
"components.RequestList.RequestItem.cancelRequest": "Verzoek annuleren",
"components.NotificationTypeSelector.notificationTypes": "Meldingtypes",
"components.Discover.noRequests": "Geen verzoeken.",
"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.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.",
@@ -852,7 +847,7 @@
"components.MovieDetails.streamingproviders": "Momenteel te streamen op",
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Taak succesvol bewerkt!",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Elk(e) {jobScheduleMinutes, plural, one {minuut} other {{jobScheduleMinutes} minuten}}",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Frequentie",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Nieuwe frequentie",
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Er ging iets mis bij het opslaan van de taak.",
"components.Settings.SettingsJobsCache.editJobSchedule": "Taak wijzigen",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Elk(e) {jobScheduleHours, plural, one {uur} other {{jobScheduleHours} uren}}",
@@ -890,7 +885,7 @@
"components.IssueModal.CreateIssueModal.allepisodes": "Alle afleveringen",
"components.IssueModal.issueAudio": "Audio",
"components.IssueDetails.nocomments": "Geen opmerkingen.",
"components.IssueModal.CreateIssueModal.reportissue": "Een probleem melden",
"components.IssueModal.CreateIssueModal.reportissue": "Probleem melden",
"components.IssueDetails.allepisodes": "Alle afleveringen",
"components.IssueDetails.toasteditdescriptionsuccess": "Probleembeschrijving succesvol bewerkt!",
"components.IssueDetails.toastissuedeleted": "Probleem succesvol verwijderd!",
@@ -930,7 +925,6 @@
"components.IssueList.IssueItem.unknownissuetype": "Onbekend",
"components.IssueList.IssueItem.viewissue": "Probleem bekijken",
"components.IssueList.IssueItem.problemepisode": "Getroffen aflevering",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Is er een probleem met {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Getroffen aflevering",
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Probleemmelding voor <strong>{title}</strong> succesvol ingediend!",
"components.PermissionEdit.viewissues": "Problemen weergeven",
@@ -1036,5 +1030,92 @@
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Het <FindDiscordIdLink>meercijferige ID-nummer</FindDiscordIdLink> van je Discord-account",
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Je moet een geldige gebruikers-ID van Discord opgeven",
"components.Settings.SettingsAbout.appDataPath": "Gegevensmap",
"components.RequestBlock.languageprofile": "Taalprofiel"
"components.RequestBlock.languageprofile": "Taalprofiel",
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Huidige frequentie",
"components.StatusBadge.managemedia": "{mediaType} beheren",
"components.StatusBadge.openinarr": "Openen in {arr}",
"components.StatusBadge.playonplex": "Afspelen op Plex",
"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.Settings.deleteServer": "{serverType}-server verwijderen",
"components.StatusChecker.appUpdated": "{applicationTitle} bijgewerkt",
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
"components.StatusChecker.restartRequired": "Server opnieuw opstarten vereist",
"components.StatusChecker.restartRequiredDescription": "Start de server opnieuw op om de bijgewerkte instellingen toe te passen.",
"components.TitleCard.cleardata": "Gegevens wissen",
"components.TitleCard.mediaerror": "{mediatype} niet gevonden",
"components.TitleCard.tvdbid": "TheTVDB ID",
"components.RequestCard.tmdbid": "TMDB ID",
"components.RequestCard.declinerequest": "Verzoek weigeren",
"components.RequestCard.editrequest": "Verzoek bewerken",
"components.RequestCard.cancelrequest": "Verzoek annuleren",
"components.RequestModal.requestcollection4ktitle": "Collectie aanvragen in 4K",
"components.RequestModal.requestcollectiontitle": "Collectie aanvragen",
"components.RequestModal.requestseries4ktitle": "Serie aanvragen in 4K",
"components.RequestModal.requestmovie4ktitle": "Film aanvragen in 4K",
"components.RequestModal.requestseriestitle": "Serie aanvragen",
"components.RequestModal.requestmovietitle": "Film aanvragen",
"components.TvDetails.tmdbuserscore": "Gebruikersscore TMDB",
"components.TvDetails.rtaudiencescore": "Publieksscore Rotten Tomatoes",
"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.MovieDetails.physicalrelease": "Fysieke release",
"components.PermissionEdit.autorequest": "Automatisch aanvragen",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Kijklijst synchroniseren",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Series automatisch aanvragen",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatisch series op je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> aanvragen",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatisch films op je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> aanvragen",
"components.PermissionEdit.autorequestDescription": "Toestemming geven om niet-4K media in je Plex Kijklijst automatisch aan te vragen.",
"components.RequestCard.tvdbid": "TheTVDB ID",
"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.",
"components.PermissionEdit.autorequestSeriesDescription": "Toestemming geven om niet-4K series in je Plex Kijklijst automatisch aan te vragen.",
"components.PermissionEdit.viewwatchlists": "Plex Kijklijsten bekijken",
"components.PermissionEdit.viewwatchlistsDescription": "Toestemming verlenen om de Plex Kijklijsten van andere gebruikers te bekijken.",
"components.Settings.SettingsLogs.viewdetails": "Details bekijken",
"components.Settings.advancedTooltip": "Deze instelling onjuist configureren, kan resulteren in gebroken functionaliteit",
"components.StatusChecker.reloadApp": "{applicationTitle} opnieuw laden",
"components.TitleCard.tmdbid": "TMDB ID",
"components.StatusChecker.appUpdatedDescription": "Klik op de onderstaande knop om de toepassing opnieuw te laden.",
"components.UserProfile.plexwatchlist": "Plex Kijklijst",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Films automatisch aanvragen",
"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.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.AirDateBadge.airedrelative": "{relativeTime} uitgezonden",
"components.AirDateBadge.airsrelative": "Uitzending {relativeTime}",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serieverzoeken",
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# aflevering} other {# afleveringen}}",
"components.TvDetails.status4k": "4K {status}",
"components.MovieDetails.rtaudiencescore": "Publieksscore Rotten Tomatoes",
"components.MovieDetails.rtcriticsscore": "Tomatometer Rotten Tomatoes",
"components.MovieDetails.tmdbuserscore": "Gebruikersscore TMDB",
"components.RequestBlock.approve": "Verzoek goedkeuren",
"components.TvDetails.reportissue": "Probleem melden",
"components.TvDetails.rtcriticsscore": "Tomatometer Rotten Tomatoes",
"components.RequestModal.SearchByNameModal.nomatches": "We konden geen match vinden voor deze serie.",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Filmverzoeken",
"components.Layout.UserDropdown.requests": "Verzoeken",
"components.RequestBlock.decline": "Verzoek weigeren",
"components.Discover.emptywatchlist": "Media die zijn toegevoegd aan je <PlexWatchlistSupportLink>Plex Kijklijst</PlexWatchlistSupportLink> verschijnen hier.",
"components.RequestBlock.delete": "Verzoek verwijderen",
"components.RequestBlock.edit": "Verzoek bewerken",
"components.RequestBlock.lastmodifiedby": "Laatst gewijzigd door",
"components.RequestBlock.requestdate": "Aanvraagdatum",
"components.RequestBlock.requestedby": "Aangevraagd door",
"components.RequestCard.approverequest": "Verzoek goedkeuren"
}

View File

@@ -108,14 +108,12 @@
"components.IssueModal.CreateIssueModal.whatswrong": "Co jest nie tak?",
"components.Discover.MovieGenreList.moviegenres": "Gatunki filmowe",
"components.Discover.TvGenreList.seriesgenres": "Gatunki seriali",
"components.Discover.noRequests": "Brak próśb.",
"components.Discover.recentrequests": "Ostatnie prośby",
"components.Discover.upcomingmovies": "Nadchodzące filmy",
"components.IssueModal.CreateIssueModal.reportissue": "Zgłoś problem",
"components.IssueModal.CreateIssueModal.season": "Sezon {seasonNumber}",
"components.IssueModal.CreateIssueModal.validationMessageRequired": "Musisz podać opis",
"components.IssueModal.issueAudio": "Audio",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Czy wystąpił problem z {title}?",
"components.IssueDetails.reopenissueandcomment": "Otwórz ponownie z komentarzem",
"components.IssueModal.issueOther": "Inny",
"components.CollectionDetails.numberofmovies": "{count} Filmy",
@@ -342,7 +340,6 @@
"components.RequestModal.requestadmin": "Ta prośba zostanie zatwierdzona automatycznie.",
"components.ResetPassword.passwordreset": "Resetowanie hasła",
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "Powiadomienie testowe Pushbullet wysłane!",
"components.RequestModal.requesttitle": "Prośba o {title}",
"components.ResetPassword.confirmpassword": "Potwierdź hasło",
"components.ResetPassword.email": "Adres e-mail",
"components.ResetPassword.password": "Hasło",
@@ -452,7 +449,6 @@
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Brak wystarczającej liczby próśb o sezon",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Aby przesłać prośbę o ten serial, ten użytkownik musi mieć co najmniej <strong>{seasons}</strong> {seasons, plural, one {prośbę} other {prośby}}.",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {sezon} other {sezony}}",
"components.RequestModal.SearchByNameModal.nosummary": "Nie znaleziono żadnych informacji o tym tytule.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nie mogliśmy automatycznie spełnić Twojej prośby. Wybierz odpowiednie dopasowanie z poniższej listy.",
"components.RequestModal.alreadyrequested": "Już poproszono",
"components.RequestModal.autoapproval": "Automatyczne zatwierdzenie",
@@ -460,10 +456,9 @@
"components.RequestModal.errorediting": "Coś poszło nie tak podczas edytowania prośby.",
"components.RequestModal.extras": "Dodatki",
"components.RequestModal.numberofepisodes": "Liczba odcinków",
"components.RequestModal.pending4krequest": "Oczekująca prośba o 4K dla {title}",
"components.RequestModal.pending4krequest": "Oczekująca prośba o 4K",
"components.RequestModal.pendingapproval": "Twoja prośba oczekuje na zatwierdzenie.",
"components.RequestModal.pendingrequest": "Oczekująca prośba o {title}",
"components.RequestModal.request4ktitle": "Poproś o {title} w 4K",
"components.RequestModal.pendingrequest": "Oczekująca prośba",
"components.RequestModal.requestCancel": "Prośba o <strong>{title}</strong> została anulowana.",
"components.RequestModal.requestedited": "Prośba o <strong>{title}</strong> została pomyślnie edytowana!",
"components.RequestModal.requesterror": "Coś poszło nie tak podczas przesyłania prośby.",
@@ -781,7 +776,7 @@
"components.UserList.autogeneratepasswordTip": "Wyślij do użytkownika wiadomość e-mail z hasłem wygenerowanym przez serwer",
"components.UserList.createlocaluser": "Utwórz użytkownika lokalnego",
"components.UserList.creating": "Tworzenie…",
"components.UserList.deleteuser": "Usuń {username}",
"components.UserList.deleteuser": "Usuń użytkownika",
"components.UserList.displayName": "Wyświetlana nazwa",
"components.UserList.importedfromplex": "<strong>{userCount}</strong> {userCount, plural, one {użytkownik Plex został zaimportowany} other {użytkowników Plex zostało zaimportowanych}} pomyślnie!",
"components.UserList.localLoginDisabled": "Ustawienie <strong>Włącz Lokalne Logowanie</strong> jest obecnie wyłączone.",
@@ -855,7 +850,6 @@
"components.UserProfile.UserSettings.menuPermissions": "Uprawnienia",
"components.UserProfile.UserSettings.unauthorizedDescription": "Nie masz uprawnień do modyfikowania ustawień tego użytkownika.",
"components.UserProfile.limit": "{remaining} z {limit}",
"components.UserProfile.norequests": "Brak próśb.",
"components.UserProfile.pastdays": "{type} (ostatnie {days} dni)",
"components.UserProfile.requestsperdays": "Pozostało {limit}",
"components.UserProfile.seriesrequest": "Prośby o seriale",
@@ -1046,5 +1040,25 @@
"components.StatusChecker.restartRequired": "Wymagane ponowne uruchomienie serwera",
"components.MovieDetails.digitalrelease": "Wydanie cyfrowe",
"components.MovieDetails.physicalrelease": "Wydanie fizyczne",
"components.MovieDetails.theatricalrelease": "Wydanie kinowe"
"components.MovieDetails.theatricalrelease": "Wydanie kinowe",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Twoja lista obserwowanych Plex",
"components.Discover.plexwatchlist": "Twoja lista obserwowanych Plex",
"components.PermissionEdit.autorequest": "Automatyczna prośba",
"components.PermissionEdit.autorequestDescription": "Udziel zgody na automatyczne przesyłanie próśb dotyczących multimediów innych niż 4K za pośrednictwem listy obserwowanych Plex.",
"components.NotificationTypeSelector.mediaautorequested": "Prośba przesłana automatycznie",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Otrzymuj powiadomienia o automatycznym składaniu nowych próśb o multimedia dla pozycji znajdujących się na liście obserwowanych Plex.",
"components.PermissionEdit.autorequestMovies": "Filmy z próśb automatycznych",
"components.Discover.DiscoverWatchlist.watchlist": "Lista obserwowanych Plex",
"components.MovieDetails.managemovie": "Zarządzaj filmem",
"components.MovieDetails.reportissue": "Zgłoś problem",
"components.PermissionEdit.autorequestMoviesDescription": "Udziel zgody na automatyczne przesyłanie próśb dotyczących multimediów innych niż 4K za pośrednictwem listy obserwowanych Plex.",
"components.PermissionEdit.autorequestSeries": "Automatyczna prośba o serial",
"components.AirDateBadge.airedrelative": "Wyemitowany {relativeTime}",
"components.AirDateBadge.airsrelative": "Data emisji {relativeTime}",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Prośby o filmy",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Prośby o seriale",
"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"
}

View File

@@ -141,12 +141,11 @@
"components.Search.searchresults": "Resultados da Pesquisa",
"components.RequestModal.selectseason": "Selecione Temporada(s)",
"components.RequestModal.seasonnumber": "Temporada {number}",
"components.RequestModal.requesttitle": "Solicitar {title}",
"components.RequestModal.requestfrom": "Existe uma solicitação pendente de {username}.",
"components.RequestModal.requestadmin": "Essa solicitação será aprovada automaticamente.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> solicitado com sucesso!",
"components.RequestModal.requestCancel": "Solicitação para <strong>{title}</strong> cancelada.",
"components.RequestModal.pendingrequest": "Solicitação Pendente para {title}",
"components.RequestModal.pendingrequest": "Solicitação Pendente",
"components.RequestModal.numberofepisodes": "# de Episódeos",
"components.RequestModal.extras": "Extras",
"components.RequestModal.cancel": "Cancelar Solicitação",
@@ -215,7 +214,7 @@
"components.UserList.totalrequests": "Solicitações",
"components.UserList.role": "Privilégio",
"components.UserList.plexuser": "Usuário Plex",
"components.UserList.deleteuser": "Remover {username}",
"components.UserList.deleteuser": "Deletar Usuário",
"components.UserList.deleteconfirm": "Tem certeza que deseja apagar esse usuário? Todas informações de solicitações feitas por esse usuário serão permanentemente removidas.",
"components.UserList.created": "Criado",
"components.UserList.admin": "Administrador",
@@ -273,8 +272,7 @@
"components.RequestList.sortAdded": "Mais Recente",
"components.RequestList.showallrequests": "Exibir Todas Solicitações",
"components.StatusBadge.status4k": "4K {status}",
"components.RequestModal.request4ktitle": "Solicitar {title} em 4K",
"components.RequestModal.pending4krequest": "Solicitação em 4K Pendente para {title}",
"components.RequestModal.pending4krequest": "Solicitação em 4K Pendente",
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Configurações de notificação via Webhook salvas com sucesso!",
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Falha ao salvar configurações de notificação via Webhook.",
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "URL de Webhook",
@@ -336,7 +334,6 @@
"components.Settings.hideAvailable": "Ocultar Títulos Disponíveis",
"components.RequestModal.requesterror": "Algo deu errado ao solicitar mídia.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Não conseguimos correlacionar sua solicitação automaticamente. Por favor selecione a correspondência correta na lista abaixo.",
"components.RequestModal.SearchByNameModal.nosummary": "Sinopse não encontrada para esse título.",
"components.Login.signin": "Entrar",
"components.UserList.userssaved": "Permissões de usuário salvas com sucesso!",
"components.UserList.bulkedit": "Edição Em Massa",
@@ -570,7 +567,6 @@
"components.Settings.SettingsJobsCache.radarr-scan": "Escanemento do Radarr",
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Recentemente Adicionado ao Plex",
"components.Settings.SettingsJobsCache.plex-full-scan": "Escaneamento de Todas Bibliotecas do Plex",
"components.UserProfile.norequests": "Nenhuma solicitação.",
"components.UserProfile.UserSettings.unauthorizedDescription": "Você não tem permissão para modificar as configurações desse usuários.",
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Você não pode modificar suas próprias permissões.",
"components.UserProfile.ProfileHeader.userid": "ID de Usuário: {userid}",
@@ -601,7 +597,7 @@
"components.ResetPassword.passwordreset": "Redefinir Senha",
"components.Settings.SettingsLogs.logDetails": "Detalhes do Log",
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailureVerifyCurrent": "Algo deu errado ao salvar sua senha. Sua senha foi digitada corretamente?",
"components.Settings.cacheImagesTip": "Otimiza e armazena todas imagens localmente (consume um espaço significante do disco)",
"components.Settings.cacheImagesTip": "Armazena em cache e distribui imagens otimizadas (requer um espaço significante no disco)",
"pages.somethingwentwrong": "Algo deu errado",
"pages.serviceunavailable": "Serviço Indisponível",
"pages.pagenotfound": "Página Não Encontrada",
@@ -742,7 +738,6 @@
"components.Layout.VersionStatus.streamdevelop": "Overseerr Desenv.",
"components.Layout.VersionStatus.outofdate": "Desatualizado",
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {versão} other {versões}} atrasado(a)",
"components.Discover.noRequests": "Nenhuma solicitação.",
"components.UserList.autogeneratepasswordTip": "Envia para o usuário uma senha gerada automaticamente",
"i18n.retrying": "Tentando Novamente…",
"components.UserList.usercreatedfailedexisting": "O e-mail informado já está em uso por outro usuário.",
@@ -903,7 +898,6 @@
"components.IssueDetails.toaststatusupdatefailed": "Algo deu errado ao atualizar o estado do problema.",
"components.IssueDetails.unknownissuetype": "Desconhecido",
"components.IssueList.issues": "Problemas",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Algum problema com {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Episódio Afetado",
"components.IssueModal.CreateIssueModal.problemseason": "Temporada Afetada",
"components.IssueList.IssueItem.problemepisode": "Episódio Afetado",
@@ -1061,5 +1055,53 @@
"components.PermissionEdit.autorequestMovies": "Solicitar Filmes Automaticamente",
"components.PermissionEdit.autorequestSeries": "Solicitar Séries Automaticamente",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Solicitar Filmes Automaticamente",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Solicitar Séries Automaticamente"
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Solicitar Séries Automaticamente",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Sua Lista para Assistir do Plex",
"components.Discover.plexwatchlist": "Sua Lista para Assistir do Plex",
"components.Discover.DiscoverWatchlist.watchlist": "Lista para Assistir do Plex",
"components.AirDateBadge.airedrelative": "Exibido em {relativeTime}",
"components.AirDateBadge.airsrelative": "Exibindo {relativeTime}",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Pedidos de Filmes",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Pedidos de Séries",
"components.Layout.UserDropdown.requests": "Pedidos",
"components.MovieDetails.managemovie": "Gerenciar Filme",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Ser notificado quando um novo pedido de mídia de algum item da sua Lista para assistir no Plex for automaticamente enviado.",
"components.NotificationTypeSelector.mediaautorequested": "Pedido automaticamente enviado",
"components.PermissionEdit.autorequestDescription": "Dar permissão para enviar automaticamente pedidos para mídias não-4K via Lista para assistir do Plex.",
"components.PermissionEdit.autorequestMoviesDescription": "Dar permissão para enviar automaticamente pedidos para filmes não-4K via Lista para assistir do Plex.",
"components.PermissionEdit.autorequestSeriesDescription": "Dar permissão para enviar automaticamente pedidos para séries não-4K via Lista para assistir do Plex.",
"components.PermissionEdit.viewwatchlists": "Ver Lista para assistir do Plex",
"components.PermissionEdit.viewwatchlistsDescription": "Dar permissão para ver a Lista para assistir do Plex de outros usuários.",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Sincronizar Lista para assistir do Plex",
"components.Settings.SettingsLogs.viewdetails": "Ver Detalhes",
"components.Settings.advancedTooltip": "Configurar incorretamente esta opção pode resultar em uma funcionalidade quebrada",
"components.Settings.restartrequiredTooltip": "Overseerr deve ser reiniciado para as mudanças tomarem efeito",
"components.Settings.experimentalTooltip": "Habilitar essa opção pode resultar em um comportamento não esperado da aplicação",
"components.TvDetails.reportissue": "Reportar um Problema",
"components.MovieDetails.reportissue": "Reportar um problema",
"components.StatusBadge.managemedia": "Gerenciar {mediaType}",
"components.StatusBadge.openinarr": "Abrir em {arr}",
"components.TvDetails.Season.somethingwentwrong": "Algo deu errado enquanto os dados da temporada eram adquiridos.",
"components.TvDetails.manageseries": "Gerenciar Séries",
"components.TvDetails.rtcriticsscore": "Pontuação de audiência no Rotten Tomatoes",
"components.TvDetails.seasonnumber": "Temporada {seasonNumber}",
"components.TvDetails.seasonstitle": "Temporadas",
"components.TvDetails.rtaudiencescore": "Pontuação de audiência no Rotten Tomatoes",
"components.TvDetails.status4k": "4K {status}",
"components.TvDetails.tmdbuserscore": "Pontuação de Usuário do TMDB",
"components.MovieDetails.tmdbuserscore": "Pontuação de usuário do TMDB",
"components.MovieDetails.rtaudiencescore": "Pontuação de audiência no Rotten Tomatoes",
"components.MovieDetails.rtcriticsscore": "Tomatômetro do Rotten Tomatoes",
"components.RequestBlock.edit": "Editar Pedido",
"components.RequestCard.approverequest": "Aprovar pedido",
"components.RequestBlock.approve": "Aprovar pedido",
"components.RequestBlock.requestdate": "Data do pedido",
"components.RequestCard.declinerequest": "Rejeitar Pedido",
"components.RequestCard.editrequest": "Editar Pedido",
"components.StatusBadge.playonplex": "Reproduzir no Plex",
"components.RequestBlock.decline": "Rejeitar pedido",
"components.RequestBlock.lastmodifiedby": "Última modificação por",
"components.RequestBlock.delete": "Deletar pedido",
"components.RequestBlock.requestedby": "Pedido por",
"components.RequestCard.cancelrequest": "Cancelar pedido"
}

View File

@@ -71,7 +71,6 @@
"components.RequestModal.selectseason": "Selecionar Semporada(s)",
"components.RequestModal.seasonnumber": "Temporada {number}",
"components.RequestModal.season": "Temporada",
"components.RequestModal.requesttitle": "Pedir {title}",
"components.RequestModal.requestseasons": "Pedir {seasonCount} {seasonCount, plural, one {Temporada} other {Temporadas}}",
"components.RequestModal.requestfrom": "O peido de {username} está com aprovação pendente.",
"components.RequestModal.requestedited": "Pedido para <strong>{title}</strong> modificado com sucesso!",
@@ -79,9 +78,8 @@
"components.RequestModal.requestadmin": "Este pedido será aprovado automaticamente.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> pedido com sucesso!",
"components.RequestModal.requestCancel": "Pedido para <strong>{title}</strong> cancelado.",
"components.RequestModal.request4ktitle": "Pedir {title} em 4K",
"components.RequestModal.pendingrequest": "Pedido pendente para {title}",
"components.RequestModal.pending4krequest": "Pedido 4K pendente para {title}",
"components.RequestModal.pendingrequest": "Pedido pendente",
"components.RequestModal.pending4krequest": "Pedido 4K pendente",
"components.RequestModal.numberofepisodes": "# de Episódios",
"components.RequestModal.extras": "Extras",
"components.RequestModal.errorediting": "Ocorreu um erro durante a edição do pedido.",
@@ -337,7 +335,6 @@
"components.Login.signinwithplex": "Iniciar sessão com a sua conta Plex",
"components.RequestModal.requesterror": "Ocorreu um erro ao submeter o pedido.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Não foi possível associar seu pedido automaticamente. Por favor selecione a correspondência correta a partir da lista abaixo.",
"components.RequestModal.SearchByNameModal.nosummary": "Sinopse não encontrada para este título.",
"components.Login.signinheader": "Iniciar sessão para continuar",
"components.Login.signingin": "A Iniciar Sessão…",
"components.Login.signin": "Iniciar Sessão",
@@ -583,7 +580,6 @@
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Não pode modificar suas próprias permissões.",
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Enviar notificações quando os utilizadores apresentarem novos pedidos de multimédia que são automaticamente aprovados.",
"components.NotificationTypeSelector.mediaAutoApproved": "Multimédia Aprovada Automaticamente",
"components.UserProfile.norequests": "Sem pedidos.",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} minutos",
"components.TvDetails.episodeRuntime": "Duração do Episódio",
"components.Settings.Notifications.pgpPrivateKeyTip": "Assinar mensagens de e-mail encriptadas utilizando <OpenPgpLink>OpenPGP</OpenPgpLink>",
@@ -733,7 +729,6 @@
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Definições de notificação Discord gravadas com sucesso!",
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Falha ao gravar as definições de notificação Discord.",
"components.RequestList.RequestItem.cancelRequest": "Cancelar Pedido",
"components.Discover.noRequests": "Sem pedidos.",
"components.Settings.serviceSettingsDescription": "Configure o seu(s) servidor(es) {serverType} abaixo. Pode ligar vários servidores {serverType}, mas apenas dois deles podem ser marcados como predefinidos (um não 4K e um 4K). Os administradores podem mudar o servidor usado para processar novos pedidos antes da aprovação.",
"components.Settings.noDefaultServer": "Pelo menos um servidor {serverType} deve ser marcado como predefinido para que os pedidos de {mediaType} sejam processados.",
"components.Settings.noDefaultNon4kServer": "Se tiver apenas um único servidor {serverType} para conteúdo não 4K e 4K (ou se apenas transfere conteúdo 4K), o seu servidor {serverType} <strong>NÃO</strong> deve ser designado como um servidor 4K.",

View File

@@ -23,7 +23,6 @@
"components.Discover.discover": "Descoperă",
"components.Discover.discovermovies": "Filme populare",
"components.Discover.discovertv": "Seriale populare",
"components.Discover.noRequests": "Nu există solicitări.",
"components.Discover.popularmovies": "Filme populare",
"components.Discover.populartv": "Seriale populare",
"components.Discover.recentlyAdded": "Adăugate recent",

View File

@@ -33,13 +33,12 @@
"components.RequestModal.cancel": "Отменить запрос",
"components.RequestModal.extras": "Дополнительно",
"components.RequestModal.numberofepisodes": "# эпизодов",
"components.RequestModal.pendingrequest": "В ожидании запрос на {title}",
"components.RequestModal.pendingrequest": "",
"components.RequestModal.requestCancel": "Запрос на <strong>{title}</strong> отменён.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> успешно запрошен!",
"components.RequestModal.requestadmin": "Этот запрос будет одобрен автоматически.",
"components.RequestModal.requestfrom": "Запрос пользователя {username} ожидает одобрения.",
"components.RequestModal.requestseasons": "Запросить {seasonCount} {seasonCount, plural, one {сезон} other {сезона(ов)}}",
"components.RequestModal.requesttitle": "Запросить {title}",
"components.RequestModal.season": "Сезон",
"components.RequestModal.seasonnumber": "Сезон {number}",
"components.RequestModal.selectseason": "Выберите сезон(ы)",
@@ -406,7 +405,6 @@
"components.Layout.LanguagePicker.displaylanguage": "Язык интерфейса",
"components.DownloadBlock.estimatedtime": "Приблизительно {time}",
"components.Discover.upcomingtv": "Предстоящие сериалы",
"components.Discover.noRequests": "Запросов нет.",
"components.Discover.discover": "Найти что-то новое",
"components.Discover.TvGenreSlider.tvgenres": "Сериалы по жанрам",
"components.Discover.TvGenreList.seriesgenres": "Сериалы по жанрам",
@@ -568,8 +566,7 @@
"components.TvDetails.seasons": "{seasonCount, plural, one {# сезон} other {# сезонов}}",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Этому пользователю необходимо иметь по крайней мере <strong>{seasons}</strong> {seasons, plural, one {запрос на сезоны} other {запроса(ов) на сезоны}} для того, чтобы отправить запрос на этот сериал.",
"components.RequestModal.QuotaDisplay.requiredquota": "Вам необходимо иметь по крайней мере <strong>{seasons}</strong> {seasons, plural, one {запрос на сезоны} other {запроса(ов) на сезоны}} для того, чтобы отправить запрос на этот сериал.",
"components.RequestModal.request4ktitle": "Запросить {title} в 4К",
"components.RequestModal.pending4krequest": "В ожидании 4К запрос на {title}",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.autoapproval": "Автоматическое одобрение",
"i18n.usersettings": "Настройки пользователя",
"i18n.showingresults": "Показываются результаты с <strong>{from}</strong> по <strong>{to}</strong> из <strong>{total}</strong>",
@@ -583,7 +580,6 @@
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Мы не смогли автоматически выполнить ваш запрос. Пожалуйста, выберите правильное совпадение из списка ниже.",
"components.TvDetails.originaltitle": "Название оригинала",
"components.Settings.validationApplicationTitle": "Вы должны указать название приложения",
"components.RequestModal.SearchByNameModal.nosummary": "Аннотации для этого названия не найдено.",
"i18n.tvshow": "Сериал",
"components.Settings.partialRequestsEnabled": "Разрешить частичные запросы сериалов",
"components.Settings.mediaTypeSeries": "сериал",
@@ -750,7 +746,6 @@
"components.UserProfile.pastdays": "{type} (за {days} день(ей))",
"components.UserProfile.seriesrequest": "Запросов сериалов",
"components.UserProfile.movierequests": "Запросов фильмов",
"components.UserProfile.norequests": "Запросов нет.",
"components.UserProfile.limit": "{remaining} из {limit}",
"components.UserProfile.UserSettings.unauthorizedDescription": "У вас нет разрешения на изменение настроек этого пользователя.",
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "У вас нет разрешения на изменение пароля этого пользователя.",
@@ -887,7 +882,6 @@
"components.IssueModal.CreateIssueModal.episode": "Эпизод {episodeNumber}",
"components.ManageSlideOver.mark4kavailable": "Пометить как доступный в 4К",
"components.IssueModal.CreateIssueModal.extras": "Дополнительно",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Есть проблема с «{title}»?",
"components.IssueModal.CreateIssueModal.problemseason": "Затронутый сезон",
"components.ManageSlideOver.downloadstatus": "Загрузки",
"components.ManageSlideOver.manageModalIssues": "Открытые проблемы",

View File

@@ -29,7 +29,6 @@
"components.IssueModal.CreateIssueModal.allepisodes": "Të gjithë Episodet",
"components.IssueModal.CreateIssueModal.allseasons": "Të gjithë Sezonet",
"components.IssueModal.CreateIssueModal.extras": "Ekstrat",
"components.IssueModal.CreateIssueModal.issomethingwrong": "A ka ndonjë problem me {title}?",
"components.Login.loginerror": "Diçka shkoi keq duke u përpjekur të hyja.",
"components.Login.signinheader": "Identifikohu për të vazhduar",
"components.MovieDetails.budget": "Buxheti",
@@ -56,7 +55,6 @@
"components.Discover.discover": "Zbulo",
"components.Discover.discovermovies": "Filma Popullorë",
"components.Discover.discovertv": "Seriale Popullore",
"components.Discover.noRequests": "Asnjë kërkesë.",
"components.Discover.popularmovies": "Filma Popullorë",
"components.Discover.populartv": "Seriale Popullore",
"components.Discover.recentlyAdded": "Shtuar së Fundmi",
@@ -287,7 +285,6 @@
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Nuk kanë mbetur kërkesa të mjaftueshme për sezonin",
"components.RequestModal.QuotaDisplay.quotaLink": "Ju mund të shikoni një përmbledhje të kufizimeve tuaja të kërkesës në <ProfileLink>faqen tuaj të profilit</ProfileLink>.",
"components.RequestModal.QuotaDisplay.season": "sezon",
"components.RequestModal.SearchByNameModal.nosummary": "Nuk u gjet asnjë përmbledhje për këtë titull.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Nuk mund të përputheshim automatikisht me kërkesën tënde. Ju lutem zgjidhni ndeshjen e saktë nga lista më poshtë.",
"components.RequestModal.alreadyrequested": "E Kërkuar Tashmë",
"components.RequestModal.approve": "Mirato Kërkesën",
@@ -295,9 +292,8 @@
"components.RequestModal.edit": "Ndrysho kërkesën",
"components.RequestModal.errorediting": "Diçka shkoi keq duke modifikuar kërkesën.",
"components.RequestModal.numberofepisodes": "# i Episodeve",
"components.RequestModal.pending4krequest": "Kërkesë 4K në pritje për {title}",
"components.RequestModal.pendingrequest": "Kërkesë në pritje për {title}",
"components.RequestModal.request4ktitle": "Kërko {title} në 4K",
"components.RequestModal.pending4krequest": "",
"components.RequestModal.pendingrequest": "Kërkesë në pritje",
"components.RequestModal.requestApproved": "Kërkesa për <strong>{title}</strong> u miratua!",
"components.RequestModal.requestCancel": "Kërkesa për <strong>{title}</strong> u anullua.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> u kërkua me sukses!",
@@ -307,7 +303,6 @@
"components.RequestModal.requestfrom": "Kërkesa e {username} është në pritje të miratimit.",
"components.RequestModal.requestmovies": "Kërko {count} {count, plural, one {Film} other {Filma}}",
"components.RequestModal.requestmovies4k": "Kërko {count} {count, plural, one {Film} other {Filma}} në 4K",
"components.RequestModal.requesttitle": "Kërko {title}",
"components.RequestModal.season": "Sezoni",
"components.RequestModal.seasonnumber": "Sezoni {numri}",
"components.RequestModal.selectmovies": "Zgjidh Filmat",
@@ -819,7 +814,6 @@
"components.UserProfile.UserSettings.menuPermissions": "Lejet",
"components.UserProfile.UserSettings.unauthorizedDescription": "Ju nuk keni leje për të modifikuar cilësimet e këtij përdoruesi.",
"components.UserProfile.limit": "{remaining} prej {limit}",
"components.UserProfile.norequests": "Asnjë kërkesë.",
"components.UserProfile.pastdays": "{type} (kaluar {days} ditë)",
"components.UserProfile.recentlywatched": "Shikuar së fundmi",
"components.UserProfile.totalrequests": "Kërkesat totale",
@@ -1035,5 +1029,43 @@
"i18n.experimental": "Eksperimentale",
"i18n.noresults": "S'ka rezultate.",
"i18n.notrequested": "Nuk është Kerkuar",
"components.Settings.SettingsAbout.appDataPath": "Direktoria e të dhënave"
"components.Settings.SettingsAbout.appDataPath": "Direktoria e të dhënave",
"components.MovieDetails.digitalrelease": "Publikimi Dixhital",
"components.MovieDetails.physicalrelease": "Lëshimi Fizik",
"components.MovieDetails.theatricalrelease": "Publikimi Teatror",
"components.PermissionEdit.viewrecent": "Shiko Shtuar së fundi",
"components.PermissionEdit.viewrecentDescription": "Jep leje për të parë listën e mediave të shtuara kohët e fundit.",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Lista juaj e shikimit në Plex",
"components.PermissionEdit.autorequestMoviesDescription": "Jepni lejen për të paraqitur automatikisht kërkesat për mediat jo-4K nëpërmjet Plex Watchlist.",
"components.PermissionEdit.autorequestSeries": "Kërkesa Automatike Serialesh",
"components.PermissionEdit.autorequestSeriesDescription": "Jep leje për të paraqitur automatikisht kërkesat për seri jo-4K nëpërmjet Plex Watchlist.",
"components.Discover.DiscoverWatchlist.watchlist": "Lista e Shikimit Plex",
"components.Discover.plexwatchlist": "Lista juaj e shikimit në Plex",
"components.MovieDetails.reportissue": "Raportoni një problem",
"components.NotificationTypeSelector.mediaautorequested": "Kërkesa u dorëzua automatikisht",
"components.PermissionEdit.autorequest": "Auto-Kërkesë",
"components.PermissionEdit.autorequestDescription": "Jepni lejen për të paraqitur automatikisht kërkesat për mediat jo-4K nëpërmjet Plex Watchlist.",
"components.PermissionEdit.autorequestMovies": "Kërkesë automatike për filma",
"components.PermissionEdit.viewwatchlists": "Shiko listat e shikimit të Plex",
"components.PermissionEdit.viewwatchlistsDescription": "Jep leje për të parë listat e Plex Watchlist të përdoruesve të tjerë.",
"components.MovieDetails.managemovie": "Menaxho filmin",
"components.AirDateBadge.airedrelative": "Transmetuar {relativeTime}",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Kërkesat e Filmave",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Kërkesat e Serialeve",
"components.Layout.UserDropdown.requests": "Kërkesat",
"components.MovieDetails.rtaudiencescore": "Rezultati i audiencës së Rotten Tomatoes",
"components.MovieDetails.rtcriticsscore": "Tomatometeri i Rotten Tomatoes",
"components.NotificationTypeSelector.mediaautorequestedDescription": "Njoftohuni kur kërkesat e reja të medias dorëzohen automatikisht për artikujt në Listën tuaj të Plex Watchlist.",
"components.RequestBlock.languageprofile": "Profili i gjuhës",
"components.AirDateBadge.airsrelative": "Duke u Transmetuar {relativeTime}",
"components.Discover.emptywatchlist": "Këtu do të shfaqet media e shtuar në listën tuaj <PlexWatchlistSupportLink>Plex</PlexWatchlistSupportLink>.",
"components.RequestBlock.decline": "Refuzo kërkesën",
"components.RequestBlock.delete": "Fshije Kërkesën",
"components.RequestBlock.edit": "Ndrysho kërkesën",
"components.MovieDetails.tmdbuserscore": "Nota e përdoruesve TMDB",
"components.RequestBlock.approve": "Mirato Kërkesën",
"components.RequestBlock.lastmodifiedby": "Ndryshuar së fundi nga",
"components.RequestBlock.requestdate": "Data e Kërkesës",
"components.RequestBlock.requestedby": "Kërkuar nga",
"components.RequestCard.approverequest": "Mirato Kërkesën"
}

View File

@@ -170,12 +170,11 @@
"components.RequestModal.selectseason": "Odaberi sezonu(e)",
"components.RequestModal.seasonnumber": "Sezona {number}",
"components.RequestModal.season": "Sezona",
"components.RequestModal.requesttitle": "Zatraži {title}",
"components.RequestModal.requestfrom": "Trenutno postoji zahtev na čekanju od {username}.",
"components.RequestModal.requestadmin": "Ovaj zahtev će odmah biti prihvaćen.",
"components.RequestModal.requestSuccess": "Poslat zahtev za <strong>{title}</strong> !",
"components.RequestModal.requestCancel": "Zahtev za <strong>{title}</strong> otkazan.",
"components.RequestModal.pendingrequest": "Zahtev na čekanju za {title}",
"components.RequestModal.pendingrequest": "Zahtev na čekanju",
"components.RequestModal.numberofepisodes": "# broj epizoda",
"components.RequestModal.extras": "Dodaci",
"components.RequestModal.cancel": "Otkaži zahtev",
@@ -379,7 +378,6 @@
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Standardna podešavanja",
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex korisnik",
"components.PermissionEdit.autoapprove4k": "Automatsko odobrenje 4K",
"components.Discover.noRequests": "Nema zahteva.",
"components.IssueModal.issueSubtitles": "Titl",
"components.PermissionEdit.managerequests": "Upravljajte zahtevima",
"components.RequestBlock.rootfolder": "Root folder",
@@ -511,7 +509,6 @@
"components.UserProfile.ProfileHeader.joindate": "Pridružio se {joindate}",
"components.Settings.Notifications.botUsername": "Bot korisničko ime",
"components.Settings.Notifications.pgpPassword": "PGP lozinka",
"components.UserProfile.norequests": "Nema zahteva.",
"components.Settings.SettingsLogs.logDetails": "Detalji dnevnika",
"components.Settings.scan": "Sinhronizacija biblioteka",
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Pošalji tiho",
@@ -609,5 +606,10 @@
"components.PermissionEdit.autoapprove4kSeriesDescription": "Dozvoli automatsko odobravanje zahteva za 4K serije.",
"components.ResetPassword.gobacklogin": "Vrati se na stranu za prijavu",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Svaki {jobScheduleHours, plural, one {hour} other {{jobScheduleHours} hours}}",
"components.Settings.SettingsAbout.uptodate": "Najsvežiji"
"components.Settings.SettingsAbout.uptodate": "Najsvežiji",
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "Morate da navedete važeći JSON korisni teret",
"components.Settings.Notifications.validationChatIdRequired": "Morate da navedete važeći ID za ćaskanje",
"components.StatusBadge.playonplex": "Igrajte na Plex-u",
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "Morate da obezbedite pristupni token",
"components.UserList.userssaved": "Korisničke dozvole su uspešno sačuvane!"
}

View File

@@ -127,12 +127,11 @@
"components.RequestModal.selectseason": "Välj säsong(er)",
"components.RequestModal.seasonnumber": "Säsong {number}",
"components.RequestModal.season": "Säsong",
"components.RequestModal.requesttitle": "Begär {title}",
"components.RequestModal.requestfrom": "{username}'s begäran väntar på godkännande.",
"components.RequestModal.requestadmin": "Förfrågan kommer bli godkännas automatiskt.",
"components.RequestModal.requestSuccess": "<strong>{title}</strong> begärd!",
"components.RequestModal.requestCancel": "Förfrågan för <strong>{title}</strong> avbruten.",
"components.RequestModal.pendingrequest": "Väntande Förfrågan för {title}",
"components.RequestModal.pendingrequest": "Väntande Förfrågan",
"components.RequestModal.numberofepisodes": "Antal Avsnitt",
"components.RequestModal.extras": "Extramaterial",
"components.RequestModal.cancel": "Avbryt förfrågan",
@@ -268,8 +267,7 @@
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Notifieringsinställningar för Pushover kunde inte sparas.",
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Aktiverad",
"components.Settings.Notifications.NotificationsPushover.accessToken": "Application API-token",
"components.RequestModal.request4ktitle": "Begär {titel} i 4K",
"components.RequestModal.pending4krequest": "Väntande 4K-förfrågan för {title]",
"components.RequestModal.pending4krequest": "Väntande 4K-förfrågan",
"components.RequestList.sortModified": "Senast ändrad",
"components.RequestList.sortAdded": "Senaste",
"components.RequestList.showallrequests": "Visa alla förfrågningar",
@@ -316,7 +314,6 @@
"components.PlexLoginButton.signingin": "Loggar in…",
"components.RequestModal.requesterror": "Någonting gick fel vid behandling av din begäran.",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Vi kunde inte automatiskt matcha din begäran. Var god välj den korrekta matchningen från listan nedanför.",
"components.RequestModal.SearchByNameModal.nosummary": "Ingen summering för denna titel hittades.",
"i18n.experimental": "Experimentell",
"components.Settings.hideAvailable": "Göm Tillgänglig Media",
"components.RequestModal.autoapproval": "Automatiskt Godkännande",
@@ -518,7 +515,7 @@
"components.Settings.scanning": "Synkar…",
"components.Settings.scan": "Skanna bibliotek",
"components.Settings.regionTip": "Filtrera innehåll efter region tillgänglighet",
"components.Settings.region": "Upptäck Region",
"components.Settings.region": "Upptäck region",
"components.Settings.originallanguageTip": "Filtrera innehåll efter originalspråk",
"components.Settings.originallanguage": "Upptäck språk",
"components.Settings.notificationAgentSettingsDescription": "Konfigurera och aktivera aviseringsagenter.",
@@ -588,7 +585,6 @@
"components.Discover.TvGenreList.seriesgenres": "Seriegenrer",
"components.Discover.TvGenreSlider.tvgenres": "Seriegenrer",
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
"components.UserProfile.norequests": "Inga förfrågningar.",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} minuter",
"components.TvDetails.episodeRuntime": "Avsnittets speltid",
"components.Settings.partialRequestsEnabled": "Tillåt begäran av ofullständig serie",
@@ -679,8 +675,8 @@
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Serieförfrågnings gräns",
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Filmförfrågnings gräns",
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Överskrid den globala gränsen",
"components.Settings.SettingsUsers.tvRequestLimitLabel": "Global serieförfrågnings gräns",
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Global filmförfrågnings gräns",
"components.Settings.SettingsUsers.tvRequestLimitLabel": "Global serieförfrågningsgräns",
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Global filmförfrågningsgräns",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Den här användaren behöver ha minst <strong>{seasons}</strong> {seasons, plural, one {säsongsförfrågan} other {säsongsförfrågningar}} kvar för att skicka in en begäran om denna serie.",
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {säsong} other {säsonger}}",
"components.RequestModal.QuotaDisplay.season": "säsong",
@@ -729,7 +725,6 @@
"components.RequestModal.pendingapproval": "Din begäran väntar på godkännande.",
"components.RequestList.RequestItem.cancelRequest": "Avbryt begäran",
"components.NotificationTypeSelector.notificationTypes": "Notifikationstyper",
"components.Discover.noRequests": "Inga förfrågningar.",
"components.Layout.VersionStatus.streamstable": "Overseerr Stabil",
"components.Layout.VersionStatus.streamdevelop": "Overseerr Utveckling",
"components.Layout.VersionStatus.outofdate": "Föråldrad",
@@ -958,7 +953,6 @@
"components.IssueModal.CreateIssueModal.allepisodes": "Alla avsnitt",
"components.IssueModal.CreateIssueModal.allseasons": "Alla säsonger",
"components.IssueModal.CreateIssueModal.episode": "Avsnitt {episodeNumber}",
"components.IssueModal.CreateIssueModal.issomethingwrong": "Är det något problem med {title}?",
"components.IssueModal.CreateIssueModal.problemepisode": "Påverkat avsnitt",
"components.IssueModal.CreateIssueModal.providedetail": "Ge en detaljerad förklaring av det problem du stötte på.",
"components.ManageSlideOver.downloadstatus": "Nedladdningar",

View File

@@ -29,7 +29,7 @@
"components.UserList.email": "电子邮件地址",
"components.UserList.edituser": "编辑用户权限",
"components.UserList.displayName": "显示名称",
"components.UserList.deleteuser": "刪除 {username}",
"components.UserList.deleteuser": "刪除用户",
"components.UserList.deleteconfirm": "确定要刪除这个用户吗?此用户的所有储存资料将被清除。",
"components.UserList.creating": "创建中…",
"components.UserList.createlocaluser": "建立本地用户",
@@ -159,7 +159,7 @@
"components.Settings.csrfProtection": "防止跨站请求伪造CSRF攻击",
"components.Settings.copied": "应用程序密钥已复制到剪贴板。",
"components.Settings.cancelscan": "取消扫描",
"components.Settings.cacheImagesTip": "把所有的图像优化和保存到缓存(需要大量的磁碟空间)",
"components.Settings.cacheImagesTip": "缓存并提供优化的图像(需要大量磁盘空间)",
"components.Settings.cacheImages": "启用图像緩存",
"components.Settings.applicationurl": "应用程序网址URL",
"components.Settings.applicationTitle": "应用程序名",
@@ -291,7 +291,6 @@
"components.Discover.recentlyAdded": "最新添加",
"components.Discover.populartv": "热门电视节目",
"components.Discover.popularmovies": "热门电影",
"components.Discover.noRequests": "没有请求。",
"components.Discover.discovertv": "热门电视节目",
"components.Discover.discovermovies": "热门电影",
"components.Discover.discover": "探索",
@@ -311,7 +310,7 @@
"components.CollectionDetails.requestcollection": "提交系列请求",
"components.CollectionDetails.overview": "简介",
"components.CollectionDetails.numberofmovies": "{count} 部电影",
"components.AppDataWarning.dockerVolumeMissingDescription": "必须使用繫結掛bind mount指定某个宿主机器的资料夹跟容器的 <code>{appDataPath}</code> 资料夹連通,才能保存 Overseerr 的配置和数据。",
"components.AppDataWarning.dockerVolumeMissingDescription": "必须使用链接挂bind mount指定某个宿主机器的文件夹跟容器的 <code>{appDataPath}</code> 文件夹连通,才能保存 Overseerr 的配置和数据。",
"components.PersonDetails.ascharacter": "饰演 {character}",
"pages.somethingwentwrong": "出了点问题",
"pages.serviceunavailable": "服务器无法使用",
@@ -373,7 +372,6 @@
"components.UserProfile.requestsperdays": "剩余 {limit}",
"components.UserProfile.recentrequests": "最新请求",
"components.UserProfile.pastdays": "{type}(前 {days} 天)",
"components.UserProfile.norequests": "没有请求。",
"components.UserProfile.movierequests": "电影请求",
"components.UserProfile.limit": "{limit} 之 {remaining}",
"components.UserProfile.UserSettings.unauthorizedDescription": "你无权编辑此用户的设置。",
@@ -700,7 +698,6 @@
"components.RequestModal.selectseason": "季数选择",
"components.RequestModal.seasonnumber": "第 {number} 季",
"components.RequestModal.season": "季数",
"components.RequestModal.requesttitle": "为 {title} 提交请求",
"components.RequestModal.requestseasons": "提交请求",
"components.RequestModal.requestfrom": "{username} 的请求待处理。",
"components.RequestModal.requesterror": "提交请求中出了点问题。",
@@ -709,10 +706,9 @@
"components.RequestModal.requestadmin": "此请求将自动被批准。",
"components.RequestModal.requestSuccess": "为 <strong>{title}</strong> 提交请求成功!",
"components.RequestModal.requestCancel": "<strong>{title}</strong> 的请求已被取消。",
"components.RequestModal.request4ktitle": "为 {title} 提交 4K 请求",
"components.RequestModal.pendingrequest": "{title} 的请求",
"components.RequestModal.pendingrequest": "待处理请求",
"components.RequestModal.pendingapproval": "你的请求正在等待管理员批准。",
"components.RequestModal.pending4krequest": "{title} 的 4K 请求",
"components.RequestModal.pending4krequest": "待处理的 4K 请求",
"components.RequestModal.numberofepisodes": "集数",
"components.RequestModal.extras": "特輯",
"components.RequestModal.errorediting": "编辑请求中出了点问题。",
@@ -720,8 +716,7 @@
"components.RequestModal.cancel": "取消请求",
"components.RequestModal.autoapproval": "自动批准",
"components.RequestModal.alreadyrequested": "已经有请求",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "无法自动配對你的请求。请从以下列表中选择正确的媒体项。",
"components.RequestModal.SearchByNameModal.nosummary": "没有简介。",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "我们无法自动匹配这个连续剧。请选择下方正确的匹配。",
"components.RequestModal.QuotaDisplay.seasonlimit": "个季数",
"components.RequestModal.QuotaDisplay.season": "电视节目季数",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "此用户的电视节目请求数量必须至少剩余 <strong>{seasons}</strong> 个季数才能为此节目提交请求。",
@@ -926,7 +921,6 @@
"components.IssueList.sortModified": "最后修改",
"components.IssueModal.CreateIssueModal.allepisodes": "所有集数",
"components.IssueModal.CreateIssueModal.allseasons": "所有季数",
"components.IssueModal.CreateIssueModal.issomethingwrong": "{title} 有问题么?",
"components.IssueModal.CreateIssueModal.submitissue": "提交问题",
"components.IssueModal.CreateIssueModal.toastFailedCreate": "提交问题报告时出了点问题。",
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "成功为 <strong>{title}</strong> 报告问题!",
@@ -992,7 +986,7 @@
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "频道标签",
"components.Settings.RadarrModal.announced": "已公布",
"components.Settings.RadarrModal.released": "已发布",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "频率",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "频率",
"components.Settings.externalUrl": "外部网址",
"components.Settings.tautulliApiKey": "API Key",
"components.Settings.toastTautulliSettingsFailure": "保存 Tautulli 设置时出现问题。",
@@ -1037,5 +1031,42 @@
"i18n.import": "导入",
"i18n.importing": "导入中…",
"components.RequestBlock.languageprofile": "语言配置文件",
"components.TitleCard.mediaerror": "未找到{mediaType}"
"components.TitleCard.mediaerror": "未找到{mediaType}",
"components.MovieDetails.digitalrelease": "数字发行",
"components.MovieDetails.physicalrelease": "物理释放",
"components.MovieDetails.theatricalrelease": "剧场版",
"components.PermissionEdit.viewrecent": "查看最近添加的内容",
"components.PermissionEdit.viewrecentDescription": "授予查看最近添加的媒体列表的权限。",
"components.StatusChecker.appUpdated": "{applicationTitle} 已更新",
"components.StatusChecker.restartRequired": "需要重启服务器",
"components.StatusChecker.appUpdatedDescription": "请点击下面的按钮,重新加载应用程序。",
"components.StatusChecker.reloadApp": "重新加载 {applicationTitle}",
"i18n.restartRequired": "需要重新启动",
"components.Settings.deleteServer": "删除 {serverType} 服务器",
"components.StatusChecker.restartRequiredDescription": "请重新启动服务器以应用更新的设置。",
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
"components.Discover.DiscoverWatchlist.watchlist": "Plex 关注列表",
"components.MovieDetails.managemovie": "管理电影",
"components.MovieDetails.reportissue": "报告问题",
"components.NotificationTypeSelector.mediaautorequested": "自动提交的请求",
"components.PermissionEdit.viewwatchlistsDescription": "授权查看其他用户的Plex关注列表。",
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
"components.Settings.advancedTooltip": "错误配置此设置可能会导致功能不可用",
"components.Settings.experimentalTooltip": "启用此设置可能会导致意外的应用程序行为",
"components.TvDetails.reportissue": "报告问题",
"components.RequestCard.tmdbid": "TMDB ID",
"components.Settings.SettingsLogs.viewdetails": "查看详情",
"components.Layout.UserDropdown.requests": "请求",
"components.Settings.restartrequiredTooltip": "必须重新启动 Overseerr 才能使更改的设置生效",
"components.TvDetails.manageseries": "管理电视节目",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "自动请求您的 <PlexWatchlistSupportLink>Plex 关注列表</PlexWatchlistSupportLink>的媒体",
"components.AirDateBadge.airedrelative": "播出{relativeTime}",
"components.AirDateBadge.airsrelative": "播出{relativeTime}",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "电影请求",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "电视节目请求",
"components.NotificationTypeSelector.mediaautorequestedDescription": "当 Plex 关注列表中的项目自动提交新媒体请求时,会收到通知。",
"components.PermissionEdit.viewwatchlists": "查看 Plex 关注列表",
"components.TvDetails.Season.somethingwentwrong": "在检索季元数据时出了问题。",
"components.UserProfile.plexwatchlist": "Plex 关注列表",
"components.RequestCard.tvdbid": "TheTVDB ID"
}

View File

@@ -57,7 +57,7 @@
"components.UserList.creating": "創建中…",
"components.UserList.createlocaluser": "建立本地使用者",
"components.UserList.autogeneratepassword": "自動生成密碼",
"i18n.tvshows": "電視節目",
"i18n.tvshows": "影集",
"pages.oops": "哎呀",
"components.TvDetails.firstAirDate": "原始播出日期",
"i18n.delete": "刪除",
@@ -133,17 +133,17 @@
"components.Layout.Sidebar.users": "使用者",
"components.Layout.Sidebar.settings": "設定",
"components.Layout.Sidebar.requests": "請求",
"components.Layout.SearchInput.searchPlaceholder": "搜尋電影、電視節目、人物…",
"components.Layout.SearchInput.searchPlaceholder": "搜尋電影、影集、人物…",
"components.Discover.upcomingmovies": "即將上映的電影",
"components.Discover.upcoming": "即將上映的電影",
"components.Discover.trending": "趨勢",
"components.Discover.recentlyAdded": "最近新增",
"components.Discover.recentrequests": "最新請求",
"components.Discover.populartv": "熱門電視節目",
"components.Discover.populartv": "熱門影集",
"components.Discover.popularmovies": "熱門電影",
"components.Discover.discovertv": "熱門電視節目",
"components.Discover.discovertv": "熱門影集",
"components.Discover.discovermovies": "熱門電影",
"components.CollectionDetails.requestcollection": "提出系列請求",
"components.CollectionDetails.requestcollection": "提出電影系列請求",
"components.CollectionDetails.overview": "概要",
"components.UserList.userdeleteerror": "刪除使用者時出了點問題。",
"components.UserList.userdeleted": "使用者刪除成功!",
@@ -153,7 +153,7 @@
"components.UserList.totalrequests": "請求數",
"components.UserList.plexuser": "Plex 使用者",
"components.UserList.email": "電子郵件地址",
"components.UserList.deleteuser": "刪除 {username}",
"components.UserList.deleteuser": "刪除使用者",
"components.UserList.role": "角色",
"components.UserList.password": "密碼",
"i18n.movies": "電影",
@@ -220,7 +220,7 @@
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON 有效負載重設為預設負載成功!",
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "請輸入有效的使用者或群組令牌",
"components.Settings.menuJobs": "作業和快取",
"components.Settings.toastApiKeyFailure": "生成應用程式密鑰出了點問題。",
"components.Settings.toastApiKeyFailure": "生成應用程式密鑰出了點問題。",
"components.Settings.toastSettingsFailure": "儲存設定時出了點問題。",
"components.UserList.deleteconfirm": "確定要刪除這個使用者嗎?此使用者的所有儲存資料將被清除。",
"components.Settings.SettingsAbout.Releases.releasedataMissing": "無法獲取軟體版本資料。",
@@ -246,25 +246,23 @@
"components.Settings.SettingsAbout.Releases.currentversion": "目前的版本",
"components.Settings.SettingsAbout.timezone": "時區",
"components.Settings.SettingsAbout.documentation": "使用說明",
"components.RequestModal.pending4krequest": "{title} 的 4K 請求",
"components.RequestModal.pendingrequest": "{title} 的請求",
"components.RequestModal.pending4krequest": "待處理的 4K 請求",
"components.RequestModal.pendingrequest": "待處理的請求",
"components.RequestModal.extras": "特輯",
"components.Settings.SettingsAbout.Releases.versionChangelog": "{version} 變更日誌",
"components.Settings.SettingsAbout.Releases.releases": "軟體版本",
"components.Settings.plexsettings": "Plex 設定",
"components.RequestModal.selectseason": "請選擇季數",
"components.RequestModal.requesttitle": "為 {title} 提出請求",
"components.RequestModal.requestseasons": "提出請求",
"components.RequestModal.requestadmin": "此請求將自動獲批准。",
"components.RequestModal.requestSuccess": "為 <strong>{title}</strong> 提出請求成功!",
"components.RequestModal.requestCancel": "<strong>{title}</strong> 的請求已被取消。",
"components.RequestModal.request4ktitle": "為 {title} 提出 4K 請求",
"components.PersonDetails.appearsin": "演出",
"components.PersonDetails.ascharacter": "飾演 {character}",
"components.TvDetails.overviewunavailable": "沒有概要。",
"components.MovieDetails.overviewunavailable": "沒有概要。",
"components.TvDetails.watchtrailer": "觀看預告片",
"components.TvDetails.showtype": "節目類型",
"components.TvDetails.showtype": "影集類型",
"components.TvDetails.similar": "類似",
"components.RequestModal.requestfrom": "{username} 的請求待處理。",
"components.Settings.toastApiKeySuccess": "生成新應用程式密鑰成功!",
@@ -308,7 +306,7 @@
"components.Settings.RadarrModal.add": "新增伺服器",
"components.RequestModal.requestcancelled": "<strong>{title}</strong> 的請求已被取消。",
"components.RequestModal.AdvancedRequester.qualityprofile": "品質設定",
"components.RequestModal.AdvancedRequester.animenote": "※這是個動漫節目。",
"components.RequestModal.AdvancedRequester.animenote": "※這是個動漫影集。",
"components.RequestModal.AdvancedRequester.advancedoptions": "進階選項",
"components.RequestModal.AdvancedRequester.default": "{name}(預設)",
"components.RequestModal.AdvancedRequester.destinationserver": "目標伺服器",
@@ -323,7 +321,7 @@
"components.Settings.SonarrModal.toastSonarrTestFailure": "Sonarr 伺服器連線失敗。",
"components.Settings.serverpreset": "伺服器",
"components.RequestModal.autoapproval": "自動批准",
"components.PermissionEdit.autoapproveSeries": "電視節目自動批准",
"components.PermissionEdit.autoapproveSeries": "影集自動批准",
"components.PermissionEdit.autoapproveMovies": "電影自動批准",
"components.PermissionEdit.autoapprove": "自動批准",
"components.PermissionEdit.admin": "管理員",
@@ -332,7 +330,7 @@
"components.Settings.serverpresetRefreshing": "載入中…",
"components.Settings.SonarrModal.syncEnabled": "啟用掃描",
"components.UserList.userssaved": "使用者權限儲存成功!",
"components.Settings.hideAvailable": "隱藏可觀看的電影和電視節目",
"components.Settings.hideAvailable": "隱藏可觀看的電影和影集",
"components.Settings.SonarrModal.externalUrl": "外部網址",
"components.Settings.RadarrModal.externalUrl": "外部網址",
"components.Settings.csrfProtection": "防止跨站請求偽造CSRF攻擊",
@@ -355,7 +353,7 @@
"components.PlexLoginButton.signinwithplex": "登入",
"components.PlexLoginButton.signingin": "登入中…",
"components.PermissionEdit.users": "管理使用者",
"components.PermissionEdit.request4kTv": "提出 4K 電視節目請求",
"components.PermissionEdit.request4kTv": "提出 4K 影集請求",
"components.PermissionEdit.request4kMovies": "提出 4K 電影請求",
"components.PermissionEdit.request4k": "提出 4K 請求",
"components.PermissionEdit.request": "提出請求",
@@ -434,7 +432,7 @@
"components.NotificationTypeSelector.mediadeclinedDescription": "當請求拒被絕時發送通知。",
"components.PermissionEdit.request4kDescription": "授予提出 4K 媒體請求的權限。",
"components.PermissionEdit.request4kMoviesDescription": "授予提出 4K 電影請求的權限。",
"components.PermissionEdit.request4kTvDescription": "授予提出 4K 電視節目請求的權限。",
"components.PermissionEdit.request4kTvDescription": "授予提出 4K 影集請求的權限。",
"components.PermissionEdit.requestDescription": "授予提出非 4K 媒體請求的權限。",
"components.PermissionEdit.viewrequestsDescription": "授予查看其他使用者提出的媒體請求的權限。",
"components.Settings.SonarrModal.validationLanguageProfileRequired": "請設定語言",
@@ -445,7 +443,7 @@
"components.Settings.SonarrModal.animelanguageprofile": "動漫語言設定",
"components.RequestModal.AdvancedRequester.languageprofile": "語言設定",
"components.PermissionEdit.usersDescription": "授予管理使用者的權限。有此權限的使用者不能編輯管理員或授予管理員權限。",
"components.PermissionEdit.autoapproveSeriesDescription": "自動批准非 4K 電視節目請求。",
"components.PermissionEdit.autoapproveSeriesDescription": "自動批准非 4K 影集請求。",
"components.PermissionEdit.autoapproveMoviesDescription": "自動批准非 4K 電影請求。",
"components.PermissionEdit.autoapproveDescription": "自動批准所有非 4K 媒體請求。",
"components.PermissionEdit.advancedrequestDescription": "授予使用進階媒體請求選項的權限。",
@@ -458,8 +456,8 @@
"components.UserList.sortCreated": "加入日期",
"components.UserList.sortDisplayName": "顯示名稱",
"components.UserList.sortRequests": "請求數",
"components.PermissionEdit.autoapprove4kSeriesDescription": "自動批准 4K 電視節目請求。",
"components.PermissionEdit.autoapprove4kSeries": "4K 電視節目自動批准",
"components.PermissionEdit.autoapprove4kSeriesDescription": "自動批准 4K 影集請求。",
"components.PermissionEdit.autoapprove4kSeries": "4K 影集自動批准",
"components.PermissionEdit.autoapprove4kMoviesDescription": "自動批准 4K 電影請求。",
"components.PermissionEdit.autoapprove4kMovies": "4K 電影自動批准",
"components.PermissionEdit.autoapprove4kDescription": "自動批准所有 4K 媒體請求。",
@@ -501,12 +499,11 @@
"components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "請輸入當前的密碼",
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "請輸入新密碼",
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "密碼設定成功!",
"components.RequestModal.SearchByNameModal.nosummary": "沒有概要。",
"components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "請輸入有效的使用者 ID",
"components.UserProfile.UserSettings.UserNotificationSettings.discordIdTip": "您的<FindDiscordIdLink>使用者 ID 號碼</FindDiscordIdLink>",
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "重設密碼時出了點問題。",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "無法自動配對您的請求。請從以下列表中選擇正確的媒體項。",
"components.CollectionDetails.requestcollection4k": "提出 4K 系列請求",
"components.RequestModal.SearchByNameModal.notvdbiddescription": "無法自動配對此影集的數據。 請在以下選擇正確的媒體項。",
"components.CollectionDetails.requestcollection4k": "提出 4K 電影系列請求",
"components.Settings.trustProxyTip": "使用代理伺服器時,允許 Overseerr 註冊客戶端的正確 IP 位址",
"components.Settings.csrfProtectionTip": "設定外部訪問權限為只讀(需要 HTTPS",
"components.ResetPassword.requestresetlinksuccessmessage": "通過電子郵件發送了密碼重設鏈接。",
@@ -516,7 +513,7 @@
"components.Settings.region": "「探索」地區",
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "「探索」語言",
"components.Settings.originallanguage": "「探索」語言",
"components.Discover.upcomingtv": "即將上映的電視節目",
"components.Discover.upcomingtv": "即將上映的影集",
"components.Settings.webhook": "Webhook",
"components.Settings.email": "電子郵件",
"components.Settings.generalsettingsDescription": "Overseerr 的全域和預設設定。",
@@ -543,8 +540,8 @@
"components.Settings.SettingsJobsCache.download-sync": "下載狀態同步",
"components.Settings.SettingsJobsCache.unknownJob": "未知作業",
"components.TvDetails.seasons": "{seasonCount} 季",
"components.Discover.DiscoverTvGenre.genreSeries": "{genre}電視節目",
"components.Discover.DiscoverNetwork.networkSeries": "{network} 電視節目",
"components.Discover.DiscoverTvGenre.genreSeries": "{genre}影集",
"components.Discover.DiscoverNetwork.networkSeries": "{network} 影集",
"components.Discover.DiscoverStudio.studioMovies": "{studio} 電影",
"components.Discover.DiscoverMovieGenre.genreMovies": "{genre}電影",
"i18n.loading": "載入中…",
@@ -568,7 +565,7 @@
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr 掃描",
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Plex 最近新增掃描",
"components.Settings.SettingsJobsCache.plex-full-scan": "Plex 媒體庫掃描",
"components.Discover.DiscoverTvLanguage.languageSeries": "{language}電視節目",
"components.Discover.DiscoverTvLanguage.languageSeries": "{language}影集",
"components.Discover.DiscoverMovieLanguage.languageMovies": "{language}電影",
"components.UserProfile.ProfileHeader.userid": "使用者 ID{userid}",
"components.UserProfile.ProfileHeader.joindate": "加入日期:{joindate}",
@@ -585,17 +582,16 @@
"components.UserProfile.UserSettings.unauthorizedDescription": "您無權編輯此使用者的設定。",
"components.Settings.Notifications.pgpPrivateKeyTip": "使用 <OpenPgpLink>OpenPGP</OpenPgpLink> 電子郵件加密與簽章",
"components.Settings.Notifications.pgpPasswordTip": "使用 <OpenPgpLink>OpenPGP</OpenPgpLink> 電子郵件加密與簽章",
"components.UserProfile.norequests": "沒有請求。",
"components.Settings.Notifications.pgpPassword": "PGP 解密密碼",
"components.Settings.Notifications.pgpPrivateKey": "PGP 私鑰",
"components.TvDetails.episodeRuntime": "劇集片長",
"components.TvDetails.episodeRuntimeMinutes": "{runtime} 分鐘",
"components.RequestModal.AdvancedRequester.folder": "{path}{space}",
"components.Discover.TvGenreSlider.tvgenres": "電視節目類型",
"components.Discover.TvGenreSlider.tvgenres": "影集類型",
"components.Discover.MovieGenreSlider.moviegenres": "電影類型",
"components.Discover.MovieGenreList.moviegenres": "電影類型",
"components.Discover.TvGenreList.seriesgenres": "電視節目類型",
"components.Settings.partialRequestsEnabled": "允許不完整的電視節目請求",
"components.Discover.TvGenreList.seriesgenres": "影集類型",
"components.Settings.partialRequestsEnabled": "允許不完整的影集請求",
"components.RequestModal.alreadyrequested": "已經有請求",
"components.Settings.SettingsLogs.time": "時間戳",
"components.Settings.SettingsLogs.resumeLogs": "恢復",
@@ -627,9 +623,9 @@
"components.Settings.SettingsLogs.message": "訊息",
"components.Settings.SettingsJobsCache.jobsandcache": "作業和快取",
"components.Settings.SettingsAbout.about": "關於 Overseerr",
"components.Settings.cacheImages": "啟用圖像緩存",
"components.Settings.cacheImages": "啟用圖像檔案快取",
"components.Settings.SettingsLogs.logsDescription": "您也能直接查看 <code>stdout</code> 數據流或位置於 <code>{appDataPath}/logs/overseerr.log</code> 的日誌檔案。",
"components.Settings.cacheImagesTip": "把所有的圖像優化和儲存到快取記憶體(需要大量的磁碟空間)",
"components.Settings.cacheImagesTip": "處理和提供優化的圖像檔案(需要大量的磁碟空間)",
"components.Settings.SettingsLogs.logDetails": "日誌詳細信息",
"components.Settings.SettingsLogs.extraData": "附加數據",
"components.Settings.SettingsLogs.copyToClipboard": "複製到剪貼板",
@@ -640,16 +636,16 @@
"components.PersonDetails.lifespan": "{birthdate}{deathdate}",
"components.PersonDetails.alsoknownas": "別名:{names}",
"i18n.delimitedlist": "{a}、{b}",
"components.Settings.SettingsUsers.tvRequestLimitLabel": "電視節目請求全域限制",
"components.Settings.SettingsUsers.tvRequestLimitLabel": "影集請求全域限制",
"components.Settings.SettingsUsers.movieRequestLimitLabel": "電影請求全域限制",
"components.RequestModal.QuotaDisplay.seasonlimit": "季數",
"components.RequestModal.QuotaDisplay.season": "電視節目季數",
"components.RequestModal.QuotaDisplay.season": "影集季數",
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {電影請求剩餘數不足} other {剩餘 <strong>#</strong> 個{type}請求}}",
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "請求剩餘數不足",
"components.RequestModal.QuotaDisplay.movielimit": "電影",
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "此使用者每 <strong>{days}</strong> 天能提出 <strong>{limit}</strong> 個{type}請求。",
"components.RequestModal.QuotaDisplay.allowedRequests": "您每 <strong>{days}</strong> 天能提出 <strong>{limit}</strong> 個{type}請求。",
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "電視節目請求限制",
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "影集請求限制",
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "電影請求限制",
"components.UserProfile.movierequests": "電影請求",
"components.UserProfile.limit": "{limit} 之 {remaining}",
@@ -660,9 +656,9 @@
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "覆寫全域限制",
"components.UserProfile.unlimited": "無限",
"components.UserProfile.totalrequests": "請求總數",
"components.UserProfile.seriesrequest": "電視節目請求",
"components.UserProfile.seriesrequest": "影集請求",
"i18n.view": "檢視",
"i18n.tvshow": "電視節目",
"i18n.tvshow": "影集",
"i18n.testing": "測試中…",
"i18n.test": "測試",
"i18n.status": "狀態",
@@ -681,8 +677,8 @@
"i18n.back": "返回",
"i18n.all": "所有",
"i18n.areyousure": "確定嗎?",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "此使用者的電視節目請求數量必須至少剩餘 <strong>{seasons}</strong> 個季數才能提出此節目請求。",
"components.RequestModal.QuotaDisplay.requiredquota": "您的電視節目請求數量必須至少剩餘 <strong>{seasons}</strong> 個季數才能提出此節目請求。",
"components.RequestModal.QuotaDisplay.requiredquotaUser": "此使用者的影集請求數量必須至少剩餘 <strong>{seasons}</strong> 個季數才能提出此影集請求。",
"components.RequestModal.QuotaDisplay.requiredquota": "您的影集請求數量必須至少剩餘 <strong>{seasons}</strong> 個季數才能提出此影集請求。",
"components.TvDetails.originaltitle": "原始標題",
"components.MovieDetails.originaltitle": "原始標題",
"components.RequestModal.QuotaDisplay.quotaLinkUser": "訪問此使用者的<ProfileLink>個人資料頁面</ProfileLink>以查看使用者的請求限制 。",
@@ -729,7 +725,6 @@
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKey": "PGP 公鑰",
"components.RequestList.RequestItem.cancelRequest": "取消請求",
"components.NotificationTypeSelector.notificationTypes": "通知類型",
"components.Discover.noRequests": "沒有請求。",
"components.Layout.VersionStatus.commitsbehind": "落後 {commitsBehind} 個提交",
"components.Layout.VersionStatus.outofdate": "非最新版本",
"components.Layout.VersionStatus.streamstable": "Overseerr 穩定版",
@@ -739,7 +734,7 @@
"components.Settings.noDefaultNon4kServer": "如果您只有一個 {serverType} 伺服器,請勿把它設定為 4K 伺服器。",
"components.Settings.noDefaultServer": "您必須至少指定一個預設 {serverType} 伺服器,才能處理{mediaType}請求。",
"components.Settings.serviceSettingsDescription": "關於 {serverType} 伺服器的設定。{serverType} 伺服器數沒有最大值限制,但您只能指定兩個預設伺服器(一個非 4K、一個 4K。",
"components.Settings.mediaTypeSeries": "電視節目",
"components.Settings.mediaTypeSeries": "影集",
"components.Settings.mediaTypeMovie": "電影",
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "此使用者的帳戶目前沒有設密碼。若在以下設定密碼,此使用者就能使用「本地登入」。",
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "您的帳戶目前沒有設密碼。若在以下設定密碼,您就能使用「本地登入」。",
@@ -797,10 +792,10 @@
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "Webhook 測試通知已發送!",
"components.Settings.SettingsUsers.newPlexLoginTip": "讓還沒匯入的 Plex 使用者登入",
"components.Settings.SettingsUsers.newPlexLogin": "允許新的 Plex 登入",
"components.PermissionEdit.requestTv": "提出電視節目請求",
"components.PermissionEdit.requestTv": "提出影集請求",
"components.PermissionEdit.requestMovies": "提出電影請求",
"components.PermissionEdit.requestMoviesDescription": "授予提出非 4K 電影請求的權限。",
"components.PermissionEdit.requestTvDescription": "授予提出非 4K 電視節目請求的權限。",
"components.PermissionEdit.requestTvDescription": "授予提出非 4K 影集請求的權限。",
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "預設設定({language}",
"components.Settings.locale": "顯示語言",
"components.DownloadBlock.estimatedtime": "預計:{time}",
@@ -852,7 +847,7 @@
"components.MovieDetails.streamingproviders": "目前的流媒體服務",
"components.Settings.SettingsJobsCache.editJobSchedule": "編輯作業",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "每 {jobScheduleHours} 小時",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "頻率",
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "新的頻率",
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "每 {jobScheduleMinutes} 分鐘",
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "儲存作業設定時出了點問題。",
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "作業編輯成功!",
@@ -884,16 +879,16 @@
"components.ManageSlideOver.manageModalNoRequests": "沒有請求。",
"components.ManageSlideOver.openarr": "開啟 {arr} 伺服器",
"components.ManageSlideOver.openarr4k": "開啟 4K {arr} 伺服器",
"components.ManageSlideOver.movie": "電影",
"components.ManageSlideOver.movie": "電影",
"components.ManageSlideOver.markavailable": "標記為可觀看",
"components.IssueModal.issueAudio": "音訊",
"components.ManageSlideOver.downloadstatus": "下載狀態",
"components.IssueModal.CreateIssueModal.allepisodes": "所有集數",
"components.ManageSlideOver.manageModalClearMediaWarning": "※這將會刪除包括使用者請求在內所有有關{mediaType}的資料。如果這{mediaType}存在於您的 Plex 伺服器,資料將會在媒體庫掃描時重新建立。",
"components.ManageSlideOver.manageModalClearMediaWarning": "※這將會刪除包括使用者請求在內所有有關{mediaType}的資料。如果這{mediaType}存在於您的 Plex 伺服器,資料將會在媒體庫掃描時重新建立。",
"components.ManageSlideOver.mark4kavailable": "標記 4K 版為可觀看",
"components.IssueModal.issueSubtitles": "字幕",
"components.IssueModal.issueOther": "其他",
"components.ManageSlideOver.tvshow": "個電視節目",
"components.ManageSlideOver.tvshow": "影集",
"components.ManageSlideOver.manageModalTitle": "管理{mediaType}",
"components.IssueModal.issueVideo": "影片",
"components.IssueList.IssueItem.issuetype": "類型",
@@ -914,7 +909,6 @@
"components.IssueDetails.toaststatusupdated": "問題狀態編輯成功!",
"components.IssueDetails.toastissuedeletefailed": "刪除問題狀態時出了點問題。",
"components.IssueList.IssueItem.openeduserdate": "{user}{date}",
"components.IssueModal.CreateIssueModal.issomethingwrong": "{title} 有問題嗎?",
"components.IssueModal.CreateIssueModal.providedetail": "請詳細解釋您遇到的問題。",
"components.IssueModal.CreateIssueModal.submitissue": "報告問題",
"components.IssueModal.CreateIssueModal.toastFailedCreate": "提出問題報告時出了點問題。",
@@ -1057,29 +1051,71 @@
"components.TitleCard.tmdbid": "TMDB ID",
"components.RequestCard.tmdbid": "TMDB ID",
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
"components.Discover.plexwatchlist": "您的 Plex Watchlist",
"components.Discover.plexwatchlist": "您的 Plex 關注列表",
"components.PermissionEdit.autorequestMovies": "自動提出電影請求",
"components.PermissionEdit.autorequestSeries": "自動提出電視節目請求",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Watchlist 同步",
"components.PermissionEdit.autorequestSeries": "自動提出影集請求",
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex 關注列表同步",
"components.PermissionEdit.autorequest": "自動提出請求",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "您的 Plex Watchlist",
"components.Discover.DiscoverWatchlist.discoverwatchlist": "您的 Plex 關注列表",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "自動提出電影請求",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "自動提出電視節目請求",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "自動提出影集請求",
"components.NotificationTypeSelector.mediaautorequested": "請求自動提出",
"components.PermissionEdit.autorequestMoviesDescription": "授予從 Plex Watchlist 中自動提出非 4K 電影請求的權限。",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "從您的 <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> 中自動提出電影請求",
"components.NotificationTypeSelector.mediaautorequestedDescription": "當您的 Plex Watchlist 中的媒體自動提出請求時取得通知。",
"components.PermissionEdit.autorequestDescription": "授予從 Plex Watchlist 中自動提出非 4K 媒體請求的權限。",
"components.PermissionEdit.autorequestSeriesDescription": "授予從 Plex Watchlist 中自動提出非 4K 電視節目請求的權限。",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "從您的 <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> 中自動提出電視節目請求",
"components.PermissionEdit.autorequestMoviesDescription": "授予從 Plex 關注列表中自動提出非 4K 電影請求的權限。",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "從您的 <PlexWatchlistSupportLink>Plex 關注列表</PlexWatchlistSupportLink>中自動提出電影請求",
"components.NotificationTypeSelector.mediaautorequestedDescription": "當您的 Plex 關注列表中的媒體自動提出請求時取得通知。",
"components.PermissionEdit.autorequestDescription": "授予從 Plex 關注列表中自動提出非 4K 媒體請求的權限。",
"components.PermissionEdit.autorequestSeriesDescription": "授予從 Plex 關注列表中自動提出非 4K 影集請求的權限。",
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "從您的 <PlexWatchlistSupportLink>Plex 關注列表</PlexWatchlistSupportLink>中自動提出影集請求",
"components.Settings.SettingsLogs.viewdetails": "查看詳細信息",
"components.TvDetails.reportissue": "報告問題",
"components.MovieDetails.managemovie": "管理電影",
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
"components.UserProfile.plexwatchlist": "Plex Watchlist",
"components.Discover.DiscoverWatchlist.watchlist": "Plex 關注列表",
"components.UserProfile.plexwatchlist": "Plex 關注列表",
"components.MovieDetails.reportissue": "報告問題",
"components.PermissionEdit.viewwatchlists": "查看 Plex Watchlists",
"components.PermissionEdit.viewwatchlistsDescription": "授予查看其他使用者的 Plex Watchlists 的權限。",
"components.TvDetails.manageseries": "管理電視節目",
"components.Settings.restartrequiredTooltip": "Overseerr 必須重新啟動才能應用設定的變更"
"components.PermissionEdit.viewwatchlists": "查看 Plex 關注列表",
"components.PermissionEdit.viewwatchlistsDescription": "授予查看其他使用者的 Plex 關注列表的權限。",
"components.TvDetails.manageseries": "管理影集",
"components.Settings.restartrequiredTooltip": "Overseerr 必須重新啟動才能應用設定的變更",
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "電影請求",
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "影集請求",
"components.Layout.UserDropdown.requests": "請求",
"components.TvDetails.seasonstitle": "季數",
"components.RequestBlock.decline": "拒絕請求",
"components.RequestBlock.edit": "編輯請求",
"components.RequestBlock.lastmodifiedby": "最後修改者",
"components.RequestBlock.requestdate": "請求日期",
"components.RequestCard.approverequest": "批准請求",
"components.RequestCard.cancelrequest": "取消請求",
"components.RequestCard.declinerequest": "拒絕請求",
"components.TvDetails.seasonnumber": "第 {seasonNumber} 季",
"components.RequestBlock.approve": "批准請求",
"components.RequestBlock.delete": "刪除請求",
"components.RequestCard.editrequest": "編輯請求",
"components.RequestBlock.requestedby": "請求者",
"components.StatusBadge.playonplex": "在 Plex 上觀看",
"components.StatusBadge.managemedia": "管理{mediaType}",
"components.StatusBadge.openinarr": "開啟 {arr} 伺服器",
"components.TvDetails.status4k": "4K 版{status}",
"components.TvDetails.episodeCount": "{episodeCount} 集",
"components.AirDateBadge.airedrelative": "{relativeTime}播出",
"components.MovieDetails.rtaudiencescore": "爛番茄觀眾評分",
"components.TvDetails.Season.somethingwentwrong": "檢索數據時出了點問題。",
"components.TvDetails.tmdbuserscore": "TMDB 使用者評分",
"components.TvDetails.rtcriticsscore": "爛番茄專業評分",
"components.AirDateBadge.airsrelative": "{relativeTime}播出",
"components.MovieDetails.tmdbuserscore": "TMDB 使用者評分",
"components.MovieDetails.rtcriticsscore": "爛番茄專業評分",
"components.TvDetails.rtaudiencescore": "爛番茄觀眾評分",
"components.RequestModal.requestmovietitle": "提出電影請求",
"components.RequestModal.requestmovie4ktitle": "提出 4K 電影請求",
"components.RequestModal.requestcollection4ktitle": "提出 4K 電影系列請求",
"components.RequestModal.requestseriestitle": "提出影集請求",
"components.RequestModal.requestseries4ktitle": "提出 4K 影集請求",
"components.RequestModal.requestcollectiontitle": "提出電影系列請求",
"components.RequestModal.SearchByNameModal.nomatches": "找不到此影集的數據。",
"components.UserProfile.emptywatchlist": "您的 <PlexWatchlistSupportLink>Plex 關注列表</PlexWatchlistSupportLink>中的媒體會顯示在這裡。",
"components.Discover.emptywatchlist": "您的 <PlexWatchlistSupportLink>Plex 關注列表</PlexWatchlistSupportLink>中的媒體會顯示在這裡。",
"components.Settings.advancedTooltip": "錯誤的設定可能會破壞應用程式功能",
"components.Settings.experimentalTooltip": "啟用此設定可能會出現意外的應用程式行為",
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "目前的頻率"
}

View File

@@ -170,7 +170,6 @@ CoreApp.getInitialProps = async (initialProps) => {
applicationTitle: '',
applicationUrl: '',
hideAvailable: false,
hideRequested: false,
movie4kEnabled: false,
series4kEnabled: false,
localLogin: true,

View File

@@ -0,0 +1,8 @@
import RequestList from '@app/components/RequestList';
import type { NextPage } from 'next';
const UserRequestsPage: NextPage = () => {
return <RequestList />;
};
export default UserRequestsPage;

View File

@@ -11,6 +11,7 @@
body {
@apply bg-gray-900;
overscroll-behavior-y: contain;
}
code {
@@ -453,3 +454,22 @@
}
}
}
.ptr--ptr {
box-shadow: initial !important;
position: absolute !important;
z-index: 30 !important;
}
.ptr--refresh {
overflow: visible !important;
z-index: 30 !important;
}
.ptr--pull {
z-index: 30 !important;
}
.ptr--box {
margin-bottom: -13px !important;
}

View File

@@ -1809,7 +1809,7 @@
resolved "https://registry.yarnpkg.com/@hapi/hoek/-/hoek-9.3.0.tgz#8368869dcb735be2e7f5cb7647de78e167a251fb"
integrity sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==
"@headlessui/react@^0.0.0-insiders.b301f04":
"@headlessui/react@0.0.0-insiders.b301f04":
version "0.0.0-insiders.b301f04"
resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-0.0.0-insiders.b301f04.tgz#12f209097f987cddbba72de40240a12648ebe12b"
integrity sha512-I+UUEUkdYp+AgKU1teWUZaICEg//OWl0R1UxCB50Jzfi3APu7aSY0Y+ABrgfEWDhBYTG9hNgXvMVTNCnFu49yA==
@@ -3047,6 +3047,11 @@
resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf"
integrity sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==
"@types/pulltorefreshjs@0.1.5":
version "0.1.5"
resolved "https://registry.yarnpkg.com/@types/pulltorefreshjs/-/pulltorefreshjs-0.1.5.tgz#f15c9dbc91b8fdd8135093d81ece9e9d4d2324d7"
integrity sha512-/VRTgBettvBg1KI8mGnA9oeWs359tTXQ7qsxLuXnksL88jvK6ZNMStG5T9x9vUO9O7jLsgREB0cElz/BWFfdew==
"@types/qs@*":
version "6.9.7"
resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.7.tgz#63bb7d067db107cc1e457c303bc25d511febf6cb"
@@ -4847,6 +4852,11 @@ cron-parser@^3.5.0:
is-nan "^1.3.2"
luxon "^1.26.0"
cronstrue@2.11.0:
version "2.11.0"
resolved "https://registry.yarnpkg.com/cronstrue/-/cronstrue-2.11.0.tgz#18ff1b95a836b9b4e06854f796db2dc8fa98ce41"
integrity sha512-iIBCSis5yqtFYWtJAmNOiwDveFWWIn+8uV5UYuPHYu/Aeu5CSSJepSbaHMyfc+pPFgnsCcGzfPQEo7LSGmWbTg==
cross-spawn@^7.0.0, cross-spawn@^7.0.2, cross-spawn@^7.0.3:
version "7.0.3"
resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6"
@@ -4937,6 +4947,11 @@ csurf@1.11.0:
csrf "3.1.0"
http-errors "~1.7.3"
cy-mobile-commands@0.3.0:
version "0.3.0"
resolved "https://registry.yarnpkg.com/cy-mobile-commands/-/cy-mobile-commands-0.3.0.tgz#2bf242093149154d846b755977da197b4730429e"
integrity sha512-Bj5P2ylw88hPqolLu68xWB6euVH5uNt8zyh+Ju8sBukGv39mWZxpjp6LtnUX/LK/YMthwvILYHhvr9SG1TP+4w==
cypress@10.6.0:
version "10.6.0"
resolved "https://registry.yarnpkg.com/cypress/-/cypress-10.6.0.tgz#13f46867febf2c3715874ed5dce9c2e946b175fe"
@@ -10152,6 +10167,11 @@ pug@3.0.2, pug@^3.0.2:
pug-runtime "^3.0.1"
pug-strip-comments "^2.0.0"
pulltorefreshjs@0.1.22:
version "0.1.22"
resolved "https://registry.yarnpkg.com/pulltorefreshjs/-/pulltorefreshjs-0.1.22.tgz#ddb5e3feee0b2a49fd46e1b18e84fffef2c47ac0"
integrity sha512-haxNVEHnS4NCQA7NeG7TSV69z4uqy/N7nfPRuc4dPWe8H6ygUrMjdNeohE+6v0lVVX/ukSjbLYwPUGUYtFKfvQ==
pump@^3.0.0:
version "3.0.0"
resolved "https://registry.yarnpkg.com/pump/-/pump-3.0.0.tgz#b4a2116815bde2f4e1ea602354e8c75565107a64"