Compare commits

...

104 Commits

Author SHA1 Message Date
Bogdan
0b7ce67635 Use develop branch for update package tests 2025-02-23 22:12:25 +02:00
Weblate
bc74456944 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_CN/
Translation: Servarr/Readarr
2025-02-18 12:00:58 +02:00
Bogdan
fa460567a7 New: Bypass IP addresses ranges in proxies
(cherry picked from commit 402db9128c214d4c5af6583643cb49d3aa7a28b5)

Closes #3690
2025-02-18 11:55:14 +02:00
bakerboy448
7dfceb307b Fixed: Trim spaces and empty values in Proxy Bypass List
(cherry picked from commit 846333ddf0d9da775c80d004fdb9b41e700ef359)

Closes #3688
2025-02-18 11:52:30 +02:00
Weblate
305ad235a5 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translation: Servarr/Readarr
2025-02-16 18:39:51 +02:00
Servarr
74c20e41bf Automated API Docs update 2025-02-16 18:01:02 +02:00
ManiMatter
347289b173 New: Last Searched column on Wanted screens 2025-02-16 17:55:01 +02:00
Bogdan
0ef3d2a5cc Fix download links for FileList when passkey contains spaces 2025-02-16 12:21:34 +02:00
Mark McDowall
e5519d60c9 Upgrade node to 20.11.1
(cherry picked from commit c6071f6d81a968d3ed7c6bf4bae035961b54d128)
2025-02-13 12:42:57 +02:00
Weblate
3a85b3a060 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Craze <christian.strey@gmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Lizandra Candido da Silva <lizandra.c.s@gmail.com>
Co-authored-by: Mailme Dashite <mailmedashite@protonmail.com>
Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: ahgharaghani <ah.gharaghani@gmail.com>
Co-authored-by: fordas <fordas15@gmail.com>
Co-authored-by: warkurre86 <tom.novo.86@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fa/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_Hans/
Translation: Servarr/Readarr
2025-02-07 19:14:45 -06:00
Bogdan
c1cdf44322 Bump version to 0.4.11 2025-01-26 14:59:57 +02:00
Bogdan
f861e54139 Rename MusicbrainzId references to ForeignId 2025-01-20 16:45:27 +02:00
jcassette
279e1029e0 New: reflink support for ZFS
(cherry picked from commit a840bb542362d58006b6cc27affd58ee6b965b80)
2025-01-19 17:18:38 +02:00
Bogdan
b9ed39175b Bump version to 0.4.10 2025-01-19 17:15:27 +02:00
Bogdan
faba3ada95 Bump Polly, System.Buffers and System.Memory
Closes #3952
2025-01-15 18:23:01 +02:00
Qstick
e8647aee05 Bump SonarCloud azure extension to 3.X
(cherry picked from commit 7b8e352d876cd8f8e5b6296f0c3938bed4db8bb8)

Bump SonarCloud azure extension for UI analysis to 3.X

(cherry picked from commit 396b2ae7c10c7df749ea23ea93608b56482175a1)
2025-01-15 18:13:04 +02:00
Weblate
eaf5ce52bc Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: 1 <1228553526@qq.com>
Co-authored-by: Alexander Balya <alexander.balya@gmail.com>
Co-authored-by: Ano10 <Ano10@users.noreply.translate.servarr.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Matti Meikäläinen <diefor-93@hotmail.com>
Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: Tommy Au <smarttommyau@gmail.com>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: marapavelka <mara.pavelka@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_TW/
Translation: Servarr/Readarr
2025-01-12 15:18:43 +02:00
Bogdan
73ab2760e4 Bump version to 0.4.9 2025-01-12 15:17:47 +02:00
Bogdan
3bb036e8c6 Fixed warning for central package version management 2025-01-09 22:09:48 +02:00
Bogdan
6e05456d6a Set minor version for core-js in babel/preset-env
(cherry picked from commit 2e83d59f61957cbc2171bef097fe2410e72729ad)

Closes #3941
2025-01-05 14:41:58 +02:00
Bogdan
8563a42822 Update core-js 2025-01-05 14:41:51 +02:00
Mark McDowall
841d38f4a5 Upgrade babel to 7.26.0
(cherry picked from commit bfcd017012730c97eb587ae2d2e91f72ee7a1de3)

Closes #3943
2025-01-05 14:40:02 +02:00
Mark McDowall
9326d88eb6 Upgrade Font Awesome to 6.7.1
(cherry picked from commit 016b5718386593c030f14fcac307c93ee1ceeca6)

Closes #3944
2025-01-05 14:38:03 +02:00
Bogdan
015da61004 Bump MailKit to 4.8.0 and Microsoft.Data.SqlClient to 2.1.7
Closes #3951
2025-01-05 14:37:16 +02:00
Mark McDowall
d02ea4b121 Don't send session information to Sentry
(cherry picked from commit fae24e98fb9230c2f3701caef457332952c6723f)

Closes #3957
2025-01-05 14:31:17 +02:00
Bruno Garcia
7bc9d700f9 Update Sentry SDK add features
Co-authored-by: Stefan Jandl <reg@bitfox.at>
(cherry picked from commit 6377c688fc7b35749d608bf62796446bb5bcb11b)
2025-01-05 14:30:42 +02:00
Stevie Robinson
661d72ef9b Fixed: Listening on all IPv4 Addresses
(cherry picked from commit 035c474f10c257331a5f47e863d24af82537e335)
2025-01-05 14:26:30 +02:00
Stevie Robinson
258a8d1c95 Fixed: qBittorrent Ratio Limit Check
(cherry picked from commit 4dcc015fb19ceb57d2e8f4985c5137e765829d1c)
2025-01-05 14:26:17 +02:00
Bogdan
d4459b9475 Bump version to 0.4.8 2025-01-05 14:26:01 +02:00
Bogdan
a550c6554f Check if backup folder is writable on backup
(cherry picked from commit 8aad79fd3e14eb885724a5e5790803c289be2f25)

Closes #3961
2024-12-31 12:21:54 +02:00
Bogdan
c1b26eec8d Suggest adding IP to RPC whitelist for on failed Transmission auth
(cherry picked from commit f05e552e8e6dc02cd26444073ab9a678dcb36492)
2024-12-31 12:20:58 +02:00
Bogdan
ffe5ede55d Bump version to 0.4.7 2024-12-22 13:25:47 +02:00
gains goblin
9005860899 Fixed: Mapping Author GR ID from import lists to AuthorGoodReadsId 2024-12-15 16:28:18 -06:00
Bogdan
c67f67109e Ignore metadata tests temporarily once again 2024-12-15 23:05:58 +02:00
Bogdan
51b9744e25 Fixed: Refresh backup list on deletion
(cherry picked from commit 3b00112447361b19c04851a510e63f812597a043)
2024-12-15 05:32:13 +02:00
Mark McDowall
334d824633 Fixed: Error getting processes in some cases
(cherry picked from commit b552d4e9f7ca7388404aa0d52566010a54cb0244)
2024-12-15 05:31:53 +02:00
Weblate
ae01387ca9 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Dani Talens <databio@gmail.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: hhjuhl <hans@kopula.dk>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translation: Servarr/Readarr
2024-12-14 02:35:17 +02:00
Weblate
4eb13e0938 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: 4kwins <hanszimmerme@gmail.com>
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Ardenet <1213193613@qq.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Languages add-on <noreply-addon-languages@weblate.org>
Co-authored-by: Mizuyoru_TW <mizuyoru.tw@gmail.com>
Co-authored-by: Robin Dadswell <robin@robindadswell.tech>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: keysuck <joshkkim@gmail.com>
Co-authored-by: mryx007 <mryx@mail.de>
Co-authored-by: thelooter <evekolb2204@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/sk/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_CN/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_HANS/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_Hans/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_TW/
Translation: Servarr/Readarr
2024-12-08 12:36:16 +02:00
Servarr
6dbb826f2f Automated API Docs update 2024-12-08 12:35:20 +02:00
Bogdan
52dfa57dd7 Bump version to 0.4.6 2024-12-08 12:26:41 +02:00
Mark McDowall
f354b3bc47 New: Support for new SABnzbd history retention values
(cherry picked from commit e361f18837d98c089f7dc9c0190221ca8e2cf225)

Closes #3885
2024-12-04 18:03:20 +02:00
Bogdan
2d9e6788e6 Bump Polly, Npgsql, PdfSharpCore and ImageSharp 2024-12-04 18:02:21 +02:00
soup
0d121fe9c0 New: Add config file setting for CGNAT authentication bypass
(cherry picked from commit 4c41a4f368046f73f82306bbd73bec992392938b)

Closes #3903
2024-12-04 17:56:17 +02:00
Emmanuel Ferdman
892c34fe35 Fix license link in API docs (#3910)
Signed-off-by: Emmanuel Ferdman <emmanuelferdman@gmail.com>
2024-12-02 17:15:09 +02:00
Gylesie
24f6007594 Remove unnecessary heap allocations in local IP check
(cherry picked from commit ed536a85ad5f2062bf6f01f80efddb19fa935f63)
2024-12-02 02:34:56 +02:00
Mark McDowall
5028ed4027 Webpack web target
(cherry picked from commit a90866a73e6cff9a286c23e60c74672f4c0d317a)
2024-11-27 12:25:08 +02:00
Bogdan
05f303436b Bump version to 0.4.5 2024-11-23 19:52:18 +02:00
Bogdan
5635de96a8 Fixed: Initial state for qBittorrent v5.0
(cherry picked from commit ff724b7f4099284b8062f1625cf07b7822782edf)
2024-11-15 20:01:26 -06:00
Mickaël Thomas
ce59f32023 New: Support stoppedUP and stoppedDL states from qBittorrent
(cherry picked from commit 73a4bdea5247ee87e6bbae95f5325e1f03c88a7f)
2024-11-15 20:01:26 -06:00
bakerboy448
6d675a5207 Fix Goodreads test 2024-11-15 17:57:51 -06:00
Bogdan
b093b23900 Pin ReportGenerator in Azure Pipelines for .NET 6
(cherry picked from commit 50ce480abf043140e209d2d2959fbea8dd5dd2ab)
2024-11-15 15:45:16 -06:00
Weblate
884ac2cb6f Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Fixer <ygj59783@zslsz.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ro/
Translation: Servarr/Readarr
2024-11-07 17:04:03 +02:00
Weblate
295a6c4255 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Anonymous <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/el/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hu/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/id/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/sv/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/th/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/uk/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/vi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_CN/
Translation: Servarr/Readarr
2024-11-05 02:26:50 +02:00
Mark McDowall
74a59d5790 Use current time for cache break in development
(cherry picked from commit 020ed32fcfab1c6fbe57af5ea650300272c93fd7)
2024-11-05 02:25:32 +02:00
Bogdan
ae23e5f187 Bump version to 0.4.4 2024-11-03 11:43:03 +02:00
Bogdan
ba2add0d54 Fix app name in translations 2024-11-02 21:33:05 +02:00
Servarr
b6ebeb31c8 Multiple Translations updated by Weblate (#3723)
ignore-downstream












Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_CN/
Translation: Servarr/Readarr

Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Ardenet <1213193613@qq.com>
Co-authored-by: Kuzmich <kuzmich55@gmail.com>
Co-authored-by: Mathias <mathias@rodilbach.dk>
Co-authored-by: angelsky11 <angelsky11@gmail.com>
Co-authored-by: genoher <genoher@gmail.com>
Co-authored-by: jsain <josip.sain@gmail.com>
Co-authored-by: liuwqq <843384478@qq.com>
Co-authored-by: Bogdan <mynameisbogdan@users.noreply.github.com>
2024-11-02 21:29:00 +02:00
Bogdan
b8bd645560 Fixed: Prevent UI errors for authors with invalid quality and metadata profiles 2024-11-02 01:04:11 +02:00
Bogdan
e0d904fa69 Improve message for grab errors due to no matching tags
Co-authored-by: zakary <zak@ary.dev>
(cherry picked from commit df672487cf1d5f067849367a2bfb0068defc315d)

Closes #3814
2024-10-27 09:50:14 +02:00
Bogdan
cb532caca4 Fixed: Status check for completed directories in Deluge
(cherry picked from commit 33139d4b53c1adad769c7e2b0510e8990c66b84a)
2024-10-27 09:47:15 +02:00
Bogdan
e1af8ad37f Bump version to 0.4.3 2024-10-27 09:46:46 +02:00
Bogdan
c4f30da648 Cleanse exceptions in event logs
(cherry picked from commit 404e6d68ea526ab521cd39ecda1bf3b02285765d)
2024-10-27 09:45:22 +02:00
Bogdan
b83a760873 Bump frontend packages 2024-10-20 13:22:14 +03:00
Bogdan
22ab50f76d Bump dotnet to 6.0.35 2024-10-20 13:22:14 +03:00
Mark McDowall
66758ca006 New: Show update settings on all platforms
(cherry picked from commit c023fc700896c7f0751c4ac63c4e1a89d6e1a9bb)
2024-10-20 11:43:51 +03:00
Mark McDowall
e7d7bc79f4 New: Allow major version updates to be installed
(cherry picked from commit 0e95ba2021b23cc65bce0a0620dd48e355250dab)
2024-10-20 11:43:51 +03:00
Bogdan
cfccb4f9c3 Bump version to 0.4.2 2024-10-20 08:07:10 +03:00
Mark McDowall
9312f17041 New: Use 307 redirect for requests missing URL Base
(cherry picked from commit 39074b0b1d040969f86d787c2346d5ed5a9f72dc)
2024-10-08 02:20:37 +03:00
Bogdan
8192c22910 Bump macOS runner version to 13 2024-10-06 16:30:37 +03:00
ManiMatter
0b1d6b677a Add '.temp*' to .gitignore (#3778) 2024-10-02 22:53:34 +03:00
Bogdan
d666df0189 Bump version to 0.4.1 2024-09-29 08:19:59 +03:00
Bogdan
10d8f345c1 Display naming example errors when all fields are empty
(cherry picked from commit 768af433d1655c587a9eee9b100f306ba4345f88)
2024-09-28 05:18:41 +03:00
Robin Dadswell
fb720b8714 Fixed: Telegram log message including token
(cherry picked from commit a7cb264cc8013d9a56aee7d5e41acfd76cde5f96)
2024-09-28 05:18:29 +03:00
Servarr
e8131b5791 Automated API Docs update 2024-09-25 10:34:30 +03:00
Bogdan
4f793f6b93 Remove $ from Discord delete notifications 2024-09-25 10:28:00 +03:00
Bogdan
4215c21c94 Add package needed for RemoveDiacritics 2024-09-23 05:46:26 +03:00
Paul DiLoreto
6913789adc New: Use instance name in forms authentication cookie name (#3761)
(cherry picked from commit 97ebaf279650082c6baee9563ef179921c5ed25a)
(cherry picked from commit faf9173b3b4a298e3afa9a186e66ba6764ac055e)
(cherry picked from commit 75fae9262c6ca003d24df9fcf035d75b1e90f994)

---------

Co-authored-by: Mark McDowall <mark@mcdowall.ca>
2024-09-23 05:45:01 +03:00
Mark McDowall
09e0c40792 Fixed: Limit redirects after login to local paths
(cherry picked from commit 14005d8d1054eafaba808337a109d5812f3e79e6)
2024-09-23 05:41:21 +03:00
Mark McDowall
baff805551 New: Return downloading magnets from Transmission
(cherry picked from commit 11a9dcb3890eaf99602900f37e64007f2fbf9b8e)
2024-09-23 05:40:25 +03:00
Bogdan
c885fe43cd Fix disabled style for monitor toggle button
(cherry picked from commit dde28cbd7e16b85f78d38c8dde7cf6bbb6119bb3)
2024-09-23 05:39:36 +03:00
Treycos
464a777722 Updated code action fixall value for VSCode
(cherry picked from commit 8af4246ff9baee4c291550102769a1186f65dc29)
2024-09-23 05:39:19 +03:00
momo
89e5999c85 Fix description for API key as query parameter
(cherry picked from commit 30c36fdc3baa686102ff124833c7963fc786f251)
2024-09-23 05:36:05 +03:00
Bogdan
b6fa332550 Ignore metadata tests temporarily once again 2024-09-23 05:35:27 +03:00
Bogdan
05f262dc0a Don't persist value for SslCertHash when checking for existence
(cherry picked from commit 98c4cbdd13dc49ad30e91343897b8bd006002489)
2024-09-07 16:26:28 -05:00
Bogdan
699b765ee9 Remove provider status on provider deletion
(cherry picked from commit f45713bff815b2a49a5cdad4afe62a53bbdf6a6e)
2024-09-07 16:26:11 -05:00
Mark McDowall
84beba2383 Don't hash files in development builds
(cherry picked from commit bc7799139e52b92956eb595fb87f44d7dda9a320)
2024-09-07 13:46:26 -05:00
Mark McDowall
62eceb9148 New: Default file log level changed to debug
(cherry picked from commit 9b528eb82914a05cfc3b67d4d6146ce51e86f68d)
2024-09-07 13:45:57 -05:00
Servarr
f46070d4b0 Translations update from Servarr Weblate (#3578)
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Ano10 <arnaudthommeray+github@ik.me>
Co-authored-by: Dream <seth.gecko.rr@gmail.com>
Co-authored-by: Gabriel Markowski <gmarkowski62@gmail.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Jason54 <jason54700.jg@gmail.com>
Co-authored-by: Kerk en IT <info@kerkenit.nl>
Co-authored-by: MattiaPell <mattiapellegrini16@gmail.com>
Co-authored-by: Nota Inutilis <hugo@notainutilis.fr>
Co-authored-by: fordas <fordas15@gmail.com>
Co-authored-by: iMohmmedSA <i.mohmmed.i+1@gmail.com>
2024-09-07 13:44:59 -05:00
Bogdan
73979c416a Bump ImageSharp to 3.1.5
https://github.com/advisories/GHSA-63p8-c4ww-9cg7
2024-07-26 00:09:31 +03:00
ManiMatter
348e8f9c27 Treat forcedMetaDL from qBit as queued instead of downloading
(cherry picked from commit 9a613afa355fbc8cdf29c4d1b8eb1f1586405eb7)
2024-07-25 08:15:40 +03:00
Bogdan
38bdb5a75d New: Ignore Litestream tables in Database
(cherry picked from commit 2a26c6722afa5c657fde162cbddbe9e8731f3a0c)
2024-07-25 07:38:19 +03:00
Bogdan
5e4c51e2f7 Bump version to 0.4.0 2024-07-21 18:08:49 +03:00
Bogdan
99a65246a9 New: Bump dotnet to 6.0.32 2024-07-19 23:27:15 +03:00
Qstick
598ce9a9d2 Update SonarCloud pipeline versions
* Update SonarCloud pipeline versions

* Update reportgenerator to remove PublishCodeCoverage dep warnings

(cherry picked from commit a2a12d245000a0713946cec732d853dd7cdc58c2)
(cherry picked from commit 1423ad6aa4094d11efecc1986a3d0571f310bda6)

Update SonarCloud pipeline versions for UI

(cherry picked from commit 558043f1b2cae371b474a19ba5784df8345d38d2)
(cherry picked from commit 9045dea5364ff8a0677adc25e478e908e6b0ee11)
2024-07-19 23:27:15 +03:00
Weblate
42d6b9e703 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Dream <seth.gecko.rr@gmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Kshitij Burman <kburman6@gmail.com>
Co-authored-by: Lizandra Candido da Silva <lizandra.c.s@gmail.com>
Co-authored-by: MattiaPell <mattiapellegrini16@gmail.com>
Co-authored-by: Mipiaceanutella <remix-polity-0l@icloud.com>
Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: PouleY <pouley@bellemainp.fr>
Co-authored-by: Rauniik <raunerjakub@gmail.com>
Co-authored-by: Serhii Matrunchyk <serhii@digitalidea.studio>
Co-authored-by: Taylan Tatlı <taylantatli90@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: Yongzz <zy28341215@icloud.com>
Co-authored-by: fordas <fordas15@gmail.com>
Co-authored-by: quek76 <quek@libertysurf.fr>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/el/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hu/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/id/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/sk/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/sv/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/th/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/uk/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/vi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_CN/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/zh_TW/
Translation: Servarr/Readarr
2024-07-19 00:08:01 +03:00
Marc Carbonell
8f595838aa Remove extraneous indentation in RemoveFileExtension
(cherry picked from commit dca5239420e21f91c1d67bc8bbb14cdb13c8d5d9)

Closes #3562
2024-07-18 20:13:29 +03:00
Stevie Robinson
3d9d7d3582 New: Wrap specifications in Custom Format modals
(cherry picked from commit 7b8d606a1bed6257d7942de47576c1505fd9cb57)

Towards #3570
2024-07-18 20:11:53 +03:00
servarr[bot]
77cf28bd78 Fixed: Assume category path from qBittorent starting with '//' is a Windows UNC path
* Fixed: Assume category path from qBittorent starting with '//' is a Windows UNC path

(cherry picked from commit 19466aa29050e1b13b1db8cc61662b10d76a82e4)

---------

Co-authored-by: Mark McDowall <mark@mcdowall.ca>
Co-authored-by: Bogdan <mynameisbogdan@users.noreply.github.com>
2024-07-18 20:06:41 +03:00
Bogdan
2fb1b8af20 Bump version to 0.3.32 2024-07-14 12:31:38 +03:00
Bogdan
af1f389f8e Fixed: Validate metadata and quality profiles for root folders
Don't allow `0` as possible value for metadata and quality profiles, and permit to edit root folders with bad values in UI.
2024-07-12 16:37:16 +03:00
Bogdan
b5334da253 Fixed: Creating root folders without default tags 2024-07-12 16:32:19 +03:00
Bogdan
68b3904382 Bump version to 0.3.31 2024-07-07 21:55:01 +03:00
Bogdan
c8b09b9e29 Fixed: Already imported downloads appearing in Queue briefly
(cherry picked from commit 8099ba10afded446779290de29b1baaf0be932c3)

Closes #3538
2024-07-01 08:45:01 +03:00
Bogdan
d910fc42ab Bump mac image to 12 2024-06-26 23:51:49 +03:00
165 changed files with 6671 additions and 4722 deletions

1
.gitignore vendored
View File

@@ -120,6 +120,7 @@ _artifacts
_rawPackage/
_dotTrace*
_tests/
_temp*
*.Result.xml
coverage*.xml
coverage*.json

View File

@@ -9,18 +9,18 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '0.3.30'
majorVersion: '0.4.11'
minorVersion: $[counter('minorVersion', 1)]
readarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
sentryOrg: 'servarr'
sentryUrl: 'https://sentry.servarr.com'
dotnetVersion: '6.0.421'
dotnetVersion: '6.0.427'
nodeVersion: '20.X'
innoVersion: '6.2.0'
windowsImage: 'windows-2022'
linuxImage: 'ubuntu-20.04'
macImage: 'macOS-11'
macImage: 'macOS-13'
trigger:
branches:
@@ -1102,19 +1102,19 @@ stages:
vmImage: ${{ variables.windowsImage }}
steps:
- checkout: self # Need history for Sonar analysis
- task: SonarCloudPrepare@1
- task: SonarCloudPrepare@3
env:
SONAR_SCANNER_OPTS: ''
inputs:
SonarCloud: 'SonarCloud'
organization: 'readarr'
scannerMode: 'CLI'
scannerMode: 'cli'
configMode: 'manual'
cliProjectKey: 'readarrui'
cliProjectName: 'ReadarrUI'
cliProjectVersion: '$(readarrVersion)'
cliSources: './frontend'
- task: SonarCloudAnalyze@1
- task: SonarCloudAnalyze@3
- job: Api_Docs
displayName: API Docs
@@ -1190,12 +1190,12 @@ stages:
submodules: true
- powershell: Set-Service SCardSvr -StartupType Manual
displayName: Enable Windows Test Service
- task: SonarCloudPrepare@1
- task: SonarCloudPrepare@3
condition: eq(variables['System.PullRequest.IsFork'], 'False')
inputs:
SonarCloud: 'SonarCloud'
organization: 'readarr'
scannerMode: 'MSBuild'
scannerMode: 'dotnet'
projectKey: 'Readarr_Readarr'
projectName: 'Readarr'
projectVersion: '$(readarrVersion)'
@@ -1208,21 +1208,16 @@ stages:
./build.sh --backend -f net6.0 -r win-x64
TEST_DIR=_tests/net6.0/win-x64/publish/ ./test.sh Windows Unit Coverage
displayName: Coverage Unit Tests
- task: SonarCloudAnalyze@1
- task: SonarCloudAnalyze@3
condition: eq(variables['System.PullRequest.IsFork'], 'False')
displayName: Publish SonarCloud Results
- task: reportgenerator@4
- task: reportgenerator@5.3.11
displayName: Generate Coverage Report
inputs:
reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml'
targetdir: '$(Build.SourcesDirectory)/CoverageResults/combined'
reporttypes: 'HtmlInline_AzurePipelines;Cobertura;Badges'
- task: PublishCodeCoverageResults@1
displayName: Publish Coverage Report
inputs:
codeCoverageTool: 'cobertura'
summaryFileLocation: './CoverageResults/combined/Cobertura.xml'
reportDirectory: './CoverageResults/combined/'
publishCodeCoverageResults: true
- stage: Report_Out
dependsOn:

View File

@@ -9,7 +9,7 @@
"editor.formatOnSave": false,
"editor.codeActionsOnSave": {
"source.fixAll": true
"source.fixAll": "explicit"
},
"typescript.preferences.quoteStyle": "single",

View File

@@ -26,6 +26,7 @@ module.exports = (env) => {
const config = {
mode: isProduction ? 'production' : 'development',
devtool: isProduction ? 'source-map' : 'eval-source-map',
target: 'web',
stats: {
children: false
@@ -67,7 +68,7 @@ module.exports = (env) => {
output: {
path: distFolder,
publicPath: '/',
filename: '[name]-[contenthash].js',
filename: isProduction ? '[name]-[contenthash].js' : '[name].js',
sourceMapFilename: '[file].map'
},
@@ -92,7 +93,7 @@ module.exports = (env) => {
new MiniCssExtractPlugin({
filename: 'Content/styles.css',
chunkFilename: 'Content/[id]-[chunkhash].css'
chunkFilename: isProduction ? 'Content/[id]-[chunkhash].css' : 'Content/[id].css'
}),
new HtmlWebpackPlugin({
@@ -181,7 +182,7 @@ module.exports = (env) => {
loose: true,
debug: false,
useBuiltIns: 'entry',
corejs: 3
corejs: '3.39'
}
]
]
@@ -202,7 +203,7 @@ module.exports = (env) => {
options: {
importLoaders: 1,
modules: {
localIdentName: '[name]/[local]/[hash:base64:5]'
localIdentName: isProduction ? '[name]/[local]/[hash:base64:5]' : '[name]/[local]'
}
}
},

View File

@@ -32,7 +32,7 @@ import LogsTableConnector from 'System/Events/LogsTableConnector';
import Logs from 'System/Logs/Logs';
import Status from 'System/Status/Status';
import Tasks from 'System/Tasks/Tasks';
import UpdatesConnector from 'System/Updates/UpdatesConnector';
import Updates from 'System/Updates/Updates';
import UnmappedFilesTableConnector from 'UnmappedFiles/UnmappedFilesTableConnector';
import getPathWithUrlBase from 'Utilities/getPathWithUrlBase';
import CutoffUnmetConnector from 'Wanted/CutoffUnmet/CutoffUnmetConnector';
@@ -247,7 +247,7 @@ function AppRoutes(props) {
<Route
path="/system/updates"
component={UpdatesConnector}
component={Updates}
/>
<Route

View File

@@ -1,6 +1,7 @@
import AuthorsAppState from './AuthorsAppState';
import CommandAppState from './CommandAppState';
import SettingsAppState from './SettingsAppState';
import SystemAppState from './SystemAppState';
import TagsAppState from './TagsAppState';
interface FilterBuilderPropOption {
@@ -35,10 +36,24 @@ export interface CustomFilter {
filers: PropertyFilter[];
}
export interface AppSectionState {
isConnected: boolean;
isReconnecting: boolean;
version: string;
prevVersion?: string;
dimensions: {
isSmallScreen: boolean;
width: number;
height: number;
};
}
interface AppState {
app: AppSectionState;
authors: AuthorsAppState;
commands: CommandAppState;
settings: SettingsAppState;
system: SystemAppState;
tags: TagsAppState;
}

View File

@@ -1,5 +1,6 @@
import AppSectionState, {
AppSectionDeleteState,
AppSectionItemState,
AppSectionSaveState,
} from 'App/State/AppSectionState';
import DownloadClient from 'typings/DownloadClient';
@@ -7,13 +8,16 @@ import ImportList from 'typings/ImportList';
import Indexer from 'typings/Indexer';
import IndexerFlag from 'typings/IndexerFlag';
import Notification from 'typings/Notification';
import { UiSettings } from 'typings/UiSettings';
import General from 'typings/Settings/General';
import UiSettings from 'typings/Settings/UiSettings';
export interface DownloadClientAppState
extends AppSectionState<DownloadClient>,
AppSectionDeleteState,
AppSectionSaveState {}
export type GeneralAppState = AppSectionItemState<General>;
export interface ImportListAppState
extends AppSectionState<ImportList>,
AppSectionDeleteState,
@@ -33,11 +37,12 @@ export type UiSettingsAppState = AppSectionState<UiSettings>;
interface SettingsAppState {
downloadClients: DownloadClientAppState;
general: GeneralAppState;
importLists: ImportListAppState;
indexerFlags: IndexerFlagSettingsAppState;
indexers: IndexerAppState;
notifications: NotificationAppState;
uiSettings: UiSettingsAppState;
ui: UiSettingsAppState;
}
export default SettingsAppState;

View File

@@ -0,0 +1,13 @@
import SystemStatus from 'typings/SystemStatus';
import Update from 'typings/Update';
import AppSectionState, { AppSectionItemState } from './AppSectionState';
export type SystemStatusAppState = AppSectionItemState<SystemStatus>;
export type UpdateAppState = AppSectionState<Update>;
interface SystemAppState {
updates: UpdateAppState;
status: SystemStatusAppState;
}
export default SystemAppState;

View File

@@ -5,6 +5,7 @@ import dimensions from 'Styles/Variables/dimensions';
import formatDateTime from 'Utilities/Date/formatDateTime';
import getRelativeDate from 'Utilities/Date/getRelativeDate';
import formatBytes from 'Utilities/Number/formatBytes';
import translate from 'Utilities/String/translate';
import AuthorIndexOverviewInfoRow from './AuthorIndexOverviewInfoRow';
import styles from './AuthorIndexOverviewInfo.css';
@@ -76,9 +77,9 @@ function getInfoRowProps(row, props) {
};
}
if (name === 'qualityProfileId') {
if (name === 'qualityProfileId' && !!props.qualityProfile?.name) {
return {
title: 'Quality Profile',
title: translate('QualityProfile'),
iconName: icons.PROFILE,
label: props.qualityProfile.name
};

View File

@@ -235,12 +235,12 @@ class AuthorIndexPoster extends Component {
</div>
}
{
showQualityProfile &&
<div className={styles.title}>
{qualityProfile.name}
</div>
}
{showQualityProfile && !!qualityProfile?.name ? (
<div className={styles.title} title={translate('QualityProfile')}>
{qualityProfile.name}
</div>
) : null}
{
nextAiring &&
<div className={styles.nextAiring}>

View File

@@ -209,7 +209,7 @@ class AuthorIndexRow extends Component {
key={name}
className={styles[name]}
>
{qualityProfile.name}
{qualityProfile?.name ?? ''}
</VirtualTableRowCell>
);
}
@@ -220,7 +220,7 @@ class AuthorIndexRow extends Component {
key={name}
className={styles[name]}
>
{metadataProfile.name}
{metadataProfile?.name ?? ''}
</VirtualTableRowCell>
);
}

View File

@@ -5,6 +5,7 @@ import dimensions from 'Styles/Variables/dimensions';
import formatDateTime from 'Utilities/Date/formatDateTime';
import getRelativeDate from 'Utilities/Date/getRelativeDate';
import formatBytes from 'Utilities/Number/formatBytes';
import translate from 'Utilities/String/translate';
import BookIndexOverviewInfoRow from './BookIndexOverviewInfoRow';
import styles from './BookIndexOverviewInfo.css';
@@ -71,9 +72,9 @@ function getInfoRowProps(row, props) {
};
}
if (name === 'qualityProfileId') {
if (name === 'qualityProfileId' && !!props.qualityProfile?.name) {
return {
title: 'Quality Profile',
title: translate('QualityProfile'),
iconName: icons.PROFILE,
label: props.qualityProfile.name
};

View File

@@ -250,12 +250,12 @@ class BookIndexPoster extends Component {
</div>
}
{
showQualityProfile &&
<div className={styles.title}>
{qualityProfile.name}
</div>
}
{showQualityProfile && !!qualityProfile?.name ? (
<div className={styles.title} title={translate('QualityProfile')}>
{qualityProfile.name}
</div>
) : null}
{
nextAiring &&
<div className={styles.nextAiring}>

View File

@@ -195,7 +195,7 @@ class BookIndexRow extends Component {
key={name}
className={styles[name]}
>
{qualityProfile.name}
{qualityProfile?.name ?? ''}
</VirtualTableRowCell>
);
}

View File

@@ -3,9 +3,9 @@
padding: 0;
font-size: inherit;
}
.isDisabled {
color: var(--disabledColor);
cursor: not-allowed;
&.isDisabled {
color: var(--disabledColor);
cursor: not-allowed;
}
}

View File

@@ -25,3 +25,8 @@
border-radius: 4px;
background-color: var(--cardCenterBackgroundColor);
}
.customFormats {
display: flex;
flex-wrap: wrap;
}

View File

@@ -3,6 +3,7 @@
interface CssExports {
'addSpecification': string;
'center': string;
'customFormats': string;
'deleteButton': string;
'rightButtons': string;
}

View File

@@ -18,7 +18,6 @@ function UpdateSettings(props) {
const {
advancedSettings,
settings,
isWindows,
packageUpdateMechanism,
onInputChange
} = props;
@@ -44,10 +43,10 @@ function UpdateSettings(props) {
value: titleCase(packageUpdateMechanism)
});
} else {
updateOptions.push({ key: 'builtIn', value: 'Built-In' });
updateOptions.push({ key: 'builtIn', value: translate('BuiltIn') });
}
updateOptions.push({ key: 'script', value: 'Script' });
updateOptions.push({ key: 'script', value: translate('Script') });
return (
<FieldSet legend={translate('Updates')}>
@@ -60,8 +59,8 @@ function UpdateSettings(props) {
<FormInputGroup
type={inputTypes.AUTO_COMPLETE}
name="branch"
helpText={usingExternalUpdateMechanism ? translate('UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism') : translate('UsingExternalUpdateMechanismBranchToUseToUpdateReadarr')}
helpLink="https://wiki.servarr.com/readarr/faq#how-do-I-update-my-readarr"
helpText={usingExternalUpdateMechanism ? translate('BranchUpdateMechanism') : translate('BranchUpdate')}
helpLink="https://wiki.servarr.com/readarr/settings#updates"
{...branch}
values={branchValues}
onChange={onInputChange}
@@ -69,62 +68,59 @@ function UpdateSettings(props) {
/>
</FormGroup>
{
!isWindows &&
<div>
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}
size={sizes.MEDIUM}
>
<FormLabel>{translate('Automatic')}</FormLabel>
<div>
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}
size={sizes.MEDIUM}
>
<FormLabel>{translate('Automatic')}</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="updateAutomatically"
helpText={translate('UpdateAutomaticallyHelpText')}
helpTextWarning={updateMechanism.value === 'docker' ? translate('AutomaticUpdatesDisabledDocker', { appName: 'Readarr' }) : undefined}
onChange={onInputChange}
{...updateAutomatically}
/>
</FormGroup>
<FormInputGroup
type={inputTypes.CHECK}
name="updateAutomatically"
helpText={translate('UpdateAutomaticallyHelpText')}
helpTextWarning={updateMechanism.value === 'docker' ? translate('AutomaticUpdatesDisabledDocker') : undefined}
onChange={onInputChange}
{...updateAutomatically}
/>
</FormGroup>
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}
>
<FormLabel>{translate('Mechanism')}</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
name="updateMechanism"
values={updateOptions}
helpText={translate('UpdateMechanismHelpText')}
helpLink="https://wiki.servarr.com/readarr/settings#updates"
onChange={onInputChange}
{...updateMechanism}
/>
</FormGroup>
{
updateMechanism.value === 'script' &&
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}
>
<FormLabel>{translate('Mechanism')}</FormLabel>
<FormLabel>{translate('ScriptPath')}</FormLabel>
<FormInputGroup
type={inputTypes.SELECT}
name="updateMechanism"
values={updateOptions}
helpText={translate('UpdateMechanismHelpText')}
helpLink="https://wiki.servarr.com/readarr/faq#how-do-i-update-my-readarr"
type={inputTypes.TEXT}
name="updateScriptPath"
helpText={translate('UpdateScriptPathHelpText')}
onChange={onInputChange}
{...updateMechanism}
{...updateScriptPath}
/>
</FormGroup>
{
updateMechanism.value === 'script' &&
<FormGroup
advancedSettings={advancedSettings}
isAdvanced={true}
>
<FormLabel>{translate('ScriptPath')}</FormLabel>
<FormInputGroup
type={inputTypes.TEXT}
name="updateScriptPath"
helpText={translate('UpdateScriptPathHelpText')}
onChange={onInputChange}
{...updateScriptPath}
/>
</FormGroup>
}
</div>
}
}
</div>
</FieldSet>
);
}

View File

@@ -76,7 +76,7 @@ function EditImportListExclusionModalContent(props) {
<FormGroup>
<FormLabel>
{translate('MusicbrainzId')}
{translate('ForeignId')}
</FormLabel>
<FormInputGroup

View File

@@ -8,6 +8,7 @@ import TagListConnector from 'Components/TagListConnector';
import { createMetadataProfileSelectorForHook } from 'Store/Selectors/createMetadataProfileSelector';
import { createQualityProfileSelectorForHook } from 'Store/Selectors/createQualityProfileSelector';
import { SelectStateInputProps } from 'typings/props';
import translate from 'Utilities/String/translate';
import styles from './ManageImportListsModalRow.css';
interface ManageImportListsModalRowProps {
@@ -70,7 +71,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) {
</TableRowCell>
<TableRowCell className={styles.qualityProfileId}>
{qualityProfile?.name ?? 'None'}
{qualityProfile?.name ?? translate('None')}
</TableRowCell>
<TableRowCell className={styles.metadataProfileId}>
@@ -82,7 +83,7 @@ function ManageImportListsModalRow(props: ManageImportListsModalRowProps) {
</TableRowCell>
<TableRowCell className={styles.enableAutomaticAdd}>
{enableAutomaticAdd ? 'Yes' : 'No'}
{enableAutomaticAdd ? translate('Yes') : translate('No')}
</TableRowCell>
<TableRowCell className={styles.tags}>

View File

@@ -1,4 +1,3 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import { connect } from 'react-redux';
@@ -15,11 +14,11 @@ function createMapStateToProps() {
(state) => state.settings.advancedSettings,
(state) => state.settings.namingExamples,
createSettingsSectionSelector(SECTION),
(advancedSettings, examples, sectionSettings) => {
(advancedSettings, namingExamples, sectionSettings) => {
return {
advancedSettings,
examples: examples.item,
examplesPopulated: !_.isEmpty(examples.item),
examples: namingExamples.item,
examplesPopulated: namingExamples.isPopulated,
...sectionSettings
};
}

View File

@@ -75,12 +75,12 @@ class RootFolder extends Component {
{path}
</Label>
<Label kind={kinds.SUCCESS}>
{qualityProfile.name}
<Label kind={qualityProfile?.name ? kinds.SUCCESS : kinds.DANGER}>
{qualityProfile?.name || translate('None')}
</Label>
<Label kind={kinds.SUCCESS}>
{metadataProfile.name}
<Label kind={metadataProfile?.name ? kinds.SUCCESS : kinds.DANGER}>
{metadataProfile?.name || translate('None')}
</Label>
</div>

View File

@@ -45,6 +45,12 @@ export const defaultState = {
isSortable: true,
isVisible: true
},
{
name: 'books.lastSearchTime',
label: 'Last Searched',
isSortable: true,
isVisible: false
},
{
name: 'actions',
columnLabel: 'Actions',
@@ -108,6 +114,12 @@ export const defaultState = {
isSortable: true,
isVisible: true
},
{
name: 'books.lastSearchTime',
label: 'Last Searched',
isSortable: true,
isVisible: false
},
{
name: 'actions',
columnLabel: 'Actions',

View File

@@ -1,50 +0,0 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import InlineMarkdown from 'Components/Markdown/InlineMarkdown';
import styles from './UpdateChanges.css';
class UpdateChanges extends Component {
//
// Render
render() {
const {
title,
changes
} = this.props;
if (changes.length === 0) {
return null;
}
return (
<div>
<div className={styles.title}>{title}</div>
<ul>
{
changes.map((change, index) => {
const checkChange = change.replace(/#\d{4,5}\b/g, (match, contents) => {
return `[${match}](https://github.com/Readarr/Readarr/issues/${match.substring(1)})`;
});
return (
<li key={index}>
<InlineMarkdown data={checkChange} />
</li>
);
})
}
</ul>
</div>
);
}
}
UpdateChanges.propTypes = {
title: PropTypes.string.isRequired,
changes: PropTypes.arrayOf(PropTypes.string)
};
export default UpdateChanges;

View File

@@ -0,0 +1,43 @@
import React from 'react';
import InlineMarkdown from 'Components/Markdown/InlineMarkdown';
import styles from './UpdateChanges.css';
interface UpdateChangesProps {
title: string;
changes: string[];
}
function UpdateChanges(props: UpdateChangesProps) {
const { title, changes } = props;
if (changes.length === 0) {
return null;
}
const uniqueChanges = [...new Set(changes)];
return (
<div>
<div className={styles.title}>{title}</div>
<ul>
{uniqueChanges.map((change, index) => {
const checkChange = change.replace(
/#\d{4,5}\b/g,
(match) =>
`[${match}](https://github.com/Readarr/Readarr/issues/${match.substring(
1
)})`
);
return (
<li key={index}>
<InlineMarkdown data={checkChange} />
</li>
);
})}
</ul>
</div>
);
}
export default UpdateChanges;

View File

@@ -1,252 +0,0 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component, Fragment } from 'react';
import Alert from 'Components/Alert';
import Icon from 'Components/Icon';
import Label from 'Components/Label';
import SpinnerButton from 'Components/Link/SpinnerButton';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import InlineMarkdown from 'Components/Markdown/InlineMarkdown';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import { icons, kinds } from 'Helpers/Props';
import formatDate from 'Utilities/Date/formatDate';
import formatDateTime from 'Utilities/Date/formatDateTime';
import translate from 'Utilities/String/translate';
import UpdateChanges from './UpdateChanges';
import styles from './Updates.css';
class Updates extends Component {
//
// Render
render() {
const {
currentVersion,
isFetching,
isPopulated,
updatesError,
generalSettingsError,
items,
isInstallingUpdate,
updateMechanism,
isDocker,
updateMechanismMessage,
shortDateFormat,
longDateFormat,
timeFormat,
onInstallLatestPress
} = this.props;
const hasError = !!(updatesError || generalSettingsError);
const hasUpdates = isPopulated && !hasError && items.length > 0;
const noUpdates = isPopulated && !hasError && !items.length;
const hasUpdateToInstall = hasUpdates && _.some(items, { installable: true, latest: true });
const noUpdateToInstall = hasUpdates && !hasUpdateToInstall;
const externalUpdaterPrefix = 'Unable to update Readarr directly,';
const externalUpdaterMessages = {
external: 'Readarr is configured to use an external update mechanism',
apt: 'use apt to install the update',
docker: 'update the docker container to receive the update'
};
return (
<PageContent title={translate('Updates')}>
<PageContentBody>
{
!isPopulated && !hasError &&
<LoadingIndicator />
}
{
noUpdates &&
<Alert kind={kinds.INFO}>
{translate('NoUpdatesAreAvailable')}
</Alert>
}
{
hasUpdateToInstall &&
<div className={styles.messageContainer}>
{
(updateMechanism === 'builtIn' || updateMechanism === 'script') && !isDocker ?
<SpinnerButton
className={styles.updateAvailable}
kind={kinds.PRIMARY}
isSpinning={isInstallingUpdate}
onPress={onInstallLatestPress}
>
Install Latest
</SpinnerButton> :
<Fragment>
<Icon
name={icons.WARNING}
kind={kinds.WARNING}
size={30}
/>
<div className={styles.message}>
{externalUpdaterPrefix} <InlineMarkdown data={updateMechanismMessage || externalUpdaterMessages[updateMechanism] || externalUpdaterMessages.external} />
</div>
</Fragment>
}
{
isFetching &&
<LoadingIndicator
className={styles.loading}
size={20}
/>
}
</div>
}
{
noUpdateToInstall &&
<div className={styles.messageContainer}>
<Icon
className={styles.upToDateIcon}
name={icons.CHECK_CIRCLE}
size={30}
/>
<div className={styles.message}>
The latest version of Readarr is already installed
</div>
{
isFetching &&
<LoadingIndicator
className={styles.loading}
size={20}
/>
}
</div>
}
{
hasUpdates &&
<div>
{
items.map((update) => {
const hasChanges = !!update.changes;
return (
<div
key={update.version}
className={styles.update}
>
<div className={styles.info}>
<div className={styles.version}>{update.version}</div>
<div className={styles.space}>&mdash;</div>
<div
className={styles.date}
title={formatDateTime(update.releaseDate, longDateFormat, timeFormat)}
>
{formatDate(update.releaseDate, shortDateFormat)}
</div>
{
update.branch === 'master' ?
null :
<Label
className={styles.label}
>
{update.branch}
</Label>
}
{
update.version === currentVersion ?
<Label
className={styles.label}
kind={kinds.SUCCESS}
title={formatDateTime(update.installedOn, longDateFormat, timeFormat)}
>
Currently Installed
</Label> :
null
}
{
update.version !== currentVersion && update.installedOn ?
<Label
className={styles.label}
kind={kinds.INVERSE}
title={formatDateTime(update.installedOn, longDateFormat, timeFormat)}
>
Previously Installed
</Label> :
null
}
</div>
{
!hasChanges &&
<div>
{translate('MaintenanceRelease')}
</div>
}
{
hasChanges &&
<div className={styles.changes}>
<UpdateChanges
title={translate('New')}
changes={update.changes.new}
/>
<UpdateChanges
title={translate('Fixed')}
changes={update.changes.fixed}
/>
</div>
}
</div>
);
})
}
</div>
}
{
!!updatesError &&
<div>
Failed to fetch updates
</div>
}
{
!!generalSettingsError &&
<div>
Failed to update settings
</div>
}
</PageContentBody>
</PageContent>
);
}
}
Updates.propTypes = {
currentVersion: PropTypes.string.isRequired,
isFetching: PropTypes.bool.isRequired,
isPopulated: PropTypes.bool.isRequired,
updatesError: PropTypes.object,
generalSettingsError: PropTypes.object,
items: PropTypes.array.isRequired,
isInstallingUpdate: PropTypes.bool.isRequired,
isDocker: PropTypes.bool.isRequired,
updateMechanism: PropTypes.string,
updateMechanismMessage: PropTypes.string,
shortDateFormat: PropTypes.string.isRequired,
longDateFormat: PropTypes.string.isRequired,
timeFormat: PropTypes.string.isRequired,
onInstallLatestPress: PropTypes.func.isRequired
};
export default Updates;

View File

@@ -0,0 +1,303 @@
import React, { useCallback, useEffect, useMemo, useState } from 'react';
import { useDispatch, useSelector } from 'react-redux';
import { createSelector } from 'reselect';
import AppState from 'App/State/AppState';
import * as commandNames from 'Commands/commandNames';
import Alert from 'Components/Alert';
import Icon from 'Components/Icon';
import Label from 'Components/Label';
import SpinnerButton from 'Components/Link/SpinnerButton';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import InlineMarkdown from 'Components/Markdown/InlineMarkdown';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import { icons, kinds } from 'Helpers/Props';
import { executeCommand } from 'Store/Actions/commandActions';
import { fetchGeneralSettings } from 'Store/Actions/settingsActions';
import { fetchUpdates } from 'Store/Actions/systemActions';
import createCommandExecutingSelector from 'Store/Selectors/createCommandExecutingSelector';
import createSystemStatusSelector from 'Store/Selectors/createSystemStatusSelector';
import createUISettingsSelector from 'Store/Selectors/createUISettingsSelector';
import { UpdateMechanism } from 'typings/Settings/General';
import formatDate from 'Utilities/Date/formatDate';
import formatDateTime from 'Utilities/Date/formatDateTime';
import translate from 'Utilities/String/translate';
import UpdateChanges from './UpdateChanges';
import styles from './Updates.css';
const VERSION_REGEX = /\d+\.\d+\.\d+\.\d+/i;
function createUpdatesSelector() {
return createSelector(
(state: AppState) => state.system.updates,
(state: AppState) => state.settings.general,
(updates, generalSettings) => {
const { error: updatesError, items } = updates;
const isFetching = updates.isFetching || generalSettings.isFetching;
const isPopulated = updates.isPopulated && generalSettings.isPopulated;
return {
isFetching,
isPopulated,
updatesError,
generalSettingsError: generalSettings.error,
items,
updateMechanism: generalSettings.item.updateMechanism,
};
}
);
}
function Updates() {
const currentVersion = useSelector((state: AppState) => state.app.version);
const { packageUpdateMechanismMessage } = useSelector(
createSystemStatusSelector()
);
const { shortDateFormat, longDateFormat, timeFormat } = useSelector(
createUISettingsSelector()
);
const isInstallingUpdate = useSelector(
createCommandExecutingSelector(commandNames.APPLICATION_UPDATE)
);
const {
isFetching,
isPopulated,
updatesError,
generalSettingsError,
items,
updateMechanism,
} = useSelector(createUpdatesSelector());
const dispatch = useDispatch();
const [isMajorUpdateModalOpen, setIsMajorUpdateModalOpen] = useState(false);
const hasError = !!(updatesError || generalSettingsError);
const hasUpdates = isPopulated && !hasError && items.length > 0;
const noUpdates = isPopulated && !hasError && !items.length;
const externalUpdaterPrefix = translate('UpdateAppDirectlyLoadError');
const externalUpdaterMessages: Partial<Record<UpdateMechanism, string>> = {
external: translate('ExternalUpdater'),
apt: translate('AptUpdater'),
docker: translate('DockerUpdater'),
};
const { isMajorUpdate, hasUpdateToInstall } = useMemo(() => {
const majorVersion = parseInt(
currentVersion.match(VERSION_REGEX)?.[0] ?? '0'
);
const latestVersion = items[0]?.version;
const latestMajorVersion = parseInt(
latestVersion?.match(VERSION_REGEX)?.[0] ?? '0'
);
return {
isMajorUpdate: latestMajorVersion > majorVersion,
hasUpdateToInstall: items.some(
(update) => update.installable && update.latest
),
};
}, [currentVersion, items]);
const noUpdateToInstall = hasUpdates && !hasUpdateToInstall;
const handleInstallLatestPress = useCallback(() => {
if (isMajorUpdate) {
setIsMajorUpdateModalOpen(true);
} else {
dispatch(executeCommand({ name: commandNames.APPLICATION_UPDATE }));
}
}, [isMajorUpdate, setIsMajorUpdateModalOpen, dispatch]);
const handleInstallLatestMajorVersionPress = useCallback(() => {
setIsMajorUpdateModalOpen(false);
dispatch(
executeCommand({
name: commandNames.APPLICATION_UPDATE,
installMajorUpdate: true,
})
);
}, [setIsMajorUpdateModalOpen, dispatch]);
const handleCancelMajorVersionPress = useCallback(() => {
setIsMajorUpdateModalOpen(false);
}, [setIsMajorUpdateModalOpen]);
useEffect(() => {
dispatch(fetchUpdates());
dispatch(fetchGeneralSettings());
}, [dispatch]);
return (
<PageContent title={translate('Updates')}>
<PageContentBody>
{isPopulated || hasError ? null : <LoadingIndicator />}
{noUpdates ? (
<Alert kind={kinds.INFO}>{translate('NoUpdatesAreAvailable')}</Alert>
) : null}
{hasUpdateToInstall ? (
<div className={styles.messageContainer}>
{updateMechanism === 'builtIn' || updateMechanism === 'script' ? (
<SpinnerButton
kind={kinds.PRIMARY}
isSpinning={isInstallingUpdate}
onPress={handleInstallLatestPress}
>
{translate('InstallLatest')}
</SpinnerButton>
) : (
<>
<Icon name={icons.WARNING} kind={kinds.WARNING} size={30} />
<div className={styles.message}>
{externalUpdaterPrefix}{' '}
<InlineMarkdown
data={
packageUpdateMechanismMessage ||
externalUpdaterMessages[updateMechanism] ||
externalUpdaterMessages.external
}
/>
</div>
</>
)}
{isFetching ? (
<LoadingIndicator className={styles.loading} size={20} />
) : null}
</div>
) : null}
{noUpdateToInstall && (
<div className={styles.messageContainer}>
<Icon
className={styles.upToDateIcon}
name={icons.CHECK_CIRCLE}
size={30}
/>
<div className={styles.message}>{translate('OnLatestVersion')}</div>
{isFetching && (
<LoadingIndicator className={styles.loading} size={20} />
)}
</div>
)}
{hasUpdates && (
<div>
{items.map((update) => {
return (
<div key={update.version} className={styles.update}>
<div className={styles.info}>
<div className={styles.version}>{update.version}</div>
<div className={styles.space}>&mdash;</div>
<div
className={styles.date}
title={formatDateTime(
update.releaseDate,
longDateFormat,
timeFormat
)}
>
{formatDate(update.releaseDate, shortDateFormat)}
</div>
{update.branch === 'master' ? null : (
<Label className={styles.label}>{update.branch}</Label>
)}
{update.version === currentVersion ? (
<Label
className={styles.label}
kind={kinds.SUCCESS}
title={formatDateTime(
update.installedOn,
longDateFormat,
timeFormat
)}
>
{translate('CurrentlyInstalled')}
</Label>
) : null}
{update.version !== currentVersion && update.installedOn ? (
<Label
className={styles.label}
kind={kinds.INVERSE}
title={formatDateTime(
update.installedOn,
longDateFormat,
timeFormat
)}
>
{translate('PreviouslyInstalled')}
</Label>
) : null}
</div>
{update.changes ? (
<div>
<UpdateChanges
title={translate('New')}
changes={update.changes.new}
/>
<UpdateChanges
title={translate('Fixed')}
changes={update.changes.fixed}
/>
</div>
) : (
<div>{translate('MaintenanceRelease')}</div>
)}
</div>
);
})}
</div>
)}
{updatesError ? (
<Alert kind={kinds.WARNING}>
{translate('FailedToFetchUpdates')}
</Alert>
) : null}
{generalSettingsError ? (
<Alert kind={kinds.DANGER}>
{translate('FailedToFetchSettings')}
</Alert>
) : null}
<ConfirmModal
isOpen={isMajorUpdateModalOpen}
kind={kinds.WARNING}
title={translate('InstallMajorVersionUpdate')}
message={
<div>
<div>{translate('InstallMajorVersionUpdateMessage')}</div>
<div>
<InlineMarkdown
data={translate('InstallMajorVersionUpdateMessageLink', {
domain: 'readarr.com',
url: 'https://readarr.com/#downloads',
})}
/>
</div>
</div>
}
confirmLabel={translate('Install')}
onConfirm={handleInstallLatestMajorVersionPress}
onCancel={handleCancelMajorVersionPress}
/>
</PageContentBody>
</PageContent>
);
}
export default Updates;

View File

@@ -131,13 +131,15 @@ class CutoffUnmetConnector extends Component {
onSearchSelectedPress = (selected) => {
this.props.executeCommand({
name: commandNames.BOOK_SEARCH,
bookIds: selected
bookIds: selected,
commandFinished: this.repopulate
});
};
onSearchAllCutoffUnmetPress = () => {
this.props.executeCommand({
name: commandNames.CUTOFF_UNMET_BOOK_SEARCH
name: commandNames.CUTOFF_UNMET_BOOK_SEARCH,
commandFinished: this.repopulate
});
};

View File

@@ -16,6 +16,7 @@ function CutoffUnmetRow(props) {
releaseDate,
titleSlug,
title,
lastSearchTime,
disambiguation,
isSelected,
columns,
@@ -68,6 +69,15 @@ function CutoffUnmetRow(props) {
);
}
if (name === 'books.lastSearchTime') {
return (
<RelativeDateCellConnector
key={name}
date={lastSearchTime}
/>
);
}
if (name === 'releaseDate') {
return (
<RelativeDateCellConnector
@@ -105,6 +115,7 @@ CutoffUnmetRow.propTypes = {
releaseDate: PropTypes.string.isRequired,
titleSlug: PropTypes.string.isRequired,
title: PropTypes.string.isRequired,
lastSearchTime: PropTypes.string,
disambiguation: PropTypes.string,
isSelected: PropTypes.bool,
columns: PropTypes.arrayOf(PropTypes.object).isRequired,

View File

@@ -121,13 +121,15 @@ class MissingConnector extends Component {
onSearchSelectedPress = (selected) => {
this.props.executeCommand({
name: commandNames.BOOK_SEARCH,
bookIds: selected
bookIds: selected,
commandFinished: this.repopulate
});
};
onSearchAllMissingPress = () => {
this.props.executeCommand({
name: commandNames.MISSING_BOOK_SEARCH
name: commandNames.MISSING_BOOK_SEARCH,
commandFinished: this.repopulate
});
};

View File

@@ -16,6 +16,7 @@ function MissingRow(props) {
releaseDate,
titleSlug,
title,
lastSearchTime,
disambiguation,
isSelected,
columns,
@@ -77,6 +78,15 @@ function MissingRow(props) {
);
}
if (name === 'books.lastSearchTime') {
return (
<RelativeDateCellConnector
key={name}
date={lastSearchTime}
/>
);
}
if (name === 'actions') {
return (
<BookSearchCellConnector
@@ -104,6 +114,7 @@ MissingRow.propTypes = {
releaseDate: PropTypes.string.isRequired,
titleSlug: PropTypes.string.isRequired,
title: PropTypes.string.isRequired,
lastSearchTime: PropTypes.string,
disambiguation: PropTypes.string,
isSelected: PropTypes.bool,
columns: PropTypes.arrayOf(PropTypes.object).isRequired,

View File

@@ -0,0 +1,45 @@
export type UpdateMechanism =
| 'builtIn'
| 'script'
| 'external'
| 'apt'
| 'docker';
export default interface General {
bindAddress: string;
port: number;
sslPort: number;
enableSsl: boolean;
launchBrowser: boolean;
authenticationMethod: string;
authenticationRequired: string;
analyticsEnabled: boolean;
username: string;
password: string;
passwordConfirmation: string;
logLevel: string;
consoleLogLevel: string;
branch: string;
apiKey: string;
sslCertPath: string;
sslCertPassword: string;
urlBase: string;
instanceName: string;
applicationUrl: string;
updateAutomatically: boolean;
updateMechanism: UpdateMechanism;
updateScriptPath: string;
proxyEnabled: boolean;
proxyType: string;
proxyHostname: string;
proxyPort: number;
proxyUsername: string;
proxyPassword: string;
proxyBypassFilter: string;
proxyBypassLocalAddresses: boolean;
certificateValidation: string;
backupFolder: string;
backupInterval: number;
backupRetention: number;
id: number;
}

View File

@@ -1,4 +1,5 @@
export interface UiSettings {
export default interface UiSettings {
theme: 'auto' | 'dark' | 'light';
showRelativeDates: boolean;
shortDateFormat: string;
longDateFormat: string;

View File

@@ -0,0 +1,32 @@
interface SystemStatus {
appData: string;
appName: string;
authentication: string;
branch: string;
buildTime: string;
instanceName: string;
isAdmin: boolean;
isDebug: boolean;
isDocker: boolean;
isLinux: boolean;
isNetCore: boolean;
isOsx: boolean;
isProduction: boolean;
isUserInteractive: boolean;
isWindows: boolean;
migrationVersion: number;
mode: string;
osName: string;
osVersion: string;
packageUpdateMechanism: string;
packageUpdateMechanismMessage: string;
runtimeName: string;
runtimeVersion: string;
sqliteVersion: string;
startTime: string;
startupPath: string;
urlBase: string;
version: string;
}
export default SystemStatus;

View File

@@ -0,0 +1,20 @@
export interface Changes {
new: string[];
fixed: string[];
}
interface Update {
version: string;
branch: string;
releaseDate: string;
fileName: string;
url: string;
installed: boolean;
installedOn: string;
installable: boolean;
latest: boolean;
changes: Changes | null;
hash: string;
}
export default Update;

View File

@@ -25,34 +25,33 @@
"defaults"
],
"dependencies": {
"@fortawesome/fontawesome-free": "6.4.0",
"@fortawesome/fontawesome-svg-core": "6.4.0",
"@fortawesome/free-regular-svg-icons": "6.4.0",
"@fortawesome/free-solid-svg-icons": "6.4.0",
"@fortawesome/react-fontawesome": "0.2.0",
"@fortawesome/fontawesome-free": "6.7.1",
"@fortawesome/fontawesome-svg-core": "6.7.1",
"@fortawesome/free-regular-svg-icons": "6.7.1",
"@fortawesome/free-solid-svg-icons": "6.7.1",
"@fortawesome/react-fontawesome": "0.2.2",
"@microsoft/signalr": "6.0.25",
"@sentry/browser": "7.51.2",
"@sentry/integrations": "7.51.2",
"@types/node": "18.19.31",
"@sentry/browser": "7.119.1",
"@sentry/integrations": "7.119.1",
"@types/node": "20.16.11",
"@types/react": "18.2.79",
"@types/react-dom": "18.2.25",
"ansi-colors": "4.1.3",
"classnames": "2.3.2",
"classnames": "2.5.1",
"clipboard": "2.0.11",
"connected-react-router": "6.9.3",
"element-class": "0.2.2",
"filesize": "10.0.7",
"filesize": "10.1.6",
"fuse.js": "6.6.2",
"history": "4.10.1",
"jdu": "1.0.0",
"jquery": "3.7.0",
"jquery": "3.7.1",
"lodash": "4.17.21",
"mobile-detect": "1.4.5",
"moment": "2.29.4",
"moment": "2.30.1",
"mousetrap": "1.6.5",
"normalize.css": "8.0.1",
"prop-types": "15.8.1",
"qs": "6.11.1",
"qs": "6.13.0",
"react": "17.0.2",
"react-addons-shallow-compare": "15.6.3",
"react-async-script": "1.2.0",
@@ -64,7 +63,7 @@
"react-dnd-touch-backend": "14.1.1",
"react-document-title": "2.0.3",
"react-dom": "17.0.2",
"react-focus-lock": "2.5.2",
"react-focus-lock": "2.9.4",
"react-google-recaptcha": "2.1.0",
"react-lazyload": "3.2.0",
"react-measure": "2.5.2",
@@ -73,80 +72,77 @@
"react-redux": "7.2.4",
"react-router": "5.2.0",
"react-router-dom": "5.2.0",
"react-slider": "1.3.1",
"react-tabs": "3.2.2",
"react-text-truncate": "0.18.0",
"react-slider": "1.3.3",
"react-tabs": "4.3.0",
"react-text-truncate": "0.19.0",
"react-virtualized": "9.21.1",
"redux": "4.1.0",
"redux": "4.2.1",
"redux-actions": "2.6.5",
"redux-batched-actions": "0.5.0",
"redux-localstorage": "0.4.1",
"redux-thunk": "2.3.0",
"redux-thunk": "2.4.2",
"reselect": "4.1.8",
"stacktrace-js": "2.0.2",
"typescript": "5.1.6"
},
"devDependencies": {
"@babel/core": "7.24.4",
"@babel/eslint-parser": "7.24.1",
"@babel/plugin-proposal-export-default-from": "7.24.1",
"@babel/core": "7.26.0",
"@babel/eslint-parser": "7.25.9",
"@babel/plugin-proposal-export-default-from": "7.25.9",
"@babel/plugin-syntax-dynamic-import": "7.8.3",
"@babel/preset-env": "7.24.4",
"@babel/preset-react": "7.24.1",
"@babel/preset-typescript": "7.24.1",
"@babel/preset-env": "7.26.0",
"@babel/preset-react": "7.26.3",
"@babel/preset-typescript": "7.26.0",
"@types/lodash": "4.14.195",
"@types/react-lazyload": "3.2.0",
"@types/redux-actions": "2.6.2",
"@types/react-lazyload": "3.2.3",
"@types/redux-actions": "2.6.5",
"@typescript-eslint/eslint-plugin": "6.21.0",
"@typescript-eslint/parser": "6.21.0",
"autoprefixer": "10.4.14",
"babel-loader": "9.1.3",
"autoprefixer": "10.4.20",
"babel-loader": "9.2.1",
"babel-plugin-inline-classnames": "2.0.1",
"babel-plugin-transform-react-remove-prop-types": "0.4.24",
"core-js": "3.37.0",
"core-js": "3.39.0",
"css-loader": "6.8.1",
"css-modules-typescript-loader": "4.0.1",
"eslint": "8.57.0",
"eslint": "8.57.1",
"eslint-config-prettier": "8.10.0",
"eslint-plugin-filenames": "1.3.2",
"eslint-plugin-import": "2.29.1",
"eslint-plugin-json": "3.1.0",
"eslint-plugin-import": "2.31.0",
"eslint-plugin-prettier": "4.2.1",
"eslint-plugin-react": "7.34.1",
"eslint-plugin-react-hooks": "4.6.0",
"eslint-plugin-simple-import-sort": "12.1.0",
"eslint-plugin-react": "7.37.1",
"eslint-plugin-react-hooks": "4.6.2",
"eslint-plugin-simple-import-sort": "12.1.1",
"file-loader": "6.2.0",
"filemanager-webpack-plugin": "8.0.0",
"fork-ts-checker-webpack-plugin": "8.0.0",
"html-webpack-plugin": "5.5.3",
"html-webpack-plugin": "5.6.0",
"loader-utils": "^3.2.1",
"mini-css-extract-plugin": "2.7.6",
"postcss": "8.4.38",
"mini-css-extract-plugin": "2.9.1",
"postcss": "8.4.47",
"postcss-color-function": "4.1.0",
"postcss-loader": "7.3.0",
"postcss-mixins": "9.0.4",
"postcss-nested": "6.0.1",
"postcss-nested": "6.2.0",
"postcss-simple-vars": "7.0.1",
"postcss-url": "10.1.3",
"prettier": "2.8.8",
"require-nocache": "1.0.0",
"rimraf": "4.4.1",
"run-sequence": "2.2.1",
"streamqueue": "1.1.2",
"style-loader": "3.3.3",
"rimraf": "6.0.1",
"style-loader": "3.3.4",
"stylelint": "15.10.3",
"stylelint-order": "6.0.3",
"terser-webpack-plugin": "5.3.9",
"ts-loader": "9.4.4",
"stylelint-order": "6.0.4",
"terser-webpack-plugin": "5.3.10",
"ts-loader": "9.5.1",
"typescript-plugin-css-modules": "5.0.1",
"url-loader": "4.1.1",
"webpack": "5.88.2",
"webpack": "5.95.0",
"webpack-cli": "5.1.4",
"webpack-livereload-plugin": "3.0.2",
"worker-loader": "3.0.8"
},
"volta": {
"node": "16.17.0",
"node": "20.11.1",
"yarn": "1.22.19"
}
}

View File

@@ -99,6 +99,35 @@
<RootNamespace Condition="'$(ReadarrProject)'=='true'">$(MSBuildProjectName.Replace('Readarr','NzbDrone'))</RootNamespace>
</PropertyGroup>
<ItemGroup Condition="'$(TestProject)'!='true'">
<!-- Annotates .NET assemblies with repository information including SHA -->
<!-- Sentry uses this to link directly to GitHub at the exact version/file/line -->
<!-- This is built-in on .NET 8 and can be removed once the project is updated -->
<PackageReference Include="Microsoft.SourceLink.GitHub" />
</ItemGroup>
<!-- Sentry specific configuration: Only in Release mode -->
<PropertyGroup Condition="'$(Configuration)' == 'Release'">
<!-- https://docs.sentry.io/platforms/dotnet/configuration/msbuild/ -->
<!-- OrgSlug, ProjectSlug and AuthToken are required.
They can be set below, via argument to 'msbuild -p:' or environment variable -->
<SentryOrg></SentryOrg>
<SentryProject></SentryProject>
<SentryUrl></SentryUrl> <!-- If empty, assumed to be sentry.io -->
<SentryAuthToken></SentryAuthToken> <!-- Use env var instead: SENTRY_AUTH_TOKEN -->
<!-- Upload PDBs to Sentry, enabling stack traces with line numbers and file paths
without the need to deploy the application with PDBs -->
<SentryUploadSymbols>true</SentryUploadSymbols>
<!-- Source Link settings -->
<!-- https://github.com/dotnet/sourcelink/blob/main/docs/README.md#publishrepositoryurl -->
<PublishRepositoryUrl>true</PublishRepositoryUrl>
<!-- Embeds all source code in the respective PDB. This can make it a bit bigger but since it'll be uploaded
to Sentry and not distributed to run on the server, it helps debug crashes while making releases smaller -->
<EmbedAllSources>true</EmbedAllSources>
</PropertyGroup>
<!-- Standard testing packages -->
<ItemGroup Condition="'$(TestProject)'=='true'">
<PackageReference Include="Microsoft.NET.Test.Sdk" />

View File

@@ -4,26 +4,30 @@
<PackageVersion Include="AutoFixture" Version="4.17.0" />
<PackageVersion Include="coverlet.collector" Version="3.0.4-preview.27.ge7cb7c3b40" PrivateAssets="all" />
<PackageVersion Include="Dapper" Version="2.0.151" />
<PackageVersion Include="Diacritical.Net" Version="1.0.4" />
<PackageVersion Include="DryIoc.dll" Version="5.4.3" />
<PackageVersion Include="DryIoc.Microsoft.DependencyInjection" Version="6.2.0" />
<PackageVersion Include="Equ" Version="2.3.0" />
<PackageVersion Include="FluentAssertions" Version="5.10.3" />
<PackageVersion Include="Polly" Version="8.3.1" />
<PackageVersion Include="IPAddressRange" Version="6.1.0" />
<PackageVersion Include="Polly" Version="8.5.1" />
<PackageVersion Include="Servarr.FluentMigrator.Runner" Version="3.3.2.9" />
<PackageVersion Include="Servarr.FluentMigrator.Runner.SQLite" Version="3.3.2.9" />
<PackageVersion Include="Servarr.FluentMigrator.Runner.Postgres" Version="3.3.2.9" />
<PackageVersion Include="FluentValidation" Version="9.5.4" />
<PackageVersion Include="Ical.Net" Version="4.2.0" />
<PackageVersion Include="Ical.Net" Version="4.3.1" />
<PackageVersion Include="ImpromptuInterface" Version="7.0.1" />
<PackageVersion Include="LazyCache" Version="2.4.0" />
<PackageVersion Include="Mailkit" Version="3.6.0" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.29" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="6.0.1" />
<PackageVersion Include="Mailkit" Version="4.8.0" />
<PackageVersion Include="Microsoft.AspNetCore.SignalR.Client" Version="6.0.35" />
<PackageVersion Include="Microsoft.Data.SqlClient" Version="2.1.7" />
<PackageVersion Include="Microsoft.Extensions.Caching.Memory" Version="6.0.2" />
<PackageVersion Include="Microsoft.Extensions.Configuration" Version="6.0.1" />
<PackageVersion Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
<PackageVersion Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
<PackageVersion Include="Microsoft.Extensions.Logging" Version="6.0.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.9.0" />
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="1.1.1" PrivateAssets="All" />
<PackageVersion Include="Microsoft.Win32.Registry" Version="5.0.0" />
<PackageVersion Include="Mono.Posix.NETStandard" Version="5.20.1.34-servarr22" />
<PackageVersion Include="Moq" Version="4.17.2" />
@@ -33,35 +37,35 @@
<PackageVersion Include="NLog.Extensions.Logging" Version="5.2.3" />
<PackageVersion Include="NLog" Version="5.1.4" />
<PackageVersion Include="NLog.Targets.Syslog" Version="7.0.0" />
<PackageVersion Include="Npgsql" Version="7.0.7" />
<PackageVersion Include="Npgsql" Version="7.0.9" />
<PackageVersion Include="NUnit3TestAdapter" Version="4.2.1" />
<PackageVersion Include="NUnit" Version="3.14.0" />
<PackageVersion Include="NunitXml.TestLogger" Version="3.0.117" />
<PackageVersion Include="PdfSharpCore" Version="1.3.32" />
<PackageVersion Include="PdfSharpCore" Version="1.3.65" />
<PackageVersion Include="RestSharp.Serializers.SystemTextJson" Version="106.15.0" />
<PackageVersion Include="RestSharp" Version="106.15.0" />
<PackageVersion Include="Selenium.Support" Version="3.141.0" />
<PackageVersion Include="Selenium.WebDriver.ChromeDriver" Version="91.0.4472.10100" />
<PackageVersion Include="Sentry" Version="3.31.0" />
<PackageVersion Include="Sentry" Version="4.0.2" />
<PackageVersion Include="SharpZipLib" Version="1.4.2" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.4" />
<PackageVersion Include="SixLabors.ImageSharp" Version="3.1.6" />
<PackageVersion Include="StyleCop.Analyzers" Version="1.1.118" />
<PackageVersion Include="Swashbuckle.AspNetCore.Annotations" Version="6.6.2" />
<PackageVersion Include="Swashbuckle.AspNetCore.SwaggerGen" Version="6.6.2" />
<PackageVersion Include="System.Buffers" Version="4.5.1" />
<PackageVersion Include="System.Buffers" Version="4.6.0" />
<PackageVersion Include="System.Configuration.ConfigurationManager" Version="6.0.1" />
<PackageVersion Include="System.Data.SQLite.Core.Servarr" Version="1.0.115.5-18" />
<PackageVersion Include="System.IO.Abstractions.TestingHelpers" Version="17.0.24" />
<PackageVersion Include="System.IO.Abstractions" Version="17.0.24" />
<PackageVersion Include="System.IO.FileSystem.AccessControl" Version="5.0.0" />
<PackageVersion Include="System.Memory" Version="4.5.5" />
<PackageVersion Include="System.Memory" Version="4.6.0" />
<PackageVersion Include="System.Reflection.TypeExtensions" Version="4.7.0" />
<PackageVersion Include="System.Resources.Extensions" Version="6.0.0" />
<PackageVersion Include="System.Runtime.Loader" Version="4.3.0" />
<PackageVersion Include="System.Security.Principal.Windows" Version="5.0.0" />
<PackageVersion Include="System.ServiceProcess.ServiceController" Version="6.0.1" />
<PackageVersion Include="System.Text.Encoding.CodePages" Version="6.0.0" />
<PackageVersion Include="System.Text.Json" Version="6.0.9" />
<PackageVersion Include="System.Text.Json" Version="6.0.10" />
<PackageVersion Include="System.ValueTuple" Version="4.5.0" />
<PackageVersion Include="TagLibSharp-Lidarr" Version="2.2.0.19" />
</ItemGroup>

View File

@@ -21,9 +21,28 @@ namespace NzbDrone.Common.Test.ExtensionTests
[TestCase("1.2.3.4")]
[TestCase("172.55.0.1")]
[TestCase("192.55.0.1")]
[TestCase("100.64.0.1")]
[TestCase("100.127.255.254")]
public void should_return_false_for_public_ip_address(string ipAddress)
{
IPAddress.Parse(ipAddress).IsLocalAddress().Should().BeFalse();
}
[TestCase("100.64.0.1")]
[TestCase("100.127.255.254")]
[TestCase("100.100.100.100")]
public void should_return_true_for_cgnat_ip_address(string ipAddress)
{
IPAddress.Parse(ipAddress).IsCgnatIpAddress().Should().BeTrue();
}
[TestCase("1.2.3.4")]
[TestCase("192.168.5.1")]
[TestCase("100.63.255.255")]
[TestCase("100.128.0.0")]
public void should_return_false_for_non_cgnat_ip_address(string ipAddress)
{
IPAddress.Parse(ipAddress).IsCgnatIpAddress().Should().BeFalse();
}
}
}

View File

@@ -89,6 +89,10 @@ namespace NzbDrone.Common.Test.InstrumentationTests
[TestCase(@"https://discord.com/api/webhooks/mySecret")]
[TestCase(@"https://discord.com/api/webhooks/mySecret/01233210")]
// Telegram
[TestCase(@"https://api.telegram.org/bot1234567890:mySecret/sendmessage: chat_id=123456&parse_mode=HTML&text=<text>")]
[TestCase(@"https://api.telegram.org/bot1234567890:mySecret/")]
public void should_clean_message(string message)
{
var cleansedMessage = CleanseLogMessage.Cleanse(message);

View File

@@ -4,6 +4,7 @@ using System.Linq;
using FluentAssertions;
using NLog;
using NUnit.Framework;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Instrumentation.Sentry;
using NzbDrone.Test.Common;
@@ -27,7 +28,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
[SetUp]
public void Setup()
{
_subject = new SentryTarget("https://aaaaaaaaaaaaaaaaaaaaaaaaaa@sentry.io/111111");
_subject = new SentryTarget("https://aaaaaaaaaaaaaaaaaaaaaaaaaa@sentry.io/111111", Mocker.GetMock<IAppFolderInfo>().Object);
}
private LogEventInfo GivenLogEvent(LogLevel level, Exception ex, string message)

View File

@@ -42,17 +42,18 @@ namespace NzbDrone.Common
public void CreateZip(string path, IEnumerable<string> files)
{
using (var zipFile = ZipFile.Create(path))
_logger.Debug("Creating archive {0}", path);
using var zipFile = ZipFile.Create(path);
zipFile.BeginUpdate();
foreach (var file in files)
{
zipFile.BeginUpdate();
foreach (var file in files)
{
zipFile.Add(file, Path.GetFileName(file));
}
zipFile.CommitUpdate();
zipFile.Add(file, Path.GetFileName(file));
}
zipFile.CommitUpdate();
}
private void ExtractZip(string compressedFile, string destination)

View File

@@ -342,10 +342,11 @@ namespace NzbDrone.Common.Disk
var isCifs = targetDriveFormat == "cifs";
var isBtrfs = sourceDriveFormat == "btrfs" && targetDriveFormat == "btrfs";
var isZfs = sourceDriveFormat == "zfs" && targetDriveFormat == "zfs";
if (mode.HasFlag(TransferMode.Copy))
{
if (isBtrfs)
if (isBtrfs || isZfs)
{
if (_diskProvider.TryCreateRefLink(sourcePath, targetPath))
{
@@ -359,7 +360,7 @@ namespace NzbDrone.Common.Disk
if (mode.HasFlag(TransferMode.Move))
{
if (isBtrfs)
if (isBtrfs || isZfs)
{
if (isSameMount && _diskProvider.TryRenameFile(sourcePath, targetPath))
{

View File

@@ -39,18 +39,24 @@ namespace NzbDrone.Common.Extensions
private static bool IsLocalIPv4(byte[] ipv4Bytes)
{
// Link local (no IP assigned by DHCP): 169.254.0.0 to 169.254.255.255 (169.254.0.0/16)
bool IsLinkLocal() => ipv4Bytes[0] == 169 && ipv4Bytes[1] == 254;
var isLinkLocal = ipv4Bytes[0] == 169 && ipv4Bytes[1] == 254;
// Class A private range: 10.0.0.0 10.255.255.255 (10.0.0.0/8)
bool IsClassA() => ipv4Bytes[0] == 10;
var isClassA = ipv4Bytes[0] == 10;
// Class B private range: 172.16.0.0 172.31.255.255 (172.16.0.0/12)
bool IsClassB() => ipv4Bytes[0] == 172 && ipv4Bytes[1] >= 16 && ipv4Bytes[1] <= 31;
var isClassB = ipv4Bytes[0] == 172 && ipv4Bytes[1] >= 16 && ipv4Bytes[1] <= 31;
// Class C private range: 192.168.0.0 192.168.255.255 (192.168.0.0/16)
bool IsClassC() => ipv4Bytes[0] == 192 && ipv4Bytes[1] == 168;
var isClassC = ipv4Bytes[0] == 192 && ipv4Bytes[1] == 168;
return IsLinkLocal() || IsClassA() || IsClassC() || IsClassB();
return isLinkLocal || isClassA || isClassC || isClassB;
}
public static bool IsCgnatIpAddress(this IPAddress ipAddress)
{
var bytes = ipAddress.GetAddressBytes();
return bytes.Length == 4 && bytes[0] == 100 && bytes[1] >= 64 && bytes[1] <= 127;
}
}
}

View File

@@ -1,3 +1,4 @@
using System;
using NzbDrone.Common.Extensions;
namespace NzbDrone.Common.Http.Proxy
@@ -29,7 +30,8 @@ namespace NzbDrone.Common.Http.Proxy
{
if (!string.IsNullOrWhiteSpace(BypassFilter))
{
var hostlist = BypassFilter.Split(',');
var hostlist = BypassFilter.Split(',', StringSplitOptions.RemoveEmptyEntries | StringSplitOptions.TrimEntries);
for (var i = 0; i < hostlist.Length; i++)
{
if (hostlist[i].StartsWith("*"))
@@ -41,7 +43,7 @@ namespace NzbDrone.Common.Http.Proxy
return hostlist;
}
return new string[] { };
return Array.Empty<string>();
}
}

View File

@@ -54,7 +54,10 @@ namespace NzbDrone.Common.Instrumentation
new (@"api/v[0-9]/notification/readarr/(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Discord
new (@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase)
new (@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Telegram
new (@"api.telegram.org/bot(?<id>[\d]+):(?<secret>[\w-]+)/", RegexOptions.Compiled | RegexOptions.IgnoreCase)
};
private static readonly Regex CleanseRemoteIPRegex = new (@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled);

View File

@@ -41,7 +41,7 @@ namespace NzbDrone.Common.Instrumentation
RegisterDebugger();
}
RegisterSentry(updateApp);
RegisterSentry(updateApp, appFolderInfo);
if (updateApp)
{
@@ -62,7 +62,7 @@ namespace NzbDrone.Common.Instrumentation
LogManager.ReconfigExistingLoggers();
}
private static void RegisterSentry(bool updateClient)
private static void RegisterSentry(bool updateClient, IAppFolderInfo appFolderInfo)
{
string dsn;
@@ -77,7 +77,7 @@ namespace NzbDrone.Common.Instrumentation
: "https://31e00a6c63ea42c8b5fe70358526a30d@sentry.servarr.com/4";
}
var target = new SentryTarget(dsn)
var target = new SentryTarget(dsn, appFolderInfo)
{
Name = "sentryTarget",
Layout = "${message}"

View File

@@ -9,6 +9,7 @@ using NLog;
using NLog.Common;
using NLog.Targets;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
using Sentry;
namespace NzbDrone.Common.Instrumentation.Sentry
@@ -99,7 +100,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
public bool FilterEvents { get; set; }
public bool SentryEnabled { get; set; }
public SentryTarget(string dsn)
public SentryTarget(string dsn, IAppFolderInfo appFolderInfo)
{
_sdk = SentrySdk.Init(o =>
{
@@ -107,9 +108,33 @@ namespace NzbDrone.Common.Instrumentation.Sentry
o.AttachStacktrace = true;
o.MaxBreadcrumbs = 200;
o.Release = $"{BuildInfo.AppName}@{BuildInfo.Release}";
o.BeforeSend = x => SentryCleanser.CleanseEvent(x);
o.BeforeBreadcrumb = x => SentryCleanser.CleanseBreadcrumb(x);
o.SetBeforeSend(x => SentryCleanser.CleanseEvent(x));
o.SetBeforeBreadcrumb(x => SentryCleanser.CleanseBreadcrumb(x));
o.Environment = BuildInfo.Branch;
// Crash free run statistics (sends a ping for healthy and for crashes sessions)
o.AutoSessionTracking = false;
// Caches files in the event device is offline
// Sentry creates a 'sentry' sub directory, no need to concat here
o.CacheDirectoryPath = appFolderInfo.GetAppDataPath();
// default environment is production
if (!RuntimeInfo.IsProduction)
{
if (RuntimeInfo.IsDevelopment)
{
o.Environment = "development";
}
else if (RuntimeInfo.IsTesting)
{
o.Environment = "testing";
}
else
{
o.Environment = "other";
}
}
});
InitializeScope();
@@ -127,7 +152,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
{
SentrySdk.ConfigureScope(scope =>
{
scope.User = new User
scope.User = new SentryUser
{
Id = HashUtil.AnonymousToken()
};
@@ -169,9 +194,7 @@ namespace NzbDrone.Common.Instrumentation.Sentry
private void OnError(Exception ex)
{
var webException = ex as WebException;
if (webException != null)
if (ex is WebException webException)
{
var response = webException.Response as HttpWebResponse;
var statusCode = response?.StatusCode;
@@ -290,13 +313,21 @@ namespace NzbDrone.Common.Instrumentation.Sentry
}
}
var level = LoggingLevelMap[logEvent.Level];
var sentryEvent = new SentryEvent(logEvent.Exception)
{
Level = LoggingLevelMap[logEvent.Level],
Level = level,
Logger = logEvent.LoggerName,
Message = logEvent.FormattedMessage
};
if (level is SentryLevel.Fatal && logEvent.Exception is not null)
{
// Usages of 'fatal' here indicates the process will crash. In Sentry this is represented with
// the 'unhandled' exception flag
logEvent.Exception.SetSentryMechanism("Logger.Fatal", "Logger.Fatal was called", false);
}
sentryEvent.SetExtras(extras);
sentryEvent.SetFingerprint(fingerPrint);

View File

@@ -6,4 +6,5 @@ public class AuthOptions
public bool? Enabled { get; set; }
public string Method { get; set; }
public string Required { get; set; }
public bool? TrustCgnatIpAddresses { get; set; }
}

View File

@@ -313,7 +313,7 @@ namespace NzbDrone.Common.Processes
processInfo = new ProcessInfo();
processInfo.Id = process.Id;
processInfo.Name = process.ProcessName;
processInfo.StartPath = process.MainModule.FileName;
processInfo.StartPath = process.MainModule?.FileName;
if (process.Id != GetCurrentProcessId() && process.HasExited)
{

View File

@@ -6,6 +6,7 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DryIoc.dll" />
<PackageReference Include="IPAddressRange" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" />
<PackageReference Include="NLog.Extensions.Logging" />

View File

@@ -200,17 +200,9 @@ namespace NzbDrone.Core.Test.Download
var seriesTags = new HashSet<int> { 2 };
var clientTags = new HashSet<int> { 1 };
WithTorrentClient(0, clientTags);
WithTorrentClient(0, clientTags);
WithTorrentClient(0, clientTags);
WithTorrentClient(0, clientTags);
var client1 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
var client2 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
var client3 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
var client4 = Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags);
Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags).Should().BeNull();
Assert.Throws<DownloadClientUnavailableException>(() => Subject.GetDownloadClient(DownloadProtocol.Torrent, 0, false, seriesTags));
}
[Test]

View File

@@ -312,11 +312,12 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DelugeTests
[Test]
public void should_return_status_with_outputdirs()
{
var configItems = new Dictionary<string, object>();
configItems.Add("download_location", @"C:\Downloads\Downloading\deluge".AsOsAgnostic());
configItems.Add("move_completed_path", @"C:\Downloads\Finished\deluge".AsOsAgnostic());
configItems.Add("move_completed", true);
var configItems = new Dictionary<string, object>
{
{ "download_location", @"C:\Downloads\Downloading\deluge".AsOsAgnostic() },
{ "move_completed_path", @"C:\Downloads\Finished\deluge".AsOsAgnostic() },
{ "move_completed", true }
};
Mocker.GetMock<IDelugeProxy>()
.Setup(v => v.GetConfig(It.IsAny<DelugeSettings>()))
@@ -328,5 +329,18 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.DelugeTests
result.OutputRootFolders.Should().NotBeNull();
result.OutputRootFolders.First().Should().Be(@"C:\Downloads\Finished\deluge".AsOsAgnostic());
}
[Test]
public void should_return_status_with_outputdirs_for_directories_in_settings()
{
Subject.Definition.Settings.As<DelugeSettings>().DownloadDirectory = @"D:\Downloads\Downloading\deluge".AsOsAgnostic();
Subject.Definition.Settings.As<DelugeSettings>().CompletedDirectory = @"D:\Downloads\Finished\deluge".AsOsAgnostic();
var result = Subject.GetStatus();
result.IsLocalhost.Should().BeTrue();
result.OutputRootFolders.Should().NotBeNull();
result.OutputRootFolders.First().Should().Be(@"D:\Downloads\Finished\deluge".AsOsAgnostic());
}
}
}

View File

@@ -178,8 +178,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
VerifyWarning(item);
}
[Test]
public void paused_item_should_have_required_properties()
[TestCase("pausedDL")]
[TestCase("stoppedDL")]
public void paused_item_should_have_required_properties(string state)
{
var torrent = new QBittorrentTorrent
{
@@ -188,7 +189,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
Size = 1000,
Progress = 0.7,
Eta = 8640000,
State = "pausedDL",
State = state,
Label = "",
SavePath = ""
};
@@ -200,6 +201,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
[TestCase("queuedUP")]
[TestCase("uploading")]
[TestCase("stalledUP")]
@@ -397,8 +399,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
result.OutputPath.FullPath.Should().Be(Path.Combine(torrent.SavePath, "Droned.S01.12"));
}
[Test]
public void api_261_should_use_content_path()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void api_261_should_use_content_path(string state)
{
var torrent = new QBittorrentTorrent
{
@@ -407,7 +410,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
Size = 1000,
Progress = 0.7,
Eta = 8640000,
State = "pausedUP",
State = state,
Label = "",
SavePath = @"C:\Torrents".AsOsAgnostic(),
ContentPath = @"C:\Torrents\Droned.S01.12".AsOsAgnostic()
@@ -557,6 +560,34 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
result.OutputRootFolders.First().Should().Be(@"C:\Downloads\Finished\QBittorrent".AsOsAgnostic());
}
[Test]
public void should_correct_category_output_path()
{
var config = new QBittorrentPreferences
{
SavePath = @"C:\Downloads\Finished\QBittorrent".AsOsAgnostic()
};
Mocker.GetMock<IQBittorrentProxy>()
.Setup(v => v.GetConfig(It.IsAny<QBittorrentSettings>()))
.Returns(config);
Mocker.GetMock<IQBittorrentProxy>()
.Setup(v => v.GetApiVersion(It.IsAny<QBittorrentSettings>()))
.Returns(new Version(2, 0));
Mocker.GetMock<IQBittorrentProxy>()
.Setup(s => s.GetLabels(It.IsAny<QBittorrentSettings>()))
.Returns(new Dictionary<string, QBittorrentLabel>
{ { "music", new QBittorrentLabel { Name = "music", SavePath = "//server/store/downloads" } } });
var result = Subject.GetStatus();
result.IsLocalhost.Should().BeTrue();
result.OutputRootFolders.Should().NotBeNull();
result.OutputRootFolders.First().Should().Be(@"\\server\store\downloads");
}
[Test]
public async Task Download_should_handle_http_redirect_to_magnet()
{
@@ -656,44 +687,96 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
item.CanMoveFiles.Should().BeFalse();
}
[Test]
public void should_not_be_removable_and_should_not_allow_move_files_if_max_ratio_is_not_set()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_not_be_removable_and_should_not_allow_move_files_if_max_ratio_is_not_set(string state)
{
GivenGlobalSeedLimits(-1);
GivenCompletedTorrent("pausedUP", ratio: 1.0f);
GivenCompletedTorrent(state, ratio: 1.0f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeFalse();
item.CanMoveFiles.Should().BeFalse();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_max_ratio_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_ratio_reached_and_paused(string state)
{
GivenGlobalSeedLimits(1.0f);
GivenCompletedTorrent("pausedUP", ratio: 1.0f);
GivenCompletedTorrent(state, ratio: 1.0f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(1.0f);
GivenCompletedTorrent(state, ratio: 1.1006066990976857f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_just_under_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(1.0f);
GivenCompletedTorrent(state, ratio: 0.9999f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f);
GivenCompletedTorrent("pausedUP", ratio: 1.0f, ratioLimit: 0.8f);
GivenCompletedTorrent(state, ratio: 1.0f, ratioLimit: 0.8f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_not_be_removable_if_overridden_max_ratio_not_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f);
GivenCompletedTorrent(state, ratio: 1.1006066990976857f, ratioLimit: 1.1f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_just_under_overridden_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f);
GivenCompletedTorrent(state, ratio: 0.9999f, ratioLimit: 1.0f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_not_be_removable_if_overridden_max_ratio_not_reached_and_paused(string state)
{
GivenGlobalSeedLimits(0.2f);
GivenCompletedTorrent("pausedUP", ratio: 0.5f, ratioLimit: 0.8f);
GivenCompletedTorrent(state, ratio: 0.5f, ratioLimit: 0.8f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeFalse();
@@ -711,33 +794,36 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
item.CanMoveFiles.Should().BeFalse();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_max_seedingtime_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_seedingtime_reached_and_paused(string state)
{
GivenGlobalSeedLimits(-1, 20);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, seedingTime: 20);
GivenCompletedTorrent(state, ratio: 2.0f, seedingTime: 20);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_seedingtime_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_seedingtime_reached_and_paused(string state)
{
GivenGlobalSeedLimits(-1, 40);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, seedingTime: 20, seedingTimeLimit: 10);
GivenCompletedTorrent(state, ratio: 2.0f, seedingTime: 20, seedingTimeLimit: 10);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_not_be_removable_if_overridden_max_seedingtime_not_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_not_be_removable_if_overridden_max_seedingtime_not_reached_and_paused(string state)
{
GivenGlobalSeedLimits(-1, 20);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, seedingTime: 30, seedingTimeLimit: 40);
GivenCompletedTorrent(state, ratio: 2.0f, seedingTime: 30, seedingTimeLimit: 40);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeFalse();
@@ -755,66 +841,72 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
item.CanMoveFiles.Should().BeFalse();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_max_inactive_seedingtime_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_inactive_seedingtime_reached_and_paused(string state)
{
GivenGlobalSeedLimits(-1, maxInactiveSeedingTime: 20);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(25)).ToUnixTimeSeconds());
GivenCompletedTorrent(state, ratio: 2.0f, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(25)).ToUnixTimeSeconds());
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_inactive_seedingtime_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_inactive_seedingtime_reached_and_paused(string state)
{
GivenGlobalSeedLimits(-1, maxInactiveSeedingTime: 40);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, seedingTime: 20, inactiveSeedingTimeLimit: 10, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(15)).ToUnixTimeSeconds());
GivenCompletedTorrent(state, ratio: 2.0f, seedingTime: 20, inactiveSeedingTimeLimit: 10, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(15)).ToUnixTimeSeconds());
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_not_be_removable_if_overridden_max_inactive_seedingtime_not_reached_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_not_be_removable_if_overridden_max_inactive_seedingtime_not_reached_and_paused(string state)
{
GivenGlobalSeedLimits(-1, maxInactiveSeedingTime: 20);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, seedingTime: 30, inactiveSeedingTimeLimit: 40, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(30)).ToUnixTimeSeconds());
GivenCompletedTorrent(state, ratio: 2.0f, seedingTime: 30, inactiveSeedingTimeLimit: 40, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(30)).ToUnixTimeSeconds());
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeFalse();
item.CanMoveFiles.Should().BeFalse();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_max_seedingtime_reached_but_ratio_not_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_seedingtime_reached_but_ratio_not_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f, 20);
GivenCompletedTorrent("pausedUP", ratio: 1.0f, seedingTime: 30);
GivenCompletedTorrent(state, ratio: 1.0f, seedingTime: 30);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_be_removable_and_should_allow_move_files_if_max_inactive_seedingtime_reached_but_ratio_not_and_paused()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_inactive_seedingtime_reached_but_ratio_not_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f, maxInactiveSeedingTime: 20);
GivenCompletedTorrent("pausedUP", ratio: 1.0f, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(25)).ToUnixTimeSeconds());
GivenCompletedTorrent(state, ratio: 1.0f, lastActivity: DateTimeOffset.UtcNow.Subtract(TimeSpan.FromMinutes(25)).ToUnixTimeSeconds());
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[Test]
public void should_not_fetch_details_twice()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_not_fetch_details_twice(string state)
{
GivenGlobalSeedLimits(-1, 30);
GivenCompletedTorrent("pausedUP", ratio: 2.0f, seedingTime: 20);
GivenCompletedTorrent(state, ratio: 2.0f, seedingTime: 20);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeFalse();
@@ -826,8 +918,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
.Verify(p => p.GetTorrentProperties(It.IsAny<string>(), It.IsAny<QBittorrentSettings>()), Times.Once());
}
[Test]
public void should_get_category_from_the_category_if_set()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_get_category_from_the_category_if_set(string state)
{
const string category = "music-readarr";
GivenGlobalSeedLimits(1.0f);
@@ -839,7 +932,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
Size = 1000,
Progress = 1.0,
Eta = 8640000,
State = "pausedUP",
State = state,
Category = category,
SavePath = "",
Ratio = 1.0f
@@ -851,8 +944,9 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
item.Category.Should().Be(category);
}
[Test]
public void should_get_category_from_the_label_if_the_category_is_not_available()
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_get_category_from_the_label_if_the_category_is_not_available(string state)
{
const string category = "music-readarr";
GivenGlobalSeedLimits(1.0f);
@@ -864,7 +958,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
Size = 1000,
Progress = 1.0,
Eta = 8640000,
State = "pausedUP",
State = state,
Label = category,
SavePath = "",
Ratio = 1.0f

View File

@@ -478,6 +478,37 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.SabnzbdTests
downloadClientInfo.RemovesCompletedDownloads.Should().BeTrue();
}
[TestCase("all", 0)]
[TestCase("days-archive", 15)]
[TestCase("days-delete", 15)]
public void should_set_history_removes_completed_downloads_false_for_separate_properties(string option, int number)
{
_config.Misc.history_retention_option = option;
_config.Misc.history_retention_number = number;
var downloadClientInfo = Subject.GetStatus();
downloadClientInfo.RemovesCompletedDownloads.Should().BeFalse();
}
[TestCase("number-archive", 10)]
[TestCase("number-delete", 10)]
[TestCase("number-archive", 0)]
[TestCase("number-delete", 0)]
[TestCase("days-archive", 3)]
[TestCase("days-delete", 3)]
[TestCase("all-archive", 0)]
[TestCase("all-delete", 0)]
public void should_set_history_removes_completed_downloads_true_for_separate_properties(string option, int number)
{
_config.Misc.history_retention_option = option;
_config.Misc.history_retention_number = number;
var downloadClientInfo = Subject.GetStatus();
downloadClientInfo.RemovesCompletedDownloads.Should().BeTrue();
}
[TestCase(@"Y:\nzbget\root", @"completed\downloads", @"vv", @"Y:\nzbget\root\completed\downloads", @"Y:\nzbget\root\completed\downloads\vv")]
[TestCase(@"Y:\nzbget\root", @"completed", @"vv", @"Y:\nzbget\root\completed", @"Y:\nzbget\root\completed\vv")]
[TestCase(@"/nzbget/root", @"completed/downloads", @"vv", @"/nzbget/root/completed/downloads", @"/nzbget/root/completed/downloads/vv")]

View File

@@ -49,10 +49,13 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.TransmissionTests
}
[Test]
public void magnet_download_should_not_return_the_item()
public void magnet_download_should_be_returned_as_queued()
{
PrepareClientToReturnMagnetItem();
Subject.GetItems().Count().Should().Be(0);
var item = Subject.GetItems().Single();
item.Status.Should().Be(DownloadItemStatus.Queued);
}
[Test]

View File

@@ -60,7 +60,10 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.VuzeTests
public void magnet_download_should_not_return_the_item()
{
PrepareClientToReturnMagnetItem();
Subject.GetItems().Count().Should().Be(0);
var item = Subject.GetItems().Single();
item.Status.Should().Be(DownloadItemStatus.Queued);
}
[Test]

View File

@@ -7,6 +7,7 @@ using NzbDrone.Core.HealthCheck.Checks;
using NzbDrone.Core.Localization;
using NzbDrone.Core.Test.Framework;
using NzbDrone.Core.Update;
using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.HealthCheck.Checks
{
@@ -21,28 +22,10 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
.Returns("Some Warning Message");
}
[Test]
public void should_return_error_when_app_folder_is_write_protected()
{
WindowsOnly();
Mocker.GetMock<IAppFolderInfo>()
.Setup(s => s.StartUpFolder)
.Returns(@"C:\NzbDrone");
Mocker.GetMock<IDiskProvider>()
.Setup(c => c.FolderWritable(It.IsAny<string>()))
.Returns(false);
Subject.Check().ShouldBeError();
}
[Test]
public void should_return_error_when_app_folder_is_write_protected_and_update_automatically_is_enabled()
{
PosixOnly();
const string startupFolder = @"/opt/nzbdrone";
var startupFolder = @"C:\NzbDrone".AsOsAgnostic();
Mocker.GetMock<IConfigFileProvider>()
.Setup(s => s.UpdateAutomatically)
@@ -62,10 +45,8 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[Test]
public void should_return_error_when_ui_folder_is_write_protected_and_update_automatically_is_enabled()
{
PosixOnly();
const string startupFolder = @"/opt/nzbdrone";
const string uiFolder = @"/opt/nzbdrone/UI";
var startupFolder = @"C:\NzbDrone".AsOsAgnostic();
var uiFolder = @"C:\NzbDrone\UI".AsOsAgnostic();
Mocker.GetMock<IConfigFileProvider>()
.Setup(s => s.UpdateAutomatically)
@@ -89,7 +70,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
[Test]
public void should_not_return_error_when_app_folder_is_write_protected_and_external_script_enabled()
{
PosixOnly();
var startupFolder = @"C:\NzbDrone".AsOsAgnostic();
Mocker.GetMock<IConfigFileProvider>()
.Setup(s => s.UpdateAutomatically)
@@ -101,7 +82,7 @@ namespace NzbDrone.Core.Test.HealthCheck.Checks
Mocker.GetMock<IAppFolderInfo>()
.Setup(s => s.StartUpFolder)
.Returns(@"/opt/nzbdrone");
.Returns(startupFolder);
Mocker.GetMock<IDiskProvider>()
.Verify(c => c.FolderWritable(It.IsAny<string>()), Times.Never());

View File

@@ -12,7 +12,7 @@ namespace NzbDrone.Core.Test.Http
{
private HttpProxySettings GetProxySettings()
{
return new HttpProxySettings(ProxyType.Socks5, "localhost", 8080, "*.httpbin.org,google.com", true, null, null);
return new HttpProxySettings(ProxyType.Socks5, "localhost", 8080, "*.httpbin.org,google.com,172.16.0.0/12", true, null, null);
}
[Test]
@@ -23,6 +23,7 @@ namespace NzbDrone.Core.Test.Http
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://eu.httpbin.org/get")).Should().BeTrue();
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://google.com/get")).Should().BeTrue();
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://localhost:8654/get")).Should().BeTrue();
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://172.21.0.1:8989/api/v3/indexer/schema")).Should().BeTrue();
}
[Test]
@@ -31,6 +32,7 @@ namespace NzbDrone.Core.Test.Http
var settings = GetProxySettings();
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://bing.com/get")).Should().BeFalse();
Subject.ShouldProxyBeBypassed(settings, new HttpUri("http://172.3.0.1:8989/api/v3/indexer/schema")).Should().BeFalse();
}
}
}

View File

@@ -13,7 +13,7 @@ using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.MetadataSource.Goodreads
{
[TestFixture]
[Ignore("Waiting for metadata to be back again", Until = "2024-08-15 00:00:00Z")]
[Ignore("Waiting for metadata to be back again", Until = "2025-05-15 00:00:00Z")]
public class BookInfoProxyFixture : CoreTest<BookInfoProxy>
{
private MetadataProfile _metadataProfile;

View File

@@ -15,7 +15,7 @@ using NzbDrone.Test.Common;
namespace NzbDrone.Core.Test.MetadataSource.Goodreads
{
[TestFixture]
[Ignore("Waiting for metadata to be back again", Until = "2024-08-15 00:00:00Z")]
[Ignore("Waiting for metadata to be back again", Until = "2025-05-15 00:00:00Z")]
public class BookInfoProxySearchFixture : CoreTest<BookInfoProxy>
{
[SetUp]

View File

@@ -40,7 +40,7 @@ namespace NzbDrone.Core.Test.MetadataSource.Goodreads
[TestCase("Harry Potter and the sorcerer's stone a detailed summary", 72245296)]
[TestCase("B0192CTMYG", 61209488)]
[TestCase("9780439554930", 48517161)]
[TestCase("9780439554930", 3)]
public void successful_book_search(string title, int expected)
{
var result = Subject.Search(title);

View File

@@ -46,6 +46,7 @@ namespace NzbDrone.Core.Test.QueueTests
_trackedDownloads = Builder<TrackedDownload>.CreateListOfSize(1)
.All()
.With(v => v.IsTrackable = true)
.With(v => v.DownloadItem = downloadItem)
.With(v => v.RemoteBook = remoteBook)
.Build()

View File

@@ -21,14 +21,14 @@ namespace NzbDrone.Core.Test.UpdateTests
public void no_update_when_version_higher()
{
UseRealHttp();
Subject.GetLatestUpdate("nightly", new Version(10, 0)).Should().BeNull();
Subject.GetLatestUpdate("develop", new Version(10, 0)).Should().BeNull();
}
[Test]
public void finds_update_when_version_lower()
{
UseRealHttp();
Subject.GetLatestUpdate("nightly", new Version(0, 1)).Should().NotBeNull();
Subject.GetLatestUpdate("develop", new Version(0, 1)).Should().NotBeNull();
}
[Test]
@@ -42,10 +42,9 @@ namespace NzbDrone.Core.Test.UpdateTests
[Test]
public void should_get_recent_updates()
{
const string branch = "nightly";
const string branch = "develop";
UseRealHttp();
var recent = Subject.GetRecentUpdates(branch, new Version(0, 1), null);
var recentWithChanges = recent.Where(c => c.Changes != null);
recent.Should().NotBeEmpty();
recent.Should().OnlyContain(c => c.Hash.IsNotNullOrWhiteSpace());

View File

@@ -66,12 +66,19 @@ namespace NzbDrone.Core.Backup
{
_logger.ProgressInfo("Starting Backup");
var backupFolder = GetBackupFolder(backupType);
_diskProvider.EnsureFolder(_backupTempFolder);
_diskProvider.EnsureFolder(GetBackupFolder(backupType));
_diskProvider.EnsureFolder(backupFolder);
if (!_diskProvider.FolderWritable(backupFolder))
{
throw new UnauthorizedAccessException($"Backup folder {backupFolder} is not writable");
}
var dateNow = DateTime.Now;
var backupFilename = $"readarr_backup_v{BuildInfo.Version}_{dateNow:yyyy.MM.dd_HH.mm.ss}.zip";
var backupPath = Path.Combine(GetBackupFolder(backupType), backupFilename);
var backupPath = Path.Combine(backupFolder, backupFilename);
Cleanup();

View File

@@ -102,9 +102,9 @@ namespace NzbDrone.Core.Books
_logger.Error("ReadarrId {0} was not found, it may have been removed from Goodreads.", newAuthor.Metadata.Value.ForeignAuthorId);
throw new ValidationException(new List<ValidationFailure>
{
new ValidationFailure("MusicbrainzId", "An author with this ID was not found", newAuthor.Metadata.Value.ForeignAuthorId)
});
{
new ("ForeignAuthorId", "An author with this ID was not found", newAuthor.Metadata.Value.ForeignAuthorId)
});
}
author.ApplyChanges(newAuthor);

View File

@@ -15,18 +15,18 @@ namespace NzbDrone.Core.Books
public class BookCutoffService : IBookCutoffService
{
private readonly IBookRepository _bookRepository;
private readonly IProfileService _profileService;
private readonly IQualityProfileService _qualityProfileService;
public BookCutoffService(IBookRepository bookRepository, IProfileService profileService)
public BookCutoffService(IBookRepository bookRepository, IQualityProfileService qualityProfileService)
{
_bookRepository = bookRepository;
_profileService = profileService;
_qualityProfileService = qualityProfileService;
}
public PagingSpec<Book> BooksWhereCutoffUnmet(PagingSpec<Book> pagingSpec)
{
var qualitiesBelowCutoff = new List<QualitiesBelowCutoff>();
var profiles = _profileService.All();
var profiles = _qualityProfileService.All();
//Get all items less than the cutoff
foreach (var profile in profiles)

View File

@@ -53,6 +53,7 @@ namespace NzbDrone.Core.Configuration
string SyslogServer { get; }
int SyslogPort { get; }
string SyslogLevel { get; }
string Theme { get; }
string PostgresHost { get; }
int PostgresPort { get; }
string PostgresUser { get; }
@@ -60,7 +61,7 @@ namespace NzbDrone.Core.Configuration
string PostgresMainDb { get; }
string PostgresLogDb { get; }
string PostgresCacheDb { get; }
string Theme { get; }
bool TrustCgnatIpAddresses { get; }
}
public class ConfigFileProvider : IConfigFileProvider
@@ -219,7 +220,7 @@ namespace NzbDrone.Core.Configuration
// TODO: Change back to "master" for the first stable release
public string Branch => _updateOptions.Branch ?? GetValue("Branch", "develop").ToLowerInvariant();
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "info").ToLowerInvariant();
public string LogLevel => _logOptions.Level ?? GetValue("LogLevel", "debug").ToLowerInvariant();
public string ConsoleLogLevel => _logOptions.ConsoleLevel ?? GetValue("ConsoleLogLevel", string.Empty, persist: false);
public string PostgresHost => _postgresOptions?.Host ?? GetValue("PostgresHost", string.Empty, persist: false);
@@ -255,7 +256,7 @@ namespace NzbDrone.Core.Configuration
public string UiFolder => BuildInfo.IsDebug ? Path.Combine("..", "UI") : "UI";
public string InstanceName => _appOptions.InstanceName ?? GetValue("InstanceName", BuildInfo.AppName);
public bool UpdateAutomatically => _updateOptions.Automatically ?? GetValueBoolean("UpdateAutomatically", false, false);
public bool UpdateAutomatically => _updateOptions.Automatically ?? GetValueBoolean("UpdateAutomatically", OsInfo.IsWindows, false);
public UpdateMechanism UpdateMechanism =>
Enum.TryParse<UpdateMechanism>(_updateOptions.Mechanism, out var enumValue)
@@ -357,7 +358,7 @@ namespace NzbDrone.Core.Configuration
}
// If SSL is enabled and a cert hash is still in the config file or cert path is empty disable SSL
if (EnableSsl && (GetValue("SslCertHash", null).IsNotNullOrWhiteSpace() || SslCertPath.IsNullOrWhiteSpace()))
if (EnableSsl && (GetValue("SslCertHash", string.Empty, false).IsNotNullOrWhiteSpace() || SslCertPath.IsNullOrWhiteSpace()))
{
SetValue("EnableSsl", false);
}
@@ -462,5 +463,7 @@ namespace NzbDrone.Core.Configuration
{
SetValue("ApiKey", GenerateApiKey());
}
public bool TrustCgnatIpAddresses => _authOptions.TrustCgnatIpAddresses ?? GetValueBoolean("TrustCgnatIpAddresses", false, persist: false);
}
}

View File

@@ -404,6 +404,12 @@ namespace NzbDrone.Core.Configuration
public string ApplicationUrl => GetValue("ApplicationUrl", string.Empty);
public bool TrustCgnatIpAddresses
{
get { return GetValueBoolean("TrustCgnatIpAddresses", false); }
set { SetValue("TrustCgnatIpAddresses", value); }
}
private string GetValue(string key)
{
return GetValue(key, string.Empty);

View File

@@ -219,7 +219,7 @@ namespace NzbDrone.Core.Datastore.Migration.Framework
protected virtual IList<TableDefinition> ReadTables()
{
const string sqlCommand = @"SELECT name, sql FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' ORDER BY name;";
const string sqlCommand = @"SELECT name, sql FROM sqlite_master WHERE type='table' AND name NOT LIKE 'sqlite_%' AND name NOT LIKE '_litestream_%' ORDER BY name;";
var dtTable = Read(sqlCommand).Tables[0];
var tableDefinitionList = new List<TableDefinition>();

View File

@@ -213,9 +213,18 @@ namespace NzbDrone.Core.Download.Clients.Deluge
{
var config = _proxy.GetConfig(Settings);
var label = _proxy.GetLabelOptions(Settings);
OsPath destDir;
if (label != null && label.ApplyMoveCompleted && label.MoveCompleted)
if (Settings.CompletedDirectory.IsNotNullOrWhiteSpace())
{
destDir = new OsPath(Settings.CompletedDirectory);
}
else if (Settings.DownloadDirectory.IsNotNullOrWhiteSpace())
{
destDir = new OsPath(Settings.DownloadDirectory);
}
else if (label is { ApplyMoveCompleted: true, MoveCompleted: true })
{
// if label exists and a label completed path exists and is enabled use it instead of global
destDir = new OsPath(label.MoveCompletedPath);
@@ -231,7 +240,7 @@ namespace NzbDrone.Core.Download.Clients.Deluge
var status = new DownloadClientInfo
{
IsLocalhost = Settings.Host == "127.0.0.1" || Settings.Host == "localhost"
IsLocalhost = Settings.Host is "127.0.0.1" or "localhost"
};
if (!destDir.IsEmpty)

View File

@@ -239,7 +239,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
// Avoid removing torrents that haven't reached the global max ratio.
// Removal also requires the torrent to be paused, in case a higher max ratio was set on the torrent itself (which is not exposed by the api).
item.CanMoveFiles = item.CanBeRemoved = torrent.State == "pausedUP" && HasReachedSeedLimit(torrent, config);
item.CanMoveFiles = item.CanBeRemoved = torrent.State is "pausedUP" or "stoppedUP" && HasReachedSeedLimit(torrent, config);
switch (torrent.State)
{
@@ -248,7 +248,8 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
item.Message = "qBittorrent is reporting an error";
break;
case "pausedDL": // torrent is paused and has NOT finished downloading
case "stoppedDL": // torrent is stopped and has NOT finished downloading
case "pausedDL": // torrent is paused and has NOT finished downloading (qBittorrent < 5)
item.Status = DownloadItemStatus.Paused;
break;
@@ -259,7 +260,8 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
item.Status = DownloadItemStatus.Queued;
break;
case "pausedUP": // torrent is paused and has finished downloading
case "pausedUP": // torrent is paused and has finished downloading (qBittorent < 5)
case "stoppedUP": // torrent is stopped and has finished downloading
case "uploading": // torrent is being seeded and data is being transferred
case "stalledUP": // torrent is being seeded, but no connection were made
case "queuedUP": // queuing is enabled and torrent is queued for upload
@@ -279,6 +281,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
break;
case "metaDL": // torrent magnet is being downloaded
case "forcedMetaDL": // torrent metadata is being forcibly downloaded
if (config.DhtEnabled)
{
item.Status = DownloadItemStatus.Queued;
@@ -293,7 +296,6 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
break;
case "forcedDL": // torrent is being downloaded, and was forced started
case "forcedMetaDL": // torrent metadata is being forcibly downloaded
case "moving": // torrent is being moved from a folder
case "downloading": // torrent is being downloaded and data is being transferred
item.Status = DownloadItemStatus.Downloading;
@@ -375,7 +377,15 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
{
if (Proxy.GetLabels(Settings).TryGetValue(Settings.MusicCategory, out var label) && label.SavePath.IsNotNullOrWhiteSpace())
{
var labelDir = new OsPath(label.SavePath);
var savePath = label.SavePath;
if (savePath.StartsWith("//"))
{
_logger.Trace("Replacing double forward slashes in path '{0}'. If this is not meant to be a Windows UNC path fix the 'Save Path' in qBittorrent's {1} category", savePath, Settings.MusicCategory);
savePath = savePath.Replace('/', '\\');
}
var labelDir = new OsPath(savePath);
if (labelDir.IsRooted)
{
@@ -610,14 +620,14 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
{
if (torrent.RatioLimit >= 0)
{
if (torrent.Ratio >= torrent.RatioLimit)
if (torrent.RatioLimit - torrent.Ratio <= 0.001f)
{
return true;
}
}
else if (torrent.RatioLimit == -2 && config.MaxRatioEnabled)
{
if (Math.Round(torrent.Ratio, 2) >= config.MaxRatio)
if (config.MaxRatio - torrent.Ratio <= 0.001f)
{
return true;
}

View File

@@ -26,8 +26,6 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
Dictionary<string, QBittorrentLabel> GetLabels(QBittorrentSettings settings);
void SetTorrentSeedingConfiguration(string hash, TorrentSeedConfiguration seedConfiguration, QBittorrentSettings settings);
void MoveTorrentToTopInQueue(string hash, QBittorrentSettings settings);
void PauseTorrent(string hash, QBittorrentSettings settings);
void ResumeTorrent(string hash, QBittorrentSettings settings);
void SetForceStart(string hash, bool enabled, QBittorrentSettings settings);
}

View File

@@ -148,7 +148,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
{
request.AddFormParameter("paused", false);
}
else if ((QBittorrentState)settings.InitialState == QBittorrentState.Pause)
else if ((QBittorrentState)settings.InitialState == QBittorrentState.Stop)
{
request.AddFormParameter("paused", true);
}
@@ -178,7 +178,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
{
request.AddFormParameter("paused", false);
}
else if ((QBittorrentState)settings.InitialState == QBittorrentState.Pause)
else if ((QBittorrentState)settings.InitialState == QBittorrentState.Stop)
{
request.AddFormParameter("paused", true);
}
@@ -214,7 +214,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
catch (DownloadClientException ex)
{
// if setCategory fails due to method not being found, then try older setLabel command for qBittorrent < v.3.3.5
if (ex.InnerException is HttpException && (ex.InnerException as HttpException).Response.StatusCode == HttpStatusCode.NotFound)
if (ex.InnerException is HttpException httpException && httpException.Response.StatusCode == HttpStatusCode.NotFound)
{
var setLabelRequest = BuildRequest(settings).Resource("/command/setLabel")
.Post()
@@ -257,7 +257,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
catch (DownloadClientException ex)
{
// qBittorrent rejects all Prio commands with 403: Forbidden if Options -> BitTorrent -> Torrent Queueing is not enabled
if (ex.InnerException is HttpException && (ex.InnerException as HttpException).Response.StatusCode == HttpStatusCode.Forbidden)
if (ex.InnerException is HttpException httpException && httpException.Response.StatusCode == HttpStatusCode.Forbidden)
{
return;
}
@@ -266,22 +266,6 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
}
}
public void PauseTorrent(string hash, QBittorrentSettings settings)
{
var request = BuildRequest(settings).Resource("/command/pause")
.Post()
.AddFormParameter("hash", hash);
ProcessRequest(request, settings);
}
public void ResumeTorrent(string hash, QBittorrentSettings settings)
{
var request = BuildRequest(settings).Resource("/command/resume")
.Post()
.AddFormParameter("hash", hash);
ProcessRequest(request, settings);
}
public void SetForceStart(string hash, bool enabled, QBittorrentSettings settings)
{
var request = BuildRequest(settings).Resource("/command/setForceStart")

View File

@@ -246,14 +246,20 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
request.AddFormParameter("category", settings.MusicCategory);
}
// Note: ForceStart is handled by separate api call
if ((QBittorrentState)settings.InitialState == QBittorrentState.Start)
// Avoid extraneous API version check if initial state is ForceStart
if ((QBittorrentState)settings.InitialState is QBittorrentState.Start or QBittorrentState.Stop)
{
request.AddFormParameter("paused", false);
}
else if ((QBittorrentState)settings.InitialState == QBittorrentState.Pause)
{
request.AddFormParameter("paused", true);
var stoppedParameterName = GetApiVersion(settings) >= new Version(2, 11, 0) ? "stopped" : "paused";
// Note: ForceStart is handled by separate api call
if ((QBittorrentState)settings.InitialState == QBittorrentState.Start)
{
request.AddFormParameter(stoppedParameterName, false);
}
else if ((QBittorrentState)settings.InitialState == QBittorrentState.Stop)
{
request.AddFormParameter(stoppedParameterName, true);
}
}
if (settings.SequentialOrder)
@@ -291,7 +297,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
catch (DownloadClientException ex)
{
// setShareLimits was added in api v2.0.1 so catch it case of the unlikely event that someone has api v2.0
if (ex.InnerException is HttpException && (ex.InnerException as HttpException).Response.StatusCode == HttpStatusCode.NotFound)
if (ex.InnerException is HttpException httpException && httpException.Response.StatusCode == HttpStatusCode.NotFound)
{
return;
}
@@ -313,7 +319,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
catch (DownloadClientException ex)
{
// qBittorrent rejects all Prio commands with 409: Conflict if Options -> BitTorrent -> Torrent Queueing is not enabled
if (ex.InnerException is HttpException && (ex.InnerException as HttpException).Response.StatusCode == HttpStatusCode.Conflict)
if (ex.InnerException is HttpException httpException && httpException.Response.StatusCode == HttpStatusCode.Conflict)
{
return;
}
@@ -322,22 +328,6 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
}
}
public void PauseTorrent(string hash, QBittorrentSettings settings)
{
var request = BuildRequest(settings).Resource("/api/v2/torrents/pause")
.Post()
.AddFormParameter("hashes", hash);
ProcessRequest(request, settings);
}
public void ResumeTorrent(string hash, QBittorrentSettings settings)
{
var request = BuildRequest(settings).Resource("/api/v2/torrents/resume")
.Post()
.AddFormParameter("hashes", hash);
ProcessRequest(request, settings);
}
public void SetForceStart(string hash, bool enabled, QBittorrentSettings settings)
{
var request = BuildRequest(settings).Resource("/api/v2/torrents/setForceStart")

View File

@@ -1,9 +1,16 @@
using NzbDrone.Core.Annotations;
namespace NzbDrone.Core.Download.Clients.QBittorrent
{
public enum QBittorrentState
{
[FieldOption(Label = "Started")]
Start = 0,
[FieldOption(Label = "Force Started")]
ForceStart = 1,
Pause = 2
[FieldOption(Label = "Stopped")]
Stop = 2
}
}

View File

@@ -263,20 +263,7 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
status.OutputRootFolders = new List<OsPath> { _remotePathMappingService.RemapRemoteToLocal(Settings.Host, category.FullPath) };
}
if (config.Misc.history_retention.IsNullOrWhiteSpace())
{
status.RemovesCompletedDownloads = false;
}
else if (config.Misc.history_retention.EndsWith("d"))
{
int.TryParse(config.Misc.history_retention.AsSpan(0, config.Misc.history_retention.Length - 1),
out var daysRetention);
status.RemovesCompletedDownloads = daysRetention < 14;
}
else
{
status.RemovesCompletedDownloads = config.Misc.history_retention != "0";
}
status.RemovesCompletedDownloads = RemovesCompletedDownloads(config);
return status;
}
@@ -518,6 +505,43 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
return categories.Contains(category);
}
private bool RemovesCompletedDownloads(SabnzbdConfig config)
{
var retention = config.Misc.history_retention;
var option = config.Misc.history_retention_option;
var number = config.Misc.history_retention_number;
switch (option)
{
case "all":
return false;
case "number-archive":
case "number-delete":
return true;
case "days-archive":
case "days-delete":
return number < 14;
case "all-archive":
case "all-delete":
return true;
}
// TODO: Remove these checks once support for SABnzbd < 4.3 is removed
if (retention.IsNullOrWhiteSpace())
{
return false;
}
if (retention.EndsWith("d"))
{
int.TryParse(config.Misc.history_retention.AsSpan(0, config.Misc.history_retention.Length - 1),
out var daysRetention);
return daysRetention < 14;
}
return retention != "0";
}
private bool ValidatePath(DownloadClientItem downloadClientItem)
{
var downloadItemOutputPath = downloadClientItem.OutputPath;

View File

@@ -30,6 +30,8 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
public bool enable_date_sorting { get; set; }
public bool pre_check { get; set; }
public string history_retention { get; set; }
public string history_retention_option { get; set; }
public int history_retention_number { get; set; }
}
public class SabnzbdCategory

View File

@@ -41,12 +41,6 @@ namespace NzbDrone.Core.Download.Clients.Transmission
foreach (var torrent in torrents)
{
// If totalsize == 0 the torrent is a magnet downloading metadata
if (torrent.TotalSize == 0)
{
continue;
}
var outputPath = new OsPath(torrent.DownloadDir);
if (Settings.TvDirectory.IsNotNullOrWhiteSpace())
@@ -97,6 +91,10 @@ namespace NzbDrone.Core.Download.Clients.Transmission
item.Status = DownloadItemStatus.Warning;
item.Message = torrent.ErrorString;
}
else if (torrent.TotalSize == 0)
{
item.Status = DownloadItemStatus.Queued;
}
else if (torrent.LeftUntilDone == 0 && (torrent.Status == TransmissionTorrentStatus.Stopped ||
torrent.Status == TransmissionTorrentStatus.Seeding ||
torrent.Status == TransmissionTorrentStatus.SeedingWait))

View File

@@ -4,6 +4,7 @@ using System.Net;
using Newtonsoft.Json.Linq;
using NLog;
using NzbDrone.Common.Cache;
using NzbDrone.Common.EnvironmentInfo;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer;
@@ -208,7 +209,7 @@ namespace NzbDrone.Core.Download.Clients.Transmission
private void AuthenticateClient(HttpRequestBuilder requestBuilder, TransmissionSettings settings, bool reauthenticate = false)
{
var authKey = string.Format("{0}:{1}", requestBuilder.BaseUrl, settings.Password);
var authKey = $"{requestBuilder.BaseUrl}:{settings.Password}";
var sessionId = _authSessionIDCache.Find(authKey);
@@ -220,24 +221,26 @@ namespace NzbDrone.Core.Download.Clients.Transmission
authLoginRequest.SuppressHttpError = true;
var response = _httpClient.Execute(authLoginRequest);
if (response.StatusCode == HttpStatusCode.MovedPermanently)
{
var url = response.Headers.GetSingleValue("Location");
throw new DownloadClientException("Remote site redirected to " + url);
}
else if (response.StatusCode == HttpStatusCode.Conflict)
switch (response.StatusCode)
{
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
case HttpStatusCode.MovedPermanently:
var url = response.Headers.GetSingleValue("Location");
if (sessionId == null)
{
throw new DownloadClientException("Remote host did not return a Session Id.");
}
}
else
{
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
throw new DownloadClientException("Remote site redirected to " + url);
case HttpStatusCode.Forbidden:
throw new DownloadClientException($"Failed to authenticate with Transmission. It may be necessary to add {BuildInfo.AppName}'s IP address to RPC whitelist.");
case HttpStatusCode.Conflict:
sessionId = response.Headers.GetSingleValue("X-Transmission-Session-Id");
if (sessionId == null)
{
throw new DownloadClientException("Remote host did not return a Session Id.");
}
break;
default:
throw new DownloadClientAuthenticationException("Failed to authenticate with Transmission.");
}
_logger.Debug("Transmission authentication succeeded.");

View File

@@ -41,18 +41,23 @@ namespace NzbDrone.Core.Download
var blockedProviders = new HashSet<int>(_downloadClientStatusService.GetBlockedProviders().Select(v => v.ProviderId));
var availableProviders = _downloadClientFactory.GetAvailableProviders().Where(v => v.Protocol == downloadProtocol).ToList();
if (tags != null)
if (!availableProviders.Any())
{
return null;
}
if (tags is { Count: > 0 })
{
var matchingTagsClients = availableProviders.Where(i => i.Definition.Tags.Intersect(tags).Any()).ToList();
availableProviders = matchingTagsClients.Count > 0 ?
matchingTagsClients :
availableProviders.Where(i => i.Definition.Tags.Empty()).ToList();
}
if (!availableProviders.Any())
{
return null;
if (!availableProviders.Any())
{
throw new DownloadClientUnavailableException("No download client was found without tags or a matching author tag. Please check your settings.");
}
}
if (indexerId > 0)

View File

@@ -4,24 +4,24 @@ namespace NzbDrone.Core.Exceptions
{
public class AuthorNotFoundException : NzbDroneException
{
public string MusicBrainzId { get; set; }
public string ForeignAuthorId { get; set; }
public AuthorNotFoundException(string musicbrainzId)
: base(string.Format("Author with id {0} was not found, it may have been removed from the metadata server.", musicbrainzId))
public AuthorNotFoundException(string foreignAuthorId)
: base($"Author with id {foreignAuthorId} was not found, it may have been removed from the metadata server.")
{
MusicBrainzId = musicbrainzId;
ForeignAuthorId = foreignAuthorId;
}
public AuthorNotFoundException(string musicbrainzId, string message, params object[] args)
public AuthorNotFoundException(string foreignAuthorId, string message, params object[] args)
: base(message, args)
{
MusicBrainzId = musicbrainzId;
ForeignAuthorId = foreignAuthorId;
}
public AuthorNotFoundException(string musicbrainzId, string message)
public AuthorNotFoundException(string foreignAuthorId, string message)
: base(message)
{
MusicBrainzId = musicbrainzId;
ForeignAuthorId = foreignAuthorId;
}
}
}

View File

@@ -4,24 +4,24 @@ namespace NzbDrone.Core.Exceptions
{
public class BookNotFoundException : NzbDroneException
{
public string MusicBrainzId { get; set; }
public string ForeignBookId { get; set; }
public BookNotFoundException(string musicbrainzId)
: base(string.Format("Book with id {0} was not found, it may have been removed from metadata server.", musicbrainzId))
public BookNotFoundException(string foreignBookId)
: base($"Book with id {foreignBookId} was not found, it may have been removed from metadata server.")
{
MusicBrainzId = musicbrainzId;
ForeignBookId = foreignBookId;
}
public BookNotFoundException(string musicbrainzId, string message, params object[] args)
public BookNotFoundException(string foreignBookId, string message, params object[] args)
: base(message, args)
{
MusicBrainzId = musicbrainzId;
ForeignBookId = foreignBookId;
}
public BookNotFoundException(string musicbrainzId, string message)
public BookNotFoundException(string foreignBookId, string message)
: base(message)
{
MusicBrainzId = musicbrainzId;
ForeignBookId = foreignBookId;
}
}
}

View File

@@ -4,24 +4,24 @@ namespace NzbDrone.Core.Exceptions
{
public class EditionNotFoundException : NzbDroneException
{
public string MusicBrainzId { get; set; }
public string ForeignEditionId { get; set; }
public EditionNotFoundException(string musicbrainzId)
: base(string.Format("Edition with id {0} was not found, it may have been removed from metadata server.", musicbrainzId))
public EditionNotFoundException(string foreignEditionId)
: base($"Edition with id {foreignEditionId} was not found, it may have been removed from metadata server.")
{
MusicBrainzId = musicbrainzId;
ForeignEditionId = foreignEditionId;
}
public EditionNotFoundException(string musicbrainzId, string message, params object[] args)
public EditionNotFoundException(string foreignEditionId, string message, params object[] args)
: base(message, args)
{
MusicBrainzId = musicbrainzId;
ForeignEditionId = foreignEditionId;
}
public EditionNotFoundException(string musicbrainzId, string message)
public EditionNotFoundException(string foreignEditionId, string message)
: base(message)
{
MusicBrainzId = musicbrainzId;
ForeignEditionId = foreignEditionId;
}
}
}

View File

@@ -39,7 +39,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
var startupFolder = _appFolderInfo.StartUpFolder;
var uiFolder = Path.Combine(startupFolder, "UI");
if ((OsInfo.IsWindows || _configFileProvider.UpdateAutomatically) &&
if (_configFileProvider.UpdateAutomatically &&
_configFileProvider.UpdateMechanism == UpdateMechanism.BuiltIn &&
!_osInfo.IsDocker)
{

View File

@@ -1,5 +1,7 @@
using System;
using System.Linq;
using System.Net;
using NetTools;
using NzbDrone.Common.Http;
using NzbDrone.Common.Http.Proxy;
using NzbDrone.Core.Configuration;
@@ -52,7 +54,15 @@ namespace NzbDrone.Core.Http
//We are utilizing the WebProxy implementation here to save us having to re-implement it. This way we use Microsofts implementation
var proxy = new WebProxy(proxySettings.Host + ":" + proxySettings.Port, proxySettings.BypassLocalAddress, proxySettings.BypassListAsArray);
return proxy.IsBypassed((Uri)url);
return proxy.IsBypassed((Uri)url) || IsBypassedByIpAddressRange(proxySettings.BypassListAsArray, url.Host);
}
private static bool IsBypassedByIpAddressRange(string[] bypassList, string host)
{
return bypassList.Any(bypass =>
IPAddressRange.TryParse(bypass, out var ipAddressRange) &&
IPAddress.TryParse(host, out var ipAddress) &&
ipAddressRange.Contains(ipAddress));
}
}
}

View File

@@ -184,7 +184,7 @@ namespace NzbDrone.Core.ImportLists
report.BookGoodreadsId = remoteBook.ForeignBookId;
report.Book = remoteBook.Title;
report.Author ??= remoteBook.AuthorMetadata.Value.Name;
report.AuthorGoodreadsId ??= remoteBook.AuthorMetadata.Value.Name;
report.AuthorGoodreadsId ??= remoteBook.AuthorMetadata.Value.ForeignAuthorId;
}
catch (BookNotFoundException)
{

View File

@@ -77,7 +77,7 @@ namespace NzbDrone.Core.Indexers.FileList
var url = new HttpUri(_settings.BaseUrl)
.CombinePath("download.php")
.AddQueryParam("id", torrentId)
.AddQueryParam("passkey", _settings.Passkey);
.AddQueryParam("passkey", _settings.Passkey.Trim());
return url.FullUri;
}

View File

@@ -57,33 +57,36 @@ namespace NzbDrone.Core.Instrumentation
{
try
{
var log = new Log();
log.Time = logEvent.TimeStamp;
log.Message = CleanseLogMessage.Cleanse(logEvent.FormattedMessage);
log.Logger = logEvent.LoggerName;
var log = new Log
{
Time = logEvent.TimeStamp,
Logger = logEvent.LoggerName,
Level = logEvent.Level.Name
};
if (log.Logger.StartsWith("NzbDrone."))
{
log.Logger = log.Logger.Remove(0, 9);
}
var message = logEvent.FormattedMessage;
if (logEvent.Exception != null)
{
if (string.IsNullOrWhiteSpace(log.Message))
if (string.IsNullOrWhiteSpace(message))
{
log.Message = logEvent.Exception.Message;
message = logEvent.Exception.Message;
}
else
{
log.Message += ": " + logEvent.Exception.Message;
message += ": " + logEvent.Exception.Message;
}
log.Exception = logEvent.Exception.ToString();
log.Exception = CleanseLogMessage.Cleanse(logEvent.Exception.ToString());
log.ExceptionType = logEvent.Exception.GetType().ToString();
}
log.Level = logEvent.Level.Name;
log.Message = CleanseLogMessage.Cleanse(message);
var connectionInfo = _connectionStringFactory.LogDbConnection;

View File

@@ -3,8 +3,8 @@
"Year": "عام",
"WeekColumnHeader": "رأس عمود الأسبوع",
"Version": "الإصدار",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "يستخدم الفرع بواسطة آلية التحديث الخارجية",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "فرع لاستخدامه لتحديث Radarr",
"BranchUpdateMechanism": "يستخدم الفرع بواسطة آلية التحديث الخارجية",
"BranchUpdate": "فرع لاستخدامه لتحديث {appName}",
"Username": "اسم المستخدم",
"UsenetDelayHelpText": "تأخر بالدقائق للانتظار قبل الحصول على إصدار من Usenet",
"UsenetDelay": "تأخير يوزنت",
@@ -15,7 +15,7 @@
"UpgradeAllowedHelpText": "إذا لن تتم ترقية الصفات المعوقين",
"Updates": "التحديثات",
"UpdateScriptPathHelpText": "المسار إلى برنامج نصي مخصص يأخذ حزمة تحديث مستخرجة ويتعامل مع ما تبقى من عملية التحديث",
"UpdateMechanismHelpText": "استخدم المحدث أو البرنامج النصي المدمج في Radarr",
"UpdateMechanismHelpText": "استخدم المحدث أو البرنامج النصي المدمج في {appName}",
"UpdateAutomaticallyHelpText": "تنزيل التحديثات وتثبيتها تلقائيًا. ستظل قادرًا على التثبيت من النظام: التحديثات",
"UpdateAll": "تحديث الجميع",
"UnmonitoredHelpText": "قم بتضمين الأفلام غير الخاضعة للرقابة في موجز iCal",
@@ -56,7 +56,7 @@
"URLBase": "قاعدة URL",
"UISettings": "إعدادات واجهة المستخدم",
"UILanguageHelpTextWarning": "يلزم إعادة تحميل المتصفح",
"UILanguageHelpText": "اللغة التي سيستخدمها Radarr لواجهة المستخدم",
"UILanguageHelpText": "اللغة التي سيستخدمها {appName} لواجهة المستخدم",
"UILanguage": "لغة واجهة المستخدم",
"TotalFileSize": "إجمالي حجم الملف",
"Torrents": "السيول",
@@ -73,7 +73,7 @@
"Tags": "العلامات",
"TagIsNotUsedAndCanBeDeleted": "العلامة غير مستخدمة ويمكن حذفها",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed": "سيتم استخدامها عند استخدام البحث التفاعلي",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "سيتم استخدامه عند إجراء عمليات البحث التلقائي عبر واجهة المستخدم أو بواسطة Radarr",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "سيتم استخدامه عند إجراء عمليات البحث التلقائي عبر واجهة المستخدم أو بواسطة {appName}",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "البحث غير معتمد مع هذا المفهرس",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "لا يتم دعم RSS مع هذا المفهرس",
"SuccessMyWorkIsDoneNoFilesToRetag": "نجاح! تم الانتهاء من عملي ، ولا توجد ملفات لإعادة تسميتها.",
@@ -92,7 +92,7 @@
"Source": "مصدر",
"SorryThatBookCannotBeFound": "آسف ، لا يمكن العثور على هذا الفيلم.",
"SorryThatAuthorCannotBeFound": "آسف ، لا يمكن العثور على هذا الفيلم.",
"SkipFreeSpaceCheckWhenImportingHelpText": "استخدم عندما يتعذر على Radarr اكتشاف مساحة خالية من مجلد جذر الفيلم",
"SkipFreeSpaceCheckWhenImportingHelpText": "استخدم عندما يتعذر على {appName} اكتشاف مساحة خالية من مجلد جذر الفيلم",
"SkipFreeSpaceCheck": "تخطي فحص المساحة الخالية",
"Size": " بحجم",
"ShownAboveEachColumnWhenWeekIsTheActiveView": "يظهر فوق كل عمود عندما يكون الأسبوع هو العرض النشط",
@@ -133,19 +133,19 @@
"Result": "نتيجة",
"RestoreBackup": "استرجاع النسخة الاحتياطية",
"Restore": "استعادة",
"RestartReadarr": "أعد تشغيل Radarr",
"RestartReadarr": "أعد تشغيل {appName}",
"RestartNow": "اعد البدء الان",
"Restart": "إعادة تشغيل",
"ResetAPIKeyMessageText": "هل أنت متأكد أنك تريد إعادة تعيين مفتاح API الخاص بك؟",
"ResetAPIKey": "إعادة تعيين مفتاح API",
"Reset": "إعادة تعيين",
"RescanAuthorFolderAfterRefresh": "إعادة فحص مجلد الفيلم بعد التحديث",
"RescanAfterRefreshHelpTextWarning": "لن يكتشف Radarr تلقائيًا التغييرات التي تطرأ على الملفات عند عدم تعيينه على \"دائمًا\"",
"RescanAfterRefreshHelpTextWarning": "لن يكتشف {appName} تلقائيًا التغييرات التي تطرأ على الملفات عند عدم تعيينه على \"دائمًا\"",
"RequiredPlaceHolder": "أضف قيدًا جديدًا",
"RequiredHelpText": "يجب أن يحتوي الإصدار على واحد على الأقل من هذه المصطلحات (غير حساس لحالة الأحرف)",
"ReplaceIllegalCharacters": "استبدل الأحرف غير القانونية",
"Reorder": "إعادة ترتيب",
"RenameBooksHelpText": "سيستخدم Radarr اسم الملف الحالي إذا تم تعطيل إعادة التسمية",
"RenameBooksHelpText": "سيستخدم {appName} اسم الملف الحالي إذا تم تعطيل إعادة التسمية",
"RemovedFromTaskQueue": "تمت إزالته من قائمة انتظار المهام",
"RemoveTagRemovingTag": "إزالة العلامة",
"RemoveTagExistingTag": "علامة موجودة",
@@ -174,7 +174,7 @@
"Reason": "السبب",
"Real": "حقيقة",
"ReadarrTags": "العلامات الرادار",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "يدعم Radarr أي مفهرس يستخدم معيار Newznab ، بالإضافة إلى مفهرسات أخرى مذكورة أدناه.",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "يدعم {appName} أي مفهرس يستخدم معيار Newznab ، بالإضافة إلى مفهرسات أخرى مذكورة أدناه.",
"ReadTheWikiForMoreInformation": "اقرأ Wiki لمزيد من المعلومات",
"RSSSyncInterval": "الفاصل الزمني لمزامنة RSS",
"RSSSync": "مزامنة RSS",
@@ -196,7 +196,7 @@
"Profiles": "مظهر",
"PreviewRename": "معاينة إعادة تسمية",
"PosterSize": "حجم الملصق",
"GrabReleaseMessageText": "لم يتمكن Radarr من تحديد الفيلم الذي كان هذا الإصدار من أجله. قد يتعذر على Radarr استيراد هذا الإصدار تلقائيًا. هل تريد انتزاع \"{0}\"؟",
"GrabReleaseMessageText": "لم يتمكن {appName} من تحديد الفيلم الذي كان هذا الإصدار من أجله. قد يتعذر على {appName} استيراد هذا الإصدار تلقائيًا. هل تريد انتزاع \"{0}\"؟",
"GrabRelease": "انتزاع الإصدار",
"GrabID": "انتزاع معرف",
"Grab": "إختطاف",
@@ -276,10 +276,10 @@
"Dates": "تواريخ",
"DatabaseMigration": "ترحيل DB",
"CutoffUnmet": "قطع غير ملباة",
"CutoffHelpText": "بمجرد الوصول إلى هذه الجودة ، لن يقوم Radarr بتنزيل الأفلام",
"CutoffHelpText": "بمجرد الوصول إلى هذه الجودة ، لن يقوم {appName} بتنزيل الأفلام",
"CreateGroup": "إنشاء مجموعة",
"CreateEmptyAuthorFoldersHelpText": "قم بإنشاء مجلدات فيلم مفقودة أثناء فحص القرص",
"CopyUsingHardlinksHelpTextWarning": "من حين لآخر ، قد تمنع أقفال الملفات إعادة تسمية الملفات التي يتم زرعها. يمكنك تعطيل البذر مؤقتًا واستخدام وظيفة إعادة تسمية Radarr كحل بديل.",
"CopyUsingHardlinksHelpTextWarning": "من حين لآخر ، قد تمنع أقفال الملفات إعادة تسمية الملفات التي يتم زرعها. يمكنك تعطيل البذر مؤقتًا واستخدام وظيفة إعادة تسمية {appName} كحل بديل.",
"CopyUsingHardlinksHelpText": "استخدم Hardlinks عند محاولة نسخ الملفات من السيول التي لا تزال تحت البذور",
"Connections": "روابط",
"ConnectSettings": "ربط الإعدادات",
@@ -291,16 +291,16 @@
"ClientPriority": "أولوية العميل",
"ClickToChangeQuality": "انقر لتغيير الجودة",
"Clear": "واضح",
"ChownGroupHelpTextWarning": "يعمل هذا فقط إذا كان المستخدم الذي يقوم بتشغيل Radarr هو مالك الملف. من الأفضل التأكد من أن عميل التنزيل يستخدم نفس مجموعة Radarr.",
"ChownGroupHelpTextWarning": "يعمل هذا فقط إذا كان المستخدم الذي يقوم بتشغيل {appName} هو مالك الملف. من الأفضل التأكد من أن عميل التنزيل يستخدم نفس مجموعة {appName}.",
"ChownGroupHelpText": "اسم المجموعة أو gid. استخدم gid لأنظمة الملفات البعيدة.",
"ChmodFolderHelpTextWarning": "يعمل هذا فقط إذا كان المستخدم الذي يقوم بتشغيل Radarr هو مالك الملف. من الأفضل التأكد من قيام عميل التنزيل بتعيين الأذونات بشكل صحيح.",
"ChmodFolderHelpTextWarning": "يعمل هذا فقط إذا كان المستخدم الذي يقوم بتشغيل {appName} هو مالك الملف. من الأفضل التأكد من قيام عميل التنزيل بتعيين الأذونات بشكل صحيح.",
"ChmodFolderHelpText": "Octal ، يتم تطبيقه أثناء الاستيراد / إعادة التسمية إلى مجلدات وملفات الوسائط (بدون تنفيذ بت)",
"ChmodFolder": "مجلد chmod",
"ChangeHasNotBeenSavedYet": "لم يتم حفظ التغيير بعد",
"ChangeFileDate": "تغيير تاريخ الملف",
"CertificateValidationHelpText": "تغيير مدى صرامة التحقق من صحة شهادة HTTPS",
"CertificateValidation": "التحقق من صحة الشهادة",
"CancelMessageText": "هل أنت متأكد أنك تريد إلغاء هذه المهمة المعلقة؟",
"CancelPendingTask": "هل أنت متأكد أنك تريد إلغاء هذه المهمة المعلقة؟",
"Cancel": "إلغاء",
"CalendarWeekColumnHeaderHelpText": "يظهر فوق كل عمود عندما يكون الأسبوع هو العرض النشط",
"Calendar": "التقويم",
@@ -314,17 +314,17 @@
"Backups": "النسخ الاحتياطية",
"BackupRetentionHelpText": "سيتم تنظيف النسخ الاحتياطية التلقائية الأقدم من فترة الاحتفاظ تلقائيًا",
"BackupNow": "اعمل نسخة احتياطية الان",
"BackupFolderHelpText": "ستكون المسارات النسبية ضمن دليل AppData الخاص بـ Radarr",
"BackupFolderHelpText": "ستكون المسارات النسبية ضمن دليل AppData الخاص بـ {appName}",
"Automatic": "تلقائي",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "الأفلام المحذوفة من القرص لا يتم مراقبتها تلقائيًا في Radarr",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "الأفلام المحذوفة من القرص لا يتم مراقبتها تلقائيًا في {appName}",
"AutoRedownloadFailedHelpText": "ابحث تلقائيًا عن إصدار مختلف وحاول تنزيله",
"AuthorClickToChangeBook": "انقر لتغيير الفيلم",
"AuthenticationMethodHelpText": "طلب اسم المستخدم وكلمة المرور للوصول إلى Radarr",
"AuthenticationMethodHelpText": "طلب اسم المستخدم وكلمة المرور للوصول إلى {appName}",
"Authentication": "المصادقة",
"ApplyTags": "تطبيق العلامات",
"AppDataDirectory": "دليل AppData",
"AnalyticsEnabledHelpTextWarning": "يتطلب إعادة التشغيل ليصبح ساري المفعول",
"AnalyticsEnabledHelpText": "إرسال معلومات الاستخدام والخطأ المجهولة إلى خوادم Radarr. يتضمن ذلك معلومات حول متصفحك ، وصفحات Radarr WebUI التي تستخدمها ، والإبلاغ عن الأخطاء بالإضافة إلى إصدار نظام التشغيل ووقت التشغيل. سنستخدم هذه المعلومات لتحديد أولويات الميزات وإصلاحات الأخطاء.",
"AnalyticsEnabledHelpText": "إرسال معلومات الاستخدام والخطأ المجهولة إلى خوادم {appName}. يتضمن ذلك معلومات حول متصفحك ، وصفحات {appName} WebUI التي تستخدمها ، والإبلاغ عن الأخطاء بالإضافة إلى إصدار نظام التشغيل ووقت التشغيل. سنستخدم هذه المعلومات لتحديد أولويات الميزات وإصلاحات الأخطاء.",
"Analytics": "تحليلات",
"AlternateTitles": "عنوان بديل",
"AlreadyInYourLibrary": "بالفعل في مكتبتك",
@@ -332,7 +332,6 @@
"AddingTag": "مضيفا العلامة",
"AddListExclusion": "إضافة استبعاد قائمة",
"About": "نبدة عن",
"APIKey": "مفتاح API",
"60MinutesSixty": "60 دقيقة: {0}",
"45MinutesFourtyFive": "90 دقيقة: {0}",
"20MinutesTwenty": "120 دقيقة: {0}",
@@ -396,7 +395,7 @@
"LogFiles": "ملفات الدخول",
"Local": "محلي",
"LoadingBookFilesFailed": "فشل تحميل ملفات الفيلم",
"LaunchBrowserHelpText": " افتح مستعرض ويب وانتقل إلى صفحة Radarr الرئيسية عند بدء التطبيق.",
"LaunchBrowserHelpText": " افتح مستعرض ويب وانتقل إلى صفحة {appName} الرئيسية عند بدء التطبيق.",
"Language": "لغة",
"IsTagUsedCannotBeDeletedWhileInUse": "لا يمكن حذفه أثناء الاستخدام",
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "قم بالترقية حتى يتم تلبية هذه الجودة أو تجاوزها",
@@ -407,7 +406,7 @@
"IndexerPriority": "أولوية المفهرس",
"Indexer": "مفهرس",
"IncludeUnmonitored": "تضمين غير مراقب",
"IncludeUnknownAuthorItemsHelpText": "إظهار العناصر بدون فيلم في قائمة الانتظار. يمكن أن يشمل ذلك الأفلام التي تمت إزالتها أو أي شيء آخر في فئة Radarr",
"IncludeUnknownAuthorItemsHelpText": "إظهار العناصر بدون فيلم في قائمة الانتظار. يمكن أن يشمل ذلك الأفلام التي تمت إزالتها أو أي شيء آخر في فئة {appName}",
"IncludeHealthWarningsHelpText": "قم بتضمين التحذيرات الصحية",
"Importing": "استيراد",
"ImportedTo": "مستورد إلى",
@@ -430,7 +429,6 @@
"HasPendingChangesNoChanges": "لا تغيرات",
"Group": "مجموعة",
"GrabSelected": "انتزاع المحدد",
"ApiKeyHelpTextWarning": "يتطلب إعادة التشغيل ليصبح ساري المفعول",
"DeleteRootFolderMessageText": "هل أنت متأكد أنك تريد حذف المفهرس \"{0}\"؟",
"LoadingBooksFailed": "فشل تحميل ملفات الفيلم",
"ProxyUsernameHelpText": "ما عليك سوى إدخال اسم مستخدم وكلمة مرور إذا كان أحدهما مطلوبًا. اتركها فارغة وإلا.",
@@ -439,7 +437,7 @@
"SslPortHelpTextWarning": "يتطلب إعادة التشغيل ليصبح ساري المفعول",
"DownloadClientCheckDownloadingToRoot": "يقوم برنامج التنزيل {0} بوضع التنزيلات في المجلد الجذر {1}. يجب ألا تقوم بالتنزيل إلى مجلد جذر.",
"Progress": "التقدم",
"ReplaceIllegalCharactersHelpText": "استبدل الأحرف غير القانونية. إذا لم يتم تحديده ، فسوف يقوم Radarr بإزالتها بدلاً من ذلك",
"ReplaceIllegalCharactersHelpText": "استبدل الأحرف غير القانونية. إذا لم يتم تحديده ، فسوف يقوم {appName} بإزالتها بدلاً من ذلك",
"ReleaseTitle": "عنوان الإصدار",
"Actions": "أجراءات",
"Tomorrow": "غدا",
@@ -454,12 +452,12 @@
"RemoveFromBlocklist": "إزالة من القائمة السوداء",
"UnableToLoadBlocklist": "تعذر تحميل القائمة السوداء",
"Level": "مستوى",
"ReleaseBranchCheckOfficialBranchMessage": "الفرع {0} ليس فرع إصدار Radarr صالح ، لن تتلقى تحديثات",
"ReleaseBranchCheckOfficialBranchMessage": "الفرع {0} ليس فرع إصدار {appName} صالح ، لن تتلقى تحديثات",
"Time": "زمن",
"Component": "مكون",
"Blocklist": "القائمة السوداء",
"BlocklistRelease": "إصدار القائمة السوداء",
"ThisCannotBeCancelled": "لا يمكن إلغاء هذا بمجرد البدء دون إعادة تشغيل Radarr.",
"ThisCannotBeCancelled": "لا يمكن إلغاء هذا بمجرد البدء دون إعادة تشغيل {appName}.",
"UnselectAll": "إلغاء تحديد الكل",
"UpdateSelected": "تم تحديد التحديث",
"Wanted": "مطلوب",
@@ -485,12 +483,12 @@
"Filters": "منقي",
"Connect": "الاتصال",
"HealthNoIssues": "لا مشاكل مع التكوين الخاص بك",
"MissingFromDisk": "لم يتمكن Whisparr من العثور على الملف على القرص لذا تمت إزالته",
"MissingFromDisk": "لم يتمكن {appName} من العثور على الملف على القرص لذا تمت إزالته",
"IndexerStatusCheckSingleClientMessage": "المفهرسات غير متاحة بسبب الإخفاقات: {0}",
"Lists": "القوائم",
"Metadata": "البيانات الوصفية",
"CreateEmptyAuthorFolders": "إنشاء مجلدات أفلام فارغة",
"ReadarrSupportsAnyDownloadClient": "يدعم Whisparr أي عميل تنزيل يستخدم معيار Newznab ، بالإضافة إلى عملاء التنزيل الآخرين المدرجة أدناه.",
"ReadarrSupportsAnyDownloadClient": "يدعم {appName} أي عميل تنزيل يستخدم معيار Newznab ، بالإضافة إلى عملاء التنزيل الآخرين المدرجة أدناه.",
"Queued": "في قائمة الانتظار",
"RefreshAndScan": "التحديث والمسح الضوئي",
"RescanAfterRefreshHelpText": "أعد فحص مجلد الفيلم بعد تحديث الفيلم",
@@ -509,10 +507,10 @@
"IndexerLongTermStatusCheckAllClientMessage": "جميع المفهرسات غير متوفرة بسبب الفشل لأكثر من 6 ساعات",
"IndexerLongTermStatusCheckSingleClientMessage": "المفهرسات غير متاحة بسبب الإخفاقات لأكثر من 6 ساعات: {0}",
"IndexerPriorityHelpText": "أولوية المفهرس من 1 (الأعلى) إلى 50 (الأدنى). الافتراضي: 25.",
"IndexerRssHealthCheckNoIndexers": "لا توجد مفهرسات متاحة مع تمكين مزامنة RSS ، ولن يحصل Radarr على الإصدارات الجديدة تلقائيًا",
"IndexerSearchCheckNoAutomaticMessage": "لا تتوفر مفهرسات مع تمكين البحث التلقائي ، ولن يقدم Radarr أي نتائج بحث تلقائية",
"IndexerRssHealthCheckNoIndexers": "لا توجد مفهرسات متاحة مع تمكين مزامنة RSS ، ولن يحصل {appName} على الإصدارات الجديدة تلقائيًا",
"IndexerSearchCheckNoAutomaticMessage": "لا تتوفر مفهرسات مع تمكين البحث التلقائي ، ولن يقدم {appName} أي نتائج بحث تلقائية",
"IndexerSearchCheckNoAvailableIndexersMessage": "جميع المفهرسات القادرة على البحث غير متوفرة مؤقتًا بسبب أخطاء المفهرس الأخيرة",
"IndexerSearchCheckNoInteractiveMessage": "لا تتوفر مفهرسات مع تمكين البحث التفاعلي ، ولن يقدم Radarr أي نتائج بحث تفاعلية",
"IndexerSearchCheckNoInteractiveMessage": "لا تتوفر مفهرسات مع تمكين البحث التفاعلي ، ولن يقدم {appName} أي نتائج بحث تفاعلية",
"IndexersSettingsSummary": "المفهرسات وقيود الإصدار",
"MediaManagement": "إدارة وسائل الإعلام",
"Monitor": "مراقب",
@@ -522,11 +520,11 @@
"ProxyCheckFailedToTestMessage": "فشل اختبار الوكيل: {0}",
"QualitySettingsSummary": "أحجام الجودة والتسمية",
"QueueIsEmpty": "قائمة الانتظار فارغة",
"RestartReloadNote": "ملاحظة: سيتم إعادة تشغيل Radarr تلقائيًا وإعادة تحميل واجهة المستخدم أثناء عملية الاستعادة.",
"RestartReloadNote": "ملاحظة: سيتم إعادة تشغيل {appName} تلقائيًا وإعادة تحميل واجهة المستخدم أثناء عملية الاستعادة.",
"RootFolderCheckSingleMessage": "مجلد الجذر مفقود: {0}",
"Save": "حفظ",
"SettingsRemotePathMappingLocalPath": "مسار محلي",
"SettingsRemotePathMappingLocalPathHelpText": "المسار الذي يجب أن يستخدمه Radarr للوصول إلى المسار البعيد محليًا",
"SettingsRemotePathMappingLocalPathHelpText": "المسار الذي يجب أن يستخدمه {appName} للوصول إلى المسار البعيد محليًا",
"SettingsRemotePathMappingRemotePath": "مسار بعيد",
"DownloadClientsSettingsSummary": "تنزيل العملاء وتنزيل المناولة وتعيينات المسار البعيد",
"DownloadClientStatusCheckAllClientMessage": "جميع عملاء التنزيل غير متاحين بسبب الفشل",
@@ -556,7 +554,7 @@
"CustomFormatSettings": "إعدادات التنسيقات المخصصة",
"CustomFormat": "تنسيق مخصص",
"CustomFormats": "تنسيقات مخصصة",
"CutoffFormatScoreHelpText": "بمجرد الوصول إلى درجة التنسيق المخصص هذه ، لن يقوم Radarr بتنزيل الأفلام",
"CutoffFormatScoreHelpText": "بمجرد الوصول إلى درجة التنسيق المخصص هذه ، لن يقوم {appName} بتنزيل الأفلام",
"DeleteCustomFormat": "حذف التنسيق المخصص",
"DeleteCustomFormatMessageText": "هل أنت متأكد أنك تريد حذف المفهرس \"{0}\"؟",
"DeleteFormatMessageText": "هل تريد بالتأكيد حذف علامة التنسيق {0}؟",
@@ -585,7 +583,7 @@
"DeleteConditionMessageText": "هل أنت متأكد أنك تريد حذف العلامة \"{0}\"؟",
"RemoveSelectedItemsQueueMessageText": "هل تريد بالتأكيد إزالة {0} عنصر {1} من قائمة الانتظار؟",
"NoEventsFound": "لم يتم العثور على أحداث",
"BlocklistReleaseHelpText": "يمنع Radarr من الاستيلاء على هذا الإصدار تلقائيًا مرة أخرى",
"BlocklistReleaseHelpText": "يمنع {appName} من الاستيلاء على هذا الإصدار تلقائيًا مرة أخرى",
"ApplyTagsHelpTextRemove": "إزالة: قم بإزالة العلامات التي تم إدخالها",
"ApplyTagsHelpTextReplace": "استبدال: استبدل العلامات بالعلامات التي تم إدخالها (لا تدخل أي علامات لمسح جميع العلامات)",
"DeleteSelectedDownloadClients": "حذف Download Client",
@@ -617,7 +615,7 @@
"NotificationStatusSingleClientHealthCheckMessage": "القوائم غير متاحة بسبب الإخفاقات: {0}",
"SomeResultsAreHiddenByTheAppliedFilter": "بعض النتائج مخفية بواسطة عامل التصفية المطبق",
"ConnectionLost": "انقطع الاتصال",
"ConnectionLostReconnect": "سيحاول Radarr الاتصال تلقائيًا ، أو يمكنك النقر فوق إعادة التحميل أدناه.",
"ConnectionLostReconnect": "سيحاول {appName} الاتصال تلقائيًا ، أو يمكنك النقر فوق إعادة التحميل أدناه.",
"LastDuration": "المدة الماضية",
"Large": "كبير",
"WhatsNew": "ما هو الجديد؟",
@@ -638,5 +636,22 @@
"SelectQuality": "حدد الجودة",
"CustomFilter": "مرشحات مخصصة",
"IndexerFlags": "أعلام المفهرس",
"InteractiveSearchModalHeader": "بحث تفاعلي"
"InteractiveSearchModalHeader": "بحث تفاعلي",
"ApiKey": "مفتاح API",
"AuthBasic": "أساسي (المتصفح المنبثق)",
"AuthForm": "النماذج (صفحة تسجيل الدخول)",
"Enabled": "ممكن",
"FailedLoadingSearchResults": "فشل تحميل نتائج البحث ، يرجى المحاولة مرة أخرى.",
"DisabledForLocalAddresses": "معطل بسبب العناوين المحلية",
"AptUpdater": "استخدم apt لتثبيت التحديث",
"CurrentlyInstalled": "مثبتة حاليا",
"DockerUpdater": "تحديث حاوية عامل الإرساء لتلقي التحديث",
"ExternalUpdater": "تم تكوين {appName} لاستخدام آلية تحديث خارجية",
"InstallLatest": "تثبيت الأحدث",
"OnLatestVersion": "تم بالفعل تثبيت أحدث إصدار من {appName}",
"Script": "النصي",
"UnmappedFiles": "المجلدات غير المعينة",
"UpdateAppDirectlyLoadError": "تعذر تحديث {appName} مباشرة ،",
"Clone": "قريب",
"BuiltIn": "مدمج"
}

View File

@@ -1,5 +1,4 @@
{
"ApiKeyHelpTextWarning": "Изисква рестартиране, за да влезе в сила",
"Enable": "Активиране",
"MIA": "МВР",
"Size": " Размер",
@@ -7,7 +6,6 @@
"20MinutesTwenty": "120 минути: {0}",
"45MinutesFourtyFive": "90 минути: {0}",
"60MinutesSixty": "60 минути: {0}",
"APIKey": "API ключ",
"About": "относно",
"AddListExclusion": "Добавяне на изключване от списъка",
"AddingTag": "Добавяне на таг",
@@ -15,17 +13,17 @@
"AlreadyInYourLibrary": "Вече във вашата библиотека",
"AlternateTitles": "Алтернативно заглавие",
"Analytics": "Анализ",
"AnalyticsEnabledHelpText": "Изпращайте анонимна информация за използването и грешките до сървърите на Radarr. Това включва информация за вашия браузър, кои страници на Radarr WebUI използвате, отчитане на грешки, както и версията на операционната система и времето за изпълнение. Ще използваме тази информация, за да дадем приоритет на функциите и корекциите на грешки.",
"AnalyticsEnabledHelpText": "Изпращайте анонимна информация за използването и грешките до сървърите на {appName}. Това включва информация за вашия браузър, кои страници на {appName} WebUI използвате, отчитане на грешки, както и версията на операционната система и времето за изпълнение. Ще използваме тази информация, за да дадем приоритет на функциите и корекциите на грешки.",
"AnalyticsEnabledHelpTextWarning": "Изисква рестартиране, за да влезе в сила",
"AppDataDirectory": "Директория на AppData",
"ApplyTags": "Прилагане на тагове",
"Authentication": "Удостоверяване",
"AuthenticationMethodHelpText": "Изисквайте потребителско име и парола за достъп до Radarr",
"AuthenticationMethodHelpText": "Изисквайте потребителско име и парола за достъп до {appName}",
"AuthorClickToChangeBook": "Щракнете, за да промените филма",
"AutoRedownloadFailedHelpText": "Автоматично търсете и се опитвайте да изтеглите различна версия",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Изтритите от диска филми автоматично се проследяват в Radarr",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Изтритите от диска филми автоматично се проследяват в {appName}",
"Automatic": "Автоматично",
"BackupFolderHelpText": "Относителните пътища ще бъдат в директорията AppData на Radarr",
"BackupFolderHelpText": "Относителните пътища ще бъдат в директорията AppData на {appName}",
"BackupNow": "Архивиране сега",
"BackupRetentionHelpText": "Автоматичните архиви, по-стари от периода на съхранение, ще бъдат почистени автоматично",
"Backups": "Архиви",
@@ -38,16 +36,16 @@
"Calendar": "Календар",
"CalendarWeekColumnHeaderHelpText": "Показва се над всяка колона, когато седмицата е активният изглед",
"Cancel": "Отказ",
"CancelMessageText": "Наистина ли искате да отмените тази чакаща задача?",
"CancelPendingTask": "Наистина ли искате да отмените тази чакаща задача?",
"CertificateValidation": "Валидиране на сертификат",
"CertificateValidationHelpText": "Променете колко строго е валидирането на HTTPS сертифициране",
"ChangeFileDate": "Промяна на датата на файла",
"ChangeHasNotBeenSavedYet": "Промяната все още не е запазена",
"ChmodFolder": "chmod папка",
"ChmodFolderHelpText": "Осмично, приложено по време на импортиране / преименуване към медийни папки и файлове (без битове за изпълнение)",
"ChmodFolderHelpTextWarning": "Това работи само ако потребителят, работещ с Radarr, е собственик на файла. По-добре е да се уверите, че клиентът за изтегляне правилно задава разрешенията.",
"ChmodFolderHelpTextWarning": "Това работи само ако потребителят, работещ с {appName}, е собственик на файла. По-добре е да се уверите, че клиентът за изтегляне правилно задава разрешенията.",
"ChownGroupHelpText": "Име на група или gid. Използвайте gid за отдалечени файлови системи.",
"ChownGroupHelpTextWarning": "Това работи само ако потребителят, работещ с Radarr, е собственик на файла. По-добре е да се уверите, че клиентът за изтегляне използва същата група като Radarr.",
"ChownGroupHelpTextWarning": "Това работи само ако потребителят, работещ с {appName}, е собственик на файла. По-добре е да се уверите, че клиентът за изтегляне използва същата група като {appName}.",
"Clear": "Ясно",
"ClickToChangeQuality": "Щракнете, за да промените качеството",
"ClientPriority": "Приоритет на клиента",
@@ -59,10 +57,10 @@
"ConnectSettings": "Настройки за свързване",
"Connections": "Връзки",
"CopyUsingHardlinksHelpText": "Използвайте твърди връзки, когато се опитвате да копирате файлове от торенти, които все още се посяват",
"CopyUsingHardlinksHelpTextWarning": "Понякога заключванията на файлове могат да попречат на преименуване на файлове, които се засяват. Можете временно да деактивирате засяването и да използвате функцията за преименуване на Radarr като работа.",
"CopyUsingHardlinksHelpTextWarning": "Понякога заключванията на файлове могат да попречат на преименуване на файлове, които се засяват. Можете временно да деактивирате засяването и да използвате функцията за преименуване на {appName} като работа.",
"CreateEmptyAuthorFoldersHelpText": "Създайте липсващи папки с филми по време на сканиране на диска",
"CreateGroup": "Създай група",
"CutoffHelpText": "След достигане на това качество Radarr вече няма да изтегля филми",
"CutoffHelpText": "След достигане на това качество {appName} вече няма да изтегля филми",
"CutoffUnmet": "Прекъсване Неудовлетворено",
"DatabaseMigration": "DB миграция",
"Dates": "Дати",
@@ -141,7 +139,7 @@
"Grab": "Грабнете",
"GrabID": "Идентификатор на грабване",
"GrabRelease": "Grab Release",
"GrabReleaseMessageText": "Radarr не успя да определи за кой филм е предназначено това издание. Radarr може да не може автоматично да импортира тази версия. Искате ли да вземете „{0}“?",
"GrabReleaseMessageText": "{appName} не успя да определи за кой филм е предназначено това издание. {appName} може да не може автоматично да импортира тази версия. Искате ли да вземете „{0}“?",
"GrabSelected": "Grab Selected",
"Group": "Група",
"HasPendingChangesNoChanges": "Без промени",
@@ -164,7 +162,7 @@
"ImportedTo": "Внос в",
"Importing": "Импортиране",
"IncludeHealthWarningsHelpText": "Включете здравни предупреждения",
"IncludeUnknownAuthorItemsHelpText": "Показване на елементи без филм в опашката. Това може да включва премахнати филми или нещо друго от категорията на Radarr",
"IncludeUnknownAuthorItemsHelpText": "Показване на елементи без филм в опашката. Това може да включва премахнати филми или нещо друго от категорията на {appName}",
"IncludeUnmonitored": "Включете Без наблюдение",
"Indexer": "Индексатор",
"IndexerPriority": "Индексатор Приоритет",
@@ -175,7 +173,7 @@
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Надстройте, докато това качество бъде постигнато или надвишено",
"IsTagUsedCannotBeDeletedWhileInUse": "Не може да се изтрие, докато се използва",
"Language": "Език",
"LaunchBrowserHelpText": " Отворете уеб браузър и отворете началната страница на Radarr при стартиране на приложението.",
"LaunchBrowserHelpText": " Отворете уеб браузър и отворете началната страница на {appName} при стартиране на приложението.",
"LoadingBookFilesFailed": "Зареждането на филмови файлове не бе успешно",
"Local": "Местен",
"LogFiles": "Лог файлове",
@@ -256,7 +254,7 @@
"RSSSync": "RSS синхронизиране",
"RSSSyncInterval": "RSS интервал за синхронизиране",
"ReadTheWikiForMoreInformation": "Прочетете Wiki за повече информация",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Radarr поддържа всеки индексатор, който използва стандарта Newznab, както и други индексатори, изброени по-долу.",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "{appName} поддържа всеки индексатор, който използва стандарта Newznab, както и други индексатори, изброени по-долу.",
"ReadarrTags": "Радарни маркери",
"Real": "Истински",
"Reason": "Причина",
@@ -285,19 +283,19 @@
"RemoveTagExistingTag": "Съществуващ маркер",
"RemoveTagRemovingTag": "Премахване на етикет",
"RemovedFromTaskQueue": "Премахнато от опашката на задачите",
"RenameBooksHelpText": "Radarr ще използва съществуващото име на файл, ако преименуването е деактивирано",
"RenameBooksHelpText": "{appName} ще използва съществуващото име на файл, ако преименуването е деактивирано",
"Reorder": "Пренареждане",
"ReplaceIllegalCharacters": "Заменете незаконните символи",
"RequiredHelpText": "Освобождаването трябва да съдържа поне един от тези термини (без регистрация)",
"RequiredPlaceHolder": "Добавете ново ограничение",
"RescanAfterRefreshHelpTextWarning": "Radarr няма автоматично да открива промени във файлове, когато не е зададено на „Винаги“",
"RescanAfterRefreshHelpTextWarning": "{appName} няма автоматично да открива промени във файлове, когато не е зададено на „Винаги“",
"RescanAuthorFolderAfterRefresh": "Повторно сканиране на папка за филм след опресняване",
"Reset": "Нулиране",
"ResetAPIKey": "Нулиране на API ключ",
"ResetAPIKeyMessageText": "Наистина ли искате да нулирате своя API ключ?",
"Restart": "Рестартирам",
"RestartNow": "Рестартирай сега",
"RestartReadarr": "Рестартирайте Radarr",
"RestartReadarr": "Рестартирайте {appName}",
"Restore": "Възстанови",
"RestoreBackup": "Възстанови архива",
"Result": "Резултат",
@@ -337,7 +335,7 @@
"ShowSizeOnDisk": "Показване на размера на диска",
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Показва се над всяка колона, когато седмицата е активният изглед",
"SkipFreeSpaceCheck": "Пропуснете проверката на свободното пространство",
"SkipFreeSpaceCheckWhenImportingHelpText": "Използвайте, когато Radarr не е в състояние да открие свободно място от основната папка на вашия филм",
"SkipFreeSpaceCheckWhenImportingHelpText": "Използвайте, когато {appName} не е в състояние да открие свободно място от основната папка на вашия филм",
"SorryThatAuthorCannotBeFound": "За съжаление този филм не може да бъде намерен.",
"SorryThatBookCannotBeFound": "За съжаление този филм не може да бъде намерен.",
"Source": "Източник",
@@ -355,7 +353,7 @@
"SuccessMyWorkIsDoneNoFilesToRetag": "Успех! Работата ми приключи, няма файлове за преименуване.",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "RSS не се поддържа с този индексатор",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "Търсенето не се поддържа с този индексатор",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Ще се използва, когато се извършват автоматични търсения чрез потребителския интерфейс или от Radarr",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Ще се използва, когато се извършват автоматични търсения чрез потребителския интерфейс или от {appName}",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed": "Ще се използва, когато се използва интерактивно търсене",
"TagIsNotUsedAndCanBeDeleted": "Етикетът не се използва и може да бъде изтрит",
"Tags": "Етикети",
@@ -372,7 +370,7 @@
"Torrents": "Торенти",
"TotalFileSize": "Общ размер на файла",
"UILanguage": "Език на потребителския интерфейс",
"UILanguageHelpText": "Език, който Radarr ще използва за потребителски интерфейс",
"UILanguageHelpText": "Език, който {appName} ще използва за потребителски интерфейс",
"UILanguageHelpTextWarning": "Необходимо е презареждане на браузъра",
"UISettings": "Настройки на потребителския интерфейс",
"UnableToAddANewDownloadClientPleaseTryAgain": "Не може да се добави нов клиент за изтегляне, моля, опитайте отново.",
@@ -412,7 +410,7 @@
"UnmonitoredHelpText": "Включете непроменени филми в iCal емисията",
"UpdateAll": "Актуализирай всички",
"UpdateAutomaticallyHelpText": "Автоматично изтегляне и инсталиране на актуализации. Все още ще можете да инсталирате от System: Updates",
"UpdateMechanismHelpText": "Използвайте вградения в Radarr актуализатор или скрипт",
"UpdateMechanismHelpText": "Използвайте вградения в {appName} актуализатор или скрипт",
"UpdateScriptPathHelpText": "Път към персонализиран скрипт, който взема извлечен пакет за актуализация и обработва останалата част от процеса на актуализация",
"Updates": "Актуализации",
"UpgradeAllowedHelpText": "Ако инвалидните качества няма да бъдат надградени",
@@ -424,8 +422,8 @@
"UsenetDelay": "Usenet Delay",
"UsenetDelayHelpText": "Забавете за минути, за да изчакате, преди да вземете съобщение от Usenet",
"Username": "Потребителско име",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Клон, който да се използва за актуализиране на Radarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Клон, използван от външен механизъм за актуализация",
"BranchUpdate": "Клон, който да се използва за актуализиране на {appName}",
"BranchUpdateMechanism": "Клон, използван от външен механизъм за актуализация",
"Version": "Версия",
"WeekColumnHeader": "Заглавка на колоната на седмицата",
"Year": "Година",
@@ -438,7 +436,7 @@
"UnableToLoadMetadataProfiles": "Профилите за забавяне не могат да се заредят",
"SslCertPathHelpTextWarning": "Изисква рестартиране, за да влезе в сила",
"DownloadClientCheckDownloadingToRoot": "Клиентът за изтегляне {0} поставя изтеглянията в основната папка {1}. Не трябва да изтегляте в основна папка.",
"ReplaceIllegalCharactersHelpText": "Заменете незаконните символи. Ако не е отметнато, Radarr ще ги премахне вместо това",
"ReplaceIllegalCharactersHelpText": "Заменете незаконните символи. Ако не е отметнато, {appName} ще ги премахне вместо това",
"Actions": "Действия",
"Tomorrow": "Утре",
"Today": "Днес",
@@ -455,12 +453,12 @@
"RemoveFromBlocklist": "Премахване от черния списък",
"Time": "Време",
"UnableToLoadBlocklist": "Черният списък не може да се зареди",
"ReleaseBranchCheckOfficialBranchMessage": "Клон {0} не е валиден клон за издаване на Radarr, няма да получавате актуализации",
"ReleaseBranchCheckOfficialBranchMessage": "Клон {0} не е валиден клон за издаване на {appName}, няма да получавате актуализации",
"Blocklist": "Черен списък",
"BlocklistRelease": "Освобождаване на черния списък",
"SelectAll": "Избери всичко",
"SelectedCountBooksSelectedInterp": "{0} Избран / и филм / и",
"ThisCannotBeCancelled": "Това не може да бъде отменено след стартиране без рестартиране на Radarr.",
"ThisCannotBeCancelled": "Това не може да бъде отменено след стартиране без рестартиране на {appName}.",
"UnselectAll": "Деселектирайте всички",
"UpdateSelected": "Избрана актуализация",
"Wanted": "Издирва се",
@@ -488,12 +486,12 @@
"ImportListStatusCheckSingleClientMessage": "Списъци, недостъпни поради неуспехи: {0}",
"IndexerPriorityHelpText": "Приоритет на индексатора от 1 (най-висок) до 50 (най-нисък). По подразбиране: 25.",
"IndexerRssHealthCheckNoAvailableIndexers": "Всички rss-съвместими индексатори са временно недостъпни поради скорошни грешки в индексатора",
"IndexerRssHealthCheckNoIndexers": "Няма налични индексатори с активирана RSS синхронизация, Radarr няма да взема автоматично нови версии",
"IndexerRssHealthCheckNoIndexers": "Няма налични индексатори с активирана RSS синхронизация, {appName} няма да взема автоматично нови версии",
"Lists": "Списъци",
"QueueIsEmpty": "Опашката е празна",
"RefreshAndScan": "Опресняване и сканиране",
"RescanAfterRefreshHelpText": "Повторно сканиране на папката с филм след освежаване на филма",
"RestartReloadNote": "Забележка: Radarr автоматично ще рестартира и презареди потребителския интерфейс по време на процеса на възстановяване.",
"RestartReloadNote": "Забележка: {appName} автоматично ще рестартира и презареди потребителския интерфейс по време на процеса на възстановяване.",
"SearchFiltered": "Търсене Филтрирано",
"DownloadClientCheckUnableToCommunicateMessage": "Не може да се комуникира с {0}.",
"Connect": "Свържете",
@@ -503,10 +501,10 @@
"HealthNoIssues": "Няма проблеми с вашата конфигурация",
"DownloadClientCheckNoneAvailableMessage": "Няма наличен клиент за изтегляне",
"IndexersSettingsSummary": "Индексатори и ограничения за освобождаване",
"MissingFromDisk": "Whisparr не можа да намери файла на диска, така че той беше премахнат",
"MissingFromDisk": "{appName} не можа да намери файла на диска, така че той беше премахнат",
"MediaManagement": "Управление на медиите",
"Metadata": "Метаданни",
"ReadarrSupportsAnyDownloadClient": "Whisparr поддържа всеки клиент за изтегляне, който използва стандарта Newznab, както и други клиенти за изтегляне, изброени по-долу.",
"ReadarrSupportsAnyDownloadClient": "{appName} поддържа всеки клиент за изтегляне, който използва стандарта Newznab, както и други клиенти за изтегляне, изброени по-долу.",
"RootFolderCheckSingleMessage": "Липсваща основна папка: {0}",
"SettingsRemotePathMappingLocalPath": "Местен път",
"SettingsRemotePathMappingRemotePath": "Отдалечен път",
@@ -514,9 +512,9 @@
"Yesterday": "Вчера",
"Disabled": "хора с увреждания",
"IndexerLongTermStatusCheckAllClientMessage": "Всички индексатори са недостъпни поради грешки за повече от 6 часа",
"IndexerSearchCheckNoAutomaticMessage": "Няма налични индексатори с активирано автоматично търсене, Radarr няма да предоставя резултати от автоматично търсене",
"IndexerSearchCheckNoAutomaticMessage": "Няма налични индексатори с активирано автоматично търсене, {appName} няма да предоставя резултати от автоматично търсене",
"IndexerSearchCheckNoAvailableIndexersMessage": "Всички индексатори с възможност за търсене са временно недостъпни поради скорошни грешки в индексатора",
"IndexerSearchCheckNoInteractiveMessage": "Няма налични индексатори с активирано интерактивно търсене, Radarr няма да предоставя никакви интерактивни резултати от търсенето",
"IndexerSearchCheckNoInteractiveMessage": "Няма налични индексатори с активирано интерактивно търсене, {appName} няма да предоставя никакви интерактивни резултати от търсенето",
"IndexerStatusCheckAllClientMessage": "Всички индексатори са недостъпни поради грешки",
"IndexerStatusCheckSingleClientMessage": "Индексатори не са налични поради грешки: {0}",
"MaintenanceRelease": "Издание за поддръжка: поправки на грешки и други подобрения. Вижте История на комисиите на Github за повече подробности",
@@ -531,7 +529,7 @@
"ProxyCheckFailedToTestMessage": "Неуспешно тестване на прокси: {0}",
"ProxyCheckResolveIpMessage": "Неуспешно разрешаване на IP адреса за конфигурирания прокси хост {0}",
"Queued": "На опашка",
"SettingsRemotePathMappingLocalPathHelpText": "Път, който Radarr трябва да използва за локален достъп до отдалечения път",
"SettingsRemotePathMappingLocalPathHelpText": "Път, който {appName} трябва да използва за локален достъп до отдалечения път",
"SettingsRemotePathMappingRemotePathHelpText": "Основен път към директорията, до която клиентът за изтегляне има достъп",
"ShowUnknownAuthorItems": "Показване на непознати филмови елементи",
"SystemTimeCheckMessage": "Системното време е изключено с повече от 1 ден. Планираните задачи може да не се изпълняват правилно, докато времето не бъде коригирано",
@@ -556,7 +554,7 @@
"CustomFormat": "Персонализиран формат",
"CustomFormatSettings": "Настройки на персонализирани формати",
"CustomFormats": "Персонализирани формати",
"CutoffFormatScoreHelpText": "След като бъде постигнат резултатът от този персонализиран формат, Radarr вече няма да изтегля филми",
"CutoffFormatScoreHelpText": "След като бъде постигнат резултатът от този персонализиран формат, {appName} вече няма да изтегля филми",
"DeleteCustomFormat": "Изтриване на потребителски формат",
"DeleteFormatMessageText": "Наистина ли искате да изтриете маркер за формат {0}?",
"ExportCustomFormat": "Експортиране на потребителски формат",
@@ -606,7 +604,7 @@
"Small": "Малък",
"System": "Система",
"Ui": "Потребителски интерфейс",
"ConnectionLostReconnect": "Radarr ще се опита да се свърже автоматично или можете да щракнете върху презареждане по-долу.",
"ConnectionLostReconnect": "{appName} ще се опита да се свърже автоматично или можете да щракнете върху презареждане по-долу.",
"TotalSpace": "Общо пространство",
"Events": "Събития",
"Large": "Голям",
@@ -639,5 +637,63 @@
"RemoveQueueItemConfirmation": "Наистина ли искате да премахнете {0} елемент {1} от опашката?",
"IndexerFlags": "Индексиращи знамена",
"InteractiveSearchModalHeader": "Интерактивно търсене",
"FailedLoadingSearchResults": "Неуспешно зареждане на резултатите от търсенето, моля, опитайте отново."
"FailedLoadingSearchResults": "Неуспешно зареждане на резултатите от търсенето, моля, опитайте отново.",
"ApiKey": "API ключ",
"AuthBasic": "Основно (изскачащ прозорец на браузъра)",
"AuthForm": "Формуляри (Страница за вход)",
"DisabledForLocalAddresses": "Забранено за местни адреси",
"Enabled": "Активирано",
"AptUpdater": "Използвайте apt, за да инсталирате актуализацията",
"BuiltIn": "Вграден",
"CurrentlyInstalled": "Понастоящем инсталиран",
"ExternalUpdater": "{appName} е конфигуриран да използва външен механизъм за актуализация",
"Script": "Сценарий",
"UnmappedFiles": "Немапирани папки",
"UpdateAppDirectlyLoadError": "Не може да се актуализира {appName} директно,",
"Clone": "Близо",
"DockerUpdater": "актуализирайте контейнера на докера, за да получите актуализацията",
"InstallLatest": "Инсталирайте най-новите",
"OnLatestVersion": "Вече е инсталирана най-новата версия на {appName}",
"BlocklistAndSearch": "Списък за блокиране и търсене",
"BlocklistMultipleOnlyHint": "Списък за блокиране без търсене на заместители",
"BlocklistAndSearchHint": "Започнете търсене на заместител след блокиране",
"BlocklistAndSearchMultipleHint": "Започнете търсене на заместители след блокиране",
"DoNotBlocklistHint": "Премахване без блокиране",
"Database": "База данни",
"DoNotBlocklist": "Не блокирайте",
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Автоматично търсене и опит за изтегляне на различна версия, когато неуспешната версия е била взета от интерактивно търсене",
"DownloadClientDelugeSettingsDirectoryHelpText": "Незадължителна локация за изтеглянията, оставете празно, за да използвате мястото по подразбиране на Deluge",
"CustomFormatsSettingsTriggerInfo": "Персонализиран формат ще бъде приложен към издание или файл, когато съвпада с поне един от всеки от избраните различни типове условия.",
"AutomaticAdd": "Автоматично добавяне",
"BlocklistOnly": "Само списък за блокиране",
"BlocklistOnlyHint": "Списък за блокиране без търсене на заместител",
"DownloadClientDelugeSettingsDirectoryCompleted": "Директория за вече завършените изтегляния",
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Незадължителна локация за преместване на вече завършените изтегляния, оставете празно, за да използвате мястото по подразбиране на Deluge",
"Library": "Библиотека",
"ApplicationURL": "URL адрес на приложението",
"ApplicationUrlHelpText": "Външният URL на това приложение, включително http(s)://, порт и базов URL",
"CustomFormatsSpecificationFlag": "Флаг",
"BypassIfAboveCustomFormatScore": "Пропусни, ако е над рейтинга на персонализирания формат",
"AppUpdated": "{appName} Актуализиран",
"AppUpdatedVersion": "{appName} е актуализиранa до версия `{version}`, за да получите най-новите промени, ще трябва да презаредите {appName}",
"CatalogNumber": "каталожен номер",
"AutoAdd": "Автоматично добавяне",
"CustomFormatsSpecificationRegularExpression": "Регулярни изрази",
"CustomFormatsSpecificationRegularExpressionHelpText": "Персонализираният формат RegEx не е чувствителен към главни и малки букви",
"Label": "Етикет",
"AutomaticUpdatesDisabledDocker": "Автоматичните актуализации не се поддържат директно при използване на механизма за актуализация на Docker. Ще трябва да актуализирате Image-a на контейнера извън {appName} или да използвате скрипт",
"NoCutoffUnmetItems": "Няма неизпълнени елементи за прекъсване",
"Publisher": "Издател",
"Series": "Сериали",
"Theme": "Тема",
"BypassIfAboveCustomFormatScoreHelpText": "Активиране на пропускане, когато изданието има резултат, по-висок от конфигурирания минимален резултат за потребителски формат",
"MinimumCustomFormatScoreHelpText": "Минимална резултат на персонализирания формат, необходима за пропускане на забавянето за предпочитания протокол",
"DownloadClientDelugeSettingsDirectory": "Директория за изтегляне",
"AuthenticationMethodHelpTextWarning": "Моля, изберете валиден метод за удостоверяване",
"AuthenticationMethod": "Метод за удостоверяване",
"AuthenticationRequiredHelpText": "Променете за кои заявки се изисква удостоверяване. Не променяйте, освен ако не разбирате рисковете.",
"AuthenticationRequired": "Изисква се удостоверяване",
"AuthenticationRequiredPasswordHelpTextWarning": "Въведете нова парола",
"ApplyChanges": "Прилагане на промените",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Потвърдете новата парола"
}

View File

@@ -428,25 +428,25 @@
"BlocklistRelease": "Publicació de la llista de bloqueig",
"HasPendingChangesNoChanges": "Sense Canvis",
"ManualImportSelectEdition": "Importació manual - Seleccioneu la pel·lícula",
"MissingFromDisk": "Radarr no ha pogut trobar el fitxer al disc, de manera que el fitxer es desenllaçarà de la pel·lícula a la base de dades",
"MissingFromDisk": "{appName} no ha pogut trobar el fitxer al disc, de manera que el fitxer es desenllaçarà de la pel·lícula a la base de dades",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "RSS no és compatible amb aquest indexador",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "S'utilitzarà quan es realitzin cerques automàtiques mitjançant la interfície d'usuari o per Radarr",
"CutoffHelpText": "Un cop s'assoleixi aquesta qualitat, Radarr ja no baixarà pel·lícules",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "S'utilitzarà quan es realitzin cerques automàtiques mitjançant la interfície d'usuari o per {appName}",
"CutoffHelpText": "Un cop s'assoleixi aquesta qualitat, {appName} ja no baixarà pel·lícules",
"ResetAPIKeyMessageText": "Esteu segur que voleu restablir la clau API?",
"PropersAndRepacks": "Propietats i Repacks",
"RemotePathMappingCheckFolderPermissions": "Radarr pot veure però no accedir al directori de descàrregues {0}. Error de permisos probable.",
"RemotePathMappingCheckFolderPermissions": "{appName} pot veure però no accedir al directori de descàrregues {0}. Error de permisos probable.",
"RescanAuthorFolderAfterRefresh": "Torna a escanejar la carpeta de pel·lícules després de l'actualització",
"RescanAfterRefreshHelpText": "Torneu a escanejar la carpeta de la pel·lícula després d'actualitzar la pel·lícula",
"RestartReadarr": "Reinicia Radarr",
"RestartReadarr": "Reinicia {appName}",
"ShowRelativeDatesHelpText": "Mostra dates relatives (avui/ahir/etc) o absolutes",
"ShowSearchActionHelpText": "Mostra el botó de cerca al passar el cursor",
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "La carpeta de pel·lícules '{0}' i tot el seu contingut es suprimiran.",
"UrlBaseHelpTextWarning": "Cal reiniciar perquè tingui efecte",
"ApplicationURL": "URL de l'aplicació",
"ApplicationUrlHelpText": "URL extern de l'aplicació, inclòs http(s)://, port i URL base",
"BackupFolderHelpText": "Els camins relatius estaran sota el directori AppData del Radarr",
"CancelMessageText": "Esteu segur que voleu cancel·lar aquesta tasca pendent?",
"ChownGroupHelpTextWarning": "Això només funciona si l'usuari que executa Radarr és el propietari del fitxer. És millor assegurar-se que el client de descàrrega utilitza el mateix grup que Radarr.",
"BackupFolderHelpText": "Els camins relatius estaran sota el directori AppData del {appName}",
"CancelPendingTask": "Esteu segur que voleu cancel·lar aquesta tasca pendent?",
"ChownGroupHelpTextWarning": "Això només funciona si l'usuari que executa {appName} és el propietari del fitxer. És millor assegurar-se que el client de descàrrega utilitza el mateix grup que {appName}.",
"ConnectSettingsSummary": "Notificacions, connexions a servidors/reproductors multimèdia i scripts personalitzats",
"DeleteEmptyFoldersHelpText": "Suprimeix les carpetes de pel·lícules buides durant l'exploració del disc i quan s'esborren els fitxers de pel·lícules",
"DeleteImportListMessageText": "Esteu segur que voleu suprimir la llista '{name}'?",
@@ -454,26 +454,26 @@
"ForMoreInformationOnTheIndividualDownloadClientsClickOnTheInfoButtons": "Per obtenir més informació sobre els clients de baixada individuals, feu clic als botons de més informació.",
"ForMoreInformationOnTheIndividualIndexersClickOnTheInfoButtons": "Per obtenir més informació sobre els indexadors individuals, feu clic als botons d'informació.",
"ForMoreInformationOnTheIndividualListsClickOnTheInfoButtons": "Per obtenir més informació sobre les llistes d'importació individuals, feu clic als botons d'informació.",
"IndexerPriorityHelpText": "Prioritat de l'indexador d'1 (la més alta) a 50 (la més baixa). Per defecte: 25. S'utilitza quan s'agafa llançaments com a desempat per a versions iguals, Radarr encara utilitzarà tots els indexadors habilitats per a la sincronització i la cerca RSS",
"IndexerRssHealthCheckNoIndexers": "No hi ha indexadors disponibles amb la sincronització RSS activada, Radarr no capturarà les noves versions automàticament",
"IndexerSearchCheckNoAutomaticMessage": "No hi ha indexadors disponibles amb la cerca automàtica activada, Radarr no proporcionarà cap resultat de cerca automàtica",
"IndexerSearchCheckNoInteractiveMessage": "No hi ha indexadors amb la cerca interactiva activada, Radarr no obtindrà cap resultat de cerca",
"IndexerPriorityHelpText": "Prioritat de l'indexador d'1 (la més alta) a 50 (la més baixa). Per defecte: 25. S'utilitza quan s'agafa llançaments com a desempat per a versions iguals, {appName} encara utilitzarà tots els indexadors habilitats per a la sincronització i la cerca RSS",
"IndexerRssHealthCheckNoIndexers": "No hi ha indexadors disponibles amb la sincronització RSS activada, {appName} no capturarà les noves versions automàticament",
"IndexerSearchCheckNoAutomaticMessage": "No hi ha indexadors disponibles amb la cerca automàtica activada, {appName} no proporcionarà cap resultat de cerca automàtica",
"IndexerSearchCheckNoInteractiveMessage": "No hi ha indexadors amb la cerca interactiva activada, {appName} no obtindrà cap resultat de cerca",
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Actualitzeu fins que s'assoleixi o superi aquesta qualitat",
"IsTagUsedCannotBeDeletedWhileInUse": "No es pot suprimir mentre està en ús",
"LaunchBrowserHelpText": " Obriu un navegador web i navegueu a la pàgina d'inici de Lidarr a l'inici de l'aplicació.",
"LaunchBrowserHelpText": " Obriu un navegador web i navegueu a la pàgina d'inici de {appName} a l'inici de l'aplicació.",
"LoadingBookFilesFailed": "No s'han pogut carregar els fitxers de pel·lícules",
"NoHistory": "Sense història",
"OnBookFileDeleteForUpgradeHelpText": "Al suprimir el fitxer de pel·lícula per a l'actualització",
"OnBookFileDeleteHelpText": "Al suprimir fitxer de pel·lícula",
"ReleaseBranchCheckOfficialBranchMessage": "La branca {0} no és una branca de llançament de Radarr vàlida, no rebreu actualitzacions",
"ReleaseBranchCheckOfficialBranchMessage": "La branca {0} no és una branca de llançament de {appName} vàlida, no rebreu actualitzacions",
"ReleaseDate": "Dates de llançament",
"RemotePathMappingCheckDownloadPermissions": "Radarr pot veure però no accedir a la pel·lícula baixada {0}. Error de permisos probable.",
"RemotePathMappingCheckFilesGenericPermissions": "El client de baixada {0} ha informat de fitxers a {1} però Radarr no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
"RemotePathMappingCheckGenericPermissions": "El client de baixada {0} col·loca les baixades a {1} però Radarr no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
"ReplaceIllegalCharactersHelpText": "Substitueix caràcters il·legals. Si no es marca, Radarr els eliminarà",
"RemotePathMappingCheckDownloadPermissions": "{appName} pot veure però no accedir a la pel·lícula baixada {0}. Error de permisos probable.",
"RemotePathMappingCheckFilesGenericPermissions": "El client de baixada {0} ha informat de fitxers a {1} però {appName} no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
"RemotePathMappingCheckGenericPermissions": "El client de baixada {0} col·loca les baixades a {1} però {appName} no pot veure aquest directori. És possible que hàgiu d'ajustar els permisos de la carpeta.",
"ReplaceIllegalCharactersHelpText": "Substitueix caràcters il·legals. Si no es marca, {appName} els eliminarà",
"RssSyncIntervalHelpText": "Interval en minuts. Establiu a zero per desactivar (això aturarà tota captura automàtica de llançaments)",
"SelectedCountBooksSelectedInterp": "S'han seleccionat {0} pel·lícules",
"SettingsRemotePathMappingLocalPathHelpText": "Camí que Radarr hauria d'utilitzar per accedir al camí remot localment",
"SettingsRemotePathMappingLocalPathHelpText": "Camí que {appName} hauria d'utilitzar per accedir al camí remot localment",
"ShortDateFormat": "Format de data curta",
"ShowBookTitleHelpText": "Mostra el títol de la pel·lícula sota el cartell",
"ShowRelativeDates": "Mostra les dates relatives",
@@ -487,11 +487,11 @@
"SuccessMyWorkIsDoneNoFilesToRetag": "Èxit! La feina està acabada, no hi ha fitxers per canviar el nom.",
"TimeLeft": "Temps restant",
"UnableToLoadImportListExclusions": "No es poden carregar les exclusions de la llista",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Branca que s'utilitza per actualitzar Radarr",
"BranchUpdate": "Branca que s'utilitza per actualitzar {appName}",
"UserAgentProvidedByTheAppThatCalledTheAPI": "Agent d'usuari proporcionat per l'aplicació per fer peticions a l'API",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Branca utilitzada pel mecanisme d'actualització extern",
"BranchUpdateMechanism": "Branca utilitzada pel mecanisme d'actualització extern",
"WriteTagsNo": "Mai",
"RestartReloadNote": "Nota: Radarr es reiniciarà i tornarà a carregar automàticament la interfície d'usuari durant el procés de restauració.",
"RestartReloadNote": "Nota: {appName} es reiniciarà i tornarà a carregar automàticament la interfície d'usuari durant el procés de restauració.",
"Series": "Sèries",
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Es mostra a sobre de cada columna quan la setmana és la visualització activa",
"SorryThatAuthorCannotBeFound": "Ho sentim, aquesta pel·lícula no s'ha trobat.",
@@ -500,27 +500,25 @@
"ThisWillApplyToAllIndexersPleaseFollowTheRulesSetForthByThem": "Això s'aplicarà a tots els indexadors, si us plau, seguiu les regles establertes per ells",
"UnableToLoadHistory": "No es pot carregar l'historial",
"IconTooltip": "Programat",
"ReadarrTags": "Etiquetes de Radarr",
"ReadarrTags": "Etiquetes de {appName}",
"DownloadPropersAndRepacksHelpTexts1": "Si s'ha d'actualitzar automàticament o no a Propers/Repacks",
"GrabReleaseMessageText": "Lidarr no ha pogut determinar per a quina pel·lícula era aquest llançament. És possible que Lidarr no pugui importar automàticament aquesta versió. Voleu capturar \"{0}\"?",
"GrabReleaseMessageText": "{appName} no ha pogut determinar per a quina pel·lícula era aquest llançament. És possible que {appName} no pugui importar automàticament aquesta versió. Voleu capturar \"{0}\"?",
"IsCutoffCutoff": "Requisit",
"MountCheckMessage": "El muntatge que conté una ruta de pel·lícula es munta com a només de lectura: ",
"APIKey": "Clau API",
"ApiKeyHelpTextWarning": "Cal reiniciar perquè tingui efecte",
"RescanAfterRefreshHelpTextWarning": "Radarr no detectarà automàticament els canvis als fitxers quan no estigui configurat com a \"Sempre\"",
"RescanAfterRefreshHelpTextWarning": "{appName} no detectarà automàticament els canvis als fitxers quan no estigui configurat com a \"Sempre\"",
"ShowUnknownAuthorItems": "Mostra elements de pel·lícula desconeguda",
"Size": " Mida",
"SkipFreeSpaceCheckWhenImportingHelpText": "Utilitzeu-lo quan Lidarr no pugui detectar espai lliure a la carpeta arrel de la pel·lícula",
"SkipFreeSpaceCheckWhenImportingHelpText": "Utilitzeu-lo quan {appName} no pugui detectar espai lliure a la carpeta arrel de la pel·lícula",
"StandardBookFormat": "Format de pel·lícula estàndard",
"UnableToAddANewImportListExclusionPleaseTryAgain": "No es pot afegir una nova llista d'exclusió, torneu-ho a provar.",
"UnableToLoadReleaseProfiles": "No es poden carregar els perfils de retard",
"UnmonitoredHelpText": "Inclou pel·lícules no monitorades al canal iCal",
"UpdateAll": "Actualitzar-ho tot",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Les pel·lícules suprimides del disc no es descarten automàticament al Radarr",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Les pel·lícules suprimides del disc no es descarten automàticament al {appName}",
"ChownGroupHelpText": "Nom del grup o gid. Utilitzeu gid per a sistemes de fitxers remots.",
"AuthorClickToChangeBook": "Feu clic per canviar la pel·lícula",
"ChmodFolderHelpTextWarning": "Això només funciona si l'usuari que executa Radarr és el propietari del fitxer. És millor assegurar-se que el client de descàrrega estableixi correctament els permisos.",
"CopyUsingHardlinksHelpTextWarning": "De tant en tant, els bloquejos de fitxers poden impedir reanomenar els fitxers que s'estan sembrant. Podeu desactivar temporalment la compartició i utilitzar la funció de reanomenar de Radarr com a solució.",
"ChmodFolderHelpTextWarning": "Això només funciona si l'usuari que executa {appName} és el propietari del fitxer. És millor assegurar-se que el client de descàrrega estableixi correctament els permisos.",
"CopyUsingHardlinksHelpTextWarning": "De tant en tant, els bloquejos de fitxers poden impedir reanomenar els fitxers que s'estan sembrant. Podeu desactivar temporalment la compartició i utilitzar la funció de reanomenar de {appName} com a solució.",
"CouldntFindAnyResultsForTerm": "No s'ha pogut trobar cap resultat per a '{0}'",
"CreateEmptyAuthorFolders": "Creeu carpetes buides per a les pel·lícules",
"CreateEmptyAuthorFoldersHelpText": "Creeu carpetes de pel·lícules que falten durant l'exploració del disc",
@@ -538,15 +536,15 @@
"MetadataProfiles": "perfil de metadades",
"OnBookFileDelete": "Al suprimir fitxer de pel·lícula",
"OnBookFileDeleteForUpgrade": "Al suprimir el fitxer de pel·lícula per a l'actualització",
"ReadarrSupportsAnyDownloadClient": "Radarr admet molts clients de baixada de torrent i usenet populars.",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Radarr admet qualsevol indexador que utilitzi l'estàndard Newznab, així com altres indexadors que s'enumeren a continuació.",
"ReadarrSupportsAnyDownloadClient": "{appName} admet molts clients de baixada de torrent i usenet populars.",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "{appName} admet qualsevol indexador que utilitzi l'estàndard Newznab, així com altres indexadors que s'enumeren a continuació.",
"RecycleBinHelpText": "Els fitxers de pel·lícula aniran aquí quan se suprimeixin en lloc de suprimir-se permanentment",
"RenameBooksHelpText": "Radarr utilitzarà el nom del fitxer existent si el reanomenat està desactivat",
"RenameBooksHelpText": "{appName} utilitzarà el nom del fitxer existent si el reanomenat està desactivat",
"RequiredHelpText": "El llançament ha de contenir almenys un d'aquests termes (no distingeix entre majúscules i minúscules)",
"UILanguageHelpText": "Idioma que utilitzarà Radarr per a la interfície d'usuari",
"UILanguageHelpText": "Idioma que utilitzarà {appName} per a la interfície d'usuari",
"UnableToAddANewRootFolderPleaseTryAgain": "No es pot afegir un indexador nou, torneu-ho a provar.",
"UnableToLoadMetadataProfiles": "No es poden carregar els perfils de qualitat",
"UpdateMechanismHelpText": "Utilitzeu l'actualitzador integrat de Radarr o un script",
"UpdateMechanismHelpText": "Utilitzeu l'actualitzador integrat de {appName} o un script",
"UpdateSelected": "Actualització seleccionada",
"Database": "Base de dades",
"DeleteQualityProfileMessageText": "Esteu segur que voleu suprimir el perfil de qualitat '{name}'?",
@@ -555,10 +553,10 @@
"DeleteRootFolderMessageText": "Esteu segur que voleu suprimir l'indexador '{0}'?",
"DeleteSelectedBookFiles": "Suprimeix els fitxers de pel·lícules seleccionats",
"DeleteSelectedBookFilesMessageText": "Esteu segur que voleu suprimir els fitxers de pel·lícules seleccionats?",
"IncludeUnknownAuthorItemsHelpText": "Mostra elements sense pel·lícula a la cua. Això podria incloure pel·lícules eliminades o qualsevol altra cosa de la categoria de Lidarr",
"IncludeUnknownAuthorItemsHelpText": "Mostra elements sense pel·lícula a la cua. Això podria incloure pel·lícules eliminades o qualsevol altra cosa de la categoria de {appName}",
"LogLevelvalueTraceTraceLoggingShouldOnlyBeEnabledTemporarily": "El registre de traça només s'hauria d'habilitar temporalment",
"PortHelpTextWarning": "Cal reiniciar perquè tingui efecte",
"RemotePathMappingCheckImportFailed": "Radarr no ha pogut importar una pel·lícula. Comproveu els vostres registres per obtenir més informació.",
"RemotePathMappingCheckImportFailed": "{appName} no ha pogut importar una pel·lícula. Comproveu els vostres registres per obtenir més informació.",
"RemoveTagExistingTag": "Etiqueta existent",
"RemoveTagRemovingTag": "S'està eliminant l'etiqueta",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "La cerca no és compatible amb aquest indexador",
@@ -566,7 +564,7 @@
"RequiredPlaceHolder": "Afegeix una nova restricció",
"20MinutesTwenty": "20 minuts: {0}",
"AlternateTitles": "Títols alternatius",
"AnalyticsEnabledHelpText": "Envieu informació anònima d'ús i errors als servidors de Radarr. Això inclou informació sobre el vostre navegador, quines pàgines Radarr WebUI feu servir, informes d'errors, així com el sistema operatiu i la versió del temps d'execució. Utilitzarem aquesta informació per prioritzar les funcions i les correccions d'errors.",
"AnalyticsEnabledHelpText": "Envieu informació anònima d'ús i errors als servidors de {appName}. Això inclou informació sobre el vostre navegador, quines pàgines {appName} WebUI feu servir, informes d'errors, així com el sistema operatiu i la versió del temps d'execució. Utilitzarem aquesta informació per prioritzar les funcions i les correccions d'errors.",
"AnalyticsEnabledHelpTextWarning": "Cal reiniciar perquè tingui efecte",
"AuthenticationMethodHelpText": "Requereix nom d'usuari i contrasenya per accedir al radar",
"CalendarWeekColumnHeaderHelpText": "Es mostra a sobre de cada columna quan la setmana és la visualització activa",
@@ -586,7 +584,7 @@
"BypassIfHighestQuality": "Bypass si és de màxima qualitat",
"MinimumCustomFormatScore": "Puntuació mínima de format personalitzat",
"CustomFormatScore": "Puntuació de format personalitzat",
"EnableRssHelpText": "S'utilitzarà quan Radarr cerqui publicacions periòdicament mitjançant RSS Sync",
"EnableRssHelpText": "S'utilitzarà quan {appName} cerqui publicacions periòdicament mitjançant RSS Sync",
"ImportListMultipleMissingRoots": "Falten diverses carpetes arrel per a les llistes d'importació: {0}",
"IndexerDownloadClientHelpText": "Especifiqueu quin client de baixada s'utilitza per a capturar des d'aquest indexador",
"ThemeHelpText": "Canvieu el tema de la interfície d'usuari de l'aplicació, el tema \"Automàtic\" utilitzarà el tema del vostre sistema operatiu per configurar el mode clar o fosc. Inspirat en Theme.Park",
@@ -609,7 +607,7 @@
"CustomFormat": "Format personalitzat",
"CustomFormatSettings": "Configuració de formats personalitzats",
"CustomFormats": "Formats personalitzats",
"CutoffFormatScoreHelpText": "Un cop s'arribi a aquesta puntuació de format personalitzat, Radarr ja no baixarà pel·lícules",
"CutoffFormatScoreHelpText": "Un cop s'arribi a aquesta puntuació de format personalitzat, {appName} ja no baixarà pel·lícules",
"DeleteCustomFormatMessageText": "Esteu segur que voleu suprimir l'indexador '{0}'?",
"ImportListMissingRoot": "Falta la carpeta arrel per a les llistes d'importació: {0}",
"IndexerTagsHelpText": "Utilitzeu aquest indexador només per a pel·lícules amb almenys una etiqueta coincident. Deixeu-ho en blanc per utilitzar-ho amb totes les pel·lícules.",
@@ -772,5 +770,35 @@
"RemoveSelectedItems": "Elimina els elements seleccionats",
"RemoveSelectedItemsQueueMessageText": "Esteu segur que voleu eliminar {0} de la cua?",
"SelectQuality": "Seleccioneu Qualitat",
"SomeResultsAreHiddenByTheAppliedFilter": "Alguns resultats estan ocults pel filtre aplicat"
"SomeResultsAreHiddenByTheAppliedFilter": "Alguns resultats estan ocults pel filtre aplicat",
"AuthBasic": "Basic (finestra emergent del navegador)",
"AuthForm": "Formularis (pàgina d'inici de sessió)",
"AuthenticationMethod": "Mètode d'autenticació",
"AuthenticationMethodHelpTextWarning": "Seleccioneu un mètode d'autenticació vàlid",
"AuthenticationRequired": "Autenticació necessària",
"AuthenticationRequiredHelpText": "Canvia per a quines sol·licituds cal autenticar. No canvieu tret que entengueu els riscos.",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirmeu la nova contrasenya",
"AuthenticationRequiredPasswordHelpTextWarning": "Introduïu una contrasenya nova",
"AuthenticationRequiredUsernameHelpTextWarning": "Introduïu un nom d'usuari nou",
"AuthenticationRequiredWarning": "Per a evitar l'accés remot sense autenticació, ara {appName} requereix que l'autenticació estigui activada. Opcionalment, podeu desactivar l'autenticació des d'adreces locals.",
"DisabledForLocalAddresses": "Desactivat per a adreces locals",
"Enabled": "Habilitat",
"External": "Extern",
"ApiKey": "Clau API",
"FailedToFetchUpdates": "No s'han pogut obtenir les actualitzacions",
"AptUpdater": "Utilitzeu apt per a instal·lar l'actualització",
"BuiltIn": "Integrat",
"CurrentlyInstalled": "Instal·lat actualment",
"DockerUpdater": "actualitzeu el contenidor Docker per a rebre l'actualització",
"ExternalUpdater": "{appName} està configurat per a utilitzar un mecanisme d'actualització extern",
"InstallLatest": "Instal·la l'últim",
"OnLatestVersion": "La darrera versió de {appName} ja està instal·lada",
"Script": "Script",
"UnmappedFiles": "Carpetes sense mapejar",
"UpdateAppDirectlyLoadError": "No es pot actualitzar {appName} directament,",
"AddMissing": "Afegeix faltants",
"Install": "Instal·la",
"PasswordConfirmation": "Confirmeu la contrasenya",
"PreviouslyInstalled": "Instal·lat anteriorment",
"AddNewItem": "Afegeix un nou element"
}

View File

@@ -1,5 +1,4 @@
{
"ApiKeyHelpTextWarning": "Vyžaduje restart, aby se projevilo",
"AnalyticsEnabledHelpTextWarning": "Vyžaduje restart, aby se projevilo",
"DeleteRootFolderMessageText": "Opravdu chcete odstranit indexer „{0}“?",
"Group": "Skupina",
@@ -12,29 +11,28 @@
"20MinutesTwenty": "120 minut: {0}",
"45MinutesFourtyFive": "90 minut: {0}",
"60MinutesSixty": "60 minut: {0}",
"APIKey": "Klíč API",
"About": "O aplikaci",
"AddListExclusion": "Přidat vyloučení seznamu",
"AddingTag": "Přidání značky",
"AddingTag": "Přidáštítku",
"AgeWhenGrabbed": "Stáří (kdy bylo získáno)",
"AlreadyInYourLibrary": "Již máte ve své knihovně",
"AlternateTitles": "Alternativní název",
"Analytics": "Analýzy",
"AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery Radarru. To zahrnuje informace o vašem prohlížeči, které stránky Radarr WebUI používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k upřednostnění funkcí a oprav chyb.",
"AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky {appName} WebUI používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k upřednostnění funkcí a oprav chyb.",
"AppDataDirectory": "Adresář AppData",
"ApplyTags": "Použít značky",
"ApplyTags": "Použít štítky",
"Authentication": "Ověřování",
"AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k Radarr",
"AuthenticationMethodHelpText": "Vyžadovat uživatelské jméno a heslo pro přístup k {appName}u",
"AuthorClickToChangeBook": "Kliknutím změníte film",
"AutoRedownloadFailedHelpText": "Automatické vyhledání a pokus o stažení jiného vydání",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Filmy odstraněné z disku jsou automaticky sledovány v Radarru",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Filmy odstraněné z disku jsou automaticky sledovány v {appName}u",
"Automatic": "Automatický",
"BackupFolderHelpText": "Relativní cesty budou v adresáři AppData společnosti Radarr",
"BackupNow": "Ihned zálohovat",
"BackupFolderHelpText": "Relativní cesty budou v adresáři AppData společnosti {appName}",
"BackupNow": "Zálohovat nyní",
"BackupRetentionHelpText": "Automatické zálohy starší než doba uchovávání budou automaticky vyčištěny",
"Backups": "Zálohy",
"BindAddress": "Vázat adresu",
"BindAddressHelpText": "Platná IP adresa, localhost nebo '*' pro všechna rozhraní",
"BindAddressHelpText": "Platná IP adresa, localhost nebo * pro všechna rozhraní",
"BindAddressHelpTextWarning": "Vyžaduje restart, aby se projevilo",
"BookIsDownloading": "Film se stahuje",
"BookIsDownloadingInterp": "Film se stahuje - {0}% {1}",
@@ -43,17 +41,17 @@
"Calendar": "Kalendář",
"CalendarWeekColumnHeaderHelpText": "Zobrazuje se nad každým sloupcem, když je aktivní zobrazení týden",
"Cancel": "Zrušit",
"CancelMessageText": "Opravdu chcete zrušit tento nevyřízený úkol?",
"CertificateValidation": "Ověření certifikátu",
"CancelPendingTask": "Opravdu chcete zrušit tento úkol čekající na vyřízení?",
"CertificateValidation": "Ověřování certifikátu",
"CertificateValidationHelpText": "Změňte přísnost ověřování certifikátů HTTPS. Neměňte, pokud nerozumíte rizikům.",
"ChangeFileDate": "Změnit datum souboru",
"ChangeHasNotBeenSavedYet": "Změna ještě nebyla uložena",
"ChmodFolder": "Složka chmod",
"ChmodFolderHelpText": "Octal, aplikováno během importu / přejmenování na mediální složky a soubory (bez provádění bitů)",
"ChmodFolderHelpTextWarning": "Funguje to pouze v případě, že je uživatel souboru Radarr vlastníkem souboru. Je lepší zajistit, aby stahovací klient správně nastavil oprávnění.",
"ChmodFolderHelpTextWarning": "Funguje to pouze v případě, že je uživatel souboru {appName} vlastníkem souboru. Je lepší zajistit, aby stahovací klient správně nastavil oprávnění.",
"ChownGroupHelpText": "Název skupiny nebo gid. Použijte gid pro vzdálené systémy souborů.",
"ChownGroupHelpTextWarning": "Funguje to pouze v případě, že je uživatel souboru Radarr vlastníkem souboru. Je lepší zajistit, aby stahovací klient používal stejnou skupinu jako Radarr.",
"Clear": "Vyčistit",
"ChownGroupHelpTextWarning": "Funguje to pouze v případě, že je uživatel souboru {appName} vlastníkem souboru. Je lepší zajistit, aby stahovací klient používal stejnou skupinu jako {appName}.",
"Clear": "Vymazat",
"ClickToChangeQuality": "Kliknutím změníte kvalitu",
"ClientPriority": "Priorita klienta",
"CloneIndexer": "Klonovat indexátor",
@@ -64,13 +62,13 @@
"ConnectSettings": "Nastavení připojení",
"Connections": "Připojení",
"CopyUsingHardlinksHelpText": "Hardlinks použijte, když se pokoušíte kopírovat soubory z torrentů, které se stále používají",
"CopyUsingHardlinksHelpTextWarning": "Zámky souborů mohou občas zabránit přejmenování souborů, které se právě vysazují. Výsev můžete dočasně deaktivovat a použít funkci Radarr pro přejmenování.",
"CopyUsingHardlinksHelpTextWarning": "Zámky souborů mohou občas zabránit přejmenování souborů, které se právě vysazují. Výsev můžete dočasně deaktivovat a použít funkci {appName} pro přejmenování.",
"CreateEmptyAuthorFoldersHelpText": "Během skenování disku vytvářejte chybějící složky filmů",
"CreateGroup": "Vytvořit skupinu",
"CutoffHelpText": "Jakmile je této kvality dosaženo, Radarr již nebude stahovat filmy",
"CutoffUnmet": "Vynechat nevyhovující",
"CutoffHelpText": "Jakmile je této kvality dosaženo, {appName} již nebude stahovat filmy",
"CutoffUnmet": "Mezní hodnota nesplněna",
"DatabaseMigration": "Migrace databáze",
"Dates": "Termíny",
"Dates": "Data",
"DelayProfile": "Profil zpoždění",
"DelayProfiles": "Profily zpoždění",
"DelayingDownloadUntilInterp": "Zpoždění stahování do {0} o {1}",
@@ -147,7 +145,7 @@
"Grab": "Urvat",
"GrabID": "Chyť ID",
"GrabRelease": "Uchopte uvolnění",
"GrabReleaseMessageText": "Radarr nebyl schopen určit, pro který film je toto vydání určeno. Radarr nemusí být schopen toto vydání automaticky importovat. Chcete chytit „{0}“?",
"GrabReleaseMessageText": "{appName} nebyl schopen určit, pro který film je toto vydání určeno. {appName} nemusí být schopen toto vydání automaticky importovat. Chcete chytit „{0}“?",
"GrabSelected": "Chyťte vybrané",
"HasPendingChangesNoChanges": "Žádné změny",
"HasPendingChangesSaveChanges": "Uložit změny",
@@ -169,7 +167,7 @@
"ImportedTo": "Importováno do",
"Importing": "Import",
"IncludeHealthWarningsHelpText": "Zahrnout zdravotní varování",
"IncludeUnknownAuthorItemsHelpText": "Zobrazit položky bez filmu ve frontě. To by mohlo zahrnovat odstraněné filmy nebo cokoli jiného v kategorii Radarr",
"IncludeUnknownAuthorItemsHelpText": "Zobrazit položky bez filmu ve frontě. To by mohlo zahrnovat odstraněné filmy nebo cokoli jiného v kategorii {appName}",
"IncludeUnmonitored": "Zahrnout Nesledováno",
"Indexer": "Indexer",
"IndexerPriority": "Priorita indexování",
@@ -180,7 +178,7 @@
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Upgradujte, dokud nebude tato kvalita splněna nebo překročena",
"IsTagUsedCannotBeDeletedWhileInUse": "Během používání nelze smazat",
"Language": "Jazyk",
"LaunchBrowserHelpText": " Otevřete webový prohlížeč a při spuštění aplikace přejděte na domovskou stránku Radarr.",
"LaunchBrowserHelpText": " Otevřete webový prohlížeč a při spuštění aplikace přejděte na domovskou stránku {appName}.",
"LoadingBookFilesFailed": "Načítání filmových souborů se nezdařilo",
"Local": "Místní",
"LogFiles": "Záznam souborů",
@@ -261,8 +259,8 @@
"RSSSync": "RSS synchronizace",
"RSSSyncInterval": "Interval synchronizace RSS",
"ReadTheWikiForMoreInformation": "Další informace najdete na Wiki",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Radarr podporuje jakýkoli indexer, který používá standard Newznab, stejně jako další indexery uvedené níže.",
"ReadarrTags": "Radarr tagy",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "{appName} podporuje jakýkoli indexer, který používá standard Newznab, stejně jako další indexery uvedené níže.",
"ReadarrTags": "{appName} tagy",
"Real": "Nemovitý",
"Reason": "Důvod",
"RecycleBinCleanupDaysHelpText": "Nastavením na 0 zakážete automatické čištění",
@@ -290,19 +288,19 @@
"RemoveTagExistingTag": "Stávající značka",
"RemoveTagRemovingTag": "Odebírání značky",
"RemovedFromTaskQueue": "Odebráno z fronty úkolů",
"RenameBooksHelpText": "Pokud je přejmenování zakázáno, použije Radarr stávající název souboru",
"RenameBooksHelpText": "Pokud je přejmenování zakázáno, použije {appName} stávající název souboru",
"Reorder": "Přeobjednat",
"ReplaceIllegalCharacters": "Nahraďte nelegální znaky",
"RequiredHelpText": "Vydání musí obsahovat alespoň jeden z těchto výrazů (nerozlišují se malá a velká písmena)",
"RequiredPlaceHolder": "Přidat nové omezení",
"RescanAfterRefreshHelpTextWarning": "Radarr nebude automaticky detekovat změny souborů, pokud není nastaveno na „Vždy“",
"RescanAfterRefreshHelpTextWarning": "{appName} nebude automaticky detekovat změny souborů, pokud není nastaveno na „Vždy“",
"RescanAuthorFolderAfterRefresh": "Po obnovení znovu vyhledejte složku filmu",
"Reset": "Resetovat",
"ResetAPIKey": "Resetovat klíč API",
"ResetAPIKeyMessageText": "Opravdu chcete resetovat klíč API?",
"Restart": "Restartujte",
"RestartNow": "Restartovat nyní",
"RestartReadarr": "Restartujte Radarr",
"RestartReadarr": "Restartujte {appName}",
"Restore": "Obnovit",
"RestoreBackup": "Obnovit zálohu",
"Result": "Výsledek",
@@ -343,7 +341,7 @@
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Zobrazuje se nad každým sloupcem, když je aktivní zobrazení týden",
"Size": " Velikost",
"SkipFreeSpaceCheck": "Přeskočit kontrolu volného prostoru",
"SkipFreeSpaceCheckWhenImportingHelpText": "Použijte, když Radarr nedokáže detekovat volné místo z kořenové složky filmu",
"SkipFreeSpaceCheckWhenImportingHelpText": "Použijte, když {appName} nedokáže detekovat volné místo z kořenové složky filmu",
"SorryThatAuthorCannotBeFound": "Je nám líto, ale tento film nelze najít.",
"SorryThatBookCannotBeFound": "Je nám líto, ale tento film nelze najít.",
"Source": "Zdroj",
@@ -361,7 +359,7 @@
"SuccessMyWorkIsDoneNoFilesToRetag": "Úspěch! Moje práce je hotová, žádné soubory k přejmenování.",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "RSS není u tohoto indexeru podporováno",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "Vyhledávání není u tohoto indexeru podporováno",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Použije se, když se automatické vyhledávání provádí pomocí uživatelského rozhraní nebo Radarr",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Použije se, když se automatické vyhledávání provádí pomocí uživatelského rozhraní nebo {appName}",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed": "Bude použito při použití interaktivního vyhledávání",
"TagIsNotUsedAndCanBeDeleted": "Značka se nepoužívá a lze ji smazat",
"Tags": "Značky",
@@ -378,7 +376,7 @@
"Torrents": "Torrenty",
"TotalFileSize": "Celková velikost souboru",
"UILanguage": "Jazyk uživatelského rozhraní",
"UILanguageHelpText": "Jazyk, který Radarr použije pro uživatelské rozhraní",
"UILanguageHelpText": "Jazyk, který {appName} použije pro uživatelské rozhraní",
"UILanguageHelpTextWarning": "Vyžaduje se opětovné načtení prohlížeče",
"UISettings": "Nastavení uživatelského rozhraní",
"URLBase": "URL Base",
@@ -419,7 +417,7 @@
"UnmonitoredHelpText": "Zahrnout nemonitorované filmy do zdroje iCal",
"UpdateAll": "Aktualizovat vše",
"UpdateAutomaticallyHelpText": "Automaticky stahovat a instalovat aktualizace. Stále budete moci instalovat ze systému: Aktualizace",
"UpdateMechanismHelpText": "Použijte vestavěný aktualizátor Radarr nebo skript",
"UpdateMechanismHelpText": "Použijte vestavěný aktualizátor {appName} nebo skript",
"UpdateScriptPathHelpText": "Cesta k vlastnímu skriptu, který přebírá extrahovaný balíček aktualizace a zpracovává zbytek procesu aktualizace",
"Updates": "Aktualizace",
"UpgradeAllowedHelpText": "Pokud budou deaktivovány vlastnosti, nebudou upgradovány",
@@ -431,8 +429,8 @@
"UsenetDelay": "Usenet Zpoždění",
"UsenetDelayHelpText": "Zpoždění v minutách čekání před uvolněním z Usenetu",
"Username": "Uživatelské jméno",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Pobočka, která se má použít k aktualizaci Radarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Pobočka používaná mechanismem externí aktualizace",
"BranchUpdate": "Větev použitá k aktualizaci {appName}u",
"BranchUpdateMechanism": "Větev použitá externím aktualizačním mechanismem",
"Version": "Verze",
"WeekColumnHeader": "Záhlaví sloupce týdne",
"Year": "Rok",
@@ -455,12 +453,12 @@
"UnableToLoadBlocklist": "Nelze načíst černou listinu",
"Component": "Komponenta",
"Level": "Úroveň",
"ReleaseBranchCheckOfficialBranchMessage": "Pobočka {0} není platná větev vydání Radarr, nebudete dostávat aktualizace",
"ReleaseBranchCheckOfficialBranchMessage": "Pobočka {0} není platná větev vydání {appName}, nebudete dostávat aktualizace",
"Time": "Čas",
"Blocklist": "Blocklist",
"BlocklistRelease": "Blocklist pro vydání",
"ShowUnknownAuthorItems": "Zobrazit neznámé položky filmu",
"ThisCannotBeCancelled": "Toto nelze zrušit po spuštění bez restartování Radarru.",
"ThisCannotBeCancelled": "Toto nelze zrušit po spuštění bez restartování {appName}u.",
"UnselectAll": "Odznačit vše",
"UpdateSelected": "Aktualizace vybrána",
"All": "Vše",
@@ -492,7 +490,7 @@
"OnBookFileDeleteForUpgrade": "Na filmovém souboru Odstranit pro upgrade",
"OnBookFileDeleteForUpgradeHelpText": "Na filmovém souboru Odstranit pro upgrade",
"OnBookFileDeleteHelpText": "Při mazání filmových souborů",
"ReadarrSupportsAnyDownloadClient": "Whisparr podporuje libovolného klienta pro stahování, který používá standard Newznab, stejně jako další klienty pro stahování uvedené níže.",
"ReadarrSupportsAnyDownloadClient": "{appName} podporuje libovolného klienta pro stahování, který používá standard Newznab, stejně jako další klienty pro stahování uvedené níže.",
"TimeLeft": "Zbývající čas",
"Disabled": "Zakázáno",
"CouldntFindAnyResultsForTerm": "Nelze najít žádné výsledky pro dotaz „{0}“",
@@ -509,15 +507,15 @@
"ImportListStatusCheckSingleClientMessage": "Seznamy nejsou k dispozici z důvodu selhání: {0}",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {0}",
"IndexerPriorityHelpText": "Priorita indexování od 1 (nejvyšší) do 50 (nejnižší). Výchozí: 25.",
"IndexerRssHealthCheckNoIndexers": "Nejsou k dispozici žádné indexery se zapnutou synchronizací RSS, Radarr nové verze automaticky nezachytí",
"IndexerSearchCheckNoAutomaticMessage": "Nejsou k dispozici žádné indexery se zapnutým automatickým vyhledáváním, Radarr neposkytne žádné automatické výsledky hledání",
"IndexerRssHealthCheckNoIndexers": "Nejsou k dispozici žádné indexery se zapnutou synchronizací RSS, {appName} nové verze automaticky nezachytí",
"IndexerSearchCheckNoAutomaticMessage": "Nejsou k dispozici žádné indexery se zapnutým automatickým vyhledáváním, {appName} neposkytne žádné automatické výsledky hledání",
"IndexerSearchCheckNoAvailableIndexersMessage": "Všechny indexery podporující vyhledávání jsou dočasně nedostupné kvůli nedávným chybám indexeru",
"IndexerSearchCheckNoInteractiveMessage": "Pokud je povoleno interaktivní vyhledávání, nejsou k dispozici žádné indexery, Radarr neposkytne žádné interaktivní výsledky hledání",
"IndexerSearchCheckNoInteractiveMessage": "Pokud je povoleno interaktivní vyhledávání, nejsou k dispozici žádné indexery, {appName} neposkytne žádné interaktivní výsledky hledání",
"IndexerStatusCheckAllClientMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
"MaintenanceRelease": "Údržbové vydání: opravy chyb a další vylepšení. Další podrobnosti najdete v GitHub Commit History",
"MediaManagement": "Správa médií",
"Metadata": "Metadata",
"MissingFromDisk": "Radarr nemohl najít soubor na disku, takže byl odstraněn",
"MissingFromDisk": "{appName} nemohl najít soubor na disku, takže byl odstraněn",
"Monitor": "Monitor",
"OnRename": "Při přejmenování",
"OnUpgrade": "Při upgradu",
@@ -525,11 +523,11 @@
"ProxyCheckFailedToTestMessage": "Nepodařilo se otestovat proxy: {0}",
"QualitySettingsSummary": "Kvalitní velikosti a pojmenování",
"QueueIsEmpty": "Fronta je prázdná",
"RestartReloadNote": "Poznámka: Radarr se během procesu obnovy automaticky restartuje a znovu načte uživatelské rozhraní.",
"RestartReloadNote": "Poznámka: {appName} se během procesu obnovy automaticky restartuje a znovu načte uživatelské rozhraní.",
"RootFolderCheckMultipleMessage": "Chybí více kořenových složek: {0}",
"Save": "Uložit",
"SearchFiltered": "Hledat filtrováno",
"SettingsRemotePathMappingLocalPathHelpText": "Cesta, kterou by Radarr měl použít pro místní přístup ke vzdálené cestě",
"SettingsRemotePathMappingLocalPathHelpText": "Cesta, kterou by {appName} měl použít pro místní přístup ke vzdálené cestě",
"SettingsRemotePathMappingRemotePathHelpText": "Kořenová cesta k adresáři, do kterého stahovací klient přistupuje",
"SystemTimeCheckMessage": "Systémový čas je vypnutý o více než 1 den. Naplánované úlohy nemusí fungovat správně, dokud nebude čas opraven",
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "Složka filmu „{0}“ a veškerý její obsah budou smazány.",
@@ -565,7 +563,7 @@
"UpgradesAllowed": "Upgrady povoleny",
"CustomFormatSettings": "Nastavení vlastních formátů",
"CustomFormats": "Vlastní formáty",
"CutoffFormatScoreHelpText": "Jakmile je dosaženo tohoto skóre vlastního formátu, Radarr již nebude stahovat filmy",
"CutoffFormatScoreHelpText": "Jakmile je dosaženo tohoto skóre vlastního formátu, {appName} již nebude stahovat filmy",
"DeleteFormatMessageText": "Opravdu chcete smazat značku formátu {0}?",
"HiddenClickToShow": "Skryté, kliknutím zobrazíte",
"HideAdvanced": "Skrýt pokročilé",
@@ -595,12 +593,12 @@
"NoChange": "Žádná změna",
"RemovingTag": "Odebírání značky",
"SetTags": "Nastavit značky",
"ApplyTagsHelpTextAdd": "Přidat: Přidá značky k již existujícímu seznamu",
"ApplyTagsHelpTextAdd": "Přidat: Přidat štítky do existujícího seznamu štítků",
"ApplyTagsHelpTextHowToApplyDownloadClients": "Jak použít značky na vybrané klienty pro stahování",
"ApplyTagsHelpTextHowToApplyImportLists": "Jak použít značky na vybrané seznamy k importu",
"ApplyTagsHelpTextHowToApplyIndexers": "Jak použít značky na vybrané indexery",
"ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané značky",
"ApplyTagsHelpTextReplace": "Nahradit: Nahradit značky zadanými značkami (prázdné pole vymaže všechny značky)",
"ApplyTagsHelpTextHowToApplyIndexers": "Jak použít štítky na vybrané indexery",
"ApplyTagsHelpTextRemove": "Odebrat: Odebrat zadané štítky",
"ApplyTagsHelpTextReplace": "Nahradit: Nahradit štítky zadanými štítky (prázdné pole vymaže všechny štítky)",
"DeleteSelectedDownloadClients": "Odstranit klienta pro stahování",
"DeleteSelectedIndexersMessageText": "Opravdu chcete smazat {count} vybraný(ch) indexer(ů)?",
"Yes": "Ano",
@@ -620,9 +618,9 @@
"FreeSpace": "Volný prostor",
"System": "Systém",
"TotalSpace": "Celkový prostor",
"ConnectionLost": "Spojení ztraceno",
"ConnectionLost": "Ztráta spojení",
"ConnectionLostReconnect": "{appName} se pokusí připojit automaticky, nebo můžete kliknout na tlačítko znovunačtení níže.",
"ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude třebaho znovu načíst.",
"ConnectionLostToBackend": "{appName} ztratil spojení s backendem a pro obnovení funkčnosti bude potřeba ho znovu načíst.",
"Large": "Velký",
"LastDuration": "lastDuration",
"Ui": "UI",
@@ -632,7 +630,7 @@
"NextExecution": "Další spuštění",
"ClickToChangeReleaseGroup": "Kliknutím změníte skupinu vydání",
"ApplicationURL": "URL aplikace",
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základní adresy URL",
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základu URL",
"Continuing": "Pokračující",
"AutomaticUpdatesDisabledDocker": "Automatické aktualizace nejsou při použití aktualizačního mechanismu Docker přímo podporovány. Obraz kontejneru je nutné aktualizovat mimo {appName} nebo použít skript",
"AppUpdated": "{appName} aktualizován",
@@ -690,9 +688,72 @@
"AutoRedownloadFailedFromInteractiveSearch": "Opětovné stažení z interaktivního vyhledávání selhalo",
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Automaticky vyhledat a pokusit se o stažení jiného vydání, pokud bylo neúspěšné vydání zachyceno z interaktivního vyhledávání",
"SelectDropdown": "'Vybrat...",
"CustomFilter": "Vlastní filtry",
"CustomFilter": "Vlastní filtr",
"SelectQuality": "Vyberte kvalitu",
"IndexerFlags": "Příznaky indexeru",
"InteractiveSearchModalHeader": "Interaktivní vyhledávání",
"FailedLoadingSearchResults": "Výsledky vyhledávání se nepodařilo načíst, zkuste to prosím znovu."
"FailedLoadingSearchResults": "Výsledky vyhledávání se nepodařilo načíst, zkuste to prosím znovu.",
"CustomFormatsSpecificationFlag": "Vlajka",
"CustomFormatsSpecificationRegularExpressionHelpText": "Vlastní formát RegEx nerozlišuje velká a malá písmena",
"BlocklistAndSearch": "Seznam blokovaných a vyhledávání",
"ChangeCategory": "Změnit kategorii",
"BlocklistMultipleOnlyHint": "Blokovat a nehledat náhradu",
"CustomFormatsSettingsTriggerInfo": "Vlastní formát se použije na vydání nebo soubor, pokud odpovídá alespoň jednomu z různých typů zvolených podmínek.",
"ConnectionSettingsUrlBaseHelpText": "Přidá předponu do {connectionName} url, jako např. {url}",
"AuthBasic": "Základní (vyskakovací okno prohlížeče)",
"AuthenticationMethod": "Metoda ověřování",
"AuthenticationMethodHelpTextWarning": "Vyberte platnou metodu ověřování",
"AuthenticationRequired": "Vyžadováno ověření",
"AuthenticationRequiredHelpText": "Změnit, pro které požadavky je vyžadováno ověření. Neměňte, pokud nerozumíte rizikům.",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Potvrďte nové heslo",
"AuthenticationRequiredPasswordHelpTextWarning": "Zadejte nové heslo",
"AuthenticationRequiredUsernameHelpTextWarning": "Zadejte nové uživatelské jméno",
"AuthenticationRequiredWarning": "Aby se zabránilo vzdálenému přístupu bez ověření, vyžaduje nyní {appName}, aby bylo povoleno ověřování. Volitelně můžete zakázat ověřování z místních adres.",
"BlocklistOnlyHint": "Blokovat a nehledat náhradu",
"Enabled": "Povoleno",
"ApiKey": "Klíč API",
"AuthForm": "Formuláře (přihlašovací stránka)",
"DisabledForLocalAddresses": "Zakázáno pro místní adresy",
"DockerUpdater": "aktualizujte kontejner dockeru, abyste aktualizaci obdrželi",
"ExternalUpdater": "{appName} je nakonfigurován pro použití externího aktualizačního mechanismu",
"FailedToFetchUpdates": "Nepodařilo se načíst aktualizace",
"OnLatestVersion": "Nejnovější verze aplikace {appName} je již nainstalována",
"Script": "Skript",
"UpdateAppDirectlyLoadError": "{appName} nelze aktualizovat přímo,",
"BuiltIn": "Vestavěný",
"InstallLatest": "Nainstalujte nejnovější",
"CurrentlyInstalled": "Aktuálně nainstalováno",
"UnmappedFiles": "Nezmapované složky",
"AptUpdater": "K instalaci aktualizace používat apt",
"Author": "Autor",
"Book": "Kniha",
"AllowFingerprinting": "Povol Digitální Otisk (Fingerprinting)",
"AllowedLanguages": "Povolené Jazyky",
"ASIN": "ASIN",
"AllAuthorBooks": "Všechny Knihy Autora",
"AllBooks": "Všechny Knihy",
"AllExpandedCollapseAll": "Sbalit Všechny",
"AllExpandedExpandAll": "Rozbal Všechny",
"AnyEditionOkHelpText": "Readarr automaticky přepne edici, která nejlépe odpovídá staženým souborům",
"AllowFingerprintingHelpText": "Použít digitální otisk (fingerprinting) ke zlepšení přesnosti párování knih",
"AllowFingerprintingHelpTextWarning": "To vyžaduje, aby Readarr četl části souboru, což zpomaluje skenování a může způsobit vysokou aktivitu disku nebo sítě.",
"AddImportListExclusionHelpText": "Zabránit přidání knihy do Readarr pomocí Importovaných Seznamů nebo Obnovení Autora",
"AllowAuthorChangeClickToChangeAuthor": "Klikni pro změnu autora",
"BlocklistOnly": "Pouze seznam blokování",
"DoNotBlocklistHint": "Odstraň bez přidání do seznamu blokování",
"External": "Externí",
"Implementation": "Implementace",
"DoNotBlocklist": "Nepřidávat do Seznamu blokování",
"DownloadClientDelugeSettingsDirectory": "Adresář stahování",
"BlocklistAndSearchHint": "Začne hledat náhradu po blokaci",
"BlocklistAndSearchMultipleHint": "Začne vyhledávat náhrady po blokaci",
"ChangeCategoryHint": "Změní stahování do kategorie „Post-Import“ z aplikace Download Client",
"DeleteSelected": "Smazat vybrané",
"ClickToChangeIndexerFlags": "Kliknutím změníte značky indexeru",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)",
"DownloadClientQbittorrentSettingsContentLayout": "Rozvržení obsahu",
"CustomFormatsSpecificationRegularExpression": "Běžný výraz",
"ChangeCategoryMultipleHint": "Změní stahování do kategorie „Post-Import“ z aplikace Download Client",
"FailedToFetchSettings": "Nepodařilo se načíst nastavení",
"NoCutoffUnmetItems": "Žádné neodpovídající nesplněné položky"
}

View File

@@ -2,7 +2,6 @@
"20MinutesTwenty": "20 minutter: {0}",
"45MinutesFourtyFive": "45 minutter: {0}",
"60MinutesSixty": "60 minutter: {0}",
"APIKey": "API-nøgle",
"About": "Om",
"AddListExclusion": "Tilføj ekskludering af liste",
"AddingTag": "Tilføjer tag",
@@ -16,16 +15,16 @@
"AlreadyInYourLibrary": "Allerede i dit bibliotek",
"AlternateTitles": "Alternativ Titel",
"Analytics": "Analyse",
"AnalyticsEnabledHelpText": "Send anonym brugs- og fejlinformation til Radarrs servere. Dette inkluderer information i din browser, hvilke Radarr WebUI-sider du bruger, fejlrapportering samt OS og runtime-version. Vi bruger disse oplysninger til at prioritere funktioner og fejlrettelser.",
"AppDataDirectory": "AppData-bibliotek",
"AnalyticsEnabledHelpText": "Send anonym brugs- og fejlinformation til {appName}s servere. Dette inkluderer information i din browser, hvilke {appName} WebUI-sider du bruger, fejlrapportering samt OS og runtime-version. Vi bruger disse oplysninger til at prioritere funktioner og fejlrettelser.",
"AppDataDirectory": "AppData-mappe",
"ApplyTags": "Anvend tags",
"Authentication": "Godkendelse",
"AuthenticationMethodHelpText": "Kræv brugernavn og adgangskode for at få adgang til Radarr",
"AuthenticationMethodHelpText": "Kræv brugernavn og adgangskode for at få adgang til {appName}",
"AuthorClickToChangeBook": "Klik for at skifte film",
"AutoRedownloadFailedHelpText": "Søg automatisk efter og forsøg at downloade en anden udgivelse",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Film, der er slettet fra disken, overvåges automatisk i Radarr",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Film, der er slettet fra disken, overvåges automatisk i {appName}",
"Automatic": "Automatisk",
"BackupFolderHelpText": "Relative stier vil være under Radarrs AppData-bibliotek",
"BackupFolderHelpText": "Relative stier vil være under {appName}s AppData-bibliotek",
"BackupNow": "Backup Nu",
"BackupRetentionHelpText": "Automatiske sikkerhedskopier, der er ældre end opbevaringsperioden, renses automatisk",
"Backups": "Sikkerhedskopier",
@@ -39,16 +38,16 @@
"Calendar": "Kalender",
"CalendarWeekColumnHeaderHelpText": "Vist over hver kolonne, når ugen er den aktive visning",
"Cancel": "Afbryd",
"CancelMessageText": "Er du sikker på, at du vil annullere denne afventende opgave?",
"CancelPendingTask": "Er du sikker på, at du vil annullere denne afventende opgave?",
"CertificateValidation": "Validering af certifikat",
"CertificateValidationHelpText": "Skift, hvor streng HTTPS-certificering er",
"CertificateValidationHelpText": "Skift, hvor streng HTTPS-certificering er. Ændr kun dette hvis du forstå risiciene.",
"ChangeFileDate": "Skift fildato",
"ChangeHasNotBeenSavedYet": "Ændring er endnu ikke gemt",
"ChmodFolder": "chmod mappe",
"ChmodFolderHelpText": "Oktal, anvendt under import / omdøbning til mediemapper og filer (uden udførelse af bits)",
"ChmodFolderHelpTextWarning": "Dette fungerer kun, hvis den bruger, der kører Radarr, er ejeren af filen. Det er bedre at sikre, at downloadklienten indstiller tilladelserne korrekt.",
"ChmodFolderHelpTextWarning": "Dette fungerer kun, hvis den bruger, der kører {appName}, er ejeren af filen. Det er bedre at sikre, at downloadklienten indstiller tilladelserne korrekt.",
"ChownGroupHelpText": "Gruppens navn eller gid. Brug gid til eksterne filsystemer.",
"ChownGroupHelpTextWarning": "Dette fungerer kun, hvis den bruger, der kører Radarr, er ejeren af filen. Det er bedre at sikre, at downloadklienten bruger den samme gruppe som Radarr.",
"ChownGroupHelpTextWarning": "Dette fungerer kun, hvis den bruger, der kører {appName}, er ejeren af filen. Det er bedre at sikre, at downloadklienten bruger den samme gruppe som {appName}.",
"Clear": "Ryd",
"ClickToChangeQuality": "Klik for at ændre kvalitet",
"ClientPriority": "Kundens prioritet",
@@ -60,35 +59,35 @@
"ConnectSettings": "Forbind indstillinger",
"Connections": "Forbindelser",
"CopyUsingHardlinksHelpText": "Brug hardlinks, når du prøver at kopiere filer fra torrents, der stadig udsås",
"CopyUsingHardlinksHelpTextWarning": "Lejlighedsvis kan fillåse forhindre omdøbning af filer, der bliver seedet. Du kan midlertidigt deaktivere såning og bruge Radarrs omdøbningsfunktion som et arbejde rundt.",
"CopyUsingHardlinksHelpTextWarning": "Lejlighedsvis kan fillåse forhindre omdøbning af filer, der bliver seedet. Du kan midlertidigt deaktivere såning og bruge {appName}s omdøbningsfunktion som et arbejde rundt.",
"CreateEmptyAuthorFoldersHelpText": "Opret manglende filmmapper under diskscanning",
"CreateGroup": "Opret gruppe",
"CutoffHelpText": "Når denne kvalitet er nået, downloader Radarr ikke længere film",
"CutoffUnmet": "Afskåret ude",
"CutoffHelpText": "Når denne kvalitet er nået, downloader {appName} ikke længere film",
"CutoffUnmet": "Grænse ikke opnået",
"DatabaseMigration": "DB Migration",
"DelayProfile": "Udskyd Profiler",
"DelayProfiles": "Udskyd Profiler",
"DelayingDownloadUntilInterp": "Forsinker download indtil {0} kl. {1}",
"Delete": "Slet",
"DeleteBackup": "Slet sikkerhedskopi",
"DeleteBackupMessageText": "Er du sikker på, at du vil slette sikkerhedskopien '{0}'?",
"DeleteBackupMessageText": "Er du sikker på, at du vil slette sikkerhedskopien »{name}«?",
"DeleteDelayProfile": "Slet forsinkelsesprofil",
"DeleteDelayProfileMessageText": "Er du sikker på, at du vil slette denne forsinkelsesprofil?",
"DeleteDownloadClient": "Slet Download Client",
"DeleteDownloadClientMessageText": "Er du sikker på, at du vil slette downloadklienten '{0}'?",
"DeleteDownloadClientMessageText": "Er du sikker på, at du vil fjerne downloadklienten »{name}«?",
"DeleteEmptyFolders": "Slet tomme mapper",
"DeleteEmptyFoldersHelpText": "Slet tomme filmmapper under diskscanning, og når filmfiler slettes",
"DeleteImportListExclusion": "Slet udelukkelse af importliste",
"DeleteImportListExclusionMessageText": "Er du sikker på, at du vil slette denne undtagelse fra importlisten?",
"DeleteImportListMessageText": "Er du sikker på, at du vil slette listen '{0}'?",
"DeleteImportListMessageText": "Er du sikker på, at du vil slette listen »{name}«?",
"DeleteIndexer": "Slet Indexer",
"DeleteIndexerMessageText": "Er du sikker på, at du vil slette indeksøren '{0}'?",
"DeleteIndexerMessageText": "Er du sikker på, at du vil slette indeksøren »{name}«?",
"DeleteMetadataProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen {0}",
"DeleteNotification": "Slet underretning",
"DeleteNotificationMessageText": "Er du sikker på, at du vil slette underretningen '{0}'?",
"DeleteNotificationMessageText": "Er du sikker på, at du vil slette notifikationen »{name}«?",
"DeleteQualityProfile": "Slet kvalitetsprofil",
"DeleteQualityProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen {0}",
"DeleteReleaseProfile": "Slet forsinkelsesprofil",
"DeleteQualityProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen »{name}«?",
"DeleteReleaseProfile": "Slet udgivelsesprofil",
"DeleteReleaseProfileMessageText": "Er du sikker på, at du vil slette denne forsinkelsesprofil?",
"DeleteSelectedBookFiles": "Slet valgte filmfiler",
"DeleteSelectedBookFilesMessageText": "Er du sikker på, at du vil slette de valgte filmfiler?",
@@ -141,8 +140,8 @@
"GoToInterp": "Gå til {0}",
"Grab": "Tag fat",
"GrabID": "Grab ID",
"GrabRelease": "Grab Release",
"GrabReleaseMessageText": "Radarr var ikke i stand til at bestemme, hvilken film denne udgivelse var til. Radarr kan muligvis ikke automatisk importere denne udgivelse. Vil du hente '{0}'?",
"GrabRelease": "Hent udgivelse",
"GrabReleaseMessageText": "{appName} var ikke i stand til at bestemme, hvilken film denne udgivelse var til. {appName} kan muligvis ikke automatisk importere denne udgivelse. Vil du hente '{0}'?",
"GrabSelected": "Greb Valgt",
"Group": "Gruppe",
"HasPendingChangesNoChanges": "Ingen ændringer",
@@ -152,7 +151,7 @@
"Hostname": "Værtsnavn",
"ICalFeed": "iCal-feed",
"ICalHttpUrlHelpText": "Kopier denne URL til dine klienter eller klik for at abonnere, hvis din browser understøtter webcal",
"ICalLink": "iCal Link",
"ICalLink": "iCal-link",
"IconForCutoffUnmet": "Ikon til Cutoff Unmet",
"IconTooltip": "Planlagt",
"IgnoredAddresses": "Ignorerede adresser",
@@ -165,7 +164,7 @@
"ImportedTo": "Importeret til",
"Importing": "Importerer",
"IncludeHealthWarningsHelpText": "Inkluder sundhedsadvarsler",
"IncludeUnknownAuthorItemsHelpText": "Vis emner uden en film i køen. Dette kan omfatte fjernede film eller andet i Radarrs kategori",
"IncludeUnknownAuthorItemsHelpText": "Vis emner uden en film i køen. Dette kan omfatte fjernede film eller andet i {appName}s kategori",
"IncludeUnmonitored": "Inkluder Uovervåget",
"Indexer": "Indekser",
"IndexerPriority": "Indekseringsprioritet",
@@ -176,7 +175,7 @@
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Opgrader, indtil denne kvalitet er opfyldt eller overskredet",
"IsTagUsedCannotBeDeletedWhileInUse": "Kan ikke slettes under brug",
"Language": "Sprog",
"LaunchBrowserHelpText": " Åbn en webbrowser, og naviger til Radarr-hjemmesiden ved start af appen.",
"LaunchBrowserHelpText": " Åbn en webbrowser, og naviger til {appName}-hjemmesiden ved start af appen.",
"LoadingBookFilesFailed": "Indlæsning af filmfiler mislykkedes",
"Local": "Lokal",
"LogFiles": "Logfiler",
@@ -258,8 +257,8 @@
"RSSSync": "RSS-synkronisering",
"RSSSyncInterval": "RSS-synkroniseringsinterval",
"ReadTheWikiForMoreInformation": "Læs Wiki for mere information",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Radarr understøtter enhver indekserer, der bruger Newznab-standarden såvel som andre indeksatorer, der er anført nedenfor.",
"ReadarrTags": "Radarr tags",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "{appName} understøtter enhver indekserer, der bruger Newznab-standarden såvel som andre indeksatorer, der er anført nedenfor.",
"ReadarrTags": "{appName} tags",
"Real": "Ægte",
"Reason": "Grund",
"RecycleBinCleanupDaysHelpText": "Sæt til 0 for at deaktivere automatisk oprydning",
@@ -275,7 +274,7 @@
"ReleaseRejected": "Udgivelse afvist",
"ReleaseWillBeProcessedInterp": "Udgivelsen behandles {0}",
"Reload": "Genindlæs",
"RemotePathMappings": "Remote Path Mappings",
"RemotePathMappings": "Sammenkædning med fjernsti",
"Remove": "Fjerne",
"RemoveCompletedDownloadsHelpText": "Fjern importerede downloads fra downloadklienthistorik",
"RemoveFailedDownloadsHelpText": "Fjern mislykkede downloads fra downloadklienthistorik",
@@ -287,19 +286,19 @@
"RemoveTagExistingTag": "Eksisterende mærke",
"RemoveTagRemovingTag": "Fjerner tag",
"RemovedFromTaskQueue": "Fjernet fra opgavekøen",
"RenameBooksHelpText": "Radarr bruger det eksisterende filnavn, hvis omdøbning er deaktiveret",
"RenameBooksHelpText": "{appName} bruger det eksisterende filnavn, hvis omdøbning er deaktiveret",
"Reorder": "Omarranger",
"ReplaceIllegalCharacters": "Udskift ulovlige tegn",
"RequiredHelpText": "Frigivelsen skal indeholde mindst et af disse udtryk (ufølsom)",
"RequiredPlaceHolder": "Tilføj ny begrænsning",
"RescanAfterRefreshHelpTextWarning": "Radarr registrerer ikke automatisk ændringer i filer, når de ikke er indstillet til 'Altid'",
"RescanAfterRefreshHelpTextWarning": "{appName} registrerer ikke automatisk ændringer i filer, når de ikke er indstillet til 'Altid'",
"RescanAuthorFolderAfterRefresh": "Genscan filmmappe efter opdatering",
"Reset": "Nulstil",
"ResetAPIKey": "Nulstil API-nøgle",
"ResetAPIKeyMessageText": "Er du sikker på, at du vil nulstille din API-nøgle?",
"Restart": "Genstart",
"RestartNow": "Genstart nu",
"RestartReadarr": "Genstart Radarr",
"RestartReadarr": "Genstart {appName}",
"Restore": "Gendan",
"RestoreBackup": "Gendan sikkerhedskopi",
"Result": "Resultat",
@@ -340,7 +339,7 @@
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Vist over hver kolonne, når ugen er den aktive visning",
"Size": " Størrelse",
"SkipFreeSpaceCheck": "Spring fri pladscheck over",
"SkipFreeSpaceCheckWhenImportingHelpText": "Brug, når Radarr ikke er i stand til at registrere ledig plads fra din filmrodmappe",
"SkipFreeSpaceCheckWhenImportingHelpText": "Brug, når {appName} ikke er i stand til at registrere ledig plads fra din filmrodmappe",
"SorryThatAuthorCannotBeFound": "Beklager, den film kan ikke findes.",
"SorryThatBookCannotBeFound": "Beklager, den film kan ikke findes.",
"Source": "Kilde",
@@ -358,7 +357,7 @@
"SuccessMyWorkIsDoneNoFilesToRetag": "Succes! Mit arbejde er udført, ingen filer at omdøbe.",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "RSS understøttes ikke med denne indekseringsenhed",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "Søgning understøttes ikke med denne indekser",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Bruges, når der foretages automatiske søgninger via brugergrænsefladen eller af Radarr",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Bruges, når der foretages automatiske søgninger via brugergrænsefladen eller af {appName}",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed": "Bruges, når der bruges interaktiv søgning",
"TagIsNotUsedAndCanBeDeleted": "Tag bruges ikke og kan slettes",
"Tags": "Mærker",
@@ -375,7 +374,7 @@
"Torrents": "Torrenter",
"TotalFileSize": "Samlet filstørrelse",
"UILanguage": "UI-sprog",
"UILanguageHelpText": "Sprog, som Radarr vil bruge til UI",
"UILanguageHelpText": "Sprog, som {appName} vil bruge til UI",
"UILanguageHelpTextWarning": "Browser genindlæsning påkrævet",
"UISettings": "UI-indstillinger",
"URLBase": "URL-base",
@@ -413,7 +412,7 @@
"UnmonitoredHelpText": "Inkluder ikke-overvågede film i iCal-feedet",
"UpdateAll": "Opdater alle",
"UpdateAutomaticallyHelpText": "Download og installer opdateringer automatisk. Du kan stadig installere fra System: Updates",
"UpdateMechanismHelpText": "Brug Radarrs indbyggede opdatering eller et script",
"UpdateMechanismHelpText": "Brug {appName}s indbyggede opdatering eller et script",
"UpdateScriptPathHelpText": "Sti til et brugerdefineret script, der tager en udpakket opdateringspakke og håndterer resten af opdateringsprocessen",
"Updates": "Opdateringer",
"UpgradeAllowedHelpText": "Hvis deaktiveret, vil kvalitet ikke vil blive opgraderet",
@@ -425,20 +424,19 @@
"UsenetDelay": "Usenet-forsinkelse",
"UsenetDelayHelpText": "Forsink i minutter, før du tager fat i en frigivelse fra Usenet",
"Username": "Brugernavn",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Filial, der skal bruges til at opdatere Radarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Gren brugt af ekstern opdateringsmekanisme",
"BranchUpdate": "Filial, der skal bruges til at opdatere {appName}",
"BranchUpdateMechanism": "Gren brugt af ekstern opdateringsmekanisme",
"Version": "Version",
"WeekColumnHeader": "Ugens kolonneoverskrift",
"Year": "År",
"YesCancel": "Ja, Annuller",
"ApiKeyHelpTextWarning": "Kræver genstart for at træde i kraft",
"DeleteRootFolderMessageText": "Er du sikker på, at du vil slette indeksøren '{0}'?",
"LoadingBooksFailed": "Indlæsning af filmfiler mislykkedes",
"ProxyPasswordHelpText": "Du skal kun indtaste et brugernavn og en adgangskode, hvis der kræves et. Lad dem være tomme ellers.",
"SslCertPathHelpTextWarning": "Kræver genstart for at træde i kraft",
"UnableToLoadMetadataProfiles": "Kunne ikke indlæse forsinkelsesprofiler",
"DownloadClientCheckDownloadingToRoot": "Download klient {0} placerer downloads i rodmappen {1}. Du skal ikke downloade til en rodmappe.",
"ReplaceIllegalCharactersHelpText": "Udskift ulovlige tegn. Hvis det ikke er markeret, fjerner Radarr dem i stedet",
"ReplaceIllegalCharactersHelpText": "Udskift ulovlige tegn. Hvis det ikke er markeret, fjerner {appName} dem i stedet",
"ReleaseTitle": "Udgiv titel",
"Actions": "Handlinger",
"Tomorrow": "I morgen",
@@ -456,11 +454,11 @@
"RemoveFromBlocklist": "Fjern fra sortlisten",
"Component": "Komponent",
"Level": "Niveau",
"ReleaseBranchCheckOfficialBranchMessage": "Filial {0} er ikke en gyldig Radarr-frigivelsesfilial, du modtager ikke opdateringer",
"ReleaseBranchCheckOfficialBranchMessage": "Filial {0} er ikke en gyldig {appName}-frigivelsesfilial, du modtager ikke opdateringer",
"Blocklist": "Blacklist",
"BlocklistRelease": "Udgivelse af sortliste",
"SelectedCountBooksSelectedInterp": "{0} Film (er) valgt",
"ThisCannotBeCancelled": "Dette kan ikke annulleres en gang startet uden genstart af Radarr.",
"ThisCannotBeCancelled": "Dette kan ikke annulleres når først det er startet uden at du deaktiverer alle dine indeksører.",
"UnselectAll": "Fravælg alle",
"UpdateSelected": "Opdatering valgt",
"Wanted": "Ønskede",
@@ -470,7 +468,7 @@
"SettingsRemotePathMappingRemotePath": "Fjern sti",
"Connect": "Tilslut",
"Lists": "Lister",
"ReadarrSupportsAnyDownloadClient": "Whisparr understøtter enhver downloadklient, der bruger Newznab-standarden, samt andre downloadklienter, der er anført nedenfor.",
"ReadarrSupportsAnyDownloadClient": "{appName} understøtter enhver downloadklient, der bruger Newznab-standarden, samt andre downloadklienter, der er anført nedenfor.",
"ShowUnknownAuthorItems": "Vis ukendte filmgenstande",
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "Filmmappen '{0}' og alt dens indhold slettes.",
"TimeLeft": "Tid tilbage",
@@ -483,7 +481,7 @@
"General": "Generelt",
"GeneralSettingsSummary": "Port, SSL, brugernavn/adgangskode, proxy, analyser og opdateringer",
"SettingsRemotePathMappingRemotePathHelpText": "Sti til den mappe, som Download-klienten har adgang til",
"MissingFromDisk": "Whisparr kunne ikke finde filen på disken, så den blev fjernet",
"MissingFromDisk": "{appName} kunne ikke finde filen på disken, så den blev fjernet",
"Disabled": "deaktiveret",
"DownloadClientCheckUnableToCommunicateMessage": "Ude af stand til at kommunikere med {0}.",
"DownloadClientStatusCheckSingleClientMessage": "Download klienter er ikke tilgængelige på grund af fejl: {0}",
@@ -498,7 +496,7 @@
"IndexerRssHealthCheckNoAvailableIndexers": "Alle rss-mulige indexere er midlertidigt utilgængelige på grund af nylige indexer fejl",
"IndexerSearchCheckNoAvailableIndexersMessage": "Alle søge-mulige indexere er midlertidigt utilgængelige på grund af nylige indexer fejl",
"IndexerPriorityHelpText": "Indekseringsprioritet fra 1 (højest) til 50 (lavest). Standard: 25.",
"IndexerSearchCheckNoInteractiveMessage": "Ingen indexere er tilgængelige med Interaktiv Søg aktiveret, Radarr vil ikke give nogle interaktive søge resultater",
"IndexerSearchCheckNoInteractiveMessage": "Ingen indexere er tilgængelige med Interaktiv Søg aktiveret, {appName} vil ikke give nogle interaktive søge resultater",
"IndexerStatusCheckSingleClientMessage": "Indexere utilgængelige på grund af fejl: {0}",
"MediaManagement": "Mediestyring",
"Metadata": "Metadata",
@@ -518,20 +516,20 @@
"QueueIsEmpty": "Køen er tom",
"RefreshAndScan": "Opdater & Scan",
"RescanAfterRefreshHelpText": "Scan igen filmmappen efter opdatering af filmen",
"RestartReloadNote": "Bemærk: Radarr genstarter automatisk og genindlæser brugergrænsefladen under gendannelsesprocessen.",
"RestartReloadNote": "Bemærk: {appName} genstarter automatisk og genindlæser brugergrænsefladen under gendannelsesprocessen.",
"RootFolderCheckMultipleMessage": "Der mangler flere rodmapper: {0}",
"RootFolderCheckSingleMessage": "Manglende rodmappe: {0}",
"SearchFiltered": "Søg filtreret",
"SettingsRemotePathMappingLocalPath": "Lokal sti",
"SettingsRemotePathMappingLocalPathHelpText": "Sti, som Radarr skal bruge for at få adgang til den eksterne sti lokalt",
"SettingsRemotePathMappingLocalPathHelpText": "Sti, som {appName} skal bruge for at få adgang til den eksterne sti lokalt",
"SystemTimeCheckMessage": "Systemtiden er slukket mere end 1 dag. Planlagte opgaver kører muligvis ikke korrekt, før tiden er rettet",
"UpdateCheckStartupNotWritableMessage": "Kan ikke installere opdatering, fordi startmappen '{0}' ikke kan skrives af brugeren '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Kan ikke installere opdatering, fordi startmappen '{0}' er i en App Translocation-mappe.",
"UpdateCheckUINotWritableMessage": "Kan ikke installere opdatering, fordi brugergrænsefladen \"{0}\" ikke kan skrives af brugeren \"{1}\".",
"DownloadClientsSettingsSummary": "Download klienter, download håndtering og remote path mappings",
"DownloadClientStatusCheckAllClientMessage": "Alle download klienter er utilgængelige på grund af fejl",
"IndexerRssHealthCheckNoIndexers": "Ingen indexer tilgængelig med RSS sync aktiveret, Radarr vil ikke tage nye udgivelser automatisk",
"IndexerSearchCheckNoAutomaticMessage": "Ingen indexere tilgængelige med Automatisk Søg aktiveret, Radarr vil ikke give nogle automatiske søge resultater",
"IndexerRssHealthCheckNoIndexers": "Ingen indexer tilgængelig med RSS sync aktiveret, {appName} vil ikke tage nye udgivelser automatisk",
"IndexerSearchCheckNoAutomaticMessage": "Ingen indexere tilgængelige med Automatisk Søg aktiveret, {appName} vil ikke give nogle automatiske søge resultater",
"IndexerStatusCheckAllClientMessage": "Alle indeksører er utilgængelige på grund af fejl",
"MaintenanceRelease": "Vedligeholdelsesfrigivelse: fejlrettelser og andre forbedringer. Se Github Commit History for flere detaljer",
"ProxyCheckResolveIpMessage": "Mislykkedes at løse IP-adressen til den konfigurerede proxyhost {0}",
@@ -551,7 +549,7 @@
"MoveFiles": "Flyt filer",
"Label": "Etiket",
"HardlinkCopyFiles": "Hardlink/Kopir Filer",
"CustomFormatScore": "Bruger Tilpasset Format score",
"CustomFormatScore": "Brugerdefineret formats resultat",
"MinimumCustomFormatScore": "Minimum tilpasset format score",
"CloneCustomFormat": "Klon brugerdefineret format",
"Conditions": "Betingelser",
@@ -568,13 +566,13 @@
"UpgradesAllowed": "Opgraderinger tilladt",
"CustomFormatSettings": "Indstillinger for brugerdefinerede formater",
"CustomFormats": "Bruger Tilpasset Formater",
"CutoffFormatScoreHelpText": "Når denne score til brugerdefineret format er nået, downloader Radarr ikke længere film",
"CutoffFormatScoreHelpText": "Når denne score til brugerdefineret format er nået, downloader {appName} ikke længere film",
"DeleteCustomFormatMessageText": "Er du sikker på, at du vil slette indeksøren '{0}'?",
"HiddenClickToShow": "Skjult, klik for at vise",
"ShownClickToHide": "Vist, klik for at skjule",
"HideAdvanced": "Gemt Avancerede",
"ShowAdvanced": "Vis avanceret",
"ColonReplacement": "Udskiftning af tyktarm",
"ColonReplacement": "Udskiftning af kolon",
"ReplaceWithDash": "Udskift med Dash",
"ReplaceWithSpaceDash": "Udskift med Space Dash",
"ReplaceWithSpaceDashSpace": "Udskift med Space Dash Space",
@@ -584,7 +582,7 @@
"Negated": "Negeret",
"RemoveSelectedItemBlocklistMessageText": "Er du sikker på, at du vil fjerne de valgte emner fra sortlisten?",
"BlocklistReleases": "Udgivelse af sortliste",
"RemoveSelectedItemQueueMessageText": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
"RemoveSelectedItemQueueMessageText": "Er du sikker på, at du vil fjerne 1 element fra køen?",
"RemoveSelectedItemsQueueMessageText": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
"Required": "Påkrævet",
"NoEventsFound": "Ingen begivenheder fundet",
@@ -620,8 +618,8 @@
"System": "System",
"NextExecution": "Næste udførelse",
"NoResultsFound": "Ingen resultater fundet",
"ConnectionLost": "Forbindelse Mistet",
"ConnectionLostReconnect": "Radarr vil prøve at tilslutte automatisk, eller du kan klikke genindlæs forneden.",
"ConnectionLost": "Forbindelse mistet",
"ConnectionLostReconnect": "{appName} vil prøve at tilslutte automatisk. Ellers du kan klikke genindlæs forneden.",
"Location": "Beliggenhed",
"RecentChanges": "Seneste ændringer",
"SomeResultsAreHiddenByTheAppliedFilter": "Nogle resultater skjules af det anvendte filter",
@@ -638,7 +636,7 @@
"ExtraFileExtensionsHelpTextsExamples": "Eksempler: '.sub, .nfo' eller 'sub, nfo'",
"AutoRedownloadFailed": "Download fejlede",
"SourceTitle": "Kildetitel",
"RemoveQueueItemConfirmation": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
"RemoveQueueItemConfirmation": "Er du sikker på, at du vil fjerne »{sourceTitle}« fra køen?",
"ImportLists": "Lister",
"ListsSettingsSummary": "Lister",
"CustomFilter": "Bruger Tilpassede Filtere",
@@ -651,5 +649,26 @@
"Theme": "Tema",
"Publisher": "Udgiver",
"CatalogNumber": "katalognummer",
"FailedLoadingSearchResults": "Kunne ikke indlæse søgeresultater. Prøv igen."
"FailedLoadingSearchResults": "Kunne ikke indlæse søgeresultater. Prøv igen.",
"AuthBasic": "Grundlæggende (pop op-browser)",
"AuthForm": "Formularer (login-side)",
"DisabledForLocalAddresses": "Deaktiveret for lokale adresser",
"Enabled": "Aktiveret",
"ApiKey": "API-nøgle",
"AddedAuthorSettings": "Indstillinger for tilføjede forfattere",
"AddMissing": "Tilføj manglende",
"AddImportListExclusionHelpText": "Forhindre bog i at blive tilføjet til Readarr via Importer Lister eller Opdater Forfatter",
"AptUpdater": "Brug apt til at installere opdateringen",
"BuiltIn": "Indbygget",
"CurrentlyInstalled": "Aktuelt installeret",
"InstallLatest": "Installer senest",
"Script": "Manuskript",
"UpdateAppDirectlyLoadError": "Kan ikke opdatere {appName} direkte,",
"Clone": "Luk",
"UnmappedFiles": "Ikke-kortlagte mapper",
"DockerUpdater": "opdater docker-containeren for at modtage opdateringen",
"ExternalUpdater": "{appName} er konfigureret til at bruge en ekstern opdateringsmekanisme",
"OnLatestVersion": "Den seneste version af {appName} er allerede installeret",
"WouldYouLikeToRestoreBackup": "Vil du gendanne sikkerhedskopien »{name}«?",
"MetadataProfile": "metadataprofil"
}

View File

@@ -1,11 +1,10 @@
{
"PreviewRename": "Umbenennen",
"PreviewRename": "Vorschau Umbenennung",
"RecyclingBin": "Papierkorb",
"Usenet": "Usenet",
"20MinutesTwenty": "20 Minuten: {0}",
"45MinutesFourtyFive": "45 Minuten: {0}",
"60MinutesSixty": "60 Minuten: {0}",
"APIKey": "API-Schlüssel",
"About": "Über",
"AddListExclusion": "Listenausschluss hinzufügen",
"AddingTag": "Tag hinzufügen",
@@ -18,10 +17,10 @@
"AppDataDirectory": "AppData-Verzeichnis",
"ApplyTags": "Schlagworte anwenden",
"Authentication": "Authentifizierung",
"AuthenticationMethodHelpText": "Für den Zugriff auf Readarr sind Benutzername und Passwort erforderlich",
"AuthenticationMethodHelpText": "Für den Zugriff auf {appName} sind Benutzername und Passwort erforderlich",
"AuthorClickToChangeBook": "Klicken um den Film zu bearbeiten",
"AutoRedownloadFailedHelpText": "Suchen Sie automatisch nach einer anderen Version und versuchen Sie, sie herunterzuladen",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Auf der Festplatte gelöschte Filme auch automatisch in Radarr nicht mehr beobachten",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Auf der Festplatte gelöschte Filme auch automatisch in {appName} nicht mehr beobachten",
"Automatic": "Automatisch",
"BackupFolderHelpText": "Relative Pfade befinden sich unter Readarrs AppData Ordner",
"BackupNow": "Jetzt sichern",
@@ -36,7 +35,7 @@
"Calendar": "Kalender",
"CalendarWeekColumnHeaderHelpText": "Wird in der Wochenansicht über jeder Spalte angezeigt",
"Cancel": "Abbrechen",
"CancelMessageText": "Diese laufende Aufgabe wirklich abbrechen?",
"CancelPendingTask": "Diese laufende Aufgabe wirklich abbrechen?",
"CertificateValidation": "Zertifikatsvalidierung",
"CertificateValidationHelpText": "Ändern Sie, wie streng die Validierung der HTTPS-Zertifizierung ist. Ändern Sie nichts, es sei denn, Sie verstehen die Risiken.",
"ChangeFileDate": "Ändern Sie das Dateidatum",
@@ -45,7 +44,7 @@
"ChmodFolderHelpText": "Oktal, angewendet beim Importieren/Umbenennen auf Medienordner und -dateien (ohne Ausführungsbits)",
"ChmodFolderHelpTextWarning": "Dies funktioniert nur, wenn der Benutzer, der Readarr ausführt, der Eigentümer der Datei ist. Es ist besser, sicherzustellen, dass der Download-Client die Berechtigungen richtig setzt.",
"ChownGroupHelpText": "Gruppenname oder GID. Verwenden Sie GID für Remote-Dateisysteme.",
"ChownGroupHelpTextWarning": "Dies funktioniert nur, wenn der Benutzer, der Radarr ausführt, der Eigentümer der Datei ist. Es ist besser, sicherzustellen, dass der Download-Client die gleiche Gruppe wie Radarr verwendet.",
"ChownGroupHelpTextWarning": "Dies funktioniert nur, wenn der Benutzer, der {appName} ausführt, der Eigentümer der Datei ist. Es ist besser, sicherzustellen, dass der Download-Client die gleiche Gruppe wie {appName} verwendet.",
"Clear": "Leeren",
"ClickToChangeQuality": "Klicken Sie, um die Qualität zu ändern",
"ClientPriority": "Priorität",
@@ -56,9 +55,9 @@
"CompletedDownloadHandling": "Download-Handhabung abgeschlossen",
"ConnectSettings": "Verbindungseinstellungen",
"Connections": "Verbindungen",
"CopyUsingHardlinksHelpText": "Hardlinks erstellen wenn Torrents die noch geseeded werden kopiert werden sollen",
"CopyUsingHardlinksHelpText": "Hardlinks ermöglichen es Readarr, seeding Torrents in den Serienordner zu importieren, ohne zusätzlichen Speicherplatz zu beanspruchen oder den gesamten Inhalt der Datei zu kopieren. Hardlinks funktionieren nur, wenn Quelle und Ziel auf demselben Volume liegen",
"CopyUsingHardlinksHelpTextWarning": "Dateisperren Gelegentlich kann es vorkommen, dass Dateisperren das Umbenennen von Dateien verhindern, die gerade geseeded werden. Sie können das Seeding vorübergehend deaktivieren und die Umbenennungsfunktion von Readarr als Workaround verwenden.",
"CreateEmptyAuthorFoldersHelpText": "Leere Filmordner für fehlende Filme beim Scan erstellen",
"CreateEmptyAuthorFoldersHelpText": "Leere Autorenordner für fehlende Autoren beim Scan erstellen",
"CreateGroup": "Gruppe erstellen",
"CutoffHelpText": "Sobald diese Qualität erreicht wird, werden keine neuen Releases erfasst",
"CutoffUnmet": "Schwelle nicht erreicht",
@@ -97,7 +96,7 @@
"DiskSpace": "Festplattenplatz",
"Docker": "Docker",
"DownloadClientSettings": "Downloader Einstellungen",
"DownloadClients": "Downloader",
"DownloadClients": "Download Clients",
"DownloadFailedCheckDownloadClientForMoreDetails": "Download fehlgeschlagen: Prüfe den Downloader für mehr Details",
"DownloadFailedInterp": "Download fehlgeschlagen: {0}",
"DownloadPropersAndRepacksHelpTexts1": "Automatisch Proper oder Repacks zum upgraden eines Filmes zulassen",
@@ -105,18 +104,18 @@
"Edit": "Bearbeiten",
"Edition": "Auflage",
"Enable": "Aktivieren",
"EnableAutomaticAdd": "Automatisch hinzufügen",
"EnableAutomaticAdd": "Automatisches Hinzufügen aktivieren",
"EnableAutomaticSearch": "Automatische Suche einschalten",
"EnableColorImpairedMode": "Farbbeeinträchtigter Modus aktivieren",
"EnableColorImpairedModeHelpText": "Alternativer Stil, um farbbeeinträchtigten Benutzern eine bessere Unterscheidung farbcodierter Informationen zu ermöglichen",
"EnableCompletedDownloadHandlingHelpText": "Importiere fertige Downloads vom Downloader automatisch",
"EnableHelpText": "Metadaten Dateien erstellen für diesen Metadata Typ",
"EnableColorImpairedMode": "Farbenblindmodus aktivieren",
"EnableColorImpairedModeHelpText": "Stiländerung, um es Farbenblinden Benutzern zu ermöglichen, farbcodierte Informationen besser zu unterscheiden",
"EnableCompletedDownloadHandlingHelpText": "Automatischer Import abgeschlossener Downloads vom Download Client",
"EnableHelpText": "Aktiviere die Erstellung von Metadaten-Dateien für diesen Metadaten-Typ",
"EnableInteractiveSearch": "Interaktive Suche einschalten",
"EnableRSS": "RSS aktivieren",
"EnableSSL": "SSL",
"EnableSslHelpText": " Erfordert einen Neustart als Administrator",
"Ended": "Beendet",
"ErrorLoadingContents": "Fehler beim laden der Inhalte",
"ErrorLoadingContents": "Fehler beim Laden von Inhalten",
"ErrorLoadingPreviews": "Fehler beim laden der Vorschauen",
"Exception": "Ausnahme",
"FailedDownloadHandling": "Verarbeitung fehlgeschlagener Downloads",
@@ -133,20 +132,20 @@
"ForMoreInformationOnTheIndividualIndexersClickOnTheInfoButtons": "Für mehr Infomationen klicke auf die Info-Knöpfe.",
"ForMoreInformationOnTheIndividualListsClickOnTheInfoButtons": "Für mehr Infomationen klicke auf die Info-Knöpfe.",
"GeneralSettings": "Allgemeine Einstellungen",
"Global": "Global",
"Global": "Weltweit",
"GoToInterp": "Zu {0} gehen",
"Grab": "Erfasse",
"Grab": "Holen",
"GrabID": "Erfass ID",
"GrabRelease": "Release erfassen",
"GrabRelease": "Release holen",
"GrabReleaseMessageText": "Das Release konnte keinem Film zugeordnet werden. Ein automatischer Import wird nicht möglich sein. Trotzdem '{0}' erfassen?",
"GrabSelected": "Auswahl erfassen",
"GrabSelected": "Auswahl abrufen",
"Group": "Gruppe",
"HasPendingChangesNoChanges": "Keine Änderungen",
"HasPendingChangesSaveChanges": "Änderungen speichern",
"History": "Verlauf",
"Host": "Host",
"Hostname": "Hostname",
"ICalFeed": "iCal-Feed",
"ICalFeed": "iCal Feed",
"ICalHttpUrlHelpText": "Füge diese URL in deinen Client ein oder klicke auf abonnieren wenn dein Browser Webcal untertützt",
"ICalLink": "iCal Link",
"IconForCutoffUnmet": "Symbol für Schwelle nicht erreicht",
@@ -155,28 +154,28 @@
"IgnoredHelpText": "Ein Release wird abgelehnt, wenn es einen oder mehrere dieser Begriffe enthält (Groß- und Kleinschreibung wird nicht berücksichtigt)",
"IgnoredPlaceHolder": "Neue Beschränkung hinzufügen",
"IllRestartLater": "Später neustarten",
"ImportExtraFiles": "Extra Dateien importieren",
"ImportExtraFiles": "Zusätzliche Dateien importieren",
"ImportExtraFilesHelpText": "Importiere zutreffende Extra Dateien (Untertitel, nfo, etc.) nach dem Importieren einer Filmdatei",
"ImportFailedInterp": "Import fehlgeschlagen: {0}",
"ImportedTo": "Importiert nach",
"Importing": "Importiere",
"IncludeHealthWarningsHelpText": "Zustandswarnung",
"IncludeUnknownAuthorItemsHelpText": "Einträge ohne eine Zuordnung in der Warteschlange anzeigen. Dies könnten gelöschte Autoren, Bücher oder alles andere mit Readarrs Downloadkategorie sein",
"IncludeUnmonitored": "Nicht beobachtete einbeziehen",
"IncludeUnmonitored": "Unüberwachte einbeziehen",
"Indexer": "Indexer",
"IndexerPriority": "Priorität",
"IndexerSettings": "Indexer Einstellungen",
"IndexerPriority": "Indexer-Priorität",
"IndexerSettings": "Indexer-Einstellungen",
"Indexers": "Indexer",
"Interval": "Intervall",
"IsCutoffCutoff": "Schwelle",
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Solange bis die Qualität erreicht oder übertroffen wird verbessern",
"IsTagUsedCannotBeDeletedWhileInUse": "Kann während der Benutzung nicht gelöscht werden",
"Language": "Sprache",
"LaunchBrowserHelpText": " Öffne die Startseite von Radarr im Webbrowser nach dem Start.",
"LaunchBrowserHelpText": " Öffne die Startseite von {appName} im Webbrowser nach dem Start.",
"LoadingBookFilesFailed": "Laden der Film-Dateien fehlgeschlagen",
"Local": "Lokal",
"LogFiles": "Protokolldateien",
"LogLevel": "Log Level",
"LogLevel": "Protokollstufe",
"LogLevelvalueTraceTraceLoggingShouldOnlyBeEnabledTemporarily": "Trace logging sollte nur kurzzeitig aktiviert werden",
"Logging": "Protokollierung",
"Logs": "Protokolle",
@@ -188,52 +187,52 @@
"MaximumLimits": "Maximale Grenzen",
"MaximumSize": "Maximale Größe",
"MaximumSizeHelpText": "Maximale Größe für ein zu erfassendes Release in MB. 0 bedeutet unbegrenzt.",
"Mechanism": "Verfahren",
"MediaInfo": "Medien Information",
"MediaManagementSettings": "Medienverwaltungs Einstellungen",
"Mechanism": "Mechanismus",
"MediaInfo": "Medieninfo",
"MediaManagementSettings": "Einstellungen zur Medienverwaltung",
"Message": "Nachricht",
"MetadataSettings": "Metadaten Einstellungen",
"MetadataSettings": "Einstellungen für Metadaten",
"MinimumAge": "Mindestalter",
"MinimumAgeHelpText": "Nur Usenet: Mindestalter in Minuten der NZBs bevor sie erfasst werden. Gebe damit neuen Releases Zeit, sich bei deinem Usenet Provider zu verbreiten.",
"MinimumFreeSpace": "Mindest freier Speicher",
"MinimumAgeHelpText": "Nur Usenet: Mindestalter in Minuten von NZBs, bevor sie heruntergeladen werden. Verwende dies, um neuen Releases Zeit zu geben, zu deinem Usenet-Anbieter zu propagieren.",
"MinimumFreeSpace": "Mindestfreier Speicherplatz",
"MinimumFreeSpaceWhenImportingHelpText": "Importieren verhindern wenn weniger als dieser Wert als freier Speicher zur Verfügung steht",
"MinimumLimits": "Mindest Grenzen",
"MinimumLimits": "Minimale Grenzen",
"Missing": "Fehlend",
"Mode": "Modus",
"Monitored": "Beobachtet",
"Monitored": "Überwacht",
"MoreInfo": "Mehr Infos",
"MustContain": "Muss beinhalten",
"MustNotContain": "Darf nicht beinhalten",
"MustContain": "Muss enthalten",
"MustNotContain": "Darf nicht enthalten",
"Name": "Name",
"NamingSettings": "Bennenungs Einstellungen",
"NamingSettings": "Benennungseinstellungen",
"New": "Neu",
"NoBackupsAreAvailable": "Es sind keine Backups vorhanden",
"NoBackupsAreAvailable": "Keine Sicherungen verfügbar",
"NoHistory": "Kein Verlauf.",
"NoLeaveIt": "Nein, nicht ändern",
"NoLimitForAnyRuntime": "Keine Begrenzung der Laufzeiten",
"NoLogFiles": "Keine Log-Dateien",
"NoMinimumForAnyRuntime": "Kein Minimum für Laufzeiten",
"NoLeaveIt": "Nein, lass es",
"NoLimitForAnyRuntime": "Kein Limit für beliebige Laufzeit",
"NoLogFiles": "Keine Logdateien",
"NoMinimumForAnyRuntime": "Kein Minimum für beliebige Laufzeit",
"NoUpdatesAreAvailable": "Es sind keine Updates verfügbar",
"None": "Keine",
"NotificationTriggers": "Benachrichtigungs Auslöser",
"NotificationTriggers": "Benachrichtigungs-Auslöser",
"OnGrabHelpText": "Erfassen",
"OnHealthIssueHelpText": "Zustandsproblem",
"OnRenameHelpText": "Umbennenen",
"OnRenameHelpText": "Umbenennen",
"OnUpgradeHelpText": "Upgrade",
"OpenBrowserOnStart": "Browser beim Start öffnen",
"Options": "Optionen",
"Original": "Orginal",
"Overview": "Übersicht",
"PackageVersion": "Paket Version",
"Original": "Original",
"Overview": "Überblick",
"PackageVersion": "Paketversion",
"PageSize": "Einträge pro Seite",
"PageSizeHelpText": "Anzahl der Einträge pro Seite",
"Password": "Passwort",
"Path": "Pfad",
"Permissions": "Rechte",
"Permissions": "Berechtigungen",
"Port": "Port",
"PortHelpTextWarning": "Erfordert einen Neustart",
"PortNumber": "Port Nummer",
"PosterSize": "Plakatgröße",
"PortNumber": "Portnummer",
"PosterSize": "Postergröße",
"Profiles": "Profile",
"Proper": "Korrekt",
"PropersAndRepacks": "Propers und Repacks",
@@ -254,7 +253,7 @@
"RSSSyncInterval": "RSS Synchronisierungs Intervall",
"ReadTheWikiForMoreInformation": "Lesen Sie das Wiki für weitere Informationen",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Jeder Indexer der den Newznab-Standard verwendet oder unten aufgelistet ist wird untertützt.",
"ReadarrTags": "Radarr Tags",
"ReadarrTags": "{appName} Tags",
"Real": "Real",
"Reason": "Begründung",
"RecycleBinCleanupDaysHelpText": "Auf 0 setzen um das automatische leeren des Papierkorbs zu deaktivieren",
@@ -268,23 +267,23 @@
"ReleaseGroup": "Release-Gruppe",
"ReleaseRejected": "Release abgelehnt",
"ReleaseWillBeProcessedInterp": "Release wird verarbeitet {0}",
"Reload": "Neuladen",
"Reload": "Neu laden",
"RemotePathMappings": "Remote-Pfadzuordnungen",
"Remove": "Entfernen",
"RemoveCompletedDownloadsHelpText": "Importierte Downloads aus dem Downloader Verlauf entfernen",
"RemoveCompletedDownloadsHelpText": "Entferne importierte Downloads aus der Download-Client-Historie",
"RemoveFailedDownloadsHelpText": "Fehlgeschlagene Downloads aus dem Downloader Verlauf entfernen",
"RemoveFilter": "Filter entfernen",
"RemoveFromDownloadClient": "Aus dem Download Client entfernen",
"RemoveFromQueue": "Aus der Warteschlage entfernen",
"RemoveFromQueue": "Aus der Warteschlange entfernen",
"RemoveHelpTextWarning": "Dies wird den Download und alle bereits heruntergeladenen Dateien aus dem Downloader entfernen.",
"RemoveSelected": "Auswahl entfernen",
"RemoveSelected": "Ausgewählte entfernen",
"RemoveTagExistingTag": "Vorhandener Tag",
"RemoveTagRemovingTag": "Tag entfernen",
"RemovedFromTaskQueue": "Aus der Aufgabenwarteschlange entfernt",
"RenameBooksHelpText": "Wenn das umbennen deaktiviert ist, wird der vorhandene Dateiname benutzt",
"Reorder": "Neu sortieren",
"ReplaceIllegalCharacters": "Sonderzeichen ersetzen",
"RequiredHelpText": "Das Release mus mindesten eines der Begriffe beinhalten ( Groß-/Kleinschreibung wird nicht beachtet )",
"RenameBooksHelpText": "Wenn das Umbenennen deaktiviert ist, wird der vorhandene Dateiname benutzt",
"Reorder": "Neu anordnen",
"ReplaceIllegalCharacters": "Illegale Zeichen ersetzen",
"RequiredHelpText": "Diese {0}-Bedingung muss übereinstimmen, damit das benutzerdefinierte Format angewendet wird. Andernfalls reicht eine einzelne {0}-Übereinstimmung aus.",
"RequiredPlaceHolder": "Neue Beschränkung hinzufügen",
"RescanAfterRefreshHelpTextWarning": "Wenn nicht \"Immer (Always)\" ausgewählt wird, werden Dateiänderungen nicht automatisch erkannt",
"RescanAuthorFolderAfterRefresh": "Nach dem Aktualisieren den Autorordner neu scannen",
@@ -293,41 +292,41 @@
"ResetAPIKeyMessageText": "Sind Sie sicher, dass Sie Ihren API-Schlüssel zurücksetzen möchten?",
"Restart": "Neu starten",
"RestartNow": "Jetzt neustarten",
"RestartReadarr": "Radarr Neustarten",
"RestartReadarr": "{appName} Neustarten",
"Restore": "Wiederherstellen",
"RestoreBackup": "Sicherung wiederherstellen",
"Result": "Ergebnis",
"RetentionHelpText": "Nur Usenet: Auf Null setzen, um eine unbegrenzte Aufbewahrung festzulegen",
"RetryingDownloadInterp": "Herunterladen nochmal versuchen {0} um {1}",
"RootFolder": "Stammordner",
"RootFolders": "Stammordner",
"RssSyncIntervalHelpText": "Intervall in Minuten. Zum deaktivieren auf 0 setzen ( Dies wird das automatische Release erfassen deaktivieren )",
"RootFolder": "Root-Ordner",
"RootFolders": "Root-Ordner",
"RssSyncIntervalHelpText": "Intervall in Minuten. Setze auf null, um es zu deaktivieren (dies stoppt alle automatischen Release-Abfragen)",
"SSLCertPassword": "SSL Zertifikat Passwort",
"SSLCertPath": "Pfad zum SSL Zertifikat",
"SSLPort": "SSL Port",
"Scheduled": "Geplant",
"ScriptPath": "Script Pfad",
"Search": "Suche",
"SearchAll": "Suche alle",
"SearchForMissing": "Suche fehlende",
"SearchSelected": "Auswahl suchen",
"ScriptPath": "Skript-Pfad",
"Search": "Suchen",
"SearchAll": "Alle durchsuchen",
"SearchForMissing": "Suche nach fehlenden Episoden",
"SearchSelected": "Ausgewählte durchsuchen",
"Security": "Sicherheit",
"SendAnonymousUsageData": "Sende anonyme Nutzungsdaten",
"SetPermissions": "Rechte setzen",
"SetPermissionsLinuxHelpText": "Soll CHMOD ausgeführt werden wenn Datien importiert/umbenannt werden?",
"SetPermissions": "Berechtigungen festlegen",
"SetPermissionsLinuxHelpText": "Soll chmod beim Importieren/Umbenennen von Dateien ausgeführt werden?",
"SetPermissionsLinuxHelpTextWarning": "Wenn Sie nicht sicher sind, was diese Einstellungen bewirken, ändern Sie sie nicht.",
"Settings": "Einstellungen",
"ShortDateFormat": "Kurzes Datumsformat",
"ShowCutoffUnmetIconHelpText": "Symbol zeigen wenn die Qualitätsschwelle noch nicht erreicht wurde",
"ShowDateAdded": "Datum der Hinzufügung anzeigen",
"ShowPath": "Pfad anzeigen",
"ShowQualityProfile": "Qualitätsdefinition anzeigen",
"ShowQualityProfileHelpText": "Qualitätsprofil unter dem Plakat anzeigen",
"ShowRelativeDates": "Relatives Datum anzeigen",
"ShowRelativeDatesHelpText": "Relatives (z.B.: Heute, gestern, etc) oder absolutes Datum anzeigen",
"ShowQualityProfile": "Qualitätsprofil anzeigen",
"ShowQualityProfileHelpText": "Qualitätsprofil unter dem Poster anzeigen",
"ShowRelativeDates": "Relative Daten anzeigen",
"ShowRelativeDatesHelpText": "Relative (Heute/Gestern/etc.) oder absolute Daten anzeigen",
"ShowSearch": "Suche anzeigen",
"ShowSearchActionHelpText": "Suchbutton anzeigen beim draufzeigen",
"ShowSizeOnDisk": "Belegter Speicherplatz anzeigen",
"ShowSizeOnDisk": "Größe auf der Festplatte anzeigen",
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Wird in der Wochenansicht über jeder Spalte angezeigt",
"Size": " Größe",
"SkipFreeSpaceCheck": "Prüfung des freien Speichers überspringen",
@@ -346,11 +345,11 @@
"Status": "Status",
"StatusEndedEnded": "Beendet",
"Style": "Stil",
"SuccessMyWorkIsDoneNoFilesToRename": "Fertig! Keine weiteren Dateien zum umbennenen.",
"SuccessMyWorkIsDoneNoFilesToRetag": "Fertig! Keine weiteren Dateien zum umbennenen.",
"SuccessMyWorkIsDoneNoFilesToRename": "Fertig! Keine weiteren Dateien zum Umbenennen.",
"SuccessMyWorkIsDoneNoFilesToRetag": "Fertig! Keine weiteren Dateien zum retaggen.",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "Der Indexer unterstützt kein RSS",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "Der Indexer unterstützt keine Suchen",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Wird für automatische Suchen genutzt die vom Benutzer oder von Radarr gestartet werden",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Wird für automatische Suchen genutzt die vom Benutzer oder von {appName} gestartet werden",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed": "Wird für die manuelle Suche benutzt",
"Tasks": "Aufgaben",
"TestAll": "Alle prüfen",
@@ -401,7 +400,7 @@
"UnableToLoadTags": "Tags konnten nicht geladen werden",
"UnableToLoadTheCalendar": "Kalender konnte nicht geladen werden",
"UnableToLoadUISettings": "Oberflächen Einstellungen konnten nicht geladen werden",
"Ungroup": "Gruppe entfernen",
"Ungroup": "Gruppierung aufheben",
"UnmonitoredHelpText": "Nicht beobachtete Filme im iCal-Feed einschließen",
"UpdateAll": "Alle aktualisieren",
"UpdateAutomaticallyHelpText": "Updates automatisch herunterladen und installieren. Sie können weiterhin über System: Updates installieren",
@@ -416,8 +415,8 @@
"UsenetDelay": "Usenet-Verzögerung",
"UsenetDelayHelpText": "Verzögerung in Minuten, bevor Sie eine Veröffentlichung aus dem Usenet erhalten",
"Username": "Nutzername",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Branch zum updaten von Radarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Branch für den externen Updateablauf",
"BranchUpdate": "Branch zum updaten von {appName}",
"BranchUpdateMechanism": "Branch für den externen Updateablauf",
"Version": "Version",
"WeekColumnHeader": "Spaltenüberschrift „Woche“.",
"Year": "Jahr",
@@ -427,7 +426,6 @@
"ProxyUsernameHelpText": "Sie müssen nur einen Benutzernamen und ein Passwort eingeben, wenn dies erforderlich ist. Andernfalls lassen Sie sie leer.",
"SslPortHelpTextWarning": "Erfordert einen Neustart",
"UnableToLoadMetadataProfiles": "Verzögerungsprofile konnten nicht geladen werden",
"ApiKeyHelpTextWarning": "Erfordert einen Neustart",
"Book": "Buch",
"Authors": "Autoren",
"AuthorFolderFormat": "Autor Orderformat",
@@ -471,11 +469,11 @@
"FilterSentryEventsHelpText": "Sende keine bekannten Benutzerfehler Ereignisse an Analystics",
"FilterAnalyticsEvents": "Analystische Ergeinisse filtern",
"ReplaceIllegalCharactersHelpText": "Wenn nicht aktiviert, werden Sonderzeichen ganz entfernt",
"LogSqlHelpText": "Log alle SQL Abfragen von Prowlarr",
"LogSqlHelpText": "Log alle SQL Abfragen von {appName}",
"OutputPath": "Ausgabe-Pfad",
"PortHelpText": "Calibre-Content-Server",
"Progress": "Fortschritt",
"ReleaseTitle": "Release Titel",
"ReleaseTitle": "Release-Titel",
"Actions": "Aktionen",
"Today": "Heute",
"Tomorrow": "Morgen",
@@ -491,11 +489,11 @@
"TheAuthorFolderAndAllOfItsContentWillBeDeleted": "Der Filmordner und dessen Inhalt wird gelöscht.",
"DeleteFilesHelpText": "Lösche die Buchdateien und Autorordner",
"Component": "Komponente",
"Level": "Stufe",
"Level": "Level",
"Time": "Zeit",
"RemoveFromBlocklist": "Aus der Sperrliste entfernen",
"UnableToLoadBlocklist": "Sperrliste konnte nicht geladen werden",
"ReleaseBranchCheckOfficialBranchMessage": "Zweig {0} ist kein gültiger Radarr-Release-Zweig. Sie erhalten keine Updates",
"ReleaseBranchCheckOfficialBranchMessage": "Zweig {0} ist kein gültiger {appName}-Release-Zweig. Sie erhalten keine Updates",
"Blocklist": "Sperrliste",
"BlocklistRelease": "Release sperren",
"RescanAfterRefreshHelpText": "Nach dem aktualisieren des Films, den Filmordner neu scannen",
@@ -516,7 +514,7 @@
"CatalogNumber": "Katalog Nummer",
"ContinuingAllBooksDownloaded": "Fortfahren (Alle Bücher heruntergeladen)",
"DeleteMetadataProfile": "Metadaten Profil löschen",
"ImportListExclusions": "Ausschlüsse der Importliste",
"ImportListExclusions": "Ausschlüsse aus der Importliste",
"ImportLists": "Importlisten",
"ImportListSettings": "Allgemeine Importlisten-Einstellungen",
"ImportListSpecificSettings": "Listenspezifische Einstellungen importieren",
@@ -533,8 +531,7 @@
"MetadataProfile": "Metadaten Profil",
"MetadataProfileIdHelpText": "Metadaten Profil Listenelemente sollten hinzugefügt werden mit",
"MetadataProfiles": "Metadaten Profile",
"MonitoringOptions": "Beobachtungsoptionen",
"MusicbrainzId": "MusicBrainz Id",
"MonitoringOptions": "Überwachungsoptionen",
"WatchRootFoldersForFileChanges": "Beobachte Stammverzeichnis auf Dateiänderungen",
"OnDownloadFailure": "Bei fehlgeschlagenem Download",
"OnDownloadFailureHelpText": "Bei fehlgeschlagenem Download",
@@ -558,7 +555,7 @@
"FutureDays": "Zukünftige Tage",
"FutureDaysHelpText": "Tage die iCal-Feed in die Zukunft schauen soll",
"FutureBooks": "Zukünftige Bücher",
"GeneralSettingsSummary": "Port, SSL, Benutzername/Passwort, Proxy, Analytik und Updates",
"GeneralSettingsSummary": "Port, SSL, Benutzername/Kennwort, Proxy, Analyse und Updates",
"IndexerJackettAll": "Indexer, welche den nicht unterstützten 'all'-Endpoint von Jackett verwenden: {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Alle Indexer sind wegen über 6 Stunden langen bestehender Fehler nicht verfügbar",
"IsExpandedShowFileInfo": "Dateiinformationen anzeigen",
@@ -571,7 +568,7 @@
"BookList": "Buchliste",
"Continuing": "Fortsetzung",
"ExistingItems": "Existierende Artikel",
"ForeignIdHelpText": "Die Musicbrainz Id des Autors/Buches die ausgeschlossen werden soll",
"ForeignIdHelpText": "Die Fremd-ID des Autors/Buchs, der/das ausgeschlossen werden soll",
"IndexersSettingsSummary": "Indexer- und Releasebeschränkungen",
"ISBN": "ISBN",
"IsExpandedHideFileInfo": "Dateiinformationen verstecken",
@@ -597,23 +594,23 @@
"IndexerIdHelpTextWarning": "Die Verwendung eines bestimmten Indexers mit bevorzugten Wörtern kann dazu führen, dass Veröffentlichungen mehrfach erfasst werden",
"LatestBook": "Neuestes Buch",
"MetadataProviderSource": "Metadaten Anbieter Quelle",
"MetadataSource": "Metadaten Quelle",
"MetadataSource": "Metadatenquelle",
"MetadataSourceHelpText": "Alternative Metadaten Quelle (Leer lassen für Standard)",
"MusicBrainzRecordingID": "MusicBrainz Aufnahme Id",
"MusicBrainzReleaseID": "MusicBrainz Veröffentlichung Id",
"MusicBrainzTrackID": "MusicBrainz Titel Id",
"OnGrab": "Bei Erfassung",
"OnGrab": "Bei Abruf",
"OnImportFailureHelpText": "Bei fehlgeschlagenem Import",
"OnReleaseImport": "Bei Veröffentlichungsimport",
"OnReleaseImportHelpText": "Bei Veröffentlichungsimport",
"OnRename": "Bei Umbenennung",
"PastDaysHelpText": "Tage für iCal-Feed, um in die Vergangenheit zu schauen",
"PathHelpTextWarning": "Dies muss ein anderes Verzeichnis sein als das, in dem der Download Client die Dateien ablegt",
"ReleaseProfiles": "Veröffentlichungsprofile",
"ReleaseProfiles": "Release-Profile",
"RootFolderPathHelpText": "Die Elemente im Stammverzeichnis werden hinzugefügt zu",
"SearchMonitored": "Suche beobachtete",
"SearchMonitored": "Suche überwachte Episoden",
"ShowName": "Zeige Name",
"SkipRedownload": "Überspringe erneuten Download",
"SkipRedownload": "Neu-Download überspringen",
"StatusEndedContinuing": "Fortfahren",
"UnableToLoadMetadataProviderSettings": "Einstellungen für Metadata Provider konnten nicht geladen werden",
"UpdatingIsDisabledInsideADockerContainerUpdateTheContainerImageInstead": "Aktualisierung innerhalb des Docker Containers ist deaktiviert. Aktualisieren Sie stattdessen das Container Image.",
@@ -624,7 +621,7 @@
"DefaultQualityProfileIdHelpText": "Standard Qualitätsprofil für Autoren, die in diesem Ordner gefunden werden",
"DefaultReadarrTags": "Standard Readarr Tags",
"DeleteBookFile": "Buchdatei löschen",
"OnHealthIssue": "Bei Zustandsproblem",
"OnHealthIssue": "Bei Gesundheitsproblem",
"QualityProfileIdHelpText": "Qualitätsprofil mit dem Listemelemente hinzugefügt werden sollen",
"UnmappedFiles": "Nicht zugewiesene Dateien",
"AppDataLocationHealthCheckMessage": "Ein Update ist nicht möglich, um das Löschen von AppData beim Update zu verhindern",
@@ -646,7 +643,7 @@
"Disabled": "Deaktiviert",
"DownloadClientCheckNoneAvailableMessage": "Kein Download Client verfügbar",
"DownloadClientCheckUnableToCommunicateMessage": "Kommunikation mit {0} nicht möglich.",
"DownloadClientsSettingsSummary": "Download Clients, Downloadverarbeitung und Remote-Pfadzuordnungen",
"DownloadClientsSettingsSummary": "Download Clients, Download-Verwaltung und Remote-Pfadzuordnungen",
"DownloadClientStatusCheckAllClientMessage": "Alle Download Clients sind aufgrund von Fehlern nicht verfügbar",
"DownloadClientStatusCheckSingleClientMessage": "Download Clients aufgrund von Fehlern nicht verfügbar: {0}",
"EditAuthor": "Autor bearbeiten",
@@ -687,15 +684,15 @@
"Yesterday": "Gestern",
"UpdateAvailable": "Neue Version verfügbar",
"WriteAudioTagsScrub": "Vorhandene Tags entfernen",
"WriteAudioTagsScrubHelp": "Vorhandene Tags von Datei entfernen, sodass nur die von Lidarr hinzugefügten bleiben.",
"WriteAudioTagsScrubHelp": "Vorhandene Tags von Datei entfernen, sodass nur die von {appName} hinzugefügten bleiben.",
"WriteBookTagsHelpTextWarning": "Wenn Sie \"Alle Dateien\" auswählen, werden vorhandene Dateien beim Import geändert.",
"ShowTitleHelpText": "Zeige Künstlername unter Poster",
"RemotePathMappingCheckDockerFolderMissing": "Docker erkannt; Downloader {0} speichert Downloads in {1}, aber dieser Ordner scheint nicht im Container zu existieren. Überprüfe die Remote-Pfadzuordnungen und die Container Volume Einstellungen.",
"RemotePathMappingCheckFilesGenericPermissions": "Downloader {0} meldet Dateien in {1}, aber Radarr kann dieses Verzeichnis nicht sehen.Möglicherweise müssen die Verzeichnisreche angepasst werden.",
"RemotePathMappingCheckFolderPermissions": "Radarr kann das Downloadverzeichnis sehen, aber nicht verarbeiten {0}. Möglicherwiese ein Rechteproblem.",
"RemotePathMappingCheckFilesGenericPermissions": "Downloader {0} meldet Dateien in {1}, aber {appName} kann dieses Verzeichnis nicht sehen.Möglicherweise müssen die Verzeichnisreche angepasst werden.",
"RemotePathMappingCheckFolderPermissions": "{appName} kann das Downloadverzeichnis sehen, aber nicht verarbeiten {0}. Möglicherwiese ein Rechteproblem.",
"RemotePathMappingCheckGenericPermissions": "Downloader {0} speichert Downloads in {1}, aber Readarr kann dieses Verzeichnis nicht sehen. Möglicherweise müssen die Verzeichnisrechte angepasst werden.",
"RemotePathMappingCheckLocalWrongOSPath": "Downloader {0} speichert Downloads in {1}, aber dies ist kein valider {2} Pfad. Überprüfe die Downloader Einstellungen.",
"Monitor": "Beobachten",
"Monitor": "Überwachen",
"MusicBrainzAuthorID": "MusicBranz Künstler Id",
"MusicBrainzBookID": "MusicBrainz Titel Id",
"WriteAudioTags": "Audiodateien mit Metadaten versehen",
@@ -703,7 +700,7 @@
"SearchForAllMissingBooks": "Suche nach allen fehlenden Alben",
"SearchForMonitoredBooks": "Suche nach beobachteten Alben",
"SelectedCountAuthorsSelectedInterp": "{0} Künstler ausgewählt",
"SizeLimit": "Grössenlimit",
"SizeLimit": "Größenlimit",
"TheBooksFilesWillBeDeleted": "Die Dateien des Albums werden gelöscht.",
"MediaManagement": "Medienverwaltung",
"Metadata": "Metadaten",
@@ -712,22 +709,22 @@
"OnBookFileDeleteForUpgrade": "Bei Filmdatei Zum Upgrade löschen",
"OnBookFileDeleteForUpgradeHelpText": "Bei Filmdatei Zum Upgrade löschen",
"OnBookFileDeleteHelpText": "Bei Filmdatei löschen",
"ReadarrSupportsAnyDownloadClient": "Radarr unterstützt viele bekannte Torrent- und Usenetdownloader.",
"ReadarrSupportsAnyDownloadClient": "{appName} unterstützt viele bekannte Torrent- und Usenetdownloader.",
"RemotePathMappingCheckBadDockerPath": "Docker erkannt; Downloader {0} speichert Downloads in {1}, aber dies ist kein valider {2} Pfad. Überprüfe die Remote-Pfadzuordnungen und die Downloader Einstellungen.",
"RemotePathMappingCheckDownloadPermissions": "Radarr kann den Download sehen, aber nicht verarbeiten {0}. Möglicherweise ein Rechteproblem.",
"RemotePathMappingCheckDownloadPermissions": "{appName} kann den Download sehen, aber nicht verarbeiten {0}. Möglicherweise ein Rechteproblem.",
"RemotePathMappingCheckFileRemoved": "Datei {0} wurde während des Verarbeitens entfernt.",
"RemotePathMappingCheckFilesBadDockerPath": "Docker erkannt; Downloader {0} meldet Dateien in {1}, aber dies ist kein valider {2} Pfad. Überprüfe deine Remote-Pfadzuordnungen und die Downloader Einstellungen.",
"RemotePathMappingCheckFilesLocalWrongOSPath": "Downloader {0} meldet Dateien in {1}, aber dies ist kein valider {2} Pfad. Überprüfe die Downloader Einstellungen.",
"RemotePathMappingCheckFilesWrongOSPath": "Downloader {0} meldet Dateien in {1}, aber dies ist kein valider {2} Pfad. Überprüfe deine Remote-Pfadzuordnungen und die Downloader Einstellungen.",
"RemotePathMappingCheckImportFailed": "Radarr konnte den Film nicht importieren. Prüfe die Logs für mehr Informtationen.",
"RemotePathMappingCheckImportFailed": "{appName} konnte den Film nicht importieren. Prüfe die Logs für mehr Informtationen.",
"RemotePathMappingCheckLocalFolderMissing": "Downloader {0} speichert Downloads in {1}, aber dieses Verzeichnis scheint nicht zu existieren. Möglicherweise eine fehlende oder falsche Remote-Pfadzuordnung.",
"RemotePathMappingCheckRemoteDownloadClient": "Downloader {0} meldet Dateien in {1}, aber dieses Verzeichnis scheint nicht zu existieren. Möglicherweise fehle die Remote-Pfadzuordnung.",
"RemotePathMappingCheckWrongOSPath": "Downloader {0} speichert Downloads in {1}, aber dies ist kein valider {2} Pfad. Überprüfe die Remote-Pfadzuordnungen und die Downloader Einstellungen.",
"RestartReloadNote": "Hinweis: Während der wiederherstellung wird Radarr automatisch neugestartet und die Oberfläche neugelade.",
"RestartReloadNote": "Hinweis: Während der wiederherstellung wird {appName} automatisch neugestartet und die Oberfläche neugelade.",
"RootFolderCheckMultipleMessage": "Es fehlen mehrere Stammordner: {0}",
"RootFolderCheckSingleMessage": "Fehlender Stammordner: {0}",
"SettingsRemotePathMappingLocalPath": "Lokaler Pfad",
"SettingsRemotePathMappingLocalPathHelpText": "Pfad, den Radarr verwenden sollte, um lokal auf den Entfernten-Pfad zuzugreifen",
"SettingsRemotePathMappingLocalPathHelpText": "Pfad, den {appName} verwenden sollte, um lokal auf den Entfernten-Pfad zuzugreifen",
"SettingsRemotePathMappingRemotePath": "Entfernter-Pfad",
"UpdateCheckStartupNotWritableMessage": "Update kann nicht installiert werden, da der Startordner '{0}' vom Benutzer '{1}' nicht beschreibbar ist.",
"SystemTimeCheckMessage": "Die Systemzeit ist um einen Tag versetzt. Bis die Zeit korrigiert wurde, könnten die geplanten Aufgaben nicht korrekt ausgeführt werden",
@@ -735,16 +732,16 @@
"UpdateCheckUINotWritableMessage": "Update kann nicht installiert werden, da der Benutzeroberflächenordner '{0}' vom Benutzer '{1}' nicht beschreibbar ist.",
"WriteTagsNo": "Niemals",
"IfYouDontAddAnImportListExclusionAndTheAuthorHasAMetadataProfileOtherThanNoneThenThisBookMayBeReaddedDuringTheNextAuthorRefresh": "Wenn kein Ausschluss der Import Liste hinzugefügt wird und der Künstler ein anderes Metadaten Profil als 'Keine' hat, kann es passieren, dass dieses Album bei der nächsten Aktualisierung des Künstlers erneut hinzugefügt wird.",
"MissingFromDisk": "Radarr konnte die Datei nicht auf der Festplatte finden, daher wurde die Verknüpfung auf die Datei aus der Datenbank entfernt",
"MissingFromDisk": "{appName} konnte die Datei nicht auf der Festplatte finden, daher wurde die Verknüpfung auf die Datei aus der Datenbank entfernt",
"ProxyCheckResolveIpMessage": "Fehler beim Auflösen der IP-Adresse für den konfigurierten Proxy-Host {0}",
"QualitySettingsSummary": "Qualitätsgrößen und Namensgebung",
"QueueIsEmpty": "Die Warteschlange ist leer",
"ReadarrSupportsMultipleListsForImportingBooksAndAuthorsIntoTheDatabase": "Lidarr unterstützt mehrere Listen für den Import von Alben und Künstlern in die Datenbank.",
"ReadarrSupportsMultipleListsForImportingBooksAndAuthorsIntoTheDatabase": "{appName} unterstützt mehrere Listen für den Import von Alben und Künstlern in die Datenbank.",
"TotalBookCountBooksTotalBookFileCountBooksWithFilesInterp": "{0} Titel insgesamt. {1} Titel mit Dateien.",
"SearchFiltered": "Suche gefilterte",
"AddList": "Liste hinzufügen",
"InstanceName": "Instanzname",
"InstanceNameHelpText": "Instanzname im Browser-Tab und für Syslog-Anwendungsname",
"InstanceNameHelpText": "Instanzname im Tab und für den Syslog-App-Namen",
"RestartRequiredHelpTextWarning": "Erfordert einen Neustart, damit die Aktion wirksam wird",
"UseCalibreContentServer": "Calibre-Content-Server",
"DataExistingBooks": "Beobachte Bücher die Dateien haben oder noch nicht veröffentlicht wurden",
@@ -758,7 +755,7 @@
"MonitorBook": "Buch überwachen",
"MinimumPages": "Mindestseiten",
"MassBookSearch": "Massensuche nach Büchern",
"MediaManagementSettingsSummary": "Namensgebung, Dateimanagement-Einstellungen und Root-Ordner",
"MediaManagementSettingsSummary": "Einstellungen zu Benennung, Dateiverwaltung und Root-Ordnern",
"MinimumPopularity": "Mindestpolularität",
"MinPagesHelpText": "Bücher mit weniger Seiten als dieses ignorieren",
"MinPopularityHelpText": "Popularität ist Durchschnittsbewertung * Anzahl der Stimmen",
@@ -852,11 +849,11 @@
"OnApplicationUpdateHelpText": "Bei Anwendungsaktualisierung",
"ChooseImportMethod": "Wähle eine Importmethode",
"ClickToChangeReleaseGroup": "Klicken Sie hier, um die Release-Gruppe zu ändern",
"EnableRssHelpText": "Wird benutzt, wenn Radarr mittels RSS-Sync regelmäßig nach Releases schaut",
"EnableRssHelpText": "Wird benutzt, wenn {appName} mittels RSS-Sync regelmäßig nach Releases schaut",
"Theme": "Design",
"ThemeHelpText": "Ändern Sie das Benutzeroberflächen-Design der Anwendung. Das „Auto“-Design verwendet Ihr Betriebssystemdesign, um den Hell- oder Dunkelmodus festzulegen. Inspiriert vom Theme.Park",
"BypassIfHighestQuality": "Ignoriere wenn höchste Qualität",
"MinimumCustomFormatScore": "Minimum der eigenen Formate Bewertungspunkte",
"MinimumCustomFormatScore": "Mindestwert für benutzerdefinierte Formate",
"CustomFormatScore": "Eigenes Format Bewertungspunkte",
"CloneCustomFormat": "Benutzerdefiniertes Format klonen",
"Conditions": "Bedingungen",
@@ -864,8 +861,8 @@
"CustomFormat": "Benutzerdefiniertes Format",
"CustomFormats": "Eigene Formate",
"CutoffFormatScoreHelpText": "Sobald diese eigener Format Bewertung erreicht wird, werden keine neuen Releases erfasst",
"DeleteFormatMessageText": "Bist du sicher, dass du das Formatierungstag {0} löschen willst?",
"ExportCustomFormat": "Eigenes Format exportieren",
"DeleteFormatMessageText": "Bist du sicher, dass du das Format-Tag '{0}' löschen möchtest?",
"ExportCustomFormat": "Benutzerdefiniertes Format exportieren",
"Formats": "Formate",
"MinFormatScoreHelpText": "Mindester eigener Format Score bis zum Download",
"NegateHelpText": "Wenn aktiviert wird das eigene Format nicht angewendet solange diese {0} Bedingung zutrifft.",
@@ -876,16 +873,16 @@
"DataFutureBooks": "Überwachung von Alben die noch nicht veröffentlicht wurden",
"DeleteCustomFormat": "Benutzerdefiniertes Format löschen",
"DeleteCustomFormatMessageText": "Bist du sicher, dass du das benutzerdefinierte Format '{name}' wirklich löschen willst?",
"IncludeCustomFormatWhenRenamingHelpText": "In {Custom Formats} umbennenungs Format",
"IncludeCustomFormatWhenRenamingHelpText": "In {Custom Formats} Umbenennungs-Format",
"ResetTitles": "Titel zurücksetzen",
"UnableToLoadCustomFormats": "Eigene Formate konnten nicht geladen werden",
"ImportListMissingRoot": "Fehlendes Stammverzeichnis für Importlist(en): {0}",
"ImportListMultipleMissingRoots": "Mehrere Stammverzeichnisse fehlen für Importlist: {0}",
"IndexerDownloadClientHelpText": "Wähle aus, welcher Download-Client für diesen Indexer verwendet wird",
"IndexerDownloadClientHelpText": "Gib an, welcher Download-Client für Abrufe von diesem Indexer verwendet wird",
"IndexerTagsHelpText": "Benutze den Indexer nur für Filme mit mindesens einen zutreffenden Tag. Leer lassen für alle Filme.",
"RecycleBinUnableToWriteHealthCheck": "Schreiben in konfigurierten Papierkorbordner nicht möglich: {0}. Stelle sicher, dass dieser Pfad existiert und von dem Benutzer, der Radarr ausführt, beschreibbar ist",
"HiddenClickToShow": "Versteckt, klicken zum anzeigen",
"HideAdvanced": "Erweiterte Ansicht",
"RecycleBinUnableToWriteHealthCheck": "Schreiben in konfigurierten Papierkorbordner nicht möglich: {0}. Stelle sicher, dass dieser Pfad existiert und von dem Benutzer, der {appName} ausführt, beschreibbar ist",
"HiddenClickToShow": "Versteckt, zum Anzeigen anklicken",
"HideAdvanced": "Erweiterte Einstellungen ausblenden",
"ShowAdvanced": "Erweitert anzeigen",
"ShownClickToHide": "Angezeigt, zum Ausblenden klicken",
"ColonReplacement": "Doppelpunktersatz",
@@ -911,20 +908,20 @@
"DeleteSelectedIndexersMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte(n) Indexer löschen möchten?",
"EditSelectedDownloadClients": "Ausgewählte Download Clienten bearbeiten",
"Implementation": "Integration",
"NoEventsFound": "Keine Events gefunden",
"NoEventsFound": "Keine Ereignisse gefunden",
"NoImportListsFound": "Keine Einspiel-Listen gefunden",
"NoIndexersFound": "Keine Indexer gefunden",
"RemoveCompletedDownloads": "Entferne abgeschlossene Downloads",
"RemoveDownloadsAlert": "Die Einstellungen zum Entfernen wurden in die individuellen Download Client Einstellungen in der obigen Tabelle verschoben.",
"RemoveDownloadsAlert": "Die Entfernen-Einstellungen wurden in die einzelnen Download-Client-Einstellungen in der Tabelle oben verschoben.",
"RemovingTag": "Tag entfernen",
"Yes": "Ja",
"BlocklistReleaseHelpText": "Dieses Release nicht automatisch erneut erfassen",
"RemoveFailedDownloads": "Fehlgeschlagene Downloads entfernen",
"BlocklistReleases": "Release sperren",
"DeleteConditionMessageText": "Bist du sicher, dass du die Bedingung '{0}' löschen willst?",
"DeleteConditionMessageText": "Bist du sicher, dass du die Bedingung '{name}' löschen möchtest?",
"Negated": "Negiert",
"ResetQualityDefinitions": "Qualitätsdefinitionen zurücksetzen",
"RemoveSelectedItem": "Entferne ausgewählten Eintrag",
"RemoveSelectedItem": "Ausgewähltes Element entfernen",
"RemoveSelectedItems": "Markierte Einträge löschen",
"Required": "Erforderlich",
"RedownloadFailed": "Download fehlgeschlagen",
@@ -938,7 +935,7 @@
"ApplyTagsHelpTextRemove": "Entfernen: Entferne die hinterlegten Tags",
"ApplyTagsHelpTextReplace": "Ersetzen: Ersetze die Tags mit den eingegebenen Tags (keine Tags eingeben um alle Tags zu löschen)",
"ApplyTagsHelpTextHowToApplyDownloadClients": "Wie Tags zu den selektierten Downloadclients hinzugefügt werden können",
"CountIndexersSelected": "{0} Indexer ausgewählt",
"CountIndexersSelected": "{selectedCount} Indexer(s) ausgewählt",
"DeleteSelectedDownloadClients": "Lösche Download Client(s)",
"DeleteSelectedDownloadClientsMessageText": "Sind Sie sicher, dass Sie {count} ausgewählte Download-Clients löschen möchten?",
"DeleteSelectedIndexers": "Lösche Indexer",
@@ -958,19 +955,19 @@
"Loading": "Lade",
"ConnectionLostReconnect": "{appName} wird versuchen, automatisch eine Verbindung herzustellen, oder Sie können unten auf „Neu laden“ klicken.",
"ConnectionLostToBackend": "{appName} hat die Verbindung zum Backend verloren und muss neu geladen werden, um die Funktionalität wiederherzustellen.",
"NotificationStatusAllClientHealthCheckMessage": "Wegen Fehlern sind keine Applikationen verfügbar",
"NotificationStatusAllClientHealthCheckMessage": "Alle Benachrichtigungen sind aufgrund von Fehlern nicht verfügbar",
"NotificationStatusSingleClientHealthCheckMessage": "Applikationen wegen folgender Fehler nicht verfügbar: {0}",
"TotalSpace": "Gesamter Speicherplatz",
"Ui": "Benutzeroberfläche",
"FreeSpace": "Freier Speicher",
"FreeSpace": "Freier Platz",
"Large": "Groß",
"LastExecution": "Letzte Ausführung",
"LastWriteTime": "Zuletzt beschrieben",
"LastWriteTime": "Letzte Schreibzeit",
"Library": "Bibliothek",
"Location": "Speicherort",
"Location": "Standort",
"Small": "Klein",
"ConnectionLost": "Verbindung unterbrochen",
"Events": "Events",
"Events": "Ereignisse",
"LastDuration": "Letzte Dauer",
"RecentChanges": "Kürzliche Änderungen",
"System": "System",
@@ -989,8 +986,8 @@
"AutomaticUpdatesDisabledDocker": "Automatische Updates werden bei Verwendung des Docker-Update-Mechanismus nicht direkt unterstützt. Sie müssen das Container-Image außerhalb von {appName} aktualisieren oder ein Skript verwenden",
"AutoAdd": "Automatisch hinzufügen",
"WouldYouLikeToRestoreBackup": "Willst du das Backup '{name}' wiederherstellen?",
"Unmonitored": "Nicht beobachtet",
"Retention": "Aufbewahrung ( Retention )",
"Unmonitored": "Nicht überwacht",
"Retention": "Aufbewahrung",
"ClickToChangeIndexerFlags": "Klicken, um Indexer-Flags zu ändern",
"BlocklistAndSearch": "Sperrliste und Suche",
"BlocklistAndSearchHint": "Starte Suche nach einer Alternative, falls es der Sperrliste hinzugefügt wurde",
@@ -999,14 +996,14 @@
"BlocklistOnly": "Nur der Sperrliste hinzufügen",
"BlocklistOnlyHint": "Der Sperrliste hinzufügen, ohne nach Alternative zu suchen",
"ChangeCategory": "Kategorie wechseln",
"TagIsNotUsedAndCanBeDeleted": "Tag wird nicht benutzt und kann gelöscht werden",
"ExtraFileExtensionsHelpText": "Kommaseparierte Liste von Dateiendungen die als Extra Dateien importiert werden sollen ( .nfo wird in .nfo-orig umbenannt )",
"TagIsNotUsedAndCanBeDeleted": "Tag wird nicht verwendet und kann gelöscht werden",
"ExtraFileExtensionsHelpText": "Kommagetrennte Liste von zusätzlichen Dateien, die importiert werden sollen (.nfo wird als .nfo-orig importiert)",
"DeleteImportListExclusion": "Importlisten Ausschluss löschen",
"IndexerFlags": "Indexer-Flags",
"CountAuthorsSelected": "{selectedCount} Künstler ausgewählt",
"ExtraFileExtensionsHelpTextsExamples": "Vorschläge: sub, nfo, srt, jpg",
"ExtraFileExtensionsHelpTextsExamples": "Beispiele: '.sub, .nfo' oder 'sub,nfo'",
"DownloadClient": "Downloader",
"ShowMonitoredHelpText": "Beobachtungsstatus unter dem Plakat anzeigen",
"ShowMonitoredHelpText": "Überwachungsstatus unter dem Poster anzeigen",
"CountDownloadClientsSelected": "{count} Download-Client(s) ausgewählt",
"CountImportListsSelected": "{selectedCount} Künstler ausgewählt",
"CustomFormatsSpecificationRegularExpression": "Regulären Ausdruck",
@@ -1015,8 +1012,8 @@
"AutoRedownloadFailed": "Erneuter Download fehlgeschlagen",
"SourceTitle": "Quellentitel",
"Tags": "Tags",
"DownloadClientDelugeSettingsDirectoryHelpText": "Optionaler Speicherort für Downloads. Lassen Sie das Feld leer, um den standardmäßigen rTorrent-Speicherort zu verwenden",
"ErrorLoadingContent": "Beim Laden des Eintrags ist ein Fehler aufgetreten",
"DownloadClientDelugeSettingsDirectoryHelpText": "Optionaler Ort für Downloads, leer lassen, um den Standard-Deluge-Ort zu verwenden",
"ErrorLoadingContent": "Es ist ein Fehler beim Laden dieses Inhalts aufgetreten",
"BypassIfAboveCustomFormatScore": "Umgehen, wenn über dem Wert des benutzerdefinierten Formats liegt",
"BypassIfAboveCustomFormatScoreHelpText": "Aktivieren Sie die Umgehung, wenn die Veröffentlichung einen Wert hat, der höher ist als der konfigurierte Mindestwert für das benutzerdefinierte Format",
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Der Download-Client {downloadClientName} ist so eingestellt, dass abgeschlossene Downloads entfernt werden. Dies kann dazu führen, dass Downloads von Ihrem Client entfernt werden, bevor {appName} sie importieren kann.",
@@ -1026,12 +1023,12 @@
"InteractiveSearchModalHeader": "Interaktive Suche",
"MinimumCustomFormatScoreHelpText": "Mindestwert für benutzerdefiniertes Format, der erforderlich ist, um Verzögerungen für das bevorzugte Protokoll zu umgehen",
"Rejections": "Ablehnungen",
"RemoveQueueItemConfirmation": "Bist du sicher, dass du {0} Einträge aus der Warteschlange entfernen willst?",
"RemoveQueueItemConfirmation": "Bist du sicher, dass du '{sourceTitle}' aus der Warteschlange entfernen möchtest?",
"SelectDropdown": "Auswählen...",
"SelectQuality": "Qualität auswählen",
"SelectReleaseGroup": "Wähle Release-Gruppe",
"ShowMonitored": "Beobachtete anzeigen",
"DeleteSelected": "Markierte löschen",
"ShowMonitored": "Überwachter Status anzeigen",
"DeleteSelected": "Ausgewählte löschen",
"Bookshelf": "Bücherregal",
"BypassIfHighestQualityHelpText": "Umgehen der Verzögerung, wenn die Freigabe die höchste aktivierte Qualität im Qualitätsprofil hat",
"CustomFormatsSpecificationFlag": "Markierung",
@@ -1047,9 +1044,78 @@
"CustomFormatsSettingsTriggerInfo": "Ein Eigenes Format wird auf eine Veröffentlichung oder Datei angewandt, wenn sie mindestens einer der verschiedenen ausgewählten Bedingungen entspricht.",
"ConnectionSettingsUrlBaseHelpText": "Fügt ein Präfix zur {connectionName} URL hinzu, z. B. {url}",
"DownloadClientDelugeSettingsDirectory": "Download Verzeichnis",
"DownloadClientDelugeSettingsDirectoryCompleted": "Verschieben, wenn Verzeichnis abgeschlossen",
"DownloadClientDelugeSettingsDirectoryCompleted": "Verschieben, wenn abgeschlossen Verzeichnis",
"IgnoreDownloadHint": "Hält {appName} von der weiteren Verarbeitung dieses Downloads ab",
"IgnoreDownloads": "Downloads ignorieren",
"IgnoreDownload": "Download ignorieren",
"IgnoreDownloadsHint": "Hindert {appName}, diese Downloads weiter zu verarbeiten"
"IgnoreDownloadsHint": "Hindert {appName}, diese Downloads weiter zu verarbeiten",
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Optionaler Ort, an den abgeschlossene Downloads verschoben werden, leer lassen, um den Standard-Deluge-Ort zu verwenden",
"ApiKey": "API-Schlüssel",
"AuthBasic": "Basis (Browser-Popup)",
"AuthForm": "Formulare (Anmeldeseite)",
"AuthenticationMethod": "Authentifizierungsmethode",
"AuthenticationMethodHelpTextWarning": "Bitte wähle eine gültige Authentifizierungsmethode aus",
"AuthenticationRequired": "Authentifizierung benötigt",
"AuthenticationRequiredHelpText": "Ändern, welche anfragen Authentifizierung benötigen. Ändere nichts wenn du dir nicht des Risikos bewusst bist.",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Neues Passwort bestätigen",
"AuthenticationRequiredPasswordHelpTextWarning": "Neues Passwort eingeben",
"AuthenticationRequiredUsernameHelpTextWarning": "Neuen Benutzernamen eingeben",
"AuthenticationRequiredWarning": "Um unberechtigte Fernzugriffe zu vermeiden benötigt {appName} jetzt , dass Authentifizierung eingeschaltet ist. Du kannst Authentifizierung optional für lokale Adressen ausschalten.",
"DisabledForLocalAddresses": "Für lokale Adressen deaktiviert",
"Enabled": "Aktiviert",
"BuiltIn": "Eingebaut",
"CurrentlyInstalled": "Derzeit installiert",
"InstallLatest": "Neueste Version installieren",
"OnLatestVersion": "Die neueste Version von {appName} ist bereits installiert",
"Script": "Skript",
"AptUpdater": "Verwenden Sie apt, um das Update zu installieren",
"DockerUpdater": "Aktualisieren Sie den Docker-Container, um das Update zu erhalten",
"ExternalUpdater": "{appName} ist so konfiguriert, dass es einen externen Aktualisierungsmechanismus verwendet",
"UpdateAppDirectlyLoadError": "{appName} kann nicht direkt aktualisiert werden.",
"External": "Extern",
"FailedToFetchSettings": "Einstellungen können nicht abgerufen werden",
"FailedToFetchUpdates": "Updates konnten nicht abgerufen werden",
"DownloadClientQbittorrentSettingsContentLayout": "Inhaltslayout",
"IndexerSettingsSeedRatio": "Seed-Verhältnis",
"RemoveMultipleFromDownloadClientHint": "Entfernt Downloads und Dateien aus dem Download-Client",
"IndexerSettingsSeedTime": "Seed-Zeit",
"Install": "Installieren",
"InstallMajorVersionUpdate": "Update installieren",
"RemoveQueueItem": "Entfernen - {sourceTitle}",
"NotificationsPlexSettingsAuthenticateWithPlexTv": "Mit Plex.tv authentifizieren",
"SmartReplace": "Smart Replace",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Ob das konfigurierte Inhaltslayout von qBittorrent, das ursprüngliche Layout des Torrents oder immer ein Unterordner erstellt werden soll (qBittorrent 4.3.2+)",
"IndexerSettingsSeedRatioHelpText": "Das Verhältnis, das ein Torrent erreichen muss, bevor er gestoppt wird. Leer verwendet das Standardverhältnis des Download-Clients. Das Verhältnis sollte mindestens 1,0 betragen und den Regeln des Indexers folgen.",
"IndexerSettingsSeedTimeHelpText": "Die Zeit, die ein Torrent gesät werden sollte, bevor er gestoppt wird. Leer verwendet die Standardzeit des Download-Clients",
"InstallMajorVersionUpdateMessage": "Dieses Update wird eine neue Hauptversion installieren und ist möglicherweise nicht mit deinem System kompatibel. Bist du sicher, dass du dieses Update installieren möchtest?",
"InstallMajorVersionUpdateMessageLink": "Weitere Informationen findest du unter [{domain}]({url}).",
"InvalidUILanguage": "Die UI ist auf eine ungültige Sprache eingestellt, korrigiere sie und speichere die Einstellungen",
"LabelIsRequired": "Label ist erforderlich",
"NotificationsPlexSettingsAuthToken": "Auth-Token",
"NotificationsSettingsUpdateLibrary": "Bibliothek aktualisieren",
"NotificationsSettingsUpdateMapPathsFrom": "Pfade von",
"NotificationsSettingsUpdateMapPathsTo": "Pfade zu",
"NotificationsSettingsUseSslHelpText": "Mit {serviceName} über HTTPS anstatt HTTP verbinden",
"PasswordConfirmation": "Passwortbestätigung",
"PreviouslyInstalled": "Früher installiert",
"RemoveFromDownloadClientHint": "Entfernt den Download und die Datei(en) aus dem Download-Client",
"RemoveQueueItemRemovalMethod": "Entfernmethode",
"RemoveQueueItemRemovalMethodHelpTextWarning": "'Aus dem Download-Client entfernen' wird den Download und die Datei(en) aus dem Download-Client löschen.",
"RemoveQueueItemsRemovalMethodHelpTextWarning": "'Aus dem Download-Client entfernen' wird die Downloads und die Dateien aus dem Download-Client löschen.",
"SelectIndexerFlags": "Indexer-Flags auswählen",
"SetIndexerFlags": "Indexer-Flags festlegen",
"InteractiveSearchModalHeaderBookAuthor": "Interaktive Suche - {bookTitle} von {authorName}",
"NoMissingItems": "Keine fehlenden Einträge",
"NoCutoffUnmetItems": "Keine nicht erfüllten Cutoff-Elemente",
"DashOrSpaceDashDependingOnName": "Dash oder Space Dash je nach Name",
"NotificationsSettingsUpdateMapPathsFromHelpText": "{appName}-Pfad, wird verwendet, um Serienpfade zu ändern, wenn {serviceName} den Bibliothekspfad anders sieht als {appName} (benötigt 'Bibliothek aktualisieren')",
"NotificationsSettingsUpdateMapPathsToHelpText": "{serviceName}-Pfad, wird verwendet, um Serienpfade zu ändern, wenn {serviceName} den Bibliothekspfad anders sieht als {appName} (benötigt 'Bibliothek aktualisieren')",
"RemotePathMappingsInfo": "Remote Path Mappings sind nur in seltenen Fällen erforderlich. Wenn {app} und dein Download-Client auf demselben System laufen, ist es besser, die Pfade anzupassen. Weitere Informationen findest du im [Wiki]({wikiLink}).",
"WhySearchesCouldBeFailing": "Klicke hier, um herauszufinden, warum die Suchen fehlschlagen könnten",
"SkipRedownloadHelpText": "Verhindert, dass Readarr versucht, alternative Releases für die entfernten Elemente herunterzuladen",
"OnAuthorAdded": "Beim Hinzufügen des Autors",
"OnAuthorAddedHelpText": "Beim Hinzufügen des Autors",
"SelectBook": "Buch auswählen",
"SelectEdition": "Wähle Edition",
"LastSearched": "Letzte Suche"
}

View File

@@ -9,7 +9,6 @@
"20MinutesTwenty": "20 λεπτά: {0}",
"45MinutesFourtyFive": "45 λεπτά: {0}",
"60MinutesSixty": "60 λεπτά: {0}",
"APIKey": "Κλειδί API",
"About": "Σχετικά",
"AddListExclusion": "Προσθήκη εξαίρεσης λίστας",
"AddingTag": "Προσθήκη ετικέτας",
@@ -17,17 +16,17 @@
"AlreadyInYourLibrary": "Ήδη στη βιβλιοθήκη σας",
"AlternateTitles": "Εναλακτικός Τίτλος",
"Analytics": "Αναλύσεις",
"AnalyticsEnabledHelpText": "Στείλτε ανώνυμες πληροφορίες χρήσης και σφάλματος στους διακομιστές του Radarr. Αυτό περιλαμβάνει πληροφορίες στο πρόγραμμα περιήγησής σας, ποιες σελίδες Radarr WebUI χρησιμοποιείτε, αναφορά σφαλμάτων καθώς και έκδοση λειτουργικού συστήματος και χρόνου εκτέλεσης. Θα χρησιμοποιήσουμε αυτές τις πληροφορίες για να δώσουμε προτεραιότητα σε λειτουργίες και διορθώσεις σφαλμάτων.",
"AnalyticsEnabledHelpText": "Στείλτε ανώνυμες πληροφορίες χρήσης και σφάλματος στους διακομιστές του {appName}. Αυτό περιλαμβάνει πληροφορίες στο πρόγραμμα περιήγησής σας, ποιες σελίδες {appName} WebUI χρησιμοποιείτε, αναφορά σφαλμάτων καθώς και έκδοση λειτουργικού συστήματος και χρόνου εκτέλεσης. Θα χρησιμοποιήσουμε αυτές τις πληροφορίες για να δώσουμε προτεραιότητα σε λειτουργίες και διορθώσεις σφαλμάτων.",
"AnalyticsEnabledHelpTextWarning": "Απαιτείται επανεκκίνηση για να τεθεί σε ισχύ",
"AppDataDirectory": "Κατάλογος AppData",
"ApplyTags": "Εφαρμογή ετικετών",
"Authentication": "Αυθεντικοποίηση",
"AuthenticationMethodHelpText": "Απαιτήστε όνομα χρήστη και κωδικό πρόσβασης για πρόσβαση στο Radarr",
"AuthenticationMethodHelpText": "Απαιτήστε όνομα χρήστη και κωδικό πρόσβασης για πρόσβαση στο {appName}",
"AuthorClickToChangeBook": "Κάντε κλικ για να αλλάξετε ταινία",
"AutoRedownloadFailedHelpText": "Αυτόματη αναζήτηση και απόπειρα λήψης διαφορετικής έκδοσης",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Οι ταινίες που διαγράφονται από το δίσκο δεν παρακολουθούνται αυτόματα στο Radarr",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Οι ταινίες που διαγράφονται από το δίσκο δεν παρακολουθούνται αυτόματα στο {appName}",
"Automatic": "Αυτόματο",
"BackupFolderHelpText": "Οι σχετικές διαδρομές θα βρίσκονται στον κατάλογο AppData του Radarr",
"BackupFolderHelpText": "Οι σχετικές διαδρομές θα βρίσκονται στον κατάλογο AppData του {appName}",
"BackupNow": "Δημιουργία Αντιγράφου Ασφαλείας",
"BackupRetentionHelpText": "Τα αυτόματα αντίγραφα ασφαλείας που είναι παλαιότερα από την περίοδο διατήρησης θα καθαρίζονται αυτόματα",
"Backups": "Δημιουργία αντιγράφων ασφαλείας",
@@ -41,16 +40,16 @@
"Calendar": "Ημερολόγιο",
"CalendarWeekColumnHeaderHelpText": "Εμφανίζεται πάνω από κάθε στήλη όταν η εβδομάδα είναι η ενεργή προβολή",
"Cancel": "Ακύρωση",
"CancelMessageText": "Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτήν την εργασία σε εκκρεμότητα;",
"CancelPendingTask": "Είστε βέβαιοι ότι θέλετε να ακυρώσετε αυτήν την εργασία σε εκκρεμότητα;",
"CertificateValidation": "Επικύρωση πιστοποιητικού",
"CertificateValidationHelpText": "Αλλάξτε πόσο αυστηρή είναι η επικύρωση πιστοποίησης HTTPS.",
"ChangeFileDate": "Αλλαγή ημερομηνίας αρχείου",
"ChangeHasNotBeenSavedYet": "Η αλλαγή δεν έχει αποθηκευτεί ακόμα",
"ChmodFolder": "φάκελος chmod",
"ChmodFolderHelpText": "Οκτάλ, εφαρμόζεται κατά την εισαγωγή / μετονομασία σε φακέλους πολυμέσων και αρχεία (χωρίς εκτελέσιμα bit)",
"ChmodFolderHelpTextWarning": "Αυτό λειτουργεί μόνο εάν ο χρήστης που εκτελεί το Radarr είναι ο κάτοχος του αρχείου. Είναι καλύτερο να διασφαλίσετε ότι ο πελάτης λήψης ορίζει σωστά τα δικαιώματα.",
"ChmodFolderHelpTextWarning": "Αυτό λειτουργεί μόνο εάν ο χρήστης που εκτελεί το {appName} είναι ο κάτοχος του αρχείου. Είναι καλύτερο να διασφαλίσετε ότι ο πελάτης λήψης ορίζει σωστά τα δικαιώματα.",
"ChownGroupHelpText": "Όνομα ομάδας ή gid. Χρησιμοποιήστε το gid για απομακρυσμένα συστήματα αρχείων.",
"ChownGroupHelpTextWarning": "Αυτό λειτουργεί μόνο εάν ο χρήστης που εκτελεί το Radarr είναι ο κάτοχος του αρχείου. Είναι καλύτερο να διασφαλίσετε ότι ο πελάτης λήψης χρησιμοποιεί την ίδια ομάδα με το Radarr.",
"ChownGroupHelpTextWarning": "Αυτό λειτουργεί μόνο εάν ο χρήστης που εκτελεί το {appName} είναι ο κάτοχος του αρχείου. Είναι καλύτερο να διασφαλίσετε ότι ο πελάτης λήψης χρησιμοποιεί την ίδια ομάδα με το {appName}.",
"Clear": "Καθαρισμός",
"ClickToChangeQuality": "Κάντε κλικ για να αλλάξετε την ποιότητα",
"ClientPriority": "Προτεραιότητα πελάτη",
@@ -61,10 +60,10 @@
"ConnectSettings": "Σύνδεση ρυθμίσεων",
"Connections": "Συνδέσεις",
"CopyUsingHardlinksHelpText": "Οι σκληροί σύνδεσμοι επιτρέπουν στο Readarr να εισαγάγει τα torrents που έχουν κατέβει, στον φάκελο της ταινίας χωρίς να καταλαμβάνει περισσότερο χώρο στον δίσκο ή να αντιγράφει ολόκληρο το περιεχόμενο του αρχείου. Οι σκληροί σύνδεσμοι θα λειτουργήσουν μόνο αν η πηγή και ο προορισμός βρίσκονται στον ίδιο τόμο δίσκου",
"CopyUsingHardlinksHelpTextWarning": "Περιστασιακά, τα κλειδώματα αρχείων ενδέχεται να αποτρέψουν τη μετονομασία αρχείων που έχουν σπαρθεί. Μπορείτε προσωρινά να απενεργοποιήσετε τη σπορά και να χρησιμοποιήσετε τη λειτουργία μετονομασίας Radarr ως εργασία.",
"CopyUsingHardlinksHelpTextWarning": "Περιστασιακά, τα κλειδώματα αρχείων ενδέχεται να αποτρέψουν τη μετονομασία αρχείων που έχουν σπαρθεί. Μπορείτε προσωρινά να απενεργοποιήσετε τη σπορά και να χρησιμοποιήσετε τη λειτουργία μετονομασίας {appName} ως εργασία.",
"CreateEmptyAuthorFoldersHelpText": "Δημιουργήστε φακέλους ταινιών που λείπουν κατά τη σάρωση δίσκου",
"CreateGroup": "Δημιουργησε ΟΜΑΔΑ",
"CutoffHelpText": "Μόλις επιτευχθεί αυτή η ποιότητα, το Radarr δεν θα κατεβάζει πλέον ταινίες",
"CutoffHelpText": "Μόλις επιτευχθεί αυτή η ποιότητα, το {appName} δεν θα κατεβάζει πλέον ταινίες",
"DatabaseMigration": "Μετεγκατάσταση DB",
"Dates": "Ημερομηνίες",
"DelayProfile": "Προφίλ χρονοκαθυστέρησης",
@@ -143,7 +142,7 @@
"Grab": "Αρπάζω",
"GrabID": "Πιάσε ταυτότητα",
"GrabRelease": "Πιάσε την απελευθέρωση",
"GrabReleaseMessageText": "Ο Radarr δεν μπόρεσε να προσδιορίσει ποια ταινία ήταν αυτή η κυκλοφορία. Το Radarr ενδέχεται να μην μπορεί να εισαγάγει αυτόματα αυτήν την κυκλοφορία. Θέλετε να τραβήξετε το \"{0}\";",
"GrabReleaseMessageText": "Ο {appName} δεν μπόρεσε να προσδιορίσει ποια ταινία ήταν αυτή η κυκλοφορία. Το {appName} ενδέχεται να μην μπορεί να εισαγάγει αυτόματα αυτήν την κυκλοφορία. Θέλετε να τραβήξετε το \"{0}\";",
"GrabSelected": "Επιλογή αρπαγής",
"Group": "Ομάδα",
"HasPendingChangesNoChanges": "Χωρίς αλλαγές",
@@ -177,7 +176,7 @@
"IsCutoffUpgradeUntilThisQualityIsMetOrExceeded": "Αναβαθμίστε έως ότου ικανοποιηθεί ή ξεπεραστεί αυτή η ποιότητα",
"IsTagUsedCannotBeDeletedWhileInUse": "Δεν είναι δυνατή η διαγραφή κατά τη χρήση",
"Language": "Γλώσσα",
"LaunchBrowserHelpText": " Ανοίξτε ένα πρόγραμμα περιήγησης ιστού και μεταβείτε στην αρχική σελίδα του Radarr κατά την έναρξη της εφαρμογής.",
"LaunchBrowserHelpText": " Ανοίξτε ένα πρόγραμμα περιήγησης ιστού και μεταβείτε στην αρχική σελίδα του {appName} κατά την έναρξη της εφαρμογής.",
"LoadingBookFilesFailed": "Η φόρτωση αρχείων ταινίας απέτυχε",
"Local": "Τοπικός",
"LogFiles": "Αρχεία καταγραφής",
@@ -258,8 +257,8 @@
"RSSSync": "Συγχρονισμός RSS",
"RSSSyncInterval": "Διάστημα συγχρονισμού RSS",
"ReadTheWikiForMoreInformation": "Διαβάστε το Wiki για περισσότερες πληροφορίες",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Το Radarr υποστηρίζει οποιοδήποτε ευρετήριο που χρησιμοποιεί το πρότυπο Newznab, καθώς και άλλους δείκτες που αναφέρονται παρακάτω.",
"ReadarrTags": "Ετικέτες Radarr",
"ReadarrSupportsAnyIndexerThatUsesTheNewznabStandardAsWellAsOtherIndexersListedBelow": "Το {appName} υποστηρίζει οποιοδήποτε ευρετήριο που χρησιμοποιεί το πρότυπο Newznab, καθώς και άλλους δείκτες που αναφέρονται παρακάτω.",
"ReadarrTags": "Ετικέτες {appName}",
"Real": "Πραγματικός",
"Reason": "Λόγος",
"RecycleBinCleanupDaysHelpText": "Ορίστε σε 0 για να απενεργοποιήσετε τον αυτόματο καθαρισμό",
@@ -287,19 +286,19 @@
"RemoveTagExistingTag": "Υφιστάμενη ετικέτα",
"RemoveTagRemovingTag": "Κατάργηση ετικέτας",
"RemovedFromTaskQueue": "Καταργήθηκε από την ουρά εργασιών",
"RenameBooksHelpText": "Το Radarr θα χρησιμοποιήσει το υπάρχον όνομα αρχείου εάν η μετονομασία είναι απενεργοποιημένη",
"RenameBooksHelpText": "Το {appName} θα χρησιμοποιήσει το υπάρχον όνομα αρχείου εάν η μετονομασία είναι απενεργοποιημένη",
"Reorder": "Παραγγέλλω πάλι",
"ReplaceIllegalCharacters": "Αντικαταστήστε τους παράνομους χαρακτήρες",
"RequiredHelpText": "Αυτή η {0} συνθήκη πρέπει να ταιριάζει για να εφαρμοστεί το προσαρμοσμένο μορφότυπο. Διαφορετικά, αρκεί μία μόνο {0} αντιστοιχία.",
"RequiredPlaceHolder": "Προσθέστε νέο περιορισμό",
"RescanAfterRefreshHelpTextWarning": "Το Radarr δεν θα εντοπίσει αυτόματα αλλαγές στα αρχεία όταν δεν έχει οριστεί σε \"Πάντα\"",
"RescanAfterRefreshHelpTextWarning": "Το {appName} δεν θα εντοπίσει αυτόματα αλλαγές στα αρχεία όταν δεν έχει οριστεί σε \"Πάντα\"",
"RescanAuthorFolderAfterRefresh": "Επανεκκίνηση φακέλου ταινίας μετά την ανανέωση",
"Reset": "Επαναφορά",
"ResetAPIKey": "Επαναφορά κλειδιού API",
"ResetAPIKeyMessageText": "Είστε βέβαιοι ότι θέλετε να επαναφέρετε το κλειδί API σας;",
"Restart": "Επανεκκίνηση",
"RestartNow": "Επανεκκίνηση τώρα",
"RestartReadarr": "Επανεκκινήστε το Radarr",
"RestartReadarr": "Επανεκκινήστε το {appName}",
"Restore": "Επαναφέρω",
"RestoreBackup": "Επαναφορά αντιγράφων ασφαλείας",
"Result": "Αποτέλεσμα",
@@ -356,7 +355,7 @@
"SuccessMyWorkIsDoneNoFilesToRetag": "Επιτυχία! Η δουλειά μου ολοκληρώθηκε, δεν υπάρχουν αρχεία για μετονομασία.",
"SupportsRssvalueRSSIsNotSupportedWithThisIndexer": "Το RSS δεν υποστηρίζεται με αυτό το ευρετήριο",
"SupportsSearchvalueSearchIsNotSupportedWithThisIndexer": "Η αναζήτηση δεν υποστηρίζεται με αυτό το ευρετήριο",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Θα χρησιμοποιηθεί όταν πραγματοποιούνται αυτόματες αναζητήσεις μέσω του περιβάλλοντος χρήστη ή του Radarr",
"SupportsSearchvalueWillBeUsedWhenAutomaticSearchesArePerformedViaTheUIOrByReadarr": "Θα χρησιμοποιηθεί όταν πραγματοποιούνται αυτόματες αναζητήσεις μέσω του περιβάλλοντος χρήστη ή του {appName}",
"SupportsSearchvalueWillBeUsedWhenInteractiveSearchIsUsed": "Θα χρησιμοποιηθεί όταν χρησιμοποιείται διαδραστική αναζήτηση",
"TagIsNotUsedAndCanBeDeleted": "Η ετικέτα δεν χρησιμοποιείται και μπορεί να διαγραφεί",
"Tags": "Ετικέτες",
@@ -373,7 +372,7 @@
"Torrents": "Torrents",
"TotalFileSize": "Συνολικό μέγεθος αρχείου",
"UILanguage": "Γλώσσα διεπαφής χρήστη",
"UILanguageHelpText": "Γλώσσα που θα χρησιμοποιήσει ο Radarr για τη διεπαφή χρήστη",
"UILanguageHelpText": "Γλώσσα που θα χρησιμοποιήσει ο {appName} για τη διεπαφή χρήστη",
"UILanguageHelpTextWarning": "Απαιτείται επαναφόρτωση προγράμματος περιήγησης",
"UISettings": "Ρυθμίσεις διεπαφής χρήστη",
"URLBase": "Βάση διεύθυνσης URL",
@@ -425,20 +424,19 @@
"UsenetDelay": "Καθυστέρηση Usenet",
"UsenetDelayHelpText": "Καθυστέρηση σε λίγα λεπτά για να περιμένετε πριν πάρετε μια κυκλοφορία από το Usenet",
"Username": "Όνομα χρήστη",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Υποκατάστημα για χρήση για την ενημέρωση του Radarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Υποκατάστημα που χρησιμοποιείται από εξωτερικό μηχανισμό ενημέρωσης",
"BranchUpdate": "Υποκατάστημα για χρήση για την ενημέρωση του {appName}",
"BranchUpdateMechanism": "Υποκατάστημα που χρησιμοποιείται από εξωτερικό μηχανισμό ενημέρωσης",
"Version": "Εκδοχή",
"WeekColumnHeader": "Κεφαλίδα στήλης εβδομάδας",
"Year": "Ετος",
"YesCancel": "Ναι, Ακύρωση",
"ApiKeyHelpTextWarning": "Απαιτείται επανεκκίνηση για να τεθεί σε ισχύ",
"LoadingBooksFailed": "Η φόρτωση αρχείων ταινίας απέτυχε",
"ProxyUsernameHelpText": "Πρέπει να εισαγάγετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης μόνο εάν απαιτείται. Αφήστε τα κενά διαφορετικά.",
"SslCertPathHelpTextWarning": "Απαιτείται επανεκκίνηση για να τεθεί σε ισχύ",
"SslPortHelpTextWarning": "Απαιτείται επανεκκίνηση για να τεθεί σε ισχύ",
"UnableToLoadMetadataProfiles": "Δεν είναι δυνατή η φόρτωση των Καθυστέρησης προφίλ",
"DownloadClientCheckDownloadingToRoot": "Λήψη προγράμματος-πελάτη {0} τοποθετεί λήψεις στον ριζικό φάκελο {1}. Δεν πρέπει να κάνετε λήψη σε έναν ριζικό φάκελο.",
"ReplaceIllegalCharactersHelpText": "Αντικαταστήστε τους παράνομους χαρακτήρες. Εάν δεν είναι επιλεγμένο, το Radarr θα τα καταργήσει",
"ReplaceIllegalCharactersHelpText": "Αντικαταστήστε τους παράνομους χαρακτήρες. Εάν δεν είναι επιλεγμένο, το {appName} θα τα καταργήσει",
"Tomorrow": "Αύριο",
"Today": "Σήμερα",
"Actions": "Ενέργειες",
@@ -456,7 +454,7 @@
"Time": "χρόνος",
"UnableToLoadBlocklist": "Δεν είναι δυνατή η φόρτωση της μαύρης λίστας",
"Level": "Επίπεδο",
"ReleaseBranchCheckOfficialBranchMessage": "Το υποκατάστημα {0} δεν είναι έγκυρο υποκατάστημα κυκλοφορίας Radarr, δεν θα λαμβάνετε ενημερώσεις",
"ReleaseBranchCheckOfficialBranchMessage": "Το υποκατάστημα {0} δεν είναι έγκυρο υποκατάστημα κυκλοφορίας {appName}, δεν θα λαμβάνετε ενημερώσεις",
"Blocklist": "Αποριφθέντα",
"BlocklistRelease": "Έκδοση μαύρης λίστας",
"SelectAll": "Επιλογή όλων",
@@ -470,7 +468,7 @@
"ImportMechanismHealthCheckMessage": "Ενεργοποίηση ολοκληρωμένου χειρισμού λήψεων",
"IndexerRssHealthCheckNoAvailableIndexers": "Όλοι οι δείκτες με δυνατότητα rss δεν είναι διαθέσιμοι προσωρινά λόγω πρόσφατων σφαλμάτων ευρετηρίου",
"IndexerSearchCheckNoAvailableIndexersMessage": "Όλοι οι δείκτες με δυνατότητα αναζήτησης δεν είναι διαθέσιμοι προσωρινά λόγω πρόσφατων σφαλμάτων ευρετηρίου",
"IndexerSearchCheckNoInteractiveMessage": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένη την διαδραστική αναζήτηση, το Radarr δεν θα παρέχει αποτελέσματα διαδραστικής αναζήτησης",
"IndexerSearchCheckNoInteractiveMessage": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένη την διαδραστική αναζήτηση, το {appName} δεν θα παρέχει αποτελέσματα διαδραστικής αναζήτησης",
"MountCheckMessage": "Το προσάρτημα που περιέχει μια διαδρομή ταινίας είναι τοποθετημένο μόνο για ανάγνωση: ",
"OnBookFileDeleteForUpgradeHelpText": "Διαγραφή αρχείου ταινίας για αναβάθμιση",
"Connect": "Σύνδεση",
@@ -487,8 +485,8 @@
"RefreshAndScan": "Ανανέωση & σάρωση",
"ShowUnknownAuthorItems": "Εμφάνιση άγνωστων στοιχείων ταινίας",
"Yesterday": "Εχθές",
"IndexerRssHealthCheckNoIndexers": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένο τον συγχρονισμό RSS, το Radarr δεν θα τραβήξει αυτόματα νέες κυκλοφορίες",
"IndexerSearchCheckNoAutomaticMessage": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένη την αυτόματη αναζήτηση, το Radarr δεν θα παρέχει αποτελέσματα αυτόματης αναζήτησης",
"IndexerRssHealthCheckNoIndexers": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένο τον συγχρονισμό RSS, το {appName} δεν θα τραβήξει αυτόματα νέες κυκλοφορίες",
"IndexerSearchCheckNoAutomaticMessage": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένη την αυτόματη αναζήτηση, το {appName} δεν θα παρέχει αποτελέσματα αυτόματης αναζήτησης",
"CreateEmptyAuthorFolders": "Δημιουργήστε άδειους φακέλους ταινιών",
"AppDataLocationHealthCheckMessage": "Η ενημέρωση δεν θα είναι δυνατή για να αποτραπεί η διαγραφή των δεδομένων εφαρμογής κατά την ενημέρωση",
"DownloadClientStatusCheckAllClientMessage": "Όλα τα προγράμματα λήψης είναι μη διαθέσιμα λόγων αποτυχιών",
@@ -496,9 +494,9 @@
"OnBookFileDeleteForUpgrade": "Διαγραφή αρχείου ταινίας για αναβάθμιση",
"OnBookFileDeleteHelpText": "Διαγραφή αρχείου ταινίας",
"OnGrab": "Στο Grab",
"RestartReloadNote": "Σημείωση: Το Radarr θα επανεκκινήσει αυτόματα και θα φορτώσει ξανά το περιβάλλον εργασίας χρήστη κατά τη διαδικασία επαναφοράς.",
"RestartReloadNote": "Σημείωση: Το {appName} θα επανεκκινήσει αυτόματα και θα φορτώσει ξανά το περιβάλλον εργασίας χρήστη κατά τη διαδικασία επαναφοράς.",
"IndexerPriorityHelpText": "Προτεραιότητα ευρετηρίου από 1 (Υψηλότερη) έως 50 (Χαμηλότερη). Προεπιλογή: 25.",
"SettingsRemotePathMappingLocalPathHelpText": "Διαδρομή που πρέπει να χρησιμοποιήσει ο Radarr για πρόσβαση τοπικά στην απομακρυσμένη διαδρομή",
"SettingsRemotePathMappingLocalPathHelpText": "Διαδρομή που πρέπει να χρησιμοποιήσει ο {appName} για πρόσβαση τοπικά στην απομακρυσμένη διαδρομή",
"SettingsRemotePathMappingRemotePathHelpText": "Διαδρομή ρίζας στον κατάλογο στον οποίο έχει πρόσβαση το πρόγραμμα λήψης πελάτη",
"Disabled": "άτομα με ειδικές ανάγκες",
"DownloadClientCheckUnableToCommunicateMessage": "Αδύνατο να επικοινωνήσει με {0}.",
@@ -515,13 +513,13 @@
"Lists": "Τόπος αγώνων",
"MaintenanceRelease": "Έκδοση συντήρησης: επιδιορθώσεις σφαλμάτων και άλλες βελτιώσεις. Δείτε το Github Commit History για περισσότερες λεπτομέρειες",
"MediaManagement": "Διαχείριση μέσων",
"MissingFromDisk": "Ο Whisparr δεν μπόρεσε να βρει το αρχείο στο δίσκο και έτσι καταργήθηκε",
"MissingFromDisk": "Ο {appName} δεν μπόρεσε να βρει το αρχείο στο δίσκο και έτσι καταργήθηκε",
"Metadata": "Μεταδεδομένα",
"OnHealthIssue": "Σχετικά με το θέμα της υγείας",
"ProxyCheckBadRequestMessage": "Αποτυχία δοκιμής διακομιστή μεσολάβησης. StatusCode: {0}",
"ProxyCheckFailedToTestMessage": "Αποτυχία δοκιμής διακομιστή μεσολάβησης: {0}",
"ProxyCheckResolveIpMessage": "Αποτυχία επίλυσης της διεύθυνσης IP για τον Διαμορφωμένο διακομιστή μεσολάβησης {0}",
"ReadarrSupportsAnyDownloadClient": "Το Whisparr υποστηρίζει οποιονδήποτε πελάτη λήψης που χρησιμοποιεί το πρότυπο Newznab, καθώς και άλλους πελάτες λήψης που αναφέρονται παρακάτω.",
"ReadarrSupportsAnyDownloadClient": "Το {appName} υποστηρίζει οποιονδήποτε πελάτη λήψης που χρησιμοποιεί το πρότυπο Newznab, καθώς και άλλους πελάτες λήψης που αναφέρονται παρακάτω.",
"RescanAfterRefreshHelpText": "Κάντε σάρωση του φακέλου ταινίας μετά την ανανέωση της ταινίας",
"RootFolderCheckMultipleMessage": "Λείπουν πολλοί ριζικοί φάκελοι: {0}",
"RootFolderCheckSingleMessage": "Λείπει ριζικός φάκελος: {0}",
@@ -599,7 +597,6 @@
"MonitorNewItemsHelpText": "Ποια νέα βιβλία πρέπει να παρακολουθούνται",
"MusicBrainzRecordingID": "Αναγνωριστικό ηχογράφησης MusicBrainz",
"MusicBrainzBookID": "Αναγνωριστικό βιβλίου MusicBrainz",
"MusicbrainzId": "Musicbrainz Id",
"MusicBrainzAuthorID": "MusicBrainz Αναγνωριστικό συγγραφέα",
"NoName": "Να μην εμφανίζεται το όνομα",
"NoTagsHaveBeenAddedYet": "Δεν έχουν προστεθεί ακόμη ετικέτες. Προσθέστε ετικέτες για να συνδέσετε τους συγγραφείς με προφίλ καθυστέρησης, περιορισμούς ή ειδοποιήσεις. Κάντε κλικ στο {0} για να μάθετε περισσότερα σχετικά με τις ετικέτες στο Readarr.",
@@ -841,26 +838,26 @@
"StatusEndedContinuing": "Συνεχίζοντας",
"DefaultMetadataProfileIdHelpText": "Προεπιλεγμένο προφίλ μεταδεδομένων για καλλιτέχνες που εντοπίστηκαν σε αυτόν τον φάκελο",
"DefaultQualityProfileIdHelpText": "Προεπιλεγμένο προφίλ ποιότητας για καλλιτέχνες που εντοπίστηκαν σε αυτόν τον φάκελο",
"DefaultReadarrTags": "Προεπιλεγμένες ετικέτες Lidarr",
"RemotePathMappingCheckGenericPermissions": "Το πρόγραμμα-πελάτης λήψης {0} τοποθετεί λήψεις στο {1} αλλά το Radarr δεν μπορεί να δει αυτόν τον κατάλογο. Ίσως χρειαστεί να προσαρμόσετε τα δικαιώματα του φακέλου.",
"RemotePathMappingCheckImportFailed": "Η Radarr απέτυχε να εισαγάγει μια ταινία. Ελέγξτε τα αρχεία καταγραφής σας για λεπτομέρειες.",
"DefaultReadarrTags": "Προεπιλεγμένες ετικέτες {appName}",
"RemotePathMappingCheckGenericPermissions": "Το πρόγραμμα-πελάτης λήψης {0} τοποθετεί λήψεις στο {1} αλλά το {appName} δεν μπορεί να δει αυτόν τον κατάλογο. Ίσως χρειαστεί να προσαρμόσετε τα δικαιώματα του φακέλου.",
"RemotePathMappingCheckImportFailed": "Η {appName} απέτυχε να εισαγάγει μια ταινία. Ελέγξτε τα αρχεία καταγραφής σας για λεπτομέρειες.",
"CollapseMultipleBooksHelpText": "Σύμπτυξη πολλών άλμπουμ που κυκλοφορούν την ίδια μέρα",
"AuthorFolderFormat": "Μορφή φακέλου καλλιτέχνη",
"AuthorNameHelpText": "Το όνομα του καλλιτέχνη/άλμπουμ προς εξαίρεση (μπορεί να έχει οτιδήποτε σημαντικό)",
"BackupIntervalHelpText": "Διάστημα για τη δημιουργία αντιγράφων ασφαλείας του Lidarr DB και των ρυθμίσεων",
"BackupIntervalHelpText": "Διάστημα για τη δημιουργία αντιγράφων ασφαλείας του {appName} DB και των ρυθμίσεων",
"DataListMonitorAll": "Εάν οι ταινίες ή οι συλλογές που προστίθενται από αυτήν τη λίστα πρέπει να προστεθούν υπό παρακολούθηση",
"ContinuingAllBooksDownloaded": "Συνέχεια (Λήφθηκαν όλα τα κομμάτια)",
"ContinuingNoAdditionalBooksAreExpected": "Δεν αναμένονται επιπλέον άλμπουμ",
"RemotePathMappingCheckDownloadPermissions": "Το Radarr μπορεί να δει αλλά δεν έχει πρόσβαση στην ταινία που έχει ληφθεί {0}. Πιθανό σφάλμα αδειών.",
"RemotePathMappingCheckFolderPermissions": "Το Radarr μπορεί να δει αλλά δεν έχει πρόσβαση στον κατάλογο λήψεων {0}. Πιθανό σφάλμα αδειών.",
"DefaultTagsHelpText": "Προεπιλεγμένες ετικέτες Lidarr για καλλιτέχνες που εντοπίστηκαν σε αυτόν τον φάκελο",
"RemotePathMappingCheckDownloadPermissions": "Το {appName} μπορεί να δει αλλά δεν έχει πρόσβαση στην ταινία που έχει ληφθεί {0}. Πιθανό σφάλμα αδειών.",
"RemotePathMappingCheckFolderPermissions": "Το {appName} μπορεί να δει αλλά δεν έχει πρόσβαση στον κατάλογο λήψεων {0}. Πιθανό σφάλμα αδειών.",
"DefaultTagsHelpText": "Προεπιλεγμένες ετικέτες {appName} για καλλιτέχνες που εντοπίστηκαν σε αυτόν τον φάκελο",
"DefaultMonitorOptionHelpText": "Ποια άλμπουμ θα πρέπει να παρακολουθούνται κατά την αρχική προσθήκη για καλλιτέχνες που εντοπίστηκαν σε αυτόν τον φάκελο",
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent που παρέχεται από την εφαρμογή που κάλεσε το API",
"AllowAuthorChangeClickToChangeAuthor": "Κάντε κλικ για αλλαγή καλλιτέχνη",
"AllowFingerprintingHelpText": "Χρησιμοποιήστε δακτυλικά αποτυπώματα για να βελτιώσετε την ακρίβεια της αντιστοίχισης κομματιών",
"AllowFingerprintingHelpTextWarning": "Αυτό απαιτεί από το Lidarr να διαβάσει μέρη του αρχείου που θα επιβραδύνουν τις σαρώσεις και μπορεί να προκαλέσουν υψηλή δραστηριότητα δίσκου ή δικτύου.",
"AnyEditionOkHelpText": "Το Lidarr θα μεταβεί αυτόματα στην κυκλοφορία που ταιριάζει καλύτερα στα ληφθέντα κομμάτια",
"RemotePathMappingCheckFilesGenericPermissions": "Λήψη αρχείων πελάτη {0} που αναφέρθηκαν στο {1} αλλά το Radarr δεν μπορεί να δει αυτόν τον κατάλογο. Ίσως χρειαστεί να προσαρμόσετε τα δικαιώματα του φακέλου.",
"AllowFingerprintingHelpTextWarning": "Αυτό απαιτεί από το {appName} να διαβάσει μέρη του αρχείου που θα επιβραδύνουν τις σαρώσεις και μπορεί να προκαλέσουν υψηλή δραστηριότητα δίσκου ή δικτύου.",
"AnyEditionOkHelpText": "Το {appName} θα μεταβεί αυτόματα στην κυκλοφορία που ταιριάζει καλύτερα στα ληφθέντα κομμάτια",
"RemotePathMappingCheckFilesGenericPermissions": "Λήψη αρχείων πελάτη {0} που αναφέρθηκαν στο {1} αλλά το {appName} δεν μπορεί να δει αυτόν τον κατάλογο. Ίσως χρειαστεί να προσαρμόσετε τα δικαιώματα του φακέλου.",
"Theme": "Θέμα",
"ThemeHelpText": "Αλλαγή του θέματος διεπαφής χρήστη εφαρμογής, το θέμα «Αυτόματο» θα χρησιμοποιήσει το Θέμα του λειτουργικού σας συστήματος για να ρυθμίσει τη λειτουργία Light ή Dark. Εμπνευσμένο από το Theme.Park",
"EnableRssHelpText": "Θα χρησιμοποιηθεί όταν το Readarr αναζητά περιοδικά εκδόσεις μέσω RSS Sync",
@@ -886,7 +883,7 @@
"ResetDefinitions": "Επαναφορά ορισμών",
"Conditions": "Συνθήκες",
"CopyToClipboard": "Αντιγραφή στο πρόχειρο",
"CutoffFormatScoreHelpText": "Μόλις επιτευχθεί αυτό το σκορ προσαρμοσμένης μορφής, το Radarr δεν θα κατεβάζει πλέον ταινίες",
"CutoffFormatScoreHelpText": "Μόλις επιτευχθεί αυτό το σκορ προσαρμοσμένης μορφής, το {appName} δεν θα κατεβάζει πλέον ταινίες",
"DataFutureBooks": "Παρακολουθήστε άλμπουμ που δεν έχουν κυκλοφορήσει ακόμα",
"DeleteCustomFormat": "Διαγραφή προσαρμοσμένης μορφής",
"DeleteCustomFormatMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε τη προσαρμοσμένη μορφή '{0}';",
@@ -931,7 +928,7 @@
"DeleteSelectedImportListsMessageText": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το ευρετήριο \"{0}\";",
"DeleteSelectedIndexers": "Διαγραφή ευρετηρίου",
"ExistingTag": "Υφιστάμενη ετικέτα",
"BlocklistReleaseHelpText": "Αποτρέπει το Lidarr από το να πάρει ξανά αυτόματα αυτήν την έκδοση",
"BlocklistReleaseHelpText": "Αποτρέπει το {appName} από το να πάρει ξανά αυτόματα αυτήν την έκδοση",
"DeleteSelectedIndexersMessageText": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το ευρετήριο \"{0}\";",
"DownloadClientTagHelpText": "Χρησιμοποιήστε αυτό το ευρετήριο μόνο για καλλιτέχνη με τουλάχιστον μία αντίστοιχη ετικέτα. Αφήστε το κενό για χρήση με όλους τους καλλιτέχνες",
"ApplyTagsHelpTextReplace": "Αντικατάσταση: Αντικαταστήστε τις ετικέτες με τις εισαγόμενες ετικέτες (μην εισάγετε ετικέτες για να διαγράψετε όλες τις ετικέτες)",
@@ -962,7 +959,7 @@
"RemoveFailedDownloads": "Αφαίρεση Αποτυχημένων Λήψεων",
"SetTags": "Ορισμός ετικετών",
"Yes": "Ναί",
"ConnectionLostToBackend": "Το Radarr έχασε τη σύνδεσή του με το backend και θα χρειαστεί να επαναφορτωθεί για να αποκαταστήσει τη λειτουργικότητά του.",
"ConnectionLostToBackend": "Το {appName} έχασε τη σύνδεσή του με το backend και θα χρειαστεί να επαναφορτωθεί για να αποκαταστήσει τη λειτουργικότητά του.",
"AllResultsAreHiddenByTheAppliedFilter": "Όλα τα αποτελέσματα αποκρύπτονται από το εφαρμοσμένο φίλτρο",
"NotificationStatusAllClientHealthCheckMessage": "Όλες οι λίστες δεν είναι διαθέσιμες λόγω αστοχιών",
"NotificationStatusSingleClientHealthCheckMessage": "Μη διαθέσιμες λίστες λόγω αποτυχιών: {0}",
@@ -978,10 +975,10 @@
"Location": "Τοποθεσία",
"System": "Σύστημα",
"FreeSpace": "Ελεύθερος Χώρος",
"SkipRedownloadHelpText": "Αποτρέπει το Lidarr από το να δοκιμάσει τη λήψη εναλλακτικών εκδόσεων για τα αφαιρεμένα στοιχεία",
"SkipRedownloadHelpText": "Αποτρέπει το {appName} από το να δοκιμάσει τη λήψη εναλλακτικών εκδόσεων για τα αφαιρεμένα στοιχεία",
"Medium": "Μεσαίο",
"ConnectionLost": "Η σύνδεση χάθηκε",
"ConnectionLostReconnect": "Το Radarr θα προσπαθήσει να συνδεθεί αυτόματα, αλλιώς μπορείτε να κάνετε reload απο κάτω.",
"ConnectionLostReconnect": "Το {appName} θα προσπαθήσει να συνδεθεί αυτόματα, αλλιώς μπορείτε να κάνετε reload απο κάτω.",
"RecentChanges": "Πρόσφατες αλλαγές",
"SomeResultsAreHiddenByTheAppliedFilter": "Ορισμένα αποτελέσματα αποκρύπτονται από το εφαρμοσμένο φίλτρο",
"WhatsNew": "Τι νέα?",
@@ -1006,5 +1003,22 @@
"RemoveQueueItemConfirmation": "Είστε σίγουροι πως θέλετε να διαγράψετε {0} αντικείμενα από την ουρά;",
"SelectDropdown": "'Επιλέγω...",
"SelectQuality": "Επιλέξτε Ποιότητα",
"SelectReleaseGroup": "Επιλέξτε Ομάδα έκδοσης"
"SelectReleaseGroup": "Επιλέξτε Ομάδα έκδοσης",
"AuthBasic": "Βασικό (Αναδυόμενο παράθυρο προγράμματος περιήγησης)",
"AuthForm": "Φόρμες (σελίδα σύνδεσης)",
"AuthenticationRequired": "Απαιτείται πιστοποίηση",
"AuthenticationRequiredHelpText": "Αλλαγή για τα οποία απαιτείται έλεγχος ταυτότητας. Μην αλλάζετε αν δεν κατανοήσετε τους κινδύνους.",
"AuthenticationRequiredWarning": "Για να αποτρέψει την απομακρυσμένη πρόσβαση χωρίς έλεγχο ταυτότητας, το {appName} απαιτεί τώρα να ενεργοποιηθεί ο έλεγχος ταυτότητας. Διαμορφώστε τη μέθοδο ελέγχου ταυτότητας και τα διαπιστευτήριά σας. Μπορείτε προαιρετικά να απενεργοποιήσετε τον έλεγχο ταυτότητας από τοπικές διευθύνσεις. Ανατρέξτε στις Συχνές Ερωτήσεις για πρόσθετες πληροφορίες.",
"Enabled": "Ενεργοποιήθηκε",
"ApiKey": "Κλειδί API",
"DisabledForLocalAddresses": "Απενεργοποιήθηκε για τοπικές διευθύνσεις",
"AptUpdater": "Χρησιμοποιήστε το apt για να εγκαταστήσετε την ενημέρωση",
"BuiltIn": "Ενσωματωμένο",
"CurrentlyInstalled": "Εγκατεστημένο αυτήν τη στιγμή",
"DockerUpdater": "ενημερώστε το κοντέινερ για να λάβετε την ενημέρωση",
"OnLatestVersion": "Η τελευταία έκδοση του {appName} είναι ήδη εγκατεστημένη",
"Script": "Γραφή",
"UpdateAppDirectlyLoadError": "Δεν είναι δυνατή η απευθείας ενημέρωση του {appName},",
"ExternalUpdater": "Το {appName} έχει ρυθμιστεί να χρησιμοποιεί έναν εξωτερικό μηχανισμό ενημέρωσης",
"InstallLatest": "Εγκατάσταση πιο πρόσφατου"
}

View File

@@ -49,6 +49,7 @@
"ApplyTagsHelpTextHowToApplyIndexers": "How to apply tags to the selected indexers",
"ApplyTagsHelpTextRemove": "Remove: Remove the entered tags",
"ApplyTagsHelpTextReplace": "Replace: Replace the tags with the entered tags (enter no tags to clear all tags)",
"AptUpdater": "Use apt to install the update",
"AudioFileMetadata": "Write Metadata to Audio Files",
"AuthBasic": "Basic (Browser Popup)",
"AuthForm": "Forms (Login Page)",
@@ -116,6 +117,9 @@
"BooksTotal": "Books ({0})",
"Bookshelf": "Bookshelf",
"Branch": "Branch",
"BranchUpdate": "Branch to use to update {appName}",
"BranchUpdateMechanism": "Branch used by external update mechanism",
"BuiltIn": "Built-In",
"BypassIfAboveCustomFormatScore": "Bypass if Above Custom Format Score",
"BypassIfAboveCustomFormatScoreHelpText": "Enable bypass when release has a score higher than the configured minimum custom format score",
"BypassIfHighestQuality": "Bypass if Highest Quality",
@@ -137,7 +141,7 @@
"CalibreUrlBase": "Calibre Url Base",
"CalibreUsername": "Calibre Username",
"Cancel": "Cancel",
"CancelMessageText": "Are you sure you want to cancel this pending task?",
"CancelPendingTask": "Are you sure you want to cancel this pending task?",
"CatalogNumber": "Catalog Number",
"CertificateValidation": "Certificate Validation",
"CertificateValidationHelpText": "Change how strict HTTPS certification validation is. Do not change unless you understand the risks.",
@@ -197,6 +201,7 @@
"CreateEmptyAuthorFolders": "Create empty author folders",
"CreateEmptyAuthorFoldersHelpText": "Create missing author folders during disk scan",
"CreateGroup": "Create group",
"CurrentlyInstalled": "Currently Installed",
"CustomFilter": "Custom Filter",
"CustomFormat": "Custom Format",
"CustomFormatScore": "Custom Format Score",
@@ -293,6 +298,7 @@
"DoNotBlocklist": "Do not Blocklist",
"DoNotBlocklistHint": "Remove without blocklisting",
"Docker": "Docker",
"DockerUpdater": "Update the docker container to receive the update",
"DownloadClient": "Download Client",
"DownloadClientCheckDownloadingToRoot": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.",
"DownloadClientCheckNoneAvailableMessage": "No download client is available",
@@ -357,10 +363,13 @@
"ExistingTagsScrubbed": "Existing tags scrubbed",
"ExportCustomFormat": "Export Custom Format",
"External": "External",
"ExternalUpdater": "{appName} is configured to use an external update mechanism",
"ExtraFileExtensionsHelpText": "Comma separated list of extra files to import (.nfo will be imported as .nfo-orig)",
"ExtraFileExtensionsHelpTextsExamples": "Examples: '.sub, .nfo' or 'sub,nfo'",
"FailedDownloadHandling": "Failed Download Handling",
"FailedLoadingSearchResults": "Failed to load search results, please try again.",
"FailedToFetchSettings": "Failed to fetch settings",
"FailedToFetchUpdates": "Failed to fetch updates",
"FailedToLoadQueue": "Failed to load Queue",
"FileDateHelpText": "Change file date on import/rescan",
"FileDetails": "File Details",
@@ -385,7 +394,7 @@
"ForMoreInformationOnTheIndividualIndexersClickOnTheInfoButtons": "For more information on the individual indexers, click on the info buttons.",
"ForMoreInformationOnTheIndividualListsClickOnTheInfoButtons": "For more information on the individual lists, click on the info buttons.",
"ForeignId": "Foreign ID",
"ForeignIdHelpText": "The Musicbrainz Id of the author/book to exclude",
"ForeignIdHelpText": "The Foreign Id of the author/book to exclude",
"Formats": "Formats",
"FreeSpace": "Free Space",
"FutureBooks": "Future Books",
@@ -478,6 +487,11 @@
"IndexerTagsHelpText": "Only use this indexer for authors with at least one matching tag. Leave blank to use with all authors.",
"Indexers": "Indexers",
"IndexersSettingsSummary": "Indexers and release restrictions",
"Install": "Install",
"InstallLatest": "Install Latest",
"InstallMajorVersionUpdate": "Install Update",
"InstallMajorVersionUpdateMessage": "This update will install a new major version and may not be compatible with your system. Are you sure you want to install this update?",
"InstallMajorVersionUpdateMessageLink": "Please check [{domain}]({url}) for more information.",
"InstanceName": "Instance Name",
"InstanceNameHelpText": "Instance name in tab and for Syslog app name",
"InteractiveSearchModalHeader": "Interactive Search",
@@ -504,6 +518,7 @@
"Large": "Large",
"LastDuration": "Last Duration",
"LastExecution": "Last Execution",
"LastSearched": "Last Searched",
"LastWriteTime": "Last Write Time",
"LatestBook": "Latest Book",
"LaunchBrowserHelpText": " Open a web browser and navigate to Readarr homepage on app start.",
@@ -605,7 +620,6 @@
"MusicBrainzRecordingID": "MusicBrainz Recording ID",
"MusicBrainzReleaseID": "MusicBrainz Release ID",
"MusicBrainzTrackID": "MusicBrainz Track ID",
"MusicbrainzId": "Musicbrainz Id",
"MustContain": "Must Contain",
"MustNotContain": "Must Not Contain",
"NETCore": ".NET Core",
@@ -674,6 +688,7 @@
"OnHealthIssueHelpText": "On Health Issue",
"OnImportFailure": "On Import Failure",
"OnImportFailureHelpText": "On Import Failure",
"OnLatestVersion": "The latest version of {appName} is already installed",
"OnReleaseImport": "On Release Import",
"OnReleaseImportHelpText": "On Release Import",
"OnRename": "On Rename",
@@ -706,6 +721,7 @@
"PosterSize": "Poster Size",
"PreviewRename": "Preview Rename",
"PreviewRetag": "Preview Retag",
"PreviouslyInstalled": "Previously Installed",
"Profiles": "Profiles",
"ProfilesSettingsSummary": "Quality, Metadata, Delay, and Release profiles",
"Progress": "Progress",
@@ -858,6 +874,7 @@
"SSLPort": "SSL Port",
"Save": "Save",
"Scheduled": "Scheduled",
"Script": "Script",
"ScriptPath": "Script Path",
"Search": "Search",
"SearchAll": "Search All",
@@ -1051,6 +1068,7 @@
"UnmonitoredHelpText": "Include unmonitored books in the iCal feed",
"UnselectAll": "Unselect All",
"UpdateAll": "Update all",
"UpdateAppDirectlyLoadError": "Unable to update {appName} directly,",
"UpdateAutomaticallyHelpText": "Automatically download and install updates. You will still be able to install from System: Updates",
"UpdateAvailable": "New update is available",
"UpdateCheckStartupNotWritableMessage": "Cannot install update because startup folder '{0}' is not writable by the user '{1}'.",
@@ -1079,8 +1097,6 @@
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent provided by the app that called the API",
"Username": "Username",
"UsernameHelpText": "Calibre content server username",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Branch to use to update Readarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Branch used by external update mechanism",
"Version": "Version",
"Wanted": "Wanted",
"WatchLibraryForChangesHelpText": "Rescan automatically when files change in a root folder",

View File

@@ -1,5 +1,4 @@
{
"ApiKeyHelpTextWarning": "Requiere reiniciar para que surta efecto",
"DeleteRootFolderMessageText": "¿Estás seguro que quieres eliminar la carpeta raíz '{name}'?",
"LoadingBooksFailed": "La carga de los archivos ha fallado",
"ProxyUsernameHelpText": "Solo necesitas introducir un usuario y contraseña si se requiere alguno. De otra forma déjalos en blanco.",
@@ -12,7 +11,6 @@
"ShowDateAdded": "Mostrar fecha de adición",
"Tags": "Etiquetas",
"60MinutesSixty": "60 Minutos: {0}",
"APIKey": "Clave API",
"About": "Acerca de",
"AddListExclusion": "Añadir lista de exclusión",
"AddingTag": "Añadir etiqueta",
@@ -26,16 +24,16 @@
"ApplyTags": "Aplicar Etiquetas",
"45MinutesFourtyFive": "45 Minutos: {0}",
"Authentication": "Autenticación",
"AuthenticationMethodHelpText": "Requiere usuario y contraseña para acceder a Readarr",
"AuthenticationMethodHelpText": "Requiere usuario y contraseña para acceder a {appName}",
"AuthorClickToChangeBook": "Clic para cambiar la película",
"AutoRedownloadFailedHelpText": "Buscar e intentar descargar automáticamente una versión diferente",
"AutoRedownloadFailedHelpText": "Busca e intenta descargar automáticamente una versión diferente",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Los libros eliminados del disco se dejan de monitorizar automáticamente en Readarr",
"Automatic": "Automático",
"BackupFolderHelpText": "Las rutas relativas estarán bajo el directorio AppData de Readarr",
"BackupNow": "Hacer copia de seguridad ahora",
"BackupRetentionHelpText": "Las copias de seguridad automáticas anteriores al período de retención serán borradas automáticamente",
"Backups": "Copias de seguridad",
"BindAddress": "Dirección de Ligado",
"BindAddress": "Dirección de enlace",
"BindAddressHelpText": "Dirección IP4 válida, localhost o '*' para todas las interfaces",
"BindAddressHelpTextWarning": "Requiere reiniciar para que surta efecto",
"BookIsDownloadingInterp": "La película está descargando - {0}% {1}",
@@ -44,12 +42,12 @@
"Calendar": "Calendario",
"CalendarWeekColumnHeaderHelpText": "Mostrado sobre cada columna cuando la vista activa es semana",
"Cancel": "Cancelar",
"CancelMessageText": "Seguro que quieres cancelar esta tarea pendiente?",
"CancelPendingTask": "Seguro que quieres cancelar esta tarea pendiente?",
"CertificateValidation": "Validacion de certificado",
"CertificateValidationHelpText": "Cambiar como es la validacion de la certificacion estricta de HTTPS. No cambiar a menos que entiendas las consecuencias.",
"CertificateValidationHelpText": "Cambia cómo de estricta es la validación de certificación de HTTPS. No cambiar a menos que entiendas los riesgos.",
"ChangeFileDate": "Cambiar fecha de archivo",
"ChangeHasNotBeenSavedYet": "El cambio aún no se ha guardado",
"ChmodFolder": "Carpeta chmod",
"ChmodFolder": "chmod de la carpeta",
"ChmodFolderHelpText": "Octal, aplicado durante la importación / cambio de nombre a carpetas y archivos multimedia (sin bits de ejecución)",
"ChmodFolderHelpTextWarning": "Esto solo funciona si el usuario que ejecuta Readarr es el propietario del archivo. Es mejor asegurarse de que el cliente de descarga establezca los permisos correctamente.",
"ChownGroupHelpText": "Nombre del grupo o gid. Utilice gid para sistemas de archivos remotos.",
@@ -114,7 +112,7 @@
"EnableAutomaticSearch": "Habilitar Búsqueda Automática",
"EnableColorImpairedMode": "Habilitar Modo de dificultad con los colores",
"EnableColorImpairedModeHelpText": "Estilo modificado para permitir que usuarios con problemas de color distingan mejor la información codificada por colores",
"EnableCompletedDownloadHandlingHelpText": "Importar automáticamente las descargas completas del gestor de descargas",
"EnableCompletedDownloadHandlingHelpText": "Importa automáticamente las descargas completas del gestor de descargas",
"EnableHelpText": "Habilitar la creación de un fichero de metadatos para este tipo de metadato",
"EnableInteractiveSearch": "Habilitar Búsqueda Interactiva",
"EnableRSS": "Habilitar RSS",
@@ -315,7 +313,7 @@
"ScriptPath": "Ruta del script",
"Search": "Buscar",
"SearchAll": "Buscar todo",
"SearchForMissing": "Buscar perdidos",
"SearchForMissing": "Buscar faltantes",
"SearchSelected": "Buscar seleccionados",
"Security": "Seguridad",
"SendAnonymousUsageData": "Enviar datos de uso anónimos",
@@ -412,7 +410,7 @@
"Unmonitored": "Sin monitorizar",
"UnmonitoredHelpText": "Incluir los libros sin monitorizar en el canal de iCal",
"UpdateAll": "Actualizar Todo",
"UpdateAutomaticallyHelpText": "Descargar e instalar actualizaciones automáticamente. Todavía puedes instalar desde Sistema: Actualizaciones",
"UpdateAutomaticallyHelpText": "Descarga e instala actualizaciones automáticamente. Podrás seguir instalándolas desde Sistema: Actualizaciones",
"UpdateMechanismHelpText": "Usar el actualizador integrado de Readarr o un script",
"UpdateScriptPathHelpText": "Ruta a un script personalizado que toma un paquete de actualización extraído y gestiona el resto del proceso de actualización",
"Updates": "Actualizaciones",
@@ -425,8 +423,8 @@
"UsenetDelay": "Retraso de usenet",
"UsenetDelayHelpText": "Retraso en minutos a esperar antes de capturar un lanzamiento desde usenet",
"Username": "Usuario",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Rama a utilizar para actualizar Readarr",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Rama usada por el mecanismo de actualización externo",
"BranchUpdate": "Rama a utilizar para actualizar Readarr",
"BranchUpdateMechanism": "Rama usada por el mecanismo de actualización externo",
"Version": "Versión",
"WeekColumnHeader": "Cabecera de columna de semana",
"Year": "Año",
@@ -606,7 +604,7 @@
"ResetDefinitions": "Restablecer definiciones",
"UnableToLoadCustomFormats": "No se pueden cargar los Formatos Propios",
"Theme": "Tema",
"ThemeHelpText": "Cambiar el tema de la interfaz de la aplicación, el tema 'Auto' usará el tema de tu sistema para establecer el modo luminoso u oscuro. Inspirado por Theme.Park",
"ThemeHelpText": "Cambia el tema de la interfaz de la aplicación, el tema 'Auto' usará el tema de tu sistema para establecer el modo luminoso u oscuro. Inspirado por Theme.Park",
"CustomFormatSettings": "Ajustes de formato personalizado",
"CutoffFormatScoreHelpText": "Una vez alcanzada la puntuación del formato personalizado Readarr dejará de capturar lanzamientos de libros",
"DeleteCustomFormatMessageText": "¿Estás seguro que quieres eliminar el formato personalizado '{name}'?",
@@ -644,7 +642,7 @@
"Yes": "Sí",
"RedownloadFailed": "La descarga ha fallado",
"RemoveCompleted": "Eliminar completado",
"RemoveDownloadsAlert": "Las opciones de Eliminar fueron movidas a las opciones del cliente de descarga individual en la table anterior.",
"RemoveDownloadsAlert": "Las opciones de eliminación fueron trasladadas a las opciones del cliente de descarga individual en la tabla anterior.",
"RemoveFailed": "Fallo al eliminar",
"ApplyTagsHelpTextAdd": "Añadir: Añade las etiquetas a la lista de etiquetas existente",
"ApplyTagsHelpTextHowToApplyDownloadClients": "Cómo añadir etiquetas a los clientes de descargas seleccionados",
@@ -686,7 +684,7 @@
"Activity": "Actividad",
"Location": "Ubicación",
"Ui": "Interfaz",
"AddNew": "Añadir Nuevo",
"AddNew": "Añadir nuevo",
"Backup": "Copia de seguridad",
"ManageClients": "Gestionar Clientes",
"ManageDownloadClients": "Gestionar Clientes de Descarga",
@@ -764,13 +762,13 @@
"ExtraFileExtensionsHelpText": "Lista de archivos adicionales separados por coma para importar (.nfo será importado como .nfo-orig)",
"ExtraFileExtensionsHelpTextsExamples": "Ejemplos: '.sub, .nfo' o 'sub,nfo'",
"ImportLists": "Importar listas",
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "El cliente de descarga {downloadClientName} está configurado para eliminar las descargas completadas. Esto puede causar que las descargas sean eliminadas de tu cliente antes de que {1} pueda importarlas.",
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "El cliente de descarga {0} está configurado para eliminar las descargas completadas. Esto puede causar que las descargas sean eliminadas de tu cliente antes de que {1} pueda importarlas.",
"Continuing": "Continua",
"DownloadClientQbittorrentSettingsContentLayout": "Diseño del contenido",
"InvalidUILanguage": "Su interfaz de usuario está configurada en un idioma no válido, corríjalo y guarde la configuración",
"NoCutoffUnmetItems": "Ningún elemento con límite no alcanzado",
"StatusEndedContinuing": "Continua",
"ChownGroup": "chown grupo",
"ChownGroup": "chown del grupo",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Si usar el diseño de contenido configurado de qBittorrent, el diseño original del torrent o siempre crear una subcarpeta (qBittorrent 4.3.2+)",
"CustomFormatsSpecificationRegularExpression": "Expresión regular",
"ErrorLoadingContent": "Hubo un error cargando este contenido",
@@ -832,7 +830,7 @@
"SelectReleaseGroup": "Seleccionar grupo de lanzamiento",
"ThereWasAnErrorLoadingThisItem": "Hubo un error cargando este elemento",
"ThereWasAnErrorLoadingThisPage": "Hubo un error cargando esta página",
"SourceTitle": "Título de la fuente",
"SourceTitle": "Título de origen",
"ShowBanners": "Mostrar banners",
"SearchMonitored": "Buscar monitorizados",
"Other": "Otro",
@@ -898,7 +896,7 @@
"DataListMonitorNone": "No monitorizar autores o libros",
"Iso639-3": "Códigos de idioma ISO 639-3, o 'nulo', separados por coma",
"MinPopularityHelpText": "Popularidad es la media de valoraciones * número de votos",
"DeleteSelected": "Eliminar seleccionados",
"DeleteSelected": "Borrar seleccionados",
"IsExpandedShowFileInfo": "Mostrar información de archivo",
"MassBookSearchWarning": "¿Estás seguro que quieres llevar a cabo una búsqueda masiva para {0} libros?",
"MonitorNewItemsHelpText": "Qué nuevos libros deberían ser monitorizados",
@@ -957,7 +955,6 @@
"IgnoredMetaHelpText": "Los libros serán ignorados si contienen uno o más de los siguientes términos (insensible a mayúsculas)",
"IsExpandedHideBooks": "Esconder libros",
"LogSQL": "Registro SQL",
"MusicbrainzId": "ID de MusicBrainz",
"OnBookTagUpdate": "En actualización de etiqueta de libro",
"PasswordHelpText": "Contraseña del servidor de contenido de Calibre",
"OnAuthorAddedHelpText": "En autor añadido",
@@ -977,7 +974,7 @@
"CalibreLibrary": "Biblioteca de Calibre",
"DeleteMetadataProfile": "Eliminar el perfil de metadatos",
"PathHelpText": "Carpeta raíz que contiene tu biblitoteca de libros",
"ForeignIdHelpText": "La ID de Musicbrainz del autor/libro a excluir",
"ForeignIdHelpText": "La ID foránea del autor/libro a excluir",
"HostHelpText": "Host del servidor de contenido de Calibre",
"MetadataProviderSource": "Fuente del proveedor de metadatos",
"MonitorAuthor": "Monitorizar autor",
@@ -1088,5 +1085,37 @@
"IndexerSettingsSeedTime": "Tiempo de sembrado",
"IndexerSettingsSeedTimeHelpText": "El tiempo que un torrent debería ser sembrado antes de parar, vacío usa el predeterminado del cliente de descarga",
"FailedLoadingSearchResults": "Error al cargar los resultados de la busqueda, prueba otra vez.",
"WhySearchesCouldBeFailing": "Pulsa aquí para descubrir por qué las búsquedas podrían estar fallando"
"WhySearchesCouldBeFailing": "Pulsa aquí para descubrir por qué las búsquedas podrían estar fallando",
"ApiKey": "Clave API",
"AuthenticationRequiredHelpText": "Cambia para qué solicitudes se requiere autenticación. No cambiar a menos que entiendas los riesgos.",
"AuthForm": "Formularios (Página de inicio de sesión)",
"AuthenticationRequiredWarning": "Para evitar el acceso remoto sin autenticación, {appName} ahora requiere que la autenticación sea habilitada. Opcionalmente puedes deshabilitar la autenticación desde direcciones locales.",
"DisabledForLocalAddresses": "Deshabilitada para direcciones locales",
"Enabled": "Habilitada",
"PasswordConfirmation": "Confirmación de contraseña",
"AuthBasic": "Básica (Ventana emergente del navegador)",
"AuthenticationMethod": "Método de autenticación",
"AuthenticationMethodHelpTextWarning": "Por favor selecciona un método de autenticación válido",
"AuthenticationRequired": "Autenticación requerida",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirma la nueva contraseña",
"AuthenticationRequiredPasswordHelpTextWarning": "Introduce una nueva contraseña",
"AuthenticationRequiredUsernameHelpTextWarning": "Introduce un nuevo usuario",
"External": "Externa",
"AptUpdater": "Usa apt para instalar la actualización",
"BuiltIn": "Integrado",
"CurrentlyInstalled": "Actualmente instalado",
"DockerUpdater": "Actualiza el contenedor docker para recibir la actualización",
"ExternalUpdater": "{appName} está configurado para usar un mecanismo de actualización externo",
"FailedToFetchSettings": "Error al recuperar la configuración",
"Install": "Instalar",
"OnLatestVersion": "La última versión de {appName} ya está instalada",
"PreviouslyInstalled": "Previamente instalado",
"Script": "Script",
"UpdateAppDirectlyLoadError": "No se pudo actualizar {appName} directamente,",
"FailedToFetchUpdates": "Fallo al buscar las actualizaciones",
"InstallLatest": "Instala el último",
"InstallMajorVersionUpdate": "Instalar actualización",
"InstallMajorVersionUpdateMessage": "Esta actualización instalará una nueva versión principal y podría no ser compatible con tu sistema. ¿Estás seguro que quieres instalar esta actualización?",
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información.",
"LastSearched": "Último buscado"
}

View File

@@ -1 +1,12 @@
{}
{
"20MinutesTwenty": "۲۰ دقیقه: {0}",
"ApiKey": "کلید API",
"Usenet": "Usenet",
"45MinutesFourtyFive": "۴۵ دقیقه: {0}",
"60MinutesSixty": "۶۰ دقیقه: {0}",
"About": "درباره",
"Actions": "اقدامات",
"Docker": "Docker",
"Torrents": "تورنت ها",
"Activity": "فعالیت"
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More