mirror of
https://github.com/fallenbagel/jellyseerr.git
synced 2025-12-27 03:59:54 -05:00
Compare commits
4 Commits
preview-fo
...
fix-typeor
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd8d5744ef | ||
|
|
e4d34c04cb | ||
|
|
14b10178f8 | ||
|
|
48fbb5c032 |
@@ -296,8 +296,7 @@
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/13354331?v=4",
|
||||
"profile": "https://github.com/xeruf",
|
||||
"contributions": [
|
||||
"doc",
|
||||
"code"
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
@@ -382,6 +381,33 @@
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "j0srisk",
|
||||
"name": "Joseph Risk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/18372584?v=4",
|
||||
"profile": "http://josephrisk.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Loetwiek",
|
||||
"name": "Loetwiek",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/79059734?v=4",
|
||||
"profile": "https://github.com/Loetwiek",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Fuochi",
|
||||
"name": "Fuochi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4720478?v=4",
|
||||
"profile": "https://github.com/Fuochi",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "mobihen",
|
||||
"name": "Nir Israel Hen",
|
||||
@@ -427,6 +453,69 @@
|
||||
"security"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "j0srisk",
|
||||
"name": "Joseph Risk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/18372584?v=4",
|
||||
"profile": "http://josephrisk.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Loetwiek",
|
||||
"name": "Loetwiek",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/79059734?v=4",
|
||||
"profile": "https://github.com/Loetwiek",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Fuochi",
|
||||
"name": "Fuochi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4720478?v=4",
|
||||
"profile": "https://github.com/Fuochi",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "demrich",
|
||||
"name": "David Emrich",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/30092389?v=4",
|
||||
"profile": "https://github.com/demrich",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "maxnatamo",
|
||||
"name": "Max T. Kristiansen",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5898152?v=4",
|
||||
"profile": "https://maxtrier.dk",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DamsDev1",
|
||||
"name": "Damien Fajole",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60252259?v=4",
|
||||
"profile": "https://damsdev.me",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "AhmedNSidd",
|
||||
"name": "Ahmed Siddiqui",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/36286128?v=4",
|
||||
"profile": "https://github.com/AhmedNSidd",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Zariel",
|
||||
"name": "Chris Bannister",
|
||||
@@ -535,6 +624,87 @@
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "j0srisk",
|
||||
"name": "Joseph Risk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/18372584?v=4",
|
||||
"profile": "http://josephrisk.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Loetwiek",
|
||||
"name": "Loetwiek",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/79059734?v=4",
|
||||
"profile": "https://github.com/Loetwiek",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Fuochi",
|
||||
"name": "Fuochi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4720478?v=4",
|
||||
"profile": "https://github.com/Fuochi",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "demrich",
|
||||
"name": "David Emrich",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/30092389?v=4",
|
||||
"profile": "https://github.com/demrich",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "maxnatamo",
|
||||
"name": "Max T. Kristiansen",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5898152?v=4",
|
||||
"profile": "https://maxtrier.dk",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DamsDev1",
|
||||
"name": "Damien Fajole",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60252259?v=4",
|
||||
"profile": "https://damsdev.me",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "AhmedNSidd",
|
||||
"name": "Ahmed Siddiqui",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/36286128?v=4",
|
||||
"profile": "https://github.com/AhmedNSidd",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "JackW6809",
|
||||
"name": "JackOXI",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/53652452?v=4",
|
||||
"profile": "https://github.com/JackW6809",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "StancuFlorin",
|
||||
"name": "Stancu Florin",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1199404?v=4",
|
||||
"profile": "http://indicus.ro",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "RankWeis",
|
||||
"name": "RankWeis",
|
||||
@@ -544,6 +714,105 @@
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "j0srisk",
|
||||
"name": "Joseph Risk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/18372584?v=4",
|
||||
"profile": "http://josephrisk.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Loetwiek",
|
||||
"name": "Loetwiek",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/79059734?v=4",
|
||||
"profile": "https://github.com/Loetwiek",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Fuochi",
|
||||
"name": "Fuochi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4720478?v=4",
|
||||
"profile": "https://github.com/Fuochi",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "demrich",
|
||||
"name": "David Emrich",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/30092389?v=4",
|
||||
"profile": "https://github.com/demrich",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "maxnatamo",
|
||||
"name": "Max T. Kristiansen",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5898152?v=4",
|
||||
"profile": "https://maxtrier.dk",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DamsDev1",
|
||||
"name": "Damien Fajole",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60252259?v=4",
|
||||
"profile": "https://damsdev.me",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "AhmedNSidd",
|
||||
"name": "Ahmed Siddiqui",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/36286128?v=4",
|
||||
"profile": "https://github.com/AhmedNSidd",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "JackW6809",
|
||||
"name": "JackOXI",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/53652452?v=4",
|
||||
"profile": "https://github.com/JackW6809",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "StancuFlorin",
|
||||
"name": "Stancu Florin",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1199404?v=4",
|
||||
"profile": "http://indicus.ro",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "lmiklosko",
|
||||
"name": "Lukas Miklosko",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/44380311?v=4",
|
||||
"profile": "https://github.com/lmiklosko",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "gauthier-th",
|
||||
"name": "Gauthier",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/37781713?v=4",
|
||||
"profile": "https://gauthierth.fr/",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "jessielw",
|
||||
"name": "Jessie Wilson",
|
||||
@@ -580,6 +849,105 @@
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "j0srisk",
|
||||
"name": "Joseph Risk",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/18372584?v=4",
|
||||
"profile": "http://josephrisk.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Loetwiek",
|
||||
"name": "Loetwiek",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/79059734?v=4",
|
||||
"profile": "https://github.com/Loetwiek",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Fuochi",
|
||||
"name": "Fuochi",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/4720478?v=4",
|
||||
"profile": "https://github.com/Fuochi",
|
||||
"contributions": [
|
||||
"doc"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "demrich",
|
||||
"name": "David Emrich",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/30092389?v=4",
|
||||
"profile": "https://github.com/demrich",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "maxnatamo",
|
||||
"name": "Max T. Kristiansen",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/5898152?v=4",
|
||||
"profile": "https://maxtrier.dk",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DamsDev1",
|
||||
"name": "Damien Fajole",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/60252259?v=4",
|
||||
"profile": "https://damsdev.me",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "AhmedNSidd",
|
||||
"name": "Ahmed Siddiqui",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/36286128?v=4",
|
||||
"profile": "https://github.com/AhmedNSidd",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "JackW6809",
|
||||
"name": "JackOXI",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/53652452?v=4",
|
||||
"profile": "https://github.com/JackW6809",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "StancuFlorin",
|
||||
"name": "Stancu Florin",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1199404?v=4",
|
||||
"profile": "http://indicus.ro",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "lmiklosko",
|
||||
"name": "Lukas Miklosko",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/44380311?v=4",
|
||||
"profile": "https://github.com/lmiklosko",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "gauthier-th",
|
||||
"name": "Gauthier",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/37781713?v=4",
|
||||
"profile": "https://gauthierth.fr/",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "vfaergestad",
|
||||
"name": "vfaergestad",
|
||||
@@ -588,60 +956,6 @@
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "wolffman122",
|
||||
"name": "wolffman122",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/19178872?v=4",
|
||||
"profile": "https://github.com/wolffman122",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "Schrottfresser",
|
||||
"name": "Schrottfresser",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/39998368?v=4",
|
||||
"profile": "https://github.com/Schrottfresser",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "DillionLowry",
|
||||
"name": "Dillion",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/91228469?v=4",
|
||||
"profile": "https://github.com/DillionLowry",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "JamsRepos",
|
||||
"name": "Jam",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/1347620?v=4",
|
||||
"profile": "https://github.com/JamsRepos",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "joelowrance",
|
||||
"name": "Joe Lowrance",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/63176?v=4",
|
||||
"profile": "http://www.joelowrance.com",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
},
|
||||
{
|
||||
"login": "0xSysR3ll",
|
||||
"name": "0xsysr3ll",
|
||||
"avatar_url": "https://avatars.githubusercontent.com/u/31414959?v=4",
|
||||
"profile": "https://github.com/0xSysR3ll",
|
||||
"contributions": [
|
||||
"code"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
65
README.md
65
README.md
@@ -11,7 +11,7 @@
|
||||
<a href="http://translate.jellyseerr.dev/engage/jellyseerr/"><img src="http://translate.jellyseerr.dev/widget/jellyseerr/jellyseerr-frontend/svg-badge.svg" alt="Translation status" /></a>
|
||||
<a href="https://github.com/fallenbagel/jellyseerr/blob/develop/LICENSE"><img alt="GitHub" src="https://img.shields.io/github/license/fallenbagel/jellyseerr"></a>
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:START - Do not remove or modify this section -->
|
||||
<a href="#contributors-"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-69-orange.svg"/></a>
|
||||
<a href="#contributors-"><img alt="All Contributors" src="https://img.shields.io/badge/all_contributors-92-orange.svg"/></a>
|
||||
<!-- ALL-CONTRIBUTORS-BADGE:END -->
|
||||
|
||||
**Jellyseerr** is a free and open source software application for managing requests for your media library. It integrates with the media server of your choice: [Jellyfin](https://jellyfin.org), [Plex](https://plex.tv), and [Emby](https://emby.media/). In addition, it integrates with your existing services, such as **[Sonarr](https://sonarr.tv/)**, **[Radarr](https://radarr.video/)**.
|
||||
@@ -122,9 +122,9 @@ Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcon
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Br33ce"><img src="https://avatars.githubusercontent.com/u/124933490?v=4?s=100" width="100px;" alt="Br33ce"/><br /><sub><b>Br33ce</b></sub></a><br /><a href="#translation-Br33ce" title="Translation">🌍</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://athfan.com"><img src="https://avatars.githubusercontent.com/u/13810742?v=4?s=100" width="100px;" alt="Athfan Khaleel"/><br /><sub><b>Athfan Khaleel</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=athphane" title="Documentation">📖</a> <a href="https://github.com/fallenbagel/jellyseerr/commits?author=athphane" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://athfan.com"><img src="https://avatars.githubusercontent.com/u/13810742?v=4?s=100" width="100px;" alt="Athfan Khaleel"/><br /><sub><b>Athfan Khaleel</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=athphane" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/mdll23"><img src="https://avatars.githubusercontent.com/u/142844478?v=4?s=100" width="100px;" alt="Michael Dallinger"/><br /><sub><b>Michael Dallinger</b></sub></a><br /><a href="#translation-mdll23" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xeruf"><img src="https://avatars.githubusercontent.com/u/13354331?v=4?s=100" width="100px;" alt="Janek"/><br /><sub><b>Janek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=xeruf" title="Documentation">📖</a> <a href="https://github.com/fallenbagel/jellyseerr/commits?author=xeruf" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/xeruf"><img src="https://avatars.githubusercontent.com/u/13354331?v=4?s=100" width="100px;" alt="Janek"/><br /><sub><b>Janek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=xeruf" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://aleksasiriski.dev"><img src="https://avatars.githubusercontent.com/u/31509435?v=4?s=100" width="100px;" alt="Aleksa Siriški"/><br /><sub><b>Aleksa Siriški</b></sub></a><br /><a href="#infra-aleksasiriski" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://danishhumair.com"><img src="https://avatars.githubusercontent.com/u/121830048?v=4?s=100" width="100px;" alt="Danish Humair"/><br /><sub><b>Danish Humair</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Danish-H" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://arm0.red"><img src="https://avatars.githubusercontent.com/u/16858514?v=4?s=100" width="100px;" alt="Stephen Harris"/><br /><sub><b>Stephen Harris</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=trackmastersteve" title="Documentation">📖</a></td>
|
||||
@@ -136,43 +136,74 @@ Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcon
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://joaquinolivero.com"><img src="https://avatars.githubusercontent.com/u/66050823?v=4?s=100" width="100px;" alt="Joaquin Olivero"/><br /><sub><b>Joaquin Olivero</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=JoaquinOlivero" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Bretterteig"><img src="https://avatars.githubusercontent.com/u/47298401?v=4?s=100" width="100px;" alt="Julian Behr"/><br /><sub><b>Julian Behr</b></sub></a><br /><a href="#translation-Bretterteig" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/ThowZzy"><img src="https://avatars.githubusercontent.com/u/61882536?v=4?s=100" width="100px;" alt="ThowZzy"/><br /><sub><b>ThowZzy</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=ThowZzy" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mobihen.com"><img src="https://avatars.githubusercontent.com/u/35529491?v=4?s=100" width="100px;" alt="Nir Israel Hen"/><br /><sub><b>Nir Israel Hen</b></sub></a><br /><a href="#translation-mobihen" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/XDark187"><img src="https://avatars.githubusercontent.com/u/39034192?v=4?s=100" width="100px;" alt="Baraa"/><br /><sub><b>Baraa</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=XDark187" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://josephrisk.com"><img src="https://avatars.githubusercontent.com/u/18372584?v=4?s=100" width="100px;" alt="Joseph Risk"/><br /><sub><b>Joseph Risk</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=j0srisk" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loetwiek"><img src="https://avatars.githubusercontent.com/u/79059734?v=4?s=100" width="100px;" alt="Loetwiek"/><br /><sub><b>Loetwiek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Loetwiek" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fuochi"><img src="https://avatars.githubusercontent.com/u/4720478?v=4?s=100" width="100px;" alt="Fuochi"/><br /><sub><b>Fuochi</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Fuochi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://mobihen.com"><img src="https://avatars.githubusercontent.com/u/35529491?v=4?s=100" width="100px;" alt="Nir Israel Hen"/><br /><sub><b>Nir Israel Hen</b></sub></a><br /><a href="#translation-mobihen" title="Translation">🌍</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/XDark187"><img src="https://avatars.githubusercontent.com/u/39034192?v=4?s=100" width="100px;" alt="Baraa"/><br /><sub><b>Baraa</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=XDark187" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/franciscofsales"><img src="https://avatars.githubusercontent.com/u/7977645?v=4?s=100" width="100px;" alt="Francisco Sales"/><br /><sub><b>Francisco Sales</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=franciscofsales" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/myselfolli"><img src="https://avatars.githubusercontent.com/u/37535998?v=4?s=100" width="100px;" alt="Oliver Laing"/><br /><sub><b>Oliver Laing</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=myselfolli" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/M0NsTeRRR"><img src="https://avatars.githubusercontent.com/u/37785089?v=4?s=100" width="100px;" alt="Ludovic Ortega"/><br /><sub><b>Ludovic Ortega</b></sub></a><br /><a href="#security-M0NsTeRRR" title="Security">🛡️</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://josephrisk.com"><img src="https://avatars.githubusercontent.com/u/18372584?v=4?s=100" width="100px;" alt="Joseph Risk"/><br /><sub><b>Joseph Risk</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=j0srisk" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loetwiek"><img src="https://avatars.githubusercontent.com/u/79059734?v=4?s=100" width="100px;" alt="Loetwiek"/><br /><sub><b>Loetwiek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Loetwiek" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fuochi"><img src="https://avatars.githubusercontent.com/u/4720478?v=4?s=100" width="100px;" alt="Fuochi"/><br /><sub><b>Fuochi</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Fuochi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/demrich"><img src="https://avatars.githubusercontent.com/u/30092389?v=4?s=100" width="100px;" alt="David Emrich"/><br /><sub><b>David Emrich</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=demrich" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://maxtrier.dk"><img src="https://avatars.githubusercontent.com/u/5898152?v=4?s=100" width="100px;" alt="Max T. Kristiansen"/><br /><sub><b>Max T. Kristiansen</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=maxnatamo" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://damsdev.me"><img src="https://avatars.githubusercontent.com/u/60252259?v=4?s=100" width="100px;" alt="Damien Fajole"/><br /><sub><b>Damien Fajole</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=DamsDev1" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AhmedNSidd"><img src="https://avatars.githubusercontent.com/u/36286128?v=4?s=100" width="100px;" alt="Ahmed Siddiqui"/><br /><sub><b>Ahmed Siddiqui</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=AhmedNSidd" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Zariel"><img src="https://avatars.githubusercontent.com/u/2213?v=4?s=100" width="100px;" alt="Chris Bannister"/><br /><sub><b>Chris Bannister</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Zariel" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/C4J3"><img src="https://avatars.githubusercontent.com/u/13005453?v=4?s=100" width="100px;" alt="Joe"/><br /><sub><b>Joe</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=C4J3" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://me.garnx.fr"><img src="https://avatars.githubusercontent.com/u/37373941?v=4?s=100" width="100px;" alt="Guillaume ARNOUX"/><br /><sub><b>Guillaume ARNOUX</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=guillaumearnx" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/dr-carrot"><img src="https://avatars.githubusercontent.com/u/17272571?v=4?s=100" width="100px;" alt="dr-carrot"/><br /><sub><b>dr-carrot</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=dr-carrot" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/gageorsburn"><img src="https://avatars.githubusercontent.com/u/4692734?v=4?s=100" width="100px;" alt="Gage Orsburn"/><br /><sub><b>Gage Orsburn</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=gageorsburn" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/GkhnGRBZ"><img src="https://avatars.githubusercontent.com/u/127258824?v=4?s=100" width="100px;" alt="GkhnGRBZ"/><br /><sub><b>GkhnGRBZ</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=GkhnGRBZ" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://benhaney.com"><img src="https://avatars.githubusercontent.com/u/31331498?v=4?s=100" width="100px;" alt="Ben Haney"/><br /><sub><b>Ben Haney</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=benhaney" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Wunderharke"><img src="https://avatars.githubusercontent.com/u/5105672?v=4?s=100" width="100px;" alt="Wunderharke"/><br /><sub><b>Wunderharke</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Wunderharke" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/methbkts"><img src="https://avatars.githubusercontent.com/u/30674934?v=4?s=100" width="100px;" alt="Metin Bektas"/><br /><sub><b>Metin Bektas</b></sub></a><br /><a href="#infra-methbkts" title="Infrastructure (Hosting, Build-Tools, etc)">🚇</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/andrewkolda"><img src="https://avatars.githubusercontent.com/u/158614532?v=4?s=100" width="100px;" alt="andrewkolda"/><br /><sub><b>andrewkolda</b></sub></a><br /><a href="#design-andrewkolda" title="Design">🎨</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://ishanjain.me"><img src="https://avatars.githubusercontent.com/u/7921368?v=4?s=100" width="100px;" alt="Ishan Jain"/><br /><sub><b>Ishan Jain</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=ishanjain28" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://michaelt.xyz"><img src="https://avatars.githubusercontent.com/u/18223295?v=4?s=100" width="100px;" alt="Michael Thomas"/><br /><sub><b>Michael Thomas</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=michaelhthomas" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://josephrisk.com"><img src="https://avatars.githubusercontent.com/u/18372584?v=4?s=100" width="100px;" alt="Joseph Risk"/><br /><sub><b>Joseph Risk</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=j0srisk" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loetwiek"><img src="https://avatars.githubusercontent.com/u/79059734?v=4?s=100" width="100px;" alt="Loetwiek"/><br /><sub><b>Loetwiek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Loetwiek" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fuochi"><img src="https://avatars.githubusercontent.com/u/4720478?v=4?s=100" width="100px;" alt="Fuochi"/><br /><sub><b>Fuochi</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Fuochi" title="Documentation">📖</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://michaelt.xyz"><img src="https://avatars.githubusercontent.com/u/18223295?v=4?s=100" width="100px;" alt="Michael Thomas"/><br /><sub><b>Michael Thomas</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=michaelhthomas" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/demrich"><img src="https://avatars.githubusercontent.com/u/30092389?v=4?s=100" width="100px;" alt="David Emrich"/><br /><sub><b>David Emrich</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=demrich" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://maxtrier.dk"><img src="https://avatars.githubusercontent.com/u/5898152?v=4?s=100" width="100px;" alt="Max T. Kristiansen"/><br /><sub><b>Max T. Kristiansen</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=maxnatamo" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://damsdev.me"><img src="https://avatars.githubusercontent.com/u/60252259?v=4?s=100" width="100px;" alt="Damien Fajole"/><br /><sub><b>Damien Fajole</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=DamsDev1" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AhmedNSidd"><img src="https://avatars.githubusercontent.com/u/36286128?v=4?s=100" width="100px;" alt="Ahmed Siddiqui"/><br /><sub><b>Ahmed Siddiqui</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=AhmedNSidd" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JackW6809"><img src="https://avatars.githubusercontent.com/u/53652452?v=4?s=100" width="100px;" alt="JackOXI"/><br /><sub><b>JackOXI</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=JackW6809" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://indicus.ro"><img src="https://avatars.githubusercontent.com/u/1199404?v=4?s=100" width="100px;" alt="Stancu Florin"/><br /><sub><b>Stancu Florin</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=StancuFlorin" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/RankWeis"><img src="https://avatars.githubusercontent.com/u/733691?v=4?s=100" width="100px;" alt="RankWeis"/><br /><sub><b>RankWeis</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=RankWeis" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://josephrisk.com"><img src="https://avatars.githubusercontent.com/u/18372584?v=4?s=100" width="100px;" alt="Joseph Risk"/><br /><sub><b>Joseph Risk</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=j0srisk" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Loetwiek"><img src="https://avatars.githubusercontent.com/u/79059734?v=4?s=100" width="100px;" alt="Loetwiek"/><br /><sub><b>Loetwiek</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Loetwiek" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fuochi"><img src="https://avatars.githubusercontent.com/u/4720478?v=4?s=100" width="100px;" alt="Fuochi"/><br /><sub><b>Fuochi</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Fuochi" title="Documentation">📖</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/demrich"><img src="https://avatars.githubusercontent.com/u/30092389?v=4?s=100" width="100px;" alt="David Emrich"/><br /><sub><b>David Emrich</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=demrich" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://maxtrier.dk"><img src="https://avatars.githubusercontent.com/u/5898152?v=4?s=100" width="100px;" alt="Max T. Kristiansen"/><br /><sub><b>Max T. Kristiansen</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=maxnatamo" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://damsdev.me"><img src="https://avatars.githubusercontent.com/u/60252259?v=4?s=100" width="100px;" alt="Damien Fajole"/><br /><sub><b>Damien Fajole</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=DamsDev1" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/AhmedNSidd"><img src="https://avatars.githubusercontent.com/u/36286128?v=4?s=100" width="100px;" alt="Ahmed Siddiqui"/><br /><sub><b>Ahmed Siddiqui</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=AhmedNSidd" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JackW6809"><img src="https://avatars.githubusercontent.com/u/53652452?v=4?s=100" width="100px;" alt="JackOXI"/><br /><sub><b>JackOXI</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=JackW6809" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://indicus.ro"><img src="https://avatars.githubusercontent.com/u/1199404?v=4?s=100" width="100px;" alt="Stancu Florin"/><br /><sub><b>Stancu Florin</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=StancuFlorin" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/lmiklosko"><img src="https://avatars.githubusercontent.com/u/44380311?v=4?s=100" width="100px;" alt="Lukas Miklosko"/><br /><sub><b>Lukas Miklosko</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=lmiklosko" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://gauthierth.fr/"><img src="https://avatars.githubusercontent.com/u/37781713?v=4?s=100" width="100px;" alt="Gauthier"/><br /><sub><b>Gauthier</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=gauthier-th" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://www.linkedin.com/in/jessielwilson"><img src="https://avatars.githubusercontent.com/u/48299282?v=4?s=100" width="100px;" alt="Jessie Wilson"/><br /><sub><b>Jessie Wilson</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=jessielw" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/brotaxt"><img src="https://avatars.githubusercontent.com/u/25477935?v=4?s=100" width="100px;" alt="DominicKo"/><br /><sub><b>DominicKo</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=brotaxt" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://doctolib.com"><img src="https://avatars.githubusercontent.com/u/30508927?v=4?s=100" width="100px;" alt="Corentin Normand"/><br /><sub><b>Corentin Normand</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=corentinnormand" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/benbeauchamp7"><img src="https://avatars.githubusercontent.com/u/43358492?v=4?s=100" width="100px;" alt="Ben Beauchamp"/><br /><sub><b>Ben Beauchamp</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=benbeauchamp7" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/vfaergestad"><img src="https://avatars.githubusercontent.com/u/49147564?v=4?s=100" width="100px;" alt="vfaergestad"/><br /><sub><b>vfaergestad</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=vfaergestad" title="Code">💻</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/wolffman122"><img src="https://avatars.githubusercontent.com/u/19178872?v=4?s=100" width="100px;" alt="wolffman122"/><br /><sub><b>wolffman122</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=wolffman122" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Schrottfresser"><img src="https://avatars.githubusercontent.com/u/39998368?v=4?s=100" width="100px;" alt="Schrottfresser"/><br /><sub><b>Schrottfresser</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=Schrottfresser" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/DillionLowry"><img src="https://avatars.githubusercontent.com/u/91228469?v=4?s=100" width="100px;" alt="Dillion"/><br /><sub><b>Dillion</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=DillionLowry" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/JamsRepos"><img src="https://avatars.githubusercontent.com/u/1347620?v=4?s=100" width="100px;" alt="Jam"/><br /><sub><b>Jam</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=JamsRepos" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://www.joelowrance.com"><img src="https://avatars.githubusercontent.com/u/63176?v=4?s=100" width="100px;" alt="Joe Lowrance"/><br /><sub><b>Joe Lowrance</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=joelowrance" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/0xSysR3ll"><img src="https://avatars.githubusercontent.com/u/31414959?v=4?s=100" width="100px;" alt="0xsysr3ll"/><br /><sub><b>0xsysr3ll</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=0xSysR3ll" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/benbeauchamp7"><img src="https://avatars.githubusercontent.com/u/43358492?v=4?s=100" width="100px;" alt="Ben Beauchamp"/><br /><sub><b>Ben Beauchamp</b></sub></a><br /><a href="https://github.com/fallenbagel/jellyseerr/commits?author=benbeauchamp7" title="Code">💻</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
@@ -307,7 +338,7 @@ Thanks goes to these wonderful people from Overseerr ([emoji key](https://allcon
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://izaacj.me"><img src="https://avatars.githubusercontent.com/u/711323?v=4?s=100" width="100px;" alt="Izaac Brånn"/><br /><sub><b>Izaac Brånn</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=IzaacJ" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/SalmanTariq"><img src="https://avatars.githubusercontent.com/u/13284494?v=4?s=100" width="100px;" alt="Salman Tariq"/><br /><sub><b>Salman Tariq</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=SalmanTariq" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/andrew-kennedy"><img src="https://avatars.githubusercontent.com/u/2387159?v=4?s=100" width="100px;" alt="Andrew Kennedy"/><br /><sub><b>Andrew Kennedy</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=andrew-kennedy" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fallenbagel"><img src="https://avatars.githubusercontent.com/u/98979876?v=4?s=100" width="100px;" alt="Fallenbagel"/><br /><sub><b>Fallenbagel</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=Fallenbagel" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://github.com/Fallenbagel"><img src="https://avatars.githubusercontent.com/u/98979876?v=4?s=100" width="100px;" alt="Fallenbagel"/><br /><sub><b>Fallenbagel</b></sub></a><br /><a href="https://github.com/Fallenbagel/jellyseerr/commits?author=Fallenbagel" title="Jellyseerr">🪼⌨️</a> <a href="https://github.com/sct/overseerr/commits?author=Fallenbagel" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://aidoge.xyz"><img src="https://avatars.githubusercontent.com/u/9427639?v=4?s=100" width="100px;" alt="Anton K. (ai Doge)"/><br /><sub><b>Anton K. (ai Doge)</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=scorp200" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="https://marcofaggian.com"><img src="https://avatars.githubusercontent.com/u/19221001?v=4?s=100" width="100px;" alt="Marco Faggian"/><br /><sub><b>Marco Faggian</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=marcofaggian" title="Code">💻</a></td>
|
||||
<td align="center" valign="top" width="14.28%"><a href="http://nemchik.com/"><img src="https://avatars.githubusercontent.com/u/725456?v=4?s=100" width="100px;" alt="Eric Nemchik"/><br /><sub><b>Eric Nemchik</b></sub></a><br /><a href="https://github.com/sct/overseerr/commits?author=nemchik" title="Code">💻</a></td>
|
||||
|
||||
@@ -3,8 +3,8 @@ kubeVersion: ">=1.23.0-0"
|
||||
name: jellyseerr-chart
|
||||
description: Jellyseerr helm chart for Kubernetes
|
||||
type: application
|
||||
version: 2.5.0
|
||||
appVersion: "2.6.0"
|
||||
version: 2.4.0
|
||||
appVersion: "2.5.2"
|
||||
maintainers:
|
||||
- name: Jellyseerr
|
||||
url: https://github.com/Fallenbagel/jellyseerr
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# jellyseerr-chart
|
||||
|
||||
  
|
||||
  
|
||||
|
||||
Jellyseerr helm chart for Kubernetes
|
||||
|
||||
|
||||
@@ -142,14 +142,6 @@
|
||||
"token": "",
|
||||
"priority": 0
|
||||
}
|
||||
},
|
||||
"ntfy": {
|
||||
"enabled": false,
|
||||
"types": 0,
|
||||
"options": {
|
||||
"url": "",
|
||||
"topic": ""
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -37,8 +37,13 @@ docker run -d \
|
||||
-p 5055:5055 \
|
||||
-v /path/to/appdata/config:/app/config \
|
||||
--restart unless-stopped \
|
||||
fallenbagel/jellyseerr
|
||||
ghcr.io/fallenbagel/jellyseerr
|
||||
```
|
||||
:::tip
|
||||
If you are using emby, make sure to set the `JELLYFIN_TYPE` environment variable to `emby`.
|
||||
|
||||
`-e JELLYFIN_TYPE=emby`
|
||||
:::
|
||||
|
||||
To run the container as a specific user/group, you may optionally add `--user=[ user | user:group | uid | uid:gid | user:gid | uid:group ]` to the above command.
|
||||
|
||||
@@ -50,7 +55,7 @@ docker stop jellyseerr && docker rm Jellyseerr
|
||||
```
|
||||
Pull the latest image:
|
||||
```bash
|
||||
docker pull fallenbagel/jellyseerr
|
||||
docker pull ghcr.io/fallenbagel/jellyseerr
|
||||
```
|
||||
Finally, run the container with the same parameters originally used to create the container:
|
||||
```bash
|
||||
@@ -73,7 +78,7 @@ Define the `jellyseerr` service in your `compose.yaml` as follows:
|
||||
---
|
||||
services:
|
||||
jellyseerr:
|
||||
image: fallenbagel/jellyseerr:latest
|
||||
image: ghcr.io/fallenbagel/jellyseerr:latest
|
||||
container_name: jellyseerr
|
||||
environment:
|
||||
- LOG_LEVEL=debug
|
||||
@@ -85,6 +90,9 @@ services:
|
||||
- /path/to/appdata/config:/app/config
|
||||
restart: unless-stopped
|
||||
```
|
||||
:::tip
|
||||
If you are using emby, make sure to set the `JELLYFIN_TYPE` environment variable to `emby`.
|
||||
:::
|
||||
|
||||
Then, start all services defined in the Compose file:
|
||||
```bash
|
||||
@@ -113,7 +121,8 @@ You may alternatively use a third-party mechanism like [dockge](https://github.c
|
||||
2. Inside the **Community Applications** app store, search for **Jellyseerr**.
|
||||
3. Click the **Install Button**.
|
||||
4. On the following **Add Container** screen, make changes to the **Host Port** and **Host Path 1** \(Appdata\) as needed.
|
||||
5. Click apply and access "Jellyseerr" at your `<ServerIP:HostPort>` in a web browser.
|
||||
5. If you want to use emby, make sure to set the `JELLYFIN_TYPE` environment variable to `emby`. Otherwise, remove the variable.
|
||||
6. Click apply and access "Jellyseerr" at your `<ServerIP:HostPort>` in a web browser.
|
||||
|
||||
## Windows
|
||||
|
||||
@@ -137,7 +146,7 @@ Then, create and start the Jellyseerr container:
|
||||
<Tabs groupId="docker-methods" queryString>
|
||||
<TabItem value="docker-cli" label="Docker CLI">
|
||||
```bash
|
||||
docker run -d --name jellyseerr -e LOG_LEVEL=debug -e TZ=Asia/Tashkent -p 5055:5055 -v "jellyseerr-data:/app/config" --restart unless-stopped fallenbagel/jellyseerr:latest
|
||||
docker run -d --name jellyseerr -e LOG_LEVEL=debug -e TZ=Asia/Tashkent -p 5055:5055 -v "jellyseerr-data:/app/config" --restart unless-stopped ghcr.io/fallenbagel/jellyseerr:latest
|
||||
```
|
||||
|
||||
#### Updating:
|
||||
@@ -184,6 +193,12 @@ docker compose up -d
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
|
||||
:::tip
|
||||
If you are using a named volume, then you can safely **ignore** the warning about the `/app/config` folder being incorrectly mounted.
|
||||
|
||||
If you are using emby, make sure to set the `JELLYFIN_TYPE` environment variable to `emby`.
|
||||
:::
|
||||
|
||||
To access the files inside the volume created above, navigate to `\\wsl$\docker-desktop-data\version-pack-data\community\docker\volumes\jellyseerr-data\_data` using File Explorer.
|
||||
|
||||
:::info
|
||||
|
||||
@@ -146,26 +146,3 @@ In a PowerShell window:
|
||||
|
||||
If you can't get a response, then your server can't reach the TMDB API.
|
||||
This is usually due to a network configuration issue or a firewall blocking the connection.
|
||||
|
||||
## Account does not have admin privileges
|
||||
|
||||
If your admin account no longer has admin privileges, this is typically because your Jellyfin/Emby user ID has changed on the server side.
|
||||
|
||||
This can happen if you have a new installation of Jellyfin/Emby or if you have changed the user ID of your admin account.
|
||||
|
||||
### Solution: Reset admin access
|
||||
|
||||
1. Back up your `settings.json` file (located in your Jellyseerr data directory)
|
||||
2. Stop the Jellyseerr container/service
|
||||
3. Delete the `settings.json` file
|
||||
4. Start Jellyseerr again
|
||||
5. This will force the setup page to appear
|
||||
6. Go through the setup process with the same login details
|
||||
7. You can skip the services setup
|
||||
8. Once you reach the discover page, stop Jellyseerr
|
||||
9. Restore your backed-up `settings.json` file
|
||||
10. Start Jellyseerr again
|
||||
|
||||
This process should restore your admin privileges while preserving your settings.
|
||||
|
||||
If you still encounter issues, please reach out on our support channels.
|
||||
|
||||
@@ -78,12 +78,6 @@ Available media will still appear in search results, however, so it is possible
|
||||
|
||||
This setting is **disabled** by default.
|
||||
|
||||
## Hide Blacklisted Items
|
||||
|
||||
When enabled, media that has been blacklisted will not appear on the "Discover" home page, for all administrators. This can be useful to hide content that you don't want to see, such as content with specific tags or content that has been manually blacklisted when you have the "Manage Blacklist" permission.
|
||||
|
||||
This setting is **disabled** by default.
|
||||
|
||||
## Allow Partial Series Requests
|
||||
|
||||
When enabled, users will be able to submit requests for specific seasons of TV series. If disabled, users will only be able to submit requests for all unavailable seasons.
|
||||
|
||||
@@ -1399,32 +1399,6 @@ components:
|
||||
type: string
|
||||
token:
|
||||
type: string
|
||||
NtfySettings:
|
||||
type: object
|
||||
properties:
|
||||
enabled:
|
||||
type: boolean
|
||||
example: false
|
||||
types:
|
||||
type: number
|
||||
example: 2
|
||||
options:
|
||||
type: object
|
||||
properties:
|
||||
url:
|
||||
type: string
|
||||
topic:
|
||||
type: string
|
||||
authMethodUsernamePassword:
|
||||
type: boolean
|
||||
username:
|
||||
type: string
|
||||
password:
|
||||
type: string
|
||||
authMethodToken:
|
||||
type: boolean
|
||||
token:
|
||||
type: string
|
||||
LunaSeaSettings:
|
||||
type: object
|
||||
properties:
|
||||
@@ -1976,41 +1950,6 @@ components:
|
||||
properties:
|
||||
id:
|
||||
type: string
|
||||
Certification:
|
||||
type: object
|
||||
properties:
|
||||
certification:
|
||||
type: string
|
||||
example: 'PG-13'
|
||||
meaning:
|
||||
type: string
|
||||
example: 'Some material may be inappropriate for children under 13.'
|
||||
nullable: true
|
||||
order:
|
||||
type: number
|
||||
example: 3
|
||||
nullable: true
|
||||
required:
|
||||
- certification
|
||||
|
||||
CertificationResponse:
|
||||
type: object
|
||||
properties:
|
||||
certifications:
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/Certification'
|
||||
example:
|
||||
certifications:
|
||||
US:
|
||||
- certification: 'G'
|
||||
meaning: 'All ages admitted'
|
||||
order: 1
|
||||
- certification: 'PG'
|
||||
meaning: 'Some material may not be suitable for children under 10.'
|
||||
order: 2
|
||||
securitySchemes:
|
||||
cookieAuth:
|
||||
type: apiKey
|
||||
@@ -3310,52 +3249,6 @@ paths:
|
||||
responses:
|
||||
'204':
|
||||
description: Test notification attempted
|
||||
/settings/notifications/ntfy:
|
||||
get:
|
||||
summary: Get ntfy.sh notification settings
|
||||
description: Returns current ntfy.sh notification settings in a JSON object.
|
||||
tags:
|
||||
- settings
|
||||
responses:
|
||||
'200':
|
||||
description: Returned ntfy.sh settings
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/NtfySettings'
|
||||
post:
|
||||
summary: Update ntfy.sh notification settings
|
||||
description: Update ntfy.sh notification settings with the provided values.
|
||||
tags:
|
||||
- settings
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/NtfySettings'
|
||||
responses:
|
||||
'200':
|
||||
description: 'Values were sucessfully updated'
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/NtfySettings'
|
||||
/settings/notifications/ntfy/test:
|
||||
post:
|
||||
summary: Test ntfy.sh settings
|
||||
description: Sends a test notification to the ntfy.sh agent.
|
||||
tags:
|
||||
- settings
|
||||
requestBody:
|
||||
required: true
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/NtfySettings'
|
||||
responses:
|
||||
'204':
|
||||
description: Test notification attempted
|
||||
/settings/notifications/slack:
|
||||
get:
|
||||
summary: Get Slack notification settings
|
||||
@@ -5061,37 +4954,6 @@ paths:
|
||||
schema:
|
||||
type: string
|
||||
example: 8|9
|
||||
- in: query
|
||||
name: certification
|
||||
schema:
|
||||
type: string
|
||||
example: PG-13
|
||||
description: Exact certification to filter by (used when certificationMode is 'exact')
|
||||
- in: query
|
||||
name: certificationGte
|
||||
schema:
|
||||
type: string
|
||||
example: G
|
||||
description: Minimum certification to filter by (used when certificationMode is 'range')
|
||||
- in: query
|
||||
name: certificationLte
|
||||
schema:
|
||||
type: string
|
||||
example: PG-13
|
||||
description: Maximum certification to filter by (used when certificationMode is 'range')
|
||||
- in: query
|
||||
name: certificationCountry
|
||||
schema:
|
||||
type: string
|
||||
example: US
|
||||
description: Country code for the certification system (e.g., US, GB, CA)
|
||||
- in: query
|
||||
name: certificationMode
|
||||
schema:
|
||||
type: string
|
||||
enum: [exact, range]
|
||||
example: exact
|
||||
description: Determines whether to use exact certification matching or a certification range (internal use only, not sent to TMDB API)
|
||||
responses:
|
||||
'200':
|
||||
description: Results
|
||||
@@ -5386,37 +5248,6 @@ paths:
|
||||
schema:
|
||||
type: string
|
||||
example: 3|4
|
||||
- in: query
|
||||
name: certification
|
||||
schema:
|
||||
type: string
|
||||
example: TV-14
|
||||
description: Exact certification to filter by (used when certificationMode is 'exact')
|
||||
- in: query
|
||||
name: certificationGte
|
||||
schema:
|
||||
type: string
|
||||
example: TV-PG
|
||||
description: Minimum certification to filter by (used when certificationMode is 'range')
|
||||
- in: query
|
||||
name: certificationLte
|
||||
schema:
|
||||
type: string
|
||||
example: TV-MA
|
||||
description: Maximum certification to filter by (used when certificationMode is 'range')
|
||||
- in: query
|
||||
name: certificationCountry
|
||||
schema:
|
||||
type: string
|
||||
example: US
|
||||
description: Country code for the certification system (e.g., US, GB, CA)
|
||||
- in: query
|
||||
name: certificationMode
|
||||
schema:
|
||||
type: string
|
||||
enum: [exact, range]
|
||||
example: exact
|
||||
description: Determines whether to use exact certification matching or a certification range (internal use only, not sent to TMDB API)
|
||||
responses:
|
||||
'200':
|
||||
description: Results
|
||||
@@ -5867,13 +5698,6 @@ paths:
|
||||
type: number
|
||||
nullable: true
|
||||
example: 1
|
||||
- in: query
|
||||
name: mediaType
|
||||
schema:
|
||||
type: string
|
||||
enum: [movie, tv, all]
|
||||
nullable: true
|
||||
default: all
|
||||
responses:
|
||||
'200':
|
||||
description: Requests returned
|
||||
@@ -7397,64 +7221,6 @@ paths:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/WatchProviderDetails'
|
||||
/certifications/movie:
|
||||
get:
|
||||
summary: Get movie certifications
|
||||
description: Returns list of movie certifications from TMDB.
|
||||
tags:
|
||||
- other
|
||||
security:
|
||||
- cookieAuth: []
|
||||
- apiKey: []
|
||||
responses:
|
||||
'200':
|
||||
description: Movie certifications returned
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CertificationResponse'
|
||||
'500':
|
||||
description: Unable to retrieve movie certifications
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: number
|
||||
example: 500
|
||||
message:
|
||||
type: string
|
||||
example: Unable to retrieve movie certifications.
|
||||
/certifications/tv:
|
||||
get:
|
||||
summary: Get TV certifications
|
||||
description: Returns list of TV show certifications from TMDB.
|
||||
tags:
|
||||
- other
|
||||
security:
|
||||
- cookieAuth: []
|
||||
- apiKey: []
|
||||
responses:
|
||||
'200':
|
||||
description: TV certifications returned
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/CertificationResponse'
|
||||
'500':
|
||||
description: Unable to retrieve TV certifications
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: object
|
||||
properties:
|
||||
status:
|
||||
type: number
|
||||
example: 500
|
||||
message:
|
||||
type: string
|
||||
example: Unable to retrieve TV certifications.
|
||||
/overrideRule:
|
||||
get:
|
||||
summary: Get override rules
|
||||
|
||||
@@ -22,23 +22,6 @@ export interface JellyfinUserResponse {
|
||||
PrimaryImageTag?: string;
|
||||
}
|
||||
|
||||
export interface JellyfinDevice {
|
||||
Id: string;
|
||||
Name: string;
|
||||
LastUserName: string;
|
||||
AppName: string;
|
||||
AppVersion: string;
|
||||
LastUserId: string;
|
||||
DateLastActivity: string;
|
||||
Capabilities: Record<string, unknown>;
|
||||
}
|
||||
|
||||
export interface JellyfinDevicesResponse {
|
||||
Items: JellyfinDevice[];
|
||||
TotalRecordCount: number;
|
||||
StartIndex: number;
|
||||
}
|
||||
|
||||
export interface JellyfinLoginResponse {
|
||||
User: JellyfinUserResponse;
|
||||
AccessToken: string;
|
||||
|
||||
@@ -59,16 +59,6 @@ export const SortOptionsIterable = [
|
||||
|
||||
export type SortOptions = (typeof SortOptionsIterable)[number];
|
||||
|
||||
export interface TmdbCertificationResponse {
|
||||
certifications: {
|
||||
[country: string]: {
|
||||
certification: string;
|
||||
meaning?: string;
|
||||
order?: number;
|
||||
}[];
|
||||
};
|
||||
}
|
||||
|
||||
interface DiscoverMovieOptions {
|
||||
page?: number;
|
||||
includeAdult?: boolean;
|
||||
@@ -88,10 +78,6 @@ interface DiscoverMovieOptions {
|
||||
sortBy?: SortOptions;
|
||||
watchRegion?: string;
|
||||
watchProviders?: string;
|
||||
certification?: string;
|
||||
certificationGte?: string;
|
||||
certificationLte?: string;
|
||||
certificationCountry?: string;
|
||||
}
|
||||
|
||||
interface DiscoverTvOptions {
|
||||
@@ -114,10 +100,6 @@ interface DiscoverTvOptions {
|
||||
watchRegion?: string;
|
||||
watchProviders?: string;
|
||||
withStatus?: string; // Returning Series: 0 Planned: 1 In Production: 2 Ended: 3 Cancelled: 4 Pilot: 5
|
||||
certification?: string;
|
||||
certificationGte?: string;
|
||||
certificationLte?: string;
|
||||
certificationCountry?: string;
|
||||
}
|
||||
|
||||
class TheMovieDb extends ExternalAPI {
|
||||
@@ -495,10 +477,6 @@ class TheMovieDb extends ExternalAPI {
|
||||
voteCountLte,
|
||||
watchProviders,
|
||||
watchRegion,
|
||||
certification,
|
||||
certificationGte,
|
||||
certificationLte,
|
||||
certificationCountry,
|
||||
}: DiscoverMovieOptions = {}): Promise<TmdbSearchMovieResponse> => {
|
||||
try {
|
||||
const defaultFutureDate = new Date(
|
||||
@@ -545,10 +523,6 @@ class TheMovieDb extends ExternalAPI {
|
||||
'vote_count.lte': voteCountLte,
|
||||
watch_region: watchRegion,
|
||||
with_watch_providers: watchProviders,
|
||||
certification: certification,
|
||||
'certification.gte': certificationGte,
|
||||
'certification.lte': certificationLte,
|
||||
certification_country: certificationCountry,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -578,10 +552,6 @@ class TheMovieDb extends ExternalAPI {
|
||||
watchProviders,
|
||||
watchRegion,
|
||||
withStatus,
|
||||
certification,
|
||||
certificationGte,
|
||||
certificationLte,
|
||||
certificationCountry,
|
||||
}: DiscoverTvOptions = {}): Promise<TmdbSearchTvResponse> => {
|
||||
try {
|
||||
const defaultFutureDate = new Date(
|
||||
@@ -629,10 +599,6 @@ class TheMovieDb extends ExternalAPI {
|
||||
with_watch_providers: watchProviders,
|
||||
watch_region: watchRegion,
|
||||
with_status: withStatus,
|
||||
certification: certification,
|
||||
'certification.gte': certificationGte,
|
||||
'certification.lte': certificationLte,
|
||||
certification_country: certificationCountry,
|
||||
},
|
||||
});
|
||||
|
||||
@@ -1021,35 +987,6 @@ class TheMovieDb extends ExternalAPI {
|
||||
}
|
||||
}
|
||||
|
||||
public getMovieCertifications =
|
||||
async (): Promise<TmdbCertificationResponse> => {
|
||||
try {
|
||||
const data = await this.get<TmdbCertificationResponse>(
|
||||
'/certification/movie/list',
|
||||
{},
|
||||
604800 // 7 days
|
||||
);
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch movie certifications: ${e}`);
|
||||
}
|
||||
};
|
||||
|
||||
public getTvCertifications = async (): Promise<TmdbCertificationResponse> => {
|
||||
try {
|
||||
const data = await this.get<TmdbCertificationResponse>(
|
||||
'/certification/tv/list',
|
||||
{},
|
||||
604800 // 7 days
|
||||
);
|
||||
|
||||
return data;
|
||||
} catch (e) {
|
||||
throw new Error(`[TMDB] Failed to fetch TV certifications: ${e.message}`);
|
||||
}
|
||||
};
|
||||
|
||||
public async getKeywordDetails({
|
||||
keywordId,
|
||||
}: {
|
||||
|
||||
@@ -3,10 +3,10 @@ import dataSource from '@server/datasource';
|
||||
import Media from '@server/entity/Media';
|
||||
import { User } from '@server/entity/User';
|
||||
import type { BlacklistItem } from '@server/interfaces/api/blacklistInterfaces';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import type { EntityManager } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
Index,
|
||||
JoinColumn,
|
||||
@@ -47,7 +47,7 @@ export class Blacklist implements BlacklistItem {
|
||||
@Column({ nullable: true, type: 'varchar' })
|
||||
public blacklistedTags?: string;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
constructor(init?: Partial<Blacklist>) {
|
||||
|
||||
@@ -2,8 +2,13 @@ import type { DiscoverSliderType } from '@server/constants/discover';
|
||||
import { defaultSliders } from '@server/constants/discover';
|
||||
import { getRepository } from '@server/datasource';
|
||||
import logger from '@server/logger';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
|
||||
@Entity()
|
||||
class DiscoverSlider {
|
||||
@@ -50,14 +55,10 @@ class DiscoverSlider {
|
||||
@Column({ nullable: true })
|
||||
public data?: string;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
constructor(init?: Partial<DiscoverSlider>) {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
import type { IssueType } from '@server/constants/issue';
|
||||
import { IssueStatus } from '@server/constants/issue';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import {
|
||||
AfterLoad,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import IssueComment from './IssueComment';
|
||||
import Media from './Media';
|
||||
@@ -55,21 +55,12 @@ class Issue {
|
||||
})
|
||||
public comments: IssueComment[];
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
@AfterLoad()
|
||||
sortComments() {
|
||||
this.comments?.sort((a, b) => a.id - b.id);
|
||||
}
|
||||
|
||||
constructor(init?: Partial<Issue>) {
|
||||
Object.assign(this, init);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,11 @@
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import Issue from './Issue';
|
||||
import { User } from './User';
|
||||
|
||||
@@ -22,14 +28,10 @@ class IssueComment {
|
||||
@Column({ type: 'text' })
|
||||
public message: string;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
constructor(init?: Partial<IssueComment>) {
|
||||
|
||||
@@ -15,11 +15,13 @@ import { getHostname } from '@server/utils/getHostname';
|
||||
import {
|
||||
AfterLoad,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
Index,
|
||||
OneToMany,
|
||||
OneToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import Issue from './Issue';
|
||||
import { MediaRequest } from './MediaRequest';
|
||||
@@ -126,14 +128,10 @@ class Media {
|
||||
@OneToOne(() => Blacklist, (blacklist) => blacklist.media)
|
||||
public blacklist: Promise<Blacklist>;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
/**
|
||||
|
||||
@@ -13,18 +13,18 @@ import notificationManager, { Notification } from '@server/lib/notifications';
|
||||
import { Permission } from '@server/lib/permissions';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
import logger from '@server/logger';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { truncate } from 'lodash';
|
||||
import {
|
||||
AfterInsert,
|
||||
AfterLoad,
|
||||
AfterUpdate,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
OneToMany,
|
||||
PrimaryGeneratedColumn,
|
||||
RelationCount,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import Media from './Media';
|
||||
import SeasonRequest from './SeasonRequest';
|
||||
@@ -535,14 +535,10 @@ export class MediaRequest {
|
||||
})
|
||||
public modifiedBy?: User;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
@Column({ type: 'varchar' })
|
||||
@@ -702,13 +698,6 @@ export class MediaRequest {
|
||||
}
|
||||
}
|
||||
|
||||
@AfterLoad()
|
||||
private sortSeasons() {
|
||||
if (Array.isArray(this.seasons)) {
|
||||
this.seasons.sort((a, b) => a.id - b.id);
|
||||
}
|
||||
}
|
||||
|
||||
static async sendNotification(
|
||||
entity: MediaRequest,
|
||||
media: Media,
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
|
||||
@Entity()
|
||||
class OverrideRule {
|
||||
@@ -33,14 +38,10 @@ class OverrideRule {
|
||||
@Column({ nullable: true })
|
||||
public tags?: string;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
constructor(init?: Partial<OverrideRule>) {
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import { MediaStatus } from '@server/constants/media';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import Media from './Media';
|
||||
|
||||
@Entity()
|
||||
@@ -22,14 +28,10 @@ class Season {
|
||||
})
|
||||
public media: Promise<Media>;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
constructor(init?: Partial<Season>) {
|
||||
|
||||
@@ -1,6 +1,12 @@
|
||||
import { MediaRequestStatus } from '@server/constants/media';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import { MediaRequest } from './MediaRequest';
|
||||
|
||||
@Entity()
|
||||
@@ -19,14 +25,10 @@ class SeasonRequest {
|
||||
})
|
||||
public request: MediaRequest;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
constructor(init?: Partial<SeasonRequest>) {
|
||||
|
||||
@@ -9,7 +9,6 @@ import { hasPermission, Permission } from '@server/lib/permissions';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
import logger from '@server/logger';
|
||||
import { AfterDate } from '@server/utils/dateHelpers';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import bcrypt from 'bcrypt';
|
||||
import { randomUUID } from 'crypto';
|
||||
import path from 'path';
|
||||
@@ -17,12 +16,14 @@ import { default as generatePassword } from 'secure-random-password';
|
||||
import {
|
||||
AfterLoad,
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
Not,
|
||||
OneToMany,
|
||||
OneToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
RelationCount,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import Issue from './Issue';
|
||||
import { MediaRequest } from './MediaRequest';
|
||||
@@ -137,14 +138,10 @@ export class User {
|
||||
@OneToMany(() => Issue, (issue) => issue.createdBy, { cascade: true })
|
||||
public createdIssues: Issue[];
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
public warnings: string[] = [];
|
||||
|
||||
@@ -1,5 +1,10 @@
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
} from 'typeorm';
|
||||
import { User } from './User';
|
||||
|
||||
@Entity()
|
||||
@@ -25,11 +30,7 @@ export class UserPushSubscription {
|
||||
@Column({ nullable: true })
|
||||
public userAgent: string;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
nullable: true,
|
||||
})
|
||||
@CreateDateColumn({ nullable: true })
|
||||
public createdAt: Date;
|
||||
|
||||
constructor(init?: Partial<UserPushSubscription>) {
|
||||
|
||||
@@ -5,14 +5,15 @@ import Media from '@server/entity/Media';
|
||||
import { User } from '@server/entity/User';
|
||||
import type { WatchlistItem } from '@server/interfaces/api/discoverInterfaces';
|
||||
import logger from '@server/logger';
|
||||
import { DbAwareColumn } from '@server/utils/DbColumnHelper';
|
||||
import {
|
||||
Column,
|
||||
CreateDateColumn,
|
||||
Entity,
|
||||
Index,
|
||||
ManyToOne,
|
||||
PrimaryGeneratedColumn,
|
||||
Unique,
|
||||
UpdateDateColumn,
|
||||
} from 'typeorm';
|
||||
import type { ZodNumber, ZodOptional, ZodString } from 'zod';
|
||||
|
||||
@@ -55,14 +56,10 @@ export class Watchlist implements WatchlistItem {
|
||||
})
|
||||
public media: Media;
|
||||
|
||||
@DbAwareColumn({ type: 'datetime', default: () => 'CURRENT_TIMESTAMP' })
|
||||
@CreateDateColumn()
|
||||
public createdAt: Date;
|
||||
|
||||
@DbAwareColumn({
|
||||
type: 'datetime',
|
||||
default: () => 'CURRENT_TIMESTAMP',
|
||||
onUpdate: 'CURRENT_TIMESTAMP',
|
||||
})
|
||||
@UpdateDateColumn()
|
||||
public updatedAt: Date;
|
||||
|
||||
constructor(init?: Partial<Watchlist>) {
|
||||
|
||||
@@ -10,7 +10,6 @@ import DiscordAgent from '@server/lib/notifications/agents/discord';
|
||||
import EmailAgent from '@server/lib/notifications/agents/email';
|
||||
import GotifyAgent from '@server/lib/notifications/agents/gotify';
|
||||
import LunaSeaAgent from '@server/lib/notifications/agents/lunasea';
|
||||
import NtfyAgent from '@server/lib/notifications/agents/ntfy';
|
||||
import PushbulletAgent from '@server/lib/notifications/agents/pushbullet';
|
||||
import PushoverAgent from '@server/lib/notifications/agents/pushover';
|
||||
import SlackAgent from '@server/lib/notifications/agents/slack';
|
||||
@@ -28,7 +27,6 @@ import { getAppVersion } from '@server/utils/appVersion';
|
||||
import createCustomProxyAgent from '@server/utils/customProxyAgent';
|
||||
import restartFlag from '@server/utils/restartFlag';
|
||||
import { getClientIp } from '@supercharge/request-ip';
|
||||
import axios from 'axios';
|
||||
import { TypeormStore } from 'connect-typeorm/out';
|
||||
import cookieParser from 'cookie-parser';
|
||||
import type { NextFunction, Request, Response } from 'express';
|
||||
@@ -36,16 +34,11 @@ import express from 'express';
|
||||
import * as OpenApiValidator from 'express-openapi-validator';
|
||||
import type { Store } from 'express-session';
|
||||
import session from 'express-session';
|
||||
import http from 'http';
|
||||
import https from 'https';
|
||||
import next from 'next';
|
||||
import path from 'path';
|
||||
import swaggerUi from 'swagger-ui-express';
|
||||
import YAML from 'yamljs';
|
||||
|
||||
axios.defaults.httpAgent = new http.Agent({ family: 4 });
|
||||
axios.defaults.httpsAgent = new https.Agent({ family: 4 });
|
||||
|
||||
const API_SPEC_PATH = path.join(__dirname, '../jellyseerr-api.yml');
|
||||
|
||||
logger.info(`Starting Jellyseerr version ${getAppVersion()}`);
|
||||
@@ -110,7 +103,6 @@ app
|
||||
new DiscordAgent(),
|
||||
new EmailAgent(),
|
||||
new GotifyAgent(),
|
||||
new NtfyAgent(),
|
||||
new LunaSeaAgent(),
|
||||
new PushbulletAgent(),
|
||||
new PushoverAgent(),
|
||||
|
||||
@@ -29,7 +29,6 @@ export interface PublicSettingsResponse {
|
||||
applicationTitle: string;
|
||||
applicationUrl: string;
|
||||
hideAvailable: boolean;
|
||||
hideBlacklisted: boolean;
|
||||
localLogin: boolean;
|
||||
mediaServerLogin: boolean;
|
||||
movie4kEnabled: boolean;
|
||||
@@ -46,7 +45,6 @@ export interface PublicSettingsResponse {
|
||||
locale: string;
|
||||
emailEnabled: boolean;
|
||||
newPlexLogin: boolean;
|
||||
youtubeUrl: string;
|
||||
}
|
||||
|
||||
export interface CacheItem {
|
||||
|
||||
@@ -142,9 +142,8 @@ class BlacklistedTagProcessor implements RunnableScanner<StatusBase> {
|
||||
blacklistEntry.blacklistedTags &&
|
||||
!blacklistEntry.blacklistedTags.includes(`,${keywordId},`)
|
||||
) {
|
||||
await blacklistRepository.update(blacklistEntry.id, {
|
||||
blacklistedTags: `${blacklistEntry.blacklistedTags}${keywordId},`,
|
||||
});
|
||||
blacklistEntry.blacklistedTags = `${blacklistEntry.blacklistedTags}${keywordId},`;
|
||||
await blacklistRepository.save(blacklistEntry);
|
||||
}
|
||||
} else {
|
||||
// Media wasn't previously blacklisted, add it to the blacklist
|
||||
|
||||
@@ -1,164 +0,0 @@
|
||||
import { IssueStatus, IssueTypeName } from '@server/constants/issue';
|
||||
import type { NotificationAgentNtfy } from '@server/lib/settings';
|
||||
import { getSettings } from '@server/lib/settings';
|
||||
import logger from '@server/logger';
|
||||
import axios from 'axios';
|
||||
import { hasNotificationType, Notification } from '..';
|
||||
import type { NotificationAgent, NotificationPayload } from './agent';
|
||||
import { BaseAgent } from './agent';
|
||||
|
||||
class NtfyAgent
|
||||
extends BaseAgent<NotificationAgentNtfy>
|
||||
implements NotificationAgent
|
||||
{
|
||||
protected getSettings(): NotificationAgentNtfy {
|
||||
if (this.settings) {
|
||||
return this.settings;
|
||||
}
|
||||
|
||||
const settings = getSettings();
|
||||
|
||||
return settings.notifications.agents.ntfy;
|
||||
}
|
||||
|
||||
private buildPayload(type: Notification, payload: NotificationPayload) {
|
||||
const { applicationUrl } = getSettings().main;
|
||||
|
||||
const topic = this.getSettings().options.topic;
|
||||
const priority = 3;
|
||||
|
||||
const title = payload.event
|
||||
? `${payload.event} - ${payload.subject}`
|
||||
: payload.subject;
|
||||
let message = payload.message ?? '';
|
||||
|
||||
if (payload.request) {
|
||||
message += `\n\nRequested By: ${payload.request.requestedBy.displayName}`;
|
||||
|
||||
let status = '';
|
||||
switch (type) {
|
||||
case Notification.MEDIA_PENDING:
|
||||
status = 'Pending Approval';
|
||||
break;
|
||||
case Notification.MEDIA_APPROVED:
|
||||
case Notification.MEDIA_AUTO_APPROVED:
|
||||
status = 'Processing';
|
||||
break;
|
||||
case Notification.MEDIA_AVAILABLE:
|
||||
status = 'Available';
|
||||
break;
|
||||
case Notification.MEDIA_DECLINED:
|
||||
status = 'Declined';
|
||||
break;
|
||||
case Notification.MEDIA_FAILED:
|
||||
status = 'Failed';
|
||||
break;
|
||||
}
|
||||
|
||||
if (status) {
|
||||
message += `\nRequest Status: ${status}`;
|
||||
}
|
||||
} else if (payload.comment) {
|
||||
message += `\nComment from ${payload.comment.user.displayName}:\n${payload.comment.message}`;
|
||||
} else if (payload.issue) {
|
||||
message += `\n\nReported By: ${payload.issue.createdBy.displayName}`;
|
||||
message += `\nIssue Type: ${IssueTypeName[payload.issue.issueType]}`;
|
||||
message += `\nIssue Status: ${
|
||||
payload.issue.status === IssueStatus.OPEN ? 'Open' : 'Resolved'
|
||||
}`;
|
||||
}
|
||||
|
||||
for (const extra of payload.extra ?? []) {
|
||||
message += `\n\n**${extra.name}**\n${extra.value}`;
|
||||
}
|
||||
|
||||
const attach = payload.image;
|
||||
|
||||
let click;
|
||||
if (applicationUrl && payload.media) {
|
||||
click = `${applicationUrl}/${payload.media.mediaType}/${payload.media.tmdbId}`;
|
||||
}
|
||||
|
||||
return {
|
||||
topic,
|
||||
priority,
|
||||
title,
|
||||
message,
|
||||
attach,
|
||||
click,
|
||||
};
|
||||
}
|
||||
|
||||
public shouldSend(): boolean {
|
||||
const settings = this.getSettings();
|
||||
|
||||
if (settings.enabled && settings.options.url && settings.options.topic) {
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
public async send(
|
||||
type: Notification,
|
||||
payload: NotificationPayload
|
||||
): Promise<boolean> {
|
||||
const settings = this.getSettings();
|
||||
|
||||
if (
|
||||
!payload.notifySystem ||
|
||||
!hasNotificationType(type, settings.types ?? 0)
|
||||
) {
|
||||
return true;
|
||||
}
|
||||
|
||||
logger.debug('Sending ntfy notification', {
|
||||
label: 'Notifications',
|
||||
type: Notification[type],
|
||||
subject: payload.subject,
|
||||
});
|
||||
|
||||
try {
|
||||
let authHeader;
|
||||
if (
|
||||
settings.options.authMethodUsernamePassword &&
|
||||
settings.options.username &&
|
||||
settings.options.password
|
||||
) {
|
||||
const encodedAuth = Buffer.from(
|
||||
`${settings.options.username}:${settings.options.password}`
|
||||
).toString('base64');
|
||||
|
||||
authHeader = `Basic ${encodedAuth}`;
|
||||
} else if (settings.options.authMethodToken) {
|
||||
authHeader = `Bearer ${settings.options.token}`;
|
||||
}
|
||||
|
||||
await axios.post(
|
||||
settings.options.url,
|
||||
this.buildPayload(type, payload),
|
||||
authHeader
|
||||
? {
|
||||
headers: {
|
||||
Authorization: authHeader,
|
||||
},
|
||||
}
|
||||
: undefined
|
||||
);
|
||||
|
||||
return true;
|
||||
} catch (e) {
|
||||
logger.error('Error sending ntfy notification', {
|
||||
label: 'Notifications',
|
||||
type: Notification[type],
|
||||
subject: payload.subject,
|
||||
errorMessage: e.message,
|
||||
response: e?.response?.data,
|
||||
});
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export default NtfyAgent;
|
||||
@@ -122,7 +122,6 @@ export interface MainSettings {
|
||||
tv: Quota;
|
||||
};
|
||||
hideAvailable: boolean;
|
||||
hideBlacklisted: boolean;
|
||||
localLogin: boolean;
|
||||
mediaServerLogin: boolean;
|
||||
newPlexLogin: boolean;
|
||||
@@ -135,7 +134,6 @@ export interface MainSettings {
|
||||
partialRequestsEnabled: boolean;
|
||||
enableSpecialEpisodes: boolean;
|
||||
locale: string;
|
||||
youtubeUrl: string;
|
||||
}
|
||||
|
||||
export interface NetworkSettings {
|
||||
@@ -152,7 +150,6 @@ interface FullPublicSettings extends PublicSettings {
|
||||
applicationTitle: string;
|
||||
applicationUrl: string;
|
||||
hideAvailable: boolean;
|
||||
hideBlacklisted: boolean;
|
||||
localLogin: boolean;
|
||||
mediaServerLogin: boolean;
|
||||
movie4kEnabled: boolean;
|
||||
@@ -173,7 +170,6 @@ interface FullPublicSettings extends PublicSettings {
|
||||
emailEnabled: boolean;
|
||||
userEmailRequired: boolean;
|
||||
newPlexLogin: boolean;
|
||||
youtubeUrl: string;
|
||||
}
|
||||
|
||||
export interface NotificationAgentConfig {
|
||||
@@ -263,23 +259,10 @@ export interface NotificationAgentGotify extends NotificationAgentConfig {
|
||||
};
|
||||
}
|
||||
|
||||
export interface NotificationAgentNtfy extends NotificationAgentConfig {
|
||||
options: {
|
||||
url: string;
|
||||
topic: string;
|
||||
authMethodUsernamePassword?: boolean;
|
||||
username?: string;
|
||||
password?: string;
|
||||
authMethodToken?: boolean;
|
||||
token?: string;
|
||||
};
|
||||
}
|
||||
|
||||
export enum NotificationAgentKey {
|
||||
DISCORD = 'discord',
|
||||
EMAIL = 'email',
|
||||
GOTIFY = 'gotify',
|
||||
NTFY = 'ntfy',
|
||||
PUSHBULLET = 'pushbullet',
|
||||
PUSHOVER = 'pushover',
|
||||
SLACK = 'slack',
|
||||
@@ -292,7 +275,6 @@ interface NotificationAgents {
|
||||
discord: NotificationAgentDiscord;
|
||||
email: NotificationAgentEmail;
|
||||
gotify: NotificationAgentGotify;
|
||||
ntfy: NotificationAgentNtfy;
|
||||
lunasea: NotificationAgentLunaSea;
|
||||
pushbullet: NotificationAgentPushbullet;
|
||||
pushover: NotificationAgentPushover;
|
||||
@@ -364,7 +346,6 @@ class Settings {
|
||||
tv: {},
|
||||
},
|
||||
hideAvailable: false,
|
||||
hideBlacklisted: false,
|
||||
localLogin: true,
|
||||
mediaServerLogin: true,
|
||||
newPlexLogin: true,
|
||||
@@ -377,7 +358,6 @@ class Settings {
|
||||
partialRequestsEnabled: true,
|
||||
enableSpecialEpisodes: false,
|
||||
locale: 'en',
|
||||
youtubeUrl: '',
|
||||
},
|
||||
plex: {
|
||||
name: '',
|
||||
@@ -491,14 +471,6 @@ class Settings {
|
||||
priority: 0,
|
||||
},
|
||||
},
|
||||
ntfy: {
|
||||
enabled: false,
|
||||
types: 0,
|
||||
options: {
|
||||
url: '',
|
||||
topic: '',
|
||||
},
|
||||
},
|
||||
},
|
||||
},
|
||||
jobs: {
|
||||
@@ -624,7 +596,6 @@ class Settings {
|
||||
applicationTitle: this.data.main.applicationTitle,
|
||||
applicationUrl: this.data.main.applicationUrl,
|
||||
hideAvailable: this.data.main.hideAvailable,
|
||||
hideBlacklisted: this.data.main.hideBlacklisted,
|
||||
localLogin: this.data.main.localLogin,
|
||||
mediaServerLogin: this.data.main.mediaServerLogin,
|
||||
jellyfinExternalHost: this.data.jellyfin.externalHostname,
|
||||
@@ -649,7 +620,6 @@ class Settings {
|
||||
userEmailRequired:
|
||||
this.data.notifications.agents.email.options.userEmailRequired,
|
||||
newPlexLogin: this.data.main.newPlexLogin,
|
||||
youtubeUrl: this.data.main.youtubeUrl,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -1,231 +0,0 @@
|
||||
import type { MigrationInterface, QueryRunner } from 'typeorm';
|
||||
|
||||
export class FixIssueTimestamps1746811308203 implements MigrationInterface {
|
||||
name = 'FixIssueTimestamps1746811308203';
|
||||
|
||||
public async up(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "watchlist"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "watchlist"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "override_rule"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "override_rule"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season_request"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season_request"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media_request"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media_request"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "user_push_subscription"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "user"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "user"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "blacklist"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue_comment"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue_comment"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "discover_slider"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "discover_slider"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP WITH TIME ZONE
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
}
|
||||
|
||||
public async down(queryRunner: QueryRunner): Promise<void> {
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "discover_slider"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "discover_slider"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue_comment"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue_comment"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "issue"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "blacklist"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "user"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "user"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "user_push_subscription"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media_request"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "media_request"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season_request"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "season_request"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "override_rule"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "override_rule"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "watchlist"
|
||||
ALTER COLUMN "updatedAt" TYPE TIMESTAMP
|
||||
USING "updatedAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
await queryRunner.query(`
|
||||
ALTER TABLE "watchlist"
|
||||
ALTER COLUMN "createdAt" TYPE TIMESTAMP
|
||||
USING "createdAt" AT TIME ZONE 'UTC'
|
||||
`);
|
||||
}
|
||||
}
|
||||
@@ -12,9 +12,7 @@ import logger from '@server/logger';
|
||||
import { isAuthenticated } from '@server/middleware/auth';
|
||||
import { checkAvatarChanged } from '@server/routes/avatarproxy';
|
||||
import { ApiError } from '@server/types/error';
|
||||
import { getAppVersion } from '@server/utils/appVersion';
|
||||
import { getHostname } from '@server/utils/getHostname';
|
||||
import axios from 'axios';
|
||||
import * as EmailValidator from 'email-validator';
|
||||
import { Router } from 'express';
|
||||
import net from 'net';
|
||||
@@ -513,9 +511,7 @@ authRoutes.post('/jellyfin', async (req, res, next) => {
|
||||
case ApiErrorCode.InvalidUrl:
|
||||
logger.error(
|
||||
`The provided ${
|
||||
settings.main.mediaServerType === MediaServerType.JELLYFIN
|
||||
? ServerType.JELLYFIN
|
||||
: ServerType.EMBY
|
||||
process.env.JELLYFIN_TYPE == 'emby' ? 'Emby' : 'Jellyfin'
|
||||
} is invalid or the server is not reachable.`,
|
||||
{
|
||||
label: 'Auth',
|
||||
@@ -718,79 +714,17 @@ authRoutes.post('/local', async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
authRoutes.post('/logout', async (req, res, next) => {
|
||||
try {
|
||||
const userId = req.session?.userId;
|
||||
if (!userId) {
|
||||
return res.status(200).json({ status: 'ok' });
|
||||
}
|
||||
|
||||
const settings = getSettings();
|
||||
const isJellyfinOrEmby =
|
||||
settings.main.mediaServerType === MediaServerType.JELLYFIN ||
|
||||
settings.main.mediaServerType === MediaServerType.EMBY;
|
||||
|
||||
if (isJellyfinOrEmby) {
|
||||
const user = await getRepository(User)
|
||||
.createQueryBuilder('user')
|
||||
.addSelect(['user.jellyfinUserId', 'user.jellyfinDeviceId'])
|
||||
.where('user.id = :id', { id: userId })
|
||||
.getOne();
|
||||
|
||||
if (user?.jellyfinUserId && user.jellyfinDeviceId) {
|
||||
try {
|
||||
const baseUrl = getHostname();
|
||||
try {
|
||||
await axios.delete(`${baseUrl}/Devices`, {
|
||||
params: { Id: user.jellyfinDeviceId },
|
||||
headers: {
|
||||
'X-Emby-Authorization': `MediaBrowser Client="Jellyseerr", Device="Jellyseerr", DeviceId="jellyseerr", Version="${getAppVersion()}", Token="${
|
||||
settings.jellyfin.apiKey
|
||||
}"`,
|
||||
},
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('Failed to delete Jellyfin device', {
|
||||
label: 'Auth',
|
||||
error: error instanceof Error ? error.message : 'Unknown error',
|
||||
userId: user.id,
|
||||
jellyfinUserId: user.jellyfinUserId,
|
||||
});
|
||||
}
|
||||
} catch (error) {
|
||||
logger.error('Failed to delete Jellyfin device', {
|
||||
label: 'Auth',
|
||||
error: error instanceof Error ? error.message : 'Unknown error',
|
||||
userId: user.id,
|
||||
jellyfinUserId: user.jellyfinUserId,
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
req.session?.destroy((err: Error | null) => {
|
||||
if (err) {
|
||||
logger.error('Failed to destroy session', {
|
||||
label: 'Auth',
|
||||
error: err.message,
|
||||
userId,
|
||||
});
|
||||
return next({ status: 500, message: 'Failed to destroy session.' });
|
||||
}
|
||||
logger.info('Successfully logged out user', {
|
||||
label: 'Auth',
|
||||
userId,
|
||||
authRoutes.post('/logout', (req, res, next) => {
|
||||
req.session?.destroy((err) => {
|
||||
if (err) {
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Something went wrong.',
|
||||
});
|
||||
res.status(200).json({ status: 'ok' });
|
||||
});
|
||||
} catch (error) {
|
||||
logger.error('Error during logout process', {
|
||||
label: 'Auth',
|
||||
error: error instanceof Error ? error.message : 'Unknown error',
|
||||
userId: req.session?.userId,
|
||||
});
|
||||
next({ status: 500, message: 'Error during logout process.' });
|
||||
}
|
||||
}
|
||||
|
||||
return res.status(200).json({ status: 'ok' });
|
||||
});
|
||||
});
|
||||
|
||||
authRoutes.post('/reset-password', async (req, res, next) => {
|
||||
|
||||
@@ -72,25 +72,16 @@ const QueryFilterOptions = z.object({
|
||||
watchProviders: z.coerce.string().optional(),
|
||||
watchRegion: z.coerce.string().optional(),
|
||||
status: z.coerce.string().optional(),
|
||||
certification: z.coerce.string().optional(),
|
||||
certificationGte: z.coerce.string().optional(),
|
||||
certificationLte: z.coerce.string().optional(),
|
||||
certificationCountry: z.coerce.string().optional(),
|
||||
certificationMode: z.enum(['exact', 'range']).optional(),
|
||||
});
|
||||
|
||||
export type FilterOptions = z.infer<typeof QueryFilterOptions>;
|
||||
const ApiQuerySchema = QueryFilterOptions.omit({
|
||||
certificationMode: true,
|
||||
});
|
||||
|
||||
discoverRoutes.get('/movies', async (req, res, next) => {
|
||||
const tmdb = createTmdbWithRegionLanguage(req.user);
|
||||
|
||||
try {
|
||||
const query = ApiQuerySchema.parse(req.query);
|
||||
const query = QueryFilterOptions.parse(req.query);
|
||||
const keywords = query.keywords;
|
||||
|
||||
const data = await tmdb.getDiscoverMovies({
|
||||
page: Number(query.page),
|
||||
sortBy: query.sortBy as SortOptions,
|
||||
@@ -113,10 +104,6 @@ discoverRoutes.get('/movies', async (req, res, next) => {
|
||||
voteCountLte: query.voteCountLte,
|
||||
watchProviders: query.watchProviders,
|
||||
watchRegion: query.watchRegion,
|
||||
certification: query.certification,
|
||||
certificationGte: query.certificationGte,
|
||||
certificationLte: query.certificationLte,
|
||||
certificationCountry: query.certificationCountry,
|
||||
});
|
||||
|
||||
const media = await Media.getRelatedMedia(
|
||||
@@ -375,7 +362,7 @@ discoverRoutes.get('/tv', async (req, res, next) => {
|
||||
const tmdb = createTmdbWithRegionLanguage(req.user);
|
||||
|
||||
try {
|
||||
const query = ApiQuerySchema.parse(req.query);
|
||||
const query = QueryFilterOptions.parse(req.query);
|
||||
const keywords = query.keywords;
|
||||
const data = await tmdb.getDiscoverTv({
|
||||
page: Number(query.page),
|
||||
@@ -400,10 +387,6 @@ discoverRoutes.get('/tv', async (req, res, next) => {
|
||||
watchProviders: query.watchProviders,
|
||||
watchRegion: query.watchRegion,
|
||||
withStatus: query.status,
|
||||
certification: query.certification,
|
||||
certificationGte: query.certificationGte,
|
||||
certificationLte: query.certificationLte,
|
||||
certificationCountry: query.certificationCountry,
|
||||
});
|
||||
|
||||
const media = await Media.getRelatedMedia(
|
||||
|
||||
@@ -3,36 +3,20 @@ import logger from '@server/logger';
|
||||
import { Router } from 'express';
|
||||
|
||||
const router = Router();
|
||||
|
||||
const tmdbImageProxy = new ImageProxy('tmdb', 'https://image.tmdb.org', {
|
||||
rateLimitOptions: {
|
||||
maxRequests: 20,
|
||||
maxRPS: 50,
|
||||
},
|
||||
});
|
||||
const tvdbImageProxy = new ImageProxy('tvdb', 'https://artworks.thetvdb.com', {
|
||||
rateLimitOptions: {
|
||||
maxRequests: 20,
|
||||
maxRPS: 50,
|
||||
},
|
||||
});
|
||||
|
||||
router.get('/:type/*', async (req, res) => {
|
||||
const imagePath = req.path.replace(/^\/\w+/, '');
|
||||
/**
|
||||
* Image Proxy
|
||||
*/
|
||||
router.get('/*', async (req, res) => {
|
||||
const imagePath = req.path.replace('/image', '');
|
||||
try {
|
||||
let imageData;
|
||||
if (req.params.type === 'tmdb') {
|
||||
imageData = await tmdbImageProxy.getImage(imagePath);
|
||||
} else if (req.params.type === 'tvdb') {
|
||||
imageData = await tvdbImageProxy.getImage(imagePath);
|
||||
} else {
|
||||
logger.error('Unsupported image type', {
|
||||
imagePath,
|
||||
type: req.params.type,
|
||||
});
|
||||
res.status(400).send('Unsupported image type');
|
||||
return;
|
||||
}
|
||||
const imageData = await tmdbImageProxy.getImage(imagePath);
|
||||
|
||||
res.writeHead(200, {
|
||||
'Content-Type': `image/${imageData.meta.extension}`,
|
||||
|
||||
@@ -401,48 +401,6 @@ router.get('/watchproviders/tv', async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
router.get(
|
||||
'/certifications/movie',
|
||||
isAuthenticated(),
|
||||
async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
try {
|
||||
const certifications = await tmdb.getMovieCertifications();
|
||||
|
||||
return res.status(200).json(certifications);
|
||||
} catch (e) {
|
||||
logger.error('Something went wrong retrieving movie certifications', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve movie certifications.',
|
||||
});
|
||||
}
|
||||
}
|
||||
);
|
||||
|
||||
router.get('/certifications/tv', isAuthenticated(), async (req, res, next) => {
|
||||
const tmdb = new TheMovieDb();
|
||||
|
||||
try {
|
||||
const certifications = await tmdb.getTvCertifications();
|
||||
|
||||
return res.status(200).json(certifications);
|
||||
} catch (e) {
|
||||
logger.debug('Something went wrong retrieving TV certifications', {
|
||||
label: 'API',
|
||||
errorMessage: e.message,
|
||||
});
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Unable to retrieve TV certifications.',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
router.get('/', (_req, res) => {
|
||||
return res.status(200).json({
|
||||
api: 'Jellyseerr API',
|
||||
|
||||
@@ -38,7 +38,6 @@ requestRoutes.get<Record<string, unknown>, RequestResultsResponse>(
|
||||
const requestedBy = req.query.requestedBy
|
||||
? Number(req.query.requestedBy)
|
||||
: null;
|
||||
const mediaType = (req.query.mediaType as MediaType | 'all') || 'all';
|
||||
|
||||
let statusFilter: MediaRequestStatus[];
|
||||
|
||||
@@ -160,21 +159,6 @@ requestRoutes.get<Record<string, unknown>, RequestResultsResponse>(
|
||||
});
|
||||
}
|
||||
|
||||
switch (mediaType) {
|
||||
case 'all':
|
||||
break;
|
||||
case 'movie':
|
||||
query = query.andWhere('request.type = :type', {
|
||||
type: MediaType.MOVIE,
|
||||
});
|
||||
break;
|
||||
case 'tv':
|
||||
query = query.andWhere('request.type = :type', {
|
||||
type: MediaType.TV,
|
||||
});
|
||||
break;
|
||||
}
|
||||
|
||||
const [requests, requestCount] = await query
|
||||
.orderBy(sortFilter, sortDirection)
|
||||
.take(pageSize)
|
||||
|
||||
@@ -5,7 +5,6 @@ import DiscordAgent from '@server/lib/notifications/agents/discord';
|
||||
import EmailAgent from '@server/lib/notifications/agents/email';
|
||||
import GotifyAgent from '@server/lib/notifications/agents/gotify';
|
||||
import LunaSeaAgent from '@server/lib/notifications/agents/lunasea';
|
||||
import NtfyAgent from '@server/lib/notifications/agents/ntfy';
|
||||
import PushbulletAgent from '@server/lib/notifications/agents/pushbullet';
|
||||
import PushoverAgent from '@server/lib/notifications/agents/pushover';
|
||||
import SlackAgent from '@server/lib/notifications/agents/slack';
|
||||
@@ -414,38 +413,4 @@ notificationRoutes.post('/gotify/test', async (req, res, next) => {
|
||||
}
|
||||
});
|
||||
|
||||
notificationRoutes.get('/ntfy', (_req, res) => {
|
||||
const settings = getSettings();
|
||||
|
||||
res.status(200).json(settings.notifications.agents.ntfy);
|
||||
});
|
||||
|
||||
notificationRoutes.post('/ntfy', async (req, res) => {
|
||||
const settings = getSettings();
|
||||
|
||||
settings.notifications.agents.ntfy = req.body;
|
||||
await settings.save();
|
||||
|
||||
res.status(200).json(settings.notifications.agents.ntfy);
|
||||
});
|
||||
|
||||
notificationRoutes.post('/ntfy/test', async (req, res, next) => {
|
||||
if (!req.user) {
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'User information is missing from the request.',
|
||||
});
|
||||
}
|
||||
|
||||
const ntfyAgent = new NtfyAgent(req.body);
|
||||
if (await sendTestNotification(ntfyAgent, req.user)) {
|
||||
return res.status(204).send();
|
||||
} else {
|
||||
return next({
|
||||
status: 500,
|
||||
message: 'Failed to send ntfy notification.',
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
export default notificationRoutes;
|
||||
|
||||
@@ -18,7 +18,6 @@ import { ApiError } from '@server/types/error';
|
||||
import { getHostname } from '@server/utils/getHostname';
|
||||
import { Router } from 'express';
|
||||
import net from 'net';
|
||||
import { Not } from 'typeorm';
|
||||
import { canMakePermissionsChange } from '.';
|
||||
|
||||
const isOwnProfile = (): Middleware => {
|
||||
@@ -126,9 +125,8 @@ userSettingsRoutes.post<
|
||||
}
|
||||
|
||||
const existingUser = await userRepository.findOne({
|
||||
where: { email: user.email, id: Not(user.id) },
|
||||
where: { email: user.email },
|
||||
});
|
||||
|
||||
if (oldEmail !== user.email && existingUser) {
|
||||
throw new ApiError(400, ApiErrorCode.InvalidEmail);
|
||||
}
|
||||
|
||||
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 50 50"><g fill="currentColor"><path d="M50.4 46.883c-9.168 0-17.023 7.214-17.023 16.387v.007l.09 71.37-2.303 16.992 31.313-8.319h77.841c9.17 0 17.024-7.224 17.024-16.396V63.27c0-9.17-7.85-16.383-17.016-16.387h-.008zm0 11.566h89.926c3.222.004 5.45 2.347 5.45 4.82v63.655c0 2.475-2.232 4.82-5.457 4.82h-79.54l-15.908 4.807.162-.938-.088-72.343c0-2.476 2.23-4.82 5.455-4.82z" transform="scale(.26458)"/><path d="M88.2 95.309H64.92c-1.601 0-2.91 1.236-2.91 2.746l.022 18.602-.435 2.506 6.231-1.881H88.2c1.6 0 2.91-1.236 2.91-2.747v-16.48c0-1.51-1.31-2.746-2.91-2.746z" transform="translate(-51.147 -81.516)"/><path d="M50.4 46.883c-9.168 0-17.023 7.214-17.023 16.387v.007l.09 71.37-2.303 16.992 31.313-8.319h77.841c9.17 0 17.024-7.224 17.024-16.396V63.27c0-9.17-7.85-16.383-17.016-16.387h-.008zm0 11.566h89.926c3.222.004 5.45 2.347 5.45 4.82v63.655c0 2.475-2.232 4.82-5.457 4.82h-79.54l-15.908 4.807.162-.938-.088-72.343c0-2.476 2.23-4.82 5.455-4.82z" transform="scale(.26458)"/><path d="M62.57 116.77v-1.312l3.28-1.459q.159-.068.306-.102.158-.045.283-.068l.271-.022v-.09q-.136-.012-.271-.046-.125-.023-.283-.057-.147-.045-.306-.113l-3.28-1.459v-1.323l5.068 2.319v1.413z" transform="matrix(1.45366 0 0 1.72815 -75.122 -171.953)"/><path d="M62.309 110.31v1.903l3.437 1.53.022.007-.022.008-3.437 1.53v1.892l.37-.17 5.221-2.39v-1.75zm.525.817 4.541 2.08v1.076l-4.541 2.078v-.732l3.12-1.389.003-.002a1.56 1.56 0 0 1 .258-.086h.006l.008-.002c.094-.027.176-.047.246-.06l.498-.041v-.574l-.24-.02a1.411 1.411 0 0 1-.231-.04l-.008-.001-.008-.002a9.077 9.077 0 0 1-.263-.053 2.781 2.781 0 0 1-.266-.097l-.004-.002-3.119-1.39z" transform="matrix(1.45366 0 0 1.72815 -75.122 -171.953)"/><path d="M69.171 117.754h5.43v1.278h-5.43Z" transform="matrix(1.44935 0 0 1.66414 -74.104 -166.906)"/><path d="M68.908 117.492v1.802h5.955v-1.802zm.526.524h4.904v.754h-4.904z" transform="matrix(1.44935 0 0 1.66414 -74.104 -166.906)"/></g></svg>
|
||||
|
Before Width: | Height: | Size: 1.9 KiB |
@@ -6,7 +6,7 @@ const imageLoader: ImageLoader = ({ src }) => src;
|
||||
|
||||
export type CachedImageProps = ImageProps & {
|
||||
src: string;
|
||||
type: 'tmdb' | 'avatar' | 'tvdb';
|
||||
type: 'tmdb' | 'avatar';
|
||||
};
|
||||
|
||||
/**
|
||||
@@ -22,15 +22,7 @@ const CachedImage = ({ src, type, ...props }: CachedImageProps) => {
|
||||
// tmdb stuff
|
||||
imageUrl =
|
||||
currentSettings.cacheImages && !src.startsWith('/')
|
||||
? src.replace(/^https:\/\/image\.tmdb\.org\//, '/imageproxy/tmdb/')
|
||||
: src;
|
||||
} else if (type === 'tvdb') {
|
||||
imageUrl =
|
||||
currentSettings.cacheImages && !src.startsWith('/')
|
||||
? src.replace(
|
||||
/^https:\/\/artworks\.thetvdb\.com\//,
|
||||
'/imageproxy/tvdb/'
|
||||
)
|
||||
? src.replace(/^https:\/\/image\.tmdb\.org\//, '/imageproxy/')
|
||||
: src;
|
||||
} else if (type === 'avatar') {
|
||||
// jellyfin avatar (if any)
|
||||
|
||||
@@ -85,7 +85,7 @@ const DiscoverMovies = () => {
|
||||
id="sortBy"
|
||||
name="sortBy"
|
||||
className="rounded-r-only"
|
||||
value={preparedFilters.sortBy || SortOptions.PopularityDesc}
|
||||
value={preparedFilters.sortBy}
|
||||
onChange={(e) => updateQueryParams('sortBy', e.target.value)}
|
||||
>
|
||||
<option value={SortOptions.PopularityDesc}>
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import CachedImage from '@app/components/Common/CachedImage';
|
||||
import Header from '@app/components/Common/Header';
|
||||
import ListView from '@app/components/Common/ListView';
|
||||
import PageTitle from '@app/components/Common/PageTitle';
|
||||
@@ -8,6 +7,7 @@ import Error from '@app/pages/_error';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import type { TvNetwork } from '@server/models/common';
|
||||
import type { TvResult } from '@server/models/Search';
|
||||
import Image from 'next/image';
|
||||
import { useRouter } from 'next/router';
|
||||
import { useIntl } from 'react-intl';
|
||||
|
||||
@@ -49,8 +49,7 @@ const DiscoverTvNetwork = () => {
|
||||
<Header>
|
||||
{firstResultData?.network.logoPath ? (
|
||||
<div className="relative mb-6 flex h-24 justify-center sm:h-32">
|
||||
<CachedImage
|
||||
type="tmdb"
|
||||
<Image
|
||||
src={`https://image.tmdb.org/t/p/w780_filter(duotone,ffffff,bababa)${firstResultData.network.logoPath}`}
|
||||
alt={firstResultData.network.name}
|
||||
className="object-contain"
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import CachedImage from '@app/components/Common/CachedImage';
|
||||
import Header from '@app/components/Common/Header';
|
||||
import ListView from '@app/components/Common/ListView';
|
||||
import PageTitle from '@app/components/Common/PageTitle';
|
||||
@@ -8,6 +7,7 @@ import Error from '@app/pages/_error';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import type { ProductionCompany } from '@server/models/common';
|
||||
import type { MovieResult } from '@server/models/Search';
|
||||
import Image from 'next/image';
|
||||
import { useRouter } from 'next/router';
|
||||
import { useIntl } from 'react-intl';
|
||||
|
||||
@@ -49,8 +49,7 @@ const DiscoverMovieStudio = () => {
|
||||
<Header>
|
||||
{firstResultData?.studio.logoPath ? (
|
||||
<div className="relative mb-6 flex h-24 justify-center sm:h-32">
|
||||
<CachedImage
|
||||
type="tmdb"
|
||||
<Image
|
||||
src={`https://image.tmdb.org/t/p/w780_filter(duotone,ffffff,bababa)${firstResultData.studio.logoPath}`}
|
||||
alt={firstResultData.studio.name}
|
||||
className="object-contain"
|
||||
|
||||
@@ -83,7 +83,7 @@ const DiscoverTv = () => {
|
||||
id="sortBy"
|
||||
name="sortBy"
|
||||
className="rounded-r-only"
|
||||
value={preparedFilters.sortBy || SortOptions.PopularityDesc}
|
||||
value={preparedFilters.sortBy}
|
||||
onChange={(e) => updateQueryParams('sortBy', e.target.value)}
|
||||
>
|
||||
<option value={SortOptions.PopularityDesc}>
|
||||
|
||||
@@ -9,7 +9,6 @@ import {
|
||||
GenreSelector,
|
||||
KeywordSelector,
|
||||
StatusSelector,
|
||||
USCertificationSelector,
|
||||
WatchProviderSelector,
|
||||
} from '@app/components/Selector';
|
||||
import useSettings from '@app/hooks/useSettings';
|
||||
@@ -43,7 +42,6 @@ const messages = defineMessages('components.Discover.FilterSlideover', {
|
||||
streamingservices: 'Streaming Services',
|
||||
voteCount: 'Number of votes between {minValue} and {maxValue}',
|
||||
status: 'Status',
|
||||
certification: 'Content Rating',
|
||||
});
|
||||
|
||||
type FilterSlideoverProps = {
|
||||
@@ -192,16 +190,6 @@ const FilterSlideover = ({
|
||||
updateQueryParams('language', value);
|
||||
}}
|
||||
/>
|
||||
<span className="text-lg font-semibold">
|
||||
{intl.formatMessage(messages.certification)}
|
||||
</span>
|
||||
<USCertificationSelector
|
||||
type={type}
|
||||
certification={currentFilters.certification}
|
||||
onChange={(params) => {
|
||||
batchUpdateQueryParams(params);
|
||||
}}
|
||||
/>
|
||||
<span className="text-lg font-semibold">
|
||||
{intl.formatMessage(messages.runtime)}
|
||||
</span>
|
||||
|
||||
@@ -109,11 +109,6 @@ export const QueryFilterOptions = z.object({
|
||||
watchRegion: z.string().optional(),
|
||||
watchProviders: z.string().optional(),
|
||||
status: z.string().optional(),
|
||||
certification: z.string().optional(),
|
||||
certificationGte: z.string().optional(),
|
||||
certificationLte: z.string().optional(),
|
||||
certificationCountry: z.string().optional(),
|
||||
certificationMode: z.enum(['exact', 'range']).optional(),
|
||||
});
|
||||
|
||||
export type FilterOptions = z.infer<typeof QueryFilterOptions>;
|
||||
@@ -197,30 +192,6 @@ export const prepareFilterValues = (
|
||||
filterValues.watchRegion = values.watchRegion;
|
||||
}
|
||||
|
||||
if (values.certification) {
|
||||
filterValues.certification = values.certification;
|
||||
}
|
||||
|
||||
if (values.certificationGte) {
|
||||
filterValues.certificationGte = values.certificationGte;
|
||||
}
|
||||
|
||||
if (values.certificationLte) {
|
||||
filterValues.certificationLte = values.certificationLte;
|
||||
}
|
||||
|
||||
if (values.certificationCountry) {
|
||||
filterValues.certificationCountry = values.certificationCountry;
|
||||
}
|
||||
|
||||
if (values.certificationMode) {
|
||||
filterValues.certificationMode = values.certificationMode;
|
||||
} else if (values.certification) {
|
||||
filterValues.certificationMode = 'exact';
|
||||
} else if (values.certificationGte || values.certificationLte) {
|
||||
filterValues.certificationMode = 'range';
|
||||
}
|
||||
|
||||
return filterValues;
|
||||
};
|
||||
|
||||
@@ -252,20 +223,6 @@ export const countActiveFilters = (filterValues: FilterOptions): number => {
|
||||
delete clonedFilters.watchRegion;
|
||||
}
|
||||
|
||||
if (
|
||||
clonedFilters.certification ||
|
||||
clonedFilters.certificationGte ||
|
||||
clonedFilters.certificationLte ||
|
||||
clonedFilters.certificationCountry
|
||||
) {
|
||||
totalCount += 1;
|
||||
delete clonedFilters.certification;
|
||||
delete clonedFilters.certificationGte;
|
||||
delete clonedFilters.certificationLte;
|
||||
delete clonedFilters.certificationCountry;
|
||||
}
|
||||
|
||||
delete clonedFilters.certificationMode;
|
||||
totalCount += Object.keys(clonedFilters).length;
|
||||
|
||||
return totalCount;
|
||||
|
||||
@@ -2,7 +2,6 @@ import Button from '@app/components/Common/Button';
|
||||
import CachedImage from '@app/components/Common/CachedImage';
|
||||
import Modal from '@app/components/Common/Modal';
|
||||
import { Permission, useUser } from '@app/hooks/useUser';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { Menu, Transition } from '@headlessui/react';
|
||||
import { EllipsisVerticalIcon } from '@heroicons/react/24/solid';
|
||||
@@ -208,13 +207,13 @@ const IssueComment = ({
|
||||
type="button"
|
||||
onClick={() => setIsEditing(false)}
|
||||
>
|
||||
{intl.formatMessage(globalMessages.cancel)}
|
||||
Cancel
|
||||
</Button>
|
||||
<Button
|
||||
buttonType="primary"
|
||||
disabled={!isValid || isSubmitting}
|
||||
>
|
||||
{intl.formatMessage(globalMessages.save)}
|
||||
Save Changes
|
||||
</Button>
|
||||
</div>
|
||||
</Form>
|
||||
@@ -223,10 +222,7 @@ const IssueComment = ({
|
||||
</Formik>
|
||||
) : (
|
||||
<div className="prose w-full max-w-full">
|
||||
<ReactMarkdown
|
||||
skipHtml
|
||||
allowedElements={['p', 'em', 'strong', 'ul', 'ol', 'li']}
|
||||
>
|
||||
<ReactMarkdown skipHtml allowedElements={['p', 'em', 'strong']}>
|
||||
{comment.message}
|
||||
</ReactMarkdown>
|
||||
</div>
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
import CachedImage from '@app/components/Common/CachedImage';
|
||||
import TitleCard from '@app/components/TitleCard';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { ArrowRightCircleIcon } from '@heroicons/react/24/solid';
|
||||
import Image from 'next/image';
|
||||
import Link from 'next/link';
|
||||
import { useState } from 'react';
|
||||
import { useInView } from 'react-intersection-observer';
|
||||
@@ -60,8 +60,7 @@ const ShowMoreCard = ({ url, posters }: ShowMoreCardProps) => {
|
||||
<div className="relative z-10 grid h-full w-full grid-cols-2 items-center justify-center gap-2 opacity-30">
|
||||
{posters[0] && (
|
||||
<div className="">
|
||||
<CachedImage
|
||||
type="tmdb"
|
||||
<Image
|
||||
src={`https://image.tmdb.org/t/p/w300_and_h450_face${posters[0]}`}
|
||||
alt=""
|
||||
className="rounded-md"
|
||||
@@ -72,8 +71,7 @@ const ShowMoreCard = ({ url, posters }: ShowMoreCardProps) => {
|
||||
)}
|
||||
{posters[1] && (
|
||||
<div className="">
|
||||
<CachedImage
|
||||
type="tmdb"
|
||||
<Image
|
||||
src={`https://image.tmdb.org/t/p/w300_and_h450_face${posters[1]}`}
|
||||
alt=""
|
||||
className="rounded-md"
|
||||
@@ -84,8 +82,7 @@ const ShowMoreCard = ({ url, posters }: ShowMoreCardProps) => {
|
||||
)}
|
||||
{posters[2] && (
|
||||
<div className="">
|
||||
<CachedImage
|
||||
type="tmdb"
|
||||
<Image
|
||||
src={`https://image.tmdb.org/t/p/w300_and_h450_face${posters[2]}`}
|
||||
alt=""
|
||||
className="rounded-md"
|
||||
@@ -96,8 +93,7 @@ const ShowMoreCard = ({ url, posters }: ShowMoreCardProps) => {
|
||||
)}
|
||||
{posters[3] && (
|
||||
<div className="">
|
||||
<CachedImage
|
||||
type="tmdb"
|
||||
<Image
|
||||
src={`https://image.tmdb.org/t/p/w300_and_h450_face${posters[3]}`}
|
||||
alt=""
|
||||
className="rounded-md"
|
||||
|
||||
@@ -210,16 +210,10 @@ const MovieDetails = ({ movie }: MovieDetailsProps) => {
|
||||
svg: <PlayIcon />,
|
||||
});
|
||||
}
|
||||
|
||||
const trailerVideo = data.relatedVideos
|
||||
const trailerUrl = data.relatedVideos
|
||||
?.filter((r) => r.type === 'Trailer')
|
||||
.sort((a, b) => a.size - b.size)
|
||||
.pop();
|
||||
const trailerUrl =
|
||||
trailerVideo?.site === 'YouTube' &&
|
||||
settings.currentSettings.youtubeUrl != ''
|
||||
? `${settings.currentSettings.youtubeUrl}${trailerVideo?.key}`
|
||||
: trailerVideo?.url;
|
||||
.pop()?.url;
|
||||
|
||||
if (trailerUrl) {
|
||||
mediaLinks.push({
|
||||
|
||||
@@ -7,7 +7,6 @@ import TitleCard from '@app/components/TitleCard';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import Error from '@app/pages/_error';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { CircleStackIcon } from '@heroicons/react/24/solid';
|
||||
import type { PersonCombinedCreditsResponse } from '@server/interfaces/api/personInterfaces';
|
||||
import type { PersonDetails as PersonDetailsType } from '@server/models/Person';
|
||||
import { groupBy } from 'lodash';
|
||||
@@ -26,12 +25,9 @@ const messages = defineMessages('components.PersonDetails', {
|
||||
ascharacter: 'as {character}',
|
||||
});
|
||||
|
||||
type MediaType = 'all' | 'movie' | 'tv';
|
||||
|
||||
const PersonDetails = () => {
|
||||
const intl = useIntl();
|
||||
const router = useRouter();
|
||||
const [currentMediaType, setCurrentMediaType] = useState<string>('all');
|
||||
const { data, error } = useSWR<PersonDetailsType>(
|
||||
`/api/v1/person/${router.query.personId}`
|
||||
);
|
||||
@@ -43,11 +39,7 @@ const PersonDetails = () => {
|
||||
);
|
||||
|
||||
const sortedCast = useMemo(() => {
|
||||
const filtered = (combinedCredits?.cast ?? []).filter(
|
||||
(media) =>
|
||||
currentMediaType === 'all' || media.mediaType === currentMediaType
|
||||
);
|
||||
const grouped = groupBy(filtered, 'id');
|
||||
const grouped = groupBy(combinedCredits?.cast ?? [], 'id');
|
||||
|
||||
const reduced = Object.values(grouped).map((objs) => ({
|
||||
...objs[0],
|
||||
@@ -62,14 +54,10 @@ const PersonDetails = () => {
|
||||
}
|
||||
return 1;
|
||||
});
|
||||
}, [combinedCredits, currentMediaType]);
|
||||
}, [combinedCredits]);
|
||||
|
||||
const sortedCrew = useMemo(() => {
|
||||
const filtered = (combinedCredits?.crew ?? []).filter(
|
||||
(media) =>
|
||||
currentMediaType === 'all' || media.mediaType === currentMediaType
|
||||
);
|
||||
const grouped = groupBy(filtered, 'id');
|
||||
const grouped = groupBy(combinedCredits?.crew ?? [], 'id');
|
||||
|
||||
const reduced = Object.values(grouped).map((objs) => ({
|
||||
...objs[0],
|
||||
@@ -84,7 +72,7 @@ const PersonDetails = () => {
|
||||
}
|
||||
return 1;
|
||||
});
|
||||
}, [combinedCredits, currentMediaType]);
|
||||
}, [combinedCredits]);
|
||||
|
||||
if (!data && !error) {
|
||||
return <LoadingSpinner />;
|
||||
@@ -134,29 +122,6 @@ const PersonDetails = () => {
|
||||
|
||||
const isLoading = !combinedCredits && !errorCombinedCredits;
|
||||
|
||||
const mediaTypePicker = (
|
||||
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg: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">
|
||||
<CircleStackIcon className="h-6 w-6" />
|
||||
</span>
|
||||
<select
|
||||
id="mediaType"
|
||||
name="mediaType"
|
||||
onChange={(e) => {
|
||||
setCurrentMediaType(e.target.value as MediaType);
|
||||
}}
|
||||
value={currentMediaType}
|
||||
className="rounded-r-only"
|
||||
>
|
||||
<option value="all">{intl.formatMessage(globalMessages.all)}</option>
|
||||
<option value="movie">
|
||||
{intl.formatMessage(globalMessages.movies)}
|
||||
</option>
|
||||
<option value="tv">{intl.formatMessage(globalMessages.tvshows)}</option>
|
||||
</select>
|
||||
</div>
|
||||
);
|
||||
|
||||
const cast = (sortedCast ?? []).length > 0 && (
|
||||
<>
|
||||
<div className="slider-header">
|
||||
@@ -270,13 +235,8 @@ const PersonDetails = () => {
|
||||
/>
|
||||
</div>
|
||||
)}
|
||||
<div className="w-full text-center text-gray-300 lg:text-left">
|
||||
<div className="flex w-full items-center justify-center lg:justify-between">
|
||||
<h1 className="text-3xl text-white lg:text-4xl">{data.name}</h1>
|
||||
<div className="hidden flex-shrink-0 lg:block">
|
||||
{mediaTypePicker}
|
||||
</div>
|
||||
</div>
|
||||
<div className="text-center text-gray-300 lg:text-left">
|
||||
<h1 className="text-3xl text-white lg:text-4xl">{data.name}</h1>
|
||||
<div className="mt-1 mb-2 space-y-1 text-xs text-white sm:text-sm lg:text-base">
|
||||
<div>{personAttributes.join(' | ')}</div>
|
||||
{(data.alsoKnownAs ?? []).length > 0 && (
|
||||
@@ -314,7 +274,6 @@ const PersonDetails = () => {
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="lg:hidden">{mediaTypePicker}</div>
|
||||
{data.knownForDepartment === 'Acting' ? [cast, crew] : [crew, cast]}
|
||||
{isLoading && <LoadingSpinner />}
|
||||
</>
|
||||
|
||||
@@ -14,7 +14,6 @@ import {
|
||||
Bars3BottomLeftIcon,
|
||||
ChevronLeftIcon,
|
||||
ChevronRightIcon,
|
||||
CircleStackIcon,
|
||||
FunnelIcon,
|
||||
} from '@heroicons/react/24/solid';
|
||||
import type { RequestResultsResponse } from '@server/interfaces/api/requestInterfaces';
|
||||
@@ -48,8 +47,6 @@ type Sort = 'added' | 'modified';
|
||||
|
||||
type SortDirection = 'asc' | 'desc';
|
||||
|
||||
type MediaType = 'all' | 'movie' | 'tv';
|
||||
|
||||
const RequestList = () => {
|
||||
const router = useRouter();
|
||||
const intl = useIntl();
|
||||
@@ -59,7 +56,6 @@ const RequestList = () => {
|
||||
const { user: currentUser } = useUser();
|
||||
const [currentFilter, setCurrentFilter] = useState<Filter>(Filter.PENDING);
|
||||
const [currentSort, setCurrentSort] = useState<Sort>('added');
|
||||
const [currentMediaType, setCurrentMediaType] = useState<string>('all');
|
||||
const [currentSortDirection, setCurrentSortDirection] =
|
||||
useState<SortDirection>('desc');
|
||||
const [currentPageSize, setCurrentPageSize] = useState<number>(10);
|
||||
@@ -75,7 +71,7 @@ const RequestList = () => {
|
||||
} = useSWR<RequestResultsResponse>(
|
||||
`/api/v1/request?take=${currentPageSize}&skip=${
|
||||
pageIndex * currentPageSize
|
||||
}&filter=${currentFilter}&mediaType=${currentMediaType}&sort=${currentSort}&sortDirection=${currentSortDirection}${
|
||||
}&filter=${currentFilter}&sort=${currentSort}&sortDirection=${currentSortDirection}${
|
||||
router.pathname.startsWith('/profile')
|
||||
? `&requestedBy=${currentUser?.id}`
|
||||
: router.query.userId
|
||||
@@ -111,19 +107,12 @@ const RequestList = () => {
|
||||
'rl-filter-settings',
|
||||
JSON.stringify({
|
||||
currentFilter,
|
||||
currentMediaType,
|
||||
currentSort,
|
||||
currentSortDirection,
|
||||
currentPageSize,
|
||||
})
|
||||
);
|
||||
}, [
|
||||
currentFilter,
|
||||
currentMediaType,
|
||||
currentSort,
|
||||
currentSortDirection,
|
||||
currentPageSize,
|
||||
]);
|
||||
}, [currentFilter, currentSort, currentSortDirection, currentPageSize]);
|
||||
|
||||
if (!data && !error) {
|
||||
return <LoadingSpinner />;
|
||||
@@ -163,36 +152,6 @@ const RequestList = () => {
|
||||
{intl.formatMessage(messages.requests)}
|
||||
</Header>
|
||||
<div className="mt-2 flex flex-grow flex-col sm:flex-row lg:flex-grow-0">
|
||||
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg: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">
|
||||
<CircleStackIcon className="h-6 w-6" />
|
||||
</span>
|
||||
<select
|
||||
id="mediaType"
|
||||
name="mediaType"
|
||||
onChange={(e) => {
|
||||
setCurrentMediaType(e.target.value as MediaType);
|
||||
router.push({
|
||||
pathname: router.pathname,
|
||||
query: router.query.userId
|
||||
? { userId: router.query.userId }
|
||||
: {},
|
||||
});
|
||||
}}
|
||||
value={currentMediaType}
|
||||
className="rounded-r-only"
|
||||
>
|
||||
<option value="all">
|
||||
{intl.formatMessage(globalMessages.all)}
|
||||
</option>
|
||||
<option value="movie">
|
||||
{intl.formatMessage(globalMessages.movies)}
|
||||
</option>
|
||||
<option value="tv">
|
||||
{intl.formatMessage(globalMessages.tvshows)}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
<div className="mb-2 flex flex-grow sm:mb-0 sm:mr-2 lg: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">
|
||||
<FunnelIcon className="h-6 w-6" />
|
||||
@@ -304,15 +263,11 @@ const RequestList = () => {
|
||||
<span className="text-2xl text-gray-400">
|
||||
{intl.formatMessage(globalMessages.noresults)}
|
||||
</span>
|
||||
{(currentFilter !== Filter.ALL ||
|
||||
currentMediaType !== Filter.ALL) && (
|
||||
{currentFilter !== Filter.ALL && (
|
||||
<div className="mt-4">
|
||||
<Button
|
||||
buttonType="primary"
|
||||
onClick={() => {
|
||||
setCurrentFilter(Filter.ALL);
|
||||
setCurrentMediaType(Filter.ALL);
|
||||
}}
|
||||
onClick={() => setCurrentFilter(Filter.ALL)}
|
||||
>
|
||||
{intl.formatMessage(messages.showallrequests)}
|
||||
</Button>
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
import Alert from '@app/components/Common/Alert';
|
||||
import CachedImage from '@app/components/Common/CachedImage';
|
||||
import Modal from '@app/components/Common/Modal';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import type { SonarrSeries } from '@server/api/servarr/sonarr';
|
||||
import Image from 'next/image';
|
||||
import { useIntl } from 'react-intl';
|
||||
import useSWR from 'swr';
|
||||
|
||||
@@ -89,8 +89,7 @@ const SearchByNameModal = ({
|
||||
} `}
|
||||
>
|
||||
<div className="relative flex w-24 flex-none items-center space-x-4 self-stretch">
|
||||
<CachedImage
|
||||
type="tvdb"
|
||||
<Image
|
||||
src={
|
||||
item.remotePoster ??
|
||||
'/images/jellyseerr_poster_not_found.png'
|
||||
|
||||
@@ -120,7 +120,7 @@ const TvRequestModal = ({
|
||||
languageProfileId: requestOverrides?.language,
|
||||
userId: requestOverrides?.user?.id,
|
||||
tags: requestOverrides?.tags,
|
||||
seasons: selectedSeasons.sort((a, b) => a - b),
|
||||
seasons: selectedSeasons,
|
||||
});
|
||||
|
||||
if (alsoApproveRequest) {
|
||||
@@ -202,8 +202,7 @@ const TvRequestModal = ({
|
||||
seasons: settings.currentSettings.partialRequestsEnabled
|
||||
? selectedSeasons.sort((a, b) => a - b)
|
||||
: getAllSeasons().filter(
|
||||
(season) =>
|
||||
!getAllRequestedSeasons().includes(season) && season !== 0
|
||||
(season) => !getAllRequestedSeasons().includes(season)
|
||||
),
|
||||
...overrideParams,
|
||||
});
|
||||
@@ -303,10 +302,8 @@ const TvRequestModal = ({
|
||||
}
|
||||
};
|
||||
|
||||
const unrequestedSeasons = getAllSeasons().filter((season) =>
|
||||
!settings.currentSettings.partialRequestsEnabled
|
||||
? !getAllRequestedSeasons().includes(season) && season !== 0
|
||||
: !getAllRequestedSeasons().includes(season)
|
||||
const unrequestedSeasons = getAllSeasons().filter(
|
||||
(season) => !getAllRequestedSeasons().includes(season)
|
||||
);
|
||||
|
||||
const toggleAllSeasons = (): void => {
|
||||
@@ -578,11 +575,7 @@ const TvRequestModal = ({
|
||||
(season) =>
|
||||
(!settings.currentSettings.enableSpecialEpisodes
|
||||
? season.seasonNumber !== 0
|
||||
: true) &&
|
||||
(!settings.currentSettings.partialRequestsEnabled
|
||||
? season.episodeCount !== 0 &&
|
||||
season.seasonNumber !== 0
|
||||
: season.episodeCount !== 0)
|
||||
: true) && season.episodeCount !== 0
|
||||
)
|
||||
.map((season) => {
|
||||
const seasonRequest = getSeasonRequest(
|
||||
|
||||
@@ -34,7 +34,7 @@ const Search = () => {
|
||||
{
|
||||
query: router.query.query,
|
||||
},
|
||||
{ hideAvailable: false, hideBlacklisted: false }
|
||||
{ hideAvailable: false }
|
||||
);
|
||||
|
||||
if (error) {
|
||||
|
||||
@@ -1,333 +0,0 @@
|
||||
import { SmallLoadingSpinner } from '@app/components/Common/LoadingSpinner';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import type { Region } from '@server/lib/settings';
|
||||
import React, { useCallback, useEffect, useState } from 'react';
|
||||
import { useIntl } from 'react-intl';
|
||||
import AsyncSelect from 'react-select/async';
|
||||
import useSWR from 'swr';
|
||||
|
||||
interface Certification {
|
||||
certification: string;
|
||||
meaning?: string;
|
||||
order?: number;
|
||||
}
|
||||
|
||||
interface CertificationResponse {
|
||||
certifications: {
|
||||
[country: string]: Certification[];
|
||||
};
|
||||
}
|
||||
|
||||
interface CertificationOption {
|
||||
value: string;
|
||||
label: string;
|
||||
certification?: string;
|
||||
}
|
||||
|
||||
interface CertificationSelectorProps {
|
||||
type: string;
|
||||
certificationCountry?: string;
|
||||
certification?: string;
|
||||
certificationGte?: string;
|
||||
certificationLte?: string;
|
||||
onChange: (params: {
|
||||
certificationCountry?: string;
|
||||
certification?: string;
|
||||
certificationGte?: string;
|
||||
certificationLte?: string;
|
||||
}) => void;
|
||||
showRange?: boolean;
|
||||
}
|
||||
|
||||
const messages = defineMessages('components.Selector.CertificationSelector', {
|
||||
selectCountry: 'Select a country',
|
||||
selectCertification: 'Select a certification',
|
||||
minRating: 'Minimum rating',
|
||||
maxRating: 'Maximum rating',
|
||||
noOptions: 'No options available',
|
||||
starttyping: 'Starting typing to search.',
|
||||
errorLoading: 'Failed to load certifications',
|
||||
});
|
||||
|
||||
const CertificationSelector: React.FC<CertificationSelectorProps> = ({
|
||||
type,
|
||||
certificationCountry,
|
||||
certification,
|
||||
certificationGte,
|
||||
certificationLte,
|
||||
showRange = false,
|
||||
onChange,
|
||||
}) => {
|
||||
const intl = useIntl();
|
||||
const [selectedCountry, setSelectedCountry] =
|
||||
useState<CertificationOption | null>(
|
||||
certificationCountry
|
||||
? { value: certificationCountry, label: certificationCountry }
|
||||
: null
|
||||
);
|
||||
const [selectedCertification, setSelectedCertification] =
|
||||
useState<CertificationOption | null>(null);
|
||||
const [selectedCertificationGte, setSelectedCertificationGte] =
|
||||
useState<CertificationOption | null>(null);
|
||||
const [selectedCertificationLte, setSelectedCertificationLte] =
|
||||
useState<CertificationOption | null>(null);
|
||||
|
||||
const {
|
||||
data: certificationData,
|
||||
error: certificationError,
|
||||
isLoading: certificationLoading,
|
||||
} = useSWR<CertificationResponse>(`/api/v1/certifications/${type}`);
|
||||
|
||||
const { data: regionsData } = useSWR<Region[]>('/api/v1/regions');
|
||||
|
||||
// Get the country name from its code
|
||||
const getCountryName = useCallback(
|
||||
(countryCode: string): string => {
|
||||
const region = regionsData?.find(
|
||||
(region) => region.iso_3166_1 === countryCode
|
||||
);
|
||||
return region?.name || countryCode;
|
||||
},
|
||||
[regionsData]
|
||||
);
|
||||
|
||||
useEffect(() => {
|
||||
if (certificationCountry && regionsData) {
|
||||
setSelectedCountry({
|
||||
value: certificationCountry,
|
||||
label: getCountryName(certificationCountry),
|
||||
});
|
||||
}
|
||||
}, [certificationCountry, regionsData, getCountryName]);
|
||||
|
||||
useEffect(() => {
|
||||
if (!certificationData || !certificationCountry) return;
|
||||
|
||||
const certifications = (
|
||||
certificationData.certifications[certificationCountry] || []
|
||||
)
|
||||
.sort((a, b) => {
|
||||
if (a.order !== undefined && b.order !== undefined) {
|
||||
return a.order - b.order;
|
||||
}
|
||||
return a.certification.localeCompare(b.certification);
|
||||
})
|
||||
.map((cert) => ({
|
||||
value: cert.certification,
|
||||
label: `${cert.certification}${
|
||||
cert.meaning ? ` - ${cert.meaning}` : ''
|
||||
}`,
|
||||
certification: cert.certification,
|
||||
}));
|
||||
|
||||
if (certification) {
|
||||
setSelectedCertification(
|
||||
certifications.find((c) => c.value === certification) || null
|
||||
);
|
||||
}
|
||||
|
||||
if (certificationGte) {
|
||||
setSelectedCertificationGte(
|
||||
certifications.find((c) => c.value === certificationGte) || null
|
||||
);
|
||||
}
|
||||
|
||||
if (certificationLte) {
|
||||
setSelectedCertificationLte(
|
||||
certifications.find((c) => c.value === certificationLte) || null
|
||||
);
|
||||
}
|
||||
}, [
|
||||
certificationData,
|
||||
certificationCountry,
|
||||
certification,
|
||||
certificationGte,
|
||||
certificationLte,
|
||||
]);
|
||||
|
||||
if (certificationError) {
|
||||
return (
|
||||
<div className="text-red-500">
|
||||
{intl.formatMessage(messages.errorLoading)}
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
if (certificationLoading || !certificationData) {
|
||||
return <SmallLoadingSpinner />;
|
||||
}
|
||||
|
||||
const loadCountryOptions = async (inputValue: string) => {
|
||||
if (!certificationData || !regionsData) return [];
|
||||
|
||||
return Object.keys(certificationData.certifications)
|
||||
.filter(
|
||||
(code) =>
|
||||
certificationData.certifications[code] &&
|
||||
certificationData.certifications[code].length > 0 &&
|
||||
(code.toLowerCase().includes(inputValue.toLowerCase()) ||
|
||||
getCountryName(code)
|
||||
.toLowerCase()
|
||||
.includes(inputValue.toLowerCase()))
|
||||
)
|
||||
.sort((a, b) => getCountryName(a).localeCompare(getCountryName(b)))
|
||||
.map((code) => ({
|
||||
value: code,
|
||||
label: getCountryName(code),
|
||||
}));
|
||||
};
|
||||
|
||||
const loadCertificationOptions = async (inputValue: string) => {
|
||||
if (!certificationData || !certificationCountry) return [];
|
||||
|
||||
return (certificationData.certifications[certificationCountry] || [])
|
||||
.sort((a, b) => {
|
||||
if (a.order !== undefined && b.order !== undefined) {
|
||||
return a.order - b.order;
|
||||
}
|
||||
return a.certification.localeCompare(b.certification);
|
||||
})
|
||||
.map((cert) => ({
|
||||
value: cert.certification,
|
||||
label: `${cert.certification}${
|
||||
cert.meaning ? ` - ${cert.meaning}` : ''
|
||||
}`,
|
||||
certification: cert.certification,
|
||||
}))
|
||||
.filter((cert) =>
|
||||
cert.label.toLowerCase().includes(inputValue.toLowerCase())
|
||||
);
|
||||
};
|
||||
|
||||
const handleCountryChange = (option: CertificationOption | null) => {
|
||||
setSelectedCountry(option);
|
||||
setSelectedCertification(null);
|
||||
setSelectedCertificationGte(null);
|
||||
setSelectedCertificationLte(null);
|
||||
|
||||
onChange({
|
||||
certificationCountry: option?.value,
|
||||
certification: undefined,
|
||||
certificationGte: undefined,
|
||||
certificationLte: undefined,
|
||||
});
|
||||
};
|
||||
|
||||
const handleCertificationChange = (option: CertificationOption | null) => {
|
||||
setSelectedCertification(option);
|
||||
|
||||
onChange({
|
||||
certificationCountry,
|
||||
certification: option?.value,
|
||||
certificationGte: undefined,
|
||||
certificationLte: undefined,
|
||||
});
|
||||
};
|
||||
|
||||
const handleMinCertificationChange = (option: CertificationOption | null) => {
|
||||
setSelectedCertificationGte(option);
|
||||
|
||||
onChange({
|
||||
certificationCountry,
|
||||
certification: undefined,
|
||||
certificationGte: option?.value,
|
||||
certificationLte: certificationLte,
|
||||
});
|
||||
};
|
||||
|
||||
const handleMaxCertificationChange = (option: CertificationOption | null) => {
|
||||
setSelectedCertificationLte(option);
|
||||
|
||||
onChange({
|
||||
certificationCountry,
|
||||
certification: undefined,
|
||||
certificationGte: certificationGte,
|
||||
certificationLte: option?.value,
|
||||
});
|
||||
};
|
||||
|
||||
const formatCertificationLabel = (
|
||||
option: CertificationOption,
|
||||
{ context }: { context: string }
|
||||
) => {
|
||||
if (context === 'value') {
|
||||
return option.certification || option.value;
|
||||
}
|
||||
// Show the full label with description in the menu
|
||||
return option.label;
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="space-y-2">
|
||||
<AsyncSelect
|
||||
className="react-select-container"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions
|
||||
defaultOptions
|
||||
loadOptions={loadCountryOptions}
|
||||
value={selectedCountry}
|
||||
onChange={handleCountryChange}
|
||||
placeholder={intl.formatMessage(messages.selectCountry)}
|
||||
isClearable
|
||||
noOptionsMessage={({ inputValue }) =>
|
||||
inputValue === ''
|
||||
? intl.formatMessage(messages.starttyping)
|
||||
: intl.formatMessage(messages.noOptions)
|
||||
}
|
||||
/>
|
||||
|
||||
{certificationCountry && !showRange && (
|
||||
<AsyncSelect
|
||||
className="react-select-container"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions
|
||||
defaultOptions
|
||||
loadOptions={loadCertificationOptions}
|
||||
value={selectedCertification}
|
||||
onChange={handleCertificationChange}
|
||||
placeholder={intl.formatMessage(messages.selectCertification)}
|
||||
formatOptionLabel={formatCertificationLabel}
|
||||
isClearable
|
||||
noOptionsMessage={() => intl.formatMessage(messages.noOptions)}
|
||||
/>
|
||||
)}
|
||||
|
||||
{certificationCountry && showRange && (
|
||||
<div className="flex space-x-2">
|
||||
<div className="flex-1">
|
||||
<AsyncSelect
|
||||
className="react-select-container"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions
|
||||
defaultOptions
|
||||
loadOptions={loadCertificationOptions}
|
||||
value={selectedCertificationGte}
|
||||
onChange={handleMinCertificationChange}
|
||||
placeholder={intl.formatMessage(messages.minRating)}
|
||||
formatOptionLabel={formatCertificationLabel}
|
||||
isClearable
|
||||
noOptionsMessage={() => intl.formatMessage(messages.noOptions)}
|
||||
/>
|
||||
</div>
|
||||
<div className="flex-1">
|
||||
<AsyncSelect
|
||||
className="react-select-container"
|
||||
classNamePrefix="react-select"
|
||||
cacheOptions
|
||||
defaultOptions
|
||||
loadOptions={loadCertificationOptions}
|
||||
value={selectedCertificationLte}
|
||||
onChange={handleMaxCertificationChange}
|
||||
placeholder={intl.formatMessage(messages.maxRating)}
|
||||
formatOptionLabel={formatCertificationLabel}
|
||||
isClearable
|
||||
noOptionsMessage={() => intl.formatMessage(messages.noOptions)}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default CertificationSelector;
|
||||
@@ -1,87 +0,0 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
|
||||
interface USCertificationSelectorProps {
|
||||
type: string;
|
||||
certification?: string;
|
||||
onChange: (params: {
|
||||
certificationCountry?: string;
|
||||
certification?: string;
|
||||
}) => void;
|
||||
}
|
||||
|
||||
const US_MOVIE_CERTIFICATIONS = ['NR', 'G', 'PG', 'PG-13', 'R', 'NC-17'];
|
||||
const US_TV_CERTIFICATIONS = [
|
||||
'NR',
|
||||
'TV-Y',
|
||||
'TV-Y7',
|
||||
'TV-G',
|
||||
'TV-PG',
|
||||
'TV-14',
|
||||
'TV-MA',
|
||||
];
|
||||
|
||||
const USCertificationSelector: React.FC<USCertificationSelectorProps> = ({
|
||||
type,
|
||||
certification,
|
||||
onChange,
|
||||
}) => {
|
||||
const [selectedRatings, setSelectedRatings] = useState<string[]>(() =>
|
||||
certification ? certification.split('|') : []
|
||||
);
|
||||
|
||||
const certifications =
|
||||
type === 'movie' ? US_MOVIE_CERTIFICATIONS : US_TV_CERTIFICATIONS;
|
||||
|
||||
useEffect(() => {
|
||||
if (certification) {
|
||||
setSelectedRatings(certification.split('|'));
|
||||
} else {
|
||||
setSelectedRatings([]);
|
||||
}
|
||||
}, [certification]);
|
||||
|
||||
const toggleRating = (rating: string) => {
|
||||
setSelectedRatings((prevSelected) => {
|
||||
let newSelected;
|
||||
|
||||
if (prevSelected.includes(rating)) {
|
||||
newSelected = prevSelected.filter((r) => r !== rating);
|
||||
} else {
|
||||
newSelected = [...prevSelected, rating];
|
||||
}
|
||||
|
||||
const newCertification =
|
||||
newSelected.length > 0 ? newSelected.join('|') : undefined;
|
||||
|
||||
onChange({
|
||||
certificationCountry: 'US',
|
||||
certification: newCertification,
|
||||
});
|
||||
|
||||
return newSelected;
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
<div className="mb-4">
|
||||
<div className="flex flex-wrap gap-2">
|
||||
{certifications.map((rating) => (
|
||||
<button
|
||||
key={rating}
|
||||
onClick={() => toggleRating(rating)}
|
||||
className={`rounded-full px-3 py-1 text-sm font-medium transition-colors ${
|
||||
selectedRatings.includes(rating)
|
||||
? 'bg-indigo-600 text-white hover:bg-indigo-700'
|
||||
: 'bg-gray-200 text-gray-700 hover:bg-gray-300 dark:bg-gray-700 dark:text-gray-200 dark:hover:bg-gray-600'
|
||||
}`}
|
||||
type="button"
|
||||
>
|
||||
{rating}
|
||||
</button>
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default USCertificationSelector;
|
||||
@@ -631,5 +631,3 @@ export const UserSelector = ({
|
||||
/>
|
||||
);
|
||||
};
|
||||
|
||||
export { default as USCertificationSelector } from './USCertificationSelector';
|
||||
|
||||
@@ -3,7 +3,6 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
|
||||
import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/solid';
|
||||
import axios from 'axios';
|
||||
import { Field, Form, Formik } from 'formik';
|
||||
@@ -52,10 +51,10 @@ const NotificationsGotify = () => {
|
||||
.required(intl.formatMessage(messages.validationUrlRequired)),
|
||||
otherwise: Yup.string().nullable(),
|
||||
})
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationUrlRequired),
|
||||
isValidURL
|
||||
.matches(
|
||||
// eslint-disable-next-line no-useless-escape
|
||||
/^(https?:)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*)?([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,
|
||||
intl.formatMessage(messages.validationUrlRequired)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
|
||||
@@ -1,367 +0,0 @@
|
||||
import Button from '@app/components/Common/Button';
|
||||
import LoadingSpinner from '@app/components/Common/LoadingSpinner';
|
||||
import SensitiveInput from '@app/components/Common/SensitiveInput';
|
||||
import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
|
||||
import axios from 'axios';
|
||||
import { Field, Form, Formik } from 'formik';
|
||||
import { useState } from 'react';
|
||||
import { useIntl } from 'react-intl';
|
||||
import { useToasts } from 'react-toast-notifications';
|
||||
import useSWR from 'swr';
|
||||
import * as Yup from 'yup';
|
||||
|
||||
const messages = defineMessages(
|
||||
'components.Settings.Notifications.NotificationsNtfy',
|
||||
{
|
||||
agentenabled: 'Enable Agent',
|
||||
url: 'Server root URL',
|
||||
topic: 'Topic',
|
||||
usernamePasswordAuth: 'Username + Password authentication',
|
||||
username: 'Username',
|
||||
password: 'Password',
|
||||
tokenAuth: 'Token authentication',
|
||||
token: 'Token',
|
||||
ntfysettingssaved: 'Ntfy notification settings saved successfully!',
|
||||
ntfysettingsfailed: 'Ntfy notification settings failed to save.',
|
||||
toastNtfyTestSending: 'Sending ntfy test notification…',
|
||||
toastNtfyTestSuccess: 'Ntfy test notification sent!',
|
||||
toastNtfyTestFailed: 'Ntfy test notification failed to send.',
|
||||
validationNtfyUrl: 'You must provide a valid URL',
|
||||
validationNtfyTopic: 'You must provide a topic',
|
||||
validationTypes: 'You must select at least one notification type',
|
||||
}
|
||||
);
|
||||
|
||||
const NotificationsNtfy = () => {
|
||||
const intl = useIntl();
|
||||
const { addToast, removeToast } = useToasts();
|
||||
const [isTesting, setIsTesting] = useState(false);
|
||||
const {
|
||||
data,
|
||||
error,
|
||||
mutate: revalidate,
|
||||
} = useSWR('/api/v1/settings/notifications/ntfy');
|
||||
|
||||
const NotificationsNtfySchema = Yup.object().shape({
|
||||
url: Yup.string()
|
||||
.when('enabled', {
|
||||
is: true,
|
||||
then: Yup.string()
|
||||
.nullable()
|
||||
.required(intl.formatMessage(messages.validationNtfyUrl)),
|
||||
otherwise: Yup.string().nullable(),
|
||||
})
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationNtfyUrl),
|
||||
isValidURL
|
||||
),
|
||||
topic: Yup.string()
|
||||
.when('enabled', {
|
||||
is: true,
|
||||
then: Yup.string()
|
||||
.nullable()
|
||||
.required(intl.formatMessage(messages.validationNtfyUrl)),
|
||||
otherwise: Yup.string().nullable(),
|
||||
})
|
||||
.defined(intl.formatMessage(messages.validationNtfyTopic)),
|
||||
});
|
||||
|
||||
if (!data && !error) {
|
||||
return <LoadingSpinner />;
|
||||
}
|
||||
|
||||
return (
|
||||
<Formik
|
||||
initialValues={{
|
||||
enabled: data.enabled,
|
||||
types: data.types,
|
||||
url: data.options.url,
|
||||
topic: data.options.topic,
|
||||
authMethodUsernamePassword: data.options.authMethod,
|
||||
username: data.options.username,
|
||||
password: data.options.password,
|
||||
authMethodToken: data.options.authMethodToken,
|
||||
token: data.options.token,
|
||||
}}
|
||||
validationSchema={NotificationsNtfySchema}
|
||||
onSubmit={async (values) => {
|
||||
try {
|
||||
await axios.post('/api/v1/settings/notifications/ntfy', {
|
||||
enabled: values.enabled,
|
||||
types: values.types,
|
||||
options: {
|
||||
url: values.url,
|
||||
topic: values.topic,
|
||||
authMethodUsernamePassword: values.authMethodUsernamePassword,
|
||||
username: values.username,
|
||||
password: values.password,
|
||||
authMethodToken: values.authMethodToken,
|
||||
token: values.token,
|
||||
},
|
||||
});
|
||||
|
||||
addToast(intl.formatMessage(messages.ntfysettingssaved), {
|
||||
appearance: 'success',
|
||||
autoDismiss: true,
|
||||
});
|
||||
} catch (e) {
|
||||
addToast(intl.formatMessage(messages.ntfysettingsfailed), {
|
||||
appearance: 'error',
|
||||
autoDismiss: true,
|
||||
});
|
||||
} finally {
|
||||
revalidate();
|
||||
}
|
||||
}}
|
||||
>
|
||||
{({
|
||||
errors,
|
||||
touched,
|
||||
isSubmitting,
|
||||
values,
|
||||
isValid,
|
||||
setFieldValue,
|
||||
setFieldTouched,
|
||||
}) => {
|
||||
const testSettings = async () => {
|
||||
setIsTesting(true);
|
||||
let toastId: string | undefined;
|
||||
try {
|
||||
addToast(
|
||||
intl.formatMessage(messages.toastNtfyTestSending),
|
||||
{
|
||||
autoDismiss: false,
|
||||
appearance: 'info',
|
||||
},
|
||||
(id) => {
|
||||
toastId = id;
|
||||
}
|
||||
);
|
||||
await axios.post('/api/v1/settings/notifications/ntfy/test', {
|
||||
enabled: true,
|
||||
types: values.types,
|
||||
options: {
|
||||
url: values.url,
|
||||
topic: values.topic,
|
||||
authMethodUsernamePassword: values.authMethodUsernamePassword,
|
||||
username: values.username,
|
||||
password: values.password,
|
||||
authMethodToken: values.authMethodToken,
|
||||
token: values.token,
|
||||
},
|
||||
});
|
||||
|
||||
if (toastId) {
|
||||
removeToast(toastId);
|
||||
}
|
||||
addToast(intl.formatMessage(messages.toastNtfyTestSuccess), {
|
||||
autoDismiss: true,
|
||||
appearance: 'success',
|
||||
});
|
||||
} catch (e) {
|
||||
if (toastId) {
|
||||
removeToast(toastId);
|
||||
}
|
||||
addToast(intl.formatMessage(messages.toastNtfyTestFailed), {
|
||||
autoDismiss: true,
|
||||
appearance: 'error',
|
||||
});
|
||||
} finally {
|
||||
setIsTesting(false);
|
||||
}
|
||||
};
|
||||
|
||||
return (
|
||||
<Form className="section">
|
||||
<div className="form-row">
|
||||
<label htmlFor="enabled" className="checkbox-label">
|
||||
{intl.formatMessage(messages.agentenabled)}
|
||||
<span className="label-required">*</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field type="checkbox" id="enabled" name="enabled" />
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="url" className="text-label">
|
||||
{intl.formatMessage(messages.url)}
|
||||
<span className="label-required">*</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field id="url" name="url" type="text" inputMode="url" />
|
||||
</div>
|
||||
{errors.url &&
|
||||
touched.url &&
|
||||
typeof errors.url === 'string' && (
|
||||
<div className="error">{errors.url}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="topic" className="text-label">
|
||||
{intl.formatMessage(messages.topic)}
|
||||
<span className="label-required">*</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field id="topic" name="topic" type="text" />
|
||||
</div>
|
||||
{errors.topic &&
|
||||
touched.topic &&
|
||||
typeof errors.topic === 'string' && (
|
||||
<div className="error">{errors.topic}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label
|
||||
htmlFor="authMethodUsernamePassword"
|
||||
className="checkbox-label"
|
||||
>
|
||||
<span className="mr-2">
|
||||
{intl.formatMessage(messages.usernamePasswordAuth)}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field
|
||||
type="checkbox"
|
||||
id="authMethodUsernamePassword"
|
||||
name="authMethodUsernamePassword"
|
||||
disabled={values.authMethodToken}
|
||||
onChange={() => {
|
||||
setFieldValue(
|
||||
'authMethodUsernamePassword',
|
||||
!values.authMethodUsernamePassword
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{values.authMethodUsernamePassword && (
|
||||
<div className="mr-2 ml-4">
|
||||
<div className="form-row">
|
||||
<label htmlFor="username" className="text-label">
|
||||
{intl.formatMessage(messages.username)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field id="username" name="username" type="text" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="password" className="text-label">
|
||||
{intl.formatMessage(messages.password)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<SensitiveInput
|
||||
as="field"
|
||||
id="password"
|
||||
name="password"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<div className="form-row">
|
||||
<label htmlFor="authMethodToken" className="checkbox-label">
|
||||
<span className="mr-2">
|
||||
{intl.formatMessage(messages.tokenAuth)}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field
|
||||
type="checkbox"
|
||||
id="authMethodToken"
|
||||
name="authMethodToken"
|
||||
disabled={values.authMethodUsernamePassword}
|
||||
onChange={() => {
|
||||
setFieldValue('authMethodToken', !values.authMethodToken);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
{values.authMethodToken && (
|
||||
<div className="form-row mr-2 ml-4">
|
||||
<label htmlFor="token" className="text-label">
|
||||
{intl.formatMessage(messages.token)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<SensitiveInput as="field" id="token" name="token" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
)}
|
||||
<NotificationTypeSelector
|
||||
currentTypes={values.enabled ? values.types : 0}
|
||||
onUpdate={(newTypes) => {
|
||||
setFieldValue('types', newTypes);
|
||||
setFieldTouched('types');
|
||||
|
||||
if (newTypes) {
|
||||
setFieldValue('enabled', true);
|
||||
}
|
||||
}}
|
||||
error={
|
||||
values.enabled && !values.types && touched.types
|
||||
? intl.formatMessage(messages.validationTypes)
|
||||
: undefined
|
||||
}
|
||||
/>
|
||||
<div className="actions">
|
||||
<div className="flex justify-end">
|
||||
<span className="ml-3 inline-flex rounded-md shadow-sm">
|
||||
<Button
|
||||
buttonType="warning"
|
||||
disabled={isSubmitting || !isValid || isTesting}
|
||||
onClick={(e) => {
|
||||
e.preventDefault();
|
||||
testSettings();
|
||||
}}
|
||||
>
|
||||
<BeakerIcon />
|
||||
<span>
|
||||
{isTesting
|
||||
? intl.formatMessage(globalMessages.testing)
|
||||
: intl.formatMessage(globalMessages.test)}
|
||||
</span>
|
||||
</Button>
|
||||
</span>
|
||||
<span className="ml-3 inline-flex rounded-md shadow-sm">
|
||||
<Button
|
||||
buttonType="primary"
|
||||
type="submit"
|
||||
disabled={
|
||||
isSubmitting ||
|
||||
!isValid ||
|
||||
isTesting ||
|
||||
(values.enabled && !values.types)
|
||||
}
|
||||
>
|
||||
<ArrowDownOnSquareIcon />
|
||||
<span>
|
||||
{isSubmitting
|
||||
? intl.formatMessage(globalMessages.saving)
|
||||
: intl.formatMessage(globalMessages.save)}
|
||||
</span>
|
||||
</Button>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</Form>
|
||||
);
|
||||
}}
|
||||
</Formik>
|
||||
);
|
||||
};
|
||||
|
||||
export default NotificationsNtfy;
|
||||
@@ -100,7 +100,6 @@ const NotificationsPushover = () => {
|
||||
options: {
|
||||
accessToken: values.accessToken,
|
||||
userToken: values.userToken,
|
||||
sound: values.sound,
|
||||
},
|
||||
});
|
||||
addToast(intl.formatMessage(messages.pushoversettingssaved), {
|
||||
|
||||
@@ -3,7 +3,6 @@ import LoadingSpinner from '@app/components/Common/LoadingSpinner';
|
||||
import NotificationTypeSelector from '@app/components/NotificationTypeSelector';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { ArrowDownOnSquareIcon, BeakerIcon } from '@heroicons/react/24/outline';
|
||||
import {
|
||||
ArrowPathIcon,
|
||||
@@ -108,10 +107,10 @@ const NotificationsWebhook = () => {
|
||||
.required(intl.formatMessage(messages.validationWebhookUrl)),
|
||||
otherwise: Yup.string().nullable(),
|
||||
})
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationWebhookUrl),
|
||||
isValidURL
|
||||
.matches(
|
||||
// eslint-disable-next-line no-useless-escape
|
||||
/^(https?:)?\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*)?([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i,
|
||||
intl.formatMessage(messages.validationWebhookUrl)
|
||||
),
|
||||
jsonPayload: Yup.string()
|
||||
.when('enabled', {
|
||||
|
||||
@@ -3,7 +3,6 @@ import SensitiveInput from '@app/components/Common/SensitiveInput';
|
||||
import type { RadarrTestResponse } from '@app/components/Settings/SettingsServices';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { Transition } from '@headlessui/react';
|
||||
import type { RadarrSettings } from '@server/lib/settings';
|
||||
import axios from 'axios';
|
||||
@@ -118,10 +117,9 @@ const RadarrModal = ({ onClose, radarr, onSave }: RadarrModalProps) => {
|
||||
intl.formatMessage(messages.validationMinimumAvailabilityRequired)
|
||||
),
|
||||
externalUrl: Yup.string()
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationApplicationUrl),
|
||||
isValidURL
|
||||
.matches(
|
||||
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*))?$/i,
|
||||
intl.formatMessage(messages.validationApplicationUrl)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
|
||||
@@ -6,7 +6,6 @@ import LibraryItem from '@app/components/Settings/LibraryItem';
|
||||
import useSettings from '@app/hooks/useSettings';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
|
||||
import { ApiErrorCode } from '@server/constants/error';
|
||||
import { MediaServerType } from '@server/constants/server';
|
||||
@@ -141,7 +140,10 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
|
||||
),
|
||||
jellyfinExternalUrl: Yup.string()
|
||||
.nullable()
|
||||
.test('valid-url', intl.formatMessage(messages.validationUrl), isValidURL)
|
||||
.matches(
|
||||
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*))?$/i,
|
||||
intl.formatMessage(messages.validationUrl)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
intl.formatMessage(messages.validationUrlTrailingSlash),
|
||||
@@ -149,7 +151,10 @@ const SettingsJellyfin: React.FC<SettingsJellyfinProps> = ({
|
||||
),
|
||||
jellyfinForgotPasswordUrl: Yup.string()
|
||||
.nullable()
|
||||
.test('valid-url', intl.formatMessage(messages.validationUrl), isValidURL)
|
||||
.matches(
|
||||
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*))?$/i,
|
||||
intl.formatMessage(messages.validationUrl)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
intl.formatMessage(messages.validationUrlTrailingSlash),
|
||||
|
||||
@@ -13,7 +13,6 @@ import useLocale from '@app/hooks/useLocale';
|
||||
import { Permission, useUser } from '@app/hooks/useUser';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
|
||||
import { ArrowPathIcon } from '@heroicons/react/24/solid';
|
||||
import type { UserSettingsGeneralResponse } from '@server/interfaces/api/userSettingsInterfaces';
|
||||
@@ -46,16 +45,11 @@ const messages = defineMessages('components.Settings.SettingsMain', {
|
||||
'The "Process Blacklisted Tags" job will blacklist this many pages into each sort. Larger numbers will create a more accurate blacklist, but use more space.',
|
||||
streamingRegion: 'Streaming Region',
|
||||
streamingRegionTip: 'Show streaming sites by regional availability',
|
||||
hideBlacklisted: 'Hide Blacklisted Items',
|
||||
hideBlacklistedTip:
|
||||
'Hide blacklisted items from discover pages for all users with the "Manage Blacklist" permission',
|
||||
toastApiKeySuccess: 'New API key generated successfully!',
|
||||
toastApiKeyFailure: 'Something went wrong while generating a new API key.',
|
||||
toastSettingsSuccess: 'Settings saved successfully!',
|
||||
toastSettingsFailure: 'Something went wrong while saving settings.',
|
||||
hideAvailable: 'Hide Available Media',
|
||||
hideAvailableTip:
|
||||
'Hide available media from the discover pages but not search results',
|
||||
cacheImages: 'Enable Image Caching',
|
||||
cacheImagesTip:
|
||||
'Cache externally sourced images (requires a significant amount of disk space)',
|
||||
@@ -65,9 +59,6 @@ const messages = defineMessages('components.Settings.SettingsMain', {
|
||||
partialRequestsEnabled: 'Allow Partial Series Requests',
|
||||
enableSpecialEpisodes: 'Allow Special Episodes Requests',
|
||||
locale: 'Display Language',
|
||||
youtubeUrl: 'YouTube URL',
|
||||
validationUrl: 'You must provide a valid URL',
|
||||
validationUrlTrailingSlash: 'URL must not end in a trailing slash',
|
||||
});
|
||||
|
||||
const SettingsMain = () => {
|
||||
@@ -89,10 +80,9 @@ const SettingsMain = () => {
|
||||
intl.formatMessage(messages.validationApplicationTitle)
|
||||
),
|
||||
applicationUrl: Yup.string()
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationApplicationUrl),
|
||||
isValidURL
|
||||
.matches(
|
||||
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*))?$/i,
|
||||
intl.formatMessage(messages.validationApplicationUrl)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
@@ -110,13 +100,6 @@ const SettingsMain = () => {
|
||||
'Number must be less than or equal to 250.',
|
||||
(value) => (value ?? 0) <= 250
|
||||
),
|
||||
youtubeUrl: Yup.string()
|
||||
.url(intl.formatMessage(messages.validationUrl))
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
intl.formatMessage(messages.validationUrlTrailingSlash),
|
||||
(value) => !value || !value.endsWith('/')
|
||||
),
|
||||
});
|
||||
|
||||
const regenerate = async () => {
|
||||
@@ -162,7 +145,6 @@ const SettingsMain = () => {
|
||||
applicationTitle: data?.applicationTitle,
|
||||
applicationUrl: data?.applicationUrl,
|
||||
hideAvailable: data?.hideAvailable,
|
||||
hideBlacklisted: data?.hideBlacklisted,
|
||||
locale: data?.locale ?? 'en',
|
||||
discoverRegion: data?.discoverRegion,
|
||||
originalLanguage: data?.originalLanguage,
|
||||
@@ -172,7 +154,6 @@ const SettingsMain = () => {
|
||||
partialRequestsEnabled: data?.partialRequestsEnabled,
|
||||
enableSpecialEpisodes: data?.enableSpecialEpisodes,
|
||||
cacheImages: data?.cacheImages,
|
||||
youtubeUrl: data?.youtubeUrl,
|
||||
}}
|
||||
enableReinitialize
|
||||
validationSchema={MainSettingsSchema}
|
||||
@@ -182,7 +163,6 @@ const SettingsMain = () => {
|
||||
applicationTitle: values.applicationTitle,
|
||||
applicationUrl: values.applicationUrl,
|
||||
hideAvailable: values.hideAvailable,
|
||||
hideBlacklisted: values.hideBlacklisted,
|
||||
locale: values.locale,
|
||||
discoverRegion: values.discoverRegion,
|
||||
streamingRegion: values.streamingRegion,
|
||||
@@ -192,7 +172,6 @@ const SettingsMain = () => {
|
||||
partialRequestsEnabled: values.partialRequestsEnabled,
|
||||
enableSpecialEpisodes: values.enableSpecialEpisodes,
|
||||
cacheImages: values.cacheImages,
|
||||
youtubeUrl: values.youtubeUrl,
|
||||
});
|
||||
mutate('/api/v1/settings/public');
|
||||
mutate('/api/v1/status');
|
||||
@@ -449,9 +428,6 @@ const SettingsMain = () => {
|
||||
{intl.formatMessage(messages.hideAvailable)}
|
||||
</span>
|
||||
<SettingsBadge badgeType="experimental" />
|
||||
<span className="label-tip">
|
||||
{intl.formatMessage(messages.hideAvailableTip)}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field
|
||||
@@ -464,29 +440,6 @@ const SettingsMain = () => {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="hideBlacklisted" className="checkbox-label">
|
||||
<span className="mr-2">
|
||||
{intl.formatMessage(messages.hideBlacklisted)}
|
||||
</span>
|
||||
<span className="label-tip">
|
||||
{intl.formatMessage(messages.hideBlacklistedTip)}
|
||||
</span>
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<Field
|
||||
type="checkbox"
|
||||
id="hideBlacklisted"
|
||||
name="hideBlacklisted"
|
||||
onChange={() => {
|
||||
setFieldValue(
|
||||
'hideBlacklisted',
|
||||
!values.hideBlacklisted
|
||||
);
|
||||
}}
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label
|
||||
htmlFor="partialRequestsEnabled"
|
||||
@@ -533,26 +486,6 @@ const SettingsMain = () => {
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div className="form-row">
|
||||
<label htmlFor="youtubeUrl" className="text-label">
|
||||
{intl.formatMessage(messages.youtubeUrl)}
|
||||
</label>
|
||||
<div className="form-input-area">
|
||||
<div className="form-input-field">
|
||||
<Field
|
||||
id="youtubeUrl"
|
||||
name="youtubeUrl"
|
||||
type="text"
|
||||
inputMode="url"
|
||||
/>
|
||||
</div>
|
||||
{errors.youtubeUrl &&
|
||||
touched.youtubeUrl &&
|
||||
typeof errors.youtubeUrl === 'string' && (
|
||||
<div className="error">{errors.youtubeUrl}</div>
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
<div className="actions">
|
||||
<div className="flex justify-end">
|
||||
<span className="ml-3 inline-flex rounded-md shadow-sm">
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import DiscordLogo from '@app/assets/extlogos/discord.svg';
|
||||
import GotifyLogo from '@app/assets/extlogos/gotify.svg';
|
||||
import LunaSeaLogo from '@app/assets/extlogos/lunasea.svg';
|
||||
import NtfyLogo from '@app/assets/extlogos/ntfy.svg';
|
||||
import PushbulletLogo from '@app/assets/extlogos/pushbullet.svg';
|
||||
import PushoverLogo from '@app/assets/extlogos/pushover.svg';
|
||||
import SlackLogo from '@app/assets/extlogos/slack.svg';
|
||||
@@ -76,17 +75,6 @@ const SettingsNotifications = ({ children }: SettingsNotificationsProps) => {
|
||||
route: '/settings/notifications/gotify',
|
||||
regex: /^\/settings\/notifications\/gotify/,
|
||||
},
|
||||
{
|
||||
text: 'ntfy.sh',
|
||||
content: (
|
||||
<span className="flex items-center">
|
||||
<NtfyLogo className="mr-2 h-4" />
|
||||
ntfy.sh
|
||||
</span>
|
||||
),
|
||||
route: '/settings/notifications/ntfy',
|
||||
regex: /^\/settings\/notifications\/ntfy/,
|
||||
},
|
||||
{
|
||||
text: 'LunaSea',
|
||||
content: (
|
||||
|
||||
@@ -8,7 +8,6 @@ import LibraryItem from '@app/components/Settings/LibraryItem';
|
||||
import SettingsBadge from '@app/components/Settings/SettingsBadge';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { ArrowDownOnSquareIcon } from '@heroicons/react/24/outline';
|
||||
import {
|
||||
ArrowPathIcon,
|
||||
@@ -192,10 +191,9 @@ const SettingsPlex = ({ onComplete }: SettingsPlexProps) => {
|
||||
otherwise: Yup.string().nullable(),
|
||||
}),
|
||||
tautulliExternalUrl: Yup.string()
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationUrl),
|
||||
isValidURL
|
||||
.matches(
|
||||
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*))?$/i,
|
||||
intl.formatMessage(messages.validationUrl)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
|
||||
@@ -3,7 +3,6 @@ import SensitiveInput from '@app/components/Common/SensitiveInput';
|
||||
import type { SonarrTestResponse } from '@app/components/Settings/SettingsServices';
|
||||
import globalMessages from '@app/i18n/globalMessages';
|
||||
import defineMessages from '@app/utils/defineMessages';
|
||||
import { isValidURL } from '@app/utils/urlValidationHelper';
|
||||
import { Transition } from '@headlessui/react';
|
||||
import type { SonarrSettings } from '@server/lib/settings';
|
||||
import axios from 'axios';
|
||||
@@ -127,10 +126,9 @@ const SonarrModal = ({ onClose, sonarr, onSave }: SonarrModalProps) => {
|
||||
)
|
||||
: Yup.number(),
|
||||
externalUrl: Yup.string()
|
||||
.test(
|
||||
'valid-url',
|
||||
intl.formatMessage(messages.validationApplicationUrl),
|
||||
isValidURL
|
||||
.matches(
|
||||
/^https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}(\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_+.~#?&/=]*))?$/i,
|
||||
intl.formatMessage(messages.validationApplicationUrl)
|
||||
)
|
||||
.test(
|
||||
'no-trailing-slash',
|
||||
|
||||
@@ -208,15 +208,10 @@ const TvDetails = ({ tv }: TvDetailsProps) => {
|
||||
});
|
||||
}
|
||||
|
||||
const trailerVideo = data.relatedVideos
|
||||
const trailerUrl = data.relatedVideos
|
||||
?.filter((r) => r.type === 'Trailer')
|
||||
.sort((a, b) => a.size - b.size)
|
||||
.pop();
|
||||
const trailerUrl =
|
||||
trailerVideo?.site === 'YouTube' &&
|
||||
settings.currentSettings.youtubeUrl != ''
|
||||
? `${settings.currentSettings.youtubeUrl}${trailerVideo?.key}`
|
||||
: trailerVideo?.url;
|
||||
.pop()?.url;
|
||||
|
||||
if (trailerUrl) {
|
||||
mediaLinks.push({
|
||||
|
||||
@@ -13,7 +13,6 @@ const defaultSettings = {
|
||||
applicationTitle: 'Jellyseerr',
|
||||
applicationUrl: '',
|
||||
hideAvailable: false,
|
||||
hideBlacklisted: false,
|
||||
localLogin: true,
|
||||
mediaServerLogin: true,
|
||||
movie4kEnabled: false,
|
||||
@@ -30,7 +29,6 @@ const defaultSettings = {
|
||||
locale: 'en',
|
||||
emailEnabled: false,
|
||||
newPlexLogin: true,
|
||||
youtubeUrl: '',
|
||||
};
|
||||
|
||||
export const SettingsContext = React.createContext<SettingsContextProps>({
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
import { MediaStatus } from '@server/constants/media';
|
||||
import useSWRInfinite from 'swr/infinite';
|
||||
import useSettings from './useSettings';
|
||||
import { Permission, useUser } from './useUser';
|
||||
|
||||
export interface BaseSearchResult<T> {
|
||||
page: number;
|
||||
@@ -54,10 +53,9 @@ const useDiscover = <
|
||||
>(
|
||||
endpoint: string,
|
||||
options?: O,
|
||||
{ hideAvailable = true, hideBlacklisted = true } = {}
|
||||
{ hideAvailable = true } = {}
|
||||
): DiscoverResult<T, S> => {
|
||||
const settings = useSettings();
|
||||
const { hasPermission } = useUser();
|
||||
const { data, error, size, setSize, isValidating, mutate } = useSWRInfinite<
|
||||
BaseSearchResult<T> & S
|
||||
>(
|
||||
@@ -122,23 +120,10 @@ const useDiscover = <
|
||||
);
|
||||
}
|
||||
|
||||
if (
|
||||
settings.currentSettings.hideBlacklisted &&
|
||||
hideBlacklisted &&
|
||||
hasPermission(Permission.MANAGE_BLACKLIST)
|
||||
) {
|
||||
titles = titles.filter(
|
||||
(i) =>
|
||||
(i.mediaType === 'movie' || i.mediaType === 'tv') &&
|
||||
i.mediaInfo?.status !== MediaStatus.BLACKLISTED
|
||||
);
|
||||
}
|
||||
|
||||
const isEmpty = !isLoadingInitialData && titles?.length === 0;
|
||||
const isReachingEnd =
|
||||
isEmpty ||
|
||||
(!!data && (data[data?.length - 1]?.results.length ?? 0) < 20) ||
|
||||
(!!data && (data[data?.length - 1]?.totalResults ?? 0) <= size * 20) ||
|
||||
(!!data && (data[data?.length - 1]?.totalResults ?? 0) < 41);
|
||||
|
||||
return {
|
||||
|
||||
@@ -256,6 +256,8 @@
|
||||
"components.PersonDetails.birthdate": "ولد في {birthdate}",
|
||||
"components.PersonDetails.crewmember": "عضو",
|
||||
"components.PersonDetails.lifespan": "{birthdate} - {deathdate}",
|
||||
"components.PlexLoginButton.signingin": "تسجيل دخول…",
|
||||
"components.PlexLoginButton.signinwithplex": "تسجيل دخول",
|
||||
"components.QuotaSelector.days": "{count, plural, one {يوم} other {أيام}}",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} كل {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {فيلم} other {أفلام}}",
|
||||
@@ -1031,6 +1033,7 @@
|
||||
"i18n.collection": "تجميعة",
|
||||
"components.RequestBlock.approve": "الموافقة على الطلب",
|
||||
"components.RequestBlock.requestedby": "تم الطلب من قبل",
|
||||
"components.Settings.SettingsMain.csrfProtection": "تفعيل حماية CSRF",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "ضبط الإعدادات العامة والإفتراضية بأوفرسيرر.",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} تم التحديث",
|
||||
"components.TitleCard.cleardata": "محو البيانات",
|
||||
@@ -1094,6 +1097,7 @@
|
||||
"components.DownloadBlock.formattedTitle": "{title}: موسم {seasonNumber} حلقة {episodeNumber}",
|
||||
"components.TvDetails.reportissue": "الإبلاغ عن مشكلةْ",
|
||||
"components.TvDetails.rtaudiencescore": "تقييم الجمهور من موقع Rotten Tomatoes",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "السماح لأوفرسيرر بتسجيل عناوين IP خلف بروكسي",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "أفلام",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "الشعبية تصاعديا",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "الشعبية تنازلياً",
|
||||
@@ -1137,9 +1141,12 @@
|
||||
"components.RequestList.RequestItem.tmdbid": "المعرّف الخاص بموقع TMDB",
|
||||
"components.RequestModal.requestseries4ktitle": "طلب مسلسل بجودة فور كي",
|
||||
"components.Settings.SettingsMain.cacheImages": "تفعيل تخزين الملتقطات والصور",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "لا تقم بتفعيل هذا الخيار إلا إذا كنت تعيّ ماتقوم به!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "إعداد خارجي بمفتاح API بصلاحية القراءة فقط (هذا الخيار يتطلب إتصال مُشفر HTTP)",
|
||||
"components.Settings.SettingsMain.generalsettings": "إعدادات عامة",
|
||||
"components.Settings.SettingsMain.locale": "لغة العرض",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "تم حفظ الإعدادات!",
|
||||
"components.Settings.SettingsMain.trustProxy": "تفعيل دعم البروكسي",
|
||||
"components.StatusChecker.appUpdatedDescription": "الرجاء النقر على الزر بالإسفل لإعادة تحميل الصفحة.",
|
||||
"components.AirDateBadge.airedrelative": "عُرضت {relativeTime}",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# الفلتر المُفعّل } other {# الفلاتر المفعلة}}",
|
||||
|
||||
@@ -190,7 +190,7 @@
|
||||
"components.PermissionEdit.requestTvDescription": "Дайте разрешение за изпращане на заявки за не-4K сериали.",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Гарантиране на автоматично одобрение за заявки на 4K филми.",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Трябва да предоставите валиден токен за приложение",
|
||||
"components.Settings.RadarrModal.baseUrl": "Базов URL адрес",
|
||||
"components.Settings.RadarrModal.baseUrl": "URL Base",
|
||||
"components.Discover.FilterSlideover.keywords": "Ключови думи",
|
||||
"components.Discover.tvgenres": "Жанрове сериали",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "Webhook URL",
|
||||
@@ -234,7 +234,7 @@
|
||||
"components.PermissionEdit.viewrequests": "Преглед на заявките",
|
||||
"components.RequestCard.failedretry": "Нещо се обърка при повторен опит за заявка.",
|
||||
"components.PermissionEdit.requestMovies": "Заявка за филми",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Можете да прегледате обобщение на ограниченията на заявки от потребителя на неговата <ProfileLink>профилна страница</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Можете да прегледате обобщение на ограниченията на заявки от потребителя на неговата <Profile Link>профилна страница</Profile Link>.",
|
||||
"components.Discover.StudioSlider.studios": "Студия",
|
||||
"components.ManageSlideOver.manageModalRequests": "Заявки",
|
||||
"components.NotificationTypeSelector.issuecreatedDescription": "Изпращайте известия при докладване на проблеми.",
|
||||
@@ -436,7 +436,7 @@
|
||||
"components.RequestButton.viewrequest4k": "Преглед на 4К заявка",
|
||||
"components.Settings.RadarrModal.edit4kradarr": "Редактирай 4К Radarr сървър",
|
||||
"components.PermissionEdit.request4k": "Заявка 4K",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Можете да прегледате обобщение на ограниченията на вашите заявки на вашата <ProfileLink>профилна страница</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Можете да прегледате обобщение на ограниченията на вашите заявки на вашата <Profile Link>профилна страница</Profile Link>.",
|
||||
"components.Discover.plexwatchlist": "Вашият Plex списък за гледане",
|
||||
"components.ResetPassword.confirmpassword": "Потвърди парола",
|
||||
"components.Discover.FilterSlideover.tmdbuserscore": "TMDB потребителска оценка",
|
||||
@@ -473,7 +473,7 @@
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsFailed": "Настройките за известяване на LunaSea не успяха да бъдат запазени.",
|
||||
"components.Settings.Notifications.pgpPassword": "PGP Парола",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Този потребител трябва да има най-малко <strong>{seasons}</strong> {seasons, plural, one {заявка за сезон} other {заявки за сезони}} оставащи, за да изпрати заявка за този сериал.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "Хедър за удостоверяване",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "Authorization Header",
|
||||
"components.PermissionEdit.request4kTvDescription": "Дайте разрешение за изпращане на заявки за 4K сериали.",
|
||||
"components.ManageSlideOver.markavailable": "Маркирайте като наличен",
|
||||
"components.Selector.showless": "Покажи по-малко",
|
||||
@@ -482,7 +482,7 @@
|
||||
"components.Settings.SettingsAbout.totalmedia": "Общо медия",
|
||||
"components.RegionSelector.regionServerDefault": "По подразбиране ({region})",
|
||||
"components.PermissionEdit.request4kMovies": "Заявка за 4K филми",
|
||||
"components.RequestButton.approve4krequests": "Одобрете {requestCount, plural, one {4K заявка} other {{requestCount} 4K Заявки}}",
|
||||
"components.RequestButton.approve4krequests": "Одобрете {requestCount, plural, one {4K заявка} other {{requestCount} 4K заявки}}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Дата на излизане",
|
||||
"components.Settings.Notifications.webhookUrl": "Webhook URL",
|
||||
"components.RequestModal.errorediting": "Нещо се обърка при редактирането на заявката.",
|
||||
@@ -509,9 +509,10 @@
|
||||
"components.RequestModal.QuotaDisplay.allowedRequests": "Имате право да заявявате <strong>{limit}</strong> {type} на всеки <strong>{days}</strong> дни.",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Дайте разрешение за автоматично изпращане на заявки за не-4K филми чрез Plex Списък за гледане.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Получавайте известие, когато заявките ви за медия бъдат отхвърлени.",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {промяна} other {промени}} назад",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} behind",
|
||||
"components.ResetPassword.resetpassword": "Нулиране на паролата ви",
|
||||
"components.Settings.Notifications.smtpHost": "SMTP Host",
|
||||
"components.PlexLoginButton.signingin": "Вписване…",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Изпращайте известия, когато потребителите изпращат нови медийни заявки, които се одобряват автоматично.",
|
||||
"components.Discover.FilterSlideover.runtime": "Времетраене",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Дискусии в GitHub",
|
||||
@@ -579,7 +580,7 @@
|
||||
"components.PermissionEdit.autoapproveMovies": "Автоматично одобряване на филми",
|
||||
"components.PermissionEdit.viewissuesDescription": "Дайте разрешение за преглед на медийни проблеми, докладвани от други потребители.",
|
||||
"components.Settings.Notifications.validationPgpPrivateKey": "Трябва да предоставите валиден PGP частен ключ",
|
||||
"components.RequestList.RequestItem.tvdbid": "Идентификатор за TheTVDB",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
|
||||
"components.ManageSlideOver.markallseasonsavailable": "Маркирайте всички сезони като налични",
|
||||
"components.Settings.Notifications.botUsernameTip": "Позволете на потребителите също да започнат чат с вашия бот и да конфигурират свои собствени известия",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Основните папки се зареждат…",
|
||||
@@ -606,7 +607,7 @@
|
||||
"components.MovieDetails.MovieCast.fullcast": "Пълен актьорски състав",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "Вие изпълнявате версия <code>develop</code> на Overseerr, която се препоръчва само за тези, които допринасят за разработката или помагат при тестване на последните версии.",
|
||||
"components.Settings.RadarrModal.externalUrl": "Външен URL адрес",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "JSON съдържание",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "JSON Payload",
|
||||
"components.RequestBlock.edit": "Редакция на заявка",
|
||||
"components.Discover.FilterSlideover.runtimeText": "{minValue}-{maxValue} минути времетраене",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestFailed": "Неуспешно изпращане на тестово известие към Gotify.",
|
||||
@@ -660,7 +661,7 @@
|
||||
"components.Settings.RadarrModal.hostname": "Име на хост или IP адрес",
|
||||
"components.RequestModal.requestCancel": "Заявката за <strong>{title}</strong> е анулирана.",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Устройство по подразбиране",
|
||||
"components.RequestCard.tvdbid": "Идентификатор за TheTVDB",
|
||||
"components.RequestCard.tvdbid": "TheTVDB ID",
|
||||
"components.Settings.Notifications.toastDiscordTestSuccess": "Известието за тест към Discord е изпратено!",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Изпращайте известия, когато медийните заявки не могат да бъдат добавени към Radarr или Sonarr.",
|
||||
"components.RequestModal.requestmovietitle": "Заявка за филм",
|
||||
@@ -680,6 +681,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Нулиране до първоначално",
|
||||
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Не остават достатъчно заявки за сезона",
|
||||
"components.RequestModal.requestseasons4k": "Заявете {seasonCount} {seasonCount, plural, one {сезон} other {сезони}} в 4К",
|
||||
"components.PlexLoginButton.signinwithplex": "Впиши се",
|
||||
"components.RequestModal.pendingrequest": "Изчакваща заявка",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Изпраща се известие за тест чрез Webhook…",
|
||||
@@ -761,11 +763,12 @@
|
||||
"i18n.all": "Всичко",
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "Потребителските настройки са запазени успешно!",
|
||||
"components.Settings.notificationsettings": "Настройки за известията",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Можете също да видите тези лог файлове директно чрез <code>stdout</code> или в <code>{appDataPath}/logs/jellyseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Можете също да видите тези лог файлове директно чрез <code>stdout</code> или в <code>{appDataPath}/logs/overseerr.log</code>.",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# епизод} other {# епизоди}}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "ID на потребител в Discord",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Discord User ID",
|
||||
"components.TvDetails.firstAirDate": "Първа дата за ефир",
|
||||
"pages.errormessagewithcode": "{statusCode} - {error}",
|
||||
"components.Settings.SettingsMain.trustProxy": "Активирайте поддръжката на прокси",
|
||||
"components.UserList.validationEmail": "Трябва да предоставите валиден имейл адрес",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Потвърди парола",
|
||||
"components.Settings.SettingsLogs.logs": "Лог файлове",
|
||||
@@ -839,7 +842,7 @@
|
||||
"components.Settings.SonarrModal.editsonarr": "Редактирай Sonarr сървър",
|
||||
"components.Settings.addradarr": "Добавяне на нов Radarr сървър",
|
||||
"components.Settings.notrunning": "Не работи",
|
||||
"components.Settings.urlBase": "Базов URL адрес",
|
||||
"components.Settings.urlBase": "URL Base",
|
||||
"components.Settings.SonarrModal.rootfolder": "Основна папка",
|
||||
"components.Settings.SonarrModal.apiKey": "API ключ",
|
||||
"components.UserList.userssaved": "Потребителските права са запазени успешно!",
|
||||
@@ -932,11 +935,12 @@
|
||||
"components.Settings.SonarrModal.server4k": "4K сървър",
|
||||
"components.Settings.SettingsLogs.resumeLogs": "Продължи",
|
||||
"components.UserList.accounttype": "Тип",
|
||||
"components.Settings.webAppUrl": "URL адрес на <WebAppLink>уеб приложението</WebAppLink>",
|
||||
"components.Settings.webAppUrl": "<WebAppLink>Web App</WebAppLink> URL",
|
||||
"components.TvDetails.manageseries": "Управление на сериали",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Настройките за известяване към Discord не успяха да бъдат запазени.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Вашият акаунт в момента няма зададена парола. Конфигурирайте парола по-долу, за да разрешите влизане като „локален потребител“, използвайки своя имейл адрес.",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Нова честота",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Активиране на CSRF защита",
|
||||
"components.UserList.created": "Присъединиха",
|
||||
"components.Settings.currentlibrary": "Текуща библиотека: {name}",
|
||||
"i18n.resolved": "Разрешен",
|
||||
@@ -972,6 +976,7 @@
|
||||
"components.Settings.plex": "Plex",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex потребител",
|
||||
"components.Settings.SonarrModal.create4ksonarr": "Добавяне на нов 4K Sonarr сървър",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Позволете на Overseerr да регистрира коректно клиентските IP адреси зад прокси",
|
||||
"components.Settings.SonarrModal.selectLanguageProfile": "Изберете езиков профил",
|
||||
"components.Settings.SettingsLogs.message": "Съобщение",
|
||||
"components.Settings.SettingsMain.generalsettings": "Общи настройки",
|
||||
@@ -1121,6 +1126,7 @@
|
||||
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Базовият URL адрес трябва да има водеща наклонена черта",
|
||||
"components.Settings.serverpresetRefreshing": "Сървърите се получават…",
|
||||
"components.Settings.SonarrModal.testFirstLanguageProfiles": "Тествайте връзката за зареждане на езикови профили",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "НЕ активирайте тази настройка, освен ако не разбирате какво правите!",
|
||||
"i18n.request4k": "Заявка в 4K",
|
||||
"components.Settings.SettingsJobsCache.jobcancelled": "{jobname} е отменено.",
|
||||
"components.UserProfile.seriesrequest": "Заявки за сериали",
|
||||
@@ -1135,7 +1141,7 @@
|
||||
"components.Setup.setup": "Настройване",
|
||||
"components.UserProfile.emptywatchlist": "Мултимедията, добавена към вашия <PlexWatchlistSupportLink>списък за гледане в Plex</PlexWatchlistSupportLink>, ще се появи тук.",
|
||||
"components.Settings.enablessl": "Използвай SSL",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Позволете на потребителите да влизат, като използват своя имейл адрес и парола",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Позволете на потребителите да влизат, като използват своя имейл адрес и парола, вместо Plex OAuth",
|
||||
"components.Settings.noDefaultNon4kServer": "Ако имате само един сървър {serverType} както за съдържание, което не е 4K, така и за 4K (или ако изтегляте само 4K съдържание), вашият сървър {serverType} трябва <strong>ДА НЕ БЪДЕ</strong> обозначен като 4K сървър.",
|
||||
"components.UserList.nouserstoimport": "Няма Plex потребители за импортиране.",
|
||||
"components.UserProfile.ProfileHeader.profile": "Виж профил",
|
||||
@@ -1149,7 +1155,7 @@
|
||||
"components.Settings.SettingsJobsCache.jobsDescription": "Overseerr изпълнява определени задачи по поддръжката като редовно планирани задачи, но те също могат да бъдат ръчно задействани по-долу. Ръчното изпълнение на задание няма да промени неговия график.",
|
||||
"components.Settings.SonarrModal.animeTags": "Етикети за аниме",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "Кодирай имейлите използвайки <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.Settings.SonarrModal.baseUrl": "Базов URL адрес",
|
||||
"components.Settings.SonarrModal.baseUrl": "URL Base",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Филтрирайте съдържанието по оригинален език",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Връзката с Plex е установена успешно!",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Общ",
|
||||
@@ -1188,7 +1194,7 @@
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "Трябва да потвърдите новата парола",
|
||||
"components.UserList.usercreatedfailedexisting": "Предоставеният имейл адрес вече се използва от друг потребител.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Собственик",
|
||||
"components.TitleCard.tvdbid": "Идентификатор за TheTVDB",
|
||||
"components.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.Settings.serverRemote": "отдалечен",
|
||||
"components.UserProfile.UserSettings.menuChangePass": "Парола",
|
||||
"i18n.experimental": "Експериментален",
|
||||
@@ -1211,6 +1217,7 @@
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex {userCount, plural, one {потребител} other {потребители}} импортиран(и) успешно!",
|
||||
"i18n.status": "Статус",
|
||||
"components.Settings.SonarrModal.ssl": "Използвай SSL",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Задаване на външен API достъп само за четене (изисква HTTPS)",
|
||||
"components.TvDetails.originallanguage": "Оригинален език",
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "Нулиране на синхронизирането на изтеглянията",
|
||||
"components.UserList.usercreatedfailed": "Нещо се обърка при създаването на потребителя.",
|
||||
@@ -1219,56 +1226,5 @@
|
||||
"components.Settings.menuJobs": "Задания и кеш",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Активиране на ново влизане в Plex",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Настройките за известяване към Discord са запазени успешно!",
|
||||
"i18n.settings": "Настройки",
|
||||
"components.Login.back": "Обратно",
|
||||
"component.BlacklistBlock.blacklistdate": "Дата на добаване в черния списък",
|
||||
"components.Discover.FilterSlideover.status": "Статус",
|
||||
"components.Layout.Sidebar.blacklist": "Черен списък",
|
||||
"components.Layout.UserWarnings.emailInvalid": "Невалиден имейл адрес.",
|
||||
"components.Layout.UserWarnings.emailRequired": "Трябва да предоставите имейл адрес.",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> не е в черния списък.",
|
||||
"components.Blacklist.blacklistdate": "дата",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Предстоящи сериали",
|
||||
"components.Login.credentialerror": "Въведено неправилно име или парола.",
|
||||
"components.Blacklist.mediaTmdbId": "TMDB идентификатор",
|
||||
"components.Blacklist.mediaType": "Тип",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Необхода е парола.",
|
||||
"components.Login.adminerror": "Трябва да използвате администраторски акаунт при вписване.",
|
||||
"component.BlacklistBlock.blacklistedby": "Добавено от",
|
||||
"component.BlacklistModal.blacklisting": "Добавяне в черния списък",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Управления на медия в черния списък.",
|
||||
"components.Blacklist.blacklistedby": "{date} от {user}",
|
||||
"components.Blacklist.blacklistsettings": "Настройки на черния списък",
|
||||
"components.Blacklist.mediaName": "Заглавие",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* Това ще премахне необратимо този/тази {mediaType} от {arr}, заедно с всички свързани файлове.",
|
||||
"components.Login.noadminerror": "На сървъра не е открит администратор.",
|
||||
"components.Login.validationemailformat": "Изисква се валиден имейл адрес",
|
||||
"components.Login.username": "Потребителско име",
|
||||
"components.Login.validationhostformat": "Изисква се валиден URL адрес",
|
||||
"components.Login.validationHostnameRequired": "Трябва да въведете валидно име на хост или IP адрес",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "Базовият URL адрес не трябва да завършва с наклонена черта",
|
||||
"components.Login.validationhostrequired": "Изисква се {mediaServerName} URL адрес",
|
||||
"components.Login.description": "Тъй като това е първото Ви влизане в {applicationName}, трябва да добавите валиден имейл адрес.",
|
||||
"components.Login.emailtooltip": "Не е необходимо имейл адресът да бъде свързан с вашия {mediaServerName} сървър.",
|
||||
"components.Login.enablessl": "Използвай SSL",
|
||||
"components.Login.hostname": "{mediaServerName} URL",
|
||||
"components.Login.initialsignin": "Свързване",
|
||||
"components.Login.initialsigningin": "Установява се връзка…",
|
||||
"components.Login.invalidurlerror": "Не може да се осъществи връзка със сървъра {mediaServerName}.",
|
||||
"components.Login.loginwithapp": "Влез със {appName}",
|
||||
"components.Login.orsigninwith": "Или влез със",
|
||||
"components.Login.port": "Порт",
|
||||
"components.Login.save": "Добави",
|
||||
"components.Login.servertype": "Тип на сървъра",
|
||||
"components.Login.signinwithjellyfin": "Използвай своя {mediaServerName} акаунт",
|
||||
"components.Login.title": "Добави имейл",
|
||||
"components.Login.urlBase": "Основен URL",
|
||||
"components.Login.validationEmailFormat": "Невалиден имейл адрес",
|
||||
"components.Login.validationEmailRequired": "Трябва да въведете имейл адрес",
|
||||
"components.Login.validationPortRequired": "Трябва да въведете валиден номер на порт",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "Базовият URL адрес трявба да започва със наклонена черта",
|
||||
"components.Login.validationUrlTrailingSlash": "URL адресът не трябва да завършва с наклонена черта",
|
||||
"components.Login.validationservertyperequired": "Моля изберете тип на сървъра",
|
||||
"components.Login.validationusernamerequired": "Изисква се потребителско име",
|
||||
"components.Login.saving": "Добавяне…"
|
||||
"i18n.settings": "Настройки"
|
||||
}
|
||||
|
||||
@@ -74,8 +74,10 @@
|
||||
"components.RequestBlock.requestoverrides": "Anul·lacions de sol·licituds",
|
||||
"components.RequestBlock.profilechanged": "Perfil de qualitat",
|
||||
"components.RegionSelector.regionServerDefault": "Predeterminada ({Region})",
|
||||
"components.PlexLoginButton.signinwithplex": "Inicieu la sessió",
|
||||
"components.RegionSelector.regionDefault": "Totes les regions",
|
||||
"components.QuotaSelector.unlimited": "Il·limitat",
|
||||
"components.PlexLoginButton.signingin": "S'està iniciant la sessió…",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PersonDetails.crewmember": "Equip",
|
||||
"components.PersonDetails.birthdate": "Nascut/da {birthdate}",
|
||||
@@ -1179,9 +1181,12 @@
|
||||
"components.Discover.FilterSlideover.streamingservices": "Serveis en streaming",
|
||||
"components.Discover.FilterSlideover.studio": "Estudi",
|
||||
"components.Discover.FilterSlideover.to": "A",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Habilitar la protecció CSRF",
|
||||
"components.Settings.SettingsMain.general": "General",
|
||||
"components.Settings.SettingsMain.generalsettings": "Configuració general",
|
||||
"components.Settings.SettingsMain.cacheImages": "Activar la memòria cau d'imatges",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NO activis aquesta configuració tret que entenguis el que estàs fent!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Establir l'accés a l'API extern a només de lectura (requereix HTTPS)",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Configuració global i predeterminada per a Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Amagar el contingut disponible",
|
||||
"components.Settings.SettingsMain.apikey": "Clau API",
|
||||
@@ -1203,6 +1208,8 @@
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Permet sol·licituds parcials de sèries",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "La configuració s'ha desat correctament!",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "L'URL no ha d'acabar amb una barra inclinada final",
|
||||
"components.Settings.SettingsMain.trustProxy": "Habilitar la compatibilitat amb proxy",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permetre a Overserr registrar correctament la IP del client darrere d'un proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Has de proporcionar un títol d'aplicació",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Has de proporcionar un URL vàlid",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
|
||||
@@ -117,6 +117,8 @@
|
||||
"components.RequestBlock.profilechanged": "Profil kvality",
|
||||
"components.RegionSelector.regionServerDefault": "Výchozí ({region})",
|
||||
"components.RegionSelector.regionDefault": "Všechny regiony",
|
||||
"components.PlexLoginButton.signinwithplex": "Přihlásit se",
|
||||
"components.PlexLoginButton.signingin": "Přihlašování…",
|
||||
"components.PersonDetails.birthdate": "Narozen {birthdate}",
|
||||
"components.PersonDetails.ascharacter": "jako {character}",
|
||||
"components.PermissionEdit.viewrequests": "Zobrazit žádosti",
|
||||
@@ -1187,6 +1189,9 @@
|
||||
"components.Settings.SettingsMain.applicationurl": "Adresa URL aplikace",
|
||||
"components.Settings.SettingsMain.cacheImages": "Povolení ukládání obrázků do mezipaměti",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Ukládání obrázků z externích zdrojů do mezipaměti (vyžaduje značné množství místa na disku)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Povolit ochranu CSRF",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Toto nastavení NEPOVOLUJTE, pokud nerozumíte tomu, co děláte!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Nastavení externího přístupu k rozhraní API pouze pro čtení (vyžaduje protokol HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Obecné",
|
||||
"components.Settings.SettingsMain.generalsettings": "Obecná nastavení",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfigurace globálních a výchozích nastavení pro Jellyseerr.",
|
||||
@@ -1195,6 +1200,7 @@
|
||||
"components.Settings.SettingsMain.originallanguage": "Objevte jazyk",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtrování obsahu podle původního jazyka",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Povolení požadavků na částečné série",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Umožnit Jellyseerru správně registrovat klientské IP adresy za proxy serverem",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Obrázky v mezipaměti",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Vyrovnávací paměť obrázků",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Pokud je tato funkce povolena v nastavení, bude služba Jellyseerr proxy serverem a ukládat do mezipaměti obrázky z předem nakonfigurovaných externích zdrojů. Cached images are saved into your config folder. You can find the files in <code>{appDataPath}/cache/images</code>.",
|
||||
@@ -1202,6 +1208,7 @@
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Při generování nového klíče API se něco pokazilo.",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Při ukládání nastavení se něco pokazilo.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Nastavení úspěšně uloženo!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Povolení podpory proxy serveru",
|
||||
"components.Settings.SettingsJobsCache.image-cache-cleanup": "Čištění mezipaměti obrázků",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.Selector.searchKeywords": "Klíčová slova pro vyhledávání…",
|
||||
@@ -1247,6 +1254,7 @@
|
||||
"components.Blacklist.blacklistdate": "datum",
|
||||
"components.Blacklist.mediaName": "Jméno",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> úspěšně odstraněno ze seznamu sledování!",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Musíte poskytnout platný port",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Musíte poskytnout platné ID Discord role",
|
||||
"components.Blacklist.blacklistedby": "{date} uživatelem {user}",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Heslo je povinné.",
|
||||
@@ -1305,9 +1313,16 @@
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Kompletní sken knihoven Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Obnovení Plex tokenu",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Filtrovat obsah podle dostupnosti v regionu",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S) proxy",
|
||||
"components.Settings.SettingsMain.proxySsl": "Používat SSL pro proxy",
|
||||
"components.Settings.SettingsMain.proxyPort": "Port proxy",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Heslo proxy",
|
||||
"components.Settings.SettingsMain.proxyUser": "Uživatelské jméno proxy",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Streamovací region",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Zobrazit streamovací služby podle dostupnosti v regionu",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Region objevování",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Obcházet proxy pro lokální adresy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Hostitelské jméno proxy",
|
||||
"components.Settings.apiKey": "API klíč",
|
||||
"components.Settings.invalidurlerror": "Nelze se připojit k {mediaServerName} serveru.",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "URL pro zapomenuté heslo",
|
||||
|
||||
@@ -99,6 +99,8 @@
|
||||
"components.PersonDetails.alsoknownas": "Også Kendt Som: {names}",
|
||||
"components.PersonDetails.appearsin": "Medvirket i",
|
||||
"components.PersonDetails.crewmember": "Besætningsmedlem",
|
||||
"components.PlexLoginButton.signingin": "Logger Ind…",
|
||||
"components.PlexLoginButton.signinwithplex": "Log Ind",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} per {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.seasons": "{count, plural, one {sæson} other {sæsoner}}",
|
||||
"components.QuotaSelector.unlimited": "Ubegrænset",
|
||||
@@ -1121,7 +1123,9 @@
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Medier føjet til din <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> vises her.",
|
||||
"components.Discover.resetwarning": "Nulstil alle skydere til standard. Dette vil også slette eventuelle brugerdefinerede skydere!",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Cache eksterne billeder (anvender en betydelig mængde diskplads)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Aktivér CSRF Beskyttelse",
|
||||
"components.Settings.SettingsMain.generalsettings": "Generelle Indstillinger",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Sæt ekstern API-adgang til skrivebeskyttet (kræver HTTPS)",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Ny API-nøgle er blevet genereret!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Noget gik galt da indstillingerne skulle gemmes.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Indstillingerne er blevet gemt!",
|
||||
@@ -1150,11 +1154,14 @@
|
||||
"components.Discover.tvgenres": "Seriegenrer",
|
||||
"components.Discover.updatefailed": "Noget gik galt med at nulstille indstillingerne for Discover-tilpasning.",
|
||||
"components.Discover.updatesuccess": "Opdaterede Discover-tilpasningsindstillinger.",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Du må IKKE aktivere denne indstilling, medmindre du ved, hvad du gør!",
|
||||
"components.Settings.SettingsMain.general": "Generelt",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfigurér global- og standardindstillinger for Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Skjul Tilgængelige Medier",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Tillad delvise serieanmodninger",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Noget gik galt under genereringen af en nye API-nøgle.",
|
||||
"components.Settings.SettingsMain.trustProxy": "Aktivér Proxy-understøttelse",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Tillad Jellyseerr at registrere klienters IP addresser korrekt bag en proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Du skal angive en applikationstitel",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Du skal angive en gyldig URL",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL'en må ikke afsluttes med en skråstreg",
|
||||
|
||||
@@ -12,26 +12,26 @@
|
||||
"components.Discover.DiscoverStudio.studioMovies": "{studio}-Filme",
|
||||
"components.Discover.DiscoverTvGenre.genreSeries": "{genre}-Serien",
|
||||
"components.Discover.DiscoverTvLanguage.languageSeries": "Serien auf {language}",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Deine Merkliste",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Deine Beobachtungsliste",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Merkliste",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Film-Genres",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Film-Genres",
|
||||
"components.Discover.MovieGenreList.moviegenres": "Filmgenres",
|
||||
"components.Discover.MovieGenreSlider.moviegenres": "Filmgenres",
|
||||
"components.Discover.NetworkSlider.networks": "Sender",
|
||||
"components.Discover.StudioSlider.studios": "Filmstudio",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Serien-Genres",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Serien-Genres",
|
||||
"components.Discover.TvGenreList.seriesgenres": "Seriengenres",
|
||||
"components.Discover.TvGenreSlider.tvgenres": "Seriengenres",
|
||||
"components.Discover.discover": "Entdecken",
|
||||
"components.Discover.emptywatchlist": "Hier erscheinen deine zur <PlexWatchlistSupportLink>Plex Merkliste</PlexWatchlistSupportLink> hinzugefügten Medien.",
|
||||
"components.Discover.plexwatchlist": "Deine Merkliste",
|
||||
"components.Discover.emptywatchlist": "Hier erscheinen deine zur <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> hinzugefügte Medien.",
|
||||
"components.Discover.plexwatchlist": "Deine Watchlist",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Kürzlich hinzugefügt",
|
||||
"components.Discover.popularmovies": "Beliebte Filme",
|
||||
"components.Discover.populartv": "Beliebte Serien",
|
||||
"components.Discover.recentlyAdded": "Kürzlich hinzugefügt",
|
||||
"components.Discover.recentrequests": "Bisherige Anfragen",
|
||||
"components.Discover.recentrequests": "Vorherige Anfragen",
|
||||
"components.Discover.trending": "Trends",
|
||||
"components.Discover.upcoming": "Demnächst erscheinende Filme",
|
||||
"components.Discover.upcomingmovies": "Demnächst erscheinende Filme",
|
||||
"components.Discover.upcomingtv": "Demnächst erscheinende Serien",
|
||||
"components.Discover.upcoming": "Kommende Filme",
|
||||
"components.Discover.upcomingmovies": "Kommende Filme",
|
||||
"components.Discover.upcomingtv": "Kommende Serien",
|
||||
"components.DownloadBlock.estimatedtime": "Geschätzte {time}",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Staffel {seasonNumber} Episode {episodeNumber}",
|
||||
"components.IssueDetails.IssueComment.areyousuredelete": "Soll dieser Kommentar wirklich gelöscht werden?",
|
||||
@@ -108,7 +108,7 @@
|
||||
"components.IssueModal.issueVideo": "Video",
|
||||
"components.LanguageSelector.languageServerDefault": "Standard ({language})",
|
||||
"components.LanguageSelector.originalLanguageDefault": "Alle Sprachen",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Anzeigesprache",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Sprache darstellen",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Nach Filmen und Serien suchen",
|
||||
"components.Layout.Sidebar.dashboard": "Entdecken",
|
||||
"components.Layout.Sidebar.issues": "Probleme",
|
||||
@@ -125,23 +125,23 @@
|
||||
"components.Layout.VersionStatus.outofdate": "Veraltet",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr Entwicklung",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr stabil",
|
||||
"components.Login.email": "E-Mail Adresse",
|
||||
"components.Login.email": "E-Mail-Adresse",
|
||||
"components.Login.forgotpassword": "Passwort vergessen?",
|
||||
"components.Login.loginerror": "Beim Anmelden ist etwas schief gelaufen.",
|
||||
"components.Login.password": "Passwort",
|
||||
"components.Login.signin": "Anmelden",
|
||||
"components.Login.signingin": "Anmelden…",
|
||||
"components.Login.signingin": "Anmelden …",
|
||||
"components.Login.signinheader": "Anmelden um fortzufahren",
|
||||
"components.Login.signinwithoverseerr": "Verwende dein {applicationTitle}-Konto",
|
||||
"components.Login.signinwithplex": "Benutze dein Plex-Konto",
|
||||
"components.Login.validationemailrequired": "Du musst eine gültige E-Mail Adresse angeben",
|
||||
"components.Login.validationemailrequired": "Du musst eine gültige E-Mail-Adresse angeben",
|
||||
"components.Login.validationpasswordrequired": "Du musst ein Passwort angeben",
|
||||
"components.ManageSlideOver.alltime": "Gesamte Zeit",
|
||||
"components.ManageSlideOver.downloadstatus": "Downloads",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Erweitert",
|
||||
"components.ManageSlideOver.manageModalAdvanced": "Fortgeschrittene",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "Daten löschen",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Dadurch werden alle Daten für diesen {mediaType} unwiderruflich entfernt, einschließlich aller Anfragen. Wenn dieses Element in deiner {mediaServerName}-Bibliothek existiert, werden die Medieninformationen beim nächsten Scan neu erstellt.",
|
||||
"components.ManageSlideOver.manageModalIssues": "Offene Probleme",
|
||||
"components.ManageSlideOver.manageModalIssues": "Problem eröffnen",
|
||||
"components.ManageSlideOver.manageModalMedia": "Medien",
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4K Medien",
|
||||
"components.ManageSlideOver.manageModalNoRequests": "Keine Anfragen.",
|
||||
@@ -172,7 +172,7 @@
|
||||
"components.MovieDetails.originaltitle": "Originaltitel",
|
||||
"components.MovieDetails.overview": "Übersicht",
|
||||
"components.MovieDetails.overviewunavailable": "Übersicht nicht verfügbar.",
|
||||
"components.MovieDetails.physicalrelease": "DVD/Bluray-Veröffentlichung",
|
||||
"components.MovieDetails.physicalrelease": "DVD/Bluray-Veröffentlichungen",
|
||||
"components.MovieDetails.productioncountries": "Produktions {countryCount, plural, one {Land} other {Länder}}",
|
||||
"components.MovieDetails.recommendations": "Empfehlungen",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Veröffentlichungstermin} other {Veröffentlichungstermine}}",
|
||||
@@ -195,7 +195,7 @@
|
||||
"components.NotificationTypeSelector.adminissueresolvedDescription": "Sende eine Benachrichtigung, wenn andere Benutzer Kommentare zu Themen abgeben.",
|
||||
"components.NotificationTypeSelector.issuecomment": "Problem Kommentar",
|
||||
"components.NotificationTypeSelector.issuecommentDescription": "Sende eine Benachrichtigungen, wenn Probleme neue Kommentare erhalten.",
|
||||
"components.NotificationTypeSelector.issuecreated": "Problem gemeldet",
|
||||
"components.NotificationTypeSelector.issuecreated": "Gemeldetes Problem",
|
||||
"components.NotificationTypeSelector.issuecreatedDescription": "Senden eine Benachrichtigungen, wenn Probleme gemeldet werden.",
|
||||
"components.NotificationTypeSelector.issuereopened": "Problem wiedereröffnet",
|
||||
"components.NotificationTypeSelector.issuereopenedDescription": "Sende eine Benachrichtigung, wenn Probleme wieder geöffnet werden.",
|
||||
@@ -205,8 +205,8 @@
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Sende eine Benachrichtigung, wenn das angeforderte Medium automatisch genehmigt wird.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Anfrage genehmigt",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Sende Benachrichtigungen, wenn angeforderte Medien manuell genehmigt wurden.",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Anfrage automatisch übermittelt",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Erhalten eine Benachrichtigung, wenn neue Medienanfragen für Objekte auf deiner Merkliste automatisch übermittelt werden.",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Automatisch übermittelte Anfrage",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Erhalten eine Benachrichtigung, wenn neue Medienanfragen für Objekte auf deiner Watchlist automatisch übermittelt werden.",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Anfrage verfügbar",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Sendet Benachrichtigungen, wenn angeforderte Medien verfügbar werden.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Anfrage abgelehnt",
|
||||
@@ -216,16 +216,16 @@
|
||||
"components.NotificationTypeSelector.mediarequested": "Anfrage in Bearbeitung",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Sende Benachrichtigungen, wenn neue Medien angefordert wurden und auf Genehmigung warten.",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Benachrichtigungstypen",
|
||||
"components.NotificationTypeSelector.userissuecommentDescription": "Sende eine Benachrichtigung, wenn dein Problem neue Kommentare erhält.",
|
||||
"components.NotificationTypeSelector.userissuecommentDescription": "Sende eine Benachrichtigung, wenn andere Benutzer Kommentare zu Problemen abgeben.",
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "Lassen dich benachrichtigen, wenn andere Benutzer Probleme melden.",
|
||||
"components.NotificationTypeSelector.userissuereopenedDescription": "Sende eine Benachrichtigung, wenn die von dir gemeldeten Probleme wieder geöffnet werden.",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Sende eine Benachrichtigung, wenn dein Problem gelöst wurde.",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Sende eine Benachrichtigung, wenn andere Benutzer Kommentare zu Problemen abgeben.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Werde benachrichtigt, wenn andere Nutzer Medien anfordern, welche automatisch angenommen werden.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Werde benachrichtigt, wenn deine Medienanfrage angenommen wurde.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Sende eine Benachrichtigung, wenn deine Medienanfragen verfügbar sind.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Werde benachrichtigt, wenn Ihre Medienanfrage angenommen wurde.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Sende eine Benachrichtigung, wenn Ihre Medienanfragen verfügbar sind.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Werde benachrichtigt, wenn deine Medienanfrage abgelehnt wurde.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Werde benachrichtigt, wenn die angeforderten Medien bei der Hinzufügung zu Radarr oder Sonarr fehlschlagen.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Werde benachrichtigt, wenn andere Nutzer eine Medie anfordern, welches eine Genehmigung erfordert.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Werde benachrichtigt, wenn andere Nutzer ein Medium anfordern, welches eine Genehmigung erfordert.",
|
||||
"components.PermissionEdit.admin": "Admin",
|
||||
"components.PermissionEdit.adminDescription": "Voller Administratorzugriff. Umgeht alle anderen Rechteabfragen.",
|
||||
"components.PermissionEdit.advancedrequest": "Erweiterte Anfragen",
|
||||
@@ -242,19 +242,19 @@
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "Autorisierung der automatischen Freigabe von Anfragen für nicht-4K-Filme.",
|
||||
"components.PermissionEdit.autoapproveSeries": "Automatische Genehmigung von Serien",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Autorisierung der automatischen Freigabe von Anfragen für nicht-4K-Serien.",
|
||||
"components.PermissionEdit.autorequest": "Automatische Anfrage aus Plex-Merkliste",
|
||||
"components.PermissionEdit.autorequestDescription": "Autorisierung zur automatischen Anfrage von Nicht-4K-Medien über die Plex Merkliste.",
|
||||
"components.PermissionEdit.autorequest": "Automatische Anfrage",
|
||||
"components.PermissionEdit.autorequestDescription": "Autorisierung zur automatischen Anfrage von Nicht-4K-Medien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.autorequestMovies": "Filme automatisch anfragen",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Autorisierung zur automatischen Anfrage von Nicht-4K-Medien über die Plex Merkliste.",
|
||||
"components.PermissionEdit.autorequestSeries": "Serien automatisch anfragen",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Autorisierung der automatischen Anfrage von Nicht-4K-Serien über die Plex Merkliste.",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Autorisierung zur automatischen Anfrage von Nicht-4K-Medien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.autorequestSeries": "Auto-Anfrage-Serien",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "Autorisierung der automatischen Anfrage von Nicht-4K-Serien über die Plex Watchlist.",
|
||||
"components.PermissionEdit.createissues": "Probleme melden",
|
||||
"components.PermissionEdit.createissuesDescription": "Autorisierung zur Meldung von Medienproblemen.",
|
||||
"components.PermissionEdit.manageissues": "Probleme verwalten",
|
||||
"components.PermissionEdit.manageissuesDescription": "Autorisierung zur Verwaltung von Medienproblemen.",
|
||||
"components.PermissionEdit.managerequests": "Anfragen verwalten",
|
||||
"components.PermissionEdit.managerequestsDescription": "Autorisierung zur Verwaltung von Medienanfragen. Alle Anfragen, die von einem Benutzer mit dieser Berechtigung gestellt werden, werden automatisch genehmigt.",
|
||||
"components.PermissionEdit.request": "Anfragen senden",
|
||||
"components.PermissionEdit.request": "Anfrage",
|
||||
"components.PermissionEdit.request4k": "4K anfragen",
|
||||
"components.PermissionEdit.request4kDescription": "Autorisierung zur Anfrage von Medien in 4K.",
|
||||
"components.PermissionEdit.request4kMovies": "4K Filme anfragen",
|
||||
@@ -274,15 +274,17 @@
|
||||
"components.PermissionEdit.viewrecentDescription": "Autorisierung zur Anzeige der Liste der kürzlich hinzugefügten Medien.",
|
||||
"components.PermissionEdit.viewrequests": "Anfragen anzeigen",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Autorisierung zur Anzeige der von anderen Benutzern eingereichten Medienanfragen.",
|
||||
"components.PermissionEdit.viewwatchlists": "{mediaServerName} Merklisten anzeigen",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Autorisierung zur Anzeige von {mediaServerName} Merklisten anderer Benutzer.",
|
||||
"components.PermissionEdit.viewwatchlists": "{mediaServerName} Watchlists anzeigen",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Autorisierung zur Anzeige von {mediaServerName} Watchlists anderer Benutzer.",
|
||||
"components.PersonDetails.alsoknownas": "Auch bekannt unter: {names}",
|
||||
"components.PersonDetails.appearsin": "Auftritte",
|
||||
"components.PersonDetails.ascharacter": "als {character}",
|
||||
"components.PersonDetails.birthdate": "Geboren am {birthdate}",
|
||||
"components.PersonDetails.crewmember": "Crew",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.QuotaSelector.days": "{count, plural, one {Tag} other {Tage}}",
|
||||
"components.PlexLoginButton.signingin": "Anmeldung läuft …",
|
||||
"components.PlexLoginButton.signinwithplex": "Anmelden",
|
||||
"components.QuotaSelector.days": "{count, plural, one {tag} other {tage}}",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} pro {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {Film} other {Filme}}",
|
||||
"components.QuotaSelector.seasons": "{count, plural, one {Staffel} other {Staffeln}}",
|
||||
@@ -303,14 +305,14 @@
|
||||
"components.RequestBlock.rootfolder": "Stammordner",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Staffel} other {Staffeln}}",
|
||||
"components.RequestBlock.server": "Zielserver",
|
||||
"components.RequestButton.approve4krequests": "Genehmige {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Anfragen}}",
|
||||
"components.RequestButton.approve4krequests": "Genehmige {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Requests}}",
|
||||
"components.RequestButton.approverequest": "Anfrage genehmigen",
|
||||
"components.RequestButton.approverequest4k": "4K Anfrage genehmigen",
|
||||
"components.RequestButton.approverequests": "Genehmige {requestCount, plural, one {Anfrage} other {{requestCount} Anfragen}}",
|
||||
"components.RequestButton.decline4krequests": "Lehne {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Anfragen}} ab",
|
||||
"components.RequestButton.approverequests": "Genehmige {requestCount, plural, one {Anfrage} other {{requestCount} Requests}}",
|
||||
"components.RequestButton.decline4krequests": "Lehne {requestCount, plural, one {4K Anfrage} other {{requestCount} 4K Requests}} ab",
|
||||
"components.RequestButton.declinerequest": "Anfrage ablehnen",
|
||||
"components.RequestButton.declinerequest4k": "4K Anfrage ablehnen",
|
||||
"components.RequestButton.declinerequests": "Lehne {requestCount, plural, one {Anfrage} other {{requestCount} Anfragen}} ab",
|
||||
"components.RequestButton.declinerequests": "Lehne {requestCount, plural, one {Anfrage} other {{requestCount} Requests}} ab",
|
||||
"components.RequestButton.requestmore": "Mehr anfragen",
|
||||
"components.RequestButton.requestmore4k": "Mehr in 4K anfragen",
|
||||
"components.RequestButton.viewrequest": "Anfrage anzeigen",
|
||||
@@ -374,7 +376,7 @@
|
||||
"components.RequestModal.autoapproval": "Automatische Genehmigung",
|
||||
"components.RequestModal.cancel": "Anfrage abbrechen",
|
||||
"components.RequestModal.edit": "Anfrage bearbeiten",
|
||||
"components.RequestModal.errorediting": "Beim bearbeiten der Anfrage ist etwas schief gelaufen.",
|
||||
"components.RequestModal.errorediting": "Beim Bearbeiten der Anfrage ist etwas schief gelaufen.",
|
||||
"components.RequestModal.numberofepisodes": "Anzahl der Folgen",
|
||||
"components.RequestModal.pending4krequest": "Ausstehende 4K Anfrage",
|
||||
"components.RequestModal.pendingapproval": "Deine Anfrage steht noch aus.",
|
||||
@@ -402,15 +404,15 @@
|
||||
"components.RequestModal.selectmovies": "Wähle Film(e)",
|
||||
"components.RequestModal.selectseason": "Staffel(n) Auswählen",
|
||||
"components.ResetPassword.confirmpassword": "Passwort bestätigen",
|
||||
"components.ResetPassword.email": "E-Mail Adresse",
|
||||
"components.ResetPassword.email": "E-Mail-Adresse",
|
||||
"components.ResetPassword.emailresetlink": "Wiederherstellungs-Link per E-Mail senden",
|
||||
"components.ResetPassword.gobacklogin": "Zurück zur Anmeldeseite",
|
||||
"components.ResetPassword.password": "Passwort",
|
||||
"components.ResetPassword.passwordreset": "Passwort zurücksetzen",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Ein Link zum Zurücksetzen des Passworts wird an die angegebene E-Mail Adresse gesendet, wenn sie einem gültigen Benutzer zugeordnet ist.",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Ein Link zum Zurücksetzen des Passworts wird an die angegebene E-Mail-Adresse gesendet, wenn sie einem gültigen Benutzer zugeordnet ist.",
|
||||
"components.ResetPassword.resetpassword": "Passwort zurücksetzen",
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "Passwort wurde erfolgreich zurückgesetzt!",
|
||||
"components.ResetPassword.validationemailrequired": "Du musst eine gültige E-Mail Adresse angeben",
|
||||
"components.ResetPassword.validationemailrequired": "Du musst eine gültige E-Mail-Adresse angeben",
|
||||
"components.ResetPassword.validationpasswordmatch": "Passwörter müssen übereinstimmen",
|
||||
"components.ResetPassword.validationpasswordminchars": "Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.ResetPassword.validationpasswordrequired": "Du musst ein Passwort angeben",
|
||||
@@ -437,7 +439,7 @@
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSending": "LunaSea Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSuccess": "LunaSea Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Geben sie eine gültige URL an",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Geben sie eine valide URL an",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Deine Benutzer oder Geräte basierende <LunaSeaLink>Benachrichtigungs-Webhook URL</LunaSeaLink>",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "Zugangstoken",
|
||||
@@ -462,15 +464,15 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Benutzer- oder Gruppenschlüssel",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "Ihr 30-stelliger <UsersGroupsLink>Nutzer oder Gruppen Identifikator</UsersGroupsLink>",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Du musst ein gültiges Anwendungstoken angeben",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "Du musst mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Du musst einen gültigen Benutzer-/Gruppenschlüssel angeben",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Sie müssen einen gültigen Benutzer-/Gruppenschlüssel angeben",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent aktivieren",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Slack-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Slack-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestFailed": "Slack Test Benachrichtigung fehlgeschlagen.",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSending": "Slack Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSuccess": "Slack Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "Du musst mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "Du musst eine gültige URL angeben",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrlTip": "Erstelle eine <WebhookLink>Eingehende Webhook</WebhookLink> integration",
|
||||
@@ -491,7 +493,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "Webhook Test Benachrichtigung wird gesendet…",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "Webhook Test Benachrichtigung gesendet!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "Du musst einen gültigen JSON-Inhalt angeben",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Du musst mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Sie müssen mindestens einen Benachrichtigungstypen auswählen",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "Du musst eine gültige URL angeben",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "Webhook-URL",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Webhook-Benachrichtigungseinstellungen konnten nicht gespeichert werden.",
|
||||
@@ -544,7 +546,7 @@
|
||||
"components.Settings.Notifications.validationEmail": "Du musst eine gültige E-Mail-Adresse angeben",
|
||||
"components.Settings.Notifications.validationPgpPassword": "Ein PGP-Passwort muss angeben werden",
|
||||
"components.Settings.Notifications.validationPgpPrivateKey": "Ein gültiger privater PGP-Schlüssel muss angeben werden",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Du musst einen gültigen Hostnamen oder IP-Adresse angeben",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Du musst einen gültigen Hostnamen oder eine gültige IP-Adresse angeben",
|
||||
"components.Settings.Notifications.validationSmtpPortRequired": "Du musst einen gültigen Port angeben",
|
||||
"components.Settings.Notifications.validationTypes": "Es muss mindestens ein Benachrichtigungstyp ausgewählt werden",
|
||||
"components.Settings.Notifications.validationUrl": "Du musst eine gültige URL angeben",
|
||||
@@ -555,18 +557,18 @@
|
||||
"components.Settings.RadarrModal.apiKey": "API-Schlüssel",
|
||||
"components.Settings.RadarrModal.baseUrl": "Basis-URL",
|
||||
"components.Settings.RadarrModal.create4kradarr": "Neuen 4K Radarr Server hinzufügen",
|
||||
"components.Settings.RadarrModal.createradarr": "Neuen Radarr Server hinzufügen",
|
||||
"components.Settings.RadarrModal.createradarr": "Neuen Radarr-Server hinzufügen",
|
||||
"components.Settings.RadarrModal.default4kserver": "Standard 4K Server",
|
||||
"components.Settings.RadarrModal.defaultserver": "Standardserver",
|
||||
"components.Settings.RadarrModal.edit4kradarr": "4K Radarr Server bearbeiten",
|
||||
"components.Settings.RadarrModal.editradarr": "Radarr Server bearbeiten",
|
||||
"components.Settings.RadarrModal.editradarr": "Radarr-Server bearbeiten",
|
||||
"components.Settings.RadarrModal.enableSearch": "Automatische Suche aktivieren",
|
||||
"components.Settings.RadarrModal.externalUrl": "Externe URL",
|
||||
"components.Settings.RadarrModal.hostname": "Hostname oder IP-Adresse",
|
||||
"components.Settings.RadarrModal.inCinemas": "Im Kino",
|
||||
"components.Settings.RadarrModal.loadingTags": "Lade Tags…",
|
||||
"components.Settings.RadarrModal.loadingprofiles": "Qualitätsprofile werden geladen…",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Stammordner werden geladen…",
|
||||
"components.Settings.RadarrModal.loadingprofiles": "Qualitätsprofile werden geladen …",
|
||||
"components.Settings.RadarrModal.loadingrootfolders": "Stammordner werden geladen …",
|
||||
"components.Settings.RadarrModal.minimumAvailability": "Mindestverfügbarkeit",
|
||||
"components.Settings.RadarrModal.notagoptions": "Keine Tags.",
|
||||
"components.Settings.RadarrModal.port": "Port",
|
||||
@@ -592,7 +594,7 @@
|
||||
"components.Settings.RadarrModal.validationApplicationUrlTrailingSlash": "Die URL darf nicht mit einem abschließenden Schrägstrich enden",
|
||||
"components.Settings.RadarrModal.validationBaseUrlLeadingSlash": "Die URL-Basis muss einen vorangestellten Schrägstrich enthalten",
|
||||
"components.Settings.RadarrModal.validationBaseUrlTrailingSlash": "Die Basis-URL darf nicht mit einem Schrägstrich enden",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Es muss ein gültiger Hostname oder IP-Adresse angegeben werden",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Es muss ein gültiger Hostname oder eine IP-Adresse angegeben werden",
|
||||
"components.Settings.RadarrModal.validationMinimumAvailabilityRequired": "Du musst eine Mindestverfügbarkeit auswählen",
|
||||
"components.Settings.RadarrModal.validationNameRequired": "Du musst einen Servernamen angeben",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Du musst einen Port angeben",
|
||||
@@ -607,16 +609,16 @@
|
||||
"components.Settings.SettingsAbout.Releases.viewongithub": "Auf GitHub anzeigen",
|
||||
"components.Settings.SettingsAbout.about": "Über",
|
||||
"components.Settings.SettingsAbout.appDataPath": "Datenverzeichnis",
|
||||
"components.Settings.SettingsAbout.betawarning": "Das ist eine BETA Software. Einige Funktionen könnten nicht richtig/stabil funktionieren. Bitte sämtliche Fehler auf GitHub melden!",
|
||||
"components.Settings.SettingsAbout.betawarning": "Dies ist eine BETA Software. Einige Funktionen könnten nicht funktionieren oder nicht stabil funktionieren. Bitte auf GitHub alle Fehler melden!",
|
||||
"components.Settings.SettingsAbout.documentation": "Dokumentation",
|
||||
"components.Settings.SettingsAbout.gettingsupport": "Hilfe erhalten",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "GitHub-Diskussionen",
|
||||
"components.Settings.SettingsAbout.helppaycoffee": "Unterstütze das Projekt mit einem Kaffee",
|
||||
"components.Settings.SettingsAbout.helppaycoffee": "Hilf uns Kaffee zu bezahlen",
|
||||
"components.Settings.SettingsAbout.outofdate": "Veraltet",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Über Jellyseerr",
|
||||
"components.Settings.SettingsAbout.preferredmethod": "Bevorzugt",
|
||||
"components.Settings.SettingsAbout.runningDevelop": "Sie benutzen den Branch<code>develop</code> von Jellyseerr, welcher nur für Entwickler, bzw. \"Bleeding-Edge\" Tests empfohlen wird.",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Unterstütze Overseerr",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Unterstütze Jellyseerr",
|
||||
"components.Settings.SettingsAbout.timezone": "Zeitzone",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Medien insgesamt",
|
||||
"components.Settings.SettingsAbout.totalrequests": "Anfragen insgesamt",
|
||||
@@ -625,16 +627,16 @@
|
||||
"components.Settings.SettingsJobsCache.cache": "Cache",
|
||||
"components.Settings.SettingsJobsCache.cacheDescription": "Zur Leistungsoptimierung und um unnötige Anfragen zu minimieren, speichert Jellyseerr Anfragen zwischen.",
|
||||
"components.Settings.SettingsJobsCache.cacheflushed": "{cachename} Cache geleert.",
|
||||
"components.Settings.SettingsJobsCache.cachehits": "Cache-Treffer",
|
||||
"components.Settings.SettingsJobsCache.cachehits": "Treffer",
|
||||
"components.Settings.SettingsJobsCache.cachekeys": "Schlüssel insgesamt",
|
||||
"components.Settings.SettingsJobsCache.cacheksize": "Schlüsselgröße",
|
||||
"components.Settings.SettingsJobsCache.cachemisses": "Cache-Fehlzugriff",
|
||||
"components.Settings.SettingsJobsCache.cachemisses": "Verfehlte",
|
||||
"components.Settings.SettingsJobsCache.cachename": "Cache Name",
|
||||
"components.Settings.SettingsJobsCache.cachevsize": "Wertgröße",
|
||||
"components.Settings.SettingsJobsCache.canceljob": "Aufgabe abbrechen",
|
||||
"components.Settings.SettingsJobsCache.command": "Befehl",
|
||||
"components.Settings.SettingsJobsCache.download-sync": "Download Synchronisierung",
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "Download Synchronisierung Zurücksetzen",
|
||||
"components.Settings.SettingsJobsCache.download-sync-reset": "Download Synchronisierung Zurücksetzung",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedule": "Job ändern",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Aktuelle Häufigkeit",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Häufigkeit",
|
||||
@@ -660,7 +662,7 @@
|
||||
"components.Settings.SettingsJobsCache.nextexecution": "Nächste Ausführung",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Vollständiger Plex Bibliotheken Scan",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Scan der zuletzt hinzugefügten Plex Medien",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex Merklisten Sync",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Plex-Watchlist Sync",
|
||||
"components.Settings.SettingsJobsCache.process": "Prozess",
|
||||
"components.Settings.SettingsJobsCache.radarr-scan": "Radarr Scan",
|
||||
"components.Settings.SettingsJobsCache.runnow": "Jetzt ausführen",
|
||||
@@ -677,7 +679,7 @@
|
||||
"components.Settings.SettingsLogs.level": "Schweregrad",
|
||||
"components.Settings.SettingsLogs.logDetails": "Protokolldetails",
|
||||
"components.Settings.SettingsLogs.logs": "Protokolle",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Du kannst diese Protokolle auch direkt über <code>stdout</code> oder in <code>{appDataPath}/logs/jellyseerr.log</code> anzeigen.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Du kannst diese Protokolle auch direkt über <code>stdout</code> oder in <code>{appDataPath}/logs/overseerr.log</code> anzeigen.",
|
||||
"components.Settings.SettingsLogs.message": "Nachricht",
|
||||
"components.Settings.SettingsLogs.pauseLogs": "Pause",
|
||||
"components.Settings.SettingsLogs.resumeLogs": "Fortsetzen",
|
||||
@@ -685,11 +687,11 @@
|
||||
"components.Settings.SettingsLogs.time": "Zeitstempel",
|
||||
"components.Settings.SettingsLogs.viewdetails": "Details anzeigen",
|
||||
"components.Settings.SettingsUsers.defaultPermissions": "Standardberechtigungen",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Initiale Berechtigungen neuem Nutzer zugewiesen",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Iniziale Berechtigungen für neue Nutzer",
|
||||
"components.Settings.SettingsUsers.localLogin": "Lokale Anmeldung aktivieren",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Nutzer dürfen sich mit ihrer E-Mail-Adresse und Passwort anmelden",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Globales Filmanfragen-Limit",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Aktiviere neue {mediaServerName} Anmeldung",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Berechtigt Nutzer sich über E-Mail und Passwort einzuloggen, statt Plex OAuth",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Globales Filmanfragenlimit",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Aktiviere neuen {mediaServerName} Log-In",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Erlaube {mediaServerName} Nutzer Log-In, ohne diese zuerst importieren zu müssen",
|
||||
"components.Settings.SettingsUsers.toastSettingsFailure": "Beim Speichern der Einstellungen ist ein Fehler aufgetreten.",
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "Benutzereinstellungen erfolgreich gespeichert!",
|
||||
@@ -709,15 +711,15 @@
|
||||
"components.Settings.SonarrModal.default4kserver": "Standard 4K Server",
|
||||
"components.Settings.SonarrModal.defaultserver": "Standardserver",
|
||||
"components.Settings.SonarrModal.edit4ksonarr": "4K Sonarr Server bearbeiten",
|
||||
"components.Settings.SonarrModal.editsonarr": "Sonarr Server bearbeiten",
|
||||
"components.Settings.SonarrModal.editsonarr": "Sonarr-Server bearbeiten",
|
||||
"components.Settings.SonarrModal.enableSearch": "Automatische Suche aktivieren",
|
||||
"components.Settings.SonarrModal.externalUrl": "Externe URL",
|
||||
"components.Settings.SonarrModal.hostname": "Hostname oder IP-Adresse",
|
||||
"components.Settings.SonarrModal.languageprofile": "Sprachprofil",
|
||||
"components.Settings.SonarrModal.loadingTags": "Lade Tags…",
|
||||
"components.Settings.SonarrModal.loadinglanguageprofiles": "Sprachprofile werden geladen…",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "Qualitätsprofile werden geladen…",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "Stammordner werden geladen…",
|
||||
"components.Settings.SonarrModal.loadinglanguageprofiles": "Sprachprofile werden geladen …",
|
||||
"components.Settings.SonarrModal.loadingprofiles": "Qualitätsprofile werden geladen …",
|
||||
"components.Settings.SonarrModal.loadingrootfolders": "Stammordner werden geladen …",
|
||||
"components.Settings.SonarrModal.notagoptions": "Keine Tags.",
|
||||
"components.Settings.SonarrModal.port": "Port",
|
||||
"components.Settings.SonarrModal.qualityprofile": "Qualitätsprofil",
|
||||
@@ -743,16 +745,16 @@
|
||||
"components.Settings.SonarrModal.validationApplicationUrlTrailingSlash": "Die URL darf nicht mit einem abschließenden Schrägstrich enden",
|
||||
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Die Basis-URL muss einen führenden Schrägstrich haben",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "Die Basis-URL darf nicht mit einem abschließenden Schrägstrich enden",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Du musst einen Hostnamen oder IP-Adresse angeben",
|
||||
"components.Settings.SonarrModal.validationHostnameRequired": "Du musst einen Hostnamen oder eine IP-Adresse angeben",
|
||||
"components.Settings.SonarrModal.validationLanguageProfileRequired": "Du musst ein Qualitätsprofil auswählen",
|
||||
"components.Settings.SonarrModal.validationNameRequired": "Du musst einen Servernamen angeben",
|
||||
"components.Settings.SonarrModal.validationPortRequired": "Du musst einen Port angeben",
|
||||
"components.Settings.SonarrModal.validationProfileRequired": "Du musst ein Qualitätsprofil auswählen",
|
||||
"components.Settings.SonarrModal.validationRootFolderRequired": "Du musst einen Stammordner auswählen",
|
||||
"components.Settings.activeProfile": "Aktives Profil",
|
||||
"components.Settings.addradarr": "Radarr Server hinzufügen",
|
||||
"components.Settings.addradarr": "Radarr-Server hinzufügen",
|
||||
"components.Settings.address": "Adresse",
|
||||
"components.Settings.addsonarr": "Sonarr Server hinzufügen",
|
||||
"components.Settings.addsonarr": "Sonarr-Server hinzufügen",
|
||||
"components.Settings.advancedTooltip": "Bei falscher Konfiguration dieser Einstellung, kann dies zu einer Funktionsstörung führen",
|
||||
"components.Settings.cancelscan": "Durchsuchung abbrechen",
|
||||
"components.Settings.copied": "API-Schlüssel in die Zwischenablage kopiert.",
|
||||
@@ -788,12 +790,12 @@
|
||||
"components.Settings.notificationsettings": "Benachrichtigungseinstellungen",
|
||||
"components.Settings.notrunning": "Nicht aktiv",
|
||||
"components.Settings.plex": "Plex",
|
||||
"components.Settings.plexlibraries": "Plex Bibliotheken",
|
||||
"components.Settings.plexlibrariesDescription": "Die Bibliotheken, welche Jellyseerr nach Titeln durchsucht. Richte deine Plex Verbindungseinstellungen ein und speichere sie. Sollten keine aufgelistet sein, klicke auf die Schaltfläche weiter unten.",
|
||||
"components.Settings.plexsettings": "Plex Einstellungen",
|
||||
"components.Settings.plexlibraries": "Plex-Bibliotheken",
|
||||
"components.Settings.plexlibrariesDescription": "Die Bibliotheken, welche Jellyseerr nach Titeln durchsucht. Richte deine Plex Verbindungseinstellungen ein und speichere sie. Sollten keine aufgelistet sein, klicke auf den Button weiter unten.",
|
||||
"components.Settings.plexsettings": "Plex-Einstellungen",
|
||||
"components.Settings.plexsettingsDescription": "Konfiguriere die Einstellungen deines Plex Servers. Jellyseerr durchsucht deine Plex Bibliotheken zur Feststellung der verfügbaren Inhalte.",
|
||||
"components.Settings.port": "Port",
|
||||
"components.Settings.radarrsettings": "Radarr Einstellungen",
|
||||
"components.Settings.radarrsettings": "Radarr-Einstellungen",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr muss neu gestartet werden, damit Änderungen angewendet werden können",
|
||||
"components.Settings.scan": "Bibliotheken synchronisieren",
|
||||
"components.Settings.scanning": "Synchronisieren…",
|
||||
@@ -801,29 +803,29 @@
|
||||
"components.Settings.serverRemote": "entfernt",
|
||||
"components.Settings.serverSecure": "Sicher",
|
||||
"components.Settings.serverpreset": "Server",
|
||||
"components.Settings.serverpresetLoad": "Klicke auf die Schaltfläche, um verfügbare Server zu laden",
|
||||
"components.Settings.serverpresetLoad": "Drück den Knopf, um verfügbare Server zu laden",
|
||||
"components.Settings.serverpresetManualMessage": "Manuelle Konfiguration",
|
||||
"components.Settings.serverpresetRefreshing": "Rufe Server ab…",
|
||||
"components.Settings.serverpresetRefreshing": "Rufe Server ab …",
|
||||
"components.Settings.serviceSettingsDescription": "Konfiguriere unten deine {serverType}-Server. Du kannst mehrere {serverType}-Server verbinden, aber nur zwei davon können als Standard markiert werden (ein Nicht-4K- und ein 4K-Server). Administratoren können den Server überschreiben, auf dem neue Anfragen vor der Genehmigung verarbeitet werden.",
|
||||
"components.Settings.services": "Dienste",
|
||||
"components.Settings.services": "Dienstleistungen",
|
||||
"components.Settings.settingUpPlexDescription": "Um Plex einzurichten, können die Daten manuell eintragen oder einen Server ausgewählt werden, welcher von <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink> abgerufen wurde. Drück den Knopf rechts neben dem Dropdown-Menü, um die Liste der verfügbaren Server abzurufen.",
|
||||
"components.Settings.sonarrsettings": "Sonarr Einstellungen",
|
||||
"components.Settings.sonarrsettings": "Sonarr-Einstellungen",
|
||||
"components.Settings.ssl": "SSL",
|
||||
"components.Settings.startscan": "Durchsuchung starten",
|
||||
"components.Settings.tautulliApiKey": "API-Schlüssel",
|
||||
"components.Settings.tautulliSettings": "Tautulli Einstellungen",
|
||||
"components.Settings.tautulliSettingsDescription": "Optionale Einstellungen für den Tautulli-Server konfigurieren. Jellyseerr holt die Überwachungsdaten für Ihre Plex-Medien von Tautulli.",
|
||||
"components.Settings.toastPlexConnecting": "Versuche mit Plex zu verbinden…",
|
||||
"components.Settings.toastPlexConnecting": "Versuche mit Plex zu verbinden …",
|
||||
"components.Settings.toastPlexConnectingFailure": "Verbindung zu Plex fehlgeschlagen.",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Plex Verbindung erfolgreich hergestellt!",
|
||||
"components.Settings.toastPlexRefresh": "Abrufen der Serverliste von Plex…",
|
||||
"components.Settings.toastPlexRefreshFailure": "Fehler beim Abrufen der Plex Serverliste.",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Plex Serverliste erfolgreich abgerufen!",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Beim Speichern der Tautulli Einstellungen ist etwas schief gegangen.",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Tautulli Einstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Plex-Verbindung erfolgreich hergestellt!",
|
||||
"components.Settings.toastPlexRefresh": "Abrufen der Serverliste von Plex …",
|
||||
"components.Settings.toastPlexRefreshFailure": "Fehler beim Abrufen der Plex-Serverliste.",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Plex-Serverliste erfolgreich abgerufen!",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Beim Speichern der Tautulli-Einstellungen ist etwas schief gegangen.",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Tautulli-Einstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.urlBase": "URL-Basis",
|
||||
"components.Settings.validationApiKey": "Die Angabe eines API-Schlüssels ist erforderlich",
|
||||
"components.Settings.validationHostnameRequired": "Ein gültiger Hostnamen oder IP-Adresse muss angeben werden",
|
||||
"components.Settings.validationHostnameRequired": "Ein gültiger Hostnamen oder eine IP-Adresse muss angeben werden",
|
||||
"components.Settings.validationPortRequired": "Du musst einen gültigen Port angeben",
|
||||
"components.Settings.validationUrl": "Die Angabe einer gültigen URL ist erforderlich",
|
||||
"components.Settings.validationUrlBaseLeadingSlash": "Die URL-Basis muss einen Schrägstrich enthalten",
|
||||
@@ -836,7 +838,7 @@
|
||||
"components.Setup.configureservices": "Dienste konfigurieren",
|
||||
"components.Setup.continue": "Fortfahren",
|
||||
"components.Setup.finish": "Konfiguration beenden",
|
||||
"components.Setup.finishing": "Fertigstellung…",
|
||||
"components.Setup.finishing": "Fertigstellung …",
|
||||
"components.Setup.setup": "Einrichtung",
|
||||
"components.Setup.signinMessage": "Melde dich zunächst an",
|
||||
"components.Setup.welcome": "Willkommen bei Jellyseerr",
|
||||
@@ -866,7 +868,7 @@
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} Minuten",
|
||||
"components.TvDetails.firstAirDate": "Erstausstrahlung",
|
||||
"components.TvDetails.manageseries": "Serie verwalten",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Netzwerk} other {Netzwerke}}",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Anbieter} other {Anbieter}}",
|
||||
"components.TvDetails.nextAirDate": "Nächstes Sendedatum",
|
||||
"components.TvDetails.originallanguage": "Originalsprache",
|
||||
"components.TvDetails.originaltitle": "Originaltitel",
|
||||
@@ -899,15 +901,15 @@
|
||||
"components.UserList.deleteconfirm": "Möchtest du diesen Benutzer wirklich löschen? Alle seine Anfragendaten werden dauerhaft entfernt.",
|
||||
"components.UserList.deleteuser": "Benutzer löschen",
|
||||
"components.UserList.edituser": "Benutzerberechtigungen Bearbeiten",
|
||||
"components.UserList.email": "E-Mail Adresse",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex {userCount, Plural, one {Benutzer} other {Benutzer}} erfolgreich importiert!",
|
||||
"components.UserList.email": "E-Mail-Adresse",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> {userCount, Plural, ein {Benutzer} other {Benutzer}} Plex-Benutzer erfolgreich importiert!",
|
||||
"components.UserList.importfrommediaserver": "{mediaServerName}-Benutzer importieren",
|
||||
"components.UserList.importfromplex": "Plex Benutzer importieren",
|
||||
"components.UserList.importfromplexerror": "Beim Importieren von Plex Benutzern ist etwas schief gelaufen.",
|
||||
"components.UserList.importfromplex": "Plex-Benutzer importieren",
|
||||
"components.UserList.importfromplexerror": "Beim Importieren von Plex-Benutzern ist etwas schief gelaufen.",
|
||||
"components.UserList.localLoginDisabled": "Die Einstellung <strong>Lokale Anmeldung aktivieren</strong> ist derzeit deaktiviert.",
|
||||
"components.UserList.localuser": "Lokaler Benutzer",
|
||||
"components.UserList.newplexsigninenabled": "Die Einstellung <strong>Aktiviere neuen Plex Log-In</strong> ist derzeit aktiviert. Plex-Benutzer mit Bibliothekszugang müssen nicht importiert werden, um sich anmelden zu können.",
|
||||
"components.UserList.nouserstoimport": "Es gibt keine zu importierenden Plex Benutzer.",
|
||||
"components.UserList.nouserstoimport": "Es gibt keine zu importierenden Plex-Benutzer.",
|
||||
"components.UserList.owner": "Besitzer",
|
||||
"components.UserList.password": "Passwort",
|
||||
"components.UserList.passwordinfodescription": "Konfiguriere eine Anwendungs-URL und aktiviere E-Mail-Benachrichtigungen, um die automatische Kennwortgenerierung zu ermöglichen.",
|
||||
@@ -923,9 +925,9 @@
|
||||
"i18n.experimental": "Experimentell",
|
||||
"components.UserList.userssaved": "Benutzerberechtigungen erfolgreich gespeichert!",
|
||||
"i18n.advanced": "Erweitert",
|
||||
"components.UserList.validationEmail": "E-Mail Adresse benötigt",
|
||||
"components.UserList.validationEmail": "E-Mail-Adresse benötigt",
|
||||
"components.UserList.users": "Benutzer",
|
||||
"components.UserProfile.recentrequests": "Bisherige Anfragen",
|
||||
"components.UserProfile.recentrequests": "Kürzliche Anfragen",
|
||||
"components.UserProfile.UserSettings.menuPermissions": "Berechtigungen",
|
||||
"components.UserProfile.UserSettings.menuNotifications": "Benachrichtigungen",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Allgemein",
|
||||
@@ -936,11 +938,11 @@
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPasswordLength": "Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPassword": "Du musst ein neues Passwort angeben",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "Du musst dein aktuelles Passwort angeben",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPasswordSame": "Das Passwort muss übereinstimmen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPasswordSame": "Passwörter mussen übereinstimmen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "Du musst das neue Passwort bestätigen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "Passwort erfolgreich geändert!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "Beim Speichern des Passworts ist ein Fehler aufgetreten.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Passwort ändern",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.newpassword": "Neues Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Aktuelles Passwort",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Passwort bestätigen",
|
||||
@@ -948,7 +950,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordId": "Benutzer-ID",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Einstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Beim Speichern der Einstellungen ist etwas schief gelaufen.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexuser": "Plex-Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.localuser": "Lokaler Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Allgemeine Einstellungen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.displayName": "Anzeigename",
|
||||
@@ -960,14 +962,14 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Filtere Inhalte nach regionaler Verfügbarkeit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Region Entdecken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Filtere Inhalte nach Originalsprache",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Sprache des Bereiches \"Entdecken\"",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Sprache Entdecken",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Sie haben keine Berechtigung, das Kennwort dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Benutzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Rolle",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Besitzer",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.admin": "Admin",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.accounttype": "Kontotyp",
|
||||
"i18n.loading": "Lade…",
|
||||
"i18n.loading": "Lade …",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "Du musst eine gültige Chat-ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatIdTipLong": "<TelegramBotLink>Starte einen Chat</TelegramBotLink>, füge <GetIdBotLink>@get_id_bot</GetIdBotLink> hinzu, und führe den Befehl <code>/my_id</code> aus",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat-ID",
|
||||
@@ -975,8 +977,8 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Lautlos senden",
|
||||
"components.UserProfile.ProfileHeader.userid": "Benutzer-ID: {userid}",
|
||||
"components.UserProfile.ProfileHeader.joindate": "Mitglied seit dem {joindate}",
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "Du hast keine Berechtigung, die Einstellungen dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Du kannst deine eigenen Berechtigungen nicht ändern.",
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "Sie haben keine Berechtigung, die Einstellungen dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.unauthorizedDescription": "Sie können Ihre eigenen Berechtigungen nicht ändern.",
|
||||
"pages.errormessagewithcode": "{statusCode} - {error}",
|
||||
"pages.somethingwentwrong": "Etwas ist schief gelaufen",
|
||||
"pages.serviceunavailable": "Dienst nicht verfügbar",
|
||||
@@ -993,14 +995,14 @@
|
||||
"i18n.testing": "Testen…",
|
||||
"i18n.test": "Test",
|
||||
"i18n.status": "Status",
|
||||
"i18n.showingresults": "Zeige <strong>{from}</strong> bis <strong>{to}</strong> von <strong>{total}</strong> Ergebnisse",
|
||||
"i18n.showingresults": "Zeige <strong>{from}</strong> bis <strong>{to}</strong> von <strong>{total}</strong> Ergebnissen",
|
||||
"i18n.saving": "Speichern…",
|
||||
"i18n.save": "Änderungen speichern",
|
||||
"i18n.retrying": "Wiederholen…",
|
||||
"i18n.resultsperpage": "Zeige {pageSize} Ergebnisse pro Seite",
|
||||
"i18n.requesting": "Anfordern…",
|
||||
"i18n.request4k": "In 4K anfragen",
|
||||
"i18n.previous": "Zurück",
|
||||
"i18n.previous": "Bisherige",
|
||||
"i18n.notrequested": "Nicht Angefragt",
|
||||
"i18n.noresults": "Keine Ergebnisse.",
|
||||
"i18n.next": "Weiter",
|
||||
@@ -1031,72 +1033,77 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Serienanfragenlimit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Filmanfragenlimit",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Überschreibe globales Limit",
|
||||
"components.UserList.usercreatedfailedexisting": "Die angegebene E-Mail Adresse wird bereits von einem anderen Benutzer verwendet.",
|
||||
"components.UserList.usercreatedfailedexisting": "Die angegebene E-Mail-Adresse wird bereits von einem anderen Benutzer verwendet.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.languageDefault": "Standard ({language})",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpush": "Web Push",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "Anzeigesprache",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Discord Benutzer ID",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Die <FindDiscordIdLink>mehrstellige ID-Nummer</FindDiscordIdLink> deines Discord-Accounts",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Filme automatisch aus Plex-Merkliste anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatisch Filme aus deiner <PlexWatchlistSupportLink>Plex Merkliste</PlexWatchlistSupportLink> anfordern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Serien automatisch aus Plex-Merkliste anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatisch Serien aus deiner <PlexWatchlistSupportLink>Plex Merkliste</PlexWatchlistSupportLink> anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Du musst eine gültige Discord Benutzer ID angeben",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "Sprache darstellen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Discord User ID",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordIdTip": "Die <FindDiscordIdLink>mehrstellige ID-Nummer</FindDiscordIdLink> Deines Discord-Accounts",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmovies": "Filme automatisch anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncmoviestip": "Automatisch Filme auf deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> anfordern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseries": "Serien automatisch anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.plexwatchlistsyncseriestip": "Automatisch Serien auf deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> anfragen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationDiscordId": "Du musst eine gültige Discord User ID angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessToken": "Zugangs-Token",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletAccessTokenTip": "Erstelle ein Token aus deinen <PushbulletSettingsLink>Kontoeinstellungen</PushbulletSettingsLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingsfailed": "Die Einstellungen für Pushbullet-Benachrichtigungen konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Pushbullet-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationToken": "Anwendungs API-Token",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationTokenTip": "<ApplicationRegistrationLink>Registriere eine Anwendung</ApplicationRegistrationLink> zur Verwendung mit {applicationTitle}",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationToken": "Anwendungs-API-Token",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverApplicationTokenTip": "<ApplicationRegistrationLink>Register eine Anwendung</ApplicationRegistrationLink> zur Verwendung mit {applicationTitle}",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKey": "Benutzer- oder Gruppenschlüssel",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "Die 30-stellige <UsersGroupsLink>Benutzer- oder Gruppenkennung</UsersGroupsLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Die Einstellungen für die Pushover-Benachrichtigung konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Pushover-Benachrichtigungseinstellungen erfolgreich gespeichert!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushbulletAccessToken": "Ein Zugriffstoken muss angegeben werden",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Du musst einen gültigen Anwendungs-Token angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Sie müssen ein gültiges Anwendungs-Token angeben",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverUserKey": "Du musst einen gültigen Benutzer- oder Gruppenschlüssel angeben",
|
||||
"i18n.resolved": "Gelöst",
|
||||
"i18n.importing": "Importieren…",
|
||||
"i18n.import": "Importieren",
|
||||
"components.UserProfile.recentlywatched": "Kürzlich angesehen",
|
||||
"i18n.restartRequired": "Neustart erforderlich",
|
||||
"components.UserProfile.emptywatchlist": "Hier erscheinen deine zur <PlexWatchlistSupportLink>Plex Merkliste</PlexWatchlistSupportLink> hinzugefügte Medien.",
|
||||
"components.UserProfile.plexwatchlist": "Plex Merkliste",
|
||||
"components.UserProfile.emptywatchlist": "Hier erscheinen deine zur <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> hinzugefügte Medien.",
|
||||
"components.UserProfile.plexwatchlist": "Plex Watchlist",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Serien",
|
||||
"components.Discover.moviegenres": "Film Genre",
|
||||
"components.Discover.studios": "Studios",
|
||||
"components.Discover.tmdbmoviegenre": "TMDB Film Genre",
|
||||
"components.Discover.tmdbtvgenre": "TMDB Serien Genre",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB Serien Stichwort",
|
||||
"components.Discover.tmdbtvkeyword": "TMDB Serien Keyword",
|
||||
"components.Discover.tvgenres": "Serien Genre",
|
||||
"components.Settings.SettingsMain.apikey": "API-Schlüssel",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Aktivere CSRF Schutz",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Anwendungstitel",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Limitiere externen API Zugriff auf Lese-Operationen (erfordert HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Allgemein",
|
||||
"components.Settings.SettingsMain.generalsettings": "Allgemeine Einstellungen",
|
||||
"components.Settings.SettingsMain.locale": "Anzeigesprache",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Verfügbare Medien ausblenden",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Neuer API Schlüssel erfolgreich generiert!",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Du musst eine valide URL angeben",
|
||||
"components.Settings.SettingsMain.trustProxy": "Proxyunterstützung aktivieren",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Du musst eine valide URL spezifizieren",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "Die URL darf nicht mit einem Slash \"/\" enden",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Filme",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Deine Merkliste",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Deine Watchlist",
|
||||
"components.Discover.tmdbsearch": "TMDB Suche",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Etwas ist schiefgelaufen während der Generierung eines neuen API Schlüssels.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Einstellungen erfolgreich gespeichert!",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB Film Stichwort",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Du musst einen Anwendungstitel angeben",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Medien in deiner <PlexWatchlistSupportLink>Plex Merkliste</PlexWatchlistSupportLink> erscheinen hier.",
|
||||
"components.Discover.tmdbmoviekeyword": "TMDB Film Keyword",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Du musst einen Anwendungstitel spezifizieren",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Medien in deiner <PlexWatchlistSupportLink>Plex Watchlist</PlexWatchlistSupportLink> erscheinen hier.",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Cache extern gehostete Bilder (erfordert eine beträchtliche Menge an Speicherplatz)",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Aktiviere diese Einstellung nur wenn du weißt was du tust!",
|
||||
"components.Discover.networks": "Sender",
|
||||
"components.Discover.tmdbstudio": "TMDB Studio",
|
||||
"components.Settings.SettingsMain.applicationurl": "Anwendung URL",
|
||||
"components.Settings.SettingsMain.cacheImages": "Bild-Caching aktivieren",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Globale- und Standardeinstellungen für Jellyseerr konfigurieren.",
|
||||
"components.Settings.SettingsMain.originallanguage": "Sprache des Bereiches \"Entdecken\"",
|
||||
"components.Settings.SettingsMain.originallanguage": "\"Entdecken\" Sprache",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Teilweise Serienanfragen zulassen",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Beim Speichern der Einstellungen ist ein Fehler aufgetreten.",
|
||||
"components.Discover.tmdbnetwork": "TMDB Sender",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Inhalt nach Originalsprache filtern",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Erlaube Jellyseerr die Client-IP-Adressen hinter einem Proxy korrekt zu erfassen",
|
||||
"components.Discover.CreateSlider.addSlider": "Slider hinzufügen",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Benutzerdefinierten Slider erstellen",
|
||||
"components.Discover.CreateSlider.addfail": "Neuer Slider konnte nicht erstellt werden.",
|
||||
@@ -1110,22 +1117,22 @@
|
||||
"components.Discover.CreateSlider.nooptions": "Keine Ergebnisse.",
|
||||
"components.Discover.CreateSlider.providetmdbgenreid": "Hinterlege eine TMDB Genre ID",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Hinterlege eine TMDB Keyword ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Hinterlege eine TMDB Netzwerk ID",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Hinterlege eine TMDB Network ID",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Geben Sie eine Suchanfrage an",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Du musst einen Titel eingeben.",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Entfernen",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Slider konnte nicht gelöscht werden.",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Slider erfolgreich entfernt.",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filme",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Erscheinungsdatum (aufsteigend)",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Erscheinungsdatum (absteigend)",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Titel (A-Z) (aufsteigend)",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Titel (Z-A) (absteigend)",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Erscheinungsdatum Aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Erscheinungsdatum Absteigend",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Titel (A-Z) Aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Titel (Z-A) Absteigend",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serien",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Erstausstrahlung (absteigend)",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Erstausstrahlung (aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Beliebtheit (aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Beliebtheit (absteigend)",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Erstausstrahlung (Absteigend)",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Erstausstrahlung (Aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Beliebtheit (Aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Beliebtheit (Absteigend)",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Name des Slider",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Medienverfügbarkeit Sync",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Aktiver Filter} other {# Aktive Filter}}",
|
||||
@@ -1144,22 +1151,22 @@
|
||||
"components.Discover.CreateSlider.starttyping": "Start der Suche durch Tippen.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Du musst einen Datenwert angeben.",
|
||||
"components.Discover.DiscoverSliderEdit.enable": "Sichtbarkeit umschalten",
|
||||
"components.Discover.customizediscover": "Entdecken anpassen",
|
||||
"components.Discover.resetfailed": "Beim Zurücksetzen der Entdecken-Einstellungen ist etwas schief gelaufen.",
|
||||
"components.Discover.customizediscover": "Discover anpassen",
|
||||
"components.Discover.resetfailed": "Beim Zurücksetzen der Entdecken-Einstellungen ist etwas schief gegangen.",
|
||||
"components.Discover.resetsuccess": "Die Entdecken-Einstellungen wurden erfolgreich zurückgesetzt.",
|
||||
"components.Discover.stopediting": "Bearbeitung stoppen",
|
||||
"components.Discover.resettodefault": "Zurücksetzen auf Standard",
|
||||
"components.Discover.resetwarning": "Setzt alle Slider auf die Standardwerte zurück. Dadurch werden auch alle benutzerdefinierten Slider gelöscht!",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# Aktiver Filter} other {# Aktive Filter}}",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Beliebtheit (aufsteigend)",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Beliebtheit (absteigend)",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB-Bewertung (aufsteigend)",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB-Bewertung (absteigend)",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Beliebtheit aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Beliebtheit absteigend",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB-Bewertung aufsteigend",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB-Bewertung Absteigend",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {# Aktiver Filter} other {# Aktive Filter}}",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titel (A-Z) (aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titel (Z-A) (absteigend)",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-Bewertung (aufsteigend)",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB-Bewertung (absteigend)",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Titel (A-Z) Aufsteigend",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Titel (Z-A) Absteigend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-Bewertung aufsteigend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB-Bewertung Absteigend",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Aktive Filter löschen",
|
||||
"components.Discover.FilterSlideover.filters": "Filter",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Datum der Erstausstrahlung",
|
||||
@@ -1181,7 +1188,7 @@
|
||||
"components.Discover.tmdbmoviestreamingservices": "TMDB Film-Streaming-Dienste",
|
||||
"components.Discover.tmdbtvstreamingservices": "TMDB TV-Streaming-Dienste",
|
||||
"i18n.collection": "Sammlung",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Anzahl an TMDB-Benutzerbewertungen",
|
||||
"components.Discover.FilterSlideover.tmdbuservotecount": "Anzahl an TMDB Benutzerbewertungen",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Füge automatisch ein Tag hinzu mit der ID und dem Namen des anfordernden Nutzers",
|
||||
"components.MovieDetails.imdbuserscore": "IMDB Nutzer Bewertung",
|
||||
"components.Settings.SonarrModal.tagRequests": "Tag Anforderungen",
|
||||
@@ -1189,13 +1196,13 @@
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Füge automatisch einen zusätzlichen Tag mit der ID & Namen des anfordernden Nutzers",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Ein Passwort ist erforderlich.",
|
||||
"components.Login.description": "Da du dich zum ersten Mal bei {applicationName} anmeldest, musst du eine gültige E-Mail-Adresse angeben.",
|
||||
"components.Layout.UserWarnings.emailRequired": "E-Mail Adresse ist erforderlich.",
|
||||
"components.Layout.UserWarnings.emailInvalid": "E-Mail Adresse ist nicht gültig.",
|
||||
"components.Layout.UserWarnings.emailRequired": "E-Mail ist erforderlich.",
|
||||
"components.Layout.UserWarnings.emailInvalid": "E-Mail ist nicht valide.",
|
||||
"components.Login.credentialerror": "Der Benutzername oder das Passwort ist falsch.",
|
||||
"components.Login.emailtooltip": "Die Adresse muss nicht mit Ihrer {mediaServerName}-Instanz verbunden sein.",
|
||||
"components.Login.initialsignin": "Verbinde",
|
||||
"components.Login.initialsigningin": "Verbinden…",
|
||||
"components.Login.save": "Hinzufügen",
|
||||
"components.Login.save": "hinzufügen",
|
||||
"components.Login.saving": "Hinzufügen…",
|
||||
"components.Login.signinwithjellyfin": "Verwende dein {mediaServerName} Konto",
|
||||
"components.Login.title": "E-Mail hinzufügen",
|
||||
@@ -1226,9 +1233,9 @@
|
||||
"components.Setup.signin": "Anmelden",
|
||||
"components.Setup.signinWithJellyfin": "Gib deine Jellyfin Daten ein",
|
||||
"components.Setup.signinWithPlex": "Gib deine Plex Daten ein",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Erfolgreich aus der Merkliste entfernt!",
|
||||
"components.TitleCard.watchlistError": "Ein Fehler ist aufgetreten. Bitte versuche es erneut.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Merkliste hinzugefügt!",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Erfolgreich von der Beobachtungsliste entfernt!",
|
||||
"components.TitleCard.watchlistError": "Etwas ist schief gelaufen, versuche es noch einmal.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Beobachtungsliste hinzugefügt!",
|
||||
"components.TvDetails.play": "Wiedergabe auf {mediaServerName}",
|
||||
"components.TvDetails.play4k": "4K abspielen auf {mediaServerName}",
|
||||
"components.UserList.importfromJellyfin": "Importieren von {mediaServerName} Benutzern",
|
||||
@@ -1251,21 +1258,21 @@
|
||||
"i18n.open": "Offen",
|
||||
"i18n.pending": "Ausstehend",
|
||||
"i18n.processing": "Verarbeitung",
|
||||
"i18n.request": "Anfrage senden",
|
||||
"i18n.request": "Anfrage",
|
||||
"i18n.requested": "Angefragt",
|
||||
"i18n.retry": "Wiederholen",
|
||||
"i18n.tvshows": "Serie",
|
||||
"i18n.unavailable": "Nicht verfügbar",
|
||||
"pages.oops": "Hoppla",
|
||||
"pages.oops": "Huch!",
|
||||
"components.MovieDetails.openradarr": "Film in Radarr öffnen",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Gerätestandard",
|
||||
"components.Settings.RadarrModal.tagRequests": "Tag-Anfragen",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Unterstütze Jellyseerr",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Jellyseerr unterstützen",
|
||||
"components.Settings.jellyfinSettingsDescription": "Konfiguriere optional die internen und externen Endpunkte für deinen {mediaServerName} Server. In den meisten Fällen ist die externe URL eine andere als die interne URL. Für die Anmeldung bei {mediaServerName} kann auch eine benutzerdefinierte URL zum Zurücksetzen des Passworts festgelegt werden, falls du auf eine andere Seite zum Zurücksetzen des Passworts umleiten möchtest. Du kannst auch selber einen API Key für Jellyfin anlegen, was bisher automatisch geschah.",
|
||||
"components.Settings.jellyfinSettingsFailure": "Beim Speichern der Einstellungen von {mediaServerName} ist ein Fehler aufgetreten.",
|
||||
"components.Settings.manualscanDescriptionJellyfin": "Normalerweise wird dieser Vorgang nur einmal alle 24 Stunden durchgeführt. Jellyseerr wird die kürzlich hinzugefügten Bibliotheken deines {mediaServerName} Servers aggressiver überprüfen. Wenn dies das erste Mal ist, dass du Jellyseerr konfigurierst, wird ein einmaliger vollständiger manueller Bibliotheks-Scan empfohlen!",
|
||||
"components.Settings.save": "Änderungen speichern",
|
||||
"components.Settings.Notifications.userEmailRequired": "Benutzer E-Mail erforderlich",
|
||||
"components.Settings.Notifications.userEmailRequired": "Benutzer-E-Mail erforderlich",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Benachrichtigungston",
|
||||
"components.Settings.SonarrModal.seriesType": "TV-Serie Typ",
|
||||
"components.Settings.jellyfinlibrariesDescription": "Die Bibliotheken {mediaServerName} werden nach Titeln durchsucht. Klicke auf die Schaltfläche unten, wenn keine Bibliotheken aufgelistet sind.",
|
||||
@@ -1275,34 +1282,34 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Änderungen speichern",
|
||||
"i18n.available": "Verfügbar",
|
||||
"i18n.cancel": "Abbrechen",
|
||||
"components.TitleCard.addToWatchList": "Zur Merkliste hinzufügen",
|
||||
"components.TitleCard.watchlistCancel": "Merkliste für <strong>{title}</strong> entfernt.",
|
||||
"components.TitleCard.addToWatchList": "Zur Beobachtungsliste hinzufügen",
|
||||
"components.TitleCard.watchlistCancel": "Überwachungsliste für <strong>{title}</strong> abgebrochen.",
|
||||
"components.UserList.usercreatedsuccess": "Benutzer erfolgreich angelegt!",
|
||||
"components.ManageSlideOver.manageModalRemoveMediaWarning": "* Dadurch wird dieser {mediaType} unwiderruflich aus {arr} entfernt, einschließlich aller Dateien.",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {Benutzer} other {Benutzer}} erfolgreich importiert!",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {user} other {users}} erfolgreich importiert!",
|
||||
"components.UserList.validationpasswordminchars": "Das Passwort ist zu kurz; es sollte mindestens 8 Zeichen lang sein",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Gerätestandard",
|
||||
"i18n.approve": "Genehmigen",
|
||||
"i18n.partiallyavailable": "Teilweise verfügbar",
|
||||
"components.UserList.newJellyfinsigninenabled": "Die Einstellung <strong>Aktiviere neuen {mediaServerName} Sign-In</strong> ist derzeit aktiviert. {mediaServerName}-Benutzer mit Bibliothekszugang müssen nicht importiert werden, um sich anmelden zu können.",
|
||||
"components.UserList.newJellyfinsigninenabled": "Die Einstellung <strong>Enable New {mediaServerName} Sign-In</strong> ist derzeit aktiviert. {mediaServerName}-Benutzer mit Bibliothekszugang müssen nicht importiert werden, um sich anmelden zu können.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Benachrichtigungston",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingsfailed": "Die Einstellungen für Web-Push-Benachrichtigungen konnten nicht gespeichert werden.",
|
||||
"components.UserProfile.localWatchlist": "Merkliste von {username}",
|
||||
"components.UserProfile.localWatchlist": "Beobachtungsliste von {username}",
|
||||
"i18n.approved": "Genehmigt",
|
||||
"pages.returnHome": "Zurück zur Startseite",
|
||||
"pages.returnHome": "Zurück nach Hause",
|
||||
"components.Discover.FilterSlideover.status": "Status",
|
||||
"components.UserList.username": "Benutzername",
|
||||
"components.Login.adminerror": "Du musst einen Adminaccount für den Zugang benutzen.",
|
||||
"components.MovieDetails.watchlistError": "Es ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.",
|
||||
"components.MovieDetails.watchlistError": "Da ist was schief gelaufen - bitte versuche es noch einmal.",
|
||||
"components.RequestList.RequestItem.profileName": "Profil",
|
||||
"components.Selector.searchStatus": "Status auswählen...",
|
||||
"components.Settings.invalidurlerror": "Es kann keine Verbindung zu {mediaServerName} hergestellt werden.",
|
||||
"components.Settings.jellyfinSyncFailedGenericError": "Es trat ein unbekannter Fehler während der Bibliothekssynchronisation auf",
|
||||
"components.UserList.validationUsername": "Du musst einen Benutzernamen angeben",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "E-Mail Adresse benötigt",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "Email benötigt",
|
||||
"components.Login.invalidurlerror": "Es kann keine Verbindung zu {mediaServerName} hergestellt werden.",
|
||||
"components.MovieDetails.removefromwatchlist": "Von der Merkliste entfernen",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> erfolgreich aus der Merkliste entfernt!",
|
||||
"components.MovieDetails.removefromwatchlist": "Von der Watchlist entfernen",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> erfolgreich aus der Watchlist entfernt!",
|
||||
"components.Login.back": "Zurück",
|
||||
"components.Login.servertype": "Servertyp",
|
||||
"components.Login.validationHostnameRequired": "Du musst eine gültige IP-Adresse oder einen gültigen Hostnamen angeben",
|
||||
@@ -1310,10 +1317,10 @@
|
||||
"components.Login.validationUrlBaseLeadingSlash": "Der URL muss ein Slash vorangestellt sein",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "Die URL-Basis darf nicht auf einem Slash enden",
|
||||
"components.Login.validationUrlTrailingSlash": "Die URL darf nicht auf einem Slash enden",
|
||||
"components.Login.validationservertyperequired": "Bitte wähle einen Servertyp",
|
||||
"components.MovieDetails.addtowatchlist": "Zur Merkliste hinzufügen",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> erfolgreich aus der Merkliste entfernt!",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Merkliste hinzugefügt!",
|
||||
"components.Login.validationservertyperequired": "Bitte wähle einen Servertypen",
|
||||
"components.MovieDetails.addtowatchlist": "Zur Watchlist hinzufügen",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> erfolgreich aus der Watchlist entfernt!",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Watchlist hinzugefügt!",
|
||||
"components.Selector.canceled": "Abgebrochen",
|
||||
"components.Selector.ended": "Beendet",
|
||||
"components.Selector.inProduction": "In Produktion",
|
||||
@@ -1325,14 +1332,14 @@
|
||||
"components.Setup.configjellyfin": "Jellyfin konfigurieren",
|
||||
"components.Setup.configplex": "Plex konfigurieren",
|
||||
"components.Setup.servertype": "Servertyp auswählen",
|
||||
"components.Setup.signinWithEmby": "Emby Daten eintragen",
|
||||
"components.Setup.signinWithEmby": "Emby-Daten eintragen",
|
||||
"components.Setup.subtitle": "Leg los, indem du einen Medienserver auswählst",
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.TvDetails.addtowatchlist": "Zur Merkliste hinzufügen",
|
||||
"components.TvDetails.removefromwatchlist": "Von der Merkliste entfernen",
|
||||
"components.TvDetails.watchlistError": "Ein Fehler ist aufgetreten. Bitte versuche es erneut.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Merkliste hinzugefügt!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Gültige E-Mail Adresse benötigt",
|
||||
"components.TvDetails.addtowatchlist": "Zur Watchlist hinzufügen",
|
||||
"components.TvDetails.removefromwatchlist": "Von der Watchlist entfernen",
|
||||
"components.TvDetails.watchlistError": "Da lief etwas falsch, versuch es noch einmal.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> erfolgreich zur Watchlist hinzugefügt!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Gültige email benötigt",
|
||||
"components.Login.hostname": "{mediaServerName} URL",
|
||||
"components.Login.port": "Port",
|
||||
"components.Login.urlBase": "URL-Basis",
|
||||
@@ -1346,13 +1353,14 @@
|
||||
"components.Settings.SettingsMain.discoverRegion": "Region entdecken",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> ist nicht auf der Sperrliste.",
|
||||
"components.PermissionEdit.manageblacklist": "Sperrliste verwalten",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Plex Refresh Token",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Jellyfin Refresh Token",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Region entdecken",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> wurde bereits auf die Sperrliste gesetzt.",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Du musst eine gültige Discord Rollen-ID angeben",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Sie müssen eine gültige Discord Rollen-ID angeben",
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "Die Rollen ID, die in der Webhook Nachricht erwähnt werden soll. Leer lassen, um Erwähnungen zu deaktivieren",
|
||||
"i18n.addToBlacklist": "Zur Sperrliste hinzufügen",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Autorisierung zum Sperren von Medien.",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Verwenden Sie ',' als Trennzeichen und '*.' als Platzhalter für Subdomains",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Streaming Region",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> wurde erfolgreich von der Sperrliste entfernt.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Streaming Region",
|
||||
@@ -1375,115 +1383,25 @@
|
||||
"components.Settings.Notifications.webhookRoleId": "Benachrichtigung Rollen ID",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Avatare der Nutzer",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Inhalte nach regionaler Verfügbarkeit filtern",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Proxy für lokale Adressen umgehen",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S) Proxy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Proxy Hostname",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Proxy Passwort",
|
||||
"components.Settings.SettingsMain.proxyPort": "Proxy Port",
|
||||
"components.Settings.SettingsMain.proxySsl": "SSL für Proxy verwenden",
|
||||
"components.Settings.SettingsMain.proxyUser": "Proxy Benutzername",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "vom Proxy ignorierte Adressen",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Streaming Seiten nach regionaler Verfügbarkeit anzeigen",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Sie müssen einen gültigen Port angeben",
|
||||
"components.Settings.apiKey": "API-Schlüssel",
|
||||
"components.Settings.tip": "Tipp",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Inhalte nach regionaler Verfügbarkeit filtern",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Diese E-Mail ist bereits vergeben!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Ein anderer Benutzer hat bereits diesen Benutzernamen. Sie müssen eine E-Mail festlegen",
|
||||
"i18n.blacklist": "Sperrliste",
|
||||
"i18n.blacklistError": "Etwas ist schief gelaufen, versuche es noch einmal.",
|
||||
"i18n.blacklistError": "Etwas ist schief gelaufen, versuchen Sie es noch einmal.",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> wurde erfolgreich auf die Sperrliste gesetzt.",
|
||||
"i18n.blacklisted": "Gesperrt",
|
||||
"i18n.removefromBlacklist": "Von der Sperrliste entfernen",
|
||||
"i18n.specials": "Besonderheiten",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Erlaube Jellyseerr die Client-IP-Adressen hinter einem Proxy zu registrieren",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Demnächst erscheinende Serien",
|
||||
"components.Login.loginwithapp": "Einloggen bei {appName}",
|
||||
"components.Settings.OverrideRuleModal.rootfolder": "Stammverzeichnis",
|
||||
"components.UserProfile.UserSettings.menuLinkedAccounts": "Verknüpfte Konten",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.deleteFailed": "Verknüpftes Konto kann nicht gelöscht werden.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.usernameRequired": "Sie müssen einen Benutzernamen angeben",
|
||||
"components.Setup.librarieserror": "Validierung fehlgeschlagen. Bitte schalte die Bibliotheken erneut um, um fortzufahren.",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Verwende ',' als Trennzeichen und '*.' als Platzhalter für Subdomains",
|
||||
"components.Settings.OverrideRuleModal.settingsDescription": "Gibt an, welche Einstellungen geändert werden, wenn die oben genannten Bedingungen erfüllt sind.",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "Aktiviere {mediaServerName} Anmeldung",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorExists": "Dieses Konto ist bereits mit einem Plex Benutzer verknüpft",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.description": "Geben Sie Ihre {mediaServerName}-Anmeldeinformationen ein, um Ihr Konto mit {applicationName} zu verknüpfen.",
|
||||
"components.Settings.SettingsNetwork.networkDisclaimer": "Anstelle dieser Einstellungen sollten Netzwerkparameter aus Ihrem Container/System verwendet werden. Weitere Informationen finden Sie in den {docs}.",
|
||||
"components.Selector.searchUsers": "Benutzer auswählen…",
|
||||
"components.Settings.overrideRules": "Override-Regeln",
|
||||
"components.Settings.Notifications.messageThreadId": "Thread-/Themen-ID",
|
||||
"components.Settings.OverrideRuleModal.conditions": "Bedingungen",
|
||||
"components.Settings.OverrideRuleTile.settings": "Einstellungen",
|
||||
"components.Login.noadminerror": "Kein Admin-Benutzer auf dem Server gefunden.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorUnauthorized": "Mit Ihren Anmeldeinformationen kann keine Verbindung zu Plex hergestellt werden",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnknown": "Ein unbekannter Fehler ist aufgetreten",
|
||||
"components.Settings.addrule": "Neue Override-Regel",
|
||||
"components.Login.orsigninwith": "Oder anmelden mit",
|
||||
"components.Settings.OverrideRuleModal.create": "Regel erstellen",
|
||||
"components.Settings.OverrideRuleModal.createrule": "Neue Override-Regel",
|
||||
"components.Settings.OverrideRuleModal.editrule": "Bearbeite Override-Regel",
|
||||
"components.Settings.OverrideRuleModal.genres": "Genre",
|
||||
"components.Settings.OverrideRuleModal.keywords": "Schlüsselwörter",
|
||||
"components.Settings.OverrideRuleModal.languages": "Sprachen",
|
||||
"components.Settings.OverrideRuleModal.notagoptions": "Keine Tags.",
|
||||
"components.Settings.OverrideRuleModal.ruleCreated": "Override-Regel erfolgreich erstellt!",
|
||||
"components.Settings.OverrideRuleModal.ruleUpdated": "Override-Regel erfolgreich bearbeitet!",
|
||||
"components.Settings.OverrideRuleModal.selectRootFolder": "Stammverzeichnis wählen",
|
||||
"components.Settings.OverrideRuleModal.selectService": "Service auswählen",
|
||||
"components.Settings.OverrideRuleModal.selecttags": "Tags auswählen",
|
||||
"components.Settings.OverrideRuleTile.users": "Benutzer",
|
||||
"components.Settings.OverrideRuleTile.tags": "Tags",
|
||||
"components.Settings.OverrideRuleTile.rootfolder": "Stammverzeichnis",
|
||||
"components.Settings.OverrideRuleTile.language": "Sprache",
|
||||
"components.Settings.OverrideRuleTile.keywords": "Schlüsselwörter",
|
||||
"components.Settings.OverrideRuleTile.genre": "Genre",
|
||||
"components.Settings.OverrideRuleTile.conditions": "Bedingungen",
|
||||
"components.Settings.OverrideRuleModal.users": "Benutzer",
|
||||
"components.Settings.OverrideRuleModal.tags": "Tags",
|
||||
"components.Settings.OverrideRuleModal.settings": "Einstellungen",
|
||||
"components.Settings.OverrideRuleModal.serviceDescription": "Wende diese Regel auf den ausgewählten Dienst an.",
|
||||
"components.Settings.OverrideRuleModal.service": "Dienst",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "Anfragen zu Spezial-Episoden zulassen",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "Erweiterte Netzwerkeinstellungen",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "Aktivieren Sie diese Einstellung NICHT, wenn Sie nicht wissen, was Sie tun!",
|
||||
"components.Settings.SettingsNetwork.docs": "Dokumentation/Hilfe",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Netzwerkeinstellungen",
|
||||
"components.Settings.SettingsNetwork.networksettingsDescription": "Konfiguriere die Netzwerkeinstellungen deiner Jellyseerr-Instanz.",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Einstellungen erfolgreich gespeichert!",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Aktiviere Proxy-Unterstützung",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "Sie müssen einen gültigen Port angeben",
|
||||
"components.Settings.SettingsUsers.atLeastOneAuth": "Es muss mindestens eine Authentifizierungsmethode ausgewählt werden.",
|
||||
"components.Settings.SettingsUsers.loginMethods": "Anmeldemethoden",
|
||||
"components.Settings.SettingsUsers.loginMethodsTip": "Anmeldemethoden für Benutzer konfigurieren.",
|
||||
"components.Settings.SettingsUsers.mediaServerLoginTip": "Benutzern erlauben, sich mit ihrem {mediaServerName}-Konto anzumelden",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Aktiviere CSRF-Schutz",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Externen API-Zugriff auf schreibgeschützt setzen (erfordert HTTPS)",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Erzwinge IPv4-Auflösung zuerst",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Erzwinge, dass Jellyseerr zuerst IPv4-Adressen anstelle von IPv6 auflöst",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Beim Speichern der Einstellungen ist ein Fehler aufgetreten.",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "Proxy Benutzername",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "Benutze SSL für Proxy",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "Proxy Port",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "Proxy Passwort",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "Proxy Hostname",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "HTTP(S) Proxy",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Proxy für lokale Adressen umgehen",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilter": "Vom Proxy ignorierte Adressen",
|
||||
"components.Settings.SettingsNetwork.network": "Netzwerk",
|
||||
"components.Settings.menuNetwork": "Netzwerk",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.username": "Benutzername",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.title": "{mediaServerName}-Konto verknüpfen",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.saving": "Hinzufügen…",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.passwordRequired": "Sie müssen ein Passwort angeben",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.password": "Passwort",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnauthorized": "Mit Ihren Anmeldeinformationen kann keine Verbindung zu {mediaServerName} hergestellt werden",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorExists": "Dieses Konto ist bereits mit einem {applicationName}-Benutzer verknüpft",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noPermissionDescription": "Sie sind nicht berechtigt, die verknüpften Konten dieses Benutzers zu ändern.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noLinkedAccounts": "Sie haben keine externen Konten mit Ihrem Konto verknüpft.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccountsHint": "Diese externen Konten sind mit Ihrem {applicationName}-Konto verknüpft.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccounts": "Verknüpfte Konten",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.errorUnknown": "Ein unbekannter Fehler ist aufgetreten",
|
||||
"components.Settings.overrideRulesDescription": "Überschreibungsregeln ermöglichen es dir, Eigenschaften festzulegen, die ersetzt werden, wenn eine Anforderung der Regel entspricht.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramMessageThreadId": "Die Thread/Themen ID muss eine positive volle Zahl sein",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadId": "Thread/Themen ID",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadIdTip": "Wenn in deinem Gruppenchat Themen aktiviert sind, kannst du hier die ID des Threads/Themas angeben",
|
||||
"components.Settings.Notifications.validationMessageThreadId": "Die Thread-/Themen-ID muss eine positive volle Zahl sein",
|
||||
"components.Settings.Notifications.messageThreadIdTip": "Wenn in deinem Gruppenchat Themen aktiviert sind, kannst du hier die ID des Threads/Themas angeben",
|
||||
"components.Settings.OverrideRuleModal.qualityprofile": "Qualitätsprofil",
|
||||
"components.Settings.OverrideRuleModal.selectQualityProfile": "Qualitätsprofil auswählen",
|
||||
"components.Settings.OverrideRuleTile.qualityprofile": "Qualitätsprofil",
|
||||
"components.Settings.OverrideRuleModal.conditionsDescription": "Gib Bedingungen an, bevor die Parameteränderungen angewendet werden. Jedes Feld muss validiert werden, damit die Regeln angewendet werden (UND-Betrieb). Ein Feld gilt als verifiziert, wenn eine dieser Eigenschaften übereinstimmt (ODER Betrieb).",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.save": "Link"
|
||||
"i18n.specials": "Besonderheiten"
|
||||
}
|
||||
|
||||
@@ -221,6 +221,8 @@
|
||||
"components.RequestBlock.requestoverrides": "Παρακάμψεις των Αιτημάτων",
|
||||
"components.RequestBlock.profilechanged": "Προφίλ Ποιότητας",
|
||||
"components.RegionSelector.regionDefault": "Όλες οι Περιοχές",
|
||||
"components.PlexLoginButton.signinwithplex": "Σύνδεση",
|
||||
"components.PlexLoginButton.signingin": "Συνδέεται …",
|
||||
"components.PersonDetails.crewmember": "Συνεργείο",
|
||||
"components.PersonDetails.appearsin": "Εμφανίσεις",
|
||||
"components.PersonDetails.alsoknownas": "Επίσης Γνωστός/ή ως: {names}",
|
||||
@@ -828,6 +830,7 @@
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTypes": "Πρέπει να επιλέξετε τουλάχιστον έναν τύπο ειδοποιήσεων",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlTrailingSlash": "Ο σύνδεσμος δε μπορεί να τελειώνει σε κάθετο",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Τίτλος εφαρμογής",
|
||||
"components.Settings.SettingsMain.trustProxy": "Ενεργοποίηση Proxy",
|
||||
"components.StatusBadge.playonplex": "Αναπαραγωγή στο Plex",
|
||||
"components.TvDetails.rtaudiencescore": "Βαθμολογία κοινού Rotten Tomatoes",
|
||||
"components.TvDetails.tmdbuserscore": "Βαθμολογία χρηστών TMDB",
|
||||
@@ -838,6 +841,7 @@
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Κάτι πήγε στραβά με την αποθήκευση της εργασίας.",
|
||||
"components.Settings.SettingsMain.cacheImages": "Ενεργοποίηση caching εικόνων",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Κάνε cache εικόνες από εξωτερικές πηγές (απαιτεί πολύ αποθηκευτικό χώρο στο δίσκο)",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Ορισμός εξωτερικής πρόσβασης API σε read-only (απαιτεί HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Γενικά",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Διαμόρφωση των γενικών και προεπιλεγμένων ρυθμίσεων για το Jellyseerr.",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Κάτι πήγε στραβά κατά την αποθήκευση των ρυθμίσεων.",
|
||||
@@ -1052,6 +1056,8 @@
|
||||
"components.AirDateBadge.airsrelative": "Θα προβληθεί σε {relativeTime}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Κάθε {jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Συνολικό μέγεθος cache",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "ΜΗΝ ενεργοποιήσετε αυτή τη ρύθμιση εάν δε γνωρίζετε τι κάνετε!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Επιτρέψτε στο Overseer να καταχωρήσει διευθύνσεις IP τερματικών πίσω από proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Πρέπει να δώσετε έναν τίτλο εφαρμογής",
|
||||
"components.Settings.advancedTooltip": "Λανθασμένη παραμετροποίηση αυτή της ρύθμισης μπορεί να οδηγήσει σε διακοπή της λειτουργίας",
|
||||
"components.Settings.experimentalTooltip": "Η ενεργοποίηση αυτής της ρύθμισης μπορεί να οδηγήσει σε απρόσμενη συμπεριφορά της εφαρμογής",
|
||||
@@ -1087,6 +1093,7 @@
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorHours": "Κάθε {jobScheduleHours, plural, one {hour} other {{jobScheduleHours} hours}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Κάθε {jobScheduleMinutes, plural, one {minute} other {{jobScheduleMinutes} minutes}}",
|
||||
"components.Settings.SettingsJobsCache.imagecacheDescription": "Όταν είναι ενεργοποιημένο στις ρυθμίσεις, το Jellyseerr θα κάνει proxy και cache εικόνες από προκαθορισμένες εξωτερικές πηγές. Οι εικόνες που έχουν γίνει cached θα αποθηκευτούν στον φάκελο των αρχείων. Μπορείτε να βρείτε τα αρχεία στο <code>{appDataPath}/cache/images</code>.",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Ενεργοποίηση προστασίας CSRF",
|
||||
"components.Settings.SettingsMain.locale": "Γλώσσα εμφάνισης",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Φιλτράρετε το περιεχόμενο με βάση τη πρωτότυπη γλώσσα",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Επιτρέψτε τις αιτήσεων σειρών μερικώς",
|
||||
|
||||
@@ -76,7 +76,6 @@
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Your Watchlist",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex Watchlist",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Active Filter} other {# Active Filters}}",
|
||||
"components.Discover.FilterSlideover.certification": "Content Rating",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Clear Active Filters",
|
||||
"components.Discover.FilterSlideover.filters": "Filters",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "First Air Date",
|
||||
@@ -584,13 +583,6 @@
|
||||
"components.ResetPassword.validationpasswordrequired": "You must provide a password",
|
||||
"components.Search.search": "Search",
|
||||
"components.Search.searchresults": "Search Results",
|
||||
"components.Selector.CertificationSelector.errorLoading": "Failed to load certifications",
|
||||
"components.Selector.CertificationSelector.maxRating": "Maximum rating",
|
||||
"components.Selector.CertificationSelector.minRating": "Minimum rating",
|
||||
"components.Selector.CertificationSelector.noOptions": "No options available",
|
||||
"components.Selector.CertificationSelector.selectCertification": "Select a certification",
|
||||
"components.Selector.CertificationSelector.selectCountry": "Select a country",
|
||||
"components.Selector.CertificationSelector.starttyping": "Starting typing to search.",
|
||||
"components.Selector.canceled": "Canceled",
|
||||
"components.Selector.ended": "Ended",
|
||||
"components.Selector.inProduction": "In Production",
|
||||
@@ -632,22 +624,6 @@
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "You must provide a valid URL",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook URL",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "Your user- or device-based <LunaSeaLink>notification webhook URL</LunaSeaLink>",
|
||||
"components.Settings.Notifications.NotificationsNtfy.agentenabled": "Enable Agent",
|
||||
"components.Settings.Notifications.NotificationsNtfy.ntfysettingsfailed": "Ntfy notification settings failed to save.",
|
||||
"components.Settings.Notifications.NotificationsNtfy.ntfysettingssaved": "Ntfy notification settings saved successfully!",
|
||||
"components.Settings.Notifications.NotificationsNtfy.password": "Password",
|
||||
"components.Settings.Notifications.NotificationsNtfy.toastNtfyTestFailed": "Ntfy test notification failed to send.",
|
||||
"components.Settings.Notifications.NotificationsNtfy.toastNtfyTestSending": "Sending ntfy test notification…",
|
||||
"components.Settings.Notifications.NotificationsNtfy.toastNtfyTestSuccess": "Ntfy test notification sent!",
|
||||
"components.Settings.Notifications.NotificationsNtfy.token": "Token",
|
||||
"components.Settings.Notifications.NotificationsNtfy.tokenAuth": "Token authentication",
|
||||
"components.Settings.Notifications.NotificationsNtfy.topic": "Topic",
|
||||
"components.Settings.Notifications.NotificationsNtfy.url": "Server root URL",
|
||||
"components.Settings.Notifications.NotificationsNtfy.username": "Username",
|
||||
"components.Settings.Notifications.NotificationsNtfy.usernamePasswordAuth": "Username + Password authentication",
|
||||
"components.Settings.Notifications.NotificationsNtfy.validationNtfyTopic": "You must provide a topic",
|
||||
"components.Settings.Notifications.NotificationsNtfy.validationNtfyUrl": "You must provide a valid URL",
|
||||
"components.Settings.Notifications.NotificationsNtfy.validationTypes": "You must select at least one notification type",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "Access Token",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "Create a token from your <PushbulletSettingsLink>Account Settings</PushbulletSettingsLink>",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "Enable Agent",
|
||||
@@ -959,9 +935,6 @@
|
||||
"components.Settings.SettingsMain.generalsettings": "General Settings",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Configure global and default settings for Jellyseerr.",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Hide Available Media",
|
||||
"components.Settings.SettingsMain.hideAvailableTip": "Hide available media from the discover pages but not search results",
|
||||
"components.Settings.SettingsMain.hideBlacklisted": "Hide Blacklisted Items",
|
||||
"components.Settings.SettingsMain.hideBlacklistedTip": "Hide blacklisted items from discover pages for all users with the \"Manage Blacklist\" permission",
|
||||
"components.Settings.SettingsMain.locale": "Display Language",
|
||||
"components.Settings.SettingsMain.originallanguage": "Discover Language",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filter content by original language",
|
||||
@@ -975,9 +948,6 @@
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "You must provide an application title",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "You must provide a valid URL",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL must not end in a trailing slash",
|
||||
"components.Settings.SettingsMain.validationUrl": "You must provide a valid URL",
|
||||
"components.Settings.SettingsMain.validationUrlTrailingSlash": "URL must not end in a trailing slash",
|
||||
"components.Settings.SettingsMain.youtubeUrl": "YouTube URL",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Enable CSRF Protection",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "Do NOT enable this setting unless you understand what you are doing!",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Set external API access to read-only (requires HTTPS)",
|
||||
@@ -1213,7 +1183,7 @@
|
||||
"components.Setup.librarieserror": "Validation failed. Please toggle the libraries again to continue.",
|
||||
"components.Setup.servertype": "Choose Server Type",
|
||||
"components.Setup.setup": "Setup",
|
||||
"components.Setup.signin": "Sign in to your account",
|
||||
"components.Setup.signin": "Sign In",
|
||||
"components.Setup.signinMessage": "Get started by signing in",
|
||||
"components.Setup.signinWithEmby": "Enter your Emby details",
|
||||
"components.Setup.signinWithJellyfin": "Enter your Jellyfin details",
|
||||
|
||||
@@ -319,6 +319,8 @@
|
||||
"i18n.experimental": "Experimental",
|
||||
"components.Login.signingin": "Iniciando sesión…",
|
||||
"components.Login.signin": "Iniciar Sesión",
|
||||
"components.PlexLoginButton.signinwithplex": "Iniciar Sesión",
|
||||
"components.PlexLoginButton.signingin": "Iniciando sesión…",
|
||||
"components.Login.signinwithplex": "Usa tu cuenta de Plex",
|
||||
"components.Login.signinheader": "Inicia sesión para continuar",
|
||||
"components.PermissionEdit.request4k": "Solicitar 4K",
|
||||
@@ -696,8 +698,8 @@
|
||||
"components.RequestCard.mediaerror": "{mediaType} No Encontrado",
|
||||
"components.RequestCard.deleterequest": "Borrar Solicitud",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Tipos de Notificación",
|
||||
"components.Layout.VersionStatus.streamstable": "Jellyseerr (Estable)",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseer (Desarrollo)",
|
||||
"components.Layout.VersionStatus.streamstable": "Overseer (Estable)",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Overseer (Desarrollo)",
|
||||
"components.Layout.VersionStatus.outofdate": "Desactualizado",
|
||||
"components.UserList.autogeneratepasswordTip": "Envía por email una contraseña al usuario generada por el servidor",
|
||||
"i18n.retrying": "Reintentando…",
|
||||
@@ -1047,6 +1049,7 @@
|
||||
"components.Settings.Notifications.enableMentions": "Activar menciones",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Frecuencia actual",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Tamaño total de la caché",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Configurar el acceso a la API externa como sólo lectura (requiere HTTPS)",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Imágenes en caché",
|
||||
"components.Settings.SettingsMain.general": "General",
|
||||
"components.Settings.SettingsMain.generalsettings": "Configuración general",
|
||||
@@ -1117,12 +1120,14 @@
|
||||
"components.Settings.SettingsMain.apikey": "Clave API",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL de la aplicación",
|
||||
"components.Settings.SettingsMain.cacheImages": "Activar el caché de imágenes",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "¡NO active esta opción a menos que sepa lo que está haciendo!",
|
||||
"components.Settings.SettingsMain.originallanguage": "Idioma en Descubre",
|
||||
"components.Settings.SettingsMain.locale": "Idioma de visualización",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtrar contenidos por idioma original",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Permitir Solicitudes Parciales de Series",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Algo ha ido mal al generar una nueva clave API.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "¡Nueva clave API generada con éxito!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Activar la compatibilidad con proxy",
|
||||
"components.Settings.advancedTooltip": "Una configuración incorrecta de este parámetro puede afectar a la funcionalidad",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr debe reiniciarse para que los cambios en esta configuración surtan efecto",
|
||||
"components.TvDetails.seasonnumber": "Temporada {seasonNumber}",
|
||||
@@ -1156,7 +1161,9 @@
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Sincronización de la lista de seguimiento de Plex",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Titulo de la aplicación",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Almacenamiento en caché de imágenes de origen externo (requiere una cantidad significativa de espacio en disco)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Activar la protección CSRF",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "¡Ajustes guardados correctamente!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permite a Overserr registrar correctamente la IP del cliente detrás de un proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "La URL no debe terminar con una barra al final",
|
||||
"components.Settings.tautulliSettingsDescription": "Opcionalmente configure los ajustes para su servidor Tautulli. Jellyseerr obtiene de Tautulli los datos del historial de visionado de los medios de Plex.",
|
||||
"components.TitleCard.tvdbid": "Identificador de TheTVDB",
|
||||
@@ -1289,32 +1296,5 @@
|
||||
"components.Settings.manualscanJellyfin": "Escanear Libreria Manualmente",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Eliminado correctamente de la lista de seguimiento!",
|
||||
"components.UserList.newJellyfinsigninenabled": "La configuración <strong>Habilitar nuevo inicio de sesión de {mediaServerName}</strong> está actualmente habilitada. Los usuarios de {mediaServerName} con acceso a la biblioteca no necesitan ser importados para poder iniciar sesión.",
|
||||
"components.UserProfile.localWatchlist": "Lista de seguimiento de {username}",
|
||||
"components.Layout.Sidebar.blacklist": "Lista negra",
|
||||
"components.Login.urlBase": "Base de la URL",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> no esta en la lista negra.",
|
||||
"components.Discover.FilterSlideover.status": "Estatus",
|
||||
"components.Login.servertype": "Tipo de servidor",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Series próximas",
|
||||
"components.Login.hostname": "URL de {mediaServerName}",
|
||||
"components.Login.back": "Volver atrás",
|
||||
"components.Login.adminerror": "Debes usar una cuenta de administrador para iniciar sesión.",
|
||||
"components.Login.enablessl": "Ultilizar SSL",
|
||||
"components.Login.invalidurlerror": "No se ha podido conectar con el servidor de {mediaServerName}.",
|
||||
"components.Login.loginwithapp": "Iniciar sesión con {appName}",
|
||||
"components.Login.noadminerror": "No se ha encontrado un usuario administrativo en el servidor.",
|
||||
"components.Login.orsigninwith": "O inicia sesión con",
|
||||
"components.Login.port": "Puerto",
|
||||
"components.Login.validationHostnameRequired": "Debes proveer un nombre de host o dirección IP válida",
|
||||
"components.Login.validationPortRequired": "Debes proveer un número de puerto válido",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Gestionar contenido en la lista negra.",
|
||||
"components.Blacklist.blacklistdate": "Fecha",
|
||||
"components.Blacklist.blacklistedby": "{date} por {user}",
|
||||
"components.Blacklist.blacklistsettings": "Configuración de la lista negra",
|
||||
"components.Blacklist.mediaName": "Nombre",
|
||||
"components.Blacklist.mediaTmdbId": "Id de tmdb",
|
||||
"components.Blacklist.mediaType": "Tipo",
|
||||
"component.BlacklistBlock.blacklistdate": "Fecha de inclusión en la lista negra",
|
||||
"component.BlacklistBlock.blacklistedby": "Puesto en la lista negra por",
|
||||
"component.BlacklistModal.blacklisting": "Añadiendo a la lista negra"
|
||||
"components.UserProfile.localWatchlist": "Lista de seguimiento de {username}"
|
||||
}
|
||||
|
||||
@@ -319,6 +319,8 @@
|
||||
"i18n.experimental": "Experimental",
|
||||
"components.Login.signingin": "Iniciando sesión…",
|
||||
"components.Login.signin": "Iniciar Sesión",
|
||||
"components.PlexLoginButton.signinwithplex": "Iniciar Sesión",
|
||||
"components.PlexLoginButton.signingin": "Iniciando sesión…",
|
||||
"components.Login.signinwithplex": "Usa tu cuenta de Plex",
|
||||
"components.Login.signinheader": "Inicia sesión para continuar",
|
||||
"components.PermissionEdit.request4k": "Solicitar 4K",
|
||||
@@ -1047,6 +1049,7 @@
|
||||
"components.Settings.Notifications.enableMentions": "Activar menciones",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Frecuencia actual",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Tamaño total de la caché",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Configurar el acceso a la API externa como sólo lectura (requiere HTTPS)",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Imágenes en caché",
|
||||
"components.Settings.SettingsMain.general": "General",
|
||||
"components.Settings.SettingsMain.generalsettings": "Configuración general",
|
||||
@@ -1117,12 +1120,14 @@
|
||||
"components.Settings.SettingsMain.apikey": "Clave API",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL de la aplicación",
|
||||
"components.Settings.SettingsMain.cacheImages": "Activar el caché de imágenes",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "¡NO active esta opción a menos que sepa lo que está haciendo!",
|
||||
"components.Settings.SettingsMain.originallanguage": "Idioma en Descubre",
|
||||
"components.Settings.SettingsMain.locale": "Idioma de visualización",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtrar contenidos por idioma original",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Permitir Solicitudes Parciales de Series",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Algo ha ido mal al generar una nueva clave API.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "¡Nueva clave API generada con éxito!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Activar la compatibilidad con proxy",
|
||||
"components.Settings.advancedTooltip": "Una configuración incorrecta de este parámetro puede afectar a la funcionalidad",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr debe reiniciarse para que los cambios en esta configuración surtan efecto",
|
||||
"components.TvDetails.seasonnumber": "Temporada {seasonNumber}",
|
||||
@@ -1156,7 +1161,9 @@
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Sincronización de la lista de seguimiento de Plex",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Titulo de la aplicación",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Almacenamiento en caché de imágenes de origen externo (requiere una cantidad significativa de espacio en disco)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Activar la protección CSRF",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "¡Ajustes guardados correctamente!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permite a Overserr registrar correctamente la IP del cliente detrás de un proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "La URL no debe terminar con una barra al final",
|
||||
"components.Settings.tautulliSettingsDescription": "Opcionalmente configure los ajustes para su servidor Tautulli. Jellyseerr obtiene de Tautulli los datos del historial de visionado de los medios de Plex.",
|
||||
"components.TitleCard.tvdbid": "Identificador de TheTVDB",
|
||||
|
||||
@@ -354,6 +354,8 @@
|
||||
"components.PermissionEdit.viewrequests": "Ikusi eskaerak",
|
||||
"components.PersonDetails.ascharacter": "{character} gisa",
|
||||
"components.PersonDetails.birthdate": "{birthdate}(e)an jaiota",
|
||||
"components.PlexLoginButton.signingin": "Saioa hasten…",
|
||||
"components.PlexLoginButton.signinwithplex": "Hasi saioa",
|
||||
"components.RequestBlock.approve": "Onartu eskaera",
|
||||
"components.RequestBlock.decline": "Ukatu eskaera",
|
||||
"components.RequestBlock.delete": "Ezabatu eskaera",
|
||||
@@ -450,7 +452,8 @@
|
||||
"components.Settings.Notifications.chatIdTip": "Hasi txat bat zure bot-arekin, gehitu <GetIdBotLink>@get_id_bot</GetIdBotLink> eta egin <code>/my_id</code> komandoa",
|
||||
"components.Settings.Notifications.encryptionTip": "Kasu gehienetan, TLS inplizituak 465 portua eta STARTTLSk 587 portua erabiltzen dute",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Gehitu etiketa gehigarri bat automatikoki eskaeraren erabiltzaile ID eta erabiltzaile-izenarekin",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Erregistro horiek zuzenean ikus ditzakezu <code>stdout</code> edo <code>{appDataPath}/logs/jellyseerr.log</code> bidez.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Erregistro horiek zuzenean ikus ditzakezu <code>stdout</code> edo <code>{appDataPath}/logs/overseerr.log</code> bidez.",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Erabili ',' banatzaile eta '*.' komodin gisa azpidominioetarako",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Gehitu etiketa gehigarri bat automatikoki eskaeraren erabiltzaile ID eta erabiltzaile-izenarekin",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr berrabiarazi egin behar da aldaketa hauek indarrean jartzeko",
|
||||
"components.UserList.passwordinfodescription": "Konfiguratu aplikazioaren URL bat eta gaitu posta elektronikoko jakinarazpenak pasahitz sortze automatikoa ahalbidetzeko.",
|
||||
@@ -459,6 +462,7 @@
|
||||
"components.Discover.resetwarning": "Berrezarri kontrol irristari guztiak modu lehenetsira. Honek kontrol irristari pertsonalizatuak ere ezabatuko ditu!",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Zure eskaera-mugen laburpena ikus dezakezu zure <ProfileLink>profil-orrian</ProfileLink>.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Web push jakinarazpenak jasotzeko, Jellyseerr HTTPS bidez zerbitzatu behar da.",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Ez ezazu konfigurazio hau gaitu ez badakizun zer egiten ari zaren!",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {Gaitutako iragazki #} other {Gaitutako # iragazki}}",
|
||||
"components.Discover.DiscoverTv.activefilters": "{count, plural, one {Gaitutako iragazki #} other {Gaitutako # iragazki}}",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {Gaitutako iragazki #} other {Gaitutako # iragazki}}",
|
||||
@@ -474,6 +478,7 @@
|
||||
"components.ResetPassword.validationpasswordminchars": "Pasahitza laburregia da; gutxienez 8 karaktere izan beharko lituzke",
|
||||
"components.Settings.Notifications.botUsernameTip": "Baimendu erabiltzaileei zure bot-ekin txat bat hasi eta jakinarazpenak konfiguratzen",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Kanpotik ateratako irudiak cacheatu (biltegi kantitate handia behar du)",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Onartu Jellyseerr proxy baten atzean dauden bezeroen IP helbideak ondo erregistratzea",
|
||||
"components.Settings.jellyfinlibrariesDescription": "{mediaServerName}-(e)k eskaneatzen dituen liburutegiak. Egin klik beheko botoian liburutegirik zerrendatzen ez bada.",
|
||||
"components.Settings.scanbackground": "Eskaneatzea atzeko planoan egongo da. Bitartean konfigurazio prozesua jarraitu dezakezu.",
|
||||
"components.UserList.usercreatedfailedexisting": "Emandako helbide elektronikoa dagoeneko beste erabiltzaile batek darabil.",
|
||||
@@ -482,7 +487,7 @@
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Ez duzu baimenik erabiltzaile honen pasahitza aldatzeko.",
|
||||
"components.UserProfile.UserSettings.unauthorizedDescription": "Ez duzu baimenik erabiltzaile honen ezarpenak aldatzeko.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationNewPasswordLength": "Pasahitza laburregia da; gutxienez 8 karaktere izan beharko lituzke",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Baimendu erabiltzaileei haien helbide elektronikoa eta pasahitza erabiliz saioa hasten",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Baimendu erabiltzaileei haien helbide elektronikoa eta pasahitza erabiliz saioa hasten, {mediaServerName}-(r)en OAuth ordez",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "Erabiltzaile honek <strong> {limit} </strong> {type} eskaera egin ditzake <strong>{days}</strong> egunero.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Erabiltzailearen eskaera-mugen laburpena ikus dezakezu <ProfileLink> profil orrian</ProfileLink>.",
|
||||
"components.RequestModal.requestmovies4k": "Eskatu {count} {count, plural, one {film} other {film}} 4K-n",
|
||||
@@ -517,6 +522,7 @@
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "{jobScheduleMinutes, plural, one {minute} other {{jobScheduleMinutes} minutes}}",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "{jobScheduleSeconds, plural, one {second} other {{jobScheduleSeconds} seconds}}",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Zerbait gaizki joan da API gako berria sortzean.",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Ezarri kanpoko API sarbidea irakurtzeko soilik (HTTPS behar du)",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Onartu {mediaServerName} erabiltzaileak saioa hastea inportatu gabe",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URLak ez du barra batean amaitu behar",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "URLa ez du amaierako barra batean amaitu behar",
|
||||
@@ -785,7 +791,7 @@
|
||||
"components.NotificationTypeSelector.issuecreatedDescription": "Bidali jakinarazpenak intzidentziak sortzen direnean.",
|
||||
"components.NotificationTypeSelector.issuereopenedDescription": "Bidali jakinarazpenak intzidentziak berriro irekitzen direnean.",
|
||||
"components.NotificationTypeSelector.issueresolvedDescription": "Bidali jakinarazpenak intzidentziak konpontzen direnean.",
|
||||
"components.MovieDetails.watchlistError": "Zerbait gaizki joan da. Mesedez, saiatu berriro.",
|
||||
"components.MovieDetails.watchlistError": "Zerbait gaizki joan da, saiatu berriro.",
|
||||
"components.MovieDetails.play4k": "Ikusi 4K-n {mediaServerName}-(e)n",
|
||||
"components.MovieDetails.rtaudiencescore": "Rotten Tomatoes audientzia puntuazioa",
|
||||
"components.MovieDetails.play": "Ikusi {mediaServerName}-(e)n",
|
||||
@@ -1047,16 +1053,27 @@
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Zerbait gaizki joan da ezarpenak gordetzean.",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Iragazi edukia eskualdeko eskuragarritasunarengatik",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Iragazi edukia iturrizko hizkuntzarengatik",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Saihestu proxya helbide lokaletarako",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Baimendu telesailen eskaera partzialak",
|
||||
"components.Settings.SettingsMain.proxySsl": "Erabili SSL proxyrako",
|
||||
"components.Settings.SettingsMain.cacheImages": "Gaitu irudien cachea",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Gaitu CSRF babesa",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Ezkutatu eskuragarri dagoen multimedia",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "Proxyak ezikusitako helbideak",
|
||||
"components.Settings.SettingsMain.trustProxy": "Gaitu proxy onarpena",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Aurkitu eskualdea",
|
||||
"components.Settings.SettingsMain.generalsettings": "Ezarpen orokorrak",
|
||||
"components.Settings.SettingsMain.locale": "Bistaratzeko hizkuntza",
|
||||
"components.Settings.SettingsMain.originallanguage": "Aurkitu hizkuntza",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S) Proxya",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Proxy ostalari-izena",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Proxy pasahitza",
|
||||
"components.Settings.SettingsMain.proxyPort": "Proxy ataka",
|
||||
"components.Settings.SettingsMain.proxyUser": "Proxy erabiltzaile-izena",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Streaming eskualdea",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Aplikazioaren izenburu bat eman behar duzu",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Baliozko URL bat eman behar duzu",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Baliozko ataka bat eman behar duzu",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Erabiltzaile berrie ematen zaizkien hasierako baimenak",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Film eskaera muga globala",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Gaitu {mediaServerName} saio hasiera berria",
|
||||
@@ -1174,7 +1191,7 @@
|
||||
"components.Settings.toastPlexRefreshSuccess": "Plex zerbitzarien zerrenda ondo lortu da!",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Tautulli ezarpenak ondo gorde dira!",
|
||||
"components.TvDetails.network": "{networkCount, plural, one {Sare} other {Sare}}",
|
||||
"components.TitleCard.watchlistError": "Zerbait gaizki joan da. Mesedez, saiatu berriro.",
|
||||
"components.TitleCard.watchlistError": "Zerbait gaizki joan da, saiatu berriro.",
|
||||
"components.TitleCard.watchlistCancel": "<strong>{title}</strong>-(r)en jarraipen-zerrenda utzita.",
|
||||
"components.Setup.welcome": "Ongi etorri Jellyseerr-era",
|
||||
"components.StatusBadge.openinarr": "Ireki {arr}-en",
|
||||
@@ -1198,7 +1215,7 @@
|
||||
"components.TvDetails.manageseries": "Kudeatu telesailak",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> jarraipen zerrendatik ondo kendu da!",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> jarraipen zerrendara ondo gehitu da!",
|
||||
"components.TvDetails.watchlistError": "Zerbait gaizki joan da. Mesedez, saiatu berriro.",
|
||||
"components.TvDetails.watchlistError": "Zerbait gaizki joan da, saiatu berriro.",
|
||||
"components.TvDetails.play4k": "Ikusi 4K-n {mediaServerName}-(e)n",
|
||||
"components.TvDetails.rtaudiencescore": "Rotten Tomatoes audientzia puntuazioa",
|
||||
"components.TvDetails.play": "Ikusi {mediaServerName}-(e)n",
|
||||
@@ -1317,7 +1334,7 @@
|
||||
"components.UserProfile.totalrequests": "Eskaera guztiak",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsSuccess": "Baimenak ondo gorde dira!",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> zerrenda beltzean dago jada.",
|
||||
"i18n.blacklistError": "Zerbait gaizki joan da. Mesedez, saiatu berriro.",
|
||||
"i18n.blacklistError": "Zerbait gaizki joan da, saiatu berriro.",
|
||||
"i18n.resultsperpage": "Erakutsi {pageSize} emaitza orri bakoitzean",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> zerrenda beltzera gehitu da.",
|
||||
"i18n.areyousure": "Ziur zaude?",
|
||||
@@ -1386,104 +1403,5 @@
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "API gako berria ondo sortu da!",
|
||||
"components.TvDetails.episodeRuntime": "Atalaren iraupena",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Gotify jakinarazpenen ezarpenak ondo gorde dira!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "LunaSea jakinarazpenen ezarpenak ondo gorde dira!",
|
||||
"components.Settings.OverrideRuleModal.qualityprofile": "Kalitate profila",
|
||||
"components.Settings.OverrideRuleModal.selectRootFolder": "Hautatu erro-karpeta",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Hurrengo telesailak",
|
||||
"components.Login.loginwithapp": "Hasi saioa {appName}(r)ekin",
|
||||
"components.Login.noadminerror": "Ez da administratzaile erabiltzailerik aurkitu zerbitzarian.",
|
||||
"components.Login.orsigninwith": "Edo hasi saioa honekin",
|
||||
"components.Selector.searchUsers": "Hautatu erabiltzaileak…",
|
||||
"components.Settings.OverrideRuleModal.conditions": "Baldintzak",
|
||||
"components.Settings.OverrideRuleModal.rootfolder": "Erro-karpeta",
|
||||
"components.Settings.OverrideRuleModal.selectService": "Hautatu zerbitzua",
|
||||
"components.Settings.OverrideRuleModal.selecttags": "Hautatu etiketak",
|
||||
"components.Settings.OverrideRuleModal.service": "Zerbitzua",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorExists": "Kontu hau dagoeneko Plex erabiltzaile batera lotuta dago",
|
||||
"components.Settings.overrideRulesDescription": "Gainidatze-arauek eskaera bat arauarekin bat datorrenean ordezkatuko diren propietateak zehazteko aukera ematen dute.",
|
||||
"components.Settings.SettingsUsers.mediaServerLoginTip": "Eman erabiltzaileei {mediaServerName} kontua erabiliz saioa hasteko aukera",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnauthorized": "Ezin da {mediaServerName}era konektatu zure kredentzialak erabiliz",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnknown": "Errore ezezaguna gertatu da",
|
||||
"components.Settings.OverrideRuleModal.createrule": "Gainidazte arau berria",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadIdTip": "Zure taldeko txatak gaiak gaituta baditu, hari/gai baten ID bat zehaztu dezakezu hemen",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.title": "Lotu {mediaServerName} kontua",
|
||||
"components.Settings.OverrideRuleModal.keywords": "Gako-hitzak",
|
||||
"components.Settings.OverrideRuleModal.conditionsDescription": "Parametro-aldaketak aplikatu aurretik baldintzak zehazten ditu. Eremu bakoitza balioztatu behar da aplikatu beharreko arauetarako (AND eragiketa). Eremu bat egiaztatutzat hartzen da propietateetariko bat, bat badatorren (OR eragiketa).",
|
||||
"components.Settings.Notifications.messageThreadIdTip": "Zure taldeko txatak gaiak gaituta baditu, hari/gai baten ID bat zehaztu dezakezu hemen",
|
||||
"components.Settings.Notifications.validationMessageThreadId": "Hari/gaiaren IDa zenbaki oso positiboa izan behar da",
|
||||
"components.Settings.Notifications.messageThreadId": "Hari/Gai ID",
|
||||
"components.Settings.OverrideRuleTile.tags": "Etiketak",
|
||||
"components.Settings.OverrideRuleModal.users": "Erabiltzaileak",
|
||||
"components.Settings.OverrideRuleTile.conditions": "Baldintzak",
|
||||
"components.Settings.SettingsNetwork.networkDisclaimer": "Ezarpen hauen ordez zure edukiontzi/sistemako sare-parametroak erabili behar dira. Ikusi {docs} informazio gehiagorako.",
|
||||
"components.Settings.OverrideRuleModal.settingsDescription": "Goiko baldintzak betetzen direnean zein ezarpen aldatuko diren zehazten du.",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "EZ ezazu ezarpen hau gaitu egiten ari zarena ez badakizu!",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Behartu Jellyseerr IPv4 helbideak konpontzera IPv6ren ordez",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Ezarri kanpoko API sarbidea irakurtzeko soilik (HTTPS behar du)",
|
||||
"components.Settings.OverrideRuleModal.serviceDescription": "Aplikatu arau hau hautatutako zerbitzura.",
|
||||
"components.Settings.SettingsNetwork.networksettingsDescription": "Konfiguratu sare ezarpenak zure Jellyseerr instantziarako.",
|
||||
"components.Settings.OverrideRuleModal.ruleCreated": "Gainidazte araua behar bezala sortu da!",
|
||||
"components.Settings.OverrideRuleModal.ruleUpdated": "Gainidazte araua ondo eguneratu da!",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "Baimendu atal berezien eskaerak",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Behartu IPv4 ebazpena lehen",
|
||||
"components.Settings.OverrideRuleModal.editrule": "Editatu gainidazte araua",
|
||||
"components.Settings.OverrideRuleModal.selectQualityProfile": "Hautatu kalitate profila",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "Sare ezarpen aurreratuak",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Gaitu CSRF babesa",
|
||||
"components.Settings.OverrideRuleModal.create": "Sortu araua",
|
||||
"components.Settings.OverrideRuleModal.notagoptions": "Etiketarik ez.",
|
||||
"components.Settings.OverrideRuleTile.qualityprofile": "Kalitate profila",
|
||||
"components.Settings.OverrideRuleTile.rootfolder": "Erro-karpeta",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Sare ezarpenak",
|
||||
"components.Settings.OverrideRuleModal.genres": "Generoak",
|
||||
"components.Settings.OverrideRuleModal.languages": "Hizkuntzak",
|
||||
"components.Settings.OverrideRuleModal.settings": "Ezarpenak",
|
||||
"components.Settings.OverrideRuleModal.tags": "Etiketak",
|
||||
"components.Settings.OverrideRuleTile.genre": "Generoa",
|
||||
"components.Settings.OverrideRuleTile.keywords": "Gako-hitzak",
|
||||
"components.Settings.OverrideRuleTile.language": "Hizkuntza",
|
||||
"components.Settings.OverrideRuleTile.settings": "Ezarpenak",
|
||||
"components.Settings.OverrideRuleTile.users": "Erabiltzaileak",
|
||||
"components.Settings.SettingsNetwork.docs": "dokumentazioa",
|
||||
"components.Settings.SettingsNetwork.network": "Sarea",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Erabili ',' banatzaile gisa eta '*.' azpidomeinuetarako komodin gisa",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Baimendu Jellyseerr-i bezeroen IP helbideak behar bezala erregistratzea proxy baten atzean",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.description": "Sartu zure {mediaServerName} kredentzialak zure kontua {applicationName}-rekin lotzeko.",
|
||||
"components.Setup.librarieserror": "Baliozkotzeak huts egin du. Mesedez, aldatu liburutegiak berriro jarraitzeko.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorExists": "Kontu hau dagoeneko {applicationName} erabiltzaile batekin lotuta dago",
|
||||
"components.Settings.SettingsUsers.atLeastOneAuth": "Gutxienez autentifikazio metodo bat hautatu behar da.",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Zerbait gaizki joan da ezarpenak gordetzean.",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "Baliozko ataka bat eman behar duzu",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Saihestu proxya helbide lokaletarako",
|
||||
"components.Settings.SettingsUsers.loginMethodsTip": "Konfiguratu saio hasiera metodoak erabiltzaileentzat.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.passwordRequired": "Pasahitza eman behar duzu",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.usernameRequired": "Erabiltzaile-izena eman behar duzu",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.deleteFailed": "Ezin da lotutako kontua ezabatu.",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "Erabili SSL proxyrako",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.errorUnknown": "Errore ezezaguna gertatu da",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilter": "Proxy ezikusitako helbideak",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Ezarpenak ondo gorde dira!",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Gaitu proxy euskarria",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "Gaitu {mediaServerName} saio hasiera",
|
||||
"components.Settings.addrule": "Gainidazte arau berria",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "HTTP(S) proxia",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "Proxi ostalari-izena",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "Proxy pasahitza",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "Proxy ataka",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "Proxy erabiltzaile-izena",
|
||||
"components.Settings.SettingsUsers.loginMethods": "Saio-hasiera metodoak",
|
||||
"components.Settings.overrideRules": "Gainidazte arauak",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccounts": "Lotutako kontuak",
|
||||
"components.Settings.menuNetwork": "Sarea",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.password": "Pasahitza",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.save": "Lotu",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.saving": "Gehitzen…",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.username": "Erabiltzaile-izena",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noLinkedAccounts": "Ez duzu kanpoko konturik zure kontura lotuta.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noPermissionDescription": "Ez duzu erabiltzaile honen lotutako kontuak aldatzeko baimenik.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccountsHint": "Kanpoko kontu hauek zure {applicationName} kontuarekin lotuta daude.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramMessageThreadId": "Hari/gaiaren IDa zenbaki oso positiboa izan behar da",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorUnauthorized": "Ezin da Plexera konektatu zure kredentzialak erabiliz",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadId": "Hari/Gai ID",
|
||||
"components.UserProfile.UserSettings.menuLinkedAccounts": "Lotutako kontuak"
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "LunaSea jakinarazpenen ezarpenak ondo gorde dira!"
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@
|
||||
"components.Discover.tvgenres": "Séries par genres",
|
||||
"components.Discover.upcoming": "Films à venir",
|
||||
"components.Discover.upcomingmovies": "Films à venir",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Rechercher un film ou une série",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Rechercher films et séries",
|
||||
"components.Layout.Sidebar.dashboard": "Découvrir",
|
||||
"components.Layout.Sidebar.requests": "Demandes",
|
||||
"components.Layout.Sidebar.settings": "Paramètres",
|
||||
@@ -267,11 +267,11 @@
|
||||
"i18n.movies": "Films",
|
||||
"i18n.partiallyavailable": "Partiellement disponible",
|
||||
"i18n.pending": "En attente",
|
||||
"i18n.processing": "En cours de traitement",
|
||||
"i18n.processing": "En traitement",
|
||||
"i18n.tvshows": "Séries",
|
||||
"i18n.unavailable": "Indisponible",
|
||||
"pages.oops": "Oups",
|
||||
"pages.returnHome": "Retourner à l'accueil",
|
||||
"pages.returnHome": "Retourner à l'acceuil",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Casting complet de la série",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Casting complet",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Paramètres de notification par e-mail enregistrés avec succès !",
|
||||
@@ -364,7 +364,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Activer l'agent",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Jeton API d'application",
|
||||
"components.RequestList.sortModified": "Dernière modification",
|
||||
"components.RequestList.sortAdded": "Plus récentes",
|
||||
"components.RequestList.sortAdded": "Plus récent",
|
||||
"components.RequestList.showallrequests": "Afficher toutes les demandes",
|
||||
"components.StatusBadge.status4k": "{status} en 4K",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Paramètres de notification Webhook enregistrés avec succès !",
|
||||
@@ -401,8 +401,8 @@
|
||||
"components.UserList.autogeneratepassword": "Générer automatiquement le mot de passe",
|
||||
"components.UserList.passwordinfodescription": "Configurez l'URL de l'application ainsi que les notifications par e-mail pour permettre la génération automatique de mots de passe.",
|
||||
"components.UserList.email": "Adresse e-mail",
|
||||
"components.Login.validationpasswordrequired": "Vous devez renseigner un mot de passe",
|
||||
"components.Login.validationemailrequired": "Vous devez fournir un e-mail valide",
|
||||
"components.Login.validationpasswordrequired": "Vous devez renseigner un mot de passe.",
|
||||
"components.Login.validationemailrequired": "Vous devez fournir un e-mail valide.",
|
||||
"components.Login.signinwithoverseerr": "Utilisez votre compte {applicationTitle}",
|
||||
"components.Login.password": "Mot de passe",
|
||||
"components.Login.loginerror": "Une erreur s'est produite lors de la tentative de connexion.",
|
||||
@@ -430,9 +430,11 @@
|
||||
"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",
|
||||
"components.Login.signinheader": "Connectez-vous pour continuer.",
|
||||
"components.Login.signingin": "Connexion en cours…",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Configurer et activer les agents de notification.",
|
||||
"components.PlexLoginButton.signinwithplex": "Se connecter",
|
||||
"components.PlexLoginButton.signingin": "Connexion en cours…",
|
||||
"components.UserList.userssaved": "Les permissions d'utilisateur ont été enregistrées avec succès !",
|
||||
"components.UserList.bulkedit": "Modification en masse",
|
||||
"components.PermissionEdit.usersDescription": "Autorise à gérer les utilisateurs. Les utilisateurs avec cette autorisation ne peuvent pas modifier les utilisateurs dotés de privilèges d'administrateur ni les accorder.",
|
||||
@@ -603,9 +605,9 @@
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.nopermissionDescription": "Vous n'avez l'autorisation de modifier le mot de passe de cet utilisateur.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Utilisateur",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Rôle",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Administrateur",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.owner": "Propriétaire",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.admin": "Admin",
|
||||
"components.UserList.owner": "Administrateur",
|
||||
"components.UserList.owner": "Propriétaire",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.accounttype": "Type de compte",
|
||||
"components.UserList.accounttype": "Type de compte",
|
||||
"components.Settings.SettingsJobsCache.unknownJob": "Tâche inconnue",
|
||||
@@ -627,7 +629,7 @@
|
||||
"components.Settings.SettingsJobsCache.sonarr-scan": "Scan de Sonarr",
|
||||
"components.Settings.SettingsJobsCache.radarr-scan": "Scan de Radarr",
|
||||
"components.Settings.SettingsJobsCache.plex-recently-added-scan": "Scan des ajouts récents Plex",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Scan complet des bibliothèques Plex",
|
||||
"components.Settings.SettingsJobsCache.plex-full-scan": "Scan complet des bibliothèques Plex.",
|
||||
"components.Settings.Notifications.validationUrl": "Vous devez fournir une URL valide",
|
||||
"components.Settings.Notifications.botAvatarUrl": "L'URL de l'avatar de votre Bot",
|
||||
"components.Settings.SettingsUsers.userSettingsDescription": "Configurer les paramètres généraux et par défaut de l'utilisateur.",
|
||||
@@ -707,7 +709,7 @@
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {saison} other {saisons}}",
|
||||
"components.LanguageSelector.originalLanguageDefault": "Toutes les langues",
|
||||
"components.LanguageSelector.languageServerDefault": "({language}) par défaut",
|
||||
"i18n.tvshow": "Série",
|
||||
"i18n.tvshow": "Séries",
|
||||
"i18n.test": "Tester",
|
||||
"i18n.save": "Sauvegarder les changements",
|
||||
"i18n.request4k": "Demander en 4K",
|
||||
@@ -758,7 +760,7 @@
|
||||
"components.RequestModal.AdvancedRequester.selecttags": "Sélectionner les tags",
|
||||
"components.RequestModal.AdvancedRequester.notagoptions": "Aucun tag.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "Chiffrer les emails en utilisant <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Votre compte n’a actuellement aucun mot de passe. Configurez un mot de passe ci-dessous pour activer la connexion en tant qu’ \"utilisateur local\" en utilisant votre adresse e-mail.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Votre compte n’a actuellement pas de mot de passe. Configurez un mot de passe ci-dessous pour activer la connexion en tant qu’ \"utilisateur local\" en utilisant votre adresse e-mail.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Ce compte utilisateur n’a actuellement pas de mot de passe. Configurez un mot de passe ci-dessous pour permettre à ce compte de se connecter en tant \"qu’utilisateur local.\"",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Vous devez fournir une clé publique PGP valide",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingssaved": "Paramètres de notification Telegram enregistrés avec succès !",
|
||||
@@ -865,7 +867,7 @@
|
||||
"components.Settings.is4k": "4K",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Autoriser les utilisateurs de {mediaServerName} à se connecter sans être d'abord importés",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Autoriser nouvelle connexion {mediaServerName}",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Permettre aux utilisateurs de se connecter en utilisant leur adresse e-mail et leur mot de passe, au lieu de {mediaServerName} OAuth",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Autoriser les utilisateurs à se connecter en utilisant leur adresse e-mail et leur mot de passe, au lieu de {mediaServerName} OAuth",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Autorisations par défaut attribuées aux nouveaux utilisateurs",
|
||||
"components.Settings.Notifications.webhookUrlTip": "Créez une <DiscordWebhookLink>intégration de webhook</DiscordWebhookLink> dans votre serveur",
|
||||
"components.Settings.Notifications.validationTypes": "Vous devez sélectionner au moins un type de notification",
|
||||
@@ -1134,8 +1136,8 @@
|
||||
"components.Login.title": "Ajouter un e-mail",
|
||||
"components.Login.username": "Nom d'utilisateur",
|
||||
"components.Login.validationEmailFormat": "E-mail invalide",
|
||||
"components.Login.validationEmailRequired": "Vous devez fournir un e-mail",
|
||||
"components.Login.validationemailformat": "Vous devez fournir un e-mail valide",
|
||||
"components.Login.validationEmailRequired": "Vous devez fournir un e-mail.",
|
||||
"components.Login.validationemailformat": "Vous devez fournir un e-mail valide.",
|
||||
"components.Login.validationhostformat": "URL valide requise",
|
||||
"components.Login.validationhostrequired": "{mediaServerName} URL requise",
|
||||
"components.Login.validationusernamerequired": "Nom d'utilisateur requis",
|
||||
@@ -1183,6 +1185,8 @@
|
||||
"components.TvDetails.Season.noepisodes": "Liste des épisodes non disponible.",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.RequestCard.unknowntitle": "Titre inconnu",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "N’ACTIVEZ PAS ce paramètre si vous ne comprenez pas ce que vous faites !",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Activez la protection CSRF",
|
||||
"components.Settings.SettingsMain.locale": "Langue d'affichage",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nouvelle clé d'API générée avec succès !",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Un problème est survenu lors de la génération de la nouvelle clé d'API.",
|
||||
@@ -1193,6 +1197,7 @@
|
||||
"components.Settings.SettingsMain.applicationurl": "URL de l'application",
|
||||
"components.Settings.SettingsMain.cacheImages": "Activer la mise en cache d'image",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Met en cache localement et utilise des images optimisées (nécessite une quantité considérable d'espace disque)",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Mettre l'accès à l'API externe en lecture seule (nécessite HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Général",
|
||||
"components.Settings.SettingsMain.generalsettings": "Paramètres généraux",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Paramètres sauvegardés avec succès !",
|
||||
@@ -1212,6 +1217,8 @@
|
||||
"components.Selector.searchStudios": "Recherchez un ou plusieurs studios…",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Configurer les paramètres généraux et par défaut pour Jellyseerr.",
|
||||
"components.Settings.SettingsMain.originallanguage": "Langue à découvrir",
|
||||
"components.Settings.SettingsMain.trustProxy": "Activer la prise en charge proxy",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permettre à Jellyseerr d'enregistrer correctement les adresses IP des clients derrière un proxy",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Permettre les demandes partielles des séries",
|
||||
"components.Selector.nooptions": "Aucun résultat.",
|
||||
"components.Layout.Sidebar.browsetv": "Séries",
|
||||
@@ -1228,8 +1235,8 @@
|
||||
"components.IssueModal.issueVideo": "Vidéo",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "Son de notification",
|
||||
"components.Settings.jellyfinSettings": "Paramètres {mediaServerName}",
|
||||
"components.Settings.jellyfinSettingsFailure": "Un problème est survenu lors de l'enregistrement des paramètres de {mediaServerName}.",
|
||||
"components.Settings.jellyfinSettingsSuccess": "Les paramètres de {mediaServerName} ont été sauvegardés avec succès !",
|
||||
"components.Settings.jellyfinSettingsFailure": "Une erreur est survenue lors de l'enregistrement des paramètres pour {mediaServerName}.",
|
||||
"components.Settings.jellyfinSettingsSuccess": "Les paramètres pour {mediaServerName} ont été enregistrés avec succès !",
|
||||
"components.Settings.jellyfinlibraries": "Bibliothèques {mediaServerName}",
|
||||
"components.Settings.jellyfinlibrariesDescription": "Les bibliothèques de {mediaServerName} sont en cours d'analyse. Cliquez sur le bouton ci-dessous si aucune bibliothèque n'est répertoriée.",
|
||||
"components.Settings.jellyfinsettings": "Paramètres {mediaServerName}",
|
||||
@@ -1245,7 +1252,7 @@
|
||||
"components.StatusBadge.playonplex": "Lire sur {mediaServerName}",
|
||||
"components.TitleCard.addToWatchList": "Ajouter à la liste de surveillance",
|
||||
"components.TitleCard.watchlistCancel": "Watchlist pour <strong>{title}</strong> annulée.",
|
||||
"components.TitleCard.watchlistError": "Un problème est survenu. Veuillez réessayer.",
|
||||
"components.TitleCard.watchlistError": "Une erreur est survenue. Veuillez réessayer.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> a été ajouté à votre watchlist avec succès !",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Une erreur est survenue lors de la récupération des données de la saison.",
|
||||
"components.TvDetails.manageseries": "Gérer les séries",
|
||||
@@ -1264,11 +1271,11 @@
|
||||
"components.UserProfile.plexwatchlist": "Watchlist Plex",
|
||||
"components.Settings.syncJellyfin": "Synchroniser les bibliothèques",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> a été retiré de votre watchlist avec succès !",
|
||||
"components.IssueModal.issueSubtitles": "Sous-titres",
|
||||
"components.IssueModal.issueSubtitles": "Sous-titre",
|
||||
"components.Login.emailtooltip": "L'adresse ne nécessite pas d'être associée avec votre instance {mediaServerName}.",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Appareil par défaut",
|
||||
"components.Settings.Notifications.userEmailRequired": "Exiger l'adresse e-mail de l'utilisateur",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Soutenir Jellyseerr",
|
||||
"components.Settings.Notifications.userEmailRequired": "E-mail utilisateur requis",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Soutenez Jellyseerr",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Scan complet des bibliothèques Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Scan des ajouts récents aux bibliothèques Jellyfin",
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Type de série anime",
|
||||
@@ -1294,11 +1301,11 @@
|
||||
"components.MovieDetails.removefromwatchlist": "Supprimer de la liste de surveillance",
|
||||
"components.Login.adminerror": "Vous devez utiliser un compte administrateur pour vous connecter.",
|
||||
"components.MovieDetails.addtowatchlist": "Ajouter à la liste de surveillance",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> a bien été supprimé de la liste de suivi !",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> Supprimé de la liste de surveillance avec succès!",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "L'URL de base ne doit pas se terminer par une barre oblique finale",
|
||||
"components.RequestList.RequestItem.profileName": "Profil",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Email valide requis",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> a bien été supprimé de la liste de suivi !",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> Supprimé de la liste de surveillance avec succès!",
|
||||
"components.TvDetails.addtowatchlist": "Ajouter à la liste de surveillance",
|
||||
"components.Login.enablessl": "Utilise SSL",
|
||||
"components.Login.hostname": "URL de {mediaServerName}",
|
||||
@@ -1308,16 +1315,16 @@
|
||||
"components.Login.validationPortRequired": "Vous devez fournir un numéro de port valide",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "L'URL de base doit avoir une barre oblique initiale",
|
||||
"components.Login.validationUrlTrailingSlash": "L'URL ne doit pas se terminer par une barre oblique finale",
|
||||
"components.MovieDetails.watchlistError": "Une erreur s'est produite. Merci de réessayez.",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> a bien été ajouté à la liste de suivi !",
|
||||
"components.MovieDetails.watchlistError": "Une erreur s'est produite, réessayez.",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> a été ajouté à la liste de surveillance avec succès!",
|
||||
"components.Settings.invalidurlerror": "Impossible de se connecter au serveur {mediaServerName}.",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "URL de mot de passe oublié",
|
||||
"components.Settings.jellyfinSyncFailedAutomaticGroupedFolders": "L'authentification personnalisée avec le regroupement automatique de bibliothèques n'est pas prise en charge",
|
||||
"components.Settings.jellyfinSyncFailedGenericError": "Une erreur s'est produite lors de la synchronisation des bibliothèques",
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Aucune bibliothèque n'a été trouvée",
|
||||
"components.TvDetails.removefromwatchlist": "Supprimer de la liste de surveillance",
|
||||
"components.TvDetails.watchlistError": "Un problème est survenu. Veuillez réessayer.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> a bien été ajouté à la liste de suivi !",
|
||||
"components.TvDetails.watchlistError": "Une erreur s'est produite, réessayez.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> a été ajouté à la liste de surveillance avec succès!",
|
||||
"components.UserList.username": "Nom d'utilisateur",
|
||||
"components.UserList.validationUsername": "Vous devez fournir un nom d'utilisateur",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "Email requis",
|
||||
@@ -1341,7 +1348,7 @@
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.Discover.FilterSlideover.status": "Statut",
|
||||
"components.Blacklist.mediaType": "Type",
|
||||
"components.Blacklist.mediaTmdbId": "Identifiant tmdb",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb Id",
|
||||
"components.Blacklist.blacklistdate": "date",
|
||||
"components.Blacklist.blacklistedby": "{date} par {user}",
|
||||
"components.Blacklist.mediaName": "Nom",
|
||||
@@ -1354,11 +1361,12 @@
|
||||
"components.Layout.Sidebar.blacklist": "Liste noire",
|
||||
"components.PermissionEdit.viewblacklistedItems": "Voir les médias dans la liste noire.",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> est déjà dans la liste noire.",
|
||||
"i18n.blacklistError": "Un problème est survenu. Veuillez réessayer.",
|
||||
"i18n.blacklistError": "Une erreur s'est produite, réessayez.",
|
||||
"components.PermissionEdit.blacklistedItems": "Ajouter le média à la liste noire.",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Vous devez fournir un identifiant Discord valide",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Pays à découvrir",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Accorder la permission de gérer la liste noire.",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Mot de passe du proxy",
|
||||
"components.RequestList.RequestItem.removearr": "Supprimer de {arr}",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Afficher les sites de streaming par disponibilité dans les pays",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegionTip": "Afficher les sites de streaming par disponibilité régionale",
|
||||
@@ -1368,7 +1376,16 @@
|
||||
"components.RequestList.sortDirection": "Inverser la direction du tri",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Avatars des utilisateurs",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Filtrer le contenu par disponibilité dans les pays",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Utilisez ',' comme séparateur et '*.' comme caractère générique pour les sous-domaines",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "Proxy HTTP(S)",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Nom d'hôte du proxy",
|
||||
"components.Settings.SettingsMain.proxyPort": "Port du proxy",
|
||||
"components.Settings.SettingsMain.proxySsl": "Utiliser SSL pour le proxy",
|
||||
"components.Settings.SettingsMain.proxyUser": "Nom d'utilisateur du proxy",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Pays de diffusion",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Contourner le proxy pour les adresses locales",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "Adresses proxy ignorées",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Vous devez fournir un port valide",
|
||||
"components.Settings.apiKey": "Clé API",
|
||||
"components.Settings.scanbackground": "L'analyse s'exécutera en arrière-plan. Vous pouvez poursuivre la configuration en attendant.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Pays à découvrir",
|
||||
@@ -1386,104 +1403,5 @@
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "L'ID à mentionner dans le message du webhook. Laissez ce champ vide pour désactiver les mentions",
|
||||
"components.Settings.Notifications.webhookRoleId": "ID de rôle de notification",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Rafraîchir le token Plex",
|
||||
"components.Settings.tip": "Conseil",
|
||||
"components.Login.loginwithapp": "Se connecter avec {appName}",
|
||||
"components.Settings.SettingsNetwork.network": "Réseau",
|
||||
"components.Settings.OverrideRuleModal.genres": "Genres",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "N'activez pas ce paramètre à moins que vous ne compreniez ce que vous faites !",
|
||||
"components.Settings.OverrideRuleModal.selectQualityProfile": "Choisir le profil de qualité",
|
||||
"components.Settings.OverrideRuleModal.selectRootFolder": "Choisir le dossier racine",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Paramètres réseau",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "Paramètres réseau avancés",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Séries à venir",
|
||||
"components.Login.noadminerror": "Aucun compte administrateur trouvé sur ce serveur.",
|
||||
"components.Login.orsigninwith": "Ou se connecter avec",
|
||||
"components.Settings.OverrideRuleModal.keywords": "Mots clés",
|
||||
"components.Settings.OverrideRuleModal.qualityprofile": "Profil de qualité",
|
||||
"components.Settings.OverrideRuleModal.rootfolder": "Dossier racine",
|
||||
"components.Settings.OverrideRuleModal.selectService": "Choisir le service",
|
||||
"components.Settings.OverrideRuleModal.settings": "Paramètres",
|
||||
"components.Settings.OverrideRuleModal.selecttags": "Choisir les étiquettes",
|
||||
"components.Settings.OverrideRuleModal.tags": "Étiquettes",
|
||||
"components.Settings.OverrideRuleModal.users": "Utilisateurs",
|
||||
"components.Settings.OverrideRuleTile.genre": "Genre",
|
||||
"components.Settings.OverrideRuleTile.keywords": "Mots clés",
|
||||
"components.Settings.OverrideRuleTile.qualityprofile": "Profil de qualité",
|
||||
"components.Settings.OverrideRuleTile.rootfolder": "Dossier racine",
|
||||
"components.Settings.OverrideRuleTile.settings": "Paramètres",
|
||||
"components.Settings.OverrideRuleTile.tags": "Étiquettes",
|
||||
"components.Settings.OverrideRuleTile.users": "Utilisateurs",
|
||||
"components.Settings.SettingsNetwork.docs": "documentation",
|
||||
"components.Selector.searchUsers": "Sélectionner un utilisateur…",
|
||||
"components.Settings.SettingsNetwork.networkDisclaimer": "Les paramètres réseau de votre conteneur/système doivent être utilisés à la place de ces paramètres. Consultez la documentation pour plus d'informations.",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "Autoriser les demandes d'épisodes spéciaux",
|
||||
"components.Settings.SettingsUsers.loginMethods": "Méthodes de connexion",
|
||||
"components.Settings.menuNetwork": "Réseau",
|
||||
"components.Settings.SettingsUsers.mediaServerLoginTip": "Autoriser les utilisateurs à se connecter en utilisant leur compte {mediaServerName}",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.description": "Saisissez vos informations de connexion à {mediaServerName} pour lier votre compte à {applicationName}.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadId": "ID du fil de discussion",
|
||||
"components.Setup.librarieserror": "La validation a échoué. Veuillez réactiver les bibliothèques pour continuer.",
|
||||
"components.Settings.Notifications.messageThreadId": "ID du fil de discussion",
|
||||
"components.Settings.overrideRulesDescription": "Les règles de substitution vous permettent de spécifier les propriétés qui seront remplacées si une demande correspond à la règle.",
|
||||
"components.Settings.Notifications.messageThreadIdTip": "Si votre discussion de groupe prend en charge les fils de discussion, vous pouvez spécifier son identifiant ici",
|
||||
"components.Settings.SettingsUsers.atLeastOneAuth": "Au moins une méthode d'authentification doit être sélectionnée.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccountsHint": "Ces comptes externes sont liés à votre compte {applicationName}.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadIdTip": "Si votre discussion de groupe prend en charge les fils de discussion, vous pouvez spécifier son identifiant ici",
|
||||
"components.Settings.OverrideRuleModal.conditionsDescription": "Spécifie les conditions avant d'appliquer les modifications des paramètres. Chaque champ doit être validé pour que les règles s'appliquent (opération ET). Un champ est considéré comme vérifié si l'une de ses propriétés correspond (opération OU).",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Un problème s'est produit lors de l'enregistrement des paramètres.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnauthorized": "Impossible de se connecter à {mediaServerName} en utilisant vos informations de connexion",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.passwordRequired": "Vous devez fournir un mot de passe",
|
||||
"components.Settings.addrule": "Nouvelle règle de substitution",
|
||||
"components.Settings.Notifications.validationMessageThreadId": "L'identifiant du fil de discussion doit être un nombre entier positif",
|
||||
"components.Settings.OverrideRuleModal.conditions": "Conditions",
|
||||
"components.Settings.OverrideRuleModal.languages": "Langues",
|
||||
"components.Settings.OverrideRuleModal.notagoptions": "Pas de tag.",
|
||||
"components.Settings.OverrideRuleModal.editrule": "Modifier la règle de substitution",
|
||||
"components.Settings.OverrideRuleModal.ruleCreated": "La règle de substitution a été créée avec succès !",
|
||||
"components.Settings.OverrideRuleModal.ruleUpdated": "La règle de substitution a été mise à jour avec succès !",
|
||||
"components.Settings.OverrideRuleModal.service": "Service",
|
||||
"components.Settings.OverrideRuleModal.serviceDescription": "Appliquer cette règle au service sélectionné.",
|
||||
"components.Settings.OverrideRuleModal.settingsDescription": "Spécifie les paramètres qui seront modifiés lorsque les conditions ci-dessus sont remplies.",
|
||||
"components.Settings.OverrideRuleTile.conditions": "Conditions",
|
||||
"components.Settings.OverrideRuleTile.language": "Langue",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Activer la protection CSRF",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Définir l'accès à l'API externe en lecture seule (nécessite HTTPS)",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Forcer la résolution IPv4 en premier",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Forcer Jellyseerr à résoudre d'abord les adresses IPv4 au lieu d'IPv6",
|
||||
"components.Settings.SettingsNetwork.networksettingsDescription": "Configurez les paramètres réseau de votre instance Jellyseerr.",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilter": "Adresses ignorées par le proxy",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Utilisez ',' comme séparateur et '*' comme wildcard pour les sous-domaines",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Contourner le proxy pour les adresses locales",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "Proxy HTTP(S)",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "Nom d'hôte du proxy",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "Mot de passe du proxy",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "Port du proxy",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "Utiliser SSL pour le proxy",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "Nom d'utilisateur du proxy",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Les paramètres ont été enregistrés avec succès !",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Activer la prise en charge du proxy",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Permettre à Jellyseerr d'enregistrer correctement les adresses IP des clients derrière un proxy",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "Vous devez indiquer un port valide",
|
||||
"components.Settings.SettingsUsers.loginMethodsTip": "Configurer les méthodes de connexion pour les utilisateurs.",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "Activer la connexion à {mediaServerName}",
|
||||
"components.Settings.overrideRules": "Règles de substitution",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorExists": "Ce compte est déjà lié à un utilisateur {applicationName}",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnknown": "Une erreur inconnue est survenue",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.password": "Mot de passe",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.save": "Lien",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.saving": "Ajout en cours…",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.title": "Lier le compte {mediaServerName}",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.username": "Nom d'utilisateur",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.usernameRequired": "Vous devez fournir un nom d'utilisateur",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.deleteFailed": "Impossible de supprimer le compte associé.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.errorUnknown": "Une erreur inconnue est survenue",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramMessageThreadId": "L'identifiant du fil de discussion doit être un nombre entier positif",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccounts": "Comptes liés",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noLinkedAccounts": "Vous n'avez pas de comptes externes liés à votre compte.",
|
||||
"components.UserProfile.UserSettings.menuLinkedAccounts": "Comptes liés",
|
||||
"components.Settings.OverrideRuleModal.create": "Créer une règle",
|
||||
"components.Settings.OverrideRuleModal.createrule": "Nouvelle règle de remplacement",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noPermissionDescription": "Vous n'avez pas la permission de modifier les comptes liés de cet utilisateur.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorExists": "Ce compte est déjà lié à un utilisateur Plex",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorUnauthorized": "Impossible de se connecter à Plex en utilisant vos identifiants"
|
||||
"components.Settings.tip": "Conseil"
|
||||
}
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"components.Layout.Sidebar.users": "משתמשים",
|
||||
"components.Layout.UserDropdown.myprofile": "פרופיל",
|
||||
"components.Layout.UserDropdown.settings": "הגדרות",
|
||||
"components.Layout.VersionStatus.streamdevelop": "Jellyseerr פיתוח",
|
||||
"components.Layout.VersionStatus.streamdevelop": "פיתוח Jellyseerr",
|
||||
"components.AirDateBadge.airedrelative": "שודר ב-{relativeTime}",
|
||||
"components.Discover.NetworkSlider.networks": "רשתות שידור",
|
||||
"components.Discover.discover": "לגלות",
|
||||
@@ -222,7 +222,7 @@
|
||||
"components.Discover.tvgenres": "ז'אנרים של סדרות",
|
||||
"components.Discover.updatefailed": "משהו השתבש במהלך עדכון הגדרות של גילוי.",
|
||||
"components.Discover.updatesuccess": "הגדרות הגילוי התעדכנו.",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {עונה} other {עונות}}",
|
||||
"components.IssueList.IssueItem.seasons": "{seasonCount, plural, one {Season} other {Seasons}}",
|
||||
"components.Layout.Sidebar.browsetv": "סדרות",
|
||||
"components.Layout.UserWarnings.emailRequired": "דרושה כתובת מייל.",
|
||||
"components.Layout.UserWarnings.passwordRequired": "דרושה סיסמה.",
|
||||
@@ -283,13 +283,13 @@
|
||||
"components.MovieDetails.showless": "הראה פחות",
|
||||
"components.MovieDetails.showmore": "הראה יותר",
|
||||
"components.MovieDetails.streamingproviders": "זמין כעת ב",
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {אולפן} other {אולפנים}}",
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {Studio} other {Studios}}",
|
||||
"components.Discover.moviegenres": "ז'אנרים של סרטים",
|
||||
"components.Discover.resetfailed": "משהו השתבש, מאפס את ההתאמה האישית בגילוי.",
|
||||
"components.Discover.resetwarning": "מאפס את כל המחוונים, זה ימחק כל מחוון מותאם אישית!",
|
||||
"components.Discover.tmdbtvstreamingservices": "רשתות צפייה של סדרות בTMDB",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: עונה {seasonNumber} פרק {episodeNumber}",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {פרק} other {פרקים}}",
|
||||
"components.IssueList.IssueItem.episodes": "{episodeCount, plural, one {Episode} other {Episodes}}",
|
||||
"components.Layout.Sidebar.browsemovies": "סרטים",
|
||||
"components.Layout.UserWarnings.emailInvalid": "כתובת מייל אינה תקינה.",
|
||||
"components.Layout.VersionStatus.commitsbehind": "{commitsBehind} {commitsBehind, plural, one {commit} other {commits}} מאחור",
|
||||
@@ -297,11 +297,11 @@
|
||||
"components.Login.validationhostformat": "נדרש קישור תקין",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* כל הנתונים שלך ל-{mediaType}, כולל בקשות, ימחקו. אם זה קיים בספרייה של {mediaServerName}, זה יצור אותה מחדש בסריקה הבאה.",
|
||||
"components.ManageSlideOver.markallseasons4kavailable": "סמן את כל העונות כזמינות ב-4K",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {הפעל} other {הפעלות}}",
|
||||
"components.ManageSlideOver.plays": "<strong>{playCount, number}</strong> {playCount, plural, one {play} other {plays}}",
|
||||
"components.MovieDetails.managemovie": "נהל סרט",
|
||||
"components.MovieDetails.overviewunavailable": "סקירה לא זמינה.",
|
||||
"components.MovieDetails.productioncountries": "נוצר ב-{countryCount, plural, one {Country} other {Countries}}",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {תאריך השקה} other {תאריכי השקה}}",
|
||||
"components.MovieDetails.releasedate": "{releaseCount, plural, one {Release Date} other {Release Dates}}",
|
||||
"components.MovieDetails.reportissue": "דווח על תקלה",
|
||||
"components.MovieDetails.similar": "כותרים דומים",
|
||||
"components.Login.emailtooltip": "הכתובת אינה צריכה להיות משוייכת ל-{mediaServerName}.",
|
||||
@@ -334,7 +334,7 @@
|
||||
"components.NotificationTypeSelector.mediafailed": "עיבוד הבקשה נכשל",
|
||||
"components.NotificationTypeSelector.mediarequested": "בקשה ממתינה לאישור",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "קבלת התראות כאשר משתמשים פותחים בקשות מדיה שדורשות אישור.",
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "קבלת התראות כאשר משתמשים אחרים מדווחים על תקלות.",
|
||||
"components.NotificationTypeSelector.userissuecreatedDescription": "קבלת התראות כאשר משתמשים אחרים מדווחים על תקלות",
|
||||
"components.PermissionEdit.admin": "מנהל",
|
||||
"components.PermissionEdit.adminDescription": "גישת מנהל מלאה. עוקף את כל ההרשאות שסומנו.",
|
||||
"components.PermissionEdit.advancedrequest": "בקשות מתקדמות",
|
||||
@@ -342,9 +342,9 @@
|
||||
"components.PermissionEdit.autoapprove": "אישור אוטומטי",
|
||||
"components.PermissionEdit.autoapprove4k": "אישור אוטומטי של 4K",
|
||||
"components.PermissionEdit.autoapprove4kMovies": "אישור אוטומטי סרטי 4K",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "אישור אוטומטי של בקשות לסרטים 4K.",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "אישור אוטומטי של בקשות לסרטים 4K",
|
||||
"components.PermissionEdit.autoapprove4kSeries": "אישור אוטומטי של סדרות 4K",
|
||||
"components.PermissionEdit.autoapproveDescription": "אישור אוטומטי של בקשות לסדרות ברזולוציית נמוכה מ-4K.",
|
||||
"components.PermissionEdit.autoapproveDescription": "אישור אוטומטי של בקשות לסדרות ברזולוציית נמוכה מ-4K",
|
||||
"components.PermissionEdit.autoapproveMovies": "אישור סרטים אוטומטי",
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "אישור בקשות סרטים אוטומטי (ללא 4K).",
|
||||
"components.PermissionEdit.autoapproveSeries": "אישור סדרות אוטומטי",
|
||||
@@ -352,321 +352,7 @@
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "קבלת התראות כאשר יש כשל בהוספת בקשות מדיה אל Radarr או Sonarr",
|
||||
"components.NotificationTypeSelector.notificationTypes": "סוגי התראות",
|
||||
"components.NotificationTypeSelector.userissuecommentDescription": "קבלת התראות כאשר תקלות שדיווחת מקבלות תגובות חדשות.",
|
||||
"components.PermissionEdit.autoapprove4kDescription": "אישור אוטומטי של בקשות מדיה 4K.",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "אישור אוטומטי של בקשות לסדרות ברזולוציית 4K.",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "אישור בקשות סדרות אוטומטי (ללא 4K).",
|
||||
"component.BlacklistBlock.blacklistdate": "תאריך חסימה",
|
||||
"components.Login.hostname": "{mediaServerName} כתובת URL",
|
||||
"components.Login.validationHostnameRequired": "עליך להזין שם מארח או כתובת IP תקינה",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "בסיס ה-URL לא יכול להסתיים בסלאש",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> נוסף לרשימת הצפייה בהצלחה!",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "קבלת התראות כאשר משתמשים אחרים מגישים בקשות מדיה חדשות אשר מאושרות אוטומטית.",
|
||||
"components.PermissionEdit.createissuesDescription": "הענקת גישה לדווח על בעיות מדיה.",
|
||||
"components.PermissionEdit.usersDescription": "הענקת גישה לניהול משתמשים. משתמשים עם גישה זאת לא יכולים לשנות משתמשים עם הרשאות מנהל או להעניק הרשאות מנהל.",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} לכל {quotaDays} {days}</quotaUnits>",
|
||||
"components.RequestBlock.languageprofile": "פרופיל שפה",
|
||||
"components.RequestList.RequestItem.failedretry": "משהו השתבש בעת ניסוי שליחת הבקשה מחדש.",
|
||||
"components.RequestModal.AdvancedRequester.animenote": "* סדרה זו היא אנימה.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "ניתן לראות סיכום של מגבלת הבקשות שלך ב<ProfileLink>דף הפרופיל</ProfileLink> שלך.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "ניתן לראות סיכום של מגבלת הבקשות של משתמש זה ב<ProfileLink>דף הפרופיל</ProfileLink> שלו.",
|
||||
"components.RequestModal.requestmovies4k": "בקשת {count} {count, plural, one {סרט} other {סרטים}} ב-4K",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessTokenTip": "<ApplicationRegistrationLink>רשימת יישום</ApplicationRegistrationLink> בשביל שימוש עם Jellyseerr",
|
||||
"component.BlacklistBlock.blacklistedby": "נחסם על ידי",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "קבלת התראות כאשר משתמשים אחרים מגישים בקשות מדיה חדשות שדורשות אישור.",
|
||||
"components.PermissionEdit.autorequestMovies": "בקשת סרטים אוטומטית",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "הענקת גישה לשליחה אוטומטית של סרטים שאינם 4K בעזרת רשימת הצפייה של Plex.",
|
||||
"components.PermissionEdit.managerequestsDescription": "הענקת גישה לניהול בקשות מדיה. כל הבקשות שנעשות על ידי משתמש עם גישה זאת יאושרו אוטומטית.",
|
||||
"components.PermissionEdit.requestMoviesDescription": "הענקת גישה לשליחת בקשות לסרטים שאינם 4K.",
|
||||
"components.PermissionEdit.viewrequestsDescription": "הענקת גישה לצפות בבקשות מדיה שנשלחו על ידי משתמשים אחרים.",
|
||||
"components.RequestBlock.lastmodifiedby": "שונה לאחרונה על ידי",
|
||||
"components.RequestButton.approverequests": "אישור {requestCount, plural, one {בקשה} other {{requestCount} בקשות}}",
|
||||
"components.RequestCard.failedretry": "משהו השתבש בעת ניסוי שליחת הבקשה מחדש.",
|
||||
"components.RequestModal.requestCancel": "בקשה ל-<strong>{title}</strong> בוטלה.",
|
||||
"components.RequestModal.selectseason": "בחירת עונה/ות",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "קישור לאיפוס סיסמה יישלח לכתובת המייל שסופקה אם היא קשורה למשתמש תקין.",
|
||||
"components.Selector.canceled": "בוטל",
|
||||
"components.Selector.ended": "נגמר",
|
||||
"components.Selector.searchStudios": "חיפוש אולפנים…",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTokenRequired": "עליך לספק אסימון יישום",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.agentenabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "הגדרות ההתראות של Slack נכשלו להישמר.",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationWebhookUrl": "עליך לספק כתובת URL תקינה",
|
||||
"components.Layout.Sidebar.blacklist": "רשימת חסימות",
|
||||
"components.Login.back": "חזרה",
|
||||
"components.PermissionEdit.viewissuesDescription": "הענקת גישה לראות בעיות מדיה שדווחו על ידי משתמשים אחרים.",
|
||||
"components.RequestButton.viewrequest4k": "צפייה בבקשת 4K",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequests": "מותר לך לבקש <strong>{limit}</strong> {type} כל <strong>{days}</strong> ימים.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "על משתמש זה להיות עם לפחות <strong>{seasons}</strong> {seasons, plural, one {בקשת עונה} other {בקשות עונה}} שנותרו כדי לשלוח בקשה עבור סדרה זו.",
|
||||
"components.RequestModal.pending4krequest": "בקשת 4K ממתינה",
|
||||
"components.RequestModal.requestedited": "בקשה עבור <strong>{title}</strong> נערכה בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "הגדרות ההתראות של Gotify נכשלו להישמר.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "עליך לספק כתובת URL תקינה",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSending": "שולח התראת בדיקה של Pushbullet…",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "<UsersGroupsLink>מזהה המשתמש או הקבוצה</UsersGroupsLink> בעל ה-30 תווים שלך",
|
||||
"components.Login.adminerror": "עליך להשתמש בחשבון מנהל בשביל להתחבר.",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "קבלת התראות כאשר הבעיות שדיווחת נפתרות.",
|
||||
"components.Discover.FilterSlideover.status": "סטטוס",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "הענקת גישה לחסימת מדיה.",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {עונה} other {עונות}}",
|
||||
"components.RequestModal.errorediting": "משהו השתבש בזמן עריכת הבקשה.",
|
||||
"components.ResetPassword.validationpasswordrequired": "יש לספק סיסמה",
|
||||
"components.Selector.inProduction": "בהפקה",
|
||||
"components.Selector.pilot": "פרק דוגמה",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "הגדרות ההתראות של LunaSea נשמרו בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessTokenTip": "יצירת אסימון מתוך <PushbulletSettingsLink>הגדרות המשתמש</PushbulletSettingsLink> שלך",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "עליך לספק אסימון גישה",
|
||||
"components.PermissionEdit.manageblacklistDescription": "הענקת גישה לניהול מדיה חסומה.",
|
||||
"components.PersonDetails.appearsin": "מופעים",
|
||||
"components.RequestCard.tmdbid": "מזהה TMDB",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "סדרות שיצאו בקרוב",
|
||||
"components.Login.enablessl": "השתמש ב-SSL",
|
||||
"components.Login.invalidurlerror": "לא ניתן להתחבר לשרת {mediaServerName}.",
|
||||
"components.Login.loginwithapp": "התחברות עם {appName}",
|
||||
"components.Login.noadminerror": "לא נמצא חשבון מנהל בשרת.",
|
||||
"components.Login.orsigninwith": "או התחברות עם",
|
||||
"components.Login.port": "פורט",
|
||||
"components.Login.servertype": "סוג שרת",
|
||||
"components.Login.urlBase": "בסיס URL",
|
||||
"components.Login.validationPortRequired": "עליך להזין מספר פורט תקין",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "בסיס ה-URL חייב להתחיל בסלאש",
|
||||
"components.Login.validationUrlTrailingSlash": "ה-URL לא יכול להסתיים בסלאש",
|
||||
"components.Login.validationservertyperequired": "אנא בחר סוג שרת",
|
||||
"components.MovieDetails.addtowatchlist": "הוספה לרשימת הצפייה",
|
||||
"components.MovieDetails.removefromwatchlist": "הסרה מרשימת הצפייה",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> נמחק מרשימת הצפייה בהצלחה!",
|
||||
"components.MovieDetails.watchlistError": "משהו השתבש. אנא נסה שוב.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "קבלת התראות שבקשות המדיה שלך מאושרות.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "קבלת התראות כאשר בקשות המדיה שלך הופכות לזמינות.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "קבלת התראות כאשר בקשות המדיה שלך נדחות.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "קבלת התראות כאשר בקשות מדיה נכשלות להתווסף ל-Radarr או Sonarr.",
|
||||
"components.PermissionEdit.autorequestDescription": "הענקת גישה לשליחה אוטומטית של בקשות מדיה שאינה 4K בעזרת רשימת הצפייה של Plex.",
|
||||
"components.PermissionEdit.autorequestSeries": "בקשת סדרות אוטומטית",
|
||||
"components.PermissionEdit.autorequestSeriesDescription": "הענקת גישה לשליחה אוטומטית של סדרות שאינן 4K בעזרת רשימת הצפייה של Plex.",
|
||||
"components.PermissionEdit.createissues": "דיווח על בעיות",
|
||||
"components.PermissionEdit.manageblacklist": "ניהול רשימת חסימה",
|
||||
"components.PermissionEdit.manageissues": "ניהול בעיות",
|
||||
"components.PermissionEdit.manageissuesDescription": "הענקת גישה לניהול בעיות מדיה.",
|
||||
"components.PermissionEdit.managerequests": "ניהול בקשות",
|
||||
"components.PermissionEdit.request": "בקשה",
|
||||
"components.PermissionEdit.request4k": "בקשת 4K",
|
||||
"components.PermissionEdit.request4kDescription": "הענקת גישה לשליחת בקשות למדיה 4K.",
|
||||
"components.PermissionEdit.request4kMovies": "בקשת סרטי 4K",
|
||||
"components.PermissionEdit.request4kMoviesDescription": "הענקת גישה לשליחת בקשות לסרטי 4K.",
|
||||
"components.PermissionEdit.request4kTvDescription": "הענקת גישה לשליחת בקשות לסדרות 4K.",
|
||||
"components.PermissionEdit.request4kTv": "בקשת סדרות 4K",
|
||||
"components.PermissionEdit.requestDescription": "הענקת גישה לשליחת בקשות למדיה שאינה 4K.",
|
||||
"components.PermissionEdit.requestMovies": "בקשת סרטים",
|
||||
"components.PermissionEdit.requestTv": "בקשת סדרה",
|
||||
"components.PermissionEdit.requestTvDescription": "הענקת גישה לשליחת בקשות לסדרות שאינן 4K.",
|
||||
"components.PermissionEdit.users": "ניהול משתמשים",
|
||||
"components.PermissionEdit.viewblacklistedItems": "צפייה במדיה חסומה.",
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "הענקת גישה לצפייה במדיה חסומה.",
|
||||
"components.PermissionEdit.viewissues": "צפייה בבעיות",
|
||||
"components.PermissionEdit.viewrecent": "צפייה בנוסף לאחרונה",
|
||||
"components.PermissionEdit.viewrecentDescription": "הענקת גישה לצפייה ברשימת המדיה שנוספה לאחרונה.",
|
||||
"components.PermissionEdit.viewrequests": "צפייה בבקשות",
|
||||
"components.PermissionEdit.viewwatchlists": "צפייה ברשימות הצפייה של {mediaServerName}",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "הענקת גישה לצפות ברשימות הצפייה של משתמשים אחרים ב-{mediaServerName}.",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} לכל {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.seasons": "{count, plural, one {עונה} other {עונות}}",
|
||||
"components.QuotaSelector.unlimited": "אין-סופי",
|
||||
"components.RegionSelector.regionDefault": "כל האזורים",
|
||||
"components.RegionSelector.regionServerDefault": "ברירת מחדל ({region})",
|
||||
"components.RequestBlock.approve": "אישור בקשה",
|
||||
"components.RequestBlock.decline": "דחיית בקשה",
|
||||
"components.RequestBlock.delete": "מחיקת בקשה",
|
||||
"components.RequestBlock.edit": "עריכת בקשה",
|
||||
"components.RequestBlock.profilechanged": "פרופיל איכות",
|
||||
"components.RequestBlock.requestdate": "תאריך בקשה",
|
||||
"components.RequestBlock.requestedby": "התבקש על ידי",
|
||||
"components.RequestBlock.requestoverrides": "עקיפות בקשה",
|
||||
"components.RequestBlock.rootfolder": "תיקיית שורש",
|
||||
"components.RequestBlock.server": "שרת יעד",
|
||||
"components.RequestButton.approve4krequests": "אישור {requestCount, plural, one {בקשת 4K} other {{requestCount} בקשות 4K}}",
|
||||
"components.RequestButton.approverequest": "אישור בקשה",
|
||||
"components.RequestButton.approverequest4k": "אישור בקשת 4K",
|
||||
"components.RequestButton.decline4krequests": "דחיית {requestCount, plural, one {בקשת 4K} other {{requestCount} בקשות 4K}}",
|
||||
"components.RequestButton.declinerequest": "דחיית בקשה",
|
||||
"components.RequestButton.declinerequest4k": "דחיית בקשת 4K",
|
||||
"components.RequestButton.declinerequests": "דחיית {requestCount, plural, one {בקשה} other {{requestCount} בקשות}}",
|
||||
"components.RequestButton.requestmore": "בקש/י עוד",
|
||||
"components.RequestButton.requestmore4k": "בקש/י עוד ב-4K",
|
||||
"components.RequestButton.viewrequest": "צפייה בבקשה",
|
||||
"components.RequestCard.approverequest": "אישור בקשה",
|
||||
"components.RequestCard.cancelrequest": "ביטול בקשה",
|
||||
"components.RequestCard.declinerequest": "דחיית בקשה",
|
||||
"components.RequestCard.deleterequest": "מחיקת בקשה",
|
||||
"components.RequestCard.editrequest": "עריכת בקשה",
|
||||
"components.RequestCard.mediaerror": "{mediaType} לא נמצא",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {עונה} other {עונות}}",
|
||||
"components.RequestCard.tvdbid": "מזהה TheTVDB",
|
||||
"components.RequestCard.unknowntitle": "כותרת לא ידועה",
|
||||
"components.RequestList.RequestItem.cancelRequest": "ביטול בקשה",
|
||||
"components.RequestList.RequestItem.deleterequest": "מחיקת בקשה",
|
||||
"components.RequestList.RequestItem.editrequest": "עריכת בקשה",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} לא נמצא",
|
||||
"components.RequestList.RequestItem.modified": "שונה",
|
||||
"components.RequestList.RequestItem.modifieduserdate": "{date} על ידי {user}",
|
||||
"components.RequestList.RequestItem.profileName": "פרופיל",
|
||||
"components.RequestList.RequestItem.removearr": "הסרה מ-{arr}",
|
||||
"components.RequestList.RequestItem.requested": "התבקש",
|
||||
"components.RequestList.RequestItem.requesteddate": "התבקש",
|
||||
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {עונה} other {עונות}}",
|
||||
"components.RequestList.RequestItem.tmdbid": "מזהה TMDB",
|
||||
"components.RequestList.RequestItem.tvdbid": "מזהה TheTVDB",
|
||||
"components.RequestList.RequestItem.unknowntitle": "כותרת לא ידועה",
|
||||
"components.RequestList.requests": "בקשות",
|
||||
"components.RequestList.showallrequests": "הצגת כל הבקשות",
|
||||
"components.RequestList.sortAdded": "הכי עדכני",
|
||||
"components.RequestList.sortDirection": "החלפת כיוון מיון",
|
||||
"components.RequestModal.AdvancedRequester.advancedoptions": "מתקדם",
|
||||
"components.RequestModal.AdvancedRequester.default": "{name} (ברירת מחדל)",
|
||||
"components.RequestModal.AdvancedRequester.destinationserver": "שרת יעד",
|
||||
"components.RequestModal.AdvancedRequester.folder": "{path} ({space})",
|
||||
"components.RequestModal.AdvancedRequester.languageprofile": "פרופיל שפה",
|
||||
"components.RequestModal.AdvancedRequester.notagoptions": "אין תגים.",
|
||||
"components.RequestModal.AdvancedRequester.qualityprofile": "פרופיל איכות",
|
||||
"components.RequestModal.AdvancedRequester.requestas": "בקשה בתור",
|
||||
"components.RequestModal.AdvancedRequester.rootfolder": "תיקיית שורש",
|
||||
"components.RequestModal.AdvancedRequester.selecttags": "בחירת תגים",
|
||||
"components.RequestModal.AdvancedRequester.tags": "תגים",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "מותר למשתמש זה לבקש <strong>{limit}</strong> {type} כל <strong>{days}</strong> ימים.",
|
||||
"components.RequestModal.QuotaDisplay.movielimit": "{limit, plural, one {סרט} other {סרטים}}",
|
||||
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "אין מספיק בקשות עונות שנותרו",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {No} other {<strong>#</strong>}} {type} {remaining, plural, one {בקשה} other {בקשות}} נותרו",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "עליך להיות עם לפחות <strong>{seasons}</strong> {seasons, plural, one {בקשת עונה} other {בקשות עונה}} שנותרו כדי לשלוח בקשה עבור סדרה זו.",
|
||||
"components.RequestModal.QuotaDisplay.season": "עונה",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {עונה} other {עונות}}",
|
||||
"components.RequestModal.SearchByNameModal.nomatches": "לא הצלחנו למצוא התאמה עבור סדרה זו.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "לא הצלחנו להתאים אוטומטית את הסדרה הזו. אנא בחר/י את ההתאמה הנכונה למטה.",
|
||||
"components.RequestModal.alreadyrequested": "התבקש כבר",
|
||||
"components.RequestModal.approve": "אישור בקשה",
|
||||
"components.RequestModal.autoapproval": "אישור אוטומטי",
|
||||
"components.RequestModal.cancel": "ביטול בקשה",
|
||||
"components.RequestModal.edit": "עריכת בקשה",
|
||||
"components.RequestList.sortModified": "עודכן לאחרונה",
|
||||
"components.RequestModal.numberofepisodes": "# של פרקים",
|
||||
"components.RequestModal.pendingapproval": "בקשתך מחכה לאישור.",
|
||||
"components.RequestModal.pendingrequest": "בקשה ממתינה",
|
||||
"components.RequestModal.requestApproved": "בקשה ל-<strong>{title}</strong> אושרה!",
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> התבקשה בהצלחה!",
|
||||
"components.RequestModal.requestadmin": "בקשה זו תאושר אוטומטית.",
|
||||
"components.RequestModal.requestcancelled": "בקשה עבור <strong>{title}</strong> בוטלה.",
|
||||
"components.RequestModal.requestcollection4ktitle": "אוסף בקשות ב-4K",
|
||||
"components.RequestModal.requestcollectiontitle": "אוסף בקשות",
|
||||
"components.RequestModal.requesterror": "משהו השתבש בזמן שליחת הבקשה.",
|
||||
"components.RequestModal.requestfrom": "הבקשה של {username} מחכה לאישור.",
|
||||
"components.RequestModal.requestmovie4ktitle": "בקשת סרט ב-4K",
|
||||
"components.RequestModal.requestmovies": "בקשת {count} {count, plural, one {סרט} other {סרטים}}",
|
||||
"components.RequestModal.requestmovietitle": "בקשת סרט",
|
||||
"components.RequestModal.requestseasons": "בקשת {seasonCount} {seasonCount, plural, one {עונה} other {עונות}}",
|
||||
"components.RequestModal.requestseasons4k": "בקשת {seasonCount} {seasonCount, plural, one {עונה} other {עונות}} ב-4K",
|
||||
"components.RequestModal.requestseries4ktitle": "בקשת סדרה ב-4K",
|
||||
"components.RequestModal.requestseriestitle": "בקשת סדרה",
|
||||
"components.RequestModal.season": "עונה",
|
||||
"components.RequestModal.seasonnumber": "עונה {number}",
|
||||
"components.RequestModal.selectmovies": "בחירת סרט/ים",
|
||||
"components.ResetPassword.confirmpassword": "אישור סיסמה",
|
||||
"components.ResetPassword.email": "כתובת מייל",
|
||||
"components.ResetPassword.emailresetlink": "קישור לשחזור מייל",
|
||||
"components.ResetPassword.gobacklogin": "חזרה לדף ההתחברות",
|
||||
"components.ResetPassword.password": "סיסמה",
|
||||
"components.ResetPassword.passwordreset": "איפוס סיסמה",
|
||||
"components.ResetPassword.resetpassword": "איפוס סיסמתך",
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "סיסמה אופסה בהצלחה!",
|
||||
"components.ResetPassword.validationemailrequired": "יש לספק כתובת מייל חוקית",
|
||||
"components.ResetPassword.validationpasswordmatch": "הסיסמאות חייבות להתאים",
|
||||
"components.ResetPassword.validationpasswordminchars": "הסיסמה קצרה מדי; צריך להיות מינימום של 8 תווים",
|
||||
"components.Search.search": "חיפוש",
|
||||
"components.Search.searchresults": "תוצאות חיפוש",
|
||||
"components.Selector.nooptions": "אין תוצאות.",
|
||||
"components.Selector.planned": "מתוכנן",
|
||||
"components.Selector.returningSeries": "סדרה חוזרת",
|
||||
"components.Selector.searchGenres": "בחירת ז'נרים…",
|
||||
"components.Selector.searchKeywords": "חיפוש מילות מפתח…",
|
||||
"components.Selector.searchStatus": "בחירת סטטוס...",
|
||||
"components.Selector.searchUsers": "בחירת משתמשים…",
|
||||
"components.Selector.showless": "הראה פחות",
|
||||
"components.Selector.showmore": "הראה יותר",
|
||||
"components.Selector.starttyping": "התחל להזין כדי לחפש.",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "הגדרות ההתראות של Gotify נשמרו בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestFailed": "התראת הבדיקה של Gotify נכשלה להשלח.",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSending": "שולח התראת בדיקה של Gotify…",
|
||||
"components.Settings.Notifications.NotificationsGotify.toastGotifyTestSuccess": "התראת הבדיקה של Gotify נשלחה!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.profileName": "שם פרופיל",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.profileNameTip": "רק דרוש אם הפרופיל <code>default</code> לא בשימוש",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsFailed": "הגדרות ההתראות של LunaSea נכשלו להישמר.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestFailed": "התראת הבדיקה של LunaSea נכשלה להשלח.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSending": "שולח התראת בדיקה של LunaSea…",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.toastLunaSeaTestSuccess": "התראת הבדיקה של LunaSea נשלחה!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationTypes": "עליך לבחור לפחות סוג התראות אחד",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "URL של ה-Webhook",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "אסימון גישה",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.channelTag": "תג ערוץ",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "הגדרות ההתראות של Pushbullet נכשלו להישמר.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "הגדרות ההתראות של Pushbullet נשמרו בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestFailed": "התראת הבדיקה של Pushbullet נכשלה להשלח.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.toastPushbulletTestSuccess": "התראת הבדיקה של Pushbullet נשלחה!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "עליך לבחור לפחות סוג התראה אחד",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestFailed": "התראת הבדיקה של Pushover נכשלה להשלח.",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSending": "שולח התראת בדיקה של Pushover…",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSuccess": "התראת הבדיקה של Pushover נשלחה!",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "מפתח משתמש או קבוצה",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "עליך לספק אסימון יישום תקין",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "עליך לבחור לפחות סוג התראה אחד",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "עליך לספק משתמש או מפתח קבוצה תקין",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "הגדרות ההתראות של Slack נשמרו בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestFailed": "התראת הבדיקה של Slack נכשלה להשלח.",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSending": "שולח התראת בדיקה של Slack…",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSuccess": "התראת הבדיקה של Slack נשלחה!",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "עליך לבחור לפחות סוג התראה אחד",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "URL של ה-Webhook",
|
||||
"component.BlacklistModal.blacklisting": "חסימה",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> לא חסום.",
|
||||
"components.Blacklist.blacklistSettingsDescription": "ניהול מדיה חסומה.",
|
||||
"components.Blacklist.blacklistdate": "תאריך",
|
||||
"components.Blacklist.blacklistedby": "{date} על ידי {user}",
|
||||
"components.Blacklist.blacklistsettings": "הגדרות חסימה",
|
||||
"components.Blacklist.mediaName": "שם",
|
||||
"components.Blacklist.mediaTmdbId": "מזהה tmdb",
|
||||
"components.Blacklist.mediaType": "סוג",
|
||||
"components.PermissionEdit.blacklistedItems": "חסימת מדיה.",
|
||||
"components.PersonDetails.alsoknownas": "גם ידוע בתור: {names}",
|
||||
"components.PersonDetails.ascharacter": "בתור {character}",
|
||||
"components.PersonDetails.birthdate": "נולד/ה ב-{birthdate}",
|
||||
"components.PersonDetails.crewmember": "צוות",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.QuotaSelector.days": "{count, plural, one {יום} other {ימים}}",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {סרט} other {סרטים}}",
|
||||
"components.RequestModal.QuotaDisplay.movie": "סרט",
|
||||
"components.Settings.Notifications.NotificationsGotify.token": "אסימון יישום",
|
||||
"components.Settings.Notifications.NotificationsGotify.url": "כתובת URL של שרת",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationTypes": "עליך לבחור לפחות סוג התראות אחד",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlRequired": "עליך לספק כתובת URL תקינה",
|
||||
"components.Settings.Notifications.NotificationsGotify.validationUrlTrailingSlash": "על כתובת ה-URL לא להסתיים בסלאש",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "אסימון API של היישום",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "ברירת המחדל של המכשיר",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "הגדרות ההתראות של Pushover נכשלו להישמר.",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "הגדרות ההתראות של Pushover נשמרו בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsPushover.sound": "צליל התראה",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "איפוס לברירת מחדל",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "<LunaSeaLink>קישור Webhook להתראות</LunaSeaLink> מבוסס מכשיר או משתמש",
|
||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "כותרת עליונה של הרשאות",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "מטען JSON",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "מטען JSON התאפס בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSuccess": "התראת הבדיקה של ה-Webhook נשלחה!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "עליך לספק מטען JSON תקין",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "עליך לבחור לפחות סוג התראה אחד",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "עליך לספק כתובת URL תקינה",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "URL של ה-Webhook",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "הגדרות ההתראות של ה-Webhook נכשלו להשמר.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "הגדרות ההתראות של ה-Webhook נשמרו בהצלחה!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.agentenabled": "הפעל סוכן",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestFailed": "התראת הבדיקה של ה-Webhook נכשלה להשלח.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.toastWebhookTestSending": "שולח התראת בדיקה של ה-Webhook…"
|
||||
"components.PermissionEdit.autoapprove4kDescription": "אישור אוטומטי של בקשות מדיה 4K",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "אישור אוטומטי של בקשות לסדרות ברזולוציית 4K",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "אישור בקשות סדרות אוטומטי (ללא 4K)."
|
||||
}
|
||||
|
||||
@@ -539,6 +539,8 @@
|
||||
"components.PersonDetails.appearsin": "Nastupanja",
|
||||
"components.PersonDetails.ascharacter": "kao {character}",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PlexLoginButton.signingin": "Prijava…",
|
||||
"components.PlexLoginButton.signinwithplex": "Prijavi se",
|
||||
"components.QuotaSelector.unlimited": "Neograničeno",
|
||||
"components.RegionSelector.regionDefault": "Sve regije",
|
||||
"components.RegionSelector.regionServerDefault": "Zadano ({region})",
|
||||
@@ -1186,6 +1188,7 @@
|
||||
"components.Discover.tmdbnetwork": "TMDB mreža",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Naslov programa",
|
||||
"components.Settings.SettingsMain.originallanguage": "Jezik otkrivanja",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Aktiviraj CSRF zaštitu",
|
||||
"components.Discover.tmdbstudio": "TMDB studio",
|
||||
"components.Settings.SettingsMain.generalsettings": "Opće postavke",
|
||||
"components.MovieDetails.imdbuserscore": "IMDB ocjena korisnika",
|
||||
@@ -1200,19 +1203,23 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Zvuk obavijesti",
|
||||
"components.Discover.resettodefault": "Resetiraj na zadane vrijednosti",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Zadane postavke uređaja",
|
||||
"components.Settings.SettingsMain.trustProxy": "Aktiviraj proxy podršku",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Postavke su uspješno spremljene!",
|
||||
"i18n.collection": "Zbirka",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Filtriraj sadržaj po izvornom jeziku",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Predmemoriraj slike eksternih izvora (zahtijeva značajnu količinu memorije na disku)",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Sinkronizacija dostupnosti medija",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Dopusti Overseerru da ispravno registrira IP adrese klijenata iza proxyja",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL ne smije završiti s kosom crtom",
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Vrsta anime serije",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfiguriraj globalne i zadane postavke za Overseerr.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Novi API ključ je uspješno generiran!",
|
||||
"components.Settings.SonarrModal.seriesType": "Vrsta serije",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NEMOJ aktivirati ovu postavku ako ne razumiješ što radiš!",
|
||||
"components.Settings.Notifications.NotificationsPushover.deviceDefault": "Zadane postavke uređaja",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Moraš navesti valjani URL",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Moraš navesti naslov programa",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Postavi eksterni API pristup u samo-za-čitanje (zahtijeva HTTPS)",
|
||||
"components.Discover.resetwarning": "Vrati sve klizače na zadane postavke. To će također izbrisati sve prilagođene klizače!",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Automatski dodaj dodatnu oznaku s korisničkim ID-om i prikaznim imenom podnositelja zahtjeva",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Automatski dodaj dodatnu oznaku s korisničkim ID-om i prikaznim imenom podnositelja zahtjeva",
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Season} other {Seasons}}",
|
||||
"components.RequestBlock.rootfolder": "Root könyvtár",
|
||||
"components.RequestBlock.requestoverrides": "Kérés felülbírálások",
|
||||
"components.PlexLoginButton.signinwithplex": "Bejelentkezés",
|
||||
"components.PlexLoginButton.signingin": "Bejelentkezés…",
|
||||
"components.PersonDetails.crewmember": "Stáb",
|
||||
"components.PersonDetails.ascharacter": "mint {character}",
|
||||
"components.PersonDetails.appearsin": "Szerepel a következőkben",
|
||||
|
||||
@@ -405,6 +405,8 @@
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Non siamo riusciti a trovare una corrispondenza per questa serie. Seleziona la corrispondenza corretta dall'elenco seguente.",
|
||||
"components.RequestModal.AdvancedRequester.requestas": "Richiedi come",
|
||||
"components.RequestModal.AdvancedRequester.languageprofile": "Profilo lingua",
|
||||
"components.PlexLoginButton.signinwithplex": "Accedi",
|
||||
"components.PlexLoginButton.signingin": "Accesso in corso…",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Concede il permesso di visualizzare le richieste di altri utenti.",
|
||||
"components.PermissionEdit.viewrequests": "Visualizza le richieste",
|
||||
"components.PermissionEdit.usersDescription": "Concede il permesso di gestire gli utenti. Gli utenti con questo permesso non possono modificare gli utenti con privilegio di Amministratore, o concederlo.",
|
||||
@@ -1083,6 +1085,7 @@
|
||||
"components.Selector.starttyping": "Inizia a digitare per cercare.",
|
||||
"components.Settings.SettingsMain.apikey": "Chiave API",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Titolo applicazione",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Abilita protezione CSRF",
|
||||
"components.Settings.SettingsMain.generalsettings": "Impostazioni generali",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Nascondi media disponibili",
|
||||
"components.Settings.SettingsMain.locale": "Lingua interfaccia",
|
||||
@@ -1202,6 +1205,8 @@
|
||||
"components.Settings.SettingsJobsCache.jellyfin-full-scan": "Scansione completa della libreria Jellyfin",
|
||||
"components.Settings.SettingsJobsCache.jellyfin-recently-added-scan": "Scansione degli elementi aggiunti di recente di Jellyfin",
|
||||
"components.Settings.SettingsMain.cacheImages": "Abilita la cache delle immagini",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NON abilitare questa impostazione a meno che tu non sappia cosa stai facendo!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Imposta l'accesso all'API esterna in sola lettura (richiede HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "General",
|
||||
"components.Login.credentialerror": "Il nome utente o la password sono errati.",
|
||||
"components.Login.initialsigningin": "Connessione in corso…",
|
||||
|
||||
@@ -238,6 +238,7 @@
|
||||
"components.Discover.discover": "ホーム",
|
||||
"components.CollectionDetails.requestcollection4k": "4K のコレクションをリクエスト",
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "<code>{appDataPath}</code> ボリュームマウントが正しく構成されていませんでした。コンテナーが停止または再起動されると、すべてのデータが消去されます。",
|
||||
"components.PlexLoginButton.signingin": "ログイン中…",
|
||||
"components.Login.signingin": "ログイン中…",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsFailure": "設定保存中に問題が発生しました。",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "設定保存中に問題が発生しました。",
|
||||
@@ -250,6 +251,7 @@
|
||||
"components.ResetPassword.validationemailrequired": "有効なメールアドレスを入力してください",
|
||||
"components.Settings.Notifications.validationEmail": "有効なメールアドレスを入力してください",
|
||||
"components.UserList.validationEmail": "有効なメールアドレスを入力してください",
|
||||
"components.PlexLoginButton.signinwithplex": "ログイン",
|
||||
"components.ResetPassword.email": "メールアドレス",
|
||||
"components.UserList.email": "メールアドレス",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "エージェントを有効にする",
|
||||
|
||||
@@ -365,6 +365,7 @@
|
||||
"components.Settings.SettingsLogs.logs": "로그",
|
||||
"components.Settings.SettingsLogs.logsDescription": "로그는 <code>stdout</code> 또는 <code>{appDataPath}/logs/overseerr.log</code> 통해 직접 볼 수도 있습니다.",
|
||||
"components.Settings.SettingsLogs.showall": "전체 로그 보기",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "무엇을 하고 있는지 이해하지 못한다면 이 설정을 활성화하지 마십시오!",
|
||||
"components.Settings.SettingsMain.general": "일반",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "유효한 URL을 입력해야 합니다",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL은 슬래시로 끝나서는 안 됩니다",
|
||||
@@ -719,6 +720,8 @@
|
||||
"components.PermissionEdit.viewrequestsDescription": "다른 사용자가 제출한 미디어 요청을 볼 수 있는 권한을 부여합니다.",
|
||||
"components.PersonDetails.ascharacter": "{character} 역",
|
||||
"components.QuotaSelector.days": "{count, plural, one {일} other {일}}",
|
||||
"components.PlexLoginButton.signingin": "로그인 중…",
|
||||
"components.PlexLoginButton.signinwithplex": "로그인",
|
||||
"components.RegionSelector.regionServerDefault": "기본 ({region})",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{시즌} 당 {quotaDays} {일}</quotaUnits>",
|
||||
"components.RequestBlock.lastmodifiedby": "최종 수정자",
|
||||
@@ -830,6 +833,8 @@
|
||||
"components.Settings.SettingsLogs.pauseLogs": "일시중지",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "원작 언어로 콘텐츠 필터링",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "부분 시리즈 요청 허용",
|
||||
"components.Settings.SettingsMain.trustProxy": "프록시 지원 활성화",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "프록시 뒤에서 클라이언트 IP 주소를 정확하게 등록하도록 Jellyseerr에 허용",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "사용자가 Plex OAuth 대신 이메일 주소와 암호를 사용하여 로그인하도록 허용",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "전역 영화 요청 제한",
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "사용자 설정이 성공적으로 저장되었습니다!",
|
||||
@@ -1042,6 +1047,7 @@
|
||||
"components.Settings.Notifications.agentenabled": "에이전트 활성화",
|
||||
"components.Settings.Notifications.emailsender": "발신자 주소",
|
||||
"components.Settings.Notifications.botAPI": "봇 인증 토큰",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "외부 API 액세스를 읽기 전용으로 설정 (HTTPS 필요)",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "새 API 키가 성공적으로 생성되었습니다!",
|
||||
"components.Settings.Notifications.toastDiscordTestFailed": "Discord 테스트 알림을 보내지 못했습니다.",
|
||||
"components.Settings.Notifications.toastDiscordTestSending": "Discord 테스트 알림을 보내는 중…",
|
||||
@@ -1091,6 +1097,7 @@
|
||||
"components.Settings.SettingsMain.apikey": "API 키",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "외부 소스 이미지 캐시 (상당한 디스크 공간 필요)",
|
||||
"components.Settings.SettingsMain.applicationTitle": "애플리케이션 이름",
|
||||
"components.Settings.SettingsMain.csrfProtection": "CSRF 보호 활성화",
|
||||
"components.Settings.SettingsMain.hideAvailable": "사용 가능한 미디어 숨기기",
|
||||
"components.Settings.SettingsMain.locale": "표시 언어",
|
||||
"components.Settings.SettingsMain.generalsettings": "일반 설정",
|
||||
|
||||
@@ -63,6 +63,7 @@
|
||||
"components.PermissionEdit.request": "Rezervuoti",
|
||||
"components.PersonDetails.crewmember": "Komanda",
|
||||
"components.PersonDetails.appearsin": "Vaidino",
|
||||
"components.PlexLoginButton.signingin": "Prisijungiama…",
|
||||
"components.QuotaSelector.unlimited": "Neriboti",
|
||||
"components.RequestButton.viewrequest": "Peržiūrėti rezervacijas",
|
||||
"components.RequestCard.deleterequest": "Šalinti rezervacijas",
|
||||
@@ -188,6 +189,7 @@
|
||||
"components.PersonDetails.ascharacter": "kaip {character}",
|
||||
"components.PersonDetails.alsoknownas": "Žinomas kaip: {names}",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PlexLoginButton.signinwithplex": "Prisijungti",
|
||||
"components.QuotaSelector.days": "{count, plural, one {diena} other {dienos}}",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Sezonas} other {Sezonai}}",
|
||||
"components.RequestButton.requestmore": "Rezervuoti daugiau",
|
||||
|
||||
@@ -281,6 +281,8 @@
|
||||
"components.RequestBlock.profilechanged": "Kvalitetsprofil",
|
||||
"components.RegionSelector.regionServerDefault": "Standard {{region}}",
|
||||
"components.RegionSelector.regionDefault": "Alle Regioner",
|
||||
"components.PlexLoginButton.signinwithplex": "Logg inn",
|
||||
"components.PlexLoginButton.signingin": "Logger inn…",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PersonDetails.crewmember": "Stab",
|
||||
"components.PersonDetails.birthdate": "Født {birthdate}",
|
||||
@@ -821,8 +823,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": "Tilllat brukere å logge på med e-postadresse og passord, istedenfor med {mediaServerName} OAuth",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Tillat {mediaServerName} brukere å logge inn uten å være importert på forhånd",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Tilllat brukere å logge på 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.mediaTypeMovie": "film",
|
||||
@@ -894,7 +896,7 @@
|
||||
"components.Settings.Notifications.encryptionNone": "Ingen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "Kunne ikke lagre instillingene for Telegram.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Chat ID",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Aktiver ny {mediaServerName}-pålogging",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Aktiver \"Plex Sign-In\" for nye brukere",
|
||||
"components.Settings.SonarrModal.enableSearch": "Aktiver Automagisk Søk",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Konfigurer og aktiver varslingstjenester.",
|
||||
"components.UserList.autogeneratepasswordTip": "Send et automagisk generet passord til bruken på E-post",
|
||||
@@ -1000,25 +1002,25 @@
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.tvdbid": "TheTVDB ID",
|
||||
"components.StatusChecker.appUpdatedDescription": "Vennligst klikk her for å laste applikasjonen på nytt.",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Din Visningsliste",
|
||||
"components.Discover.plexwatchlist": "Din Visningsliste",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Få varsler når nye medieforspørsler automatisk sendes inn for elementer på Din Visningsliste.",
|
||||
"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 å automatisk sende film forespørsler som ikke er i 4K via Din Visningsliste.",
|
||||
"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 å automatisk sende forespørsler som ikke er i 4K via Din Plex Visningsliste.",
|
||||
"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 Visningsliste",
|
||||
"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 å automatisk sende serie forespørsler som ikke er i 4K via Din Visningsliste.",
|
||||
"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 Visningsliste",
|
||||
"components.PermissionEdit.viewwatchlistsDescription": "Gi tilgang til å vise andre brukere sin Visningsliste.",
|
||||
"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",
|
||||
@@ -1041,13 +1043,13 @@
|
||||
"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 Visningsliste",
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Synkronisering av Plex-Watchlist",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr 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 Visningsliste",
|
||||
"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",
|
||||
@@ -1076,80 +1078,5 @@
|
||||
"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",
|
||||
"components.Settings.SettingsMain.generalsettings": "Generelle Innstillinger",
|
||||
"components.Layout.UserWarnings.emailInvalid": "E-postadressen er ugyldig.",
|
||||
"components.Layout.UserWarnings.emailRequired": "En e-postadresse er påkrevd.",
|
||||
"components.Layout.UserWarnings.passwordRequired": "Et passord er påkrevd.",
|
||||
"components.Settings.SettingsMain.general": "Generell",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Denne e-postadressen er allerede i bruk!",
|
||||
"components.Discover.DiscoverSliderEdit.deletefail": "Feil ved sletting av skyveknappen.",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Tittel (A-Å) Stigende",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Originalspråk",
|
||||
"components.TitleCard.watchlistError": "Noe gikk galt, prøv på nytt.",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> er ikke svartelistet.",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Nylig Lagt Til",
|
||||
"components.MovieDetails.addtowatchlist": "Legg til i Visningsliste",
|
||||
"components.Discover.CreateSlider.addSlider": "Legg til Skyveknapp",
|
||||
"components.Discover.resetwarning": "Tilbakestill alle skyveknapper til standardinnstillinger. Dette sletter også egendefinerte skyveknapper!",
|
||||
"components.Layout.Sidebar.browsetv": "Serier",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Angi et søkeord",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Støtt Jellyseerr",
|
||||
"components.Discover.DiscoverMovies.sortPopularityAsc": "Populæritet Stigende",
|
||||
"components.UserProfile.localWatchlist": "{username}'s Visningsliste",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Utgivelsesdato",
|
||||
"components.Layout.Sidebar.blacklist": "Svarteliste",
|
||||
"components.Layout.Sidebar.browsemovies": "Filmer",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Du må oppgi en applikasjonstittel",
|
||||
"components.TitleCard.addToWatchList": "Legg til i Visningsliste",
|
||||
"components.TvDetails.watchlistError": "Noe gikk galt, prøv på nytt.",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Lag Egendefinert Skyveknapp",
|
||||
"components.Discover.CreateSlider.addfail": "Feil ved opprettelse av ny skyveknapp.",
|
||||
"components.Discover.CreateSlider.editSlider": "Rediger Skyveknapp",
|
||||
"components.Discover.FilterSlideover.keywords": "Nøkkelord",
|
||||
"components.Discover.resettodefault": "Tilbakestill til standard",
|
||||
"components.Login.username": "Brukernavn",
|
||||
"components.MovieDetails.removefromwatchlist": "Fjern fra Visningsliste",
|
||||
"components.MovieDetails.watchlistError": "Noe gikk galt, prøv på nytt.",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Applikasjonstittel",
|
||||
"components.TvDetails.addtowatchlist": "Legg til i Visningsliste",
|
||||
"components.TvDetails.removefromwatchlist": "Fjern Fra Visningsliste",
|
||||
"components.UserList.importfrommediaserver": "Importer {mediaServerName} Brukere",
|
||||
"components.Blacklist.blacklistSettingsDescription": "Administrer svartelistede medier.",
|
||||
"components.Blacklist.blacklistdate": "dato",
|
||||
"components.Blacklist.blacklistedby": "{date} av {user}",
|
||||
"components.Blacklist.blacklistsettings": "Innstillinger for Svarteliste",
|
||||
"components.Blacklist.mediaName": "Navn",
|
||||
"components.Discover.CreateSlider.editfail": "Feil ved redigering av skyveknapp.",
|
||||
"components.Discover.CreateSlider.nooptions": "Ingen treff.",
|
||||
"components.Discover.CreateSlider.searchGenres": "Søk i sjangre…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Søk etter nøkkelord…",
|
||||
"components.Discover.CreateSlider.starttyping": "Begynn å skrive for å søke.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Du må oppgi en tittel.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "{keywordTitle} Filmer",
|
||||
"components.Discover.DiscoverMovies.discovermovies": "Filmer",
|
||||
"components.Discover.DiscoverMovies.sortPopularityDesc": "Populæritet Fallende",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateAsc": "Utgivelsesdato Stigende",
|
||||
"components.Discover.DiscoverMovies.sortReleaseDateDesc": "Utgivelsesdato Fallende",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "Tittel (A-Å) Stigende",
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "Tittel (A-Å) Fallende",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingAsc": "TMDB-vurdering Stigende",
|
||||
"components.Discover.DiscoverMovies.sortTmdbRatingDesc": "TMDB-vurdering Fallende",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Sletting av skyveknappen var vellykket.",
|
||||
"components.Discover.DiscoverSliderEdit.remove": "Fjern",
|
||||
"components.Discover.DiscoverTv.discovertv": "Serier",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "Første sendingsdato Stigende",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Første sendingsdato Fallende",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Populæritet Stigende",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Populæritet Fallende",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Tittel (A-Å) Fallende",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-vurdering Stigende",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB-vurdering Fallende",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "{keywordTitle} Serier",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Tøm Aktive Filtre",
|
||||
"components.Discover.FilterSlideover.filters": "Filtre",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "Første Sendingsdato",
|
||||
"components.Discover.FilterSlideover.from": "Fra",
|
||||
"components.Discover.FilterSlideover.genres": "Sjangere",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Din Visningsliste"
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleCurrent": "Nåværende frekvens"
|
||||
}
|
||||
|
||||
@@ -2,13 +2,13 @@
|
||||
"components.Discover.popularmovies": "Populaire films",
|
||||
"components.Discover.populartv": "Populaire series",
|
||||
"components.Discover.recentlyAdded": "Onlangs toegevoegd",
|
||||
"components.Discover.recentrequests": "Recente aanvragen",
|
||||
"components.Discover.recentrequests": "Recente verzoeken",
|
||||
"components.Discover.trending": "Trending",
|
||||
"components.Discover.upcoming": "Verwachte films",
|
||||
"components.Discover.upcomingmovies": "Verwachte films",
|
||||
"components.Layout.SearchInput.searchPlaceholder": "Films en series zoeken",
|
||||
"components.Layout.Sidebar.dashboard": "Ontdekken",
|
||||
"components.Layout.Sidebar.requests": "Aanvragen",
|
||||
"components.Layout.Sidebar.requests": "Verzoeken",
|
||||
"components.Layout.Sidebar.settings": "Instellingen",
|
||||
"components.Layout.Sidebar.users": "Gebruikers",
|
||||
"components.Layout.UserDropdown.signout": "Afmelden",
|
||||
@@ -27,20 +27,20 @@
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.RequestCard.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.RequestList.RequestItem.seasons": "{seasonCount, plural, one {Seizoen} other {Seizoenen}}",
|
||||
"components.RequestList.requests": "Aanvragen",
|
||||
"components.RequestModal.cancel": "Aanvraag annuleren",
|
||||
"components.RequestList.requests": "Verzoeken",
|
||||
"components.RequestModal.cancel": "Verzoek annuleren",
|
||||
"components.RequestModal.numberofepisodes": "Aantal afleveringen",
|
||||
"components.RequestModal.pendingrequest": "Aanvraag in behandeling",
|
||||
"components.RequestModal.requestCancel": "Aanvraag voor <strong>{title}</strong> geannuleerd.",
|
||||
"components.RequestModal.requestSuccess": "<strong>{title}</strong> is aangevraagd!",
|
||||
"components.RequestModal.requestadmin": "Deze aanvraag zal automatisch goedgekeurd worden.",
|
||||
"components.RequestModal.requestfrom": "De aanvraag van {user} is in afwachting van goedkeuring.",
|
||||
"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 afwachting van goedkeuring.",
|
||||
"components.RequestModal.requestseasons": "{seasonCount} {seasonCount, plural, one {seizoen} other {seizoenen}} aanvragen",
|
||||
"components.RequestModal.season": "Seizoen",
|
||||
"components.RequestModal.seasonnumber": "Seizoen {number}",
|
||||
"components.RequestModal.selectseason": "Seizoenen selecteren",
|
||||
"components.Search.searchresults": "Zoekresultaten",
|
||||
"components.Settings.Notifications.agentenabled": "Dienst inschakelen",
|
||||
"components.Settings.Notifications.agentenabled": "Agent inschakelen",
|
||||
"components.Settings.Notifications.authPass": "SMTP-wachtwoord",
|
||||
"components.Settings.Notifications.authUser": "SMTP-gebruikersnaam",
|
||||
"components.Settings.Notifications.emailsender": "E-mailadres afzender",
|
||||
@@ -67,7 +67,7 @@
|
||||
"components.Settings.RadarrModal.servername": "Servernaam",
|
||||
"components.Settings.RadarrModal.ssl": "SSL gebruiken",
|
||||
"components.Settings.RadarrModal.toastRadarrTestFailure": "Kon niet verbinden met Radarr.",
|
||||
"components.Settings.RadarrModal.toastRadarrTestSuccess": "Succesvol verbonden met Radarr!",
|
||||
"components.Settings.RadarrModal.toastRadarrTestSuccess": "Succesvol verbonden met Radarr-server!",
|
||||
"components.Settings.RadarrModal.validationApiKeyRequired": "Je moet een API-sleutel opgeven",
|
||||
"components.Settings.RadarrModal.validationHostnameRequired": "Je moet een geldige hostnaam of geldig IP-adres opgeven",
|
||||
"components.Settings.RadarrModal.validationPortRequired": "Je moet een geldig poortnummer opgeven",
|
||||
@@ -142,7 +142,7 @@
|
||||
"components.UserList.created": "Lid geworden",
|
||||
"components.UserList.plexuser": "Plex-gebruiker",
|
||||
"components.UserList.role": "Rol",
|
||||
"components.UserList.totalrequests": "Aanvragen",
|
||||
"components.UserList.totalrequests": "Verzoeken",
|
||||
"components.UserList.user": "Gebruiker",
|
||||
"components.UserList.userlist": "Gebruikerslijst",
|
||||
"i18n.approve": "Goedkeuren",
|
||||
@@ -162,17 +162,17 @@
|
||||
"pages.returnHome": "Terug naar de startpagina",
|
||||
"components.MovieDetails.MovieCast.fullcast": "Volledige cast",
|
||||
"components.TvDetails.TvCast.fullseriescast": "Volledige cast van de serie",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Instellingen voor e-mailmeldingen opgeslagen!",
|
||||
"components.Settings.Notifications.emailsettingssaved": "Instellingen voor e-mailmeldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.emailsettingsfailed": "Instellingen voor e-mailmeldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Instellingen voor Discord-meldingen opgeslagen!",
|
||||
"components.Settings.Notifications.discordsettingssaved": "Instellingen voor Discord-meldingen zijn succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.discordsettingsfailed": "Instellingen voor Discord-meldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.validationPortRequired": "Je moet een geldig poortnummer opgeven",
|
||||
"components.Settings.validationHostnameRequired": "Je moet een geldig(e) hostnaam of IP-adres opgeven",
|
||||
"components.Settings.SonarrModal.validationNameRequired": "Je moet een servernaam opgeven",
|
||||
"components.Settings.RadarrModal.validationNameRequired": "Je moet een servernaam opgeven",
|
||||
"components.Settings.SettingsAbout.version": "Versie",
|
||||
"components.Settings.SettingsAbout.totalrequests": "Totaal aantal aanvragen",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Totaal aantal media",
|
||||
"components.Settings.SettingsAbout.totalrequests": "Totaal aantal verzoeken",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Totale aantal media",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Over Jellyseerr",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "GitHub-discussies",
|
||||
"components.Settings.SonarrModal.testFirstRootFolders": "Test verbinding om hoofdmappen te laden",
|
||||
@@ -191,22 +191,22 @@
|
||||
"components.MovieDetails.studio": "{studioCount, plural, one {Studio} other {Studio's}}",
|
||||
"components.CollectionDetails.overview": "Overzicht",
|
||||
"components.CollectionDetails.numberofmovies": "{count} films",
|
||||
"components.NotificationTypeSelector.mediafailed": "Verwerking van aanvraag mislukt",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Een melding sturen wanneer media-aanvragen handmatig worden goedgekeurd.",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Een melding sturen wanneer een media-aanvraag beschikbaar is.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Aanvraag goedgekeurd",
|
||||
"components.NotificationTypeSelector.mediafailed": "Verwerking van verzoek mislukt",
|
||||
"components.NotificationTypeSelector.mediaapprovedDescription": "Een melding sturen wanneer mediaverzoeken handmatig worden goedgekeurd.",
|
||||
"components.NotificationTypeSelector.mediaavailableDescription": "Een melding sturen wanneer een mediaverzoek beschikbaar is.",
|
||||
"components.NotificationTypeSelector.mediaapproved": "Verzoek goedgekeurd",
|
||||
"i18n.retry": "Opnieuw proberen",
|
||||
"i18n.requested": "Aangevraagd",
|
||||
"i18n.failed": "Mislukt",
|
||||
"i18n.deleting": "Verwijderen…",
|
||||
"i18n.close": "Sluiten",
|
||||
"components.UserList.userdeleteerror": "Er ging iets mis bij het verwijderen van de gebruiker.",
|
||||
"components.UserList.userdeleted": "Gebruiker verwijderd!",
|
||||
"components.UserList.userdeleted": "Gebruiker succesvol verwijderd!",
|
||||
"components.UserList.importfromplexerror": "Er is iets misgegaan bij het importeren van Plex-gebruikers.",
|
||||
"components.UserList.importfrommediaserver": "{mediaServerName}-gebruikers importeren",
|
||||
"components.UserList.importfromplex": "Plex-gebruikers importeren",
|
||||
"components.UserList.deleteuser": "Gebruiker verwijderen",
|
||||
"components.UserList.deleteconfirm": "Weet je zeker dat je deze gebruiker wilt verwijderen? Al diens bestaande aanvraaggegevens zullen worden verwijderd.",
|
||||
"components.UserList.deleteconfirm": "Weet je zeker dat je deze gebruiker wilt verwijderen? Al hun bestaande aanvraaggegevens zullen worden verwijderd.",
|
||||
"components.TvDetails.watchtrailer": "Trailer bekijken",
|
||||
"components.TvDetails.viewfullcrew": "Volledige crew bekijken",
|
||||
"components.TvDetails.showtype": "Type serie",
|
||||
@@ -223,73 +223,73 @@
|
||||
"components.Settings.SettingsAbout.Releases.viewchangelog": "Changelog bekijken",
|
||||
"components.Settings.Notifications.validationChatIdRequired": "Je moet een geldige chat-ID opgeven",
|
||||
"components.Settings.Notifications.validationBotAPIRequired": "Je moet een bot-authorisatietoken opgeven",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Instellingen Telegrammeldingen opgeslagen!",
|
||||
"components.Settings.Notifications.telegramsettingssaved": "Instellingen Telegrammeldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.telegramsettingsfailed": "De instellingen voor Telegrammeldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.Notifications.senderName": "Naam afzender",
|
||||
"components.Settings.Notifications.chatId": "Chat-ID",
|
||||
"components.Settings.Notifications.botAPI": "Bot-autorisatietoken",
|
||||
"components.Settings.Notifications.allowselfsigned": "Self-signed certificaten toestaan",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "Webhook-URL",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Dienst inschakelen",
|
||||
"components.Settings.Notifications.NotificationsSlack.agentenabled": "Agent inschakelen",
|
||||
"components.RequestList.RequestItem.failedretry": "Er ging opnieuw iets mis tijdens het aanvragen.",
|
||||
"components.PersonDetails.crewmember": "Crew",
|
||||
"components.NotificationTypeSelector.mediarequested": "Aanvraag in afwachting van goedkeuring",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Aanvraag beschikbaar",
|
||||
"components.NotificationTypeSelector.mediarequested": "Verzoek in afwachting van goedkeuring",
|
||||
"components.NotificationTypeSelector.mediaavailable": "Verzoek beschikbaar",
|
||||
"components.MovieDetails.watchtrailer": "Trailer bekijken",
|
||||
"components.MovieDetails.viewfullcrew": "Volledige crew bekijken",
|
||||
"components.MovieDetails.MovieCrew.fullcrew": "Volledige crew",
|
||||
"components.CollectionDetails.requestcollection": "Collectie aanvragen",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex-{userCount, plural, one {gebruiker} other {gebruikers}} geïmporteerd!",
|
||||
"components.UserList.importedfromplex": "<strong>{userCount}</strong> Plex-{userCount, plural, one {gebruiker} other {gebruikers}} succesvol geïmporteerd!",
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "Changelog voor {version}",
|
||||
"components.Settings.SettingsAbout.Releases.releases": "Versies",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Instellingen voor Slack-meldingen opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingssaved": "Instellingen voor Slack-meldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsSlack.slacksettingsfailed": "Instellingen voor Slack-meldingen konden niet opgeslagen worden.",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Een melding sturen wanneer gebruikers een nieuwe media-aanvraag indienen die goedkeuring vereist.",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Een melding sturen wanneer een media-aanvraag niet kan worden toegevoegd aan Radarr of Sonarr.",
|
||||
"components.NotificationTypeSelector.mediarequestedDescription": "Een melding sturen wanneer gebruikers een nieuw mediaverzoek indienen dat goedkeuring vereist.",
|
||||
"components.NotificationTypeSelector.mediafailedDescription": "Een melding sturen wanneer een mediaverzoek niet toegevoegd kan worden aan Radarr of Sonarr.",
|
||||
"components.TvDetails.TvCrew.fullseriescrew": "Volledige crew van de serie",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Instellingen voor Pushover-meldingen opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingssaved": "Instellingen voor Pushover-meldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsPushover.pushoversettingsfailed": "Instellingen voor Pushover-meldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Dienst inschakelen",
|
||||
"components.Settings.Notifications.NotificationsPushover.agentenabled": "Agent inschakelen",
|
||||
"components.Settings.Notifications.NotificationsPushover.accessToken": "Token toepassings-API",
|
||||
"components.RequestList.sortModified": "Laatst gewijzigd",
|
||||
"components.RequestList.sortAdded": "Meest recent",
|
||||
"components.RequestList.showallrequests": "Alle aanvragen tonen",
|
||||
"components.RequestList.showallrequests": "Toon alle verzoeken",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationUserTokenRequired": "Je moet een geldige gebruikers- of groepssleutel opgeven",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationAccessTokenRequired": "Je moet een geldig toepassingstoken opgeven",
|
||||
"components.Settings.Notifications.NotificationsPushover.userToken": "Gebruikers- of groepssleutel",
|
||||
"i18n.request": "Aanvragen",
|
||||
"components.RequestButton.requestmore4k": "Meer in 4K aanvragen",
|
||||
"components.RequestButton.approverequests": "{requestCount, plural, one {Aanvraag} other {{requestCount} Aanvragen}} goedkeuren",
|
||||
"components.RequestButton.approve4krequests": "{requestCount, plural, one {4K-aanvraag} other {{requestCount} 4K-aanvragen}} goedkeuren",
|
||||
"components.RequestButton.declinerequests": "{requestCount, plural, one {Aanvraag} other {{requestCount} Aanvragen}} weigeren",
|
||||
"components.RequestButton.decline4krequests": "{requestCount, plural, one {4K-aanvraag} other {{requestCount} 4K-aanvragen}} weigeren",
|
||||
"components.RequestButton.approverequests": "{requestCount, plural, one {Verzoek} other {{requestCount} Verzoeken}} goedkeuren",
|
||||
"components.RequestButton.approve4krequests": "{requestCount, plural, one {4K-verzoek} other {{requestCount} 4K-verzoeken}} goedkeuren",
|
||||
"components.RequestButton.declinerequests": "{requestCount, plural, one {Verzoek} other {{requestCount} Verzoeken}} weigeren",
|
||||
"components.RequestButton.decline4krequests": "{requestCount, plural, one {4K-verzoek} other {{requestCount} 4K-verzoeken}} weigeren",
|
||||
"components.StatusBadge.status4k": "4K {status}",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Instellingen voor webhook-meldingen opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingssaved": "Instellingen voor webhook-meldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhooksettingsfailed": "Instellingen voor webhook-meldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.Notifications.NotificationsWebhook.webhookUrl": "Webhook-URL",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationJsonPayloadRequired": "Je moet een geldige JSON-payload opgeven",
|
||||
"components.Settings.Notifications.NotificationsWebhook.templatevariablehelp": "Hulp met sjabloonvariabelen",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON-payload teruggezet!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayloadSuccess": "JSON-payload succesvol teruggezet!",
|
||||
"components.Settings.Notifications.NotificationsWebhook.resetPayload": "Terugzetten naar standaard",
|
||||
"components.Settings.Notifications.NotificationsWebhook.customJson": "JSON-payload",
|
||||
"components.Settings.Notifications.NotificationsWebhook.authheader": "Autorisatie-header",
|
||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Dienst inschakelen",
|
||||
"components.RequestModal.pending4krequest": "4K-aanvraag in behandeling",
|
||||
"components.RequestButton.viewrequest4k": "4K-aanvraag bekijken",
|
||||
"components.RequestButton.viewrequest": "Aanvraag bekijken",
|
||||
"components.Settings.Notifications.NotificationsWebhook.agentenabled": "Agent inschakelen",
|
||||
"components.RequestModal.pending4krequest": "4K-verzoek in behandeling",
|
||||
"components.RequestButton.viewrequest4k": "4K-verzoek bekijken",
|
||||
"components.RequestButton.viewrequest": "Verzoek bekijken",
|
||||
"components.RequestButton.requestmore": "Meer aanvragen",
|
||||
"components.RequestButton.declinerequest4k": "4K-aanvraag weigeren",
|
||||
"components.RequestButton.declinerequest": "Aanvraag weigeren",
|
||||
"components.RequestButton.approverequest4k": "4K-aanvraag goedkeuren",
|
||||
"components.RequestButton.approverequest": "Aanvraag goedkeuren",
|
||||
"components.RequestButton.declinerequest4k": "4K-verzoek weigeren",
|
||||
"components.RequestButton.declinerequest": "Verzoek weigeren",
|
||||
"components.RequestButton.approverequest4k": "4K-verzoek goedkeuren",
|
||||
"components.RequestButton.approverequest": "Verzoek goedkeuren",
|
||||
"components.UserList.autogeneratepassword": "Automatisch wachtwoord genereren",
|
||||
"components.UserList.create": "Aanmaken",
|
||||
"components.UserList.createlocaluser": "Lokale gebruiker aanmaken",
|
||||
"components.UserList.usercreatedfailed": "Er ging iets mis bij het aanmaken van de gebruiker.",
|
||||
"components.UserList.creating": "Aanmaken…",
|
||||
"components.UserList.validationpasswordminchars": "Wachtwoord is te kort; moet minimaal 8 tekens bevatten",
|
||||
"components.UserList.usercreatedsuccess": "Gebruiker aangemaakt!",
|
||||
"components.UserList.passwordinfodescription": "Stel een toepassings-URL in en schakel e-mailmeldingen in om automatische wachtwoordgeneratie mogelijk te maken.",
|
||||
"components.UserList.usercreatedsuccess": "Gebruiker succesvol aangemaakt!",
|
||||
"components.UserList.passwordinfodescription": "Stel een applicatie-URL in en schakel e-mailmeldingen in om automatische wachtwoordgeneratie mogelijk te maken.",
|
||||
"components.UserList.password": "Wachtwoord",
|
||||
"components.UserList.localuser": "Lokale gebruiker",
|
||||
"components.UserList.email": "E-mailadres",
|
||||
@@ -301,9 +301,9 @@
|
||||
"components.Login.email": "E-mailadres",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Meer",
|
||||
"i18n.edit": "Bewerken",
|
||||
"components.RequestModal.requestedited": "Aanvraag voor <strong>{title}</strong> aangepast!",
|
||||
"components.RequestModal.requestcancelled": "Aanvraag voor <strong>{title}</strong> geannuleerd.",
|
||||
"components.RequestModal.errorediting": "Er is iets misgegaan bij het aanpassen van de aanvraag.",
|
||||
"components.RequestModal.requestedited": "Verzoek voor <strong>{title}</strong> succesvol gewijzigd!",
|
||||
"components.RequestModal.requestcancelled": "Verzoek voor <strong>{title}</strong> geannuleerd.",
|
||||
"components.RequestModal.errorediting": "Er ging iets mis bij het bewerken van het verzoek.",
|
||||
"components.RequestModal.AdvancedRequester.rootfolder": "Hoofdmap",
|
||||
"components.RequestModal.AdvancedRequester.qualityprofile": "Kwaliteitsprofiel",
|
||||
"components.RequestModal.AdvancedRequester.destinationserver": "Doelserver",
|
||||
@@ -313,27 +313,29 @@
|
||||
"components.RequestBlock.server": "Doelserver",
|
||||
"components.RequestBlock.rootfolder": "Hoofdmap",
|
||||
"components.RequestBlock.profilechanged": "Kwaliteitsprofiel",
|
||||
"components.RequestBlock.requestoverrides": "Overschrijvingen van aanvraag",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Een melding sturen wanneer een media-aanvraag wordt afgewezen.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Aanvraag geweigerd",
|
||||
"components.RequestBlock.requestoverrides": "Overschrijvingen van verzoek",
|
||||
"components.NotificationTypeSelector.mediadeclinedDescription": "Een melding sturen wanneer een mediaverzoek wordt afgewezen.",
|
||||
"components.NotificationTypeSelector.mediadeclined": "Verzoek geweigerd",
|
||||
"components.RequestModal.autoapproval": "Automatische goedkeuring",
|
||||
"i18n.experimental": "Experimenteel",
|
||||
"components.RequestModal.requesterror": "Er ging iets mis bij het aanvragen.",
|
||||
"components.RequestModal.SearchByNameModal.notvdbiddescription": "Er is geen automatische overeenkomst voor deze serie gevonden. Selecteer hieronder de overeenkomstige serie.",
|
||||
"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": "Aanmelden…",
|
||||
"components.Login.signin": "Aanmelden",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Meldingsdiensten configureren en inschakelen.",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Meldingsagenten configureren en inschakelen.",
|
||||
"components.PlexLoginButton.signinwithplex": "Aanmelden",
|
||||
"components.PlexLoginButton.signingin": "Aanmelden…",
|
||||
"components.PermissionEdit.advancedrequest": "Geavanceerde aanvragen",
|
||||
"components.PermissionEdit.admin": "Beheerder",
|
||||
"components.UserList.userssaved": "Gebruikersrechten opgeslagen!",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Serverlijst van Plex opgehaald!",
|
||||
"components.UserList.userssaved": "Gebruikersrechten succesvol opgeslagen!",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Serverlijst van Plex succesvol opgehaald!",
|
||||
"components.Settings.toastPlexRefresh": "Bezig met serverlijst ophalen van Plex…",
|
||||
"components.Settings.toastPlexConnecting": "Verbinden met Plex…",
|
||||
"components.UserList.bulkedit": "Meerdere bewerken",
|
||||
"components.Settings.toastPlexRefreshFailure": "Kan serverlijst van Plex niet ophalen.",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Succesvol verbonden met Plex!",
|
||||
"components.Settings.toastPlexConnectingSuccess": "Succesvol verbonden met Plex-server!",
|
||||
"components.Settings.toastPlexConnectingFailure": "Kan geen verbinding maken met Plex.",
|
||||
"components.Settings.settingUpPlexDescription": "Om Plex in te stellen, kan je de gegevens handmatig invoeren of een server selecteren die is opgehaald van <RegisterPlexTVLink>plex.tv</RegisterPlexTVLink>. Druk op de knop rechts van de vervolgkeuzelijst om de lijst van beschikbare servers op te halen.",
|
||||
"components.Settings.serverpresetRefreshing": "Servers ophalen…",
|
||||
@@ -352,13 +354,13 @@
|
||||
"components.PermissionEdit.request": "Aanvragen",
|
||||
"components.PermissionEdit.request4kMovies": "4K-films aanvragen",
|
||||
"components.PermissionEdit.request4kDescription": "Toestemming geven om 4K-media aan te vragen.",
|
||||
"components.PermissionEdit.managerequestsDescription": "Toestemming geven om media-aanvragen te beheren. Alle aanvragen die door een gebruiker met deze toestemming worden gedaan, worden automatisch goedgekeurd.",
|
||||
"components.PermissionEdit.managerequests": "Aanvragen beheren",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Serie-aanvragen (niet-4K) automatisch goedkeuren.",
|
||||
"components.PermissionEdit.managerequestsDescription": "Toestemming geven om mediaverzoeken te beheren. Alle verzoeken die door een gebruiker met deze machtiging worden gedaan, worden automatisch goedgekeurd.",
|
||||
"components.PermissionEdit.managerequests": "Verzoeken beheren",
|
||||
"components.PermissionEdit.autoapproveSeriesDescription": "Serieverzoeken (niet 4K) automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapproveMovies": "Films automatisch goedkeuren",
|
||||
"components.PermissionEdit.autoapproveSeries": "Series automatisch goedkeuren",
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "Filmaanvragen (niet-4K) automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapproveDescription": "Alle media-aanvragen (niet-4K) automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapproveMoviesDescription": "Filmverzoeken (niet 4K) automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapproveDescription": "Alle mediaverzoeken (niet 4K) automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove": "Automatische goedkeuring",
|
||||
"components.PermissionEdit.advancedrequestDescription": "Toestemming geven om geavanceerde aanvraagopties voor media te wijzigen.",
|
||||
"components.PermissionEdit.adminDescription": "Volledige beheerderstoegang. Omzeilt alle andere machtigingscontroles.",
|
||||
@@ -403,8 +405,8 @@
|
||||
"components.Settings.SonarrModal.validationApplicationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.RadarrModal.validationApplicationUrlTrailingSlash": "URL mag niet eindigen op een schuine streep",
|
||||
"components.Settings.RadarrModal.validationApplicationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Toestemming geven om media-aanvragen van andere gebruikers te bekijken.",
|
||||
"components.PermissionEdit.viewrequests": "Aanvragen bekijken",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Toestemming geven om mediaverzoeken van andere gebruikers te bekijken.",
|
||||
"components.PermissionEdit.viewrequests": "Verzoeken bekijken",
|
||||
"components.UserList.validationEmail": "E-mailadres vereist",
|
||||
"components.Settings.SonarrModal.validationBaseUrlTrailingSlash": "Basis-URL mag niet eindigen op een schuine streep",
|
||||
"components.Settings.SonarrModal.validationBaseUrlLeadingSlash": "Basis-URL moet met een schuine streep beginnen",
|
||||
@@ -420,7 +422,7 @@
|
||||
"components.ResetPassword.validationpasswordminchars": "Wachtwoord is te kort; moet minimaal 8 tekens bevatten",
|
||||
"components.ResetPassword.validationpasswordmatch": "Wachtwoorden moeten overeenkomen",
|
||||
"components.ResetPassword.validationemailrequired": "Je moet een geldig e-mailadres opgeven",
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "Wachtwoord is opnieuw ingesteld!",
|
||||
"components.ResetPassword.resetpasswordsuccessmessage": "Wachtwoord is succesvol opnieuw ingesteld!",
|
||||
"components.ResetPassword.requestresetlinksuccessmessage": "Er wordt een link om het wachtwoord te resetten naar het opgegeven e-mailadres gestuurd als dat gekoppeld is aan een geldige gebruiker.",
|
||||
"components.ResetPassword.password": "Wachtwoord",
|
||||
"components.ResetPassword.gobacklogin": "Terug naar aanmeldpagina",
|
||||
@@ -436,16 +438,16 @@
|
||||
"components.Settings.SonarrModal.animelanguageprofile": "Taalprofiel anime",
|
||||
"components.Settings.Notifications.sendSilentlyTip": "Meldingen versturen zonder geluid",
|
||||
"components.Settings.Notifications.sendSilently": "Stil verzenden",
|
||||
"components.UserList.sortRequests": "Aantal aanvragen",
|
||||
"components.UserList.sortRequests": "Aantal verzoeken",
|
||||
"components.UserList.sortDisplayName": "Weergavenaam",
|
||||
"components.UserList.sortCreated": "Aanmeldingsdatum",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "Serie-aanvragen in 4K automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove4kSeriesDescription": "Serieverzoeken in 4K automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove4kSeries": "Series automatisch goedkeuren",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "Filmaanvragen in 4K automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove4kMoviesDescription": "Filmverzoeken in 4K automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove4kMovies": "Automatische goedkeuring van films in 4K",
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Alle 4K-media-aanvragen automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove4kDescription": "Alle 4K-mediaverzoeken automatisch goedkeuren.",
|
||||
"components.PermissionEdit.autoapprove4k": "Automatische goedkeuring 4K",
|
||||
"components.UserProfile.recentrequests": "Recente aanvragen",
|
||||
"components.UserProfile.recentrequests": "Recente verzoeken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.generalsettings": "Algemene instellingen",
|
||||
"components.UserProfile.UserSettings.menuNotifications": "Meldingen",
|
||||
"components.UserProfile.UserSettings.menuGeneralSettings": "Algemeen",
|
||||
@@ -455,15 +457,15 @@
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationCurrentPassword": "Je moet jouw huidige wachtwoord opgeven",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPasswordSame": "Wachtwoorden moeten overeenkomen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.validationConfirmPassword": "Je moet het nieuwe wachtwoord bevestigen",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "Wachtwoord gewijzigd!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsSuccess": "Wachtwoord succesvol gewijzigd!",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.toastSettingsFailure": "Er ging iets mis bij het opslaan van het wachtwoord.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.password": "Wachtwoord",
|
||||
"components.UserProfile.UserSettings.menuChangePass": "Wachtwoord",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.newpassword": "Nieuw wachtwoord",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.currentpassword": "Huidig wachtwoord",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.confirmpassword": "Wachtwoord bevestigen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Instellingen opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsSuccess": "Machtigingen opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsSuccess": "Instellingen succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsSuccess": "Machtigingen succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailure": "Er ging iets mis bij het opslaan van de instellingen.",
|
||||
"components.UserProfile.UserSettings.UserPermissions.toastSettingsFailure": "Er ging iets mis bij het opslaan van de instellingen.",
|
||||
"components.UserProfile.UserSettings.menuPermissions": "Machtigingen",
|
||||
@@ -477,9 +479,9 @@
|
||||
"components.UserList.edituser": "Gebruikersrechten bewerken",
|
||||
"components.UserProfile.ProfileHeader.settings": "Instellingen bewerken",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationAccessTokenRequired": "Je moet een toegangstoken opgeven",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Instellingen voor Pushbullet-meldingen opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsSaved": "Instellingen voor Pushbullet-meldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.pushbulletSettingsFailed": "Instellingen voor Pushbullet-meldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "Dienst inschakelen",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.agentEnabled": "Agent inschakelen",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.accessToken": "Toegangstoken",
|
||||
"components.Layout.UserDropdown.settings": "Instellingen",
|
||||
"components.Layout.UserDropdown.myprofile": "Profiel",
|
||||
@@ -489,7 +491,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Inhoud filteren op regionale beschikbaarheid",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.region": "Regio van Ontdekken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguageTip": "Inhoud filteren op oorspronkelijke taal",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Taal voor Ontdekken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Taal van Ontdekken",
|
||||
"components.Settings.webhook": "Webhook",
|
||||
"components.Settings.email": "E-mail",
|
||||
"components.RegionSelector.regionDefault": "Alle regio’s",
|
||||
@@ -540,12 +542,12 @@
|
||||
"components.Settings.menuUsers": "Gebruikers",
|
||||
"components.Settings.SettingsUsers.userSettingsDescription": "Algemene en standaard gebruikersinstellingen configureren.",
|
||||
"components.Settings.SettingsUsers.userSettings": "Gebruikersinstellingen",
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "Gebruikersinstellingen opgeslagen!",
|
||||
"components.Settings.SettingsUsers.toastSettingsSuccess": "Gebruikersinstellingen succesvol opgeslagen!",
|
||||
"components.Settings.SettingsUsers.toastSettingsFailure": "Er ging iets mis bij het opslaan van de instellingen.",
|
||||
"components.Settings.SettingsUsers.localLogin": "Lokaal aanmelden inschakelen",
|
||||
"components.Settings.SettingsUsers.defaultPermissions": "Standaard machtigingen",
|
||||
"components.NotificationTypeSelector.mediaAutoApprovedDescription": "Een melding sturen wanneer een gebruiker nieuwe media aanvraagt die automatisch wordt goedgekeurd.",
|
||||
"components.NotificationTypeSelector.mediaAutoApproved": "Aanvraag automatisch goedgekeurd",
|
||||
"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.TvDetails.episodeRuntimeMinutes": "{runtime} minuten",
|
||||
@@ -567,7 +569,7 @@
|
||||
"components.Settings.SettingsLogs.resumeLogs": "Hervatten",
|
||||
"components.Settings.SettingsLogs.pauseLogs": "Pauze",
|
||||
"components.Settings.SettingsLogs.message": "Bericht",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Je kunt deze logboeken ook rechtstreeks bekijken via <code>stdout</code>, of in <code>{appDataPath}/logs/jellyseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Je kunt deze logboeken ook rechtstreeks bekijken via <code>stdout</code>, of in <code>{appDataPath}/logs/overseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logs": "Logboeken",
|
||||
"components.Settings.SettingsLogs.level": "Ernst",
|
||||
"components.Settings.SettingsLogs.label": "Label",
|
||||
@@ -601,11 +603,11 @@
|
||||
"components.PersonDetails.alsoknownas": "Ook bekend als: {names}",
|
||||
"i18n.delimitedlist": "{a}, {b}",
|
||||
"components.UserProfile.unlimited": "Onbeperkt",
|
||||
"components.UserProfile.totalrequests": "Totaal aantal aanvragen",
|
||||
"components.UserProfile.seriesrequest": "Serie-aanvragen",
|
||||
"components.UserProfile.totalrequests": "Totaal aantal verzoeken",
|
||||
"components.UserProfile.seriesrequest": "Serieverzoeken",
|
||||
"components.UserProfile.requestsperdays": "{limit} resterend",
|
||||
"components.UserProfile.pastdays": "{type} (afgelopen {days} dagen)",
|
||||
"components.UserProfile.movierequests": "Filmaanvragen",
|
||||
"components.UserProfile.movierequests": "Filmverzoeken",
|
||||
"components.UserProfile.limit": "{remaining} van {limit}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Aanvraaglimiet voor series",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Aanvraaglimiet voor films",
|
||||
@@ -614,11 +616,11 @@
|
||||
"components.Settings.SettingsUsers.tvRequestLimitLabel": "Globale aanvraaglimiet voor series",
|
||||
"components.RequestModal.QuotaDisplay.seasonlimit": "{limit, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.RequestModal.QuotaDisplay.season": "seizoen",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Je hebt nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensaanvraag} other {seizoensaanvragen}} nodig om deze serie aan te vragen.",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Geen} other {<strong>#</strong>}} {type}{remaining, plural, one {aanvraag} other {aanvragen}} over",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Je kunt een overzicht van de aanvraaglimieten van deze gebruiker bekijken op diens <ProfileLink>profielpagina</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Je moet nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensverzoek} other {seizoensverzoeken}} over hebben om deze serie aan te vragen.",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Geen} other {<strong>#</strong>}} {type}{remaining, plural, one {verzoek} other {verzoeken}} resterend",
|
||||
"components.RequestModal.QuotaDisplay.quotaLinkUser": "Je kan een overzicht van de aanvraaglimieten van deze gebruiker bekijken op hun <ProfileLink>profielpagina</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.quotaLink": "Je kan een overzicht van je aanvraaglimieten bekijken op jouw <ProfileLink>profielpagina</ProfileLink>.",
|
||||
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Onvoldoende seizoensaanvragen over",
|
||||
"components.RequestModal.QuotaDisplay.notenoughseasonrequests": "Onvoldoende seizoensverzoeken over",
|
||||
"components.RequestModal.QuotaDisplay.movielimit": "{limit, plural, one {film} other {films}}",
|
||||
"components.RequestModal.QuotaDisplay.movie": "film",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "Deze gebruiker mag elke <strong>{days}</strong> dagen <strong>{limit}</strong> {type} aanvragen.",
|
||||
@@ -629,7 +631,7 @@
|
||||
"i18n.testing": "Testen…",
|
||||
"i18n.test": "Test",
|
||||
"i18n.status": "Status",
|
||||
"i18n.showingresults": "Resultaten <strong>{from}</strong> t/m <strong>{to}</strong> van <strong>{total}</strong> weergegeven",
|
||||
"i18n.showingresults": "<strong>{from}</strong> tot <strong>{to}</strong> van de <strong>{total}</strong> resultaten worden weergegeven",
|
||||
"i18n.saving": "Opslaan…",
|
||||
"i18n.save": "Wijzigingen opslaan",
|
||||
"i18n.resultsperpage": "{pageSize} resultaten per pagina weergeven",
|
||||
@@ -644,7 +646,7 @@
|
||||
"i18n.back": "Terug",
|
||||
"i18n.areyousure": "Weet je het zeker?",
|
||||
"i18n.all": "Alle",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Deze gebruiker heeft nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensaanvraag} other {seizoensaanvragen}} nodig om deze serie aan te vragen.",
|
||||
"components.RequestModal.QuotaDisplay.requiredquotaUser": "Deze gebruiker heeft nog minstens <strong>{seasons}</strong> {seasons, plural, one {seizoensverzoek} other {seizoensverzoeken}} nodig om deze serie aan te vragen.",
|
||||
"components.TvDetails.originaltitle": "Oorspronkelijke titel",
|
||||
"components.MovieDetails.originaltitle": "Oorspronkelijke titel",
|
||||
"components.LanguageSelector.originalLanguageDefault": "Alle talen",
|
||||
@@ -670,29 +672,29 @@
|
||||
"components.RequestModal.AdvancedRequester.notagoptions": "Geen labels.",
|
||||
"components.Settings.RadarrModal.loadingTags": "Labels laden…",
|
||||
"components.RequestList.RequestItem.mediaerror": "{mediaType} niet gevonden",
|
||||
"components.RequestList.RequestItem.deleterequest": "Aanvraag verwijderen",
|
||||
"components.RequestList.RequestItem.deleterequest": "Verzoek verwijderen",
|
||||
"components.RequestCard.mediaerror": "{mediaType} niet gevonden",
|
||||
"components.RequestCard.deleterequest": "Aanvraag verwijderen",
|
||||
"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 opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingssaved": "Instellingen Telegrammeldingen succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramsettingsfailed": "De instellingen voor Telegrammeldingen konden niet opgeslagen worden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKeyTip": "E-mailberichten versleutelen met <OpenPgpLink>OpenPGP</OpenPgpLink>",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pgpPublicKey": "Openbare PGP-sleutel",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "Instellingen voor e-mailmeldingen opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingssaved": "Instellingen voor e-mailmeldingen succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.emailsettingsfailed": "Instellingen voor e-mailmeldingen konden niet opgeslagen worden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.email": "E-mail",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Instellingen voor Discord-meldingen opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingssaved": "Instellingen voor Discord-meldingen zijn succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.discordsettingsfailed": "Instellingen voor Discord-meldingen konden niet opgeslagen worden.",
|
||||
"components.Settings.Notifications.validationPgpPrivateKey": "Je moet een geldige PGP-privésleutel opgeven",
|
||||
"components.Settings.Notifications.validationPgpPassword": "Je moet een PGP-wachtwoord opgeven",
|
||||
"components.Settings.Notifications.botUsernameTip": "Sta gebruikers toe ook een chat met jouw bot te starten en hun eigen meldingen te configureren",
|
||||
"components.RequestModal.pendingapproval": "Je aanvraag is in afwachting van goedkeuring.",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Aanvraag annuleren",
|
||||
"components.Settings.Notifications.botUsernameTip": "Sta gebruikers toe om ook een chat met jouw bot te starten en hun eigen meldingen te configureren",
|
||||
"components.RequestModal.pendingapproval": "Je verzoek is in afwachting van goedkeuring.",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Verzoek annuleren",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Meldingtypes",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSetOwnAccount": "Er is voor jouw account momenteel geen wachtwoord ingesteld. Stel hieronder een wachtwoord in om aanmelden als \"lokale gebruiker\" (met je e-mailadres) in te schakelen.",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Dit gebruikersaccount heeft momenteel geen ingesteld wachtwoord. Configureer hieronder een wachtwoord zodat dit account zich kan aanmelden als een \"lokale gebruiker.\"",
|
||||
"components.UserProfile.UserSettings.UserPasswordChange.noPasswordSet": "Deze gebruikersaccount heeft momenteel geen wachtwoord ingesteld. Configureer hieronder een wachtwoord zodat deze account in staat is om zich aan te melden als een \"lokale gebruiker\".",
|
||||
"components.Settings.serviceSettingsDescription": "Stel je {serverType}-server(s) hieronder in. Je kunt meerdere {serverType}-servers verbinden, maar slechts twee ervan kunnen als standaard worden gemarkeerd (één niet-4K en één 4K). Beheerders kunnen vóór goedkeuring de server aanpassen die voor nieuwe aanvragen gebruikt wordt.",
|
||||
"components.Settings.noDefaultServer": "Ten minste één {serverType}-server moet als standaard worden aangemerkt om {mediaType}aanvragen te kunnen verwerken.",
|
||||
"components.Settings.noDefaultServer": "Ten minste één {serverType} server moet als standaard worden gemarkeerd om {mediaType}verzoeken te kunnen verwerken.",
|
||||
"components.Settings.noDefaultNon4kServer": "Als je slechts één enkele {serverType} server hebt voor zowel niet-4K als 4K-inhoud (of als je alleen 4K-inhoud downloadt), dan moet je {serverType} server <strong>NIET</strong> aangeduid worden als een 4K-server.",
|
||||
"components.Settings.mediaTypeSeries": "serie",
|
||||
"components.Settings.mediaTypeMovie": "film",
|
||||
@@ -706,26 +708,26 @@
|
||||
"i18n.retrying": "Opnieuw proberen…",
|
||||
"components.Settings.serverSecure": "veilig",
|
||||
"components.UserList.usercreatedfailedexisting": "Het opgegeven e-mailadres wordt al gebruikt door een andere gebruiker.",
|
||||
"components.RequestModal.edit": "Aanvraag aanpassen",
|
||||
"components.RequestList.RequestItem.editrequest": "Aanvraag aanpassen",
|
||||
"components.RequestModal.edit": "Verzoek bewerken",
|
||||
"components.RequestList.RequestItem.editrequest": "Verzoek bewerken",
|
||||
"components.Settings.SonarrModal.enableSearch": "Automatisch zoeken inschakelen",
|
||||
"components.Settings.RadarrModal.enableSearch": "Automatisch zoeken inschakelen",
|
||||
"components.Settings.Notifications.NotificationsWebPush.agentenabled": "Dienst inschakelen",
|
||||
"components.Settings.Notifications.NotificationsWebPush.agentenabled": "Agent inschakelen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpush": "Web-push",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.applanguage": "Weergavetaal",
|
||||
"components.Settings.webpush": "Web-push",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingssaved": "Instellingen voor web-pushmeldingen opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingssaved": "Instellingen voor web-pushmeldingen succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.webpushsettingsfailed": "Instellingen voor web-pushmeldingen zijn niet opgeslagen.",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.profileName": "Profielnaam",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.agentenabled": "Dienst inschakelen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingssaved": "Instellingen voor web-pushmeldingen opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.agentenabled": "Agent inschakelen",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingssaved": "Instellingen voor web-pushmeldingen succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.webpushsettingsfailed": "Instellingen voor web-pushmeldingen konden niet worden opgeslagen.",
|
||||
"components.Settings.noDefault4kServer": "Een 4K-{serverType}server moet als standaard worden gemarkeerd om gebruikers toe te laten om 4K-{mediaType} aan te vragen.",
|
||||
"components.Settings.is4k": "4K",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.profileNameTip": "Alleen vereist als je niet het <code>default</code> profiel gebruikt",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "Webhook-URL",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationWebhookUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "Instellingen voor meldingen LunaSea opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsSaved": "Instellingen voor meldingen LunaSea succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.settingsFailed": "Instellingen voor meldingen LunaSea niet opgeslagen.",
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "{mediaServerName}-gebruikers toestaan zich aan te melden zonder eerst geïmporteerd te zijn",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Nieuwe {mediaServerName}-aanmelding inschakelen",
|
||||
@@ -782,32 +784,32 @@
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Om web-pushmeldingen te ontvangen, moet Jellyseerr via HTTPS worden weergegeven.",
|
||||
"components.RequestList.RequestItem.requesteddate": "Aangevraagd",
|
||||
"components.RequestCard.failedretry": "Er ging opnieuw iets mis tijdens het aanvragen.",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Sta gebruikers toe zich aan te melden met hun e-mailadres en wachtwoord",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Sta gebruikers toe om zich aan te melden met hun e-mailadres en wachtwoord, in plaats van met {mediaServerName} OAuth",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Initiële machtigingen toegekend aan nieuwe gebruikers",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} per {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.seasons": "{count, plural, one {seizoen} other {seizoenen}}",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} per {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {film} other {films}}",
|
||||
"components.QuotaSelector.days": "{count, plural, one {dag} other {dagen}}",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Een melding ontvangen wanneer je media-aanvragen goedgekeurd zijn.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Een melding ontvangen wanneer je mediaverzoeken goedgekeurd zijn.",
|
||||
"components.Settings.Notifications.validationTypes": "Je moet ten minste één meldingstype selecteren",
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationTypes": "Je moet ten minste één meldingstype selecteren",
|
||||
"components.Settings.Notifications.NotificationsSlack.validationTypes": "Je moet ten minste één meldingstype selecteren",
|
||||
"components.Settings.Notifications.NotificationsPushover.validationTypes": "Je moet ten minste één meldingstype selecteren",
|
||||
"components.Settings.Notifications.NotificationsPushbullet.validationTypes": "Je moet ten minste één meldingstype selecteren",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.validationTypes": "Je moet ten minste één meldingstype selecteren",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Een melding ontvangen wanneer andere gebruikers nieuwe media-aanvragen indienen waarvoor goedkeuring vereist is.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Een melding ontvangen wanneer media-aanvragen niet kunnen worden toegevoegd aan Radarr of Sonarr.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Een melding ontvangen wanneer je media-aanvragen worden geweigerd.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Een melding ontvangen wanneer je media-aanvragen beschikbaar zijn.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Een melding ontvangen wanneer andere gebruikers nieuwe media-aanvragen indienen die automatisch worden goedgekeurd.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Een melding ontvangen wanneer andere gebruikers nieuwe mediaverzoeken indienen waarvoor goedkeuring vereist is.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Een melding ontvangen wanneer mediaverzoeken niet kunnen worden toegevoegd aan Radarr of Sonarr.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Een melding ontvangen wanneer je mediaverzoeken worden geweigerd.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Een melding ontvangen wanneer je mediaverzoeken beschikbaar zijn.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Een melding ontvangen wanneer andere gebruikers nieuwe mediaverzoeken indienen die automatisch worden goedgekeurd.",
|
||||
"components.Settings.SettingsAbout.betawarning": "Dit is BETA-software. Functies kunnen kapot en/of instabiel zijn. Meld eventuele problemen op GitHub!",
|
||||
"components.Layout.LanguagePicker.displaylanguage": "Weergavetaal",
|
||||
"components.MovieDetails.showmore": "Meer tonen",
|
||||
"components.MovieDetails.showless": "Minder tonen",
|
||||
"components.TvDetails.streamingproviders": "Momenteel te streamen op",
|
||||
"components.MovieDetails.streamingproviders": "Momenteel te streamen op",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Taak bewerkt!",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditSaved": "Taak succesvol bewerkt!",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorMinutes": "Elk(e) {jobScheduleMinutes, plural, one {minuut} other {{jobScheduleMinutes} minuten}}",
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Nieuwe frequentie",
|
||||
"components.Settings.SettingsJobsCache.jobScheduleEditFailed": "Er ging iets mis bij het opslaan van de taak.",
|
||||
@@ -819,7 +821,7 @@
|
||||
"components.IssueDetails.IssueComment.delete": "Opmerking verwijderen",
|
||||
"components.IssueDetails.IssueComment.edit": "Opmerking bewerken",
|
||||
"components.IssueDetails.IssueComment.postedby": "{relativeTime} gepost door {username}",
|
||||
"components.IssueDetails.IssueComment.postedbyedited": "{relativeTime} ingediend door {username} (bewerkt)",
|
||||
"components.IssueDetails.IssueComment.postedbyedited": "{relativeTime} gepost door {username} (bewerkt)",
|
||||
"components.IssueDetails.IssueComment.validationComment": "Je moet een bericht invoeren",
|
||||
"components.IssueDetails.problemepisode": "Getroffen aflevering",
|
||||
"components.IssueDetails.problemseason": "Getroffen seizoen",
|
||||
@@ -838,7 +840,7 @@
|
||||
"components.IssueModal.issueSubtitles": "Ondertiteling",
|
||||
"components.IssueModal.issueVideo": "Video",
|
||||
"components.ManageSlideOver.downloadstatus": "Downloads",
|
||||
"components.ManageSlideOver.manageModalNoRequests": "Geen aanvragen.",
|
||||
"components.ManageSlideOver.manageModalNoRequests": "Geen verzoeken.",
|
||||
"components.IssueDetails.lastupdated": "Laatst bijgewerkt",
|
||||
"components.IssueDetails.IssueDescription.deleteissue": "Probleem verwijderen",
|
||||
"components.IssueDetails.IssueDescription.edit": "Beschrijving bewerken",
|
||||
@@ -849,10 +851,10 @@
|
||||
"components.IssueDetails.nocomments": "Geen opmerkingen.",
|
||||
"components.IssueModal.CreateIssueModal.reportissue": "Probleem melden",
|
||||
"components.IssueDetails.allepisodes": "Alle afleveringen",
|
||||
"components.IssueDetails.toasteditdescriptionsuccess": "Probleembeschrijving bewerkt!",
|
||||
"components.IssueDetails.toastissuedeleted": "Probleem verwijderd!",
|
||||
"components.IssueDetails.toasteditdescriptionsuccess": "Probleembeschrijving succesvol bewerkt!",
|
||||
"components.IssueDetails.toastissuedeleted": "Probleem succesvol verwijderd!",
|
||||
"components.IssueModal.CreateIssueModal.providedetail": "Geef een gedetailleerde uitleg van het probleem dat je bent tegengekomen.",
|
||||
"components.IssueDetails.toaststatusupdated": "Probleemstatus bijgewerkt!",
|
||||
"components.IssueDetails.toaststatusupdated": "Probleemstatus succesvol bijgewerkt!",
|
||||
"components.IssueDetails.closeissueandcomment": "Afsluiten met opmerking",
|
||||
"components.IssueModal.CreateIssueModal.problemseason": "Getroffen seizoen",
|
||||
"components.IssueDetails.openedby": "#{issueId} - {relativeTime} ingediend door {username}",
|
||||
@@ -888,13 +890,13 @@
|
||||
"components.IssueList.IssueItem.viewissue": "Probleem bekijken",
|
||||
"components.IssueList.IssueItem.problemepisode": "Getroffen aflevering",
|
||||
"components.IssueModal.CreateIssueModal.problemepisode": "Getroffen aflevering",
|
||||
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Probleemmelding voor <strong>{title}</strong> ingediend!",
|
||||
"components.IssueModal.CreateIssueModal.toastSuccessCreate": "Probleemmelding voor <strong>{title}</strong> succesvol ingediend!",
|
||||
"components.PermissionEdit.viewissues": "Problemen weergeven",
|
||||
"components.IssueModal.issueOther": "Anders",
|
||||
"components.Layout.Sidebar.issues": "Problemen",
|
||||
"components.ManageSlideOver.manageModalClearMedia": "Gegevens wissen",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Hiermee worden alle gegevens voor deze {mediaType} onomkeerbaar verwijderd, inclusief eventuele aanvragen. Als dit item in je {mediaServerName}-bibliotheek staat, worden de mediagegevens bij de volgende scan opnieuw aangemaakt.",
|
||||
"components.ManageSlideOver.manageModalRequests": "Aanvragen",
|
||||
"components.ManageSlideOver.manageModalClearMediaWarning": "* Hiermee worden alle gegevens voor deze {mediaType} onomkeerbaar verwijderd, inclusief eventuele verzoeken. Als dit item in je {mediaServerName}-bibliotheek staat, worden de mediagegevens opnieuw aangemaakt tijdens de volgende scan.",
|
||||
"components.ManageSlideOver.manageModalRequests": "Verzoeken",
|
||||
"components.ManageSlideOver.manageModalTitle": "{mediaType} beheren",
|
||||
"components.ManageSlideOver.tvshow": "serie",
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Ontvang een melding wanneer problemen die jij hebt gemeld, opgelost zijn.",
|
||||
@@ -920,10 +922,10 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoverUserKeyTip": "Je <UsersGroupsLink>gebruikers- of groepsidentifier</UsersGroupsLink> van 30 tekens",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverApplicationToken": "Je moet een geldig toepassingstoken opgeven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Instellingen voor Pushover-meldingen konden niet opgeslagen worden.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Instellingen voor Pushover-meldingen opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Instellingen voor Pushover-meldingen succesvol opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushbulletAccessToken": "Je moet een toegangstoken opgeven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPushoverUserKey": "Je moet een geldige gebruikers- of groepssleutel opgeven",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Instellingen voor Pushbullet-meldingen opgeslagen!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushbulletsettingssaved": "Instellingen voor Pushbullet-meldingen succesvol opgeslagen!",
|
||||
"components.IssueDetails.playonplex": "Afspelen op {mediaServerName}",
|
||||
"components.IssueDetails.play4konplex": "Afspelen op {mediaServerName} in 4K",
|
||||
"components.IssueDetails.openin4karr": "Openen in 4K {arr}",
|
||||
@@ -943,14 +945,14 @@
|
||||
"components.RequestModal.requestmovies4k": "{count} {count, plural, one {film} other {films}} in 4K aanvragen",
|
||||
"components.TvDetails.productioncountries": "Productie{countryCount, plural, one {land} other {landen}}",
|
||||
"components.IssueDetails.commentplaceholder": "Opmerking toevoegen…",
|
||||
"components.RequestModal.requestApproved": "Aanvraag voor <strong>{title}</strong> goedgekeurd!",
|
||||
"components.RequestModal.approve": "Aanvraag goedkeuren",
|
||||
"components.RequestModal.requestApproved": "Verzoek voor <strong>{title}</strong> goedgekeurd!",
|
||||
"components.RequestModal.approve": "Verzoek goedkeuren",
|
||||
"components.Settings.RadarrModal.inCinemas": "In de bioscoop",
|
||||
"components.Settings.RadarrModal.released": "Uitgebracht",
|
||||
"components.Settings.RadarrModal.announced": "Aangekondigd",
|
||||
"components.Settings.Notifications.enableMentions": "Vermeldingen inschakelen",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Dienst inschakelen",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Instellingen voor meldingen Gotify opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsGotify.agentenabled": "Agent inschakelen",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingssaved": "Instellingen voor meldingen Gotify succesvol opgeslagen!",
|
||||
"components.Settings.Notifications.NotificationsGotify.token": "Toepassingstoken",
|
||||
"i18n.importing": "Importeren…",
|
||||
"components.Settings.Notifications.NotificationsGotify.gotifysettingsfailed": "Instellingen voor meldingen Gotify niet opgeslagen.",
|
||||
@@ -985,7 +987,7 @@
|
||||
"components.ManageSlideOver.manageModalMedia4k": "4K-media",
|
||||
"components.ManageSlideOver.manageModalMedia": "Media",
|
||||
"components.Settings.validationApiKey": "Je moet een API-sleutel opgeven",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Instellingen Tautulli opgeslagen!",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Instellingen Tautulli succesvol opgeslagen!",
|
||||
"components.Settings.validationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.validationUrlBaseLeadingSlash": "URL-basis moet met een schuine streep beginnen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discordId": "Gebruikers-ID Discord",
|
||||
@@ -1005,16 +1007,16 @@
|
||||
"components.Settings.deleteServer": "{serverType}-server verwijderen",
|
||||
"components.StatusChecker.appUpdated": "{applicationTitle} bijgewerkt",
|
||||
"components.RequestList.RequestItem.tmdbid": "TMDB ID",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB-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.TitleCard.tvdbid": "TheTVDB ID",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.declinerequest": "Aanvraag weigeren",
|
||||
"components.RequestCard.editrequest": "Aanvraag aanpassen",
|
||||
"components.RequestCard.cancelrequest": "Aanvraag annuleren",
|
||||
"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",
|
||||
@@ -1035,16 +1037,16 @@
|
||||
"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.RequestCard.tvdbid": "TheTVDB ID",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Plex-kijklijst",
|
||||
"components.MovieDetails.theatricalrelease": "Bioscoopuitgave",
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Aanvraag automatisch ingediend",
|
||||
"components.NotificationTypeSelector.mediaautorequestedDescription": "Ontvang een melding wanneer er automatisch nieuwe media-aanvragen worden ingediend voor items op je kijklijst.",
|
||||
"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": "Als deze instelling onjuist wordt geconfigureerd, kan dit de functionaliteit verstoren",
|
||||
"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.",
|
||||
@@ -1056,30 +1058,30 @@
|
||||
"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": "Het inschakelen van deze instelling kan leiden tot onverwacht gedrag van de toepassing",
|
||||
"components.Settings.experimentalTooltip": "Deze instelling inschakelen, kan leiden tot onverwacht gedrag van de toepassing",
|
||||
"components.Settings.restartrequiredTooltip": "Jellyseerr moet opnieuw worden gestart om wijzigingen in deze instelling door te voeren",
|
||||
"components.AirDateBadge.airedrelative": "{relativeTime} uitgezonden",
|
||||
"components.AirDateBadge.airsrelative": "Uitzending {relativeTime}",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.seriesrequests": "Serie-aanvragen",
|
||||
"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": "Aanvraag goedkeuren",
|
||||
"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": "Filmaanvragen",
|
||||
"components.Layout.UserDropdown.requests": "Aanvragen",
|
||||
"components.RequestBlock.decline": "Aanvraag weigeren",
|
||||
"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": "Aanvraag verwijderen",
|
||||
"components.RequestBlock.edit": "Aanvraag aanpassen",
|
||||
"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": "Aanvraag goedkeuren",
|
||||
"components.RequestCard.approverequest": "Verzoek goedkeuren",
|
||||
"components.TvDetails.Season.noepisodes": "Afleveringenlijst niet beschikbaar.",
|
||||
"components.Settings.SettingsJobsCache.imagecache": "Afbeeldingcache",
|
||||
"components.Settings.SettingsJobsCache.imagecachecount": "Afbeeldingen in cache",
|
||||
@@ -1123,7 +1125,7 @@
|
||||
"components.Settings.SettingsMain.general": "Algemeen",
|
||||
"components.Settings.SettingsMain.generalsettings": "Algemene instellingen",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Beschikbare media verbergen",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Instellingen opgeslagen!",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Instellingen succesvol opgeslagen!",
|
||||
"components.Discover.DiscoverSliderEdit.deletesuccess": "Slider succesvol verwijderd.",
|
||||
"components.Discover.createnewslider": "Nieuwe slider maken",
|
||||
"components.Discover.resetwarning": "Zet alle sliders terug naar standaard. Dit zal ook alle aangepaste sliders verwijderen!",
|
||||
@@ -1172,12 +1174,16 @@
|
||||
"components.Selector.searchStudios": "Studio's zoeken…",
|
||||
"components.Selector.starttyping": "Begin met typen om te zoeken.",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Toepassingstitel",
|
||||
"components.Settings.SettingsMain.csrfProtection": "CSRF-bescherming inschakelen",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Schakel deze instelling NIET in tenzij je begrijpt wat je doet!",
|
||||
"components.Settings.SettingsMain.locale": "Weergavetaal",
|
||||
"components.Settings.SettingsMain.originallanguage": "Taal voor Ontdekken",
|
||||
"components.Settings.SettingsMain.originallanguage": "Taal van Ontdekken",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Inhoud filteren op oorspronkelijke taal",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Gedeeltelijke serie-aanvragen toestaan",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Aanvragen voor gedeeltelijke series toestaan",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Er ging iets mis bij het genereren van een nieuwe API-sleutel.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nieuwe API-sleutel gegenereerd!",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nieuwe API-sleutel succesvol gegenereerd!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Proxy-ondersteuning inschakelen",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Jellyseerr toestaan om IP-adressen van clients correct te registreren achter een proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Je moet een toepassingstitel opgeven",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL mag niet eindigen op een schuine streep",
|
||||
"components.Discover.DiscoverMovies.activefilters": "{count, plural, one {# filter actief} other {# filters actief}}",
|
||||
@@ -1187,11 +1193,12 @@
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Populariteit oplopend",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "TMDB-beoordeling oplopend",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateDesc": "Eerste uitzenddatum aflopend",
|
||||
"components.Settings.SettingsMain.applicationurl": "Toepassings-URL",
|
||||
"components.Settings.SettingsMain.applicationurl": "Applicatie-URL",
|
||||
"components.Layout.Sidebar.browsetv": "Series",
|
||||
"components.Selector.searchGenres": "Genres selecteren…",
|
||||
"components.Selector.searchKeywords": "Trefwoorden zoeken…",
|
||||
"components.Settings.SettingsMain.cacheImages": "Afbeeldingscaching inschakelen",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Externe API-toegang instellen op alleen-lezen (vereist HTTPS)",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Je moet een geldige URL opgeven",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Er ging iets mis bij het opslaan van de instellingen.",
|
||||
"components.Discover.CreateSlider.addSlider": "Slider toevoegen",
|
||||
@@ -1285,10 +1292,10 @@
|
||||
"components.Setup.signinWithPlex": "Vul de Plex gegevens in",
|
||||
"components.Settings.jellyfinSettingsDescription": "Configureer optioneel de interne en externe eindpunten voor je {mediaServerName}-server. Meestal verschilt de externe URL van de interne URL. Als je wilt doorverwijzen naar een andere pagina voor wachtwoordherstel, kun je een aangepaste URL voor wachtwoordherstel instellen voor het aanmelden met {mediaServerName}. Je kunt ook de API-sleutel voor Jellyfin wijzigen, die eerder automatisch is gegenereerd.",
|
||||
"components.Settings.jellyfinsettingsDescription": "Configureer de instellingen voor uw {mediaServerName} server. {mediaServerName} scanned uw {mediaServerName} bibliotheken om te zien welke content beschikbaar is.",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> is verwijderd van de kijklijst!",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> is toegevoegd aan de kijklijst!",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> Is succesvol verwijderd van de kijklijst!",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> succesvol toegevoegd aan de kijklijst!",
|
||||
"components.TitleCard.watchlistCancel": "kijklijst voor <strong>{title}</strong> is geannuleerd.",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName}-{userCount, plural, one {gebruiker} other {gebruikers}} geïmporteerd!",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName}-{userCount, plural, one {gebruiker} other {gebruikers}} succesvol geïmporteerd!",
|
||||
"components.UserList.newJellyfinsigninenabled": "De instelling <strong>Nieuwe {mediaServerName}-aanmelding gebruiken</strong> is momenteel ingeschakeld. {mediaServerName}-gebruikers met toegang tot de bibliotheek hoeven niet geïmporteerd te worden om zich te kunnen aanmelden.",
|
||||
"components.Login.back": "Ga terug",
|
||||
"components.Login.invalidurlerror": "Kan geen verbinding maken met de {mediaServerName} server.",
|
||||
@@ -1296,9 +1303,9 @@
|
||||
"components.Login.validationUrlBaseTrailingSlash": "URL basis mag niet eindigen met een schuine streep",
|
||||
"components.Selector.returningSeries": "Terugkerende serie",
|
||||
"components.MovieDetails.addtowatchlist": "Toevoegen aan kijklijst",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> is verwijderd van je kijklijst!",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> is toegevoegd aan je kijklijst!",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> is verwijderd van de kijklijst!",
|
||||
"components.MovieDetails.watchlistDeleted": "<strong>{title}</strong> is succesvol verwijderd van je kijklijst!",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> is succesvol toegevoegd aan je kijklijst!",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> is succesvol verwijderd van de kijklijst!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Geldig e-mailadres vereist",
|
||||
"components.Login.adminerror": "Je moet een beheerdersaccount gebruiken om je aan te melden.",
|
||||
"components.Selector.inProduction": "In productie",
|
||||
@@ -1312,7 +1319,7 @@
|
||||
"components.Login.validationUrlTrailingSlash": "URL mag niet eindigen met een schuine streep",
|
||||
"components.Login.validationservertyperequired": "Kies een servertype",
|
||||
"components.MovieDetails.removefromwatchlist": "Verwijderen van kijklijst",
|
||||
"components.MovieDetails.watchlistError": "Er is iets misgegaan. Probeer het opnieuw.",
|
||||
"components.MovieDetails.watchlistError": "Er is iets misgegaan, probeer het opnieuw.",
|
||||
"components.RequestList.RequestItem.profileName": "Profiel",
|
||||
"components.Selector.canceled": "Geannuleerd",
|
||||
"components.Selector.ended": "Afgelopen",
|
||||
@@ -1333,8 +1340,8 @@
|
||||
"components.Setup.subtitle": "Begin met het kiezen van je mediaserver",
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.TvDetails.removefromwatchlist": "Verwijderen uit kijklijst",
|
||||
"components.TvDetails.watchlistError": "Er is iets misgegaan. Probeer het opnieuw.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> is toegevoegd aan de kijklijst!",
|
||||
"components.TvDetails.watchlistError": "Er is iets misgegaan, probeer het opnieuw.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> is succesvol toegevoegd aan de kijklijst!",
|
||||
"components.UserList.username": "Gebruikersnaam",
|
||||
"components.UserList.validationUsername": "Je moet een gebruikersnaam opgeven",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "E-mailadres vereist",
|
||||
@@ -1344,11 +1351,12 @@
|
||||
"component.BlacklistBlock.blacklistdate": "Datum geblokkeerd",
|
||||
"components.Settings.scanbackground": "Het scannen gebeurt op de achtergrond. In de tussentijd kun je verdergaan met het instelproces.",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> staat niet op de blokkeerlijst.",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Je moet een geldige poort opgeven",
|
||||
"components.Layout.Sidebar.blacklist": "Blokkeerlijst",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Streamingdiensten tonen op regionale beschikbaarheid",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Toestemming geven om geblokkeerde media te beheren.",
|
||||
"components.RequestList.RequestItem.removearr": "Verwijderen van {arr}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Regio voor Ontdekken",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Regio voor ontdekken",
|
||||
"components.Settings.apiKey": "API-sleutel",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> is succesvol geblokkeerd.",
|
||||
"i18n.addToBlacklist": "Toevoegen aan blokkeerlijst",
|
||||
@@ -1378,112 +1386,22 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Regio voor streamen",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Deze e-mail is bezet!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Een andere gebruiker heeft deze gebruikersnaam al. Je moet een e-mail instellen",
|
||||
"i18n.blacklist": "Blokkeren",
|
||||
"i18n.blacklist": "Blokkeerlijst",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> staat al op de blokkeerlijst.",
|
||||
"i18n.blacklistError": "Er is iets misgegaan. Probeer het opnieuw.",
|
||||
"i18n.blacklistError": "Er ging iets mis; probeer opnieuw.",
|
||||
"i18n.blacklisted": "Geblokkeerd",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> is succesvol verwijderd van de blokkeerlijst.",
|
||||
"i18n.removefromBlacklist": "Verwijderen van blokkeerlijst",
|
||||
"i18n.specials": "Specials",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Plex-verversingstoken",
|
||||
"components.Settings.tip": "Tip",
|
||||
"components.Settings.SettingsNetwork.networkDisclaimer": "Gebruik de netwerkparameters van je container/systeem in plaats van deze instellingen. Zie de {docs} voor meer informatie.",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Aankomende series",
|
||||
"components.Settings.OverrideRuleModal.create": "Regel aanmaken",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadIdTip": "Als je groepschat topics heeft, kun je hier een thread-/topic-ID opgeven",
|
||||
"components.Settings.OverrideRuleModal.keywords": "Sleutelwoorden",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "Aanvragen voor speciale afleveringen toestaan",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "Schakel deze instelling NIET in tenzij je begrijpt wat je doet!",
|
||||
"components.Settings.SettingsNetwork.network": "Netwerk",
|
||||
"components.Login.loginwithapp": "Meld je aan met {appName}",
|
||||
"components.Settings.Notifications.messageThreadId": "Thread-/topic-ID",
|
||||
"components.Settings.OverrideRuleModal.settingsDescription": "Specificeert welke instellingen worden aangepast als aan bovenstaande voorwaarden wordt voldaan.",
|
||||
"components.Settings.addrule": "Nieuwe uitzonderingsregel",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnauthorized": "Het is niet gelukt om met je gegevens met {mediaServerName} te verbinden",
|
||||
"components.Settings.Notifications.messageThreadIdTip": "Als je groepschat topics heeft, kun je hier een thread-/topic-ID opgeven",
|
||||
"components.Settings.OverrideRuleModal.conditionsDescription": "Specificeert voorwaarden voor het toepassen van parameterveranderingen. Ieder veld moet gevalideerd worden om de regel toe te passen (EN-operatie). Een veld is geldig als een van de eigenschappen overeenkomen (OF-operatie).",
|
||||
"components.Selector.searchUsers": "Gebruikers selecteren…",
|
||||
"components.Settings.overrideRulesDescription": "Uitzonderingsregels laten je eigenschappen selecteren die worden vervangen als een aanvraag met de regel overeenkomt.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorUnauthorized": "Verbinden met Plex met je gegevens mislukt",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.description": "Voer je {mediaServerName}-gegevens in om je account aan {applicationName} te koppelen.",
|
||||
"components.Settings.Notifications.validationMessageThreadId": "De thread-/topic-ID moet een positief geheel getal zijn",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Gebruik ',' als scheidingsteken en '*.' als joker voor subdomeinen",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "Aanmelden met {mediaServerName} inschakelen",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccounts": "Gekoppelde accounts",
|
||||
"components.Settings.OverrideRuleModal.selectQualityProfile": "Kwaliteitsprofiel selecteren",
|
||||
"components.Settings.OverrideRuleTile.users": "Gebruikers",
|
||||
"components.Setup.librarieserror": "Validatie mislukt. Schakel de bibliotheken opnieuw in en uit om verder te gaan.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noPermissionDescription": "Je hebt geen toestemming om de gekoppelde accounts van deze gebruiker aan te passen.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadId": "Thread-/topic-ID",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorExists": "Dit account is al gekoppeld aan een {applicationName}-gebruiker",
|
||||
"components.Login.noadminerror": "Geen administratorgebruiker gevonden op de server.",
|
||||
"components.Login.orsigninwith": "Of meld je aan met",
|
||||
"components.Settings.OverrideRuleTile.tags": "Labels",
|
||||
"components.Settings.OverrideRuleModal.conditions": "Voorwaarden",
|
||||
"components.Settings.OverrideRuleModal.createrule": "Nieuwe uitzonderingsregel",
|
||||
"components.Settings.OverrideRuleModal.editrule": "Uitzonderingsregel bewerken",
|
||||
"components.Settings.OverrideRuleModal.genres": "Genres",
|
||||
"components.Settings.OverrideRuleModal.languages": "Talen",
|
||||
"components.Settings.OverrideRuleModal.notagoptions": "Geen labels.",
|
||||
"components.Settings.OverrideRuleModal.qualityprofile": "Kwaliteitsprofiel",
|
||||
"components.Settings.OverrideRuleModal.rootfolder": "Hoofdmap",
|
||||
"components.Settings.OverrideRuleModal.ruleCreated": "Uitzonderingsregel aangemaakt!",
|
||||
"components.Settings.OverrideRuleModal.ruleUpdated": "Uitzonderingsregel bijgewerkt!",
|
||||
"components.Settings.OverrideRuleModal.selectRootFolder": "Hoofdmap selecteren",
|
||||
"components.Settings.OverrideRuleModal.selectService": "Dienst selecteren",
|
||||
"components.Settings.OverrideRuleModal.selecttags": "Labels selecteren",
|
||||
"components.Settings.OverrideRuleModal.service": "Dienst",
|
||||
"components.Settings.OverrideRuleModal.serviceDescription": "Deze regel op de geselecteerde dienst toepassen.",
|
||||
"components.Settings.OverrideRuleModal.settings": "Instellingen",
|
||||
"components.Settings.OverrideRuleModal.tags": "Labels",
|
||||
"components.Settings.OverrideRuleModal.users": "Gebruikers",
|
||||
"components.Settings.OverrideRuleTile.conditions": "Voorwaarden",
|
||||
"components.Settings.OverrideRuleTile.genre": "Genre",
|
||||
"components.Settings.OverrideRuleTile.keywords": "Sleutelwoorden",
|
||||
"components.Settings.OverrideRuleTile.language": "Taal",
|
||||
"components.Settings.OverrideRuleTile.qualityprofile": "Kwaliteitsprofiel",
|
||||
"components.Settings.OverrideRuleTile.rootfolder": "Hoofdmap",
|
||||
"components.Settings.OverrideRuleTile.settings": "Instellingen",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "Geavanceerde netwerkinstellingen",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "CSRF-bescherming inschakelen",
|
||||
"components.Settings.SettingsNetwork.docs": "documentatie",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Stel externe API-toegang in op alleen-lezen (HTTPS vereist)",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Dwing Jellyseerr om eerst IPv4-addressen te herleiden, in plaats van IPv6",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Eerst IPv4 herleiden forceren",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Netwerkinstellingen",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "HTTP(S)-proxy",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Er is iets misgegaan bij het opslaan van de instellingen.",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Instellingen opgeslagen!",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Proxy-ondersteuning inschakelen",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "Je dient een geldige poort op te geven",
|
||||
"components.Settings.SettingsUsers.loginMethods": "Aanmeldmethodes",
|
||||
"components.Settings.SettingsUsers.loginMethodsTip": "Configureer aanmeldmethodes voor gebruikers.",
|
||||
"components.Settings.SettingsUsers.mediaServerLoginTip": "Sta gebruikers toe zich aan te melden met hun {mediaServerName}-account",
|
||||
"components.Settings.SettingsNetwork.networksettingsDescription": "Configureer de netwerkinstellingen van je Jellyseerr-instantie.",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilter": "Adressen genegeerd door proxy",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Proxy omzeilen voor lokale adressen",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "Proxy-hostnaam",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "Proxy-wachtwoord",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "Proxy-poort",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "SSL gebruiken voor proxy",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "Proxy-gebruikersnaam",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Stelt Jellyseerr in staat om IP-adressen van clënten achter een proxy juist te registreren",
|
||||
"components.Settings.SettingsUsers.atLeastOneAuth": "Er dient ten minste één authenticatiemethode te worden geselecteerd.",
|
||||
"components.Settings.menuNetwork": "Netwerk",
|
||||
"components.Settings.overrideRules": "Uitzonderingsregels",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnknown": "Er is een onbekende fout opgetreden",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.password": "Wachtwoord",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.passwordRequired": "Je dient een wachtwoord op te geven",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.save": "Koppelen",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.saving": "Toevoegen…",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.title": "{mediaServerName}-account koppelen",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.username": "Gebruikersnaam",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.usernameRequired": "Je dient een gebruikersnaam op te geven",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.deleteFailed": "Gekoppeld account verwijderen mislukt.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.errorUnknown": "Er is een onbekende fout opgetreden",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccountsHint": "Deze externe accounts zijn gekoppeld aan je {applicationName}-account.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noLinkedAccounts": "Er zijn geen externe accounts aan je account gekoppeld.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorExists": "Dit account is al gekoppeld aan een Plex-gebruiker",
|
||||
"components.UserProfile.UserSettings.menuLinkedAccounts": "Gekoppelde accounts",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramMessageThreadId": "Het thread-/topic-ID dient een positief geheel getal te zijn"
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "Genegeerde proxy-adressen",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Gebruik ',' als scheidingsteken en '*' als joker voor subdomeinen",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Proxy omzeilen voor lokale adressen",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S)-proxy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Hostnaam proxy",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Wachtwoord proxy",
|
||||
"components.Settings.SettingsMain.proxyPort": "Proxypoort",
|
||||
"components.Settings.SettingsMain.proxySsl": "SSL/TLS gebruiken voor proxy",
|
||||
"components.Settings.SettingsMain.proxyUser": "Gebruikersnaam proxy",
|
||||
"components.Settings.tip": "Tip"
|
||||
}
|
||||
|
||||
@@ -175,6 +175,8 @@
|
||||
"components.PermissionEdit.requestTvDescription": "Udziel pozwolenia na przesyłanie próśb o seriale inne niż 4K.",
|
||||
"components.PersonDetails.appearsin": "Wystąpienia",
|
||||
"components.PersonDetails.alsoknownas": "Znany również jako: {names}",
|
||||
"components.PlexLoginButton.signingin": "Logowanie…",
|
||||
"components.PlexLoginButton.signinwithplex": "Zaloguj się",
|
||||
"components.PermissionEdit.viewissuesDescription": "Przyznaj uprawnienia do przeglądania problemów z multimediami zgłoszonych przez innych użytkowników.",
|
||||
"components.QuotaSelector.unlimited": "Bez ograniczeń",
|
||||
"components.RegionSelector.regionDefault": "Wszystkie regiony",
|
||||
@@ -435,7 +437,7 @@
|
||||
"components.RequestList.requests": "Prośby",
|
||||
"components.RequestModal.AdvancedRequester.animenote": "* Ta seria to anime.",
|
||||
"components.RequestModal.AdvancedRequester.requestas": "Poproś jako",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Brak} other {<strong>#</strong>}} {type} {remaining, plural, one {żądanie} other {żądań}} pozostało",
|
||||
"components.RequestModal.QuotaDisplay.requestsremaining": "{remaining, plural, =0 {Brak} other {<strong>#</strong>}} {type} {remaining, plural, one {prośba} other {próśb}} remaining",
|
||||
"components.RequestModal.QuotaDisplay.requiredquota": "Aby przesłać prośbę o ten serial, musisz mieć co najmniej <strong>{seasons}</strong> {seasons, plural, one {prośbę} other {prośby}}.",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequests": "Możesz przesyłać<strong>{limit}</strong> próśb {type} co <strong>{days}</strong> dni.",
|
||||
"components.RequestModal.QuotaDisplay.allowedRequestsUser": "Ten użytkownik może przeysłać <strong>{limit}</strong> próśb {type} co <strong>{days}</strong> dni.",
|
||||
@@ -1152,6 +1154,9 @@
|
||||
"components.Settings.SettingsMain.apikey": "Klucz API",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Nazwa aplikacji",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL aplikacji",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Włącz ochronę CSRF",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NIE włączaj tego ustawienia, jeśli nie rozumiesz, co robisz!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Ustawienie dostępu do zewnętrznego API tylko do odczytu (wymaga HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Ogólne",
|
||||
"components.Settings.SettingsMain.generalsettings": "Ustawienia ogólne",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Konfiguracja globalnych i domyślnych ustawień Jellyseerr.",
|
||||
@@ -1159,6 +1164,7 @@
|
||||
"components.Settings.SettingsMain.locale": "Wyświetlany język",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Zezwalaj na częściowe żądania seriali",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Coś poszło nie tak podczas zapisywania ustawień.",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Umożliwienie Jellyseerr poprawnego rejestrowania adresów IP klientów za serwerem proxy",
|
||||
"components.Settings.jellyfinSettings": "{mediaServerName} Ustawienia",
|
||||
"components.Settings.jellyfinSettingsFailure": "Coś poszło nie tak podczas zapisywania ustawień {mediaServerName}.",
|
||||
"components.Settings.jellyfinSettingsSuccess": "Ustawienia {mediaServerName} zostały pomyślnie zapisane!",
|
||||
@@ -1290,6 +1296,7 @@
|
||||
"components.Settings.SettingsMain.originallanguage": "Język funkcji Odkryj",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Coś poszło nie tak w trakcie generowania nowego klucza API.",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nowy klucz API został pomyślnie wygenerowany!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Włącz wsparcie Proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Musisz podać poprawny adres URL",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "Adres URL nie może kończyć się ukośnikiem",
|
||||
"components.Settings.SonarrModal.tagRequests": "Żądania tagów",
|
||||
@@ -1342,6 +1349,7 @@
|
||||
"components.Discover.tmdbtvstreamingservices": "Telewizyjne usługi strumieniowe TMDB",
|
||||
"component.BlacklistBlock.blacklistdate": "Data umieszczenia na czarnej liście",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb Id",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Musisz podać prawidłowy port",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> nie znajduje się na czarnej liście.",
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "Identyfikator roli do wskazania w wiadomości webhook. Pozostaw puste, aby wyłączyć wzmianki",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Awatary użytkowników",
|
||||
|
||||
@@ -336,7 +336,9 @@
|
||||
"components.Settings.serverRemote": "remoto",
|
||||
"components.Settings.serverLocal": "local",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Configure e habilite agentes de notificação.",
|
||||
"components.PlexLoginButton.signinwithplex": "Entrar",
|
||||
"components.Login.signingin": "Autenticando…",
|
||||
"components.PlexLoginButton.signingin": "Autenticando…",
|
||||
"components.PermissionEdit.usersDescription": "Concede permissão para gerenciar usuários. Usuários com essa permissão não podem modificar usuários com acesso Administrativo, ou condecer tal permissão.",
|
||||
"components.PermissionEdit.users": "Gerenciar Usuários",
|
||||
"components.PermissionEdit.requestDescription": "Concede permissão para solicitar mídia não 4K.",
|
||||
@@ -1067,7 +1069,10 @@
|
||||
"components.Discover.networks": "Emissora",
|
||||
"components.Discover.studios": "Estúdios",
|
||||
"components.Settings.SettingsMain.apikey": "Chave de API",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Habilitar Proteção Contra CSRF",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Armazenar em cache imagens de origem externa (requer uma quantidade significativa de espaço em disco)",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NÃO habilite esta configuração a menos que você entenda o que está fazendo!",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Define acesso externo à API como apenas leitura (Requer HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Geral",
|
||||
"components.Settings.SettingsMain.generalsettings": "Configurações Gerais",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Algo de errado ao salvar configurações.",
|
||||
@@ -1121,6 +1126,7 @@
|
||||
"components.Discover.CreateSlider.nooptions": "Sem resultados.",
|
||||
"components.Selector.nooptions": "Sem resultados.",
|
||||
"components.Discover.CreateSlider.providetmdbkeywordid": "Forneça um ID de palavra-chave do TMDB",
|
||||
"components.Settings.SettingsMain.trustProxy": "Habilitar Suporte a Proxy",
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Forneça um dado para pesquisa",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Forneça o ID do estúdio no TMDB",
|
||||
"components.Discover.CreateSlider.providetmdbnetwork": "Forneça o ID de emissora do TMDB",
|
||||
@@ -1187,6 +1193,7 @@
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Permitir Solicitações Parciais de Séries",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Algo deu errado ao gerar a nova chave de API.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Configurações salvas com sucesso!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permite que Jellyseerr exiba o IP real do cliente atrás de um proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "A URL não deve terminar com uma barra",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Você deve prover um título para a aplicação",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Você deve prover uma URL válida",
|
||||
|
||||
@@ -325,6 +325,8 @@
|
||||
"components.Login.signingin": "A Iniciar Sessão…",
|
||||
"components.Login.signin": "Iniciar Sessão",
|
||||
"components.Settings.notificationAgentSettingsDescription": "Configurar e ativar agentes de notificação.",
|
||||
"components.PlexLoginButton.signinwithplex": "Iniciar Sessão",
|
||||
"components.PlexLoginButton.signingin": "A Iniciar Sessão…",
|
||||
"components.UserList.userssaved": "Permissões de utilizador gravadas com sucesso!",
|
||||
"components.UserList.bulkedit": "Edição em Massa",
|
||||
"components.Settings.toastPlexRefreshSuccess": "Lista de servidores Plex obtida com sucesso!",
|
||||
@@ -1072,6 +1074,7 @@
|
||||
"components.Settings.SettingsJobsCache.editJobSchedulePrompt": "Nova Frequência",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Tamanho Total do Cache",
|
||||
"components.Settings.SettingsMain.apikey": "Chave de API",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "NÃO ative esta configuração a menos que entenda o que faz!",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Defina configurações globais e padrões para o Jellyseerr.",
|
||||
"components.TvDetails.episodeCount": "{episodeCount, plural, one {# Espisódio} other {# Episódios}}",
|
||||
"components.Discover.CreateSlider.needresults": "Precisa ter ao menos 1 resultado.",
|
||||
@@ -1134,6 +1137,8 @@
|
||||
"components.Settings.SettingsMain.applicationurl": "URL da Aplicação",
|
||||
"components.Settings.SettingsMain.cacheImages": "Ativar Cache de Imagens",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Armazenar em cache imagens de origem externa (requer uma quantidade significativa de espaço em disco)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Ativar Proteção Contra CSRF",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Define acesso externo à API como apenas leitura (Requer HTTPS)",
|
||||
"components.Settings.SettingsMain.general": "Geral",
|
||||
"components.Settings.SettingsMain.generalsettings": "Configurações Gerais",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Ocultar Títulos Disponíveis",
|
||||
@@ -1145,8 +1150,10 @@
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Nova chave de API gerada com sucesso!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Algo de errado ao gravar configurações.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Configurações salvas com sucesso!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Ativar Suporte a Proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Deve prover um título para a aplicação",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Deve prover uma URL válida",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Permite que Jellyseerr exiba o IP real do cliente atrás de um proxy",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "A URL não deve terminar com uma barra",
|
||||
"components.StatusBadge.seasonepisodenumber": "S{seasonNumber}E{episodeNumber}",
|
||||
"components.TvDetails.Season.noepisodes": "Lista de episódios indisponível.",
|
||||
|
||||
@@ -364,6 +364,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.originallanguage": "Limbă Descoperire",
|
||||
"components.Settings.SettingsMain.originallanguage": "Limbă Descoperire",
|
||||
"components.PermissionEdit.usersDescription": "Acordați permisiunea de a gestiona utilizatorii. Utilizatorii cu această permisiune nu pot modifica utilizatorii cu sau acorda privilegiul de administrator.",
|
||||
"components.PlexLoginButton.signinwithplex": "Conectat",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} per {quotaDays} {days}</quotaUnits>",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.RequestBlock.seasons": "{seasonCount, plural, un {Season} alte {Seasons}}",
|
||||
@@ -382,6 +383,7 @@
|
||||
"components.PersonDetails.appearsin": "Aparențe",
|
||||
"components.PersonDetails.crewmember": "Echipa",
|
||||
"components.PersonDetails.birthdate": "Născut {birthdate}",
|
||||
"components.PlexLoginButton.signingin": "Conectare…",
|
||||
"components.QuotaSelector.movies": "{count, plural, un {movie} alte {movies}}",
|
||||
"components.QuotaSelector.tvRequests": "{quotaLimit} <quotaUnits>{seasons} per {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.unlimited": "Nelimitat",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"components.Discover.popularmovies": "Популярные фильмы",
|
||||
"components.Discover.populartv": "Популярные сериалы",
|
||||
"components.Discover.recentlyAdded": "Недавно добавлено",
|
||||
"components.Discover.recentlyAdded": "Недавно добавленные",
|
||||
"components.Discover.recentrequests": "Последние запросы",
|
||||
"components.Discover.trending": "В трендах",
|
||||
"components.Discover.upcoming": "Предстоящие фильмы",
|
||||
@@ -130,7 +130,7 @@
|
||||
"components.Setup.continue": "Продолжить",
|
||||
"components.Setup.finish": "Завершить настройку",
|
||||
"components.Setup.finishing": "Завершение…",
|
||||
"components.Setup.signinMessage": "Начните со входа в систему",
|
||||
"components.Setup.signinMessage": "Начните с входа в систему с помощью учётной записи Plex",
|
||||
"components.Setup.welcome": "Добро пожаловать в Jellyseerr",
|
||||
"components.TvDetails.cast": "В ролях",
|
||||
"components.TvDetails.originallanguage": "Язык оригинала",
|
||||
@@ -291,6 +291,7 @@
|
||||
"components.RequestList.RequestItem.deleterequest": "Удалить запрос",
|
||||
"components.RequestList.RequestItem.cancelRequest": "Отменить запрос",
|
||||
"components.RequestCard.deleterequest": "Удалить запрос",
|
||||
"components.PlexLoginButton.signinwithplex": "Войти",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PersonDetails.alsoknownas": "Также известен(а) как: {names}",
|
||||
"components.NotificationTypeSelector.notificationTypes": "Типы уведомлений",
|
||||
@@ -309,7 +310,7 @@
|
||||
"components.Discover.DiscoverStudio.studioMovies": "Фильмы {studio}",
|
||||
"components.Discover.DiscoverMovieLanguage.languageMovies": "Фильмы на языке \"{language}\"",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "Фильмы в жанре \"{genre}\"",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "О Jellyseerr",
|
||||
"components.Settings.SettingsAbout.overseerrinformation": "Об Jellyseerr",
|
||||
"components.Settings.SettingsAbout.githubdiscussions": "Обсуждения на GitHub",
|
||||
"components.Settings.enablessl": "Использовать SSL",
|
||||
"components.Settings.is4k": "4К",
|
||||
@@ -344,7 +345,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.user": "Пользователь",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.role": "Роль",
|
||||
"components.Settings.webhook": "Веб-перехватчик",
|
||||
"components.Setup.setup": "Первоначальная настройка",
|
||||
"components.Setup.setup": "Настройки",
|
||||
"components.Settings.SettingsJobsCache.process": "Процесс",
|
||||
"components.Settings.SettingsJobsCache.command": "Команда",
|
||||
"components.Settings.SettingsJobsCache.jobtype": "Тип",
|
||||
@@ -430,6 +431,7 @@
|
||||
"components.QuotaSelector.unlimited": "Неограниченно",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{фильмов} за {quotaDays} {дней}</quotaUnits>",
|
||||
"components.QuotaSelector.days": "{count, plural, one {день} other {дней}}",
|
||||
"components.PlexLoginButton.signingin": "Выполняется вход…",
|
||||
"components.PersonDetails.birthdate": "Рожден(а) {birthdate}",
|
||||
"components.PermissionEdit.viewrequestsDescription": "Предоставить разрешение на просмотр медиа-запросов, отправленных другими пользователями.",
|
||||
"components.PermissionEdit.usersDescription": "Предоставить разрешение на управление пользователями. Пользователи с этим разрешением не могут предоставлять права администратора и редактировать пользователей, являющихся администраторами.",
|
||||
@@ -485,7 +487,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSuccess": "Тестовое веб-push-уведомление отправлено!",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestSending": "Отправка тестового веб-push-уведомления…",
|
||||
"components.Settings.Notifications.NotificationsWebPush.toastWebPushTestFailed": "Не удалось отправить тестовое веб-push-уведомление.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Чтобы получать push-уведомления, Jellyseerr должен работать через протокол HTTPS.",
|
||||
"components.Settings.Notifications.NotificationsWebPush.httpsRequirement": "Чтобы получать веб-push-уведомления, Jellyseerr должен обслуживаться по протоколу HTTPS.",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrlTip": "Создайте интеграцию <WebhookLink>входящего веб-перехватчика</WebhookLink>",
|
||||
"components.Settings.Notifications.NotificationsSlack.webhookUrl": "URL веб-перехватчика",
|
||||
"components.Settings.Notifications.NotificationsSlack.toastSlackTestSuccess": "Тестовое уведомление отправлено в Slack!",
|
||||
@@ -510,7 +512,7 @@
|
||||
"components.Settings.Notifications.NotificationsPushover.accessTokenTip": "<ApplicationRegistrationLink>Зарегистрируйте приложение</ApplicationRegistrationLink> для использования с Jellyseerr",
|
||||
"i18n.view": "Посмотреть",
|
||||
"i18n.notrequested": "Не запрошен",
|
||||
"i18n.noresults": "Нет результатов.",
|
||||
"i18n.noresults": "Результатов нет.",
|
||||
"i18n.delimitedlist": "{a}, {b}",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrl": "URL веб-перехватчика",
|
||||
"components.Settings.Notifications.NotificationsLunaSea.webhookUrlTip": "<LunaSeaLink>URL веб-перехватчика для уведомлений</LunaSeaLink> на основе вашего пользователя или устройства",
|
||||
@@ -580,7 +582,7 @@
|
||||
"components.UserList.localLoginDisabled": "Параметр <strong>Включить локальный вход</strong> в настоящее время отключен.",
|
||||
"components.Settings.SettingsLogs.showall": "Показать все логи",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.seriesrequestlimit": "Ограничение количества запросов на сериалы",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Фильтровать контент по региональной доступности",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.regionTip": "Контент фильтруется по доступности в выбранном регионе",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.movierequestlimit": "Ограничение количества запросов на фильмы",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.enableOverride": "Переопределить глобальные ограничения",
|
||||
"components.Settings.noDefaultServer": "По крайней мере один сервер {serverType} должен быть помечен как сервер по умолчанию для обработки запросов на {mediaType}ы.",
|
||||
@@ -602,7 +604,7 @@
|
||||
"components.Settings.SettingsUsers.newPlexLoginTip": "Разрешить пользователям {mediaServerName} входить в систему без предварительного импорта",
|
||||
"components.Settings.SettingsUsers.newPlexLogin": "Включить вход через {mediaServerName} для новых пользователей",
|
||||
"components.Settings.SettingsUsers.movieRequestLimitLabel": "Общее ограничение на количество запросов фильмов",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Разрешить пользователям входить в систему, используя свой адрес электронной почты и пароль",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Разрешить пользователям входить в систему, используя свой адрес электронной почты и пароль вместо Plex OAuth",
|
||||
"components.Settings.SettingsUsers.localLogin": "Включить локальный вход",
|
||||
"components.Settings.SettingsUsers.defaultPermissionsTip": "Начальные разрешения, присваемые новым пользователям",
|
||||
"components.Settings.SettingsUsers.defaultPermissions": "Разрешения по умолчанию",
|
||||
@@ -636,7 +638,7 @@
|
||||
"components.Settings.SettingsAbout.Releases.versionChangelog": "Изменения в версии {version}",
|
||||
"components.Settings.SettingsAbout.preferredmethod": "Предпочтительный способ",
|
||||
"components.Settings.SettingsJobsCache.cacheflushed": "{cachename} кэш сброшен.",
|
||||
"components.Settings.SettingsJobsCache.cacheDescription": "Jellyseerr кэширует запросы к внешним API, чтобы оптимизировать производительность и избежать ненужных запросов к API.",
|
||||
"components.Settings.SettingsJobsCache.cacheDescription": "Jellyseerr кэширует запросы к внешним конечным точкам API, чтобы оптимизировать производительность и избежать ненужных вызовов API.",
|
||||
"components.Settings.SettingsAbout.totalmedia": "Всего мультимедиа",
|
||||
"components.Settings.SettingsAbout.outofdate": "Устарела",
|
||||
"components.Settings.SettingsAbout.helppaycoffee": "Помочь оплатить кофе",
|
||||
@@ -650,7 +652,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramChatId": "Вы должны предоставить действительный ID чата",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationPgpPublicKey": "Вы должны предоставить действительный открытый ключ PGP",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationDiscordId": "Вы должны предоставить действительный ID пользователя",
|
||||
"components.UserList.validationEmail": "Email обязателен",
|
||||
"components.UserList.validationEmail": "Вы должны указать действительный адрес электронной почты",
|
||||
"components.UserList.usercreatedfailedexisting": "Указанный адрес электронной почты уже используется другим пользователем.",
|
||||
"components.TvDetails.streamingproviders": "Сейчас транслируется",
|
||||
"components.Settings.validationPortRequired": "Вы должны указать действительный номер порта",
|
||||
@@ -762,7 +764,7 @@
|
||||
"components.UserList.autogeneratepassword": "Сгенерировать пароль автоматически",
|
||||
"components.UserList.accounttype": "Тип",
|
||||
"components.TvDetails.nextAirDate": "Следующая дата выхода в эфир",
|
||||
"components.TvDetails.firstAirDate": "Дата выхода в эфир",
|
||||
"components.TvDetails.firstAirDate": "Дата первого эфира",
|
||||
"components.TvDetails.episodeRuntimeMinutes": "{runtime} минут",
|
||||
"components.TvDetails.episodeRuntime": "Продолжительность эпизода",
|
||||
"components.Settings.webpush": "Веб-push",
|
||||
@@ -780,7 +782,7 @@
|
||||
"components.Settings.serverRemote": "удалённый",
|
||||
"components.Settings.serverLocal": "локальный",
|
||||
"components.Settings.scan": "Синхронизировать библиотеки",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Вы также можете просматривать эти логи напрямую через <code>stdout</code> или в <code>{appDataPath}/logs/jellyseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Вы также можете просматривать эти логи напрямую через <code>stdout</code> или в <code>{appDataPath}/logs/overseerr.log</code>.",
|
||||
"components.Settings.SettingsLogs.logs": "Логи",
|
||||
"components.Settings.SettingsLogs.logDetails": "Подробные сведения о логе",
|
||||
"components.Settings.SettingsLogs.copiedLogMessage": "Сообщение лога скопировано в буфер обмена.",
|
||||
@@ -955,7 +957,7 @@
|
||||
"components.NotificationTypeSelector.mediaautorequested": "Запрос отправлен автоматически",
|
||||
"components.PermissionEdit.autorequestMovies": "Авто запрос фильмов",
|
||||
"components.PermissionEdit.autorequestMoviesDescription": "Предоставить разрешение на автоматическое одобрение медиа-запросов фильмов, отличных от 4К, через список просмотра Plex.",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Ваш список просмотра",
|
||||
"components.Discover.PlexWatchlistSlider.plexwatchlist": "Ваш список просмотра Plex",
|
||||
"components.Discover.moviegenres": "Жанры фильма",
|
||||
"components.Discover.studios": "Студии",
|
||||
"components.Discover.networks": "Телеканалы",
|
||||
@@ -966,7 +968,7 @@
|
||||
"components.PermissionEdit.viewrecentDescription": "Предоставить разрешение на просмотр списка недавно добавленных медиафайлов.",
|
||||
"components.PermissionEdit.viewrecent": "Просмотр недавно добавленного",
|
||||
"components.PermissionEdit.viewwatchlists": "Просмотр списков просмотра Plex",
|
||||
"components.Discover.plexwatchlist": "Ваш список просмотра",
|
||||
"components.Discover.plexwatchlist": "Ваш список просмотра Plex",
|
||||
"components.Discover.CreateSlider.editSlider": "Редактировать слайдер",
|
||||
"components.Discover.CreateSlider.addSlider": "Добавить слайдер",
|
||||
"components.Discover.CreateSlider.addcustomslider": "Создать слайдер",
|
||||
@@ -978,10 +980,10 @@
|
||||
"components.Discover.CreateSlider.providetmdbsearch": "Введите поисковой запрос",
|
||||
"components.Discover.CreateSlider.providetmdbstudio": "Введите TMDB ID студии",
|
||||
"components.Discover.CreateSlider.searchGenres": "Поиск жанров…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Ключевые слова для поиска…",
|
||||
"components.Discover.CreateSlider.searchKeywords": "Поиск ключевых слов…",
|
||||
"components.Discover.CreateSlider.searchStudios": "Поиск студий…",
|
||||
"components.Discover.CreateSlider.slidernameplaceholder": "Название слайдера",
|
||||
"components.Discover.CreateSlider.starttyping": "Начните ввод для поиска.",
|
||||
"components.Discover.CreateSlider.starttyping": "Начините писать для поиска.",
|
||||
"components.Discover.CreateSlider.validationDatarequired": "Вы должны ввести дату.",
|
||||
"components.Discover.CreateSlider.validationTitlerequired": "Вы должны ввести заголовок.",
|
||||
"components.Discover.DiscoverMovieKeyword.keywordMovies": "Фильмы по ключевому слову \"{keywordTitle}\"",
|
||||
@@ -990,7 +992,7 @@
|
||||
"components.Discover.CreateSlider.editsuccess": "Слайдер отредактирован и настройки кастомизации сохранены.",
|
||||
"components.Discover.CreateSlider.addsuccess": "Новый слайдер создан и настройки кастомизации сохранены.",
|
||||
"components.Discover.DiscoverWatchlist.watchlist": "Список просмотра Plex",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Здесь будут отображаться медиаданные, добавленные в ваш <PlexWatchlistSupportLink>список просмотра Plex</PlexWatchlistSupportLink>.",
|
||||
"components.Discover.PlexWatchlistSlider.emptywatchlist": "Добавлено в ваш <PlexWatchlistSupportLink>Список просмотра Plex</PlexWatchlistSupportLink>.",
|
||||
"components.Layout.Sidebar.browsetv": "Сериалы",
|
||||
"components.Discover.tvgenres": "Жанры сериалов",
|
||||
"components.Layout.UserDropdown.requests": "Запросы",
|
||||
@@ -1017,19 +1019,19 @@
|
||||
"components.Discover.DiscoverTv.discovertv": "Сериалы",
|
||||
"components.Discover.DiscoverTv.sortPopularityAsc": "Популярность по возрастанию",
|
||||
"components.Discover.DiscoverTv.sortPopularityDesc": "Популярность по убыванию",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Название (A-Z) по возрастанию",
|
||||
"components.Discover.DiscoverTv.sortTitleAsc": "Название (Z-A) По возрастанию",
|
||||
"components.Discover.DiscoverTv.sortTitleDesc": "Название (Z-A) По убыванию",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingAsc": "Рейтинг TMDB по возрастанию",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "Рейтинг TMDB по убыванию",
|
||||
"components.Discover.DiscoverTvKeyword.keywordSeries": "Сериалы по ключевому слову \"{keywordTitle}\"",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Ваш список просмотра",
|
||||
"components.Discover.DiscoverWatchlist.discoverwatchlist": "Ваш список просмотра Plex",
|
||||
"components.Discover.FilterSlideover.activefilters": "{count, plural, one {# Активный фильтр} other {# Активные фильтры}}",
|
||||
"components.Discover.FilterSlideover.clearfilters": "Очистить все активные фильтры",
|
||||
"components.Discover.FilterSlideover.filters": "Фильтры",
|
||||
"components.Discover.FilterSlideover.genres": "Жанры",
|
||||
"components.Discover.FilterSlideover.keywords": "Ключевые слова",
|
||||
"components.Discover.FilterSlideover.from": "От",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Язык оригинала",
|
||||
"components.Discover.FilterSlideover.originalLanguage": "Оригинальный язык",
|
||||
"components.Discover.FilterSlideover.ratingText": "Рейтинг с {minValue} до {maxValue}",
|
||||
"components.Discover.FilterSlideover.releaseDate": "Дата релиза",
|
||||
"components.Discover.FilterSlideover.runtime": "Длительность",
|
||||
@@ -1041,7 +1043,7 @@
|
||||
"components.Discover.tmdbnetwork": "Телеканал TMDB",
|
||||
"components.Layout.UserDropdown.MiniQuotaDisplay.movierequests": "Запросы фильмов",
|
||||
"components.DownloadBlock.formattedTitle": "{title}: Сезон {seasonNumber} Эпизод {episodeNumber}",
|
||||
"components.Discover.emptywatchlist": "Здесь будут отображаться медиаданные, добавленные в ваш <PlexWatchlistSupportLink>список просмотра Plex</PlexWatchlistSupportLink>.",
|
||||
"components.Discover.emptywatchlist": "Добавлено в ваш <PlexWatchlistSupportLink>Список просмотра Plex</PlexWatchlistSupportLink>.",
|
||||
"components.Discover.FilterSlideover.streamingservices": "Стриминговые сервисы",
|
||||
"components.Discover.RecentlyAddedSlider.recentlyAdded": "Недавно добавлено",
|
||||
"components.Discover.createnewslider": "Создать новый слайдер",
|
||||
@@ -1071,10 +1073,12 @@
|
||||
"components.MovieDetails.digitalrelease": "Цифровой релиз",
|
||||
"components.MovieDetails.physicalrelease": "Физический релиз",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Что-то пошло не так при сохранении настроек.",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Разрешить Jellyseerr правильно регистрировать IP-адреса клиентов за прокси-сервером",
|
||||
"components.Settings.experimentalTooltip": "Включение этого параметра может привести к неожиданному поведению приложения",
|
||||
"components.Settings.advancedTooltip": "Неправильная настройка этого параметра может привести к нарушению функциональности",
|
||||
"components.Settings.externalUrl": "Внешний URL-адрес",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL приложения",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Не включайте этот параметр, если вы не понимаете, что делаете!",
|
||||
"components.Settings.urlBase": "Базовый URL-адрес",
|
||||
"components.RequestCard.tmdbid": "TMDB ID",
|
||||
"components.RequestCard.tvdbid": "TheTVDB ID",
|
||||
@@ -1104,7 +1108,7 @@
|
||||
"components.StatusChecker.reloadApp": "Перезагрузить {applicationTitle}",
|
||||
"components.TvDetails.manageseries": "Управление сериалом",
|
||||
"components.TvDetails.reportissue": "Сообщить о проблеме",
|
||||
"components.TvDetails.tmdbuserscore": "Рейтинг пользователей TMDB",
|
||||
"components.TvDetails.tmdbuserscore": "Рейтинг TMDB",
|
||||
"components.UserProfile.emptywatchlist": "Здесь будут отображаться медиаданные, добавленные в ваш <PlexWatchlistSupportLink>список просмотра Plex</PlexWatchlistSupportLink>.",
|
||||
"components.UserProfile.recentlywatched": "Недавно просмотренные",
|
||||
"i18n.importing": "Импорт…",
|
||||
@@ -1122,9 +1126,12 @@
|
||||
"components.Settings.SettingsJobsCache.plex-watchlist-sync": "Синхронизация списка просмотра Plex",
|
||||
"components.Settings.SettingsMain.applicationTitle": "Название приложения",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "Кэшировать изображения из внешних источников (требуется значительный объем дискового пространства)",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Включить CSRF защиту",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Установите доступ к внешнему API только для чтения (требуется HTTPS)",
|
||||
"components.Settings.SettingsMain.partialRequestsEnabled": "Разрешить запрашивать сериалы частично",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Новый ключ API успешно сгенерирован!",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Настройки успешно сохранены!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Включить поддержку прокси",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Вы должны указать название приложения",
|
||||
"components.Settings.deleteServer": "Удалить сервер {serverType}",
|
||||
"components.Settings.tautulliApiKey": "Ключ API",
|
||||
@@ -1146,7 +1153,7 @@
|
||||
"components.RequestBlock.requestdate": "Дата запроса",
|
||||
"components.RequestList.RequestItem.tvdbid": "TheTVDB ID",
|
||||
"components.RequestList.RequestItem.unknowntitle": "Неизвестный заголовок",
|
||||
"components.RequestModal.requestcollectiontitle": "Запросить Коллекцию",
|
||||
"components.RequestModal.requestcollectiontitle": "Список запросов",
|
||||
"components.RequestModal.requestmovie4ktitle": "Запросить фильм в 4К",
|
||||
"components.RequestModal.requestmovietitle": "Запросить фильм",
|
||||
"components.RequestModal.requestseriestitle": "Запросить сериал",
|
||||
@@ -1166,8 +1173,8 @@
|
||||
"components.Settings.SettingsMain.hideAvailable": "Скрыть доступные медиа",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Что-то пошло не так при создании нового ключа API.",
|
||||
"components.Settings.SettingsMain.locale": "Язык приложения",
|
||||
"components.Settings.SettingsMain.originallanguage": "Языки для поиска фильмов и сериалов",
|
||||
"components.Settings.tautulliSettingsDescription": "При желании настройте параметры для вашего сервера Tautulli. Jellyseerr получает историю просмотров Plex из Tautulli.",
|
||||
"components.Settings.SettingsMain.originallanguage": "Регион поиска",
|
||||
"components.Settings.tautulliSettingsDescription": "При желании настройте параметры для вашего сервера Tautulli. Jellyseerr извлекает данные истории просмотров Plex из Tautulli.",
|
||||
"components.Settings.toastTautulliSettingsFailure": "Что-то пошло не так при сохранении настроек Tautulli.",
|
||||
"components.Settings.toastTautulliSettingsSuccess": "Настройки Tautulli успешно сохранены!",
|
||||
"components.Settings.validationUrlBaseTrailingSlash": "База URL не должна заканчиваться косой чертой",
|
||||
@@ -1199,7 +1206,7 @@
|
||||
"components.RequestBlock.requestedby": "Запрос от",
|
||||
"components.RequestCard.approverequest": "Одобрить запрос",
|
||||
"components.RequestCard.unknowntitle": "Неизвестный заголовок",
|
||||
"components.RequestModal.requestcollection4ktitle": "Запросить Коллекцию в 4К",
|
||||
"components.RequestModal.requestcollection4ktitle": "Список запросов 4K",
|
||||
"components.Selector.showless": "Показать меньше",
|
||||
"components.Selector.showmore": "Показать больше",
|
||||
"components.Settings.SettingsJobsCache.imagecachesize": "Размер кэша",
|
||||
@@ -1255,7 +1262,7 @@
|
||||
"components.Settings.jellyfinsettings": "Настройки {mediaServerName}",
|
||||
"components.Settings.SonarrModal.tagRequestsInfo": "Автодобавление тега с именем и ID пользователя, отправившего запрос",
|
||||
"components.Settings.jellyfinSettings": "Настройки {mediaServerName}",
|
||||
"components.Settings.jellyfinSettingsDescription": "Необязательно настраивать внутреннюю и внешнюю конечные точки для вашего сервера {mediaServerName}. В большинстве случаев внешний URL-адрес отличается от внутреннего. Пользовательский URL-адрес для сброса пароля также может быть задан для входа в систему {mediaServerName}, на случай, если вы хотите перенаправить на другую страницу для сброса пароля. Вы также можете изменить API-ключ от Jellyfin, который был автоматически сгенерирован ранее.",
|
||||
"components.Settings.jellyfinSettingsDescription": "Необязательно настраивать внутреннюю и внешнюю конечные точки для вашего сервера {mediaServerName}. В большинстве случаев внешний URL-адрес отличается от внутреннего. Пользовательский URL-адрес для сброса пароля также может быть задан для входа в систему {mediaServerName}, на случай, если вы хотите перенаправить на другую страницу для сброса пароля.",
|
||||
"components.Settings.jellyfinsettingsDescription": "Настройте свой {mediaServerName} сервер. {mediaServerName} отсканирует ваши библиотеки, чтобы увидеть, какие библиотеки доступны.",
|
||||
"components.Settings.manualscanJellyfin": "Сканировать библиотеки вручную",
|
||||
"components.Settings.menuJellyfinSettings": "{mediaServerName}",
|
||||
@@ -1263,9 +1270,9 @@
|
||||
"components.Settings.syncing": "Синхронизация",
|
||||
"components.Settings.timeout": "Время ожидания",
|
||||
"components.Setup.signin": "Войти",
|
||||
"components.Setup.signinWithPlex": "Введите данные своего Plex",
|
||||
"components.Setup.signinWithPlex": "Используйте свой Plex аккаунт",
|
||||
"components.TitleCard.watchlistDeleted": "<strong>{title}</strong> успешно удален из списка наблюдения!",
|
||||
"components.TitleCard.watchlistError": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.",
|
||||
"components.TitleCard.watchlistError": "Что-то пошло не так, попробуйте еще раз.",
|
||||
"components.TvDetails.play": "Запустить в {mediaServerName}",
|
||||
"components.TvDetails.play4k": "Запустить 4К в {mediaServerName}",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {userCount, plural, one {# новый пользователь} other {# новых пользователя(ей)}} успешно импортированы из {mediaServerName}!",
|
||||
@@ -1275,7 +1282,7 @@
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.saving": "Сохранение…",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Звук уведомлений",
|
||||
"i18n.collection": "Коллекция",
|
||||
"components.Setup.configuremediaserver": "Настроить медиасервер",
|
||||
"components.Setup.configuremediaserver": "Настройте медиасервер",
|
||||
"components.UserList.importfromJellyfinerror": "Что-то пошло не так при импорте пользователей из {mediaServerName}.",
|
||||
"components.UserList.newJellyfinsigninenabled": "Параметр <strong>Включить новый вход в {mediaServerName}</strong> в настоящее время включен. Пользователей {mediaServerName} с доступом к библиотеке не нужно импортировать для входа.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.email": "Электронная почта",
|
||||
@@ -1286,7 +1293,7 @@
|
||||
"components.TitleCard.addToWatchList": "Добавить в список наблюдения",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> успешно добавлен в список наблюдения!",
|
||||
"components.Settings.save": "Сохранить изменения",
|
||||
"components.Setup.signinWithJellyfin": "Введите данные своего Jellyfin",
|
||||
"components.Setup.signinWithJellyfin": "Используйте свой {mediaServerName} аккаунт",
|
||||
"components.UserList.mediaServerUser": "Пользователь {mediaServerName}",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Сохранить изменения",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.deviceDefault": "Устройство по умолчанию",
|
||||
@@ -1309,8 +1316,8 @@
|
||||
"components.Login.validationUrlBaseTrailingSlash": "Базовый URL не может оканчиваться слэшем",
|
||||
"components.Login.validationUrlTrailingSlash": "URL не может оканчиваться слэшем",
|
||||
"components.Login.validationservertyperequired": "Пожалуйста, выберите тип сервера",
|
||||
"components.MovieDetails.watchlistError": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> успешно добавлен с список просмотра!",
|
||||
"components.MovieDetails.watchlistError": "Что-то пошло не так, попробуйте снова.",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> добавлено в список просмотра!",
|
||||
"components.Selector.canceled": "Отменён",
|
||||
"components.Selector.ended": "Окончен",
|
||||
"components.Selector.inProduction": "В производстве",
|
||||
@@ -1324,7 +1331,7 @@
|
||||
"components.Setup.configplex": "Настроить Plex",
|
||||
"components.Setup.servertype": "Выберите тип сервера",
|
||||
"components.Setup.signinWithEmby": "Введите данные своего Emby",
|
||||
"components.Setup.subtitle": "Начните с выбора своего медиа сервера",
|
||||
"components.Setup.subtitle": "Начните с выбора типа своего медиа сервера",
|
||||
"components.TvDetails.removefromwatchlist": "Удалить из списка просмотра",
|
||||
"components.Settings.invalidurlerror": "Не удалось подключиться к {mediaServerName} серверу.",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "Забыли пароль URL",
|
||||
@@ -1342,148 +1349,10 @@
|
||||
"component.BlacklistModal.blacklisting": "Внесение в чёрный список",
|
||||
"components.Blacklist.blacklistNotFoundError": "<strong>{title}</strong> не в чёрном списке.",
|
||||
"components.Blacklist.blacklistdate": "дата",
|
||||
"components.Blacklist.blacklistedby": "{date} пользователем {user}",
|
||||
"components.Blacklist.blacklistedby": "{date}, {user}",
|
||||
"components.Blacklist.blacklistsettings": "Настройки чёрного списка",
|
||||
"components.Blacklist.mediaName": "Название",
|
||||
"components.Blacklist.mediaTmdbId": "tmdb Id",
|
||||
"components.PermissionEdit.blacklistedItemsDescription": "Дать права на внесение в чёрный список.",
|
||||
"components.PermissionEdit.manageblacklist": "Управлять чёрным списком",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Предстоящие сериалы",
|
||||
"components.Login.loginwithapp": "Войти по {appName}",
|
||||
"components.Settings.Notifications.validationMessageThreadId": "Идентификатор темы/топика должен быть положительным целым числом",
|
||||
"components.Settings.Notifications.messageThreadIdTip": "Если в вашем чате включены темы, укажите идентификатор здесь",
|
||||
"components.RequestList.sortDirection": "Изменить порядок сортировки",
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "Разрешить просмотр контента из черного списка.",
|
||||
"components.RequestList.RequestItem.removearr": "Удалить с {arr}",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Необходимо указать действительный ID роли Discord",
|
||||
"components.Selector.searchUsers": "Выбрать пользователей…",
|
||||
"components.Settings.Notifications.messageThreadId": "Идентификатор темы",
|
||||
"components.Login.noadminerror": "На сервере отсутствует администратор.",
|
||||
"components.Login.orsigninwith": "Или войдите с",
|
||||
"components.Settings.apiKey": "API-ключ",
|
||||
"components.Settings.OverrideRuleModal.ruleCreated": "Правило переопределения успешно создано!",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Фильтровать контент по региональной доступности",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "Разрешить запрашивать спец. эпизоды",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "Включить CSRF защиту",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Используйте ',' в качестве разделителя. '*.' - для указания всех поддоменов",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> успешно удалён из списка просмотра!",
|
||||
"components.Settings.OverrideRuleModal.conditionsDescription": "Указывает условия для применения изменений параметров. Для применения каждое поле должно быть проверено с помощью правил (операция И). Поле считается проверенным, если подходит любой из его параметров (операция ИЛИ).",
|
||||
"components.TvDetails.watchlistError": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.",
|
||||
"components.TvDetails.watchlistSuccess": "<strong>{title}</strong> успешно добавлен с список просмотра!",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegion": "Регион трансляции",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccountsHint": "Эти внешние аккаунты привязаны к вашему аккаунту {applicationName}.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noLinkedAccounts": "У вас нет ни одного привязанного внешнего аккаунта.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noPermissionDescription": "У вас нет прав менять привязанные аккаунты этого пользователя.",
|
||||
"components.Setup.librarieserror": "Валидация не пройдена. Пожалуйста, выберите библиотеки повторно для продолжения.",
|
||||
"components.Settings.OverrideRuleModal.service": "Служба",
|
||||
"components.Settings.SettingsUsers.atLeastOneAuth": "Нужно выбрать хотя бы один метод аутентификации.",
|
||||
"components.Settings.SettingsUsers.mediaServerLoginTip": "Позволить пользователям входить с помощью аккаунта {mediaServerName}",
|
||||
"components.Settings.addrule": "Новое правило переопределения",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmailEmpty": "Другой пользователь уже использует это имя пользователя. Вам нужно указать email",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadId": "ID треда/топика",
|
||||
"components.UserProfile.UserSettings.menuLinkedAccounts": "Связанные аккаунты",
|
||||
"i18n.blacklisted": "В чёрном списке",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> успешно удалён из черного списка.",
|
||||
"components.Settings.OverrideRuleModal.notagoptions": "Без тегов.",
|
||||
"components.Settings.OverrideRuleModal.settingsDescription": "Указывает изменяемые настройки при выполнении вышеуказанных условий.",
|
||||
"components.Settings.SettingsJobsCache.plex-refresh-token": "Токен обновления Plex",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Устанавливает доступ к внешнему API в режим только для чтения (требуется HTTPS)",
|
||||
"components.Settings.SettingsNetwork.networkDisclaimer": "Вместо этих настроек нужно использовать сетевые параметры из вашего контейнера/системы. Для дополнительной информации прочитайте {docs}.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.description": "Введите ваши данные от {mediaServerName}, чтобы связать аккаунт с {applicationName}.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnauthorized": "Не удалось подключиться к {mediaServerName} с использованием ваших данных",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegion": "Регион поиска",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadIdTip": "Если ваш групповой чат использует топики, вы можете указать здесь ID треда/топика",
|
||||
"i18n.addToBlacklist": "Добавить в черный список",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> уже добавлен в черный список.",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Аватары пользователей",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Что-то пошло не так при сохранении настроек.",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "Расширенные сетевые настройки",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "НЕ включайте эту настройку, если не знаете, для чего она нужна!",
|
||||
"components.Settings.SettingsNetwork.docs": "документация",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Принудительно использовать сначала IPv4",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Jellyseerr будет принудительно использовать сначала IPv4 адреса вместо IPv6",
|
||||
"components.Settings.SettingsNetwork.network": "Сеть",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Сетевые настройки",
|
||||
"components.Settings.SettingsNetwork.networksettingsDescription": "Установите сетевые настройки для вашего экземпляра Jellyseerr.",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilter": "Адреса, игнорируемые прокси",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Не использовать прокси для локальных адресов",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "HTTP(S) прокси",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "Имя хоста прокси",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "Пароль от прокси",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "Порт прокси",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "Использовать SSL для прокси",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "Имя пользователя от прокси",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Настройки успешно сохранены!",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Включить поддержку прокси",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Позволяет Jellyseerr корректно определять IP адреса клиентов за прокси",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "Нужно указать корректный порт",
|
||||
"components.Settings.SettingsUsers.loginMethods": "Методы входа",
|
||||
"components.Settings.SettingsUsers.loginMethodsTip": "Настройте методы входа для пользователей.",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "Включить вход с помощью {mediaServerName}",
|
||||
"components.Settings.jellyfinSyncFailedAutomaticGroupedFolders": "Пользовательская аутентификация с автоматической группировкой библиотек не поддерживается",
|
||||
"components.Settings.menuNetwork": "Сеть",
|
||||
"components.Settings.overrideRules": "Правила переопределения",
|
||||
"components.Settings.overrideRulesDescription": "Правила переопределения позволяют вам указать параметры для изменения, если запрос походит под правило.",
|
||||
"components.Settings.scanbackground": "Сканирование будет выполнено в фоновом режиме. Сейчас вы можете продолжить процесс настройки.",
|
||||
"components.Settings.tip": "Подсказка",
|
||||
"components.StatusBadge.seasonnumber": "S{seasonNumber}",
|
||||
"components.UserList.validationUsername": "Вам нужно указать имя пользователя",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorExists": "Этот аккаунт уже связан с пользователем {applicationName}",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnknown": "Произошла неизвестная ошибка",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.password": "Пароль",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.passwordRequired": "Вам нужно указать пароль",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.save": "Связать",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.saving": "Добавление…",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.title": "Привязать аккаунт {mediaServerName}",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.username": "Имя пользователя",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.usernameRequired": "Вам нужно указать имя пользователя",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.streamingRegionTip": "Показывать сайты трансляций по региональной доступности",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailformat": "Необходим корректный email",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "Email обязателен",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.deleteFailed": "Не удалость удалить связанный аккаунт.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.errorUnknown": "Произошла неизвестная ошибка",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccounts": "Связанные аккаунты",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorExists": "Этот аккаунт уже привязан к пользователю Plex",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorUnauthorized": "Не удалось соединиться с Plex с использованием ваших данных",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramMessageThreadId": "ID треда/топика должно быть целым положительным числом",
|
||||
"i18n.blacklist": "Чёрный список",
|
||||
"i18n.blacklistError": "Что-то пошло не так. Пожалуйста, попробуйте еще раз.",
|
||||
"i18n.blacklistSuccess": "<strong>{title}</strong> успешно добавлен в черный список.",
|
||||
"i18n.removefromBlacklist": "Удалить из черного списка",
|
||||
"i18n.specials": "Спец. эпизоды",
|
||||
"components.Settings.OverrideRuleModal.languages": "Языки",
|
||||
"components.Settings.Notifications.webhookRoleId": "ID роли уведомления",
|
||||
"components.Settings.Notifications.webhookRoleIdTip": "ID роли для упоминания в теле webhook запроса. Оставьте пустым для отключения упоминания",
|
||||
"components.Settings.OverrideRuleModal.conditions": "Условия",
|
||||
"components.Settings.OverrideRuleModal.create": "Создать правило",
|
||||
"components.Settings.OverrideRuleModal.createrule": "Новое правило переопределения",
|
||||
"components.Settings.OverrideRuleModal.editrule": "Изменить правило переопределения",
|
||||
"components.Settings.OverrideRuleModal.genres": "Жанры",
|
||||
"components.Settings.OverrideRuleModal.keywords": "Ключевые слова",
|
||||
"components.Settings.OverrideRuleModal.qualityprofile": "Профиль качества",
|
||||
"components.Settings.OverrideRuleModal.rootfolder": "Корневая папка",
|
||||
"components.Settings.OverrideRuleModal.ruleUpdated": "Правило переопределения успешно изменено!",
|
||||
"components.Settings.OverrideRuleModal.selectQualityProfile": "Выберите профиль качества",
|
||||
"components.Settings.OverrideRuleModal.selectRootFolder": "Выберите корневую папку",
|
||||
"components.Settings.OverrideRuleModal.selecttags": "Выберите теги",
|
||||
"components.Settings.OverrideRuleModal.serviceDescription": "Применить это правило к выбранному сервису.",
|
||||
"components.Settings.OverrideRuleModal.settings": "Настройки",
|
||||
"components.Settings.OverrideRuleModal.selectService": "Выберите службу",
|
||||
"components.Settings.OverrideRuleModal.tags": "Теги",
|
||||
"components.Settings.OverrideRuleModal.users": "Пользователи",
|
||||
"components.Settings.OverrideRuleTile.conditions": "Условия",
|
||||
"components.Settings.OverrideRuleTile.genre": "Жанр",
|
||||
"components.Settings.OverrideRuleTile.keywords": "Ключевые слова",
|
||||
"components.Settings.OverrideRuleTile.language": "Язык",
|
||||
"components.Settings.OverrideRuleTile.qualityprofile": "Профиль качества",
|
||||
"components.Settings.OverrideRuleTile.rootfolder": "Корневая папка",
|
||||
"components.Settings.OverrideRuleTile.settings": "Настройки",
|
||||
"components.Settings.OverrideRuleTile.tags": "Теги",
|
||||
"components.Settings.OverrideRuleTile.users": "Пользователи",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Этот email уже занят!",
|
||||
"components.Settings.SettingsMain.discoverRegion": "Регион поиска",
|
||||
"components.Settings.SettingsMain.streamingRegion": "Регион трансляции",
|
||||
"components.Settings.SettingsMain.streamingRegionTip": "Показывать сайты трансляций по региональной доступности",
|
||||
"components.UserList.username": "Имя пользователя",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Фильтровать контент по региональной доступности"
|
||||
"components.PermissionEdit.manageblacklist": "Управлять чёрным списком"
|
||||
}
|
||||
|
||||
@@ -250,6 +250,8 @@
|
||||
"components.PersonDetails.ascharacter": "si {character}",
|
||||
"components.PersonDetails.birthdate": "Lindur {birthdate}",
|
||||
"components.PersonDetails.crewmember": "Ekuipazhi",
|
||||
"components.PlexLoginButton.signingin": "Po identifikohet…",
|
||||
"components.PlexLoginButton.signinwithplex": "Hyr",
|
||||
"components.RegionSelector.regionServerDefault": "Parazgjedhur ({region})",
|
||||
"components.RequestBlock.requestoverrides": "Anashkalime të Kërkesës",
|
||||
"components.RequestBlock.rootfolder": "Direktoria",
|
||||
|
||||
@@ -346,6 +346,7 @@
|
||||
"components.ManageSlideOver.tvshow": "serije",
|
||||
"components.MediaSlider.ShowMoreCard.seemore": "Vidi više",
|
||||
"components.RequestBlock.profilechanged": "Profil kvaliteta",
|
||||
"components.PlexLoginButton.signingin": "Prijavljivanje…",
|
||||
"components.PermissionEdit.autoapproveMovies": "Automatsko odobrenje filmova",
|
||||
"components.PermissionEdit.autoapproveSeries": "Automatsko odobrenje serija",
|
||||
"components.RequestButton.requestmore": "Zatraži još",
|
||||
@@ -418,6 +419,7 @@
|
||||
"components.RequestBlock.server": "Odredišni server",
|
||||
"components.PermissionEdit.advancedrequest": "Napredni zahtevi",
|
||||
"components.IssueDetails.leavecomment": "Komentar",
|
||||
"components.PlexLoginButton.signinwithplex": "Prijavite se",
|
||||
"components.PermissionEdit.users": "Upravljajte korisnica",
|
||||
"components.Settings.SettingsAbout.supportoverseerr": "Pomoć Jellyseerr",
|
||||
"components.TvDetails.watchtrailer": "Pogledaj najavu",
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -377,6 +377,8 @@
|
||||
"components.PersonDetails.birthdate": "Doğumu {birthdate}",
|
||||
"components.PersonDetails.crewmember": "Bilinen İşleri",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PlexLoginButton.signingin": "Giriş Yapılıyor…",
|
||||
"components.PlexLoginButton.signinwithplex": "Giriş Yap",
|
||||
"components.QuotaSelector.days": "{count} gün",
|
||||
"components.QuotaSelector.movies": "{count} film",
|
||||
"components.QuotaSelector.seasons": "{count} sezon",
|
||||
@@ -643,7 +645,7 @@
|
||||
"components.Settings.Notifications.pgpPrivateKey": "PGP Gizli Anahtar",
|
||||
"components.Settings.Notifications.pgpPrivateKeyTip": "<OpenPgpLink>OpenPGP</OpenPgpLink> kullanarak e-mailleri imzala ve şifrele",
|
||||
"components.Settings.Notifications.sendSilently": "Sessizce Gönder",
|
||||
"components.Settings.Notifications.sendSilentlyTip": "Bildirimler sessiz gönderilir",
|
||||
"components.Settings.Notifications.sendSilentlyTip": "Ses olmadan bildirim gönder",
|
||||
"components.Settings.Notifications.senderName": "Gönderen İsmi",
|
||||
"components.Settings.Notifications.smtpHost": "SMPT Sunucu Adresi",
|
||||
"components.Settings.Notifications.smtpPort": "SMPT Port'u",
|
||||
@@ -788,7 +790,9 @@
|
||||
"components.Settings.SettingsMain.applicationTitle": "Uygulama Başlığı",
|
||||
"components.Settings.SettingsMain.applicationurl": "Uygulama URL'si",
|
||||
"components.Settings.SettingsMain.cacheImages": "Resim Önbelleğe Alma'yı Etkinleştir",
|
||||
"components.Settings.SettingsMain.csrfProtection": "CSRF Korumasını Etkinleştir",
|
||||
"components.Settings.SonarrModal.apiKey": "API Anahtarı",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Harici API erişimini salt okunur olarak ayarlayın (HTTPS gerektirir)",
|
||||
"components.Settings.SettingsMain.general": "Genel",
|
||||
"components.Settings.SettingsMain.generalsettings": "Genel Ayarlar",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Kullanılabilir İçerikleri Gizle",
|
||||
@@ -799,6 +803,7 @@
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "Yeni API anahtarı denenirken beklenmedik bir hata oluştu.",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Ayarlar kaydedilirken beklenmedik bir hata oluştu.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Ayarlar başarıyla kaydedildi!",
|
||||
"components.Settings.SettingsMain.trustProxy": "Proxy (Vekil Sunucu) Desteğini Etkinleştir",
|
||||
"components.Settings.SettingsMain.validationApplicationTitle": "Bir uygulama başlığı girmelisiniz",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Geçerli bir URL adresi girmelisiniz",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL'nizin sonunda slash (eğik çizgi) olmamalıdır",
|
||||
@@ -959,7 +964,7 @@
|
||||
"components.Settings.Notifications.NotificationsWebhook.validationWebhookUrl": "Geçerli bir URL girmelisiniz",
|
||||
"components.Settings.Notifications.botUsernameTip": "Kullanıcıların botunuzla sohbet başlatmalarına ve kendi bildirimlerini yapılandırmalarına izin verin",
|
||||
"components.Settings.Notifications.validationSmtpHostRequired": "Geçerli bir sunucu adresi girmelisin",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Kullanıcıların e-posta adreslerini ve parolalarını kullanarak oturum açmalarına izin verin",
|
||||
"components.Settings.SettingsUsers.localLoginTip": "Kullanıcıların {mediaServerName} OAuth yerine e-posta adreslerini ve parolalarını kullanarak oturum açmalarına izin ver",
|
||||
"components.Settings.advancedTooltip": "Bu ayarın yanlış yapılandırılması işlevselliğin bozulmasına neden olabilir",
|
||||
"components.Settings.Notifications.NotificationsPushover.toastPushoverTestSending": "Pushover deneme bildirimi gönderiliyor…",
|
||||
"components.Settings.Notifications.NotificationsPushover.userTokenTip": "30 karakterlik <UsersGroupsLink>kullanıcı ya da grup kimliği</UsersGroupsLink>",
|
||||
@@ -967,7 +972,9 @@
|
||||
"components.Settings.Notifications.toastEmailTestSending": "E-mail deneme bildirimi gönderiliyor…",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Yeni API anahtarı başarıyla oluşturuldu!",
|
||||
"components.Settings.SettingsJobsCache.jobsDescription": "Jellyseerr, belirli bakım görevlerini düzenli olarak zamanlanmış işler olarak gerçekleştirir, ancak bunlar aşağıda manuel olarak da tetiklenebilir. Bir işi manuel olarak çalıştırmak, zamanlamasını değiştirmez.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Bu günlükleri doğrudan <code>stdout</code> üzerinden veya <code>{appDataPath}/logs/jellyseerr.log</code> dizininde görüntüleyebilirsiniz.",
|
||||
"components.Settings.SettingsLogs.logsDescription": "Bu günlükleri doğrudan <code>stdout</code> üzerinden veya <code>{appDataPath}/logs/overseerr.log</code> konumundan da görüntüleyebilirsiniz.",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "Eğer ki ne yaptığınızı bilmiyorsanız bu ayarı ETKİNLEŞTİRMEYİNİZ!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Jellyseerr'in bir proxy'nin arkasındaki istemci IP adreslerini doğru şekilde kaydetmesine izin verin",
|
||||
"components.Settings.SonarrModal.baseUrl": "Temel URL Adresi",
|
||||
"components.Settings.SonarrModal.loadinglanguageprofiles": "Dil seçenekleri yükleniyor…",
|
||||
"components.Settings.SonarrModal.servername": "Sunucu İsmi",
|
||||
@@ -1025,7 +1032,7 @@
|
||||
"components.TitleCard.mediaerror": "{mediaType} Bulunamadı",
|
||||
"components.TitleCard.tmdbid": "TMDB ID'si",
|
||||
"components.TitleCard.watchlistCancel": "<strong>{title}</strong> için olan izleme listesi iptal edildi.",
|
||||
"components.TitleCard.watchlistError": "Bir şeyler ters gitti. Lütfen tekrar deneyin.",
|
||||
"components.TitleCard.watchlistError": "Bir şeyler ters gitti, lütfen tekrar deneyiniz.",
|
||||
"components.TitleCard.watchlistSuccess": "<strong>{title}</strong> izleme listesine başarıyla eklendi!",
|
||||
"components.TvDetails.Season.noepisodes": "Bölüm listesi mevcut değil.",
|
||||
"components.TvDetails.Season.somethingwentwrong": "Sezon verisi alınırken bir şeyler ters gitti.",
|
||||
@@ -1167,7 +1174,7 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingsfailed": "Pushover bildirim ayarları kaydedilemedi.",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.pushoversettingssaved": "Pushover bildirim ayarları kaydedildi!",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilently": "Sessizce Gönder",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Bildirimler sessiz gönderilir",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sendSilentlyDescription": "Ses olmadan bildirim gönder",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "Bildirim Sesi",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramChatId": "Sohbet ID'si",
|
||||
"components.UserProfile.UserSettings.menuNotifications": "Bildirimler",
|
||||
@@ -1309,7 +1316,7 @@
|
||||
"components.Login.validationUrlBaseLeadingSlash": "URL tabanının başında eğik çizgi olmalıdır",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "URL tabanı eğik çizgiyle bitmemelidir",
|
||||
"components.Login.validationUrlTrailingSlash": "URL, eğik çizgiyle bitmemelidir",
|
||||
"components.MovieDetails.watchlistError": "Bir şeyler ters gitti. Lütfen tekrar deneyin.",
|
||||
"components.MovieDetails.watchlistError": "Bir hata oluştu, tekrar deneyin.",
|
||||
"components.MovieDetails.watchlistSuccess": "<strong>{title}</strong> izleme listesine başarıyla eklendi!",
|
||||
"components.Settings.invalidurlerror": "{mediaServerName} sunucusuna bağlanılamıyor.",
|
||||
"components.Settings.jellyfinForgotPasswordUrl": "Parola Sıfırlama URL'si",
|
||||
@@ -1317,7 +1324,7 @@
|
||||
"components.Settings.jellyfinSyncFailedGenericError": "Kütüphaneler senkronize edilirken bir hata oluştu",
|
||||
"components.Settings.jellyfinSyncFailedNoLibrariesFound": "Hiç kütüphane bulunamadı",
|
||||
"components.TvDetails.watchlistDeleted": "<strong>{title}</strong> İzleme listesinden başarıyla kaldırıldı!",
|
||||
"components.TvDetails.watchlistError": "Bir şeyler ters gitti. Lütfen tekrar deneyin.",
|
||||
"components.TvDetails.watchlistError": "Bir hata oluştu, tekrar deneyin.",
|
||||
"components.UserList.username": "Kullanıcı adı",
|
||||
"components.UserList.validationUsername": "Kullanıcı adınızı sağlamalısınız",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.validationemailrequired": "E-posta gerekli",
|
||||
@@ -1373,117 +1380,28 @@
|
||||
"components.PermissionEdit.viewblacklistedItemsDescription": "Kara listeye alınmış medyayı görüntüleme izni ver.",
|
||||
"components.RequestList.RequestItem.removearr": "{arr}'dan kaldır",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Kullanıcıların Avatarları",
|
||||
"components.Settings.SettingsMain.proxyBypassFilter": "Proxy Göz Ardı Edilen Adresler",
|
||||
"components.Settings.SettingsMain.proxyBypassFilterTip": "Ayırıcı olarak ',' ve alt etki alanları için joker karakter olarak '*.' kullanın",
|
||||
"components.Settings.SettingsMain.proxyBypassLocalAddresses": "Yerel Adresler için Proxy'yi Atlat",
|
||||
"components.Settings.SettingsMain.proxyEnabled": "HTTP(S) Proxy",
|
||||
"components.Settings.SettingsMain.proxyHostname": "Proxy Ana Bilgisayar Adı",
|
||||
"components.Settings.SettingsMain.proxyPassword": "Proxy Şifresi",
|
||||
"components.Settings.SettingsMain.proxyPort": "Proxy Port",
|
||||
"components.Settings.SettingsMain.proxySsl": "Proxy İçin SSL Kullanın",
|
||||
"components.Settings.SettingsMain.proxyUser": "Proxy Kullanıcı Adı",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Geçerli bir port sağlamalısınız",
|
||||
"components.Settings.scanbackground": "Tarama arka planda devam edecek. Kurulum sürecine devam edebilirsiniz.",
|
||||
"components.Settings.tip": "İpucu",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.toastSettingsFailureEmail": "Bu e-posta zaten alınmış!",
|
||||
"i18n.addToBlacklist": "Kara Listeye Ekle",
|
||||
"i18n.blacklist": "Kara Liste",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title</strong> kara listede mevcut.",
|
||||
"i18n.blacklistError": "Bir şeyler ters gitti. Lütfen tekrar deneyin.",
|
||||
"i18n.blacklistError": "Hay Aksi. Ters giden bişeyler var tekrar deneyin.",
|
||||
"i18n.blacklistSuccess": "<strong>{title</strong> başarıyla kara listeye alındı.",
|
||||
"i18n.blacklisted": "Kara listeye alındı",
|
||||
"i18n.removeFromBlacklistSuccess": "<strong>{title}</strong> Kara Listeden başarıyla kaldırıldı.",
|
||||
"i18n.removefromBlacklist": "Kara Listeden Kaldır",
|
||||
"components.RequestList.sortDirection": "Sıralama Yönünü Değiştir",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Geçerli bir Discord Rol Kimliği sağlamalısınız",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "İçeriği bölgesel kullanılabilirliğe göre filtrele",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Ayarlar kaydedilirken bir sorun oluştu.",
|
||||
"components.Settings.OverrideRuleModal.conditionsDescription": "Parametre değişikliklerini uygulamadan önce koşulları belirtir. Kuralların uygulanması için her alan doğrulanmalıdır (VE işlem). Bir alan, özelliklerinden herhangi biri eşleşirse doğrulanmış kabul edilir (VEYA işlem).",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorUnauthorized": "Kullanılan kimlik bilgileriniz ile Plex'e bağlanılamıyor",
|
||||
"components.Settings.Notifications.messageThreadIdTip": "Grup sohbetinizde konular etkinleştirilmişse, burada bir konu başlığı/konu kimliği belirtebilirsiniz",
|
||||
"components.Settings.SettingsNetwork.trustProxyTip": "Jellyseerr'in proxy arkasındaki istemci IP adreslerini doğru şekilde kaydetmesine izin ver",
|
||||
"components.Selector.searchUsers": "Kullanıcıları seçin…",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccountsHint": "Bu harici hesaplar {applicationName} hesabınıza bağlıdır.",
|
||||
"components.DiscoverTvUpcoming.upcomingtv": "Yaklaşan Diziler",
|
||||
"components.Login.loginwithapp": "{appName} ile giriş yapın",
|
||||
"components.Login.noadminerror": "Sunucuda yönetici kullanıcısı bulunamadı.",
|
||||
"components.Login.orsigninwith": "veya giriş yapın",
|
||||
"components.Settings.Notifications.messageThreadId": "Konu/Konu Kimliği",
|
||||
"components.Settings.Notifications.validationMessageThreadId": "Konu/konu kimliği pozitif bir tam sayı olmalıdır",
|
||||
"components.Settings.OverrideRuleModal.conditions": "Koşullar",
|
||||
"components.Settings.OverrideRuleModal.create": "Kural oluştur",
|
||||
"components.Settings.OverrideRuleModal.createrule": "Yeni Geçersiz Kılma Kuralı",
|
||||
"components.Settings.OverrideRuleModal.editrule": "Geçersiz Kılma Kuralını Düzenle",
|
||||
"components.Settings.OverrideRuleModal.genres": "Türler",
|
||||
"components.Settings.OverrideRuleModal.keywords": "Anahtar kelimeler",
|
||||
"components.Settings.OverrideRuleModal.languages": "Diller",
|
||||
"components.Settings.OverrideRuleModal.notagoptions": "Etiket yok.",
|
||||
"components.Settings.OverrideRuleModal.qualityprofile": "Kalite Profili",
|
||||
"components.Settings.OverrideRuleModal.rootfolder": "Kök Klasör",
|
||||
"components.Settings.OverrideRuleModal.ruleCreated": "Geçersiz kılma kuralı başarıyla oluşturuldu!",
|
||||
"components.Settings.OverrideRuleModal.ruleUpdated": "Geçersiz kılma kuralı başarıyla güncellendi!",
|
||||
"components.Settings.OverrideRuleModal.selectRootFolder": "Kök klasörü seç",
|
||||
"components.Settings.OverrideRuleModal.selectQualityProfile": "Kalite profilini seç",
|
||||
"components.Settings.OverrideRuleModal.selecttags": "Etiket seç",
|
||||
"components.Settings.OverrideRuleModal.serviceDescription": "Bu kuralı seçili servise uygula.",
|
||||
"components.Settings.OverrideRuleModal.service": "Servis",
|
||||
"components.Settings.OverrideRuleModal.selectService": "Servis seç",
|
||||
"components.Settings.OverrideRuleModal.settings": "Ayarlar",
|
||||
"components.Settings.OverrideRuleModal.settingsDescription": "Yukarıdaki koşullar sağlandığında hangi ayarların değiştirileceğini belirtir.",
|
||||
"components.Settings.OverrideRuleModal.tags": "Etiketler",
|
||||
"components.Settings.OverrideRuleModal.users": "Kullanıcılar",
|
||||
"components.Settings.OverrideRuleTile.conditions": "Koşullar",
|
||||
"components.Settings.OverrideRuleTile.genre": "Tür",
|
||||
"components.Settings.OverrideRuleTile.keywords": "Anahtar kelimeler",
|
||||
"components.Settings.OverrideRuleTile.language": "Dil",
|
||||
"components.Settings.OverrideRuleTile.qualityprofile": "Kalite Profili",
|
||||
"components.Settings.OverrideRuleTile.rootfolder": "Kök Klasör",
|
||||
"components.Settings.OverrideRuleTile.settings": "Ayarlar",
|
||||
"components.Settings.OverrideRuleTile.tags": "Etiketler",
|
||||
"components.Settings.OverrideRuleTile.users": "Kullanıcılar",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "Özel Bölüm Taleplerine İzin Ver",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "Gelişmiş Ağ Ayarları",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "CSRF Korumasını Etkinleştir",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionHoverTip": "Ne yaptığınızı bilmiyorsanız bu ayarı ETKİNLEŞTİRMEYİN!",
|
||||
"components.Settings.SettingsNetwork.csrfProtectionTip": "Harici API erişimini salt okunur olarak ayarlayın (HTTPS gerektirir)",
|
||||
"components.Settings.SettingsNetwork.docs": "belgeleme",
|
||||
"components.Settings.SettingsNetwork.forceIpv4FirstTip": "Jellyseerr'in IPv6 yerine öncelikli olarak IPv4 adreslerine bağlanmasını zorunlu kılın",
|
||||
"components.Settings.SettingsNetwork.forceIpv4First": "Öncelike IPv4 Bağlantısını Zorla",
|
||||
"components.Settings.SettingsNetwork.network": "Ağ",
|
||||
"components.Settings.SettingsNetwork.networkDisclaimer": "Bu ayarlar yerine konteynerinizden/sisteminizden gelen ağ parametreleri kullanılmalıdır. Daha fazla bilgi için {docs}'a bakın.",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Ağ Ayarları",
|
||||
"components.Settings.SettingsNetwork.networksettingsDescription": "Jellyseerr örneğiniz için ağ ayarlarını yapılandırın.",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilterTip": "Alt etki alanları için ayırıcı olarak ',' ve joker karakter olarak '*.' kullanın",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "Yerel Adresler için Proxy Kullanma",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "HTTP(S) Proxy",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "Proxy Ana Bilgisayar Adı",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "Proxy Şifresi",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "Proxy Bağlantı Noktası",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "Proxy İçin SSL Kullanın",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "Proxy Kullanıcı Adı",
|
||||
"components.Settings.SettingsNetwork.proxyBypassFilter": "Proxy Tarafından Yoksayılan Adresler",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Ayarlar başarıyla kaydedildi!",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "Proxy Desteğini Etkinleştir",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "Geçerli bir bağlantı noktası sağlamalısınız",
|
||||
"components.Settings.SettingsUsers.atLeastOneAuth": "En az bir kimlik doğrulama yöntemi seçilmelidir.",
|
||||
"components.Settings.SettingsUsers.loginMethods": "Giriş Yöntemleri",
|
||||
"components.Settings.SettingsUsers.loginMethodsTip": "Kullanıcılar için oturum açma yöntemlerini yapılandırın.",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "{mediaServerName} ile Oturum Açmayı Etkinleştir",
|
||||
"components.Settings.SettingsUsers.mediaServerLoginTip": "Kullanıcıların {mediaServerName} hesaplarını kullanarak oturum açmalarına izin ver",
|
||||
"components.Settings.addrule": "Yeni Geçersiz Kılma Kuralı",
|
||||
"components.Settings.menuNetwork": "Ağ",
|
||||
"components.Settings.overrideRules": "Geçersiz Kılma Kuralları",
|
||||
"components.Settings.overrideRulesDescription": "Geçersiz kılma kuralları, bir talep kuralla eşleşirse değiştirilecek özellikleri belirtmenize olanak tanır.",
|
||||
"components.Setup.librarieserror": "Doğrulama başarısız oldu. Devam etmek için lütfen kütüphaneleri tekrar değiştirin.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.description": "Hesabınızı {applicationName} ile bağlamak için {mediaServerName} kimlik bilgilerinizi girin.",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorExists": "Bu hesap zaten bir {applicationName} kullanıcısına bağlı",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnauthorized": "Kullanılan kimlik bilgileriniz ile {mediaServerName} sunucusuna bağlanılamadı",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.errorUnknown": "Bilinmeyen bir hata oluştu",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.password": "Şifre",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.save": "Bağlantı",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.saving": "Ekleniyor…",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.title": "{mediaServerName} Hesabını Bağla",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.username": "Kullanıcı adı",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.usernameRequired": "Kullanıcı adı sağlamalısınız",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.deleteFailed": "Bağlantılı hesap silinemiyor.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.errorUnknown": "Bilinmeyen bir hata oluştu",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.linkedAccounts": "Bağlantılı Hesaplar",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noLinkedAccounts": "Hesabınıza bağlı herhangi bir harici hesabınız bulunmamaktadır.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.noPermissionDescription": "Bu kullanıcının bağlantılı hesaplarını değiştirme yetkiniz yok.",
|
||||
"components.UserProfile.UserSettings.UserLinkedAccountsSettings.plexErrorExists": "Bu hesap zaten bir Plex kullanıcısına bağlı",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadId": "Konu/Konu Kimliği",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.telegramMessageThreadIdTip": "Grup sohbetinizde konular etkinleştirilmişse, burada bir konu başlığının/konunun kimliğini belirtebilirsiniz",
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.validationTelegramMessageThreadId": "Konu/konu kimliği pozitif bir tam sayı olmalıdır",
|
||||
"components.UserProfile.UserSettings.menuLinkedAccounts": "Bağlantılı Hesaplar",
|
||||
"components.UserProfile.UserSettings.LinkJellyfinModal.passwordRequired": "Şifre sağlamanız gerekiyor"
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "İçeriği bölgesel kullanılabilirliğe göre filtrele"
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@
|
||||
"components.AppDataWarning.dockerVolumeMissingDescription": "Підключення тома <code>{appDataPath}</code> налаштовано неправильно. Всі дані будуть видалені при зупинці або перезапуску контейнера.",
|
||||
"components.CollectionDetails.numberofmovies": "{count} фільмів",
|
||||
"components.CollectionDetails.overview": "Огляд",
|
||||
"components.CollectionDetails.requestcollection": "Запит на Колекцію",
|
||||
"components.CollectionDetails.requestcollection4k": "Запит на Колекцію в 4К",
|
||||
"components.CollectionDetails.requestcollection": "Запросити Колекцію",
|
||||
"components.CollectionDetails.requestcollection4k": "Запросити Колекцію в 4К",
|
||||
"components.Discover.DiscoverMovieGenre.genreMovies": "Фільми в жанрі \"{genre}\"",
|
||||
"components.Discover.DiscoverMovieLanguage.languageMovies": "Фільми мовою \"{language}\"",
|
||||
"components.Discover.DiscoverNetwork.networkSeries": "Серіали {network}",
|
||||
@@ -221,7 +221,7 @@
|
||||
"components.NotificationTypeSelector.userissueresolvedDescription": "Отримувати повідомлення, коли проблеми, про які ви повідомили, отримують рішення.",
|
||||
"components.NotificationTypeSelector.usermediaAutoApprovedDescription": "Отримувати повідомлення, коли інші користувачі надсилають нові медіа-запити, які схвалюються автоматично.",
|
||||
"components.NotificationTypeSelector.usermediaapprovedDescription": "Отримувати повідомлення, коли ваші медіа-запити отримують схвалення.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Отримувати сповіщення, коли медіа, на які ви створили запит, стають доступними.",
|
||||
"components.NotificationTypeSelector.usermediaavailableDescription": "Отримувати сповіщення, коли медіафайли, які ви запросили, стають доступними.",
|
||||
"components.NotificationTypeSelector.usermediadeclinedDescription": "Отримувати повідомлення, коли медіа-запити відхиляються.",
|
||||
"components.NotificationTypeSelector.usermediafailedDescription": "Отримувати повідомлення, коли медіа-запити не вдається додати до Radarr або Sonarr.",
|
||||
"components.NotificationTypeSelector.usermediarequestedDescription": "Отримувати повідомлення, коли інші користувачі надсилають нові медіа-запити, які вимагають схвалення.",
|
||||
@@ -281,6 +281,8 @@
|
||||
"components.PersonDetails.birthdate": "Народжений {birthdate}",
|
||||
"components.PersonDetails.crewmember": "У складі знімальної групи",
|
||||
"components.PersonDetails.lifespan": "{birthdate} – {deathdate}",
|
||||
"components.PlexLoginButton.signingin": "Виконується вхід...",
|
||||
"components.PlexLoginButton.signinwithplex": "Увійти",
|
||||
"components.QuotaSelector.days": "{count, plural, one {день} other {днів}}",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} на {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.movies": "{count, plural, one {фільм} other {фільми}}",
|
||||
@@ -310,8 +312,8 @@
|
||||
"components.RequestButton.declinerequest": "Відхилити запит",
|
||||
"components.RequestButton.declinerequest4k": "Відхилити 4К запит",
|
||||
"components.RequestButton.declinerequests": "Відхилити {requestCount, plural, one {запит} other {{requestCount} запиту(ів)}}",
|
||||
"components.RequestButton.requestmore": "Створити більше запитів",
|
||||
"components.RequestButton.requestmore4k": "Створити більше запитів у 4К",
|
||||
"components.RequestButton.requestmore": "Запросити більше",
|
||||
"components.RequestButton.requestmore4k": "Запросити більше у 4К",
|
||||
"components.RequestButton.viewrequest": "Подивитися запит",
|
||||
"components.RequestButton.viewrequest4k": "Подивитися 4К запит",
|
||||
"components.RequestCard.approverequest": "Підтвердити запит",
|
||||
@@ -392,9 +394,9 @@
|
||||
"components.RequestModal.requestmovies": "Запит {count} {count, plural, one {фільма} other {фільмів}}",
|
||||
"components.RequestModal.requestmovies4k": "Запит {count} {count, plural, one {фільма} other {фільмів}} у 4К",
|
||||
"components.RequestModal.requestmovietitle": "Запит на фільм",
|
||||
"components.RequestModal.requestseasons": "Запит {seasonCount} {seasonCount, plural, one {сезон} other {сезони(ів)}}",
|
||||
"components.RequestModal.requestseasons": "Запросити {seasonCount} {seasonCount, plural, one {сезон} other {сезони(ів)}}",
|
||||
"components.RequestModal.requestseasons4k": "Запит {seasonCount} {seasonCount, plural, one {сезону} other {сезонів}} у 4К",
|
||||
"components.RequestModal.requestseries4ktitle": "Запит на серіал у 4K",
|
||||
"components.RequestModal.requestseries4ktitle": "Запросити серіал у 4K",
|
||||
"components.RequestModal.requestseriestitle": "Запит на серіал",
|
||||
"components.RequestModal.season": "Сезон",
|
||||
"components.RequestModal.seasonnumber": "Сезон {number}",
|
||||
@@ -1062,8 +1064,8 @@
|
||||
"i18n.pending": "Чекаючи",
|
||||
"i18n.previous": "Попередня",
|
||||
"i18n.processing": "В обробці",
|
||||
"i18n.request": "Запит",
|
||||
"i18n.request4k": "Запит у 4K",
|
||||
"i18n.request": "Запросити",
|
||||
"i18n.request4k": "Запросити в 4K",
|
||||
"i18n.requested": "Запрошений",
|
||||
"i18n.requesting": "Запит…",
|
||||
"i18n.resolved": "Вирішені",
|
||||
@@ -1145,6 +1147,8 @@
|
||||
"components.Settings.SettingsMain.applicationTitle": "Назва програми",
|
||||
"components.Settings.SettingsMain.applicationurl": "URL програми",
|
||||
"components.Settings.SettingsMain.cacheImages": "Увімкнути кешування зображень",
|
||||
"components.Settings.SettingsMain.csrfProtection": "Увімкнути CSRF захист",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "НЕ вмикайте цей параметр, якщо ви не розумієте, що робите!",
|
||||
"components.Settings.SettingsMain.hideAvailable": "Приховати доступні медіа",
|
||||
"components.Settings.SettingsMain.locale": "Мова програми",
|
||||
"components.Settings.SettingsMain.originallanguage": "Мови для пошуку фільмів та серіалів",
|
||||
@@ -1152,6 +1156,7 @@
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "Новий ключ API успішно згенеровано!",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "Під час збереження налаштувань сталася помилка.",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "Налаштування успішно збережено!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "Дозволити Jellyseerr правильно реєструвати IP-адреси клієнтів за проксі-сервером",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "Ви повинні надати дійсну URL-адресу",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "URL-адреса не має закінчуватися косою рискою",
|
||||
"components.Settings.SonarrModal.animeSeriesType": "Тип аніме",
|
||||
@@ -1192,6 +1197,7 @@
|
||||
"components.Settings.Notifications.userEmailRequired": "Потрібен email користувача",
|
||||
"components.Settings.RadarrModal.tagRequestsInfo": "Автоматично додавати додатковий тег з ID та іменем користувача, який запитує",
|
||||
"components.Settings.SettingsAbout.supportjellyseerr": "Підтримайте Jellyseerr",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "Встановіть доступ до зовнішнього API лише для читання (потрібний HTTPS)",
|
||||
"components.Settings.SettingsJobsCache.availability-sync": "Синхронізація доступності медіа",
|
||||
"components.Settings.SettingsJobsCache.editJobScheduleSelectorSeconds": "Кожну {jobScheduleSeconds, plural, one {секунду} other {{jobScheduleSeconds} секунд}}",
|
||||
"components.Settings.SettingsMain.apikey": "Ключ API",
|
||||
@@ -1206,6 +1212,7 @@
|
||||
"components.TitleCard.watchlistError": "Щось пішло не так, повторіть спробу.",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "Налаштуйте глобальні параметри та параметри за замовчуванням для Jellyseerr.",
|
||||
"components.Settings.SettingsMain.originallanguageTip": "Фільтрувати вміст за мовою оригіналу",
|
||||
"components.Settings.SettingsMain.trustProxy": "Увімкнути підтримку проксі",
|
||||
"components.Settings.jellyfinSettingsFailure": "Під час збереження налаштувань {mediaServerName} сталася помилка.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.save": "Зберегти зміни",
|
||||
"components.TvDetails.play4k": "Відтворити 4K в {mediaServerName}",
|
||||
@@ -1347,6 +1354,8 @@
|
||||
"components.PermissionEdit.viewblacklistedItems": "Перегляд медіафайлів із чорного списку.",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.discoverRegionTip": "Вміст фільтрується за доступністю у вибраному регіоні",
|
||||
"i18n.blacklistError": "Щось пішло не так, повторіть спробу.",
|
||||
"components.Settings.SettingsMain.validationProxyPort": "Ви повинні вказати дійсний порт",
|
||||
"components.Settings.SettingsMain.proxySsl": "Використовувати SSL для проксі",
|
||||
"i18n.blacklistDuplicateError": "<strong>{title}</strong> вже додано в чорний список.",
|
||||
"components.PermissionEdit.manageblacklistDescription": "Надати дозвіл на керування медіа-файлами з чорного списку.",
|
||||
"components.Settings.apiKey": "Ключ API",
|
||||
@@ -1360,6 +1369,8 @@
|
||||
"components.Blacklist.mediaType": "Тип",
|
||||
"components.Layout.Sidebar.blacklist": "Чорний список",
|
||||
"components.Settings.SettingsMain.discoverRegionTip": "Фільтрувати вміст за регіональною доступністю",
|
||||
"components.Settings.SettingsMain.proxyPort": "Порт проксі",
|
||||
"components.Settings.SettingsMain.proxyUser": "Ім'я користувача проксі",
|
||||
"components.Settings.scanbackground": "Сканування працюватиме у фоновому режимі. Тим часом ви можете продовжити процес налаштування.",
|
||||
"i18n.addToBlacklist": "Додати в чорний список",
|
||||
"i18n.blacklist": "Чорний список",
|
||||
@@ -1367,11 +1378,5 @@
|
||||
"i18n.blacklisted": "У чорному списку",
|
||||
"components.Settings.SettingsJobsCache.usersavatars": "Аватар користувача",
|
||||
"components.PermissionEdit.manageblacklist": "Керувати чорним списком",
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Ви повинні надати дійсний ідентифікатор ролі Discord",
|
||||
"components.Settings.OverrideRuleModal.service": "Сервіс",
|
||||
"components.Settings.SettingsNetwork.docs": "документація",
|
||||
"components.Settings.SettingsNetwork.network": "Мережа",
|
||||
"components.Settings.SettingsNetwork.networksettings": "Налаштування мережі",
|
||||
"components.Settings.SettingsNetwork.toastSettingsFailure": "Під час збереження налаштувань сталася помилка.",
|
||||
"components.Settings.SettingsNetwork.toastSettingsSuccess": "Налаштування успішно збережено!"
|
||||
"components.Settings.Notifications.validationWebhookRoleId": "Ви повинні надати дійсний ідентифікатор ролі Discord"
|
||||
}
|
||||
|
||||
@@ -748,6 +748,8 @@
|
||||
"components.QuotaSelector.movies": "部电影",
|
||||
"components.QuotaSelector.movieRequests": "{quotaLimit} <quotaUnits>{movies} 每 {quotaDays} {days}</quotaUnits>",
|
||||
"components.QuotaSelector.days": "天",
|
||||
"components.PlexLoginButton.signinwithplex": "登入",
|
||||
"components.PlexLoginButton.signingin": "登入中…",
|
||||
"components.PersonDetails.lifespan": "{birthdate}-{deathdate}",
|
||||
"components.PersonDetails.crewmember": "制作群成员",
|
||||
"components.PersonDetails.birthdate": "{birthdate}-",
|
||||
@@ -1096,15 +1098,18 @@
|
||||
"components.Settings.SettingsMain.applicationTitle": "应用程序标题",
|
||||
"components.Settings.SettingsMain.applicationurl": "应用程序网址",
|
||||
"components.Settings.SettingsMain.cacheImagesTip": "缓存外部来源中的图像,这将需要大量的磁盘空间",
|
||||
"components.Settings.SettingsMain.csrfProtection": "启用 CSRF 保护",
|
||||
"components.Settings.SettingsMain.generalsettingsDescription": "为 Jellyseerr 配置全局和默认设置。",
|
||||
"components.Settings.SettingsMain.generalsettings": "常规设置",
|
||||
"components.Settings.SettingsMain.general": "常规",
|
||||
"components.Settings.SettingsMain.locale": "显示语言",
|
||||
"components.Settings.SettingsMain.hideAvailable": "隐藏可观看的电影和电视节目",
|
||||
"components.Settings.SettingsMain.toastApiKeyFailure": "生成新的用户程序密钥中出了点问题。",
|
||||
"components.Settings.SettingsMain.trustProxy": "启用代理支持",
|
||||
"components.Settings.SettingsMain.toastSettingsFailure": "保存设置中出了点问题。",
|
||||
"components.Settings.SettingsMain.toastApiKeySuccess": "已成功生成新的应用程序密钥!",
|
||||
"components.Settings.SettingsMain.toastSettingsSuccess": "成功保存设置!",
|
||||
"components.Settings.SettingsMain.trustProxyTip": "允许 Jellyseerr 使用代理正确注册客户端 IP 地址",
|
||||
"components.Discover.CreateSlider.nooptions": "没有结果。",
|
||||
"components.Discover.DiscoverTv.discovertv": "电视节目",
|
||||
"components.Settings.SettingsMain.cacheImages": "启用图片缓存",
|
||||
@@ -1142,8 +1147,10 @@
|
||||
"components.Discover.DiscoverMovies.sortTitleDesc": "标题 (Z-A) 递减",
|
||||
"components.Discover.DiscoverTv.sortTmdbRatingDesc": "TMDB 评分递减",
|
||||
"components.Discover.DiscoverMovies.sortTitleAsc": "标题 (A-Z) 递增",
|
||||
"components.Settings.SettingsMain.csrfProtectionTip": "设置外部 API 访问权限为只读(需要HTTPS)",
|
||||
"components.Settings.SettingsMain.validationApplicationUrlTrailingSlash": "必须删除结尾斜线",
|
||||
"components.Settings.SettingsMain.validationApplicationUrl": "请输入有效的网址",
|
||||
"components.Settings.SettingsMain.csrfProtectionHoverTip": "除非你了解此功能,请勿启用它!",
|
||||
"components.Discover.FilterSlideover.firstAirDate": "首次播出日期",
|
||||
"components.Discover.DiscoverTv.sortFirstAirDateAsc": "首次播出日期递增",
|
||||
"components.Discover.tvgenres": "电视节目类型",
|
||||
@@ -1289,35 +1296,5 @@
|
||||
"components.UserProfile.UserSettings.UserNotificationSettings.sound": "通知声音",
|
||||
"components.UserProfile.UserSettings.UserGeneralSettings.saving": "保存中……",
|
||||
"components.UserProfile.localWatchlist": "{username}的监视列表",
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {user} other {users}} 导入成功!",
|
||||
"components.Settings.SettingsNetwork.proxyBypassLocalAddresses": "代理绕过本地地址",
|
||||
"components.MovieDetails.addtowatchlist": "添加到监视列表",
|
||||
"components.MovieDetails.watchlistError": "出了点问题,请重试。",
|
||||
"components.PermissionEdit.manageblacklistDescription": "授予管理黑名单媒体的权限。",
|
||||
"components.Login.invalidurlerror": "无法连接到 {mediaServerName} 服务器。",
|
||||
"components.Login.enablessl": "使用 SSL",
|
||||
"components.PermissionEdit.manageblacklist": "管理黑名单",
|
||||
"components.Login.validationUrlBaseTrailingSlash": "请删除结尾斜杠",
|
||||
"components.Login.noadminerror": "没有在服务器上找到管理员账户。",
|
||||
"components.Login.port": "端口",
|
||||
"components.Login.validationHostnameRequired": "你必须提供有效的主机名或 IP 地址",
|
||||
"components.Login.validationPortRequired": "请输入有效的端口",
|
||||
"components.Login.validationUrlBaseLeadingSlash": "请添加前置斜杠",
|
||||
"components.Login.validationUrlTrailingSlash": "请删除结尾斜杠",
|
||||
"components.MovieDetails.removefromwatchlist": "从监视列表中移除",
|
||||
"components.Settings.SettingsNetwork.csrfProtection": "启用 CSRF 保护",
|
||||
"components.Settings.SettingsNetwork.advancedNetworkSettings": "高级网络设置",
|
||||
"components.Settings.SettingsMain.discoverRegion": "探索地区",
|
||||
"components.Settings.SettingsMain.enableSpecialEpisodes": "允许特别剧集请求",
|
||||
"components.Settings.SettingsNetwork.proxyEnabled": "HTTP(S) 代理",
|
||||
"components.Settings.SettingsNetwork.proxyHostname": "代理主机名",
|
||||
"components.Settings.SettingsNetwork.proxyPassword": "代理密码",
|
||||
"components.Settings.SettingsNetwork.proxyPort": "代理端口",
|
||||
"components.Settings.SettingsNetwork.proxySsl": "使用 SSL 进行代理",
|
||||
"components.Settings.SettingsNetwork.proxyUser": "代理用户名",
|
||||
"components.Settings.SettingsNetwork.trustProxy": "启用代理支持",
|
||||
"components.Settings.SettingsNetwork.validationProxyPort": "您必须提供有效端口",
|
||||
"components.Settings.SettingsUsers.loginMethods": "登录方式",
|
||||
"components.Settings.SettingsUsers.mediaServerLogin": "允许 {mediaServerName} 登录",
|
||||
"components.Settings.SettingsNetwork.networksettings": "网络设置"
|
||||
"components.UserList.importedfromJellyfin": "<strong>{userCount}</strong> {mediaServerName} {userCount, plural, one {user} other {users}} 导入成功!"
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user