Compare commits

...

55 Commits

Author SHA1 Message Date
Bogdan
cf012eb001 Use minor version for core-js in babel/preset-env 2024-12-16 13:26:25 +02:00
Weblate
6b8a7993ff Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translation: Servarr/Prowlarr
2024-12-15 18:40:20 +02:00
Mark McDowall
c6440bb21b Upgrade TypeScript and core-js
(cherry picked from commit 148480909917f69ff3b2ca547ccb4716dd56606e)
2024-12-15 15:37:10 +02:00
Mark McDowall
b95eac98b9 Fixed: Error getting processes in some cases
(cherry picked from commit b552d4e9f7ca7388404aa0d52566010a54cb0244)
2024-12-15 15:37:10 +02:00
Bogdan
0eb19ce834 Bump version to 1.28.2 2024-12-15 10:05:45 +02:00
Weblate
4b8016d95d Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translation: Servarr/Prowlarr
2024-12-14 02:34:32 +02:00
Bogdan
31d8d2419a Fixed: Refresh backup list on deletion
Fixes #2300
2024-12-11 14:36:59 +02:00
Weblate
d29ccd7749 Multiple Translations updated by Weblate
ignore-downstream

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: Robin Dadswell <robin@robindadswell.tech>
Co-authored-by: Rodion <rodyon009@gmail.com>
Co-authored-by: Weblate <noreply-mt-weblate@weblate.org>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: farebyting <farelbyting@gmail.com>
Co-authored-by: hhjuhl <hans@kopula.dk>
Co-authored-by: keysuck <joshkkim@gmail.com>
Co-authored-by: mryx007 <mryx@mail.de>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/id/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/uk/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_CN/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_HANS/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_Hans/
Translation: Servarr/Prowlarr
2024-12-10 14:12:15 +02:00
Mark McDowall
e789f4ec54 Sync TimeSpanConverter with upstream
(cherry picked from commit 1374240321f08d1400faf95e84217e4b7a2d116b)
2024-12-09 14:09:23 +02:00
Bogdan
58d495d618 Bump version to 1.28.1 2024-12-08 12:25:51 +02:00
Bogdan
f3328863e1 Fixed: (M-Team) IMDb removed from releases response 2024-12-07 14:08:48 +02:00
Bogdan
a23d792781 Fixed: Syncing Newznab indexers with expired VIP expiration dates to apps 2024-12-07 12:10:45 +02:00
Bogdan
f066cf399d Fixed: Link to TMDb shows in search history
Fixes #2294
2024-12-07 10:37:29 +02:00
Servarr
61e863cb31 Automated API Docs update 2024-12-03 00:26:48 -06:00
soup
b2afbc6872 New: Add config file setting for CGNAT authentication bypass
(cherry picked from commit 4c41a4f368046f73f82306bbd73bec992392938b)
2024-12-03 00:07:27 -06:00
Elias Benbourenane
aace65f88e Allow GetFileSize to follow symlinks
(cherry picked from commit ca0bb14027f3409014e7cf9ffa8e04e577001d77)

Don't fail if symlink target can't be resolved

(cherry picked from commit 8cb58a63d8ec1b290bc57ad2cf1e90809ceebce9)
2024-12-02 03:18:30 +02:00
Bogdan
9ab2d8b444 Bump IPAddressRange, Npgsql and Polly 2024-12-02 03:14:36 +02:00
Mark McDowall
bc314061ef Fixed: Prevent lack of internet from stopping all health checks from running
(cherry picked from commit dba3a8243988d3e9870b841696303191e1703a0d)
2024-12-02 03:10:32 +02:00
Mark McDowall
87b3dcd780 Support Postgres with non-standard version string
(cherry picked from commit 40f4ef27b22113c1dae0d0cbdee8205132bed68a)
2024-12-02 03:06:47 +02:00
Gylesie
f3b99f68f6 Remove unnecessary heap allocations in local IP check
(cherry picked from commit ed536a85ad5f2062bf6f01f80efddb19fa935f63)
2024-12-02 03:05:29 +02:00
Mark McDowall
c4a90e8ba4 Webpack web target
(cherry picked from commit a90866a73e6cff9a286c23e60c74672f4c0d317a)
2024-11-27 12:26:23 +02:00
Bogdan
41320ca2dc Bump version to 1.28.0 2024-11-26 19:27:15 +02:00
Bogdan
b8b32f8708 Fixed: (ImmortalSeed) Update relogin check 2024-11-24 11:45:55 +02:00
Weblate
30c4bb24e8 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Mizuyoru_TW <mizuyoru.tw@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_TW/
Translation: Servarr/Prowlarr
2024-11-24 07:44:46 +02:00
Alexander Bruun
b447db5d08 Fixed: (RED) Update indexer url (#2285)
* Updated RED CNAME record
* Added LegacyUrls
2024-11-23 22:41:21 -06:00
Weblate
299001a513 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: 4kwins <hanszimmerme@gmail.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_CN/
Translation: Servarr/Prowlarr
2024-11-19 20:37:31 -06:00
Bogdan
2871f1f2a2 Bump version to 1.27.0 2024-11-19 03:11:37 +02:00
Bogdan
a9b93df0c9 Pin ReportGenerator in Azure Pipelines for .NET 6
(cherry picked from commit 50ce480abf043140e209d2d2959fbea8dd5dd2ab)
2024-11-15 15:43:29 -06:00
Weblate
2726787ee9 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: My name is Svetoslav Kolev <slubchev@yahoo.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/el/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/hu/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/id/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/nl/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/sv/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/th/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/uk/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/vi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_CN/
Translation: Servarr/Prowlarr
2024-11-14 20:56:24 -06:00
bakerboy448
b917932f19 Improve No Results Messaging 2024-11-14 19:30:12 -06:00
bakerboy448
06ae85e6d1 Fixed: Updates Page Translations 2024-11-12 21:14:38 -06:00
Weblate
b1c7e98664 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Fixer <ygj59783@zslsz.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Lars <lars.erik.heloe@gmail.com>
Co-authored-by: Lizandra Candido da Silva <lizandra.c.s@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: mytelegrambot <lacsonluxur@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/hr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/id/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/sk/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/sv/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/th/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/vi/
Translation: Servarr/Prowlarr
2024-11-08 13:45:13 +02:00
Bogdan
62479737a7 Fixed: (Torrent RSS) Clear old cookies on edit
Fixes #2275
2024-11-04 14:23:29 +02:00
Bogdan
8e69415d64 Check for disabled till value in filtering blocked providers 2024-11-03 18:16:39 +02:00
Bogdan
222dfb1821 Bump version to 1.26.1 2024-11-03 11:43:41 +02:00
Weblate
94f439e238 Multiple Translations updated by Weblate
ignore-downstream

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: HUi <huynguyeexn@gmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Kuzmich <kuzmich55@gmail.com>
Co-authored-by: Moon55 <dylan.gurdak@protonmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fordas <fordas15@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/vi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_CN/
Translation: Servarr/Prowlarr
2024-11-02 21:13:55 +02:00
Bogdan
903a88c121 Update timezone offset for FL 2024-11-01 17:56:47 +02:00
Bogdan
9690ab6883 Fixed: (IPTorrents) Search IMDb ID in descriptions 2024-11-01 17:19:28 +02:00
Bogdan
1e1a2b3b4a Fixed: (BeyondHD) Enforce length for API and RSS keys 2024-11-01 12:59:11 +02:00
bakerboy448
9dc2d3669c Fixed: NzbIndex removed, API not supported 2024-10-31 09:31:25 +02:00
Bogdan
511c76e219 Update JetBrains logos 2024-10-29 10:06:00 +02:00
Bogdan
78329b7b92 Improve exception message for invalid torrent files 2024-10-28 17:35:17 +02:00
Bogdan
4240048853 Add Knaben as native indexer 2024-10-28 08:23:42 +02:00
Bogdan
432af42ffd Fixed indexer names for no definitions check 2024-10-27 16:04:17 +02:00
Weblate
0d6c03f8d4 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Ardenet <1213193613@qq.com>
Co-authored-by: fordas <fordas15@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/zh_CN/
Translation: Servarr/Prowlarr
2024-10-27 16:02:41 +02:00
Bogdan
96830f975e Cleaning paths for top level root folders
(cherry picked from commit a00121695715feb2cf8f04da246dc18262ab3237)
2024-10-27 15:12:00 +02:00
Mark McDowall
13c538ff58 Ignore extra spaces in path when not running on Windows
(cherry picked from commit 6d0f10b877912edef21232c64339cc6548d9690e)
2024-10-27 15:10:34 +02:00
Mark McDowall
14250e9634 Fixed getting parents from different OS paths
(cherry picked from commit e791f4b743d9660b0ad1decc4c5ed0e864f3b243)
2024-10-27 15:08:13 +02:00
Hadrien Patte
e2f7890d76 Use OperatingSystem class to get OS information
(cherry picked from commit 135b5c2ddd8f0a274b0d59eb07f75aaf1446b9da)
2024-10-27 09:06:21 +02:00
Bogdan
257d38de66 Inherit trigger from pushed command models
(cherry picked from commit 0bc4903954b955fce0c368ef7fd2a6f3761d6a93)
2024-10-27 09:05:38 +02:00
Bogdan
fd2a14e01b Fix settings fetching failure for updates 2024-10-27 09:01:07 +02:00
Bogdan
b4d76c7138 Fixed: Initial state for qBittorrent v5.0
(cherry picked from commit ff724b7f4099284b8062f1625cf07b7822782edf)
2024-10-27 08:57:54 +02:00
Bogdan
9655f37fa8 Trim directory separators in GetRelativePath
(cherry picked from commit 240a0339bee7d407e564df6b6575a2ade6ac03cd)
2024-10-27 08:56:57 +02:00
Bogdan
246fb9b855 Update check returns error if build older than 180 days 2024-10-24 08:14:07 +03:00
Bogdan
25afadc9b2 Bump version to 1.26.0 2024-10-22 05:51:30 +03:00
101 changed files with 1810 additions and 862 deletions

View File

@@ -1,33 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="70px" height="70px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="-1.3318" y1="43.7371" x2="67.0419" y2="26.0967">
<stop offset="0.1237" style="stop-color:#7866FF"/>
<stop offset="0.5376" style="stop-color:#FE2EB6"/>
<stop offset="0.8548" style="stop-color:#FD0486"/>
</linearGradient>
<polygon style="fill:url(#SVGID_1_);" points="67.3,16 43.7,0 0,31.1 11.1,70 58.9,60.3 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="45.9148" y1="38.9098" x2="67.6577" y2="9.0989">
<stop offset="0.1237" style="stop-color:#FF0080"/>
<stop offset="0.2587" style="stop-color:#FE0385"/>
<stop offset="0.4109" style="stop-color:#FA0C92"/>
<stop offset="0.5713" style="stop-color:#F41BA9"/>
<stop offset="0.7363" style="stop-color:#EB2FC8"/>
<stop offset="0.8656" style="stop-color:#E343E6"/>
</linearGradient>
<polygon style="fill:url(#SVGID_2_);" points="67.3,16 43.7,0 38,15.7 38,47.8 70,47.8 "/>
</g>
<g>
<rect x="13.4" y="13.4" style="fill:#000000;" width="43.2" height="43.2"/>
<rect x="17.4" y="48.5" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
<g>
<path style="fill:#FFFFFF;" d="M17.4,19.1h6.9c5.6,0,9.5,3.8,9.5,8.9V28c0,5-3.9,8.9-9.5,8.9h-6.9V19.1z M21.4,22.7v10.7h3
c3.2,0,5.4-2.2,5.4-5.3V28c0-3.2-2.2-5.4-5.4-5.4H21.4z"/>
<polygon style="fill:#FFFFFF;" points="40.3,22.7 34.9,22.7 34.9,19.1 49.6,19.1 49.6,22.7 44.2,22.7 44.2,37 40.3,37 "/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 1.8 KiB

View File

@@ -1,66 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="120.1px" height="130.2px" viewBox="0 0 120.1 130.2" style="enable-background:new 0 0 120.1 130.2;" xml:space="preserve"
>
<g>
<linearGradient id="XMLID_2_" gradientUnits="userSpaceOnUse" x1="31.8412" y1="120.5578" x2="110.2402" y2="73.24">
<stop offset="0" style="stop-color:#FCEE39"/>
<stop offset="1" style="stop-color:#F37B3D"/>
</linearGradient>
<path id="XMLID_3041_" style="fill:url(#XMLID_2_);" d="M118.6,71.8c0.9-0.8,1.4-1.9,1.5-3.2c0.1-2.6-1.8-4.7-4.4-4.9
c-1.2-0.1-2.4,0.4-3.3,1.1l0,0l-83.8,45.9c-1.9,0.8-3.6,2.2-4.7,4.1c-2.9,4.8-1.3,11,3.6,13.9c3.4,2,7.5,1.8,10.7-0.2l0,0l0,0
c0.2-0.2,0.5-0.3,0.7-0.5l78-54.8C117.3,72.9,118.4,72.1,118.6,71.8L118.6,71.8L118.6,71.8z"/>
<linearGradient id="XMLID_3_" gradientUnits="userSpaceOnUse" x1="48.3607" y1="6.9083" x2="119.9179" y2="69.5546">
<stop offset="0" style="stop-color:#EF5A6B"/>
<stop offset="0.57" style="stop-color:#F26F4E"/>
<stop offset="1" style="stop-color:#F37B3D"/>
</linearGradient>
<path id="XMLID_3049_" style="fill:url(#XMLID_3_);" d="M118.8,65.1L118.8,65.1L55,2.5C53.6,1,51.6,0,49.3,0
c-4.3,0-7.7,3.5-7.7,7.7v0c0,2.1,0.8,3.9,2.1,5.3l0,0l0,0c0.4,0.4,0.8,0.7,1.2,1l67.4,57.7l0,0c0.8,0.7,1.8,1.2,3,1.3
c2.6,0.1,4.7-1.8,4.9-4.4C120.2,67.3,119.7,66,118.8,65.1z"/>
<linearGradient id="XMLID_4_" gradientUnits="userSpaceOnUse" x1="52.9467" y1="63.6407" x2="10.5379" y2="37.1562">
<stop offset="0" style="stop-color:#7C59A4"/>
<stop offset="0.3852" style="stop-color:#AF4C92"/>
<stop offset="0.7654" style="stop-color:#DC4183"/>
<stop offset="0.957" style="stop-color:#ED3D7D"/>
</linearGradient>
<path id="XMLID_3042_" style="fill:url(#XMLID_4_);" d="M57.1,59.5C57,59.5,17.7,28.5,16.9,28l0,0l0,0c-0.6-0.3-1.2-0.6-1.8-0.9
c-5.8-2.2-12.2,0.8-14.4,6.6c-1.9,5.1,0.2,10.7,4.6,13.4l0,0l0,0C6,47.5,6.6,47.8,7.3,48c0.4,0.2,45.4,18.8,45.4,18.8l0,0
c1.8,0.8,3.9,0.3,5.1-1.2C59.3,63.7,59,61,57.1,59.5z"/>
<linearGradient id="XMLID_5_" gradientUnits="userSpaceOnUse" x1="52.1736" y1="3.7019" x2="10.7706" y2="37.8971">
<stop offset="0" style="stop-color:#EF5A6B"/>
<stop offset="0.364" style="stop-color:#EE4E72"/>
<stop offset="1" style="stop-color:#ED3D7D"/>
</linearGradient>
<path id="XMLID_3057_" style="fill:url(#XMLID_5_);" d="M49.3,0c-1.7,0-3.3,0.6-4.6,1.5L4.9,28.3c-0.1,0.1-0.2,0.1-0.2,0.2l-0.1,0
l0,0c-1.7,1.2-3.1,3-3.9,5.1C-1.5,39.4,1.5,45.9,7.3,48c3.6,1.4,7.5,0.7,10.4-1.4l0,0l0,0c0.7-0.5,1.3-1,1.8-1.6l34.6-31.2l0,0
c1.8-1.4,3-3.6,3-6.1v0C57.1,3.5,53.6,0,49.3,0z"/>
<g id="XMLID_3008_">
<rect id="XMLID_3033_" x="34.6" y="37.4" style="fill:#000000;" width="51" height="51"/>
<rect id="XMLID_3032_" x="39" y="78.8" style="fill:#FFFFFF;" width="19.1" height="3.2"/>
<g id="XMLID_3009_">
<path id="XMLID_3030_" style="fill:#FFFFFF;" d="M38.8,50.8l1.5-1.4c0.4,0.5,0.8,0.8,1.3,0.8c0.6,0,0.9-0.4,0.9-1.2l0-5.3l2.3,0
l0,5.3c0,1-0.3,1.8-0.8,2.3c-0.5,0.5-1.3,0.8-2.3,0.8C40.2,52.2,39.4,51.6,38.8,50.8z"/>
<path id="XMLID_3028_" style="fill:#FFFFFF;" d="M45.3,43.8l6.7,0v1.9l-4.4,0V47l4,0l0,1.8l-4,0l0,1.3l4.5,0l0,2l-6.7,0
L45.3,43.8z"/>
<path id="XMLID_3026_" style="fill:#FFFFFF;" d="M55,45.8l-2.5,0l0-2l7.3,0l0,2l-2.5,0l0,6.3l-2.3,0L55,45.8z"/>
<path id="XMLID_3022_" style="fill:#FFFFFF;" d="M39,54l4.3,0c1,0,1.8,0.3,2.3,0.7c0.3,0.3,0.5,0.8,0.5,1.4v0
c0,1-0.5,1.5-1.3,1.9c1,0.3,1.6,0.9,1.6,2v0c0,1.4-1.2,2.3-3.1,2.3l-4.3,0L39,54z M43.8,56.6c0-0.5-0.4-0.7-1-0.7l-1.5,0l0,1.5
l1.4,0C43.4,57.3,43.8,57.1,43.8,56.6L43.8,56.6z M43,59l-1.8,0l0,1.5H43c0.7,0,1.1-0.3,1.1-0.8v0C44.1,59.2,43.7,59,43,59z"/>
<path id="XMLID_3019_" style="fill:#FFFFFF;" d="M46.8,54l3.9,0c1.3,0,2.1,0.3,2.7,0.9c0.5,0.5,0.7,1.1,0.7,1.9v0
c0,1.3-0.7,2.1-1.7,2.6l2,2.9l-2.6,0l-1.7-2.5h-1l0,2.5l-2.3,0L46.8,54z M50.6,58c0.8,0,1.2-0.4,1.2-1v0c0-0.7-0.5-1-1.2-1
l-1.5,0v2H50.6z"/>
<path id="XMLID_3016_" style="fill:#FFFFFF;" d="M56.8,54l2.2,0l3.5,8.4l-2.5,0l-0.6-1.5l-3.2,0l-0.6,1.5l-2.4,0L56.8,54z
M58.8,59l-0.9-2.3L57,59L58.8,59z"/>
<path id="XMLID_3014_" style="fill:#FFFFFF;" d="M62.8,54l2.3,0l0,8.3l-2.3,0L62.8,54z"/>
<path id="XMLID_3012_" style="fill:#FFFFFF;" d="M65.7,54l2.1,0l3.4,4.4l0-4.4l2.3,0l0,8.3l-2,0L68,57.8l0,4.6l-2.3,0L65.7,54z"
/>
<path id="XMLID_3010_" style="fill:#FFFFFF;" d="M73.7,61.1l1.3-1.5c0.8,0.7,1.7,1,2.7,1c0.6,0,1-0.2,1-0.6v0
c0-0.4-0.3-0.5-1.4-0.8c-1.8-0.4-3.1-0.9-3.1-2.6v0c0-1.5,1.2-2.7,3.2-2.7c1.4,0,2.5,0.4,3.4,1.1l-1.2,1.6
c-0.8-0.5-1.6-0.8-2.3-0.8c-0.6,0-0.8,0.2-0.8,0.5v0c0,0.4,0.3,0.5,1.4,0.8c1.9,0.4,3.1,1,3.1,2.6v0c0,1.7-1.3,2.7-3.4,2.7
C76.1,62.5,74.7,62,73.7,61.1z"/>
</g>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 4.8 KiB

View File

@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="70px" height="70px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<g>
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="22.9451" y1="75.7869" x2="74.7868" y2="20.6415">
<stop offset="1.612903e-002" style="stop-color:#B35BA3"/>
<stop offset="0.4044" style="stop-color:#C41E57"/>
<stop offset="0.4677" style="stop-color:#C41E57"/>
<stop offset="0.6505" style="stop-color:#EB8523"/>
<stop offset="0.9516" style="stop-color:#FEBD11"/>
</linearGradient>
<polygon style="fill:url(#SVGID_1_);" points="49.8,15.2 36,36.7 58.4,70 70,23.1 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="17.7187" y1="73.2922" x2="69.5556" y2="18.1519">
<stop offset="1.612903e-002" style="stop-color:#B35BA3"/>
<stop offset="0.4044" style="stop-color:#C41E57"/>
<stop offset="0.4677" style="stop-color:#C41E57"/>
<stop offset="0.7043" style="stop-color:#EB8523"/>
</linearGradient>
<polygon style="fill:url(#SVGID_2_);" points="51.1,15.7 49,0 18.8,33.6 27.6,42.3 20.8,70 58.4,70 "/>
</g>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="1.8281" y1="53.4275" x2="48.8245" y2="9.2255">
<stop offset="1.612903e-002" style="stop-color:#B35BA3"/>
<stop offset="0.6613" style="stop-color:#C41E57"/>
</linearGradient>
<polygon style="fill:url(#SVGID_3_);" points="49,0 11.6,0 0,47.1 55.6,47.1 "/>
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="49.8935" y1="-11.5569" x2="48.8588" y2="24.0352">
<stop offset="0.5" style="stop-color:#C41E57"/>
<stop offset="0.6668" style="stop-color:#D13F48"/>
<stop offset="0.7952" style="stop-color:#D94F39"/>
<stop offset="0.8656" style="stop-color:#DD5433"/>
</linearGradient>
<polygon style="fill:url(#SVGID_4_);" points="55.3,47.1 51.1,15.7 49,0 41.7,23 "/>
</g>
<g>
<rect x="13.4" y="13.5" transform="matrix(-1 2.577289e-003 -2.577289e-003 -1 70.0288 70.081)" style="fill:#000000;" width="43.2" height="43.2"/>
<rect x="17.6" y="48.6" transform="matrix(1 -2.577289e-003 2.577289e-003 1 -0.1287 6.634109e-002)" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
<path style="fill:#FFFFFF;" d="M17.4,19.1l8.2,0c2.3,0,4,0.6,5.2,1.8c1,1,1.5,2.4,1.5,4.1l0,0.1c0,1.5-0.3,2.6-1.1,3.5
c-0.7,0.9-1.6,1.6-2.8,2l4.4,6.4l-4.6,0l-3.7-5.5l-3.3,0l0,5.5l-3.9,0L17.4,19.1z M25.3,27.8c1,0,1.7-0.2,2.2-0.7
c0.5-0.5,0.8-1.1,0.8-1.8l0-0.1c0-0.9-0.3-1.5-0.8-1.9c-0.5-0.4-1.3-0.6-2.3-0.6l-3.9,0l0,5.1L25.3,27.8z"/>
<path style="fill:#FFFFFF;" d="M36,33.2l-1.9,0l0-3.3l2.5,0l0.6-3.8l-2.3,0l0-3.3l2.8,0l0.6-3.7l3.4,0l-0.6,3.7l3.7,0l0.6-3.7
l3.4,0l-0.6,3.7l1.9,0l0,3.3l-2.5,0L47,29.9l2.3,0l0,3.3l-2.8,0L45.8,37l-3.4,0l0.7-3.8l-3.7,0L38.7,37l-3.4,0L36,33.2z
M43.7,29.9l0.6-3.8l-3.7,0L40,29.9L43.7,29.9z"/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -1,42 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="70px" height="70px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<defs>
<linearGradient id="linear-gradient" x1="70.22612" y1="27.79912" x2="-5.13024" y2="63.12242" gradientTransform="matrix(1, 0, 0, -1, 0, 71.27997)" gradientUnits="userSpaceOnUse">
<stop offset="0" stop-color="#c90f5e"/>
<stop offset="0.22111" stop-color="#c90f5e"/>
<stop offset="0.2356" stop-color="#c90f5e"/>
<stop offset="0.35559" stop-color="#ca135c"/>
<stop offset="0.46633" stop-color="#ce1e57"/>
<stop offset="0.5735" stop-color="#d4314e"/>
<stop offset="0.67844" stop-color="#dc4b41"/>
<stop offset="0.78179" stop-color="#e66d31"/>
<stop offset="0.88253" stop-color="#f3961d"/>
<stop offset="0.94241" stop-color="#fcb20f"/>
</linearGradient>
<linearGradient id="linear-gradient-2" x1="24.65904" y1="61.99608" x2="46.04762" y2="2.93445" gradientTransform="matrix(1, 0, 0, -1, 0, 71.27997)" gradientUnits="userSpaceOnUse">
<stop offset="0.04188" stop-color="#077cfb"/>
<stop offset="0.44503" stop-color="#c90f5e"/>
<stop offset="0.95812" stop-color="#077cfb"/>
</linearGradient>
<linearGradient id="linear-gradient-3" x1="17.39552" y1="63.34592" x2="33.19389" y2="7.20092" gradientTransform="matrix(1, 0, 0, -1, 0, 71.27997)" gradientUnits="userSpaceOnUse">
<stop offset="0.27749" stop-color="#c90f5e"/>
<stop offset="0.97382" stop-color="#fcb20f"/>
</linearGradient>
</defs>
<title>rider</title>
<g>
<polygon points="70 27.237 63.391 23.75 20.926 0 3.827 17.921 21.619 41.068 60.537 44.397 70 27.237" fill="url(#linear-gradient)"/>
<polygon points="50.423 16.132 44.271 1.107 27.643 17.471 11.768 50.194 49.411 70 70 57.98 50.423 16.132" fill="url(#linear-gradient-2)"/>
<polygon points="20.926 0 0 14.095 7.779 62.172 27.848 69.889 53.78 48.823 20.926 0" fill="url(#linear-gradient-3)"/>
</g>
<g>
<rect x="13.30219" y="13.19311" width="43.61371" height="43.61371"/>
<g>
<path d="M17.22741,18.86293h8.39564a7.38416,7.38416,0,0,1,5.34268,1.85358,5.86989,5.86989,0,0,1,1.52648,4.1433h0A5.74339,5.74339,0,0,1,28.567,30.5296l4.47041,6.54206H28.34891L24.42368,31.1838h-3.162v5.88785H17.22741V18.86293h0ZM25.296,27.69471c1.96262,0,3.053-1.09034,3.053-2.61682h0c0-1.74455-1.19938-2.61682-3.162-2.61682H21.15265v5.23365H25.296Z" fill="#fff"/>
<path d="M36.09034,18.86293H43.2866c5.77882,0,9.70405,3.92523,9.70405,9.15888h0c0,5.12461-3.92523,9.15888-9.70405,9.15888H36.09034V18.86293Zm4.03427,3.59813V33.47352h3.162a5.23727,5.23727,0,0,0,5.56075-5.45171h0a5.26493,5.26493,0,0,0-5.56075-5.56075h-3.162Z" fill="#fff"/>
</g>
<rect x="17.22741" y="48.62925" width="16.35514" height="2.72586" fill="#fff"/>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 3.0 KiB

View File

@@ -1,36 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Generator: Adobe Illustrator 19.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
width="70px" height="70px" viewBox="0 0 70 70" style="enable-background:new 0 0 70 70;" xml:space="preserve">
<g>
<g>
<linearGradient id="SVGID_1_" gradientUnits="userSpaceOnUse" x1="25.0676" y1="1.4599" x2="43.1829" y2="66.675">
<stop offset="0.2849" style="stop-color:#00CDD7"/>
<stop offset="0.9409" style="stop-color:#2086D7"/>
</linearGradient>
<polygon style="fill:url(#SVGID_1_);" points="9.4,63.3 0,7.3 17.5,0.1 28.6,6.7 38.8,1.2 60.1,9.4 48.1,70 "/>
<linearGradient id="SVGID_2_" gradientUnits="userSpaceOnUse" x1="30.7199" y1="9.7343" x2="61.365" y2="54.6713">
<stop offset="0.1398" style="stop-color:#FFF045"/>
<stop offset="0.3656" style="stop-color:#00CDD7"/>
</linearGradient>
<polygon style="fill:url(#SVGID_2_);" points="70,23.7 61,1.4 44.6,0 19.3,24.3 26.1,55.6 38.8,64.6 70,46 62.3,31.7 "/>
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="61.0819" y1="15.2899" x2="65.1065" y2="29.5436">
<stop offset="0.2849" style="stop-color:#00CDD7"/>
<stop offset="0.9409" style="stop-color:#2086D7"/>
</linearGradient>
<polygon style="fill:url(#SVGID_3_);" points="56,20.4 62.3,31.7 70,23.7 64.4,9.8 "/>
</g>
<g>
<g>
<rect x="13.4" y="13.4" style="fill:#000000;" width="43.2" height="43.2"/>
<rect x="17.5" y="48.5" style="fill:#FFFFFF;" width="16.2" height="2.7"/>
<path style="fill:#FFFFFF;" d="M38.7,34.3l2.3-2.8c1.6,1.3,3.3,2.2,5.3,2.2c1.6,0,2.5-0.6,2.5-1.7v-0.1c0-1-0.6-1.5-3.6-2.3
c-3.6-0.9-5.8-1.9-5.8-5.5v-0.1c0-3.3,2.6-5.4,6.2-5.4c2.6,0,4.8,0.8,6.6,2.3l-2,3c-1.6-1.1-3.1-1.8-4.6-1.8
c-1.5,0-2.3,0.7-2.3,1.6v0.1c0,1.2,0.8,1.6,3.8,2.4c3.6,1,5.6,2.3,5.6,5.4v0.1c0,3.6-2.7,5.6-6.5,5.6
C43.5,37.2,40.8,36.2,38.7,34.3"/>
</g>
<polygon style="fill:#FFFFFF;" points="35.2,19 32.5,29.4 29.5,19 26.5,19 23.4,29.4 20.7,19 16.6,19 21.7,36.9 25,36.9 28,26.5
30.9,36.9 34.3,36.9 39.4,19 "/>
</g>
</g>
</svg>

Before

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -68,16 +68,16 @@ Support this project by becoming a sponsor. Your logo will show up here with a l
## JetBrains
Thank you to [<img src="/Logo/jetbrains.svg" alt="JetBrains" width="32"> JetBrains](http://www.jetbrains.com/) for providing us with free licenses to their great tools.
Thank you to [<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/jetbrains.png" alt="JetBrains" width="96">](http://www.jetbrains.com/) for providing us with free licenses to their great tools.
- [<img src="/Logo/resharper.svg" alt="ReSharper" width="32"> ReSharper](http://www.jetbrains.com/resharper/)
- [<img src="/Logo/webstorm.svg" alt="WebStorm" width="32"> WebStorm](http://www.jetbrains.com/webstorm/)
- [<img src="/Logo/rider.svg" alt="Rider" width="32"> Rider](http://www.jetbrains.com/rider/)
- [<img src="/Logo/dottrace.svg" alt="dotTrace" width="32"> dotTrace](http://www.jetbrains.com/dottrace/)
* [<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/ReSharper_icon.png" alt="ReSharper" width="32"> ReSharper](http://www.jetbrains.com/resharper/)
* [<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/WebStorm_icon.png" alt="WebStorm" width="32"> WebStorm](http://www.jetbrains.com/webstorm/)
* [<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/Rider_icon.png" alt="Rider" width="32"> Rider](http://www.jetbrains.com/rider/)
* [<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/dotTrace_icon.png" alt="dotTrace" width="32"> dotTrace](http://www.jetbrains.com/dottrace/)
### License
- [GNU GPL v3](http://www.gnu.org/licenses/gpl.html)
- Copyright 2010-2022
- Copyright 2010-2024
Icon Credit - [Box vector created by freepik - www.freepik.com](https://www.freepik.com/vectors/box)

View File

@@ -9,7 +9,7 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '1.25.4'
majorVersion: '1.28.2'
minorVersion: $[counter('minorVersion', 1)]
prowlarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'
@@ -1190,7 +1190,7 @@ stages:
- task: SonarCloudAnalyze@2
condition: eq(variables['System.PullRequest.IsFork'], 'False')
displayName: Publish SonarCloud Results
- task: reportgenerator@5
- task: reportgenerator@5.3.11
displayName: Generate Coverage Report
inputs:
reports: '$(Build.SourcesDirectory)/CoverageResults/**/coverage.opencover.xml'

View File

@@ -25,6 +25,7 @@ module.exports = (env) => {
const config = {
mode: isProduction ? 'production' : 'development',
devtool: isProduction ? 'source-map' : 'eval-source-map',
target: 'web',
stats: {
children: false
@@ -169,7 +170,7 @@ module.exports = (env) => {
loose: true,
debug: false,
useBuiltIns: 'entry',
corejs: 3
corejs: '3.39'
}
]
]

View File

@@ -257,6 +257,7 @@ class HistoryRow extends Component {
key={parameter.key}
title={parameter.title}
value={data[parameter.key]}
queryType={data.queryType}
/>
);
}

View File

@@ -1,14 +1,16 @@
import React from 'react';
import Link from 'Components/Link/Link';
import { HistoryQueryType } from 'typings/History';
import styles from './HistoryRowParameter.css';
interface HistoryRowParameterProps {
title: string;
value: string;
queryType: HistoryQueryType;
}
function HistoryRowParameter(props: HistoryRowParameterProps) {
const { title, value } = props;
const { title, value, queryType } = props;
const type = title.toLowerCase();
@@ -18,7 +20,13 @@ function HistoryRowParameter(props: HistoryRowParameterProps) {
link = <Link to={`https://imdb.com/title/${value}/`}>{value}</Link>;
} else if (type === 'tmdb') {
link = (
<Link to={`https://www.themoviedb.org/movie/${value}`}>{value}</Link>
<Link
to={`https://www.themoviedb.org/${
queryType === 'tvsearch' ? 'tv' : 'movie'
}/${value}`}
>
{value}
</Link>
);
} else if (type === 'tvdb') {
link = (

View File

@@ -68,6 +68,7 @@ function IndexerHistoryRow(props: IndexerHistoryRowProps) {
key={parameter.key}
title={parameter.title}
value={data[parameter.key as keyof HistoryData].toString()}
queryType={data.queryType}
/>
);
})}

View File

@@ -270,7 +270,7 @@ function Updates() {
{generalSettingsError ? (
<Alert kind={kinds.DANGER}>
{translate('FailedToUpdateSettings')}
{translate('FailedToFetchSettings')}
</Alert>
) : null}

View File

@@ -1,5 +1,12 @@
import ModelBase from 'App/ModelBase';
export type HistoryQueryType =
| 'search'
| 'tvsearch'
| 'movie'
| 'book'
| 'music';
export interface HistoryData {
source: string;
host: string;
@@ -7,7 +14,7 @@ export interface HistoryData {
offset: number;
elapsedTime: number;
query: string;
queryType: string;
queryType: HistoryQueryType;
}
interface History extends ModelBase {

View File

@@ -81,7 +81,7 @@
"redux-thunk": "2.4.2",
"reselect": "4.1.8",
"stacktrace-js": "2.0.2",
"typescript": "5.1.6"
"typescript": "5.7.2"
},
"devDependencies": {
"@babel/core": "7.25.8",
@@ -104,7 +104,7 @@
"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.38.1",
"core-js": "3.39.0",
"css-loader": "6.7.3",
"css-modules-typescript-loader": "4.0.1",
"eslint": "8.57.1",

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

@@ -133,11 +133,16 @@ namespace NzbDrone.Common.Test
[TestCase(@"C:\test\", @"C:\Test\mydir")]
[TestCase(@"C:\test", @"C:\Test\mydir\")]
public void path_should_be_parent_on_windows_only(string parentPath, string childPath)
public void windows_path_should_be_parent(string parentPath, string childPath)
{
var expectedResult = OsInfo.IsWindows;
parentPath.IsParentPath(childPath).Should().Be(true);
}
parentPath.IsParentPath(childPath).Should().Be(expectedResult);
[TestCase("/test", "/test/mydir/")]
[TestCase("/test/", "/test/mydir")]
public void posix_path_should_be_parent(string parentPath, string childPath)
{
parentPath.IsParentPath(childPath).Should().Be(true);
}
[TestCase(@"C:\Test\mydir", @"C:\Test")]
@@ -145,20 +150,57 @@ namespace NzbDrone.Common.Test
[TestCase(@"C:\", null)]
[TestCase(@"\\server\share", null)]
[TestCase(@"\\server\share\test", @"\\server\share")]
public void path_should_return_parent_windows(string path, string parentPath)
public void windows_path_should_return_parent(string path, string parentPath)
{
WindowsOnly();
path.GetParentPath().Should().Be(parentPath);
}
[TestCase(@"/", null)]
[TestCase(@"/test", "/")]
public void path_should_return_parent_mono(string path, string parentPath)
[TestCase(@"/test/tv", "/test")]
public void unix_path_should_return_parent(string path, string parentPath)
{
PosixOnly();
path.GetParentPath().Should().Be(parentPath);
}
[TestCase(@"C:\Test\mydir", "Test")]
[TestCase(@"C:\Test\", @"C:\")]
[TestCase(@"C:\Test", @"C:\")]
[TestCase(@"C:\", null)]
[TestCase(@"\\server\share", null)]
[TestCase(@"\\server\share\test", @"\\server\share")]
public void path_should_return_parent_name_windows(string path, string parentPath)
{
path.GetParentName().Should().Be(parentPath);
}
[TestCase(@"/", null)]
[TestCase(@"/test", "/")]
[TestCase(@"/test/tv", "test")]
public void path_should_return_parent_name_mono(string path, string parentPath)
{
path.GetParentName().Should().Be(parentPath);
}
[TestCase(@"C:\Test\mydir", "mydir")]
[TestCase(@"C:\Test\", "Test")]
[TestCase(@"C:\Test", "Test")]
[TestCase(@"C:\", "C:\\")]
[TestCase(@"\\server\share", @"\\server\share")]
[TestCase(@"\\server\share\test", "test")]
public void path_should_return_directory_name_windows(string path, string parentPath)
{
path.GetDirectoryName().Should().Be(parentPath);
}
[TestCase(@"/", "/")]
[TestCase(@"/test", "test")]
[TestCase(@"/test/tv", "tv")]
public void path_should_return_directory_name_mono(string path, string parentPath)
{
path.GetDirectoryName().Should().Be(parentPath);
}
[Test]
public void path_should_return_parent_for_oversized_path()
{
@@ -166,7 +208,7 @@ namespace NzbDrone.Common.Test
// This test will fail on Windows if long path support is not enabled: https://www.howtogeek.com/266621/how-to-make-windows-10-accept-file-paths-over-260-characters/
// It will also fail if the app isn't configured to use long path (such as resharper): https://blogs.msdn.microsoft.com/jeremykuhne/2016/07/30/net-4-6-2-and-long-paths-on-windows-10/
var path = @"C:\media\2e168617-f2ae-43fb-b88c-3663af1c8eea\downloads\sabnzbd\nzbdrone\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories".AsOsAgnostic();
var path = @"C:\media\2e168617-f2ae-43fb-b88c-3663af1c8eea\downloads\sabnzbd\nzbdrone\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories".AsOsAgnostic();
var parentPath = @"C:\media\2e168617-f2ae-43fb-b88c-3663af1c8eea\downloads\sabnzbd\nzbdrone\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing\With.Alot.Of.Nested.Directories\Some.Real.Big.Thing".AsOsAgnostic();
path.GetParentPath().Should().Be(parentPath);
@@ -350,5 +392,46 @@ namespace NzbDrone.Common.Test
PosixOnly();
path.AsOsAgnostic().IsPathValid(PathValidationType.CurrentOs).Should().BeFalse();
}
[TestCase(@"C:\", @"C:\")]
[TestCase(@"C:\\", @"C:\")]
[TestCase(@"C:\Test", @"C:\Test")]
[TestCase(@"C:\Test\", @"C:\Test")]
[TestCase(@"\\server\share", @"\\server\share")]
[TestCase(@"\\server\share\", @"\\server\share")]
public void windows_path_should_return_clean_path(string path, string cleanPath)
{
path.GetCleanPath().Should().Be(cleanPath);
}
[TestCase("/", "/")]
[TestCase("//", "/")]
[TestCase("/test", "/test")]
[TestCase("/test/", "/test")]
[TestCase("/test//", "/test")]
public void unix_path_should_return_clean_path(string path, string cleanPath)
{
path.GetCleanPath().Should().Be(cleanPath);
}
[TestCase(@"C:\Test\", @"C:\Test\Series Title", "Series Title")]
[TestCase(@"C:\Test\", @"C:\Test\Collection\Series Title", @"Collection\Series Title")]
[TestCase(@"C:\Test\mydir\", @"C:\Test\mydir\Collection\Series Title", @"Collection\Series Title")]
[TestCase(@"\\server\share", @"\\server\share\Series Title", "Series Title")]
[TestCase(@"\\server\share\mydir\", @"\\server\share\mydir\/Collection\Series Title", @"Collection\Series Title")]
public void windows_path_should_return_relative_path(string parentPath, string childPath, string relativePath)
{
parentPath.GetRelativePath(childPath).Should().Be(relativePath);
}
[TestCase(@"/test", "/test/Series Title", "Series Title")]
[TestCase(@"/test/", "/test/Collection/Series Title", "Collection/Series Title")]
[TestCase(@"/test/mydir", "/test/mydir/Series Title", "Series Title")]
[TestCase(@"/test/mydir/", "/test/mydir/Collection/Series Title", "Collection/Series Title")]
[TestCase(@"/test/mydir/", @"/test/mydir/\Collection/Series Title", "Collection/Series Title")]
public void unix_path_should_return_relative_path(string parentPath, string childPath, string relativePath)
{
parentPath.GetRelativePath(childPath).Should().Be(relativePath);
}
}
}

View File

@@ -189,6 +189,25 @@ namespace NzbDrone.Common.Disk
}
var fi = new FileInfo(path);
try
{
// If the file is a symlink, resolve the target path and get the size of the target file.
if (fi.Attributes.HasFlag(FileAttributes.ReparsePoint))
{
var targetPath = fi.ResolveLinkTarget(true)?.FullName;
if (targetPath != null)
{
fi = new FileInfo(targetPath);
}
}
}
catch (IOException ex)
{
Logger.Trace(ex, "Unable to resolve symlink target for {0}", path);
}
return fi.Length;
}

View File

@@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using NzbDrone.Common.Extensions;
namespace NzbDrone.Common.Disk
@@ -9,6 +10,8 @@ namespace NzbDrone.Common.Disk
private readonly string _path;
private readonly OsPathKind _kind;
private static readonly Regex UncPathRegex = new Regex(@"(?<unc>^\\\\(?:\?\\UNC\\)?[^\\]+\\[^\\]+)(?:\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase);
public OsPath(string path)
{
if (path == null)
@@ -96,6 +99,29 @@ namespace NzbDrone.Common.Disk
return path;
}
private static string TrimTrailingSlash(string path, OsPathKind kind)
{
switch (kind)
{
case OsPathKind.Windows when !path.EndsWith(":\\"):
while (!path.EndsWith(":\\") && path.EndsWith('\\'))
{
path = path[..^1];
}
return path;
case OsPathKind.Unix when path != "/":
while (path != "/" && path.EndsWith('/'))
{
path = path[..^1];
}
return path;
}
return path;
}
public OsPathKind Kind => _kind;
public bool IsWindowsPath => _kind == OsPathKind.Windows;
@@ -130,7 +156,19 @@ namespace NzbDrone.Common.Disk
if (index == -1)
{
return new OsPath(null);
return Null;
}
var rootLength = GetRootLength();
if (rootLength == _path.Length)
{
return Null;
}
if (rootLength > index + 1)
{
return new OsPath(_path.Substring(0, rootLength));
}
return new OsPath(_path.Substring(0, index), _kind).AsDirectory();
@@ -139,6 +177,8 @@ namespace NzbDrone.Common.Disk
public string FullPath => _path;
public string PathWithoutTrailingSlash => TrimTrailingSlash(_path, _kind);
public string FileName
{
get
@@ -161,6 +201,29 @@ namespace NzbDrone.Common.Disk
}
}
public string Name
{
// Meant to behave similar to DirectoryInfo.Name
get
{
var index = GetFileNameIndex();
if (index == -1)
{
return PathWithoutTrailingSlash;
}
var rootLength = GetRootLength();
if (rootLength > index + 1)
{
return _path.Substring(0, rootLength);
}
return TrimTrailingSlash(_path.Substring(index).TrimStart('/', '\\'), _kind);
}
}
public bool IsValid => _path.IsPathValid(PathValidationType.CurrentOs);
private int GetFileNameIndex()
@@ -190,11 +253,50 @@ namespace NzbDrone.Common.Disk
return index;
}
private int GetRootLength()
{
if (!IsRooted)
{
return 0;
}
if (_kind == OsPathKind.Unix)
{
return 1;
}
if (_kind == OsPathKind.Windows)
{
if (HasWindowsDriveLetter(_path))
{
return 3;
}
var uncMatch = UncPathRegex.Match(_path);
// \\?\UNC\server\share\ or \\server\share
if (uncMatch.Success)
{
return uncMatch.Groups["unc"].Length;
}
// \\?\C:\
if (_path.StartsWith(@"\\?\"))
{
return 7;
}
}
return 0;
}
private string[] GetFragments()
{
return _path.Split(new char[] { '\\', '/' }, StringSplitOptions.RemoveEmptyEntries);
}
public static OsPath Null => new (null);
public override string ToString()
{
return _path;
@@ -267,6 +369,11 @@ namespace NzbDrone.Common.Disk
}
public bool Equals(OsPath other)
{
return Equals(other, false);
}
public bool Equals(OsPath other, bool ignoreTrailingSlash)
{
if (ReferenceEquals(other, null))
{
@@ -278,8 +385,8 @@ namespace NzbDrone.Common.Disk
return true;
}
var left = _path;
var right = other._path;
var left = ignoreTrailingSlash ? PathWithoutTrailingSlash : _path;
var right = ignoreTrailingSlash ? other.PathWithoutTrailingSlash : other._path;
if (Kind == OsPathKind.Windows || other.Kind == OsPathKind.Windows)
{

View File

@@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using NLog;
@@ -25,22 +24,25 @@ namespace NzbDrone.Common.EnvironmentInfo
static OsInfo()
{
var platform = Environment.OSVersion.Platform;
switch (platform)
if (OperatingSystem.IsWindows())
{
case PlatformID.Win32NT:
{
Os = Os.Windows;
break;
}
case PlatformID.MacOSX:
case PlatformID.Unix:
{
Os = GetPosixFlavour();
break;
}
Os = Os.Windows;
}
else if (OperatingSystem.IsMacOS())
{
Os = Os.Osx;
}
else if (OperatingSystem.IsFreeBSD())
{
Os = Os.Bsd;
}
else
{
#if ISMUSL
Os = Os.LinuxMusl;
#else
Os = Os.Linux;
#endif
}
}
@@ -84,59 +86,6 @@ namespace NzbDrone.Common.EnvironmentInfo
IsDocker = true;
}
}
private static Os GetPosixFlavour()
{
var output = RunAndCapture("uname", "-s");
if (output.StartsWith("Darwin"))
{
return Os.Osx;
}
else if (output.Contains("BSD"))
{
return Os.Bsd;
}
else
{
#if ISMUSL
return Os.LinuxMusl;
#else
return Os.Linux;
#endif
}
}
private static string RunAndCapture(string filename, string args)
{
var processStartInfo = new ProcessStartInfo
{
FileName = filename,
Arguments = args,
UseShellExecute = false,
CreateNoWindow = true,
RedirectStandardOutput = true
};
var output = string.Empty;
try
{
using (var p = Process.Start(processStartInfo))
{
// To avoid deadlocks, always read the output stream first and then wait.
output = p.StandardOutput.ReadToEnd();
p.WaitForExit(1000);
}
}
catch (Exception)
{
output = string.Empty;
}
return output;
}
}
public interface IOsInfo

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

@@ -25,8 +25,6 @@ namespace NzbDrone.Common.Extensions
private static readonly string UPDATE_CLIENT_FOLDER_NAME = "Prowlarr.Update" + Path.DirectorySeparatorChar;
private static readonly string UPDATE_LOG_FOLDER_NAME = "UpdateLogs" + Path.DirectorySeparatorChar;
private static readonly Regex PARENT_PATH_END_SLASH_REGEX = new Regex(@"(?<!:)\\$", RegexOptions.Compiled);
public static string CleanFilePath(this string path)
{
if (path.IsNotNullOrWhiteSpace())
@@ -87,55 +85,50 @@ namespace NzbDrone.Common.Extensions
throw new NotParentException("{0} is not a child of {1}", childPath, parentPath);
}
return childPath.Substring(parentPath.Length).Trim(Path.DirectorySeparatorChar);
return childPath.Substring(parentPath.Length).Trim('\\', '/');
}
public static string GetParentPath(this string childPath)
{
var cleanPath = OsInfo.IsWindows
? PARENT_PATH_END_SLASH_REGEX.Replace(childPath, "")
: childPath.TrimEnd(Path.DirectorySeparatorChar);
var path = new OsPath(childPath).Directory;
if (cleanPath.IsNullOrWhiteSpace())
{
return null;
}
return path == OsPath.Null ? null : path.PathWithoutTrailingSlash;
}
return Directory.GetParent(cleanPath)?.FullName;
public static string GetParentName(this string childPath)
{
var path = new OsPath(childPath).Directory;
return path == OsPath.Null ? null : path.Name;
}
public static string GetDirectoryName(this string childPath)
{
var path = new OsPath(childPath);
return path == OsPath.Null ? null : path.Name;
}
public static string GetCleanPath(this string path)
{
var cleanPath = OsInfo.IsWindows
? PARENT_PATH_END_SLASH_REGEX.Replace(path, "")
: path.TrimEnd(Path.DirectorySeparatorChar);
var osPath = new OsPath(path);
return cleanPath;
return osPath == OsPath.Null ? null : osPath.PathWithoutTrailingSlash;
}
public static bool IsParentPath(this string parentPath, string childPath)
{
if (parentPath != "/" && !parentPath.EndsWith(":\\"))
{
parentPath = parentPath.TrimEnd(Path.DirectorySeparatorChar);
}
var parent = new OsPath(parentPath);
var child = new OsPath(childPath);
if (childPath != "/" && !parentPath.EndsWith(":\\"))
while (child.Directory != OsPath.Null)
{
childPath = childPath.TrimEnd(Path.DirectorySeparatorChar);
}
var parent = new DirectoryInfo(parentPath);
var child = new DirectoryInfo(childPath);
while (child.Parent != null)
{
if (child.Parent.FullName.Equals(parent.FullName, DiskProviderBase.PathStringComparison))
if (child.Directory.Equals(parent, true))
{
return true;
}
child = child.Parent;
child = child.Directory;
}
return false;
@@ -150,14 +143,14 @@ namespace NzbDrone.Common.Extensions
return false;
}
if (path.Trim() != path)
{
return false;
}
// Only check for leading or trailing spaces for path when running on Windows.
if (OsInfo.IsWindows)
{
if (path.Trim() != path)
{
return false;
}
var directoryInfo = new DirectoryInfo(path);
while (directoryInfo != null)

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

@@ -5,14 +5,14 @@
</PropertyGroup>
<ItemGroup>
<PackageReference Include="DryIoc.dll" Version="5.4.3" />
<PackageReference Include="IPAddressRange" Version="6.0.0" />
<PackageReference Include="IPAddressRange" Version="6.1.0" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="6.0.1" />
<PackageReference Include="Microsoft.Extensions.Hosting.WindowsServices" Version="6.0.2" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.3.3" />
<PackageReference Include="NLog.Layouts.ClefJsonLayout" Version="1.0.0" />
<PackageReference Include="NLog.Extensions.Logging" Version="5.3.12" />
<PackageReference Include="Npgsql" Version="7.0.8" />
<PackageReference Include="Npgsql" Version="7.0.9" />
<PackageReference Include="Sentry" Version="4.0.2" />
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
<PackageReference Include="SharpZipLib" Version="1.4.2" />

View File

@@ -0,0 +1,43 @@
using System;
using System.Data.SQLite;
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Datastore.Converters;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore.Converters;
[TestFixture]
public class TimeSpanConverterFixture : CoreTest<TimeSpanConverter>
{
private SQLiteParameter _param;
[SetUp]
public void Setup()
{
_param = new SQLiteParameter();
}
[Test]
public void should_return_string_when_saving_timespan_to_db()
{
var span = TimeSpan.FromMilliseconds(10);
Subject.SetValue(_param, span);
_param.Value.Should().Be(span.ToString());
}
[Test]
public void should_return_timespan_when_getting_string_from_db()
{
var span = TimeSpan.FromMilliseconds(10);
Subject.Parse(span.ToString()).Should().Be(span);
}
[Test]
public void should_return_zero_timespan_for_db_null_value_when_getting_from_db()
{
Subject.Parse(null).Should().Be(TimeSpan.Zero);
}
}

View File

@@ -0,0 +1,38 @@
using FluentAssertions;
using NUnit.Framework;
using NzbDrone.Core.Datastore;
namespace NzbDrone.Core.Test.Datastore;
[TestFixture]
public class DatabaseVersionParserFixture
{
[TestCase("3.44.2", 3, 44, 2)]
public void should_parse_sqlite_database_version(string serverVersion, int majorVersion, int minorVersion, int buildVersion)
{
var version = DatabaseVersionParser.ParseServerVersion(serverVersion);
version.Should().NotBeNull();
version.Major.Should().Be(majorVersion);
version.Minor.Should().Be(minorVersion);
version.Build.Should().Be(buildVersion);
}
[TestCase("14.8 (Debian 14.8-1.pgdg110+1)", 14, 8, null)]
[TestCase("16.3 (Debian 16.3-1.pgdg110+1)", 16, 3, null)]
[TestCase("16.3 - Percona Distribution", 16, 3, null)]
[TestCase("17.0 - Percona Server", 17, 0, null)]
public void should_parse_postgres_database_version(string serverVersion, int majorVersion, int minorVersion, int? buildVersion)
{
var version = DatabaseVersionParser.ParseServerVersion(serverVersion);
version.Should().NotBeNull();
version.Major.Should().Be(majorVersion);
version.Minor.Should().Be(minorVersion);
if (buildVersion.HasValue)
{
version.Build.Should().Be(buildVersion.Value);
}
}
}

View File

@@ -55,7 +55,7 @@ namespace NzbDrone.Core.Test.IndexerTests.FileListTests
torrentInfo.InfoUrl.Should().Be("https://filelist.io/details.php?id=665873");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 19:20:19"));
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2020-01-25 20:20:19"));
torrentInfo.Size.Should().Be(8300512414);
torrentInfo.InfoHash.Should().Be(null);
torrentInfo.MagnetUrl.Should().Be(null);

View File

@@ -46,8 +46,8 @@ namespace NzbDrone.Core.Test.IndexerTests.RedactedTests
torrentInfo.Title.Should().Be("Red Hot Chili Peppers - Californication (1999) [Album] [US / Reissue 2020] [FLAC 24bit Lossless / Vinyl]");
torrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
torrentInfo.DownloadUrl.Should().Be("https://redacted.ch/ajax.php?action=download&id=3892313");
torrentInfo.InfoUrl.Should().Be("https://redacted.ch/torrents.php?id=16720&torrentid=3892313");
torrentInfo.DownloadUrl.Should().Be("https://redacted.sh/ajax.php?action=download&id=3892313");
torrentInfo.InfoUrl.Should().Be("https://redacted.sh/torrents.php?id=16720&torrentid=3892313");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2022-12-17 08:02:35"));

View File

@@ -53,7 +53,7 @@ namespace NzbDrone.Core.Applications
foreach (var application in applications)
{
if (blockedApplications.TryGetValue(application.Definition.Id, out var blockedApplicationStatus))
if (blockedApplications.TryGetValue(application.Definition.Id, out var blockedApplicationStatus) && blockedApplicationStatus.DisabledTill.HasValue)
{
_logger.Debug("Temporarily ignoring application {0} till {1} due to recent failures.", application.Definition.Name, blockedApplicationStatus.DisabledTill.Value.ToLocalTime());
continue;

View File

@@ -65,6 +65,7 @@ namespace NzbDrone.Core.Configuration
string PostgresPassword { get; }
string PostgresMainDb { get; }
string PostgresLogDb { get; }
bool TrustCgnatIpAddresses { get; }
}
public class ConfigFileProvider : IConfigFileProvider
@@ -479,5 +480,7 @@ namespace NzbDrone.Core.Configuration
SetValue("ApiKey", GenerateApiKey());
_eventAggregator.PublishEvent(new ApiKeyChangedEvent());
}
public bool TrustCgnatIpAddresses => _authOptions.TrustCgnatIpAddresses ?? GetValueBoolean("TrustCgnatIpAddresses", false, persist: false);
}
}

View File

@@ -183,6 +183,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

@@ -2,18 +2,17 @@ using System;
using System.Data;
using Dapper;
namespace NzbDrone.Core.Datastore.Converters
{
public class DapperTimeSpanConverter : SqlMapper.TypeHandler<TimeSpan>
{
public override void SetValue(IDbDataParameter parameter, TimeSpan value)
{
parameter.Value = value.ToString();
}
namespace NzbDrone.Core.Datastore.Converters;
public override TimeSpan Parse(object value)
{
return TimeSpan.Parse((string)value);
}
public class TimeSpanConverter : SqlMapper.TypeHandler<TimeSpan>
{
public override void SetValue(IDbDataParameter parameter, TimeSpan value)
{
parameter.Value = value.ToString();
}
public override TimeSpan Parse(object value)
{
return value is string str ? TimeSpan.Parse(str) : TimeSpan.Zero;
}
}

View File

@@ -2,7 +2,6 @@ using System;
using System.Data;
using System.Data.Common;
using System.Data.SQLite;
using System.Text.RegularExpressions;
using Dapper;
using NLog;
using NzbDrone.Common.Instrumentation;
@@ -52,9 +51,8 @@ namespace NzbDrone.Core.Datastore
{
using var db = _datamapperFactory();
var dbConnection = db as DbConnection;
var version = Regex.Replace(dbConnection.ServerVersion, @"\(.*?\)", "");
return new Version(version);
return DatabaseVersionParser.ParseServerVersion(dbConnection.ServerVersion);
}
}

View File

@@ -0,0 +1,16 @@
using System;
using System.Text.RegularExpressions;
namespace NzbDrone.Core.Datastore;
public static class DatabaseVersionParser
{
private static readonly Regex VersionRegex = new (@"^[^ ]+", RegexOptions.Compiled);
public static Version ParseServerVersion(string serverVersion)
{
var match = VersionRegex.Match(serverVersion);
return match.Success ? new Version(match.Value) : null;
}
}

View File

@@ -109,7 +109,6 @@ namespace NzbDrone.Core.Datastore
SqlMapper.RemoveTypeMap(typeof(DateTime));
SqlMapper.AddTypeHandler(new DapperUtcConverter());
SqlMapper.AddTypeHandler(new DapperTimeSpanConverter());
SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter<Dictionary<string, string>>());
SqlMapper.AddTypeHandler(new CookieConverter());
SqlMapper.AddTypeHandler(new EmbeddedDocumentConverter<List<int>>());
@@ -123,6 +122,9 @@ namespace NzbDrone.Core.Datastore
SqlMapper.RemoveTypeMap(typeof(Guid));
SqlMapper.RemoveTypeMap(typeof(Guid?));
SqlMapper.AddTypeHandler(new GuidConverter());
SqlMapper.RemoveTypeMap(typeof(TimeSpan));
SqlMapper.RemoveTypeMap(typeof(TimeSpan?));
SqlMapper.AddTypeHandler(new TimeSpanConverter());
SqlMapper.AddTypeHandler(new CommandConverter());
SqlMapper.AddTypeHandler(new SystemVersionConverter());
}

View File

@@ -25,8 +25,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

@@ -146,7 +146,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);
}
@@ -176,7 +176,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);
}
@@ -212,7 +212,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()
@@ -254,7 +254,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;
}
@@ -263,22 +263,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", category);
}
// 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

@@ -61,7 +61,7 @@ namespace NzbDrone.Core.Download
foreach (var client in clients)
{
if (blockedClients.TryGetValue(client.Definition.Id, out var downloadClientStatus))
if (blockedClients.TryGetValue(client.Definition.Id, out var downloadClientStatus) && downloadClientStatus.DisabledTill.HasValue)
{
_logger.Debug("Temporarily ignoring download client {0} till {1} due to recent failures.", client.Definition.Name, downloadClientStatus.DisabledTill.Value.ToLocalTime());
continue;

View File

@@ -14,7 +14,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
private readonly IHttpRequestBuilderFactory _cloudRequestBuilder;
private readonly Logger _logger;
public SystemTimeCheck(IHttpClient client, IProwlarrCloudRequestBuilder cloudRequestBuilder, ILocalizationService localizationService, Logger logger)
public SystemTimeCheck(IHttpClient client, IProwlarrCloudRequestBuilder cloudRequestBuilder, Logger logger, ILocalizationService localizationService)
: base(localizationService)
{
_client = client;
@@ -29,19 +29,26 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType());
}
var request = _cloudRequestBuilder.Create()
.Resource("/time")
.Build();
var response = _client.Execute(request);
var result = Json.Deserialize<ServiceTimeResponse>(response.Content);
var systemTime = DateTime.UtcNow;
// +/- more than 1 day
if (Math.Abs(result.DateTimeUtc.Subtract(systemTime).TotalDays) >= 1)
try
{
_logger.Error("System time mismatch. SystemTime: {0} Expected Time: {1}. Update system time", systemTime, result.DateTimeUtc);
return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("SystemTimeCheckMessage"));
var request = _cloudRequestBuilder.Create()
.Resource("/time")
.Build();
var response = _client.Execute(request);
var result = Json.Deserialize<ServiceTimeResponse>(response.Content);
var systemTime = DateTime.UtcNow;
// +/- more than 1 day
if (Math.Abs(result.DateTimeUtc.Subtract(systemTime).TotalDays) >= 1)
{
_logger.Error("System time mismatch. SystemTime: {0} Expected Time: {1}. Update system time", systemTime, result.DateTimeUtc);
return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("SystemTimeHealthCheckMessage"), "#system-time-off");
}
}
catch (Exception e)
{
_logger.Warn(e, "Unable to verify system time");
}
return new HealthCheck(GetType());

View File

@@ -93,7 +93,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (latestAvailable != null)
{
return new HealthCheck(GetType(),
HealthCheckResult.Warning,
BuildInfo.BuildDateTime.Before(DateTime.UtcNow.AddDays(-180)) ? HealthCheckResult.Error : HealthCheckResult.Warning,
_localizationService.GetLocalizedString("UpdateAvailableHealthCheckMessage", new Dictionary<string, object>
{
{ "version", $"v{latestAvailable.Version}" }

View File

@@ -326,8 +326,8 @@ namespace NzbDrone.Core.Indexers.Definitions
{
public BeyondHDSettingsValidator()
{
RuleFor(c => c.ApiKey).NotEmpty();
RuleFor(c => c.RssKey).NotEmpty();
RuleFor(c => c.ApiKey).NotEmpty().Length(32);
RuleFor(c => c.RssKey).NotEmpty().Length(32);
}
}

View File

@@ -77,7 +77,7 @@ public class FileListParser : IParseIndexerResponse
InfoUrl = GetInfoUrl(id),
Seeders = row.Seeders,
Peers = row.Leechers + row.Seeders,
PublishDate = DateTime.Parse(row.UploadDate + " +0300", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
PublishDate = DateTime.Parse(row.UploadDate + " +0200", CultureInfo.InvariantCulture, DateTimeStyles.AdjustToUniversal),
Description = row.SmallDescription,
Genres = row.SmallDescription.Split(',', StringSplitOptions.TrimEntries | StringSplitOptions.RemoveEmptyEntries).ToList(),
ImdbId = imdbId,

View File

@@ -189,7 +189,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var qc = new NameValueCollection();
foreach (var cat in Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories))
foreach (var cat in Capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories).Distinct())
{
qc.Add(cat, string.Empty);
}
@@ -203,10 +203,13 @@ namespace NzbDrone.Core.Indexers.Definitions
{
// ipt uses sphinx, which supports boolean operators and grouping
qc.Add("q", "+(" + imdbId + ")");
// search in description
qc.Add("qf", "all");
}
// changed from else if to if to support searching imdbid + season/episode in the same query
if (!string.IsNullOrWhiteSpace(term))
// changed from "else if" to "if" to support searching imdbid + season/episode in the same query
if (term.IsNotNullOrWhiteSpace())
{
// similar to above
qc.Add("q", "+(" + term + ")");

View File

@@ -80,7 +80,7 @@ namespace NzbDrone.Core.Indexers.Definitions
protected override bool CheckIfLoginNeeded(HttpResponse httpResponse)
{
return httpResponse.Content.Contains("You do not have permission to access this page.");
return !httpResponse.Content.Contains("logout.php");
}
private IndexerCapabilities SetCapabilities()

View File

@@ -0,0 +1,348 @@
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Text.Json.Serialization;
using System.Text.RegularExpressions;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Common.Http;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Indexers.Settings;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser.Model;
using static Newtonsoft.Json.Formatting;
namespace NzbDrone.Core.Indexers.Definitions
{
public class Knaben : TorrentIndexerBase<NoAuthTorrentBaseSettings>
{
public override string Name => "Knaben";
public override string[] IndexerUrls => new[] { "https://knaben.eu/" };
public override string Description => "Knaben is a Public torrent meta-search engine";
public override IndexerPrivacy Privacy => IndexerPrivacy.Public;
public override IndexerCapabilities Capabilities => SetCapabilities();
public Knaben(IIndexerHttpClient httpClient, IEventAggregator eventAggregator, IIndexerStatusService indexerStatusService, IConfigService configService, Logger logger)
: base(httpClient, eventAggregator, indexerStatusService, configService, logger)
{
}
public override IIndexerRequestGenerator GetRequestGenerator()
{
return new KnabenRequestGenerator(Capabilities);
}
public override IParseIndexerResponse GetParser()
{
return new KnabenParser(Capabilities.Categories);
}
private static IndexerCapabilities SetCapabilities()
{
var caps = new IndexerCapabilities
{
TvSearchParams = new List<TvSearchParam>
{
TvSearchParam.Q, TvSearchParam.Season, TvSearchParam.Ep
},
MovieSearchParams = new List<MovieSearchParam>
{
MovieSearchParam.Q
},
MusicSearchParams = new List<MusicSearchParam>
{
MusicSearchParam.Q
},
BookSearchParams = new List<BookSearchParam>
{
BookSearchParam.Q
}
};
caps.Categories.AddCategoryMapping(1000000, NewznabStandardCategory.Audio, "Audio");
caps.Categories.AddCategoryMapping(1001000, NewznabStandardCategory.AudioMP3, "MP3");
caps.Categories.AddCategoryMapping(1002000, NewznabStandardCategory.AudioLossless, "Lossless");
caps.Categories.AddCategoryMapping(1003000, NewznabStandardCategory.AudioAudiobook, "Audiobook");
caps.Categories.AddCategoryMapping(1004000, NewznabStandardCategory.AudioVideo, "Audio Video");
caps.Categories.AddCategoryMapping(1005000, NewznabStandardCategory.AudioOther, "Radio");
caps.Categories.AddCategoryMapping(1006000, NewznabStandardCategory.AudioOther, "Audio Other");
caps.Categories.AddCategoryMapping(2000000, NewznabStandardCategory.TV, "TV");
caps.Categories.AddCategoryMapping(2001000, NewznabStandardCategory.TVHD, "TV HD");
caps.Categories.AddCategoryMapping(2002000, NewznabStandardCategory.TVSD, "TV SD");
caps.Categories.AddCategoryMapping(2003000, NewznabStandardCategory.TVUHD, "TV UHD");
caps.Categories.AddCategoryMapping(2004000, NewznabStandardCategory.TVDocumentary, "Documentary");
caps.Categories.AddCategoryMapping(2005000, NewznabStandardCategory.TVForeign, "TV Foreign");
caps.Categories.AddCategoryMapping(2006000, NewznabStandardCategory.TVSport, "Sport");
caps.Categories.AddCategoryMapping(2007000, NewznabStandardCategory.TVOther, "Cartoon");
caps.Categories.AddCategoryMapping(2008000, NewznabStandardCategory.TVOther, "TV Other");
caps.Categories.AddCategoryMapping(3000000, NewznabStandardCategory.Movies, "Movies");
caps.Categories.AddCategoryMapping(3001000, NewznabStandardCategory.MoviesHD, "Movies HD");
caps.Categories.AddCategoryMapping(3002000, NewznabStandardCategory.MoviesSD, "Movies SD");
caps.Categories.AddCategoryMapping(3003000, NewznabStandardCategory.MoviesUHD, "Movies UHD");
caps.Categories.AddCategoryMapping(3004000, NewznabStandardCategory.MoviesDVD, "Movies DVD");
caps.Categories.AddCategoryMapping(3005000, NewznabStandardCategory.MoviesForeign, "Movies Foreign");
caps.Categories.AddCategoryMapping(3006000, NewznabStandardCategory.MoviesForeign, "Movies Bollywood");
caps.Categories.AddCategoryMapping(3007000, NewznabStandardCategory.Movies3D, "Movies 3D");
caps.Categories.AddCategoryMapping(3008000, NewznabStandardCategory.MoviesOther, "Movies Other");
caps.Categories.AddCategoryMapping(4000000, NewznabStandardCategory.PC, "PC");
caps.Categories.AddCategoryMapping(4001000, NewznabStandardCategory.PCGames, "Games");
caps.Categories.AddCategoryMapping(4002000, NewznabStandardCategory.PC0day, "Software");
caps.Categories.AddCategoryMapping(4003000, NewznabStandardCategory.PCMac, "Mac");
caps.Categories.AddCategoryMapping(4004000, NewznabStandardCategory.PCISO, "Unix");
caps.Categories.AddCategoryMapping(5000000, NewznabStandardCategory.XXX, "XXX");
caps.Categories.AddCategoryMapping(5001000, NewznabStandardCategory.XXXx264, "XXX Video");
caps.Categories.AddCategoryMapping(5002000, NewznabStandardCategory.XXXImageSet, "XXX ImageSet");
caps.Categories.AddCategoryMapping(5003000, NewznabStandardCategory.XXXOther, "XXX Games");
caps.Categories.AddCategoryMapping(5004000, NewznabStandardCategory.XXXOther, "XXX Hentai");
caps.Categories.AddCategoryMapping(5005000, NewznabStandardCategory.XXXOther, "XXX Other");
caps.Categories.AddCategoryMapping(6000000, NewznabStandardCategory.TVAnime, "Anime");
caps.Categories.AddCategoryMapping(6001000, NewznabStandardCategory.TVAnime, "Anime Subbed");
caps.Categories.AddCategoryMapping(6002000, NewznabStandardCategory.TVAnime, "Anime Dubbed");
caps.Categories.AddCategoryMapping(6003000, NewznabStandardCategory.TVAnime, "Anime Dual audio");
caps.Categories.AddCategoryMapping(6004000, NewznabStandardCategory.TVAnime, "Anime Raw");
caps.Categories.AddCategoryMapping(6005000, NewznabStandardCategory.AudioVideo, "Music Video");
caps.Categories.AddCategoryMapping(6006000, NewznabStandardCategory.BooksOther, "Literature");
caps.Categories.AddCategoryMapping(6007000, NewznabStandardCategory.AudioOther, "Music");
caps.Categories.AddCategoryMapping(6008000, NewznabStandardCategory.TVAnime, "Anime non-english translated");
caps.Categories.AddCategoryMapping(7000000, NewznabStandardCategory.Console, "Console");
caps.Categories.AddCategoryMapping(7001000, NewznabStandardCategory.ConsolePS4, "PS4");
caps.Categories.AddCategoryMapping(7002000, NewznabStandardCategory.ConsolePS3, "PS3");
caps.Categories.AddCategoryMapping(7003000, NewznabStandardCategory.ConsolePS3, "PS2");
caps.Categories.AddCategoryMapping(7004000, NewznabStandardCategory.ConsolePS3, "PS1");
caps.Categories.AddCategoryMapping(7005000, NewznabStandardCategory.ConsolePSVita, "PS Vita");
caps.Categories.AddCategoryMapping(7006000, NewznabStandardCategory.ConsolePSP, "PSP");
caps.Categories.AddCategoryMapping(7007000, NewznabStandardCategory.ConsoleXBox360, "Xbox 360");
caps.Categories.AddCategoryMapping(7008000, NewznabStandardCategory.ConsoleXBox, "Xbox");
caps.Categories.AddCategoryMapping(7009000, NewznabStandardCategory.ConsoleNDS, "Switch");
caps.Categories.AddCategoryMapping(7010000, NewznabStandardCategory.ConsoleNDS, "NDS");
caps.Categories.AddCategoryMapping(7011000, NewznabStandardCategory.ConsoleWii, "Wii");
caps.Categories.AddCategoryMapping(7012000, NewznabStandardCategory.ConsoleWiiU, "WiiU");
caps.Categories.AddCategoryMapping(7013000, NewznabStandardCategory.Console3DS, "3DS");
caps.Categories.AddCategoryMapping(7014000, NewznabStandardCategory.ConsoleWii, "GameCube");
caps.Categories.AddCategoryMapping(7015000, NewznabStandardCategory.ConsoleOther, "Other");
caps.Categories.AddCategoryMapping(8000000, NewznabStandardCategory.PCMobileOther, "Mobile");
caps.Categories.AddCategoryMapping(8001000, NewznabStandardCategory.PCMobileAndroid, "Android");
caps.Categories.AddCategoryMapping(8002000, NewznabStandardCategory.PCMobileiOS, "IOS");
caps.Categories.AddCategoryMapping(8003000, NewznabStandardCategory.PCMobileOther, "PC Other");
caps.Categories.AddCategoryMapping(9000000, NewznabStandardCategory.Books, "Books");
caps.Categories.AddCategoryMapping(9001000, NewznabStandardCategory.BooksEBook, "EBooks");
caps.Categories.AddCategoryMapping(9002000, NewznabStandardCategory.BooksComics, "Comics");
caps.Categories.AddCategoryMapping(9003000, NewznabStandardCategory.BooksMags, "Magazines");
caps.Categories.AddCategoryMapping(9004000, NewznabStandardCategory.BooksTechnical, "Technical");
caps.Categories.AddCategoryMapping(9005000, NewznabStandardCategory.BooksOther, "Books Other");
caps.Categories.AddCategoryMapping(10000000, NewznabStandardCategory.Other, "Other");
caps.Categories.AddCategoryMapping(10001000, NewznabStandardCategory.OtherMisc, "Other Misc");
return caps;
}
}
public class KnabenRequestGenerator : IIndexerRequestGenerator
{
private const string API_SEARCH_ENDPOINT = "https://api.knaben.eu/v1";
private readonly IndexerCapabilities _capabilities;
public KnabenRequestGenerator(IndexerCapabilities capabilities)
{
_capabilities = capabilities;
}
public IndexerPageableRequestChain GetSearchRequests(MovieSearchCriteria searchCriteria)
{
var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(CreateRequest(searchCriteria, searchCriteria.SanitizedSearchTerm));
return pageableRequests;
}
public IndexerPageableRequestChain GetSearchRequests(MusicSearchCriteria searchCriteria)
{
var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(CreateRequest(searchCriteria, searchCriteria.SanitizedSearchTerm));
return pageableRequests;
}
public IndexerPageableRequestChain GetSearchRequests(TvSearchCriteria searchCriteria)
{
var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(CreateRequest(searchCriteria, searchCriteria.SanitizedTvSearchString));
return pageableRequests;
}
public IndexerPageableRequestChain GetSearchRequests(BookSearchCriteria searchCriteria)
{
var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(CreateRequest(searchCriteria, searchCriteria.SanitizedSearchTerm));
return pageableRequests;
}
public IndexerPageableRequestChain GetSearchRequests(BasicSearchCriteria searchCriteria)
{
var pageableRequests = new IndexerPageableRequestChain();
pageableRequests.Add(CreateRequest(searchCriteria, searchCriteria.SanitizedSearchTerm));
return pageableRequests;
}
private IEnumerable<IndexerRequest> CreateRequest(SearchCriteriaBase searchCriteria, string searchTerm)
{
var body = new Dictionary<string, object>
{
{ "order_by", "date" },
{ "order_direction", "desc" },
{ "from", 0 },
{ "size", 100 },
{ "hide_unsafe", true }
};
var searchQuery = searchTerm.Trim();
if (searchQuery.IsNotNullOrWhiteSpace())
{
body.Add("search_type", "100%");
body.Add("search_field", "title");
body.Add("query", searchQuery);
}
var categories = _capabilities.Categories.MapTorznabCapsToTrackers(searchCriteria.Categories);
if (categories is { Count: > 0 })
{
body.Add("categories", categories.Select(int.Parse).Distinct().ToArray());
}
var request = new HttpRequest(API_SEARCH_ENDPOINT, HttpAccept.Json)
{
Headers =
{
ContentType = "application/json"
},
Method = HttpMethod.Post
};
request.SetContent(body.ToJson());
request.ContentSummary = body.ToJson(None);
yield return new IndexerRequest(request);
}
public Func<IDictionary<string, string>> GetCookies { get; set; }
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
}
public class KnabenParser : IParseIndexerResponse
{
private static readonly Regex DateTimezoneRegex = new (@"[+-]\d{2}:\d{2}$", RegexOptions.Compiled);
private readonly IndexerCapabilitiesCategories _categories;
public KnabenParser(IndexerCapabilitiesCategories categories)
{
_categories = categories;
}
public IList<ReleaseInfo> ParseResponse(IndexerResponse indexerResponse)
{
var indexerHttpResponse = indexerResponse.HttpResponse;
if (indexerHttpResponse.StatusCode != HttpStatusCode.OK)
{
throw new IndexerException(indexerResponse, $"Unexpected response status {indexerHttpResponse.StatusCode} code from indexer request");
}
if (!indexerHttpResponse.Headers.ContentType.Contains(HttpAccept.Json.Value))
{
throw new IndexerException(indexerResponse, $"Unexpected response header {indexerHttpResponse.Headers.ContentType} from indexer request, expected {HttpAccept.Json.Value}");
}
var releaseInfos = new List<ReleaseInfo>();
var jsonResponse = STJson.Deserialize<KnabenResponse>(indexerResponse.Content);
if (jsonResponse?.Hits == null)
{
return releaseInfos;
}
var rows = jsonResponse.Hits.Where(r => r.Seeders > 0).ToList();
foreach (var row in rows)
{
// Not all entries have the TZ in the "date" field
var publishDate = row.Date.IsNotNullOrWhiteSpace() && !DateTimezoneRegex.IsMatch(row.Date) ? $"{row.Date}+01:00" : row.Date;
var releaseInfo = new TorrentInfo
{
Guid = row.InfoUrl,
Title = row.Title,
InfoUrl = row.InfoUrl,
DownloadUrl = row.DownloadUrl.IsNotNullOrWhiteSpace() ? row.DownloadUrl : null,
MagnetUrl = row.MagnetUrl.IsNotNullOrWhiteSpace() ? row.MagnetUrl : null,
Categories = row.CategoryIds.SelectMany(cat => _categories.MapTrackerCatToNewznab(cat.ToString())).Distinct().ToList(),
InfoHash = row.InfoHash,
Size = row.Size,
Seeders = row.Seeders,
Peers = row.Leechers + row.Seeders,
PublishDate = DateTime.Parse(publishDate, CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal),
DownloadVolumeFactor = 0,
UploadVolumeFactor = 1
};
releaseInfos.Add(releaseInfo);
}
// order by date
return releaseInfos;
}
public Action<IDictionary<string, string>, DateTime?> CookiesUpdater { get; set; }
}
internal sealed class KnabenResponse
{
public IReadOnlyCollection<KnabenRelease> Hits { get; init; } = Array.Empty<KnabenRelease>();
}
internal sealed class KnabenRelease
{
public string Title { get; init; }
[JsonPropertyName("categoryId")]
public IReadOnlyCollection<int> CategoryIds { get; init; } = Array.Empty<int>();
[JsonPropertyName("hash")]
public string InfoHash { get; init; }
[JsonPropertyName("details")]
public string InfoUrl { get; init; }
[JsonPropertyName("link")]
public string DownloadUrl { get; init; }
public string MagnetUrl { get; init; }
[JsonPropertyName("bytes")]
public long Size { get; init; }
public int Seeders { get; init; }
[JsonPropertyName("peers")]
public int Leechers { get; init; }
public string Date { get; init; }
}
}

View File

@@ -19,7 +19,6 @@ using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.Indexers.Settings;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser;
using NzbDrone.Core.Parser.Model;
using NzbDrone.Core.Validation;
@@ -385,11 +384,6 @@ public class MTeamTpParser : IParseIndexerResponse
MinimumSeedTime = 172800 // 2 days
};
if (torrent.Imdb.IsNotNullOrWhiteSpace())
{
release.ImdbId = ParseUtil.GetImdbId(torrent.Imdb.TrimEnd('/').Split('/').LastOrDefault()).GetValueOrDefault();
}
if (torrent.Status?.CreatedDate != null &&
DateTime.TryParseExact($"{torrent.Status.CreatedDate} +08:00", "yyyy-MM-dd HH:mm:ss zzz", CultureInfo.InvariantCulture, DateTimeStyles.AssumeUniversal, out var publishDate))
{

View File

@@ -42,7 +42,8 @@ namespace NzbDrone.Core.Indexers.Newznab
RuleFor(c => c.VipExpiration).Must(c => c.IsFutureDate())
.When(c => c.VipExpiration.IsNotNullOrWhiteSpace())
.WithMessage("Must be a future date");
.WithMessage("Must be a future date")
.AsWarning();
}
}

View File

@@ -20,6 +20,7 @@ using NzbDrone.Core.Validation;
namespace NzbDrone.Core.Indexers.Definitions
{
[Obsolete("Site has removed API access.")]
public class NzbIndex : UsenetIndexerBase<NzbIndexSettings>
{
public override string Name => "NZBIndex";

View File

@@ -24,7 +24,8 @@ namespace NzbDrone.Core.Indexers.Definitions
public class Redacted : TorrentIndexerBase<RedactedSettings>
{
public override string Name => "Redacted";
public override string[] IndexerUrls => new[] { "https://redacted.ch/" };
public override string[] IndexerUrls => new[] { "https://redacted.sh/" };
public override string[] LegacyUrls => new[] { "https://redacted.ch/" };
public override string Description => "REDActed (Aka.PassTheHeadPhones) is one of the most well-known music trackers.";
public override IndexerPrivacy Privacy => IndexerPrivacy.Private;
public override IndexerCapabilities Capabilities => SetCapabilities();

View File

@@ -1,4 +1,6 @@
using System.Collections.Generic;
using System.Threading.Tasks;
using FluentValidation.Results;
using NLog;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Messaging.Events;
@@ -44,6 +46,13 @@ namespace NzbDrone.Core.Indexers.Definitions.TorrentRss
}
}
protected override Task<ValidationFailure> TestConnection()
{
UpdateCookies(null, null);
return base.TestConnection();
}
private IndexerDefinition GetDefinition(string name, string description, TorrentRssIndexerSettings settings)
{
return new IndexerDefinition

View File

@@ -650,7 +650,7 @@ namespace NzbDrone.Core.Indexers
{
foreach (var cookie in Cookies)
{
request.HttpRequest.Cookies.Add(cookie.Key, cookie.Value);
request.HttpRequest.Cookies[cookie.Key] = cookie.Value;
}
}
@@ -761,7 +761,7 @@ namespace NzbDrone.Core.Indexers
if (releases.Releases.Empty())
{
return new ValidationFailure(string.Empty, "Query successful, but no results were returned from your indexer. This may be an issue with the indexer, your indexer category settings, or other indexer settings such as search freeleech only etc.");
return new ValidationFailure(string.Empty, "Query successful, but no results were returned from your indexer. This may be an issue with the indexer, your indexer category settings, or other indexer settings such as search freeleech only etc. See the FAQ for details.");
}
}
catch (IndexerAuthException ex)

View File

@@ -242,7 +242,7 @@ namespace NzbDrone.Core.Indexers
foreach (var indexer in indexers)
{
if (blockedIndexers.TryGetValue(indexer.Definition.Id, out var blockedIndexerStatus))
if (blockedIndexers.TryGetValue(indexer.Definition.Id, out var blockedIndexerStatus) && blockedIndexerStatus.DisabledTill.HasValue)
{
_logger.Debug("Temporarily ignoring indexer {0} till {1} due to recent failures.", indexer.Definition.Name, blockedIndexerStatus.DisabledTill.Value.ToLocalTime());
continue;

View File

@@ -1,3 +1,4 @@
using System;
using System.Text;
using MonoTorrent;
using NLog;
@@ -22,10 +23,10 @@ namespace NzbDrone.Core.Indexers
{
Torrent.Load(fileData);
}
catch
catch (Exception ex)
{
_logger.Debug("Invalid torrent file contents: {0}", Encoding.ASCII.GetString(fileData));
throw;
throw new NotSupportedException($"Invalid torrent file contents. Reason: {ex.Message}", ex);
}
}
}

View File

@@ -59,7 +59,7 @@
"SelectAll": "اختر الكل",
"SendAnonymousUsageData": "إرسال بيانات الاستخدام المجهولة",
"Style": "أسلوب",
"SystemTimeCheckMessage": "توقف وقت النظام بأكثر من يوم واحد. قد لا تعمل المهام المجدولة بشكل صحيح حتى يتم تصحيح الوقت",
"SystemTimeHealthCheckMessage": "توقف وقت النظام بأكثر من يوم واحد. قد لا تعمل المهام المجدولة بشكل صحيح حتى يتم تصحيح الوقت",
"TableOptionsColumnsMessage": "اختر الأعمدة المرئية والترتيب الذي تظهر به",
"TagCannotBeDeletedWhileInUse": "لا يمكن حذفه أثناء الاستخدام",
"Tasks": "مهام",
@@ -370,5 +370,10 @@
"ErrorRestoringBackup": "خطأ في استعادة النسخة الاحتياطية",
"ExternalUpdater": "تم تكوين {appName} لاستخدام آلية تحديث خارجية",
"InstallLatest": "تثبيت الأحدث",
"AptUpdater": "استخدم apt لتثبيت التحديث"
"AptUpdater": "استخدم apt لتثبيت التحديث",
"Clone": "قريب",
"Stats": "الحالة",
"CurrentlyInstalled": "مثبتة حاليا",
"Season": "السبب",
"Mixed": "ثابت"
}

View File

@@ -90,7 +90,7 @@
"SSLPort": "SSL порт",
"Status": "Състояние",
"System": "Система",
"SystemTimeCheckMessage": "Системното време е изключено с повече от 1 ден. Планираните задачи може да не се изпълняват правилно, докато времето не бъде коригирано",
"SystemTimeHealthCheckMessage": "Системното време е изключено с повече от 1 ден. Планираните задачи може да не се изпълняват правилно, докато времето не бъде коригирано",
"TestAll": "Тествайте всички",
"Title": "Заглавие",
"Today": "Днес",
@@ -370,5 +370,11 @@
"RestartReloadNote": "Забележка: {appName} автоматично ще рестартира и презареди потребителския интерфейс по време на процеса на възстановяване.",
"UpdateAppDirectlyLoadError": "Не може да се актуализира {appName} директно,",
"AptUpdater": "Използвайте apt, за да инсталирате актуализацията",
"InstallLatest": "Инсталирайте най-новите"
"InstallLatest": "Инсталирайте най-новите",
"Clone": "Близо",
"ActiveApps": "Активни приложения",
"ActiveIndexers": "Активни индиксатори",
"AddApplication": "добави приложение",
"Season": "Причина",
"CurrentlyInstalled": "Понастоящем инсталиран"
}

View File

@@ -136,7 +136,7 @@
"Priority": "Prioritat",
"SendAnonymousUsageData": "Envia dades d'ús anònimes",
"SetTags": "Estableix etiquetes",
"SystemTimeCheckMessage": "L'hora del sistema està apagada durant més d'1 dia. És possible que les tasques programades no s'executin correctament fins que no es corregeixi l'hora",
"SystemTimeHealthCheckMessage": "L'hora del sistema està apagada durant més d'1 dia. És possible que les tasques programades no s'executin correctament fins que no es corregeixi l'hora",
"TableOptions": "Opcions de taula",
"TableOptionsColumnsMessage": "Trieu quines columnes són visibles i en quin ordre apareixen",
"Columns": "Columnes",
@@ -499,5 +499,6 @@
"TheLogLevelDefault": "El nivell de registre per defecte és \"Info\" i es pot canviar a [Configuració general](/configuració/general)",
"UpdateAppDirectlyLoadError": "No es pot actualitzar {appName} directament,",
"WouldYouLikeToRestoreBackup": "Voleu restaurar la còpia de seguretat '{name}'?",
"InstallLatest": "Instal·la l'últim"
"InstallLatest": "Instal·la l'últim",
"CurrentlyInstalled": "Instal·lat actualment"
}

View File

@@ -221,7 +221,7 @@
"Restore": "Obnovit",
"SettingsShowRelativeDates": "Zobrazit relativní data",
"SettingsShowRelativeDatesHelpText": "Zobrazit relativní (dnes / včera / atd.) Nebo absolutní data",
"SystemTimeCheckMessage": "Systémový čas je vypnutý o více než 1 den. Naplánované úlohy nemusí fungovat správně, dokud nebude čas opraven",
"SystemTimeHealthCheckMessage": "Systémový čas je vypnutý o více než 1 den. Naplánované úlohy nemusí fungovat správně, dokud nebude čas opraven",
"AddingTag": "Přidání značky",
"Age": "Stáří",
"All": "Vše",
@@ -433,5 +433,8 @@
"RestartReloadNote": "Poznámka: {appName} se během procesu obnovy automaticky restartuje a znovu načte uživatelské rozhraní.",
"UpdateAppDirectlyLoadError": "{appName} nelze aktualizovat přímo,",
"AptUpdater": "K instalaci aktualizace použijte apt",
"InstallLatest": "Nainstalujte nejnovější"
"InstallLatest": "Nainstalujte nejnovější",
"Stats": "Postavení",
"CurrentlyInstalled": "Aktuálně nainstalováno",
"Mixed": "Pevný"
}

View File

@@ -33,7 +33,7 @@
"CustomFilters": "Bruger Tilpassede Filtere",
"ConnectSettingsSummary": "Notifikationer, forbindelser til medieservere/-afspillere og brugerdefinerede scripts",
"Connections": "Forbindelser",
"ConnectionLost": "Forbindelse Mistet",
"ConnectionLost": "Forbindelse mistet",
"Connect": "Notifikationer",
"Component": "Komponent",
"Columns": "Kolonner",
@@ -57,7 +57,7 @@
"MIA": "MIA",
"ResetAPIKey": "Nulstil API-nøgle",
"SettingsTimeFormat": "Tidsformat",
"SystemTimeCheckMessage": "Systemtiden er slukket mere end 1 dag. Planlagte opgaver kører muligvis ikke korrekt, før tiden er rettet",
"SystemTimeHealthCheckMessage": "Systemtiden er slukket mere end 1 dag. Planlagte opgaver kører muligvis ikke korrekt, før tiden er rettet",
"UnsavedChanges": "Ugemte ændringer",
"Updates": "Opdateringer",
"MoreInfo": "Mere info",
@@ -101,12 +101,12 @@
"CloseCurrentModal": "Luk Nuværende Modal",
"CouldNotConnectSignalR": "Kunne ikke oprette forbindelse til SignalR, UI opdateres ikke",
"DeleteApplicationMessageText": "Er du sikker på, at du vil slette underretningen '{0}'?",
"DeleteDownloadClientMessageText": "Er du sikker på, at du vil slette downloadklienten '{0}'?",
"DeleteDownloadClientMessageText": "Er du sikker på, at du vil fjerne downloadklienten »{name}«?",
"DeleteIndexerProxyMessageText": "Er du sikker på, at du vil slette tagget '{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}«?",
"DeleteTag": "Slet tag",
"DeleteTagMessageText": "Er du sikker på, at du vil slette tagget '{0}'?",
"DeleteTagMessageText": "Er du sikker på, at du vil slette etiketten »{label}«?",
"Discord": "Discord",
"Docker": "Docker",
"Donations": "Donationer",
@@ -266,7 +266,7 @@
"Status": "Status",
"DownloadClientsLoadError": "Kunne ikke indlæse downloadklienter",
"UpdateStartupTranslocationHealthCheckMessage": "Kan ikke installere opdatering, fordi startmappen '{startupFolder}' er i en App Translocation-mappe.",
"UpdateMechanismHelpText": "Brug den indbyggede opdateringsfunktion eller et script",
"UpdateMechanismHelpText": "Brug {appName}s indbyggede opdateringsfunktion eller et script",
"View": "Udsigt",
"Warn": "Advare",
"AddingTag": "Tilføjer tag",
@@ -302,12 +302,12 @@
"InteractiveSearch": "Interaktiv søgning",
"LogFiles": "Logfiler",
"ApiKey": "API-nøgle",
"AppDataDirectory": "AppData-bibliotek",
"AppDataDirectory": "AppData-mappe",
"CertificateValidationHelpText": "Skift, hvor streng HTTPS-certificering er",
"ChangeHasNotBeenSavedYet": "Ændring er endnu ikke gemt",
"ConnectSettings": "Forbind indstillinger",
"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}«?",
"DeleteDownloadClient": "Slet Download Client",
"MaintenanceRelease": "Vedligeholdelsesfrigivelse: fejlrettelser og andre forbedringer. Se Github Commit History for flere detaljer",
"Filters": "Filter",
@@ -360,7 +360,7 @@
"DeleteAppProfileMessageText": "Er du sikker på, at du vil slette kvalitetsprofilen {0}",
"RecentChanges": "Seneste ændringer",
"WhatsNew": "Hvad er nyt?",
"ConnectionLostReconnect": "Radarr vil prøve at tilslutte automatisk, eller du kan klikke genindlæs forneden.",
"ConnectionLostReconnect": "{appName} vil prøve at tilslutte automatisk. Ellers du kan klikke genindlæs forneden.",
"minutes": "Protokoller",
"NotificationStatusAllClientHealthCheckMessage": "Alle lister er utilgængelige på grund af fejl",
"NotificationStatusSingleClientHealthCheckMessage": "Lister utilgængelige på grund af fejl: {notificationNames}",
@@ -375,7 +375,7 @@
"AddConnection": "Tilføj forbindelse",
"EditConnectionImplementation": "Tilføj forbindelse - {implementationName}",
"AddApplicationImplementation": "Tilføj forbindelse - {implementationName}",
"AddIndexerImplementation": "Tilføj betingelse - {implementationName}",
"AddIndexerImplementation": "Tilføj indeksør - {implementationName}",
"ApplyChanges": "Anvend ændringer",
"AddDownloadClientImplementation": "Tilføj downloadklient - {implementationName}",
"Album": "album",
@@ -394,7 +394,7 @@
"IndexerHDBitsSettingsMediums": "Medium",
"CustomFilter": "Bruger Tilpassede Filtere",
"ProxyValidationBadRequest": "Kunne ikke teste proxy. Statuskode: {statusCode}",
"GrabRelease": "Grab Release",
"GrabRelease": "Hent udgivelse",
"Script": "Manuskript",
"BuiltIn": "Indbygget",
"PublishedDate": "Udgivelsesdato",
@@ -410,5 +410,19 @@
"ExternalUpdater": "{appName} er konfigureret til at bruge en ekstern opdateringsmekanisme",
"RestartReloadNote": "Bemærk: {appName} genstarter automatisk og genindlæser brugergrænsefladen under gendannelsesprocessen.",
"UpdateAppDirectlyLoadError": "Kan ikke opdatere {appName} direkte,",
"InstallLatest": "Installer senest"
"InstallLatest": "Installer senest",
"Clone": "Luk",
"CurrentlyInstalled": "Aktuelt installeret",
"Stats": "Status",
"Mixed": "Fast",
"PrioritySettings": "Prioritet: {priority}",
"WouldYouLikeToRestoreBackup": "Vil du gendanne sikkerhedskopien »{name}«?",
"AppProfileSelectHelpText": "App-profiler bruges til at styre indstillinger for RSS, automatisk søgning og interaktiv søgning ved synkronisering med applikationer",
"ActiveIndexers": "Aktive indeksører",
"TheLogLevelDefault": "Logniveauet er som standard 'Info' og kan ændres under [Generelle indstillinger](/settings/general)",
"AddedToDownloadClient": "Udgivelse føjet til klient",
"AdvancedSettingsHiddenClickToShow": "Avancerede indstillinger er skjult. Klik for at vise",
"AdvancedSettingsShownClickToHide": "Avancerede indstillinger vises. Klik for at skjule",
"ApiKeyValidationHealthCheckMessage": "Opdater din API-nøgle til at være på mindste {length} karakterer. Dette kan gøres i indstillingerne eller i konfigurationsfilen",
"AppProfileInUse": "App-profil i brug"
}

View File

@@ -109,7 +109,7 @@
"DownloadClientSettings": "Downloader Einstellungen",
"DownloadClientStatusAllClientHealthCheckMessage": "Alle Download Clients sind aufgrund von Fehlern nicht verfügbar",
"DownloadClientStatusSingleClientHealthCheckMessage": "Download Clients aufgrund von Fehlern nicht verfügbar: {downloadClientNames}",
"DownloadClients": "Downloader",
"DownloadClients": "Download Clients",
"DownloadClientsSettingsSummary": "Download der Client-Konfigurationen für die Integration in die {appName} UI-Suche",
"Duration": "Dauer",
"Edit": "Bearbeiten",
@@ -118,10 +118,10 @@
"ElapsedTime": "Vergangene Zeit",
"Enable": "Aktivieren",
"EnableAutomaticSearch": "Automatische Suche einschalten",
"EnableAutomaticSearchHelpText": "Wird für automatische Suchen genutzt die vom Benutzer oder von {appName} gestartet werden",
"EnableAutomaticSearchHelpText": "Wird verwendet, wenn die automatische Suche über die Benutzeroberfläche oder durch {appName} durchgeführt wird.",
"EnableIndexer": "Indexer aktivieren",
"EnableInteractiveSearch": "Interaktive Suche einschalten",
"EnableInteractiveSearchHelpText": "Wird bei der manuellen Suche benutzt",
"EnableInteractiveSearchHelpText": "Wird verwendet, wenn die interaktive Suche verwendet wird",
"EnableRss": "RSS aktivieren",
"EnableRssHelpText": "RSS-Feed für Indexer aktivieren",
"EnableSSL": "SSL",
@@ -131,13 +131,13 @@
"Encoding": "Codierung",
"Ended": "Beendet",
"Error": "Fehler",
"ErrorLoadingContents": "Fehler beim laden der Inhalte",
"EventType": "Event Typ",
"Events": "Events",
"ErrorLoadingContents": "Fehler beim Laden von Inhalten",
"EventType": "Ereignistyp",
"Events": "Ereignisse",
"Exception": "Ausnahme",
"ExistingTag": "Vorhandener Tag",
"Failed": "Fehlgeschlagen",
"FeatureRequests": "Funktionsanfragen",
"FeatureRequests": "Feature Anfragen",
"Filename": "Dateiname",
"Files": "Dateien",
"Filter": "Filter",
@@ -153,16 +153,16 @@
"GeneralSettingsSummary": "Port, SSL, Benutzername/Passwort, Proxy, Analytik und Updates",
"GrabReleases": "Release erfassen",
"GrabTitle": "Titel holen",
"Grabbed": "Erfasste",
"Grabbed": "Geholt",
"Grabs": "Erfasse",
"Health": "Zustandsüberwachung",
"Health": "Gesundheit",
"NoIssuesWithYourConfiguration": "Keine Probleme mit deiner Konfiguration",
"HideAdvanced": "Erweiterte Ansicht",
"HideAdvanced": "Erweiterte Einstellungen ausblenden",
"History": "Verlauf",
"HistoryCleanup": "Verlaufsbereinigung",
"HistoryCleanupDaysHelpText": "Auf 0 setzen um das automatische leeren des Papierkorbs zu deaktivieren",
"HistoryCleanupDaysHelpTextWarning": "Datien im Papierkorb die älter sind als der gewählte Wert, werden endgültig gelöscht",
"HomePage": "Startseite",
"HomePage": "Hauptseite",
"Host": "Host",
"Hostname": "Hostname",
"Id": "Id",
@@ -176,12 +176,12 @@
"IndexerFlags": "Indexer-Flags",
"IndexerHealthCheckNoIndexers": "Keine Indexer aktiviert, {appName} wird keine Suchergebnisse zurückgeben",
"IndexerInfo": "Indexer-Info",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind wegen über 6 Stunden langen bestehender Fehler nicht verfügbar",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexer wegen über 6 Stunden langen bestehenden Fehlern nicht verfügbar: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind aufgrund von Fehlern länger als 6 Stunden nicht verfügbar",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexer sind aufgrund von Fehlern länger als 6 Stunden nicht verfügbar: {indexerNames}",
"IndexerName": "Indexer-Name",
"IndexerNoDefinitionCheckHealthCheckMessage": "Indexer haben keine Definition und werden nicht funktionieren: {0}. Bitte entferne und (oder) füge diese neu zu {appName} hinzu",
"IndexerNoDefinitionCheckHealthCheckMessage": "Indexer haben keine Definition und werden nicht funktionieren: {indexerNames}. Bitte entferne und (oder) füge diese neu zu {appName} hinzu",
"IndexerObsoleteCheckMessage": "Indexer sind nicht mehr verfügbar oder wurden aktualiiert: {0}. Bitte enfernen und (oder) neu zu {appName} hinzufügen",
"IndexerPriority": "Priorität",
"IndexerPriority": "Indexer-Priorität",
"IndexerPriorityHelpText": "Indexer Priorität von 1 (höchste) bis 50 (niedrigste). Standard: 25.",
"IndexerProxies": "Indexer-Proxies",
"IndexerProxy": "Indexer-Proxy",
@@ -192,27 +192,27 @@
"IndexerSettingsSummary": "Konfiguration verschiedener globaler Indexer Einstellungen, einschließlich Proxies.",
"IndexerSite": "Indexer-Seite",
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind aufgrund von Fehlern nicht verfügbar",
"IndexerStatusUnavailableHealthCheckMessage": "Indexer aufgrund von Fehlern nicht verfügbar: {indexerNames}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexer nicht verfügbar aufgrund von Fehlern: {indexerNames}",
"IndexerTagsHelpText": "Benutze Tags, um Indexer-Proxies zu spezifizieren, mit welchen Apps der Indexer synchronisiert oder um Indexer zu organisieren.",
"IndexerVipExpiredHealthCheckMessage": "Die VIP Indexer Vorteile sind abgelaufen: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Die Indexer VIP Vorteile verfallen bald: {indexerNames}",
"Indexers": "Indexer",
"Info": "Info",
"InstanceName": "Instanzname",
"InstanceNameHelpText": "Instanzname im Browser-Tab und für Syslog-Anwendungsname",
"InstanceNameHelpText": "Instanzname im Tab und für den Syslog-App-Namen",
"InteractiveSearch": "Interaktive Suche",
"Interval": "Intervall",
"KeyboardShortcuts": "Tastenkürzel",
"Language": "Sprache",
"LastDuration": "Letzte Dauer",
"LastExecution": "Letzte Ausführung",
"LastWriteTime": "Zuletzt beschrieben",
"LastWriteTime": "Letzte Schreibzeit",
"LaunchBrowserHelpText": " Öffne die Startseite von {appName} im Webbrowser nach dem Start.",
"Level": "Stufe",
"Level": "Level",
"Link": "Links",
"LogFiles": "Protokolle",
"LogLevel": "Log Level",
"LogLevelTraceHelpTextWarning": "Trace logging sollte nur kurzzeitig aktiviert werden",
"LogFiles": "Protokolldateien",
"LogLevel": "Protokollstufe",
"LogLevelTraceHelpTextWarning": "Die Trace-Protokollierung sollte nur vorübergehend aktiviert werden",
"Logging": "Protokollierung",
"Logs": "Protokolle",
"MIA": "MIA",
@@ -220,7 +220,7 @@
"Manual": "Manuell",
"MappedDrivesRunningAsService": "Zugeordnete Netzlaufwerke sind nicht verfügbar, wenn {appName} als Windows-Dienst ausgeführt wird. Bitte lesen Sie die FAQ für weitere Informationen",
"MassEditor": "Masseneditor",
"Mechanism": "Verfahren",
"Mechanism": "Mechanismus",
"Message": "Nachricht",
"MinimumSeeders": "Mindest-Seeder",
"MinimumSeedersHelpText": "Minimale Anzahl an Seedern die von der Anwendung benötigt werden um den Indexer zu holen",
@@ -236,41 +236,41 @@
"New": "Neu",
"NextExecution": "Nächste Ausführung",
"No": "Nein",
"NoBackupsAreAvailable": "Es sind keine Backups vorhanden",
"NoBackupsAreAvailable": "Keine Sicherungen verfügbar",
"NoChange": "Keine Änderung",
"NoChanges": "Keine Änderungen",
"NoLeaveIt": "Nein, nicht ändern",
"NoLeaveIt": "Nein, lass es",
"NoLinks": "Keine Links",
"NoLogFiles": "Keine Log-Dateien",
"NoLogFiles": "Keine Logdateien",
"NoSearchResultsFound": "Keine Suchergebnisse gefunden. Versuchen Sie unten eine erneute Suche durchzuführen.",
"NoTagsHaveBeenAddedYet": "Es wurden noch keine Tags erstellt",
"NoTagsHaveBeenAddedYet": "Es wurden noch keine Tags hinzugefügt",
"NoUpdatesAreAvailable": "Es sind keine Updates verfügbar",
"NotSupported": "Nicht unterstützt",
"Notification": "Benachrichtigungen",
"NotificationTriggers": "Benachrichtigungs Auslöser",
"NotificationTriggersHelpText": "Auslöser für diese Benachrichtigung auswählen",
"NotificationTriggers": "Benachrichtigungs-Auslöser",
"NotificationTriggersHelpText": "Wähle aus, welche Ereignisse diese Benachrichtigung auslösen sollen",
"Notifications": "Benachrichtigungen",
"OAuthPopupMessage": "Dein Browser blockiert Pop-ups",
"Ok": "OK",
"Ok": "Ok",
"OnApplicationUpdate": "Bei Anwendungsaktualisierung",
"OnApplicationUpdateHelpText": "Bei Anwendungsaktualisierung",
"OnGrab": "Bei Erfassung",
"OnHealthIssue": "Bei Zustandsproblem",
"OnHealthIssue": "Bei Gesundheitsproblem",
"OnHealthIssueHelpText": "Zustandsproblem",
"OpenBrowserOnStart": "Browser beim Start öffnen",
"OpenThisModal": "Dieses Modal öffnen",
"Options": "Optionen",
"PackageVersion": "Paket Version",
"PackageVersion": "Paketversion",
"PageSize": "Einträge pro Seite",
"PageSizeHelpText": "Anzahl der Einträge pro Seite",
"Parameters": "Parameter",
"Password": "Passwort",
"Peers": "Peers",
"PendingChangesDiscardChanges": "Änderungen verwerfen und schließen",
"PendingChangesMessage": "Es gibt noch ungespeicherte Änderungen, bist du sicher, dass du die Seite verlassen möchtest?",
"PendingChangesStayReview": "Auf der Seite bleiben",
"PendingChangesDiscardChanges": "Änderungen verwerfen und verlassen",
"PendingChangesMessage": "Du hast ungespeicherte Änderungen, bist du sicher, dass du diese Seite verlassen möchtest?",
"PendingChangesStayReview": "Bleiben und Änderungen überprüfen",
"Port": "Port",
"PortNumber": "Port Nummer",
"PortNumber": "Portnummer",
"Presets": "Voreinstellungen",
"Priority": "Priorität",
"Privacy": "Privatsphäre",
@@ -294,7 +294,7 @@
"Queue": "Warteschlange",
"Queued": "In Warteschlange",
"Rss": "RSS",
"RssIsNotSupportedWithThisIndexer": "RSS wird von diesem Indexer nicht unterstützt",
"RssIsNotSupportedWithThisIndexer": "RSS wird mit diesem Indexer nicht unterstützt",
"RawSearchSupported": "Raw-Suche unterstützt",
"ReadTheWikiForMoreInformation": "Lesen Sie das Wiki für weitere Informationen",
"Reddit": "Reddit",
@@ -304,7 +304,7 @@
"RefreshMovie": "Film aktualisieren",
"ReleaseBranchCheckOfficialBranchMessage": "Zweig {0} ist kein gültiger {appName}-Release-Zweig. Sie erhalten keine Updates",
"ReleaseStatus": "Releasestatus",
"Reload": "Neuladen",
"Reload": "Neu laden",
"Remove": "Entfernen",
"RemoveFilter": "Filter entfernen",
"RemovedFromTaskQueue": "Aus der Aufgabenwarteschlange entfernt",
@@ -319,7 +319,7 @@
"Restore": "Wiederherstellen",
"RestoreBackup": "Sicherung wiederherstellen",
"Result": "Ergebnis",
"Retention": "Aufbewahrung ( Retention )",
"Retention": "Aufbewahrung",
"SSLCertPassword": "SSL Zertifikat Passwort",
"SSLCertPasswordHelpText": "Passwort für die PFX Datei",
"SSLCertPath": "Pfad zum SSL Zertifikat",
@@ -329,8 +329,8 @@
"SaveChanges": "Änderungen speichern",
"SaveSettings": "Einstellungen speichern",
"Scheduled": "Geplant",
"ScriptPath": "Script Pfad",
"Search": "Suche",
"ScriptPath": "Skript-Pfad",
"Search": "Suchen",
"SearchCapabilities": "Suchfähigkeiten",
"SearchIndexers": "Indexer suchen",
"SearchType": "Suchtyp",
@@ -360,7 +360,7 @@
"SettingsTimeFormat": "Zeitformat",
"ShowAdvanced": "Erweitert anzeigen",
"ShowSearch": "Suche anzeigen",
"ShowSearchHelpText": "Suchbutton anzeigen beim draufzeigen",
"ShowSearchHelpText": "Suchschaltfläche beim Überfahren anzeigen",
"Shutdown": "Herunterfahren",
"Size": "Größe",
"Sort": "Sortieren",
@@ -379,12 +379,12 @@
"SyncProfile": "Sync-Profile",
"SyncProfiles": "Sync-Profile",
"System": "System",
"SystemTimeCheckMessage": "Die Systemzeit ist um einen Tag versetzt. Bis die Zeit korrigiert wurde, könnten die geplanten Aufgaben nicht korrekt ausgeführt werden",
"SystemTimeHealthCheckMessage": "Die Systemzeit ist um einen Tag versetzt. Bis die Zeit korrigiert wurde, könnten die geplanten Aufgaben nicht korrekt ausgeführt werden",
"TVSearchTypes": "Suchtyp",
"TableOptions": "Tabellen Optionen",
"TableOptions": "Tabellenoptionen",
"TableOptionsColumnsMessage": "Wähle aus welche Spalten angezeigt werden und in welcher Reihenfolge",
"TagCannotBeDeletedWhileInUse": "Kann während der Benutzung nicht gelöscht werden",
"TagIsNotUsedAndCanBeDeleted": "Tag wird nicht benutzt und kann gelöscht werden",
"TagIsNotUsedAndCanBeDeleted": "Tag wird nicht verwendet und kann gelöscht werden",
"Tags": "Tags",
"TagsHelpText": "Wird auf Filme mit mindestens einem passenden Tag angewandt",
"TagsSettingsSummary": "Sehen Sie sich alle Tags und deren Verwendung an. Nicht verwendete Tags können entfernt werden",
@@ -394,7 +394,7 @@
"TestAllApps": "Alle Apps testen",
"TestAllClients": "Prüfe alle Clients",
"TestAllIndexers": "Prüfe alle Indexer",
"OnLatestVersion": "Die aktuellste Version ist bereits installiert",
"OnLatestVersion": "Die neueste Version von {appName} ist bereits installiert",
"ThemeHelpText": "Ändere das UI-Theme der Anwendung. Das 'Auto'-Theme verwendet dein Betriebssystem-Theme, um den hellen oder dunklen Modus einzustellen. Inspiriert von {0}",
"Time": "Zeit",
"Title": "Titel",
@@ -421,7 +421,7 @@
"ApplicationsLoadError": "Anwendungsliste kann nicht geladen werden",
"BackupsLoadError": "Sicherungen können nicht geladen werden",
"UnableToLoadDevelopmentSettings": "Entwicklereinstellungen konnten nicht geladen werden",
"DownloadClientsLoadError": "Downloader konnten nicht geladen werden",
"DownloadClientsLoadError": "Download Clients können nicht geladen werden",
"UnableToLoadGeneralSettings": "Allgemeine Einstellungen konnten nicht geladen werden",
"UnableToLoadHistory": "Verlauf konnte nicht geladen werden",
"UnableToLoadIndexerProxies": "Indexer-Proxies können nicht geladen werden",
@@ -454,7 +454,7 @@
"YesCancel": "Ja Abbrechen",
"Yesterday": "Gestern",
"OnHealthRestoredHelpText": "Bei Wiederherstellung des Zustands",
"OnHealthRestored": "Bei Wiederherstellung des Zustands",
"OnHealthRestored": "Bei Wiederherstellung der Gesundheit",
"StopSelecting": "Auswahl stoppen",
"ApplicationURL": "Anwendungs-URL",
"ApplicationUrlHelpText": "Die externe URL dieser Anwendung, einschließlich http(s)://, Port und URL-Basis",
@@ -485,7 +485,7 @@
"More": "Mehr",
"Publisher": "Herausgeber",
"Track": "Trace",
"UpdateAvailableHealthCheckMessage": "Neue Version verfügbar",
"UpdateAvailableHealthCheckMessage": "Ein neues Update ist verfügbar: {version}",
"Year": "Jahr",
"Album": "Album",
"Artist": "Interpret",
@@ -498,8 +498,8 @@
"minutes": "Minuten",
"DeleteAppProfileMessageText": "Qualitätsprofil '{0}' wirklich löschen?",
"AddConnection": "Verbindung hinzufügen",
"NotificationStatusAllClientHealthCheckMessage": "Wegen Fehlern sind keine Applikationen verfügbar",
"NotificationStatusSingleClientHealthCheckMessage": "Applikationen wegen folgender Fehler nicht verfügbar: {notificationNames}",
"NotificationStatusAllClientHealthCheckMessage": "Alle Benachrichtigungen sind aufgrund von Fehlern nicht verfügbar",
"NotificationStatusSingleClientHealthCheckMessage": "Benachrichtigungen nicht verfügbar wegen Fehlern: {notificationNames}",
"AuthBasic": "Basis (Browser-Popup)",
"AuthForm": "Formulare (Anmeldeseite)",
"DisabledForLocalAddresses": "Für lokale Adressen deaktiviert",
@@ -529,18 +529,18 @@
"AuthenticationRequiredWarning": "Um unberechtigte Fernzugriffe zu vermeiden benötigt {appName} jetzt , dass Authentifizierung eingeschaltet ist. Du kannst Authentifizierung optional für lokale Adressen ausschalten.",
"AuthenticationRequired": "Authentifizierung benötigt",
"AuthenticationRequiredHelpText": "Ändern, welche anfragen Authentifizierung benötigen. Ändere nichts wenn du dir nicht des Risikos bewusst bist.",
"AuthenticationRequiredUsernameHelpTextWarning": "Gib einen neuen Benutzernamen ein",
"AuthenticationRequiredUsernameHelpTextWarning": "Neuen Benutzernamen eingeben",
"AuthenticationMethodHelpTextWarning": "Bitte wähle eine gültige Authentifizierungsmethode aus",
"AuthenticationRequiredPasswordHelpTextWarning": "Gib ein neues Passwort ein",
"AuthenticationRequiredPasswordHelpTextWarning": "Neues Passwort eingeben",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Neues Passwort bestätigen",
"DefaultNameCopiedProfile": "{name} Kopieren",
"AuthenticationMethod": "Authentifizierungsmethode",
"Clone": "Klonen",
"CountDownloadClientsSelected": "{count} Download-Client(s) ausgewählt",
"EditConnectionImplementation": "Verbindung hinzufügen - {implementationName}",
"EditDownloadClientImplementation": "Download-Client hinzufügen - {implementationName}",
"EditConnectionImplementation": "Verbindung bearbeiten - {implementationName}",
"EditDownloadClientImplementation": "Download Client bearbeiten - {implementationName}",
"IndexerTagsHelpTextWarning": "Tags sollten mit Vorsicht verwendet werden, da sie ungewollte Effekte haben können. Eine Anwendung mit einem Tag synchronisiert nur Indexer die den Gleichen Tag haben.",
"EditIndexerImplementation": "Indexer hinzufügen - {implementationName}",
"EditIndexerImplementation": "Indexer bearbeiten - {implementationName}",
"EditApplicationImplementation": "Anwendung hinzufügen - {implementationName}",
"EditIndexerProxyImplementation": "Indexer Proxy hinzufügen - {implementationName}",
"CountApplicationsSelected": "{count} Ausgewählte Sammlung(en)",
@@ -563,14 +563,14 @@
"IndexerBeyondHDSettingsSearchTypes": "Suchtyp",
"DownloadClientFloodSettingsUrlBaseHelpText": "Fügt der Flood-API ein Präfix hinzu, z. B. {url}",
"DownloadClientFreeboxSettingsApiUrl": "API-URL",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Definieren Sie die Freebox-API-Basis-URL mit der API-Version, z. B. {url}, standardmäßig ist „{defaultApiUrl}.",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Definiere die Freebox-API-Basis-URL mit der API-Version, z. B. '{url}', standardmäßig '{defaultApiUrl}'.",
"DownloadClientRTorrentSettingsUrlPathHelpText": "Pfad zum XMLRPC-Endpunkt, siehe {url}. Dies ist normalerweise RPC2 oder [Pfad zu ruTorrent]{url2}, wenn ruTorrent verwendet wird.",
"DownloadClientSettingsAddPaused": "Pausiert hinzufügen",
"SelectDownloadClientModalTitle": "{modalTitle} Wähle Download-Client",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Erster und Letzter Erster",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Ausgangszustand für zu qBittorrent hinzugefügte Torrents. Beachten Sie, dass erzwungene Torrents nicht den Seed-Beschränkungen unterliegen",
"IndexerSettingsAppsMinimumSeeders": "Apps Mindestanzahl von Seedern",
"IndexerHDBitsSettingsMediums": "Medium",
"IndexerHDBitsSettingsMediums": "Medien",
"Destination": "Ziel",
"Directory": "Verzeichnis",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Fügt der Deluge-JSON-URL ein Präfix hinzu, siehe {url}",
@@ -590,7 +590,7 @@
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Durch die Aktivierung werden Torrents und Magnete im gestoppten Zustand zu rTorrent hinzugefügt. Dadurch können Magnetdateien beschädigt werden.",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Optionaler Speicherort für Downloads. Lassen Sie das Feld leer, um den standardmäßigen rTorrent-Speicherort zu verwenden",
"DownloadClientRTorrentSettingsUrlPath": "URL-Pfad",
"IndexerHDBitsSettingsCodecs": "Codec",
"IndexerHDBitsSettingsCodecs": "Codecs",
"IndexerSettingsVipExpiration": "VIP Ablaufdatum",
"TorrentBlackholeSaveMagnetFilesHelpText": "Speichern Sie den Magnet-Link, wenn keine .torrent-Datei verfügbar ist (nur nützlich, wenn der Download-Client in einer Datei gespeicherte Magnete unterstützt)",
"TorrentBlackholeTorrentFolder": "Torrent-Ordner",
@@ -605,9 +605,9 @@
"TorrentBlackholeSaveMagnetFiles": "Speicher Magnetdateien",
"TorrentBlackholeSaveMagnetFilesExtension": "Speicher die Magnet-Dateienerweiterung",
"Default": "Standard",
"GrabRelease": "Release erfassen",
"GrabRelease": "Release holen",
"Script": "Skript",
"IndexerDownloadClientHealthCheckMessage": "Indexer mit ungültigen Downloader: {indexerNames}.",
"IndexerDownloadClientHealthCheckMessage": "Indexer mit ungültigen Download-Clients: {indexerNames}.",
"Any": "Beliebig",
"BuiltIn": "Eingebaut",
"PublishedDate": "Veröffentlichungsdatum",
@@ -615,14 +615,60 @@
"AllSearchResultsHiddenByFilter": "Alle Ergebnisse werden durch den angewendeten Filter ausgeblendet",
"DockerUpdater": "Aktualisieren Sie den Docker-Container, um das Update zu erhalten",
"Download": "Herunterladen",
"ErrorRestoringBackup": "Fehler beim Wiederherstellen",
"ExternalUpdater": "{appName} wurde so konfiguriert, dass ein externer Update Mechanismus benutzt wird",
"NoEventsFound": "Keine Events gefunden",
"ErrorRestoringBackup": "Fehler beim Wiederherstellen der Sicherung",
"ExternalUpdater": "{appName} ist so konfiguriert, dass es einen externen Aktualisierungsmechanismus verwendet",
"NoEventsFound": "Keine Ereignisse gefunden",
"RestartReloadNote": "Hinweis: {appName} startet während des Wiederherstellungsvorgangs automatisch neu und lädt die Benutzeroberfläche neu.",
"TheLogLevelDefault": "Die Protokollebene ist standardmäßig auf „Info“ eingestellt und kann unter „Allgemeine Einstellungen“ (/settings/general) geändert werden.",
"UpdateAppDirectlyLoadError": "{appName} kann nicht direkt aktualisiert werden.",
"UpdaterLogFiles": "Updater-Protokolldateien",
"WouldYouLikeToRestoreBackup": "Willst du das Backup '{name}' wiederherstellen?",
"AptUpdater": "Verwenden Sie apt, um das Update zu installieren",
"InstallLatest": "Jetzt updaten"
"InstallLatest": "Neueste Version installieren",
"CurrentlyInstalled": "Derzeit installiert",
"Mixed": "Gemischt",
"DownloadClientQbittorrentSettingsContentLayout": "Inhaltslayout",
"FailedToFetchSettings": "Einstellungen können nicht abgerufen werden",
"External": "Extern",
"FailedToFetchUpdates": "Updates konnten nicht abgerufen werden",
"IndexerSettingsSeedRatio": "Seed-Verhältnis",
"Install": "Installieren",
"ManualGrab": "Manuelles Greifen",
"OverrideGrabModalTitle": "Überschreiben und Abrufen - {title}",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Ob das konfigurierte Inhaltslayout von qBittorrent, das ursprüngliche Layout des Torrents oder immer ein Unterordner erstellt werden soll (qBittorrent 4.3.2+)",
"HealthMessagesInfoBox": "Weitere Informationen zur Ursache dieser Gesundheitsprüfungsnachrichten findest du, indem du auf den Wiki-Link (Buch-Symbol) am Ende der Zeile klickst oder deine [Protokolle]({link}) überprüfst. Wenn du Schwierigkeiten hast, diese Nachrichten zu interpretieren, kannst du unseren Support kontaktieren, über die Links unten.",
"IndexerHDBitsSettingsMediumsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet.",
"InvalidUILanguage": "Die UI ist auf eine ungültige Sprache eingestellt, korrigiere sie und speichere die Einstellungen",
"LogFilesLocation": "Protokolldateien befinden sich unter: {location}",
"Logout": "Abmelden",
"NoHistoryFound": "Keine Historie gefunden",
"PasswordConfirmation": "Passwortbestätigung",
"InfoUrl": "Info-URL",
"LogSizeLimit": "Protokollgrößenlimit",
"LogSizeLimitHelpText": "Maximale Protokolldateigröße in MB, bevor archiviert wird. Standard ist 1MB.",
"NotificationsEmailSettingsUseEncryption": "Verschlüsselung verwenden",
"NotificationsTelegramSettingsIncludeAppName": "{appName} im Titel einfügen",
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Optional den Nachrichtentitel mit {appName} voranstellen, um Benachrichtigungen von verschiedenen Anwendungen zu unterscheiden",
"LabelIsRequired": "Label ist erforderlich",
"Menu": "Menü",
"IndexerHDBitsSettingsCodecsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet.",
"IndexerSettingsCookie": "Cookie",
"IndexerSettingsSeedTime": "Seed-Zeit",
"IndexerSettingsAdditionalParameters": "Zusätzliche Parameter",
"IndexerSettingsApiPath": "API-Pfad",
"IndexerSettingsApiPathHelpText": "Pfad zur API, normalerweise {url}",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Fügt der {clientName}-rpc-URL ein Präfix hinzu, z. B. {url}, standardmäßig '{defaultUrl}'",
"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",
"InstallMajorVersionUpdate": "Update installieren",
"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}).",
"NotificationsEmailSettingsUseEncryptionHelpText": "Ob bevorzugt Verschlüsselung verwendet werden soll, wenn auf dem Server konfiguriert, ob immer Verschlüsselung über SSL (nur Port 465) oder StartTLS (anderer Port) verwendet wird oder keine Verschlüsselung verwendet wird",
"PackageVersionInfo": "{packageVersion} von {packageAuthor}",
"PreviouslyInstalled": "Früher installiert",
"PrioritySettings": "Priorität: {priority}",
"SeedRatio": "Seed-Verhältnis",
"SeedTime": "Seed-Zeit",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Wenn ein Torrent durch einen Hash blockiert wird, wird er möglicherweise nicht korrekt abgelehnt während RSS/Recherche für einige Indexer. Diese Option aktiviert die Ablehnung des Torrents nach dem Abrufen, aber bevor er an den Client gesendet wird.",
"IndexerHDBitsSettingsOriginsHelpText": "Wenn nicht angegeben, werden alle Optionen verwendet."
}

View File

@@ -196,7 +196,7 @@
"SSLCertPath": "Διαδρομή πιστοποίησης SSL",
"StartTypingOrSelectAPathBelow": "Ξεκινήστε να πληκτρολογείτε ή επιλέξτε μια διαδρομή παρακάτω",
"Style": "Στυλ",
"SystemTimeCheckMessage": "Ο χρόνος συστήματος είναι απενεργοποιημένος για περισσότερο από 1 ημέρα. Οι προγραμματισμένες εργασίες ενδέχεται να μην εκτελούνται σωστά έως ότου διορθωθεί η ώρα",
"SystemTimeHealthCheckMessage": "Ο χρόνος συστήματος είναι απενεργοποιημένος για περισσότερο από 1 ημέρα. Οι προγραμματισμένες εργασίες ενδέχεται να μην εκτελούνται σωστά έως ότου διορθωθεί η ώρα",
"TableOptions": "Επιλογές πίνακα",
"TableOptionsColumnsMessage": "Επιλέξτε ποιες στήλες είναι ορατές και με ποια σειρά εμφανίζονται",
"TagIsNotUsedAndCanBeDeleted": "Η ετικέτα δεν χρησιμοποιείται και μπορεί να διαγραφεί",
@@ -431,7 +431,7 @@
"IndexerInfo": "Πληροφορίες ευρετηρίου",
"IndexerName": "Όνομα ευρετηρίου",
"IndexerProxies": "Proxer Indexer",
"IndexerNoDefinitionCheckHealthCheckMessage": "Τα ευρετήρια δεν έχουν ορισμό και δεν θα λειτουργήσουν: {0}. Αφαιρέστε και (ή) προσθέστε ξανά στο {appName}",
"IndexerNoDefinitionCheckHealthCheckMessage": "Τα ευρετήρια δεν έχουν ορισμό και δεν θα λειτουργήσουν: {indexerNames}. Αφαιρέστε και (ή) προσθέστε ξανά στο {appName}",
"SemiPrivate": "Ημι-ιδιωτικό",
"SettingsIndexerLoggingHelpText": "Καταγραφή πρόσθετων δεδομένων ευρετηρίου συμπεριλαμβανομένης της απόκρισης",
"SearchTypes": "Τύποι αναζήτησης",
@@ -538,5 +538,7 @@
"UpdateAppDirectlyLoadError": "Δεν είναι δυνατή η απευθείας ενημέρωση του {appName},",
"DockerUpdater": "ενημερώστε το κοντέινερ για να λάβετε την ενημέρωση",
"AptUpdater": "Χρησιμοποιήστε το apt για να εγκαταστήσετε την ενημέρωση",
"InstallLatest": "Εγκατάσταση πιο πρόσφατου"
"InstallLatest": "Εγκατάσταση πιο πρόσφατου",
"CurrentlyInstalled": "Εγκατεστημένο αυτήν τη στιγμή",
"Mixed": "Σταθερός"
}

View File

@@ -143,6 +143,7 @@
"CountDownloadClientsSelected": "{count} download client(s) selected",
"CountIndexersAvailable": "{count} indexer(s) available",
"CountIndexersSelected": "{count} indexer(s) selected",
"CurrentlyInstalled": "Currently Installed",
"Custom": "Custom",
"CustomFilter": "Custom Filter",
"CustomFilters": "Custom Filters",
@@ -281,6 +282,7 @@
"External": "External",
"ExternalUpdater": "{appName} is configured to use an external update mechanism",
"Failed": "Failed",
"FailedToFetchSettings": "Failed to fetch settings",
"FailedToFetchUpdates": "Failed to fetch updates",
"FeatureRequests": "Feature Requests",
"Filename": "Filename",
@@ -569,6 +571,7 @@
"PreferMagnetUrl": "Prefer Magnet URL",
"PreferMagnetUrlHelpText": "When enabled, this indexer will prefer the use of magnet URLs for grabs with fallback to torrent links",
"Presets": "Presets",
"PreviouslyInstalled": "Previously Installed",
"Priority": "Priority",
"PrioritySettings": "Priority: {priority}",
"Privacy": "Privacy",
@@ -705,7 +708,7 @@
"SyncProfile": "Sync Profile",
"SyncProfiles": "Sync Profiles",
"System": "System",
"SystemTimeCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
"SystemTimeHealthCheckMessage": "System time is off by more than 1 day. Scheduled tasks may not run correctly until the time is corrected",
"TVSearchTypes": "TV Search Types",
"TableOptions": "Table Options",
"TableOptionsColumnsMessage": "Choose which columns are visible and which order they appear in",

View File

@@ -48,7 +48,7 @@
"Scheduled": "Programado",
"SaveChanges": "Guardar cambios",
"RestoreBackup": "Restaurar copia de seguridad",
"ReleaseBranchCheckOfficialBranchMessage": "Las versión {0} no es una versión válida de {appName}, no recibirás actualizaciones",
"ReleaseBranchCheckOfficialBranchMessage": "La rama {0} no es una rama de lanzamiento válida de {appName}, no recibirás actualizaciones",
"Refresh": "Actualizar",
"Queue": "Cola",
"ProxyResolveIpHealthCheckMessage": "No se pudo resolver la dirección IP del Host Proxy configurado {proxyHostName}",
@@ -73,7 +73,7 @@
"LastWriteTime": "Última Fecha de Escritura",
"IndexerStatusUnavailableHealthCheckMessage": "Indexadores no disponibles debido a errores: {indexerNames}",
"Indexer": "Indexador",
"Grabbed": "Añadido",
"Grabbed": "Capturado",
"GeneralSettingsSummary": "Puerto, SSL, nombre de usuario/contraseña , proxy, analíticas, y actualizaciones",
"Filename": "Nombre de archivo",
"Failed": "Fallido",
@@ -99,7 +99,7 @@
"Peers": "Pares",
"PageSize": "Tamaño de Página",
"Ok": "Ok",
"OAuthPopupMessage": "Pop-ups bloqueados por su navegador",
"OAuthPopupMessage": "Los elementos emergentes están siendo bloqueados por tu navegador",
"Name": "Nombre",
"Message": "Mensaje",
"Level": "Nivel",
@@ -114,7 +114,7 @@
"Cancel": "Cancelar",
"Apply": "Aplicar",
"Age": "Antigüedad",
"SystemTimeCheckMessage": "El reloj del sistema está retrasado más de un día. Las tareas de mantenimiento no se ejecutarán correctamente hasta que se haya corregido",
"SystemTimeHealthCheckMessage": "El reloj del sistema está retrasado más de un día. Las tareas de mantenimiento no se ejecutarán correctamente hasta que se haya corregido",
"UnsavedChanges": "Cambios sin guardar",
"ShowSearchHelpText": "Muestra el botón de búsqueda al pasar por encima",
"ShowSearch": "Mostrar búsqueda",
@@ -135,7 +135,7 @@
"DownloadClientSettings": "Opciones del cliente de descarga",
"Docker": "Docker",
"DeleteTag": "Eliminar Etiqueta",
"DeleteNotification": "Borrar Notificacion",
"DeleteNotification": "Eliminar Notificación",
"DeleteDownloadClient": "Borrar cliente de descarga",
"DeleteBackup": "Eliminar copia de seguridad",
"DatabaseMigration": "Migración de la base de datos",
@@ -143,7 +143,7 @@
"ClientPriority": "Prioridad del Cliente",
"ChangeHasNotBeenSavedYet": "El cambio aún no se ha guardado",
"CertificateValidationHelpText": "Cambiar la rigidez de la validación de la certificación HTTPS",
"CertificateValidation": "Validacion de certificado",
"CertificateValidation": "Validación de certificado",
"BypassProxyForLocalAddresses": "Omitir Proxy para Direcciones Locales",
"Branch": "Rama",
"BindAddressHelpText": "Dirección IP4 válida, localhost o '*' para todas las interfaces",
@@ -171,7 +171,7 @@
"UpdateAutomaticallyHelpText": "Descargar e instalar actualizaciones automáticamente. Todavía puedes instalar desde Sistema: Actualizaciones",
"UnableToLoadTags": "No se pueden cargar las Etiquetas",
"UnableToLoadNotifications": "No se pueden cargar las Notificaciones",
"DownloadClientsLoadError": "No se puden cargar los gestores de descargas",
"DownloadClientsLoadError": "No se pudieron cargar los clientes de descargas",
"UISettings": "Ajustes del UI",
"Torrents": "Torrents",
"TestAllClients": "Probar todos los clientes",
@@ -212,7 +212,7 @@
"Mechanism": "Mecanismo",
"Logs": "Registros",
"LogLevel": "Nivel de Registro",
"LaunchBrowserHelpText": " Abrir un navegador web e ir a la página de inicio de {appName} al arrancar la app.",
"LaunchBrowserHelpText": " Abre un navegador web y navega a la página de inicio de {appName} al iniciarse la aplicación.",
"Interval": "Intervalo",
"IndexerFlags": "Indicadores del indexador",
"IncludeHealthWarningsHelpText": "Incluir Alertas de Salud",
@@ -236,12 +236,12 @@
"ExistingTag": "Etiquetas existentes",
"EnableInteractiveSearchHelpText": "Se usará cuando se utilice la búsqueda interactiva",
"EnableAutomaticSearchHelpText": "Será usado cuando las búsquedas automáticas sean realizadas por la interfaz de usuario o por {appName}",
"DeleteTagMessageText": "¿Está seguro de querer eliminar la etiqueta '{label}'?",
"DeleteNotificationMessageText": "¿Seguro que quieres eliminar la notificación '{name}'?",
"DeleteBackupMessageText": "Seguro que quieres eliminar la copia de seguridad '{name}'?",
"DeleteDownloadClientMessageText": "Seguro que quieres eliminar el gestor de descargas '{name}'?",
"CancelPendingTask": "Estas seguro de que deseas cancelar esta tarea pendiente?",
"BranchUpdateMechanism": "La rama se uso por un mecanisco de actualizacion externo",
"DeleteTagMessageText": "¿Estás seguro que quieres eliminar la etiqueta '{label}'?",
"DeleteNotificationMessageText": "¿Estás seguro que quieres eliminar la notificación '{name}'?",
"DeleteBackupMessageText": "¿Estás seguro que quieres eliminar la copia de seguridad '{name}'?",
"DeleteDownloadClientMessageText": "¿Estás seguro que quieres eliminar el cliente de descarga '{name}'?",
"CancelPendingTask": "¿Estás seguro que quieres cancelar esta tarea pendiente?",
"BranchUpdateMechanism": "Rama usada por un mecanismo de actualización externo",
"BranchUpdate": "Rama a usar para actualizar {appName}",
"BeforeUpdate": "Antes de actualizar",
"AddingTag": "Añadir etiqueta",
@@ -261,7 +261,7 @@
"NoTagsHaveBeenAddedYet": "Ninguna etiqueta ha sido añadida aún",
"NoLogFiles": "No hay archivos de registro",
"NoBackupsAreAvailable": "No hay copias de seguridad disponibles",
"MaintenanceRelease": "Lanzamiento de mantenimiento: Corrección de errores y otras mejoras. Ver historial de commits de Github para mas detalle",
"MaintenanceRelease": "Lanzamiento de mantenimiento: Corrección de errores y otras mejoras. Ver el historial de commits de Github para más detalles",
"ForMoreInformationOnTheIndividualDownloadClients": "Para más información individual de los gestores de descarga, haz clic en lls botones de información.",
"FilterPlaceHolder": "Buscar Indexadores",
"Exception": "Excepción",
@@ -280,8 +280,8 @@
"FocusSearchBox": "Enfocar Campo de Búsqueda",
"SaveSettings": "Guardar ajustes",
"OpenThisModal": "Abrir esta Ventana Modal",
"MovieIndexScrollTop": "Indice de Películas: Desplazar hacia arriba",
"MovieIndexScrollBottom": "Indice de Películas: Desplazar hacia abajo",
"MovieIndexScrollTop": "Índice de Películas: Desplazar hacia arriba",
"MovieIndexScrollBottom": "Índice de Películas: Desplazar hacia abajo",
"CloseCurrentModal": "Cerrar esta Ventana Modal",
"AcceptConfirmationModal": "Aceptar Confirmación de esta Ventana Modal",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexadores no disponibles debido a errores durante más de 6 horas: {indexerNames}",
@@ -398,7 +398,7 @@
"EditSelectedDownloadClients": "Editar Clientes de Descarga Seleccionados",
"EditSelectedIndexers": "Editar Indexadores Seleccionados",
"Implementation": "Implementación",
"ManageDownloadClients": "Gestionar Clientes de Descarga",
"ManageDownloadClients": "Administrar Clientes de Descarga",
"ApiKeyValidationHealthCheckMessage": "Actualice su clave de API para que tenga al menos {length} carácteres. Puede hacerlo en los ajustes o en el archivo de configuración",
"IndexerDownloadClientHealthCheckMessage": "Indexadores con clientes de descarga inválidos: {indexerNames}.",
"Episode": "Episodio",
@@ -425,7 +425,7 @@
"ResetAPIKeyMessageText": "¿Estás seguro que quieres restablecer tu clave API?",
"EditIndexerProxyImplementation": "Editar proxy de indexador - {implementationName}",
"AppUpdated": "{appName} Actualizado",
"AppUpdatedVersion": "{appName} ha sido actualizado a la versión `{version}`, para obtener los cambios más recientes, necesitará recargar {appName}",
"AppUpdatedVersion": "{appName} ha sido actualizado a la versión `{version}`, para obtener los cambios más recientes tendrás que recargar {appName}",
"AddApplicationImplementation": "Agregar aplicación - {implementationName}",
"AddConnectionImplementation": "Añadir Conexión - {implementationName}",
"AddIndexerImplementation": "Agregar Indexador - {implementationName}",
@@ -493,9 +493,9 @@
"EditCategory": "Editar categoría",
"EditSyncProfile": "Editar perfil de sincronización",
"EnableIndexer": "Habilitar indexador",
"InvalidUILanguage": "Su interfaz de usuario está configurada en un idioma no válido, corríjalo y guarde la configuración",
"InvalidUILanguage": "Tu interfaz de usuario está configurada en un idioma inválido, corrígelo y guarda la configuración",
"DownloadClientQbittorrentSettingsContentLayout": "Diseño del contenido",
"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+)",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Si usa el diseño de contenido configurado de qBittorrent, el diseño original del torrent o siempre crea una subcarpeta (qBittorrent 4.3.2+)",
"EnableRssHelpText": "Habilitar canal RSS para el Indexador",
"days": "días",
"ElapsedTime": "Tiempo transcurrido",
@@ -517,7 +517,7 @@
"IndexerTagsHelpTextWarning": "Las etiquetas deben utilizarse con precaución, ya que pueden tener efectos no deseados. Un indexador con una etiqueta solo se sincronizará con aplicaciones que tengan la misma etiqueta.",
"TVSearchTypes": "Tipos de búsqueda de TV",
"DownloadClientAriaSettingsDirectoryHelpText": "Ubicación opcional en la que poner las descargas, dejar en blanco para usar la ubicación de Aria2 predeterminada",
"IndexerNoDefinitionCheckHealthCheckMessage": "Los indexadores no tienen definición y no funcionarán: {0}. Por favor elimínelos y (o) vuelva a añadirlos a {appName}.",
"IndexerNoDefinitionCheckHealthCheckMessage": "Los indexadores no tienen definición y no funcionarán: {indexerNames}. Por favor elimínalos y (o) vuelve a añadirlos a {appName}.",
"IndexerProxy": "Proxy del Indexador",
"IndexerObsoleteCheckMessage": "Los indexadores están obsoletos o se han actualizado: {0}. Por favor elimínelos y (o) vuelva a añadirlos a {appName}",
"IncludeManualGrabsHelpText": "Incluir las Capturas Manuales realizadas en {appName}",
@@ -537,7 +537,7 @@
"IndexerTagsHelpText": "Utilice etiquetas para especificar los Proxies del Indexador o las aplicaciones con las que se sincroniza el indexador.",
"MassEditor": "Editor Masivo",
"ApplicationsLoadError": "No se puede cargar la lista de aplicaciones",
"ManageClients": "Gestionar Clientes",
"ManageClients": "Administrar Clientes",
"ManageApplications": "Gestionar Aplicaciones",
"IndexerId": "ID del Indexador",
"IndexerInfo": "Información del Indexador",
@@ -609,10 +609,10 @@
"Url": "Url",
"VipExpiration": "Expiración VIP",
"TotalIndexerSuccessfulGrabs": "Capturas con Éxito Totales por Indexador",
"NotificationsEmailSettingsUseEncryptionHelpText": "Si prefiere utilizar el cifrado si está configurado en el servidor, utilizar siempre el cifrado mediante SSL (sólo puerto 465) o StartTLS (cualquier otro puerto) o no utilizar nunca el cifrado",
"NotificationsEmailSettingsUseEncryptionHelpText": "Si prefiere utilizar el cifrado si está configurado en el servidor, utilizar siempre el cifrado mediante SSL (sólo puerto 465) o StartTLS (cualquier otro puerto), o no utilizar nunca el cifrado",
"IndexerHDBitsSettingsPasskeyHelpText": "Clave de acceso desde los Detalles de Usuario",
"IndexerSettingsPasskey": "Clave de Acceso",
"BlackholeFolderHelpText": "La carpeta en donde {appName} se almacenaran los {extension} file",
"BlackholeFolderHelpText": "La carpeta donde {appName} almacenará los archivos {extension}",
"CustomFilter": "Filtro personalizado",
"LabelIsRequired": "Se requiere etiqueta",
"TorrentBlackholeSaveMagnetFiles": "Guardar archivos magnet",
@@ -771,7 +771,7 @@
"AverageGrabs": "Promedio de capturas",
"AllSearchResultsHiddenByFilter": "Todos los resultados están ocultos por el filtro aplicado.",
"PackageVersionInfo": "{packageVersion} por {packageAuthor}",
"HealthMessagesInfoBox": "Puedes encontrar más información sobre la causa de estos mensajes de comprobación de salud haciendo clic en el enlace wiki (icono de libro) al final de la fila, o comprobando tus [registros]({link}). Si tienes dificultades para interpretar estos mensajes, puedes ponerte en contacto con nuestro soporte en los enlaces que aparecen a continuación.",
"HealthMessagesInfoBox": "Puedes encontrar más información sobre la causa de estos mensajes de comprobación de salud haciendo clic en el enlace wiki (icono de libro) al final de la fila, o comprobando tus [registros]({link}). Si tienes dificultades para interpretar estos mensajes, puedes ponerte en contacto con nuestro soporte en los enlaces que aparecen abajo.",
"LogSizeLimit": "Límite de tamaño de registro",
"LogSizeLimitHelpText": "Máximo tamaño de archivo de registro en MB antes de archivarlo. Predeterminado es 1MB.",
"PreferMagnetUrl": "Preferir URL magnet",
@@ -798,10 +798,13 @@
"UpdateAppDirectlyLoadError": "No se pudo actualizar {appName} directamente,",
"UpdaterLogFiles": "Actualizador de archivos de registro",
"WouldYouLikeToRestoreBackup": "Te gustaria restaurar la copia de seguridad '{name}'?",
"AptUpdater": "Use apt para instalar la actualización",
"AptUpdater": "Usa apt para instalar la actualización",
"Install": "Instalar",
"InstallLatest": "Instala el último",
"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?",
"InstallMajorVersionUpdate": "Instalar actualización",
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información."
"InstallMajorVersionUpdateMessageLink": "Por favor revisa [{domain}]({url}) para más información.",
"FailedToFetchSettings": "Error al recuperar la configuración",
"CurrentlyInstalled": "Actualmente instalado",
"PreviouslyInstalled": "Previamente instalado"
}

View File

@@ -116,7 +116,7 @@
"Security": "Suojaus",
"SuggestTranslationChange": "Ehdota käännösmuutosta",
"System": "Järjestelmä",
"SystemTimeCheckMessage": "Järjestelmän ajassa on ainakin vuorokauden heitto eivätkä ajoitetut tehtävät tämän vuoksi toimi oikein ennen kuin se on korjattu.",
"SystemTimeHealthCheckMessage": "Järjestelmän ajassa on ainakin vuorokauden heitto eivätkä ajoitetut tehtävät tämän vuoksi toimi oikein ennen kuin se on korjattu.",
"TagCannotBeDeletedWhileInUse": "Tunnistetta ei voi poistaa, koska se on käytössä",
"TagIsNotUsedAndCanBeDeleted": "Tunnistetta ei ole määritetty millekään kohteelle, joten sen voi poistaa.",
"TagsSettingsSummary": "Täältä näet kaikki tunnisteet käyttökohteineen ja voit poistaa käyttämättömät tunnisteet.",
@@ -405,7 +405,7 @@
"ApplicationsLoadError": "Sovelluslistausta ei voitu ladata",
"Url": "URL",
"Website": "Verkkosivusto",
"IndexerNoDefinitionCheckHealthCheckMessage": "Tietolähteillä ei ole määritystä, eivätkä ne toimi: {0}. Poista ja/tai lisää {appName}iin uudelleen",
"IndexerNoDefinitionCheckHealthCheckMessage": "Tietolähteillä ei ole määritystä, eivätkä ne toimi: {indexerNames}. Poista ja/tai lisää {appName}iin uudelleen",
"Private": "Yksityinen",
"QueryResults": "Kyselyn tulokset",
"Application": "Sovellus",
@@ -714,5 +714,8 @@
"UpdateAppDirectlyLoadError": "{appName}ia ei voida päivittää suoraan,",
"UpdaterLogFiles": "Päivittäjän lokitiedostot",
"WouldYouLikeToRestoreBackup": "Haluatko palauttaa varmuuskopion \"{name}\"?",
"InstallLatest": "Asenna uusin"
"InstallLatest": "Asenna uusin",
"CurrentlyInstalled": "Nykyinen asennettu versio",
"PreviouslyInstalled": "Edellinen asennettu versio",
"Mixed": "Korjattu"
}

View File

@@ -114,7 +114,7 @@
"Level": "Niveau",
"KeyboardShortcuts": "Raccourcis clavier",
"NoIssuesWithYourConfiguration": "Aucun problème avec votre configuration",
"SystemTimeCheckMessage": "L'heure du système est décalée de plus d'un jour. Les tâches planifiées peuvent ne pas s'exécuter correctement tant que l'heure ne sera pas corrigée",
"SystemTimeHealthCheckMessage": "L'heure du système est décalée de plus d'un jour. Les tâches planifiées peuvent ne pas s'exécuter correctement tant que l'heure ne sera pas corrigée",
"SettingsShowRelativeDates": "Afficher les dates relatives",
"UnsavedChanges": "Modifications non enregistrées",
"ShowSearchHelpText": "Afficher le bouton de recherche au survol",
@@ -794,5 +794,13 @@
"InstallLatest": "Installer la dernière",
"InstallMajorVersionUpdateMessageLink": "Veuillez consulter [{domain}]({url}) pour plus d'informations.",
"InstallMajorVersionUpdate": "Installer la mise à jour",
"InstallMajorVersionUpdateMessage": "Cette mise à jour installera une nouvelle version majeure et pourrait ne pas être compatible avec votre système. Êtes-vous sûr de vouloir installer cette mise à jour ?"
"InstallMajorVersionUpdateMessage": "Cette mise à jour installera une nouvelle version majeure et pourrait ne pas être compatible avec votre système. Êtes-vous sûr de vouloir installer cette mise à jour ?",
"FailedToFetchSettings": "Échec de la récupération des paramètres",
"IndexerSettingsPreferMagnetUrlHelpText": "Si activé, cet indexeur privilégiera si possible l'usage de liens de type magnet aux liens torrent",
"PreferMagnetUrl": "Privilégier les liens de type magnet",
"IndexerAvistazSettingsPidHelpText": "PID de la page Mon compte ou Mon profil",
"IndexerAvistazSettingsPasswordHelpText": "Mot de passe du site",
"PreferMagnetUrlHelpText": "Si activé, cet indexeur privilégiera si possible l'usage de liens de type magnet aux liens torrent",
"PreviouslyInstalled": "Installé précédemment",
"CurrentlyInstalled": "Actuellement installé"
}

View File

@@ -122,7 +122,7 @@
"SettingsShowRelativeDates": "הצג תאריכים יחסית",
"SuggestTranslationChange": "הצע שינוי בתרגום",
"System": "מערכת",
"SystemTimeCheckMessage": "זמן המערכת אינו פעיל יותר מיום אחד. משימות מתוזמנות עשויות שלא לפעול כראוי עד לתיקון הזמן",
"SystemTimeHealthCheckMessage": "זמן המערכת אינו פעיל יותר מיום אחד. משימות מתוזמנות עשויות שלא לפעול כראוי עד לתיקון הזמן",
"TableOptionsColumnsMessage": "בחר אילו עמודות גלויות ובאיזה סדר הן יופיעו",
"TagCannotBeDeletedWhileInUse": "לא ניתן למחוק בזמן השימוש",
"TagIsNotUsedAndCanBeDeleted": "לא משתמשים בתג וניתן למחוק אותו",
@@ -427,5 +427,10 @@
"ExternalUpdater": "{appName} מוגדר להשתמש במנגנון עדכון חיצוני",
"RestartReloadNote": "הערה: {appName} יופעל מחדש אוטומטית וטען מחדש את ממשק המשתמש במהלך תהליך השחזור.",
"UpdateAppDirectlyLoadError": "לא ניתן לעדכן את {appName} ישירות,",
"AptUpdater": "השתמש ב- apt כדי להתקין את העדכון"
"AptUpdater": "השתמש ב- apt כדי להתקין את העדכון",
"Clone": "סגור",
"CurrentlyInstalled": "מותקן כעת",
"Stats": "סטָטוּס",
"Season": "סיבה",
"Mixed": "תוקן"
}

View File

@@ -154,7 +154,7 @@
"Source": "स्रोत",
"StartupDirectory": "स्टार्टअप निर्देशिका",
"SuggestTranslationChange": "अनुवाद परिवर्तन का सुझाव दें",
"SystemTimeCheckMessage": "सिस्टम का समय 1 दिन से अधिक बंद है। जब तक समय सही नहीं होगा तब तक शेड्यूल किए गए कार्य सही तरीके से नहीं चल सकते हैं",
"SystemTimeHealthCheckMessage": "सिस्टम का समय 1 दिन से अधिक बंद है। जब तक समय सही नहीं होगा तब तक शेड्यूल किए गए कार्य सही तरीके से नहीं चल सकते हैं",
"TableOptionsColumnsMessage": "चुनें कि कौन से कॉलम दिखाई दे रहे हैं और वे किस क्रम में दिखाई देते हैं",
"TagsSettingsSummary": "सभी टैग देखें और उनका उपयोग कैसे किया जाता है। अप्रयुक्त टैग को हटाया जा सकता है",
"TestAll": "सभी का परीक्षण करें",
@@ -368,5 +368,10 @@
"NoEventsFound": "कोई घटना नहीं मिली",
"RestartReloadNote": "नोट: रैडियर स्वचालित रूप से पुनः आरंभ करेगा और पुनर्स्थापना प्रक्रिया के दौरान UI को फिर से लोड करेगा।",
"UpdateAppDirectlyLoadError": "सीधे {appName} अद्यतन करने में असमर्थ,",
"InstallLatest": "नवीनतम स्थापित करें"
"InstallLatest": "नवीनतम स्थापित करें",
"Clone": "बंद करे",
"CurrentlyInstalled": "वर्तमान में स्थापित है",
"Mixed": "फिक्स्ड",
"Season": "कारण",
"Stats": "स्थिति"
}

View File

@@ -211,5 +211,6 @@
"UnableToAddANewApplicationPleaseTryAgain": "Neuspješno dodavanje nove obavijesti, molimo pokušaj ponovno.",
"EditApplicationImplementation": "Dodaj Vezu - {implementationName}",
"AptUpdater": "Koristi apt kako bi instalirao ažuriranje",
"EditIndexerProxyImplementation": "Dodaj Indexer - {implementationName}"
"EditIndexerProxyImplementation": "Dodaj Indexer - {implementationName}",
"Clone": "Zatvori"
}

View File

@@ -248,7 +248,7 @@
"TagIsNotUsedAndCanBeDeleted": "A címke nincs használatban, törölhető",
"TagCannotBeDeletedWhileInUse": "Használat közben nem törölhető",
"TableOptionsColumnsMessage": "Válasszd ki, mely oszlopok legyenek láthatóak, és milyen sorrendben jelenjenek meg",
"SystemTimeCheckMessage": "A rendszeridő több mint 1 napja nem frissült. Előfordulhat, hogy az ütemezett feladatok az idő kijavításáig nem futnak megfelelően",
"SystemTimeHealthCheckMessage": "A rendszeridő több mint 1 napja nem frissült. Előfordulhat, hogy az ütemezett feladatok az idő kijavításáig nem futnak megfelelően",
"IndexerStatusAllUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen hiba miatt",
"Indexers": "Indexerek",
"IndexerPriorityHelpText": "Indexelő prioritás 1-től (legmagasabb) 50-ig (legalacsonyabb). Alapértelmezés: 25.",
@@ -393,7 +393,7 @@
"HistoryCleanupDaysHelpTextWarning": "A kiválasztott napszámnál régebbi előzmények automatikusan törlődnek",
"IndexerAlreadySetup": "Az indexelő legalább egy példánya már be van állítva",
"IndexerInfo": "Indexer információ",
"IndexerNoDefinitionCheckHealthCheckMessage": "Az indexereknek nincs definíciójuk, és nem működnek: {0}. Kérjük, távolítsa el és (vagy) adja hozzá újra a {appName}hoz",
"IndexerNoDefinitionCheckHealthCheckMessage": "Az indexereknek nincs definíciójuk, és nem működnek: {indexerNames}. Kérjük, távolítsa el és (vagy) adja hozzá újra a {appName}hoz",
"MassEditor": "Tömeges szerkesztő",
"OnApplicationUpdate": "Alkalmazásfrissítésről",
"OnApplicationUpdateHelpText": "Alkalmazásfrissítésről",
@@ -595,5 +595,7 @@
"RestartReloadNote": "Megjegyzés: A {appName} automatikusan újraindítja és újratölti a felületet a visszaállítási folyamatban.",
"UpdateAppDirectlyLoadError": "Nem lehetséges közvetlenül frissíteni a {appName}-t",
"WouldYouLikeToRestoreBackup": "Szeretné visszaállítani a(z) „{name}” biztonsági másolatot?",
"InstallLatest": "Legfrissebb telepítése"
"InstallLatest": "Legfrissebb telepítése",
"CurrentlyInstalled": "Jelenleg telepítve",
"PreviouslyInstalled": "Korábban telepítve"
}

View File

@@ -1,7 +1,7 @@
{
"ApplicationURL": "URL Aplikasi",
"ApplicationUrlHelpText": "URL eksternal aplikasi termasuk http(s)://, port, dan dasar URL",
"AddDownloadClient": "Tambahkan Klien Pengunduhan",
"AddDownloadClient": "Tambahkan Download Client",
"Added": "Ditambahkan",
"AddIndexer": "Tambahkan Pengindeks",
"Age": "Usia",
@@ -86,5 +86,8 @@
"IndexerHDBitsSettingsCodecs": "Codec",
"ProxyValidationBadRequest": "Gagal menguji proxy. Kode Status: {statusCode}",
"AllSearchResultsHiddenByFilter": "Seluruh hasil disembunyikan karena penyaringan yang diterapkan",
"AptUpdater": "Gunakan apt untuk memasang pembaruan"
"AptUpdater": "Gunakan apt untuk memasang pembaruan",
"Clone": "Tutup",
"EnableSSL": "Aktifkan RSS",
"CurrentlyInstalled": "Saat Ini Terpasang"
}

View File

@@ -48,7 +48,7 @@
"Details": "Upplýsingar",
"PortNumber": "Portnúmer",
"Uptime": "Spenntur",
"SystemTimeCheckMessage": "Slökkt er á tíma kerfisins meira en 1 dag. Skipulögð verkefni ganga kannski ekki rétt fyrr en tíminn er leiðréttur",
"SystemTimeHealthCheckMessage": "Slökkt er á tíma kerfisins meira en 1 dag. Skipulögð verkefni ganga kannski ekki rétt fyrr en tíminn er leiðréttur",
"TableOptions": "Borðvalkostir",
"TableOptionsColumnsMessage": "Veldu hvaða dálkar eru sýnilegir og í hvaða röð þeir birtast",
"TagCannotBeDeletedWhileInUse": "Ekki er hægt að eyða meðan hún er í notkun",
@@ -370,5 +370,10 @@
"RestartReloadNote": "Athugið: {appName} mun sjálfkrafa endurræsa og endurhlaða notendaviðmiðið meðan á endurreisnarferlinu stendur.",
"UpdateAppDirectlyLoadError": "Ekki er hægt að uppfæra {appName} beint,",
"NoEventsFound": "Engir viðburðir fundust",
"InstallLatest": "Settu upp nýjustu"
"InstallLatest": "Settu upp nýjustu",
"Clone": "Lokaðu",
"CurrentlyInstalled": "Nú sett upp",
"Stats": "Staða",
"Mixed": "Fastur",
"Season": "Ástæða"
}

View File

@@ -114,7 +114,7 @@
"Test": "Prova",
"TableOptionsColumnsMessage": "Scegli quali colonne rendere visibili ed il loro ordine",
"TableOptions": "Opzioni Tabella",
"SystemTimeCheckMessage": "L'orario di sistema è sbagliato di più di un giorno. Le attività pianificate potrebbero non essere eseguite correttamente fino alla correzione",
"SystemTimeHealthCheckMessage": "L'orario di sistema è sbagliato di più di un giorno. Le attività pianificate potrebbero non essere eseguite correttamente fino alla correzione",
"Source": "Fonte",
"Shutdown": "Spegnimento",
"Seeders": "Seeders",
@@ -658,5 +658,8 @@
"WouldYouLikeToRestoreBackup": "Vuoi ripristinare il backup '{name}'?",
"UpdateAppDirectlyLoadError": "Impossibile aggiornare {appName} direttamente,",
"AptUpdater": "Usa apt per installare l'aggiornamento",
"InstallLatest": "Installa il più recente"
"InstallLatest": "Installa il più recente",
"CurrentlyInstalled": "Attualmente Installato",
"PreviouslyInstalled": "Precedentemente Installato",
"Mixed": "Fissato"
}

View File

@@ -195,7 +195,7 @@
"Size": "サイズ",
"Sort": "ソート",
"SSLCertPath": "SSL証明書パス",
"SystemTimeCheckMessage": "システム時刻が1日以上ずれています。スケジュールされたタスクは、時間が修正されるまで正しく実行されない場合があります",
"SystemTimeHealthCheckMessage": "システム時刻が1日以上ずれています。スケジュールされたタスクは、時間が修正されるまで正しく実行されない場合があります",
"Tags": "タグ",
"TestAllClients": "すべてのクライアントをテストする",
"Torrents": "トレント",
@@ -370,5 +370,10 @@
"RestartReloadNote": "注:{appName}は、復元プロセス中にUIを自動的に再起動して再読み込みします。",
"UpdateAppDirectlyLoadError": "{appName}を直接更新できません。",
"AptUpdater": "aptを使用してアップデートをインストールします",
"InstallLatest": "最新のインストール"
"InstallLatest": "最新のインストール",
"Clone": "閉じる",
"Mixed": "修繕",
"CurrentlyInstalled": "現在インストール中",
"Stats": "状態",
"Season": "理由"
}

View File

@@ -89,7 +89,7 @@
"UpdateAutomaticallyHelpText": "업데이트를 자동으로 다운로드하고 설치합니다. 시스템 : 업데이트에서 계속 설치할 수 있습니다.",
"RemoveFilter": "필터 제거",
"Size": "크기",
"AllIndexersHiddenDueToFilter": "적용된 필터로 인해 모든 영화가 숨겨집니다.",
"AllIndexersHiddenDueToFilter": "적용된 필터로 인해 모든 인덱서가 숨겨집니다.",
"Reset": "초기화",
"Enable": "활성화",
"Enabled": "활성화",
@@ -115,7 +115,7 @@
"ErrorLoadingContents": "콘텐츠로드 오류",
"Grabs": "붙잡다",
"Torrent": "급류",
"Torrents": "급류",
"Torrents": "토렌트",
"Type": "유형",
"DeleteApplicationMessageText": "알림 '{0}'을(를) 삭제하시겠습니까?",
"AuthenticationMethodHelpText": "{appName}에 접근하려면 사용자 이름과 암호가 필요합니다",
@@ -186,7 +186,7 @@
"UnableToAddANewNotificationPleaseTryAgain": "새 알림을 추가 할 수 없습니다. 다시 시도하십시오.",
"UnableToLoadGeneralSettings": "일반 설정을로드 할 수 없습니다.",
"UnableToLoadNotifications": "알림을로드 할 수 없습니다.",
"UpdateMechanismHelpText": "{appName}의 내장 업데이트 프로그램 또는 스크립트 사용",
"UpdateMechanismHelpText": "{appName}의 내장 업데이트 도구 또는 스크립트 사용",
"UpdateScriptPathHelpText": "추출 된 업데이트 패키지를 사용하고 나머지 업데이트 프로세스를 처리하는 사용자 지정 스크립트에 대한 경로",
"URLBase": "URL베이스",
"Usenet": "유즈넷",
@@ -274,7 +274,7 @@
"UpdateStartupTranslocationHealthCheckMessage": "시작 폴더 '{startupFolder}'이 (가) App Translocation 폴더에 있으므로 업데이트를 설치할 수 없습니다.",
"UrlBaseHelpText": "역방향 프록시 지원의 경우 기본값은 비어 있습니다.",
"MovieIndexScrollBottom": "영화 색인 : 아래로 스크롤",
"View": "전망",
"View": "화면",
"Wiki": "위키",
"EditIndexer": "인덱서 편집",
"Filter": "필터",
@@ -310,7 +310,7 @@
"Seeders": "시더",
"SelectAll": "모두 선택",
"ShowAdvanced": "고급보기",
"SystemTimeCheckMessage": "시스템 시간이 1 일 이상 꺼져 있습니다. 예약 된 작업은 시간이 수정 될 때까지 올바르게 실행되지 않을 수 있습니다.",
"SystemTimeHealthCheckMessage": "시스템 시간이 1 일 이상 꺼져 있습니다. 예약 된 작업은 시간이 수정 될 때까지 올바르게 실행되지 않을 수 있습니다.",
"TableOptions": "테이블 옵션",
"TableOptionsColumnsMessage": "표시되는 열과 표시되는 순서 선택",
"TagsHelpText": "일치하는 태그가 하나 이상있는 영화에 적용됩니다.",
@@ -322,7 +322,7 @@
"GrabReleases": "그랩 릴리스",
"NextExecution": "다음 실행",
"ApplicationLongTermStatusCheckSingleClientMessage": "6 시간 이상 오류로 인해 인덱서를 사용할 수 없음 : {0}",
"ApplicationLongTermStatusCheckAllClientMessage": "6 시간 이상 오류로 인해 모든 인덱서를 사용할 수 없습니다.",
"ApplicationLongTermStatusCheckAllClientMessage": "6 시간 이상 오류로 인해 모든 어플리케이션을 사용할 수 없습니다.",
"Ended": "종료",
"LastDuration": "lastDuration",
"LastExecution": "마지막 실행",
@@ -367,5 +367,55 @@
"ExternalUpdater": "{appName}는 외부 업데이트 메커니즘을 사용하도록 구성됩니다.",
"RestartReloadNote": "참고 : {appName}는 복원 프로세스 중에 UI를 자동으로 다시 시작하고 다시로드합니다.",
"UpdateAppDirectlyLoadError": "{appName}를 직접 업데이트 할 수 없습니다.",
"AptUpdater": "apt를 사용하여 업데이트 설치"
"AptUpdater": "apt를 사용하여 업데이트 설치",
"ActiveIndexers": "활성 인덱서",
"AddConnectionImplementation": "연결 추가 - {implementationName}",
"AddIndexerImplementation": "인덱서 추가 - {implementationName}",
"AddIndexerProxyImplementation": "인덱서 프록시 추가 - {implementationName}",
"Any": "모두",
"AppUpdatedVersion": "{appName}이 버전 `{version}`으로 업데이트되었습니다. 최신 변경 사항을 받으려면 {appName}을 다시 로드해야 합니다",
"AddRemoveOnly": "추가 및 제거만",
"AddToDownloadClient": "다운로드 클라이언트에 릴리스 추가",
"AddedToDownloadClient": "클라이언트에 릴리스 추가됨",
"AdvancedSettingsHiddenClickToShow": "고급 설정은 숨겨져 있으며, 표시하려면 클릭하세요",
"AdvancedSettingsShownClickToHide": "고급 설정 표시, 숨기려면 클릭",
"AddDownloadClientToProwlarr": "다운로드 클라이언트를 추가하면 {appName}이 수동 검색을 수행하는 동안 UI에서 직접 릴리스를 보낼 수 있습니다.",
"AddApplication": "애플리케이션 추가",
"AddCustomFilter": "커스텀 필터 추가",
"AddIndexerProxy": "인덱서 프록시 추가",
"AppUpdated": "{appName} 업데이트",
"Application": "어플리케이션",
"AppProfileInUse": "사용중인 앱 프로필",
"AppSettingsSummary": "{appName}이 PVR 프로그램과 상호 작용하는 방식을 구성하기 위한 애플리케이션 및 설정",
"AddNewIndexer": "새로운 인덱서 추가",
"AddSyncProfile": "동기화 프로필 추가",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "동기화 중 차단 목록에 있는 토렌트 해시 거부",
"AddApplicationImplementation": "애플리케이션 추가 - {implementationName}",
"AddCategory": "카테고리 추가",
"AddConnection": "연결 추가",
"ActiveApps": "활성 앱",
"AddDownloadClientImplementation": "다운로드 클라이언트 추가 - {implementationName}",
"Album": "앨범",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "해시에 의해 토렌트가 차단된 경우 일부 인덱서의 RSS/검색 중에 토렌트가 제대로 거부되지 않을 수 있습니다. 이 기능을 활성화하면 토렌트를 가져온 후 클라이언트로 전송하기 전에 토렌트를 거부할 수 있습니다.",
"ApiKeyValidationHealthCheckMessage": "API 키를 {length}자 이상으로 업데이트하세요. 설정 또는 구성 파일을 통해 이 작업을 수행할 수 있습니다.",
"AppProfileSelectHelpText": "앱 프로필은 애플리케이션 동기화에서 RSS, 자동 검색 및 대화형 검색 설정을 제어하는 데 사용됩니다",
"EditIndexerImplementation": "인덱서 추가 - {implementationName}",
"EditDownloadClientImplementation": "다운로드 클라이언트 추가 - {implementationName}",
"Clone": "닫기",
"EditApplicationImplementation": "애플리케이션 추가 - {implementationName}",
"Season": "이유",
"EditConnectionImplementation": "연결 추가 - {implementationName}",
"EditSyncProfile": "동기화 프로필 추가",
"CurrentlyInstalled": "현재 설치됨",
"Mixed": "결정된",
"Stats": "상태",
"Applications": "어플리케이션",
"EditIndexerProxyImplementation": "인덱서 프록시 추가 - {implementationName}",
"WouldYouLikeToRestoreBackup": "'{name}' 백업을 복원하시겠습니까?",
"XmlRpcPath": "XML RPC 경로",
"UpdateAvailableHealthCheckMessage": "새 업데이트 사용 가능: {version}",
"UsenetBlackholeNzbFolder": "Nzb 폴더",
"UseSsl": "SSL 사용",
"TorrentBlackholeTorrentFolder": "토렌트 폴더",
"DownloadClientPneumaticSettingsNzbFolder": "Nzb 폴더"
}

View File

@@ -131,7 +131,7 @@
"ConnectionLostReconnect": "Radarr vil forsøke å koble til automatisk, eller du kan klikke oppdater nedenfor.",
"ConnectionLostToBackend": "Radarr har mistet tilkoblingen til baksystemet og må lastes inn på nytt for å gjenopprette funksjonalitet.",
"DeleteAppProfileMessageText": "Er du sikker på at du vil slette denne forsinkelsesprofilen?",
"AddConnection": "Legg til kobling",
"AddConnection": "Legg til tilkobling",
"AuthBasic": "Grunnleggende (nettleser -popup)",
"AuthForm": "Skjemaer (påloggingsside)",
"DisabledForLocalAddresses": "Deaktivert for lokale adresser",
@@ -158,5 +158,7 @@
"BuiltIn": "Bygget inn",
"AllSearchResultsHiddenByFilter": "Alle resultatene er skjult av det anvendte filteret",
"AptUpdater": "Bruk apt til å installere oppdateringen",
"Discord": "Discord"
"Discord": "Discord",
"AddCustomFilter": "Legg til eget filter",
"Clone": "Lukk"
}

View File

@@ -350,7 +350,7 @@
"SyncLevelAddRemove": "Alleen toevoegen en verwijderen: wanneer het wordt toegevoegd of verwijderd uit {appName}, wordt deze externe app bijgewerkt.",
"SyncLevelFull": "Volledige synchronisatie: houdt deze app volledig gesynchroniseerd. Wijzigingen in {appName} worden vervolgens gesynchroniseerd met deze app. Elke wijziging die op afstand wordt aangebracht, wordt bij de volgende synchronisatie overschreven door {appName}.",
"System": "Systeem",
"SystemTimeCheckMessage": "De systeemtijd loopt verkeerd met meer dan 1 dag. Geplande taken worden mogelijk niet goed uitgevoerd tot dit is opgelost",
"SystemTimeHealthCheckMessage": "De systeemtijd loopt verkeerd met meer dan 1 dag. Geplande taken worden mogelijk niet goed uitgevoerd tot dit is opgelost",
"TableOptions": "Tabel Opties",
"TableOptionsColumnsMessage": "Kies welke kolommen zichtbaar zijn en in welke volgorde",
"TagCannotBeDeletedWhileInUse": "Kan niet verwijderd worden terwijl in gebruik",
@@ -510,5 +510,7 @@
"UpdateAppDirectlyLoadError": "Kan {appName} niet rechtstreeks updaten,",
"WouldYouLikeToRestoreBackup": "Wilt u de back-up {name} herstellen?",
"Download": "Downloaden",
"InstallLatest": "Installeer Nieuwste Versie"
"InstallLatest": "Installeer Nieuwste Versie",
"CurrentlyInstalled": "Momenteel Geïnstalleerd",
"Mixed": "Opgelost"
}

View File

@@ -240,7 +240,7 @@
"StartupDirectory": "Katalog Startowy",
"Status": "Status",
"SuggestTranslationChange": "Zaproponuj zmianę tłumaczenia",
"SystemTimeCheckMessage": "Czas systemowy jest wyłączony o więcej niż 1 dzień. Zaplanowane zadania mogą nie działać poprawnie, dopóki czas nie zostanie skorygowany",
"SystemTimeHealthCheckMessage": "Czas systemowy jest wyłączony o więcej niż 1 dzień. Zaplanowane zadania mogą nie działać poprawnie, dopóki czas nie zostanie skorygowany",
"Tags": "Tagi",
"TagsHelpText": "Dotyczy filmów z co najmniej jednym pasującym tagiem",
"TagsSettingsSummary": "Zobacz wszystkie tagi i sposób ich używania. Nieużywane tagi można usunąć",
@@ -424,5 +424,9 @@
"UpdateAppDirectlyLoadError": "Nie można bezpośrednio zaktualizować {appName},",
"AptUpdater": "Użyj apt, aby zainstalować aktualizację",
"DockerUpdater": "zaktualizuj kontener Dockera, aby otrzymać aktualizację",
"InstallLatest": "Zainstaluj najnowsze"
"InstallLatest": "Zainstaluj najnowsze",
"Clone": "Zamknij",
"Stats": "Status",
"CurrentlyInstalled": "Aktualnie zainstalowane",
"Mixed": "Naprawiony"
}

View File

@@ -21,7 +21,7 @@
"Tags": "Etiquetas",
"TableOptionsColumnsMessage": "Escolha quais colunas são visíveis e em qual ordem aparecem",
"TableOptions": "Opções da tabela",
"SystemTimeCheckMessage": "A hora do sistema está atrasada em mais de 1 dia. As tarefas agendadas podem não ocorrer corretamente até a hora ser corrigida",
"SystemTimeHealthCheckMessage": "A hora do sistema está atrasada em mais de 1 dia. As tarefas agendadas podem não ocorrer corretamente até a hora ser corrigida",
"System": "Sistema",
"Style": "Estilo",
"Status": "Estado",
@@ -501,5 +501,7 @@
"NoEventsFound": "Nenhum evento encontrado",
"RestartReloadNote": "Nota: o {appName} reiniciará e recarregará automaticamente a IU durante o processo de restauração.",
"UpdateAppDirectlyLoadError": "Não foi possível atualizar o {appName} diretamente,",
"InstallLatest": "Instalar o mais recente"
"InstallLatest": "Instalar o mais recente",
"CurrentlyInstalled": "Atualmente instalado",
"Mixed": "Corrigido"
}

View File

@@ -15,17 +15,17 @@
"AddToDownloadClient": "Adicionar lançamento ao cliente de download",
"Added": "Adicionado",
"AddedToDownloadClient": "Lançamento adicionado ao cliente",
"AddingTag": "Adicionar tag",
"AddingTag": "Adicionar etiqueta",
"Age": "Tempo de vida",
"Album": "Álbum",
"All": "Todos",
"AllIndexersHiddenDueToFilter": "Todos os indexadores estão ocultos devido ao filtro aplicado.",
"Analytics": "Análises",
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do {appName}. Isso inclui informações sobre seu navegador, quais páginas da interface Web do {appName} você usa, relatórios de erros, e a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do {appName}. Isso inclui informações sobre seu navegador, quais páginas da interface Web do {appName} você usa, relatórios de erros, a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
"ApiKey": "Chave da API",
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {length} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
"AppDataDirectory": "Diretório AppData",
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na atualização",
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na Atualização",
"AppProfileInUse": "Perfil de aplicativo em uso",
"AppProfileSelectHelpText": "Os perfis de aplicativos são usados para controlar as configurações de RSS, Pesquisa automática e Pesquisa interativa ao sincronizar o aplicativo",
"AppSettingsSummary": "Aplicativos e configurações para configurar como {appName} interage com seus programas PVR",
@@ -38,7 +38,7 @@
"ApplicationUrlHelpText": "A URL externa deste aplicativo, incluindo http(s)://, porta e URL base",
"Applications": "Aplicativos",
"Apply": "Aplicar",
"ApplyTags": "Aplicar Tags",
"ApplyTags": "Aplicar etiquetas",
"Apps": "Aplicativos",
"AreYouSureYouWantToDeleteCategory": "Tem certeza de que deseja excluir a categoria mapeada?",
"Artist": "Artista",
@@ -48,33 +48,33 @@
"AuthenticationMethodHelpText": "Exigir nome de usuário e senha para acessar o {appName}",
"AuthenticationRequired": "Autenticação exigida",
"AuthenticationRequiredHelpText": "Altere para quais solicitações a autenticação é necessária. Não mude a menos que você entenda os riscos.",
"AuthenticationRequiredWarning": "Para evitar o acesso remoto sem autenticação, {appName} agora exige que a autenticação esteja habilitada. Opcionalmente, você pode desabilitar a autenticação de endereços locais.",
"AuthenticationRequiredWarning": "Para evitar o acesso remoto sem autenticação, o {appName} agora exige que a autenticação esteja habilitada. Opcionalmente, você pode desabilitar a autenticação para endereços locais.",
"Author": "Autor",
"Automatic": "Automático",
"AutomaticSearch": "Pesquisa Automática",
"AutomaticSearch": "Pesquisa automática",
"AverageResponseTimesMs": "Tempos Médios de Resposta do Indexador (ms)",
"Backup": "Backup",
"BackupFolderHelpText": "Os caminhos relativos estarão no diretório AppData do {appName}",
"BackupIntervalHelpText": "Intervalo entre backups automáticos",
"BackupNow": "Fazer backup agora",
"BackupRetentionHelpText": "Backups automáticos anteriores ao período de retenção serão limpos automaticamente",
"BackupRetentionHelpText": "Backups automáticos anteriores ao período de retenção serão excluídos automaticamente",
"Backups": "Backups",
"BeforeUpdate": "Antes da atualização",
"BindAddress": "Fixar endereço",
"BindAddress": "Vincular endereço",
"BindAddressHelpText": "Endereço IP válido, localhost ou '*' para todas as interfaces",
"Book": "Livro",
"BookSearch": "Pesquisar Livro",
"BookSearchTypes": "Tipos de Pesquisa de Livros",
"Branch": "Ramificação",
"BranchUpdate": "Ramificação para atualização do {appName}",
"BranchUpdate": "Ramificação para atualizar o {appName}",
"BranchUpdateMechanism": "Ramificação usada pelo mecanismo externo de atualização",
"BypassProxyForLocalAddresses": "Ignorar proxy para endereços locais",
"Cancel": "Cancelar",
"CancelPendingTask": "Tem certeza de que deseja cancelar essa tarefa pendente?",
"CancelPendingTask": "Tem certeza de que deseja cancelar esta tarefa pendente?",
"Categories": "Categorias",
"Category": "Categoria",
"CertificateValidation": "Validação de certificado",
"CertificateValidationHelpText": "Alterar o quão estrita é a validação da certificação HTTPS",
"CertificateValidationHelpText": "Alterar a rigidez da validação da certificação HTTPS",
"ChangeHasNotBeenSavedYet": "A alteração ainda não foi salva",
"Clear": "Limpar",
"ClearHistory": "Limpar histórico",
@@ -101,7 +101,7 @@
"DeleteAppProfile": "Excluir perfil do aplicativo",
"DeleteApplication": "Excluir aplicativo",
"DeleteApplicationMessageText": "Tem certeza de que deseja excluir o aplicativo '{name}'?",
"DeleteBackup": "Excluir Backup",
"DeleteBackup": "Excluir backup",
"DeleteBackupMessageText": "Tem certeza de que deseja excluir o backup '{name}'?",
"DeleteClientCategory": "Excluir Categoria de Cliente de Download",
"DeleteDownloadClient": "Excluir cliente de download",
@@ -110,8 +110,8 @@
"DeleteIndexerProxyMessageText": "Tem certeza de que deseja excluir o proxy do indexador '{name}'?",
"DeleteNotification": "Excluir notificação",
"DeleteNotificationMessageText": "Tem certeza de que deseja excluir a notificação '{name}'?",
"DeleteTag": "Excluir Etiqueta",
"DeleteTagMessageText": "Tem certeza de que deseja excluir a tag '{label}'?",
"DeleteTag": "Excluir etiqueta",
"DeleteTagMessageText": "Tem certeza de que deseja excluir a etiqueta '{label}'?",
"Description": "Descrição",
"Details": "Detalhes",
"DevelopmentSettings": "Configurações de desenvolvimento",
@@ -139,7 +139,7 @@
"EnableInteractiveSearch": "Ativar pesquisa interativa",
"EnableInteractiveSearchHelpText": "Será usado com a pesquisa interativa",
"EnableRss": "Habilitar RSS",
"EnableRssHelpText": "Habilitar feed RSS para indexador",
"EnableRssHelpText": "Habilitar feed RSS para o indexador",
"EnableSSL": "Habilitar SSL",
"EnableSslHelpText": " Requer a reinicialização com a execução como administrador para fazer efeito",
"Enabled": "Habilitado",
@@ -163,7 +163,7 @@
"Fixed": "Corrigido",
"FocusSearchBox": "Selecionar a caixa de pesquisa",
"Folder": "Pasta",
"ForMoreInformationOnTheIndividualDownloadClients": "Para saber mais sobre cada cliente de download, clique nos botões de informações.",
"ForMoreInformationOnTheIndividualDownloadClients": "Para saber mais sobre os clientes de download individuais, clique nos botões de informações.",
"FullSync": "Sincronização completa",
"General": "Geral",
"GeneralSettings": "Configurações gerais",
@@ -173,7 +173,7 @@
"GrabTitle": "Obter Título",
"Grabbed": "Obtido",
"Grabs": "Obtenções",
"Health": "Saúde",
"Health": "Integridade",
"NoIssuesWithYourConfiguration": "Nenhum problema com sua configuração",
"HideAdvanced": "Ocultar opções avançadas",
"History": "Histórico",
@@ -195,7 +195,7 @@
"IndexerDetails": "Detalhes do Indexador",
"IndexerDisabled": "Indexador Desabilitado",
"IndexerFailureRate": "Taxa de falha do indexador",
"IndexerFlags": "Sinalizadores do Indexador",
"IndexerFlags": "Sinalizadores do indexador",
"IndexerHealthCheckNoIndexers": "Não há indexadores habilitados, o {appName} não retornará resultados para a pesquisa",
"IndexerInfo": "Info do Indexador",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas por mais de 6 horas",
@@ -204,7 +204,7 @@
"IndexerNoDefinitionCheckHealthCheckMessage": "Os indexadores não têm definição e não funcionarão: {indexerNames}. Remova e (ou) adicione novamente ao {appName}.",
"IndexerObsoleteCheckMessage": "Os seguintes indexadores são obsoletos ou foram atualizados: {0}. Remova-os e/ou adicione-os novamente ao {appName}",
"IndexerPriority": "Prioridade do indexador",
"IndexerPriorityHelpText": "Prioridade do Indexador de 1 (Mais Alta) a 50 (Mais Baixa). Padrão: 25.",
"IndexerPriorityHelpText": "Prioridade do Indexador de 1 (mais alta) a 50 (mais baixa). Padrão: 25.",
"IndexerProxies": "Proxies do Indexador",
"IndexerProxy": "Proxy do Indexador",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Todos os proxies estão indisponíveis devido a falhas",
@@ -225,23 +225,23 @@
"InstanceNameHelpText": "Nome da instância na aba e para o nome do aplicativo Syslog",
"InteractiveSearch": "Pesquisa interativa",
"Interval": "Intervalo",
"KeyboardShortcuts": "Atalhos do Teclado",
"KeyboardShortcuts": "Atalhos do teclado",
"Label": "Rótulo",
"Language": "Idioma",
"LastDuration": "Última Duração",
"LastExecution": "Última Execução",
"LastDuration": "Última duração",
"LastExecution": "Última execução",
"LastFailure": "Última Falha",
"LastWriteTime": "Hora da Última Gravação",
"LaunchBrowserHelpText": " Abrir o navegador Web e navegar até a página inicial do {appName} ao iniciar o aplicativo.",
"LastWriteTime": "Hora da última gravação",
"LaunchBrowserHelpText": " Abrir um navegador e navegar até a página inicial do {appName} ao iniciar o aplicativo.",
"Level": "Nível",
"Link": "Link",
"LogFiles": "Arquivos de registro",
"LogLevel": "Nível de registro",
"LogLevelTraceHelpTextWarning": "O registro em log deve ser habilitado apenas temporariamente",
"LogFiles": "Arquivos de log",
"LogLevel": "Nível de registro em log",
"LogLevelTraceHelpTextWarning": "O registro em log para rastreamento deve ser habilitado apenas temporariamente",
"Logging": "Registro em log",
"Logs": "Registros",
"MIA": "Ausentes",
"MaintenanceRelease": "Versão de manutenção: correções de bugs e outros aprimoramentos. Consulte o Histórico de Commit do Github para obter mais detalhes",
"MaintenanceRelease": "Versão de manutenção: correções de bugs e outras melhorias. Consulte o Histórico de commit do Github para saber mais",
"Manual": "Manual",
"MappedCategories": "Categorias Mapeadas",
"MappedDrivesRunningAsService": "As unidades de rede mapeadas não estão disponíveis quando executadas como um serviço do Windows. Consulte as Perguntas frequentes para saber mais",
@@ -414,7 +414,7 @@
"SyncProfile": "Perfil de Sincronização",
"SyncProfiles": "Perfis de Sincronização",
"System": "Sistema",
"SystemTimeCheckMessage": "A hora do sistema está desligada por mais de 1 dia. Tarefas agendadas podem não ser executadas corretamente até que o horário seja corrigido",
"SystemTimeHealthCheckMessage": "A hora do sistema está desligada por mais de 1 dia. Tarefas agendadas podem não ser executadas corretamente até que o horário seja corrigido",
"TVSearchTypes": "Tipos de Pesquisa de Seriados",
"TableOptions": "Opções de Tabela",
"TableOptionsColumnsMessage": "Escolha quais colunas são visíveis e em que ordem aparecem",
@@ -499,20 +499,20 @@
"Yes": "Sim",
"YesCancel": "Sim, Cancelar",
"Yesterday": "Ontem",
"ApplyChanges": "Aplicar Mudanças",
"ApplyChanges": "Aplicar mudanças",
"ApplyTagsHelpTextAdd": "Adicionar: adicione as etiquetas à lista existente de etiquetas",
"Implementation": "Implementação",
"SelectIndexers": "Pesquisar indexadores",
"ApplyTagsHelpTextHowToApplyApplications": "Como aplicar tags ao autor selecionado",
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar tags aos indexadores selecionados",
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar etiquetas aos indexadores selecionados",
"ApplyTagsHelpTextRemove": "Remover: remove as etiquetas inseridas",
"ApplyTagsHelpTextReplace": "Substituir: Substitua as etiquetas pelas etiquetas inseridas (não digite nenhuma etiqueta para limpar todas as etiquetas)",
"ApplyTagsHelpTextReplace": "Substituir: substitui as etiquetas atuais pelas inseridas (deixe em branco para limpar todas as etiquetas)",
"CountDownloadClientsSelected": "{count} cliente(s) de download selecionado(s)",
"CountIndexersSelected": "{count} indexador(es) selecionado(s)",
"DeleteSelectedApplicationsMessageText": "Tem certeza de que deseja excluir {count} aplicativos selecionados?",
"DeleteSelectedDownloadClients": "Excluir cliente(s) de download",
"DeleteSelectedDownloadClientsMessageText": "Tem certeza de que deseja excluir {count} cliente(s) de download selecionado(s)?",
"DeleteSelectedIndexersMessageText": "Tem certeza de que deseja excluir {count} indexadores selecionados?",
"DeleteSelectedDownloadClientsMessageText": "Tem certeza de que deseja excluir o(s) {count} cliente(s) de download selecionado(s)?",
"DeleteSelectedIndexersMessageText": "Tem certeza de que deseja excluir o(s) {count} indexador(es) selecionado(s)?",
"DownloadClientPriorityHelpText": "Priorizar vários clientes de download. Usamos um rodízio para clientes com a mesma prioridade.",
"EditSelectedDownloadClients": "Editar clientes de download selecionados",
"EditSelectedIndexers": "Editar indexadores selecionados",
@@ -531,7 +531,7 @@
"FoundCountReleases": "Encontrou {itemCount} lançamentos",
"DeleteSelectedIndexer": "Excluir indexador selecionado",
"IndexerCategories": "Categorias do indexador",
"IndexerDownloadClientHelpText": "Especifique qual cliente de download é usado para capturas feitas no {appName} a partir deste indexador",
"IndexerDownloadClientHelpText": "Especifique qual cliente de download é usado para baixar deste indexador no {appName}",
"IndexerStatus": "Status do indexador",
"ManageApplications": "Gerenciar aplicativos",
"NoHistoryFound": "Nenhum histórico encontrado",
@@ -557,11 +557,11 @@
"IndexerDownloadClientHealthCheckMessage": "Indexadores com clientes de download inválidos: {indexerNames}.",
"DeleteAppProfileMessageText": "Tem certeza de que deseja excluir o perfil do aplicativo '{name}'?",
"AppUpdated": "{appName} atualizado",
"AppUpdatedVersion": "{appName} foi atualizado para a versão `{version}`, para obter as alterações mais recentes, você precisará recarregar {appName}",
"ConnectionLostToBackend": "{appName} perdeu a conexão com o backend e precisará ser recarregado para restaurar a funcionalidade.",
"AppUpdatedVersion": "O {appName} foi atualizado para a versão `{version}`. Para obter as alterações mais recentes, recarregue o {appName}",
"ConnectionLostToBackend": "O {appName} perdeu a conexão com o backend e precisará ser recarregado para restaurar a funcionalidade.",
"RecentChanges": "Mudanças Recentes",
"WhatsNew": "O que há de novo?",
"ConnectionLostReconnect": "{appName} tentará se conectar automaticamente ou você pode clicar em recarregar abaixo.",
"ConnectionLostReconnect": "O {appName} tentará se conectar automaticamente ou você pode clicar em Recarregar abaixo.",
"AddApplicationImplementation": "Adicionar Aplicativo - {implementationName}",
"AddConnectionImplementation": "Adicionar conexão - {implementationName}",
"EditApplicationImplementation": "Editar Aplicativo - {implementationName}",
@@ -601,12 +601,12 @@
"NoIndexerCategories": "Nenhuma categoria encontrada para este indexador",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirme a nova senha",
"PasswordConfirmation": "Confirmação Da Senha",
"InvalidUILanguage": "Sua UI está definida com um idioma inválido, corrija-a e salve suas configurações",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Seja para usar o layout de conteúdo configurado do qBittorrent, o layout original do torrent ou sempre criar uma subpasta (qBittorrent 4.3.2+)",
"DownloadClientQbittorrentSettingsContentLayout": "Layout de Conteúdo",
"InvalidUILanguage": "Sua interface está definida com um idioma inválido, corrija-o e salve suas configurações",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Se devemos usar o layout de conteúdo configurado do qBittorrent, o layout original do torrent ou sempre criar uma subpasta (qBittorrent 4.3.2+)",
"DownloadClientQbittorrentSettingsContentLayout": "Layout de conteúdo",
"IndexerId": "ID do Indexador",
"DownloadClientAriaSettingsDirectoryHelpText": "Local opcional para colocar downloads, deixe em branco para usar o local padrão do Aria2",
"ManageClients": "Gerenciar Clientes",
"ManageClients": "Gerenciar clientes",
"NoApplicationsFound": "Nenhum aplicativo encontrado",
"NotificationsEmailSettingsUseEncryptionHelpText": "Se preferir usar criptografia se configurado no servidor, usar sempre criptografia via SSL (somente porta 465) ou StartTLS (qualquer outra porta) ou nunca usar criptografia",
"NotificationsEmailSettingsUseEncryption": "Usar Criptografia",
@@ -683,54 +683,54 @@
"IndexerSettingsQueryLimitHelpText": "O número máximo de consultas especificadas pela respectiva unidade que {appName} permitirá ao site",
"IndexerSettingsSeedRatioHelpText": "A proporção que um torrent deve atingir antes de parar, vazio usa o padrão do cliente de download. A proporção deve ser de pelo menos 1,0 e seguir as regras dos indexadores",
"DefaultCategory": "Categoria Padrão",
"Destination": "Destinação",
"Destination": "Destino",
"Directory": "Diretório",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL json do deluge, consulte {url}",
"DownloadClientFloodSettingsAdditionalTags": "Etiquetas Adicionais",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL do JSON do Deluge, consulte {url}",
"DownloadClientFloodSettingsAdditionalTags": "Etiquetas adicionais",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Adiciona propriedades de mídia como etiquetas. As dicas são exemplos.",
"DownloadClientFloodSettingsUrlBaseHelpText": "Adiciona um prefixo à API Flood, como {url}",
"DownloadClientFloodSettingsUrlBaseHelpText": "Adiciona um prefixo à API do Flood, como {url}",
"DownloadClientFreeboxSettingsApiUrl": "URL da API",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Defina o URL base da API Freebox com a versão da API, por exemplo, '{url}', o padrão é '{defaultApiUrl}'",
"DownloadClientFreeboxSettingsAppId": "ID do App",
"DownloadClientFreeboxSettingsAppIdHelpText": "ID do aplicativo fornecido ao criar acesso à API Freebox (ou seja, 'app_id')",
"DownloadClientFreeboxSettingsAppToken": "Token do App",
"DownloadClientFreeboxSettingsPortHelpText": "Porta usada para acessar a interface do Freebox, o padrão é '{port}'",
"DownloadClientNzbgetSettingsAddPausedHelpText": "Esta opção requer pelo menos NzbGet versão 16.0",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Defina o URL base da API do Freebox com a versão da API, por exemplo, \"{url}\", o padrão é \"{defaultApiUrl}\"",
"DownloadClientFreeboxSettingsAppId": "ID do aplicativo",
"DownloadClientFreeboxSettingsAppIdHelpText": "ID do aplicativo fornecida ao criar acesso à API do Freebox (ou seja, \"app_id\")",
"DownloadClientFreeboxSettingsAppToken": "Token do aplicativo",
"DownloadClientFreeboxSettingsPortHelpText": "Porta usada para acessar a interface do Freebox, o padrão é \"{port}\"",
"DownloadClientNzbgetSettingsAddPausedHelpText": "Esta opção requer pelo menos a versão 16.0 do NzbGet",
"DownloadClientPneumaticSettingsStrmFolder": "Pasta Strm",
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Os arquivos .strm nesta pasta serão importados pelo drone",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Primeiro e Último Primeiro",
"DownloadClientQbittorrentSettingsSequentialOrder": "Ordem Sequencial",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Baixe em ordem sequencial (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Use uma conexão segura. Consulte Opções - UI da Web - 'Usar HTTPS em vez de HTTP' em qBittorrent.",
"DownloadClientRTorrentSettingsAddStopped": "Adicionar Parado",
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Habilitando, irá adicionar torrents e magnets ao rTorrent em um estado parado. Isso pode quebrar os arquivos magnéticos.",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Priorizar o primeiro e o último",
"DownloadClientQbittorrentSettingsSequentialOrder": "Ordem sequencial",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Baixar em ordem sequencial (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Usar uma conexão segura. Consulte Opções -> Interface de Usuário da Web -> \"Usar HTTPS ao invés do HTTP\" no qBittorrent.",
"DownloadClientRTorrentSettingsAddStopped": "Adicionar parado",
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Habilitar esta opção adicionará os torrents e links magnéticos ao rTorrent em um estado parado. Isso pode quebrar os arquivos magnéticos.",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Local opcional para colocar downloads, deixe em branco para usar o local padrão do rTorrent",
"DownloadClientRTorrentSettingsUrlPath": "Caminho da URL",
"DownloadClientSettingsAddPaused": "Adicionar Pausado",
"DownloadClientSettingsInitialState": "Estado Inicial",
"DownloadClientSettingsInitialStateHelpText": "Estado inicial dos torrents adicionados a {clientName}",
"DownloadClientRTorrentSettingsUrlPath": "Caminho do URL",
"DownloadClientSettingsAddPaused": "Adicionar pausado",
"DownloadClientSettingsInitialState": "Estado inicial",
"DownloadClientSettingsInitialStateHelpText": "Estado inicial dos torrents adicionados ao {clientName}",
"DownloadClientSettingsPriorityItemHelpText": "Prioridade de uso ao pegar itens",
"DownloadClientSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL {clientName}, como {url}",
"DownloadClientSettingsUseSslHelpText": "Use conexão segura ao conectar-se a {clientName}",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL rpc {clientName}, por exemplo, {url}, o padrão é '{defaultUrl}'",
"DownloadClientSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL do {clientName}, como {url}",
"DownloadClientSettingsUseSslHelpText": "Usar conexão segura ao conectar-se ao {clientName}",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL de chamada remota do {clientName}, por exemplo, {url}. O padrão é \"{defaultUrl}\"",
"TorrentBlackholeSaveMagnetFilesExtension": "Salvar Arquivos Magnet com Extensão",
"TorrentBlackholeTorrentFolder": "Pasta do Torrent",
"UsenetBlackholeNzbFolder": "Pasta Nzb",
"XmlRpcPath": "Caminho RPC XML",
"BlackholeFolderHelpText": "Pasta na qual {appName} armazenará o arquivo {extension}",
"BlackholeFolderHelpText": "Pasta na qual o {appName} armazenará o arquivo {extension}",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Pasta compartilhada opcional para colocar downloads, deixe em branco para usar o local padrão do Download Station",
"DownloadClientFloodSettingsTagsHelpText": "Etiquetas iniciais de um download. Para ser reconhecido, um download deve ter todas as etiquetas iniciais. Isso evita conflitos com downloads não relacionados.",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token do aplicativo recuperado ao criar acesso à API Freebox (ou seja, 'app_token')",
"DownloadClientFreeboxSettingsHostHelpText": "Nome do host ou endereço IP do host do Freebox, o padrão é '{url}' (só funcionará se estiver na mesma rede)",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token do aplicativo recuperado ao criar acesso à API do Freebox (ou seja, \"app_token\")",
"DownloadClientFreeboxSettingsHostHelpText": "Nome ou endereço IP do host do Freebox, o padrão é \"{url}\" (só funcionará se estiver na mesma rede)",
"DownloadClientPneumaticSettingsNzbFolder": "Pasta Nzb",
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Esta pasta precisará estar acessível no XBMC",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Baixe a primeira e a última peças primeiro (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estado inicial para torrents adicionados ao qBittorrent. Observe que os Torrents Forçados não obedecem às restrições de semeação",
"DownloadClientRTorrentSettingsUrlPathHelpText": "Caminho para o endpoint XMLRPC, consulte {url}. Geralmente é RPC2 ou [caminho para ruTorrent]{url2} ao usar o ruTorrent.",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Baixe a primeira e a última partes antes (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estado inicial para torrents adicionados ao qBittorrent. Observe que torrents forçados não obedecem às restrições de semeadura",
"DownloadClientRTorrentSettingsUrlPathHelpText": "Caminho para o ponto de extremidade do XMLRPC, consulte {url}. Geralmente é RPC2 ou [caminho para ruTorrent]{url2} ao usar o ruTorrent.",
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Categoria de reserva padrão se não existir nenhuma categoria mapeada para um lançamento. Adicionar uma categoria específica para {appName} evita conflitos com downloads não relacionados que não sejam de {appName}. Usar uma categoria é opcional, mas altamente recomendado. Cria um subdiretório [categoria] no diretório de saída.",
"DownloadClientSettingsDefaultCategoryHelpText": "Categoria de reserva padrão se não existir nenhuma categoria mapeada para um lançamento. Adicionar uma categoria específica para {appName} evita conflitos com downloads não relacionados que não sejam de {appName}. Usar uma categoria é opcional, mas altamente recomendado.",
"DownloadClientSettingsDestinationHelpText": "Especifica manualmente o destino do download, deixe em branco para usar o padrão",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Local opcional para colocar downloads, deixe em branco para usar o local de transmissão padrão",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Local opcional para colocar os downloads, deixe em branco para usar o local padrão do Transmission",
"SecretToken": "Token Secreto",
"TorrentBlackholeSaveMagnetFiles": "Salvar Arquivos Magnets",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Extensão a ser usada para links magnet, o padrão é '.magnet'",
@@ -744,7 +744,7 @@
"Mixed": "Misturado",
"Donate": "Doar",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronizar Lista de Bloqueio de Hashes de Torrents Rejeitados Enquanto Baixando",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "se um torrent for bloqueado por hash, ele pode não ser rejeitado corretamente durante o RSS/Pesquisa de alguns indexadores. Ativar isso permitirá que ele seja rejeitado após o torrent ser capturado, mas antes de ser enviado ao cliente.",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Se um torrent for bloqueado por hash, pode não ser rejeitado corretamente durante o RSS/Pesquisa de alguns indexadores. Ativar isso permitirá que ele seja rejeitado após o torrent ser capturado, mas antes de ser enviado ao cliente.",
"ClickToChangeQueryOptions": "Clique para alterar as opções de consulta",
"IndexerMTeamTpSettingsApiKeyHelpText": "Chave API do Site (Encontrada no Painel de Controle do Usuário => Segurança => Laboratório)",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Pesquise apenas lançamentos freeleech",
@@ -754,17 +754,17 @@
"ProxyValidationBadRequest": "Falha ao testar o proxy. Código de status: {statusCode}",
"ProxyValidationUnableToConnect": "Não foi possível conectar-se ao proxy: {exceptionMessage}. Verifique o log em torno deste erro para obter detalhes",
"Default": "Padrão",
"ManualGrab": "Baixar Manualmente",
"ManualGrab": "Baixar manualmente",
"Open": "Abrir",
"OverrideAndAddToDownloadClient": "Substituir e adicionar ao cliente de download",
"OverrideGrabModalTitle": "Substituir e Baixar - {title}",
"PrioritySettings": "Prioridade: {priority}",
"GrabRelease": "Baixar Lançamento",
"GrabRelease": "Baixar lançamento",
"SelectDownloadClientModalTitle": "{modalTitle} - Selecionar Cliente de Download",
"Any": "Quaisquer",
"Script": "Script",
"BuiltIn": "Embutido",
"InfoUrl": "URL da info",
"InfoUrl": "URL de informações",
"PublishedDate": "Data de Publicação",
"Redirected": "Redirecionar",
"AverageQueries": "Média de Consultas",
@@ -786,7 +786,7 @@
"IndexerAvistazSettingsPidHelpText": "PID da página Minha Conta ou Meu Perfil",
"IndexerAvistazSettingsUsernameHelpTextWarning": "Somente membros com rank e acima podem usar a API neste indexador.",
"RestartReloadNote": "Observação: o {appName} reiniciará automaticamente e recarregará a interface durante o processo de restauração.",
"DockerUpdater": "Atualize o contêiner docker para receber a atualização",
"DockerUpdater": "Atualize o contêiner do Docker para receber a atualização",
"Download": "Baixar",
"ErrorRestoringBackup": "Erro ao restaurar o backup",
"ExternalUpdater": "O {appName} está configurado para usar um mecanismo de atualização externo",
@@ -803,5 +803,8 @@
"InstallLatest": "Instalar o mais recente",
"InstallMajorVersionUpdate": "Instalar Atualização",
"InstallMajorVersionUpdateMessage": "Esta atualização instalará uma nova versão principal e pode não ser compatível com o seu sistema. Tem certeza de que deseja instalar esta atualização?",
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações."
"InstallMajorVersionUpdateMessageLink": "Verifique [{domain}]({url}) para obter mais informações.",
"FailedToFetchSettings": "Falha ao obter configurações",
"CurrentlyInstalled": "Atualmente instalado",
"PreviouslyInstalled": "Instalado anteriormente"
}

View File

@@ -90,7 +90,7 @@
"Tags": "Etichete",
"TableOptionsColumnsMessage": "Alege ce coloane sunt vizibile și în ce ordine apar",
"TableOptions": "Opțiuni tabel",
"SystemTimeCheckMessage": "Ora sistemului este diferită cu mai mult de 1 zi. Operațiunile programate s-ar putea să nu funcționeze corect până când ora nu este corectată",
"SystemTimeHealthCheckMessage": "Ora sistemului este diferită cu mai mult de 1 zi. Operațiunile programate s-ar putea să nu funcționeze corect până când ora nu este corectată",
"System": "Sistem",
"Style": "Stil",
"Status": "Status",
@@ -226,7 +226,7 @@
"BackupRetentionHelpText": "Copiile de rezervă automate mai vechi decât perioada de păstrare vor fi curățate automat",
"BindAddress": "Adresa de legare",
"ChangeHasNotBeenSavedYet": "Modificarea nu a fost încă salvată",
"CloneProfile": "Clonați profil",
"CloneProfile": "Clonează Profil",
"NoLeaveIt": "Nu, lasă-l",
"DatabaseMigration": "Migrarea BD",
"DeleteBackupMessageText": "Sigur doriți să ștergeți copia de siguranță „{0}”?",
@@ -329,7 +329,7 @@
"IndexerHealthCheckNoIndexers": "Niciun indexator nu este activat, {appName} nu va returna rezultate la căutare.",
"IndexerProxy": "Proxy indexator",
"IndexerVipExpiredHealthCheckMessage": "Beneficiile VIP pentru indexator au expirat: {indexerNames}",
"IndexerNoDefinitionCheckHealthCheckMessage": "Indexatorii nu au definiție și nu vor funcționa: {0}. Vă rugăm să-i ștergeți și (sau) să-i adăugați din nou în {appName}",
"IndexerNoDefinitionCheckHealthCheckMessage": "Indexatorii nu au definiție și nu vor funcționa: {indexerNames}. Vă rugăm să-i ștergeți și (sau) să-i adăugați din nou în {appName}",
"IndexerRss": "RSS indexator",
"EnabledRedirected": "Activat, Redirecționat",
"Ended": "Încheiat",
@@ -486,5 +486,10 @@
"NoEventsFound": "Nu s-au găsit evenimente",
"RestartReloadNote": "Notă: {appName} va reporni și reîncărca automat interfața de utilizare în timpul procesului de restaurare.",
"AptUpdater": "Utilizați apt pentru a instala actualizarea",
"InstallLatest": "Instalați cel mai recent"
"InstallLatest": "Instalați cel mai recent",
"Clone": "Clonează",
"Stats": "Status",
"CurrentlyInstalled": "În prezent instalat",
"Mixed": "Fix",
"Season": "Motiv"
}

View File

@@ -87,7 +87,7 @@
"Level": "Уровень",
"Ok": "Ок",
"AddDownloadClient": "Добавить клиент загрузки",
"UpdateMechanismHelpText": "Использовать встроенный инструмент обновления {appName} или скрипт.",
"UpdateMechanismHelpText": "Использовать встроенный инструмент обновления {appName} или скрипт",
"IndexerStatusUnavailableHealthCheckMessage": "Индексаторы недоступны из-за ошибок: {indexerNames}",
"NoTagsHaveBeenAddedYet": "Теги ещё не добавлены",
"UnableToLoadTags": "Не удалось загрузить теги",
@@ -230,7 +230,7 @@
"Status": "Статус",
"Style": "Стиль",
"SuggestTranslationChange": "Предложить изменение перевода",
"SystemTimeCheckMessage": "Системное время отклонилось более чем на 1 день. Запланированные задания могут не работать правильно, пока время не будет исправлено",
"SystemTimeHealthCheckMessage": "Системное время отклонилось более чем на 1 день. Запланированные задания могут не работать правильно, пока время не будет исправлено",
"TableOptionsColumnsMessage": "Выберите видимые столбцы и порядок их отображения",
"TagIsNotUsedAndCanBeDeleted": "Тег не используется и может быть удалён",
"TagsHelpText": "Применяется к индексаторам, имеющим хотя бы один совпадающий тег",
@@ -662,7 +662,7 @@
"IndexerDetails": "Подробности индексатора",
"EditCategory": "Редактировать категорию",
"FoundCountReleases": "Найдено релизов: {itemCount}",
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Искать только релизы freeleech",
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Искать только релизы с freeleech",
"IndexerBeyondHDSettingsLimitedOnly": "Только лимитированные",
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Искать только возвраты",
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Искать только повторы",
@@ -677,7 +677,7 @@
"NoIndexerCategories": "Нет категорий для этого индексатора",
"IndexerVipExpiredHealthCheckMessage": "Привилегии VIP для индексатора истекли: {indexerNames}",
"DefaultCategory": "Категория по умолчанию",
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Показать только релизы freeleech",
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Показать только релизы с freeleech",
"IndexerHDBitsSettingsOrigins": "Источники",
"IndexerNzbIndexSettingsApiKeyHelpText": "Ключ API сайта",
"IndexerOrpheusSettingsApiKeyHelpText": "API ключ сайта (Находится в Настройки => Настройки доступа)",
@@ -694,7 +694,7 @@
"IndexerHDBitsSettingsUseFilenamesHelpText": "Выберите этот вариант, если хотите использовать имена файлов торрента в качестве названий релизов",
"IndexerHDBitsSettingsUsernameHelpText": "Имя пользователя сайта",
"IndexerSettingsCookieHelpText": "Cookie сайта",
"IndexerSettingsFreeleechOnly": "Только Freeleech",
"IndexerSettingsFreeleechOnly": "Только с freeleech",
"IndexerSettingsPasskey": "Pass Key",
"IndexerId": "ID индексатора",
"DeleteSelectedIndexers": "Удалить выбранные индексаторы",
@@ -748,7 +748,7 @@
"DownloadClientSettingsPriorityItemHelpText": "Приоритет, используемый при захвате элементов",
"GrabTitle": "Захватить название",
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Искать только релизы с freeleech",
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Искать только freeleech (Лимитированная отдача)",
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Искать только с freeleech (Лимитированная отдача)",
"IndexerBeyondHDSettingsRefundOnly": "Только возврат",
"IndexerBeyondHDSettingsRssKeyHelpText": "Ключ RSS с сайта (Находится в Моя безопасность => Ключ RSS)",
"IndexerDownloadClientHelpText": "Определите клиент загрузки, используемый для загрузки из этого индексатора в {appName}.",
@@ -787,7 +787,7 @@
"IndexerAvistazSettingsUsernameHelpText": "Имя пользователя сайта",
"AptUpdater": "Использовать apt для установки обновления",
"Download": "Загрузить",
"ErrorRestoringBackup": "Восстановить резервную копию",
"ErrorRestoringBackup": "Ошибка восстановления резервной копии",
"FailedToFetchUpdates": "Не удалось загрузить обновления",
"LogFilesLocation": "Файлы журнала расположены в: {location}",
"Logout": "Завершить сеанс",
@@ -800,8 +800,11 @@
"UpdaterLogFiles": "Файлы журнала обновления",
"WouldYouLikeToRestoreBackup": "Хотите восстановить резервную копию '{name}'?",
"Install": "Установить",
"InstallLatest": "Установить последнюю версию",
"InstallMajorVersionUpdateMessageLink": "Пожалуйста, проверьте [{domain}]({url}) для получения дополнительной информации.",
"InstallLatest": "Установить последнюю",
"InstallMajorVersionUpdateMessageLink": "Для получения дополнительной информации посетите [{domain}]({url}).",
"InstallMajorVersionUpdate": "Установить обновление",
"InstallMajorVersionUpdateMessage": "Это обновление установит новую основную версию и может быть несовместимо с вашей системой. Вы уверены, что хотите установить это обновление?"
"InstallMajorVersionUpdateMessage": "Это обновление установит новую версию, которая может не поддерживаться вашей системой. Вы уверены, что хотите установить это обновление?",
"FailedToFetchSettings": "Не удалось загрузить настройки",
"CurrentlyInstalled": "Установлено",
"PreviouslyInstalled": "Ранее установленный"
}

View File

@@ -147,5 +147,6 @@
"BuiltIn": "Vstavaný",
"AllSearchResultsHiddenByFilter": "Použitý filter skryje všetky výsledky",
"AptUpdater": "Použiť apt pre inštaláciu aktualizácie",
"Discord": "Discord"
"Discord": "Discord",
"Clone": "Zatvoriť"
}

View File

@@ -114,7 +114,7 @@
"Cancel": "Avbryt",
"Apply": "TIllämpa",
"Age": "Ålder",
"SystemTimeCheckMessage": "Systemklockan går fel med mer än en dag. Schemalagda uppgifter kan få problem att köras innan tiden är korrigerad",
"SystemTimeHealthCheckMessage": "Systemklockan går fel med mer än en dag. Schemalagda uppgifter kan få problem att köras innan tiden är korrigerad",
"HomePage": "Hemsida",
"IndexerPriority": "Indexerprioritet",
"Reddit": "Reddit",
@@ -458,5 +458,8 @@
"AptUpdater": "Använd apt för att installera uppdateringen",
"Download": "Ladda ner",
"ExternalUpdater": "{appName} är konfigurerad för att använda en extern uppdateringsmekanism",
"InstallLatest": "Installera senaste"
"InstallLatest": "Installera senaste",
"Clone": "Avsluta",
"Mixed": "Fast",
"CurrentlyInstalled": "För närvarande installerad"
}

View File

@@ -99,7 +99,7 @@
"ScriptPath": "เส้นทางสคริปต์",
"Seeders": "Seeders",
"SelectAll": "เลือกทั้งหมด",
"SystemTimeCheckMessage": "เวลาของระบบปิดมากกว่า 1 วัน งานที่ตั้งเวลาไว้อาจทำงานไม่ถูกต้องจนกว่าจะมีการแก้ไขเวลา",
"SystemTimeHealthCheckMessage": "เวลาของระบบปิดมากกว่า 1 วัน งานที่ตั้งเวลาไว้อาจทำงานไม่ถูกต้องจนกว่าจะมีการแก้ไขเวลา",
"UnableToAddANewNotificationPleaseTryAgain": "ไม่สามารถเพิ่มการแจ้งเตือนใหม่โปรดลองอีกครั้ง",
"BackupsLoadError": "ไม่สามารถโหลดข้อมูลสำรอง",
"UnableToLoadNotifications": "ไม่สามารถโหลดการแจ้งเตือน",
@@ -373,5 +373,10 @@
"NoEventsFound": "ไม่พบกิจกรรม",
"RestartReloadNote": "หมายเหตุ: {appName} จะรีสตาร์ทและโหลด UI ใหม่โดยอัตโนมัติในระหว่างกระบวนการกู้คืน",
"UpdateAppDirectlyLoadError": "ไม่สามารถอัปเดต {appName} ได้โดยตรง",
"InstallLatest": "ติดตั้งล่าสุด"
"InstallLatest": "ติดตั้งล่าสุด",
"Clone": "ปิด",
"Mixed": "แก้ไขแล้ว",
"Stats": "สถานะ",
"CurrentlyInstalled": "ติดตั้งแล้ว",
"Season": "เหตุผล"
}

View File

@@ -4,19 +4,19 @@
"Dates": "Tarih",
"Date": "Tarih",
"Connections": "Bağlantılar",
"Connect": "Bağlan",
"Connect": "Bildirimler",
"Clear": "Temizle",
"Sort": "Sınıflandır",
"SetTags": "Etiketleri Ayarla",
"Scheduled": "Planlı",
"ProxyResolveIpHealthCheckMessage": "{proxyHostName} Yapılandırılmış Proxy Ana Bilgisayarının IP Adresi çözülemedi",
"ProxyFailedToTestHealthCheckMessage": "Proxy ile test edilemedi: {url}",
"ProxyBadRequestHealthCheckMessage": "Proxy ile test edilemedi. DurumKodu: {statusCode}",
"ProxyResolveIpHealthCheckMessage": "Yapılandırılmış Proxy Ana Bilgisayarı {proxyHostName} için IP Adresi çözümlenemedi",
"ProxyFailedToTestHealthCheckMessage": "Proxy test edilemedi: {url}",
"ProxyBadRequestHealthCheckMessage": "Proxy test edilemedi. Durum kodu: {statusCode}",
"Proxy": "Proxy",
"Logging": "Loglama",
"LogFiles": "Log dosyaları",
"Host": "Ana bilgisayar",
"GeneralSettingsSummary": "Port, SSL, kullanıcı adı/şifre, proxy, analitikler ve güncellemeler",
"LogFiles": "Log Kayıtları",
"Host": "Sunucu",
"GeneralSettingsSummary": "Port, SSL, kullanıcı adı/şifre, proxy, analiz ve güncellemeler",
"Folder": "Klasör",
"Files": "Dosyalar",
"Filename": "Dosya adı",
@@ -25,11 +25,11 @@
"About": "Hakkında",
"View": "Görünüm",
"Updates": "Güncellemeler",
"UpdateUiNotWritableHealthCheckMessage": "'{uiFolder}' UI klasörü '{userName}' kullanıcısı tarafından yazılamadığından güncelleme yüklenemiyor.",
"UpdateStartupTranslocationHealthCheckMessage": "Başlangıç klasörü '{startupFolder}' bir Uygulama Yer Değiştirme klasöründe olduğu için güncelleme yüklenemiyor.",
"UpdateStartupNotWritableHealthCheckMessage": "'{startupFolder}' başlangıç klasörü '{userName}' kullanıcısı tarafından yazılamadığından güncelleme yüklenemiyor.",
"UpdateUiNotWritableHealthCheckMessage": "UI klasörü '{uiFolder}' '{userName}' kullanıcısı tarafından yazılabilir olmadığından güncelleme yüklenemiyor.",
"UpdateStartupTranslocationHealthCheckMessage": "Başlangıç klasörü '{startupFolder}' bir Uygulama Taşıma klasöründe olduğundan güncelleme yüklenemiyor.",
"UpdateStartupNotWritableHealthCheckMessage": "Başlangıç klasörü '{startupFolder}' '{userName}' kullanıcısı tarafından yazılabilir olmadığından güncelleme yüklenemiyor.",
"UnselectAll": "Tüm Seçimleri Kaldır",
"UISettingsSummary": "Takvim, tarih ve renk engelli seçenekler",
"UISettingsSummary": "Takvim, tarih ve renk engelli seçenekleri",
"UI": "UI",
"Tasks": "Görevler",
"TagsSettingsSummary": "Tüm etiketleri ve nasıl kullanıldıklarını göster. Kullanılmayan etiketler kaldırılabilinir",
@@ -47,12 +47,12 @@
"ReleaseStatus": "Yayın Durumu",
"ReleaseBranchCheckOfficialBranchMessage": "{0} şubesi geçerli bir {appName} sürüm dalı değil; güncelleme almayacaksınız",
"Refresh": "Yenile",
"Queue": "Sırada",
"Queue": "Kuyruk",
"Protocol": "Protokol",
"Options": "Seçenekler",
"NoChanges": "Değişiklikler yok",
"NoChange": "Değişiklik yok",
"MoreInfo": "Daha fazla bilgi",
"MoreInfo": "Daha Fazla Bilgi",
"LastWriteTime": "Son Yazma Zamanı",
"Language": "Dil",
"History": "Geçmiş",
@@ -63,69 +63,69 @@
"Failed": "Başarısız oldu",
"Edit": "Düzenle",
"CustomFilters": "Özel Filtreler",
"ConnectSettingsSummary": "Bildirimler, medya sunucularına/oynatıcılara bağlantılar ve özel komut kodları",
"Analytics": "Analitik",
"ConnectSettingsSummary": "Bildirimler ve özel komut dosyaları",
"Analytics": "Analiz",
"All": "Hepsi",
"Added": "Eklendi",
"Added": "Eklenme",
"Add": "Ekle",
"Branch": "Şube",
"TestAllClients": "Tüm İstemcileri Test Et",
"ErrorLoadingContents": "İçerik yüklenirken hata oluştu",
"FeatureRequests": "Özellik talepleri",
"LogLevelTraceHelpTextWarning": "İzleme günlük kaydı yalnızca geçici olarak etkinleştirilmelidir",
"Peers": "Akranlar",
"LogLevelTraceHelpTextWarning": "İzleme kaydı yalnızca geçici olarak etkinleştirilmelidir",
"Peers": "Eşler",
"Presets": "Ön ayarlar",
"RemoveFilter": "Filtreyi kaldır",
"SettingsEnableColorImpairedMode": "Renk Bozukluğu Modunu Etkinleştir",
"ShowSearchHelpText": "Fareyle üzerine gelindiğinde arama düğmesini göster",
"Shutdown": "Kapat",
"TableOptions": "Masa Seçenekleri",
"TableOptions": "Tablo Seçenekleri",
"UnableToLoadTags": "Etiketler yüklenemiyor",
"UnsavedChanges": "Kaydedilmemiş Değişiklikler",
"Backups": "Yedeklemeler",
"BindAddress": "Bind Adresi",
"BypassProxyForLocalAddresses": "Yerel Adresler için Proxy'yi Atla",
"BypassProxyForLocalAddresses": "Yerel Adresler için Proxy'yi Kullanma",
"DeleteNotificationMessageText": "'{name}' bildirimini silmek istediğinizden emin misiniz?",
"EnableSslHelpText": " Etkili olması için yönetici olarak yeniden çalıştırmayı gerektirir",
"Fixed": "Sabit",
"Fixed": "Düzeltilen",
"PendingChangesMessage": "Kaydedilmemiş değişiklikleriniz var, bu sayfadan ayrılmak istediğinizden emin misiniz?",
"PendingChangesStayReview": "Kalın ve değişiklikleri inceleyin",
"Port": "Liman",
"Port": "Port No",
"PortNumber": "Port numarası",
"RestoreBackup": "Yedeği Geri Yükle",
"Rss": "RSS",
"Save": "Kaydet",
"SaveSettings": "Ayarları kaydet",
"ScriptPath": "Komut Dosyası Yolu",
"Test": "Sına",
"Test": "Test Et",
"TestAll": "Tümünü Test Et",
"UnableToAddANewApplicationPleaseTryAgain": "Yeni bir bildirim eklenemiyor, lütfen tekrar deneyin.",
"YesCancel": "Evet İptal",
"ApplicationStatusCheckAllClientMessage": "Hatalar nedeniyle tüm uygulamalar kullanılamıyor",
"CancelPendingTask": "Bu bekleyen görevi iptal etmek istediğinizden emin misiniz?",
"CancelPendingTask": "Bekleyen görevi iptal etmek istediğinizden emin misiniz?",
"DeleteTag": "Etiketi Sil",
"BindAddressHelpText": "Tüm arayüzler için geçerli IP adresi, localhost veya '*'",
"ConnectSettings": "Bağlantı Ayarları",
"DatabaseMigration": "DB Geçişi",
"DeleteApplicationMessageText": "'{0}' bildirimini silmek istediğinizden emin misiniz?",
"DeleteApplicationMessageText": "'{name}' uygulamasını silmek istediğinizden emin misiniz?",
"DeleteBackup": "Yedeklemeyi Sil",
"DeleteBackupMessageText": "'{name}' yedeğini silmek istediğinizden emin misiniz?",
"DeleteDownloadClient": "İndirme İstemcisini Sil",
"DeleteDownloadClientMessageText": "'{name}' indirme istemcisini silmek istediğinizden emin misiniz?",
"DownloadClientSettings": "İstemci Ayarlarını İndir",
"DownloadClientSettings": ndirme İstemcisi Ayarlarını",
"EnableAutomaticSearchHelpText": "Kullanıcı arayüzü veya {appName} tarafından otomatik aramalar yapıldığında kullanılacaktır",
"ForMoreInformationOnTheIndividualDownloadClients": "Bireysel indirme istemcileri hakkında daha fazla bilgi için bilgi düğmelerine tıklayın.",
"Hostname": "Hostname",
"OpenThisModal": "Bu Modeli Aç",
"Manual": "Manuel",
"Mechanism": "İşleyiş",
"Message": "İleti",
"Mechanism": "Teknik",
"Message": "Mesaj",
"MIA": "MIA",
"MovieIndexScrollBottom": "Film Dizini: Alta Kaydırma",
"MovieIndexScrollTop": "Film Dizini: Yukarı Kaydırma",
"NoLinks": "Bağlantı Yok",
"PackageVersion": "Paket Versiyonu",
"PageSize": "Sayfa boyutu",
"PageSize": "Sayfa Boyutu",
"PageSizeHelpText": "Her sayfada gösterilecek öğe sayısı",
"ProxyBypassFilterHelpText": "Ayırıcı olarak \",\" ve \"*\" kullanın. alt alan adları için joker karakter olarak",
"ProxyUsernameHelpText": "Gerekirse yalnızca bir kullanıcı adı ve şifre girmeniz gerekir. Aksi takdirde boş bırakın.",
@@ -141,22 +141,22 @@
"OAuthPopupMessage": "Pop-up'lar tarayıcınız tarafından engelleniyor",
"Ok": "Tamam",
"OnHealthIssueHelpText": "Sağlık Sorunu Hakkında",
"BranchUpdate": "{appName}'ı güncellemek için kullanılacak dal",
"BranchUpdate": "{appName} uygulamasını güncellemek için kullanılacak şube",
"Close": "Kapat",
"ApplicationStatusCheckSingleClientMessage": "Hatalar nedeniyle kullanılamayan uygulamalar: {0}",
"ApplyTags": "Etiketleri Uygula",
"RssIsNotSupportedWithThisIndexer": "RSS, bu indeksleyici ile desteklenmiyor",
"Interval": "Periyot",
"Logs": "Kütükler",
"Logs": "Kayıtlar",
"Authentication": "Doğrulama",
"AuthenticationMethodHelpText": "{appName}'a erişmek için Kullanıcı Adı ve Şifre gerektir",
"AuthenticationMethodHelpText": "{appName}'e erişmek için Kullanıcı Adı ve Parola gereklidir",
"BackupIntervalHelpText": "Otomatik yedeklemeler arasındaki zaman aralığı",
"BackupNow": "Şimdi yedekle",
"BackupRetentionHelpText": "Saklama süresinden daha eski olan otomatik yedeklemeler otomatik olarak temizlenecektir",
"BackupNow": "Şimdi Yedekle",
"BackupRetentionHelpText": "Saklama süresinden daha eski otomatik yedeklemeler otomatik olarak temizlenecektir",
"BeforeUpdate": "Güncellemeden önce",
"BranchUpdateMechanism": "Harici güncelleme mekanizması tarafından kullanılan dal",
"CertificateValidation": "Sertifika Doğrulama",
"CertificateValidationHelpText": "HTTPS sertifika doğrulamasının ne kadar katı olduğunu değiştirin",
"BranchUpdateMechanism": "Harici güncelleme mekanizması tarafından kullanılan şube",
"CertificateValidation": "Sertifika Doğrulaması",
"CertificateValidationHelpText": "HTTPS sertifika doğrulamasının sıkılığını değiştir",
"ChangeHasNotBeenSavedYet": "Değişiklik henüz kaydedilmedi",
"ClientPriority": "Müşteri Önceliği",
"CloneProfile": "Klon Profili",
@@ -164,42 +164,42 @@
"Columns": "Sütunlar",
"Component": "Bileşen",
"ConnectionLost": "Bağlantı koptu",
"DeleteIndexerProxyMessageText": "'{0}' etiketini silmek istediğinizden emin misiniz?",
"DeleteIndexerProxyMessageText": "'{name}' dizinleyici proxy'sini silmek istediğinizden emin misiniz?",
"DeleteNotification": "Bildirimi Sil",
"DeleteTagMessageText": "'{label}' etiketini silmek istediğinizden emin misiniz?",
"Disabled": "Devre dışı",
"Discord": "Uyuşmazlık",
"Docker": "Liman işçisi",
"Donations": "Bağışlar",
"DownloadClient": stemciyi İndir",
"Docker": "Docker",
"Donations": "Bağış",
"DownloadClient": ndirme İstemcisi",
"DownloadClients": "İndirme İstemcileri",
"EnableAutomaticSearch": "Otomatik Aramayı Etkinleştir",
"EnableInteractiveSearchHelpText": "Etkileşimli arama kullanıldığında kullanılacak",
"FocusSearchBox": "Arama Kutusuna Odaklan",
"GeneralSettings": "Genel Ayarlar",
"Grabs": "Kapmak",
"Grabs": "İndirenler",
"NoIssuesWithYourConfiguration": "Yapılandırmanızla ilgili sorun yok",
"HomePage": "Ana Sayfa",
"IllRestartLater": "Daha sonra yeniden başlayacağım",
"IncludeHealthWarningsHelpText": "Sağlık Uyarılarını Dahil Et",
"IndexerFlags": "Dizinleyici Bayrakları",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 saatten uzun süren arızalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "6 saatten uzun süredir yaşanan arızalar nedeniyle dizinleyiciler kullanılamıyor: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 saatten uzun süren hatalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "6 saatten uzun süren hatalar nedeniyle kullanılamayan dizinleyiciler: {indexerNames}",
"IndexerPriority": "Dizinleyici Önceliği",
"IndexerPriorityHelpText": "1 (En Yüksek) ila 50 (En Düşük) arasında Dizin Oluşturucu Önceliği. Varsayılan: 25.",
"IndexerStatusAllUnavailableHealthCheckMessage": "Hatalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle dizinleyiciler kullanılamıyor: {indexerNames}",
"IndexerPriorityHelpText": "Dizinleyici Önceliği 1 (En Yüksek) ile 50 (En Düşük) arasında. Varsayılan: 25.",
"IndexerStatusAllUnavailableHealthCheckMessage": "Tüm dizinleyiciler hatalar nedeniyle kullanılamıyor",
"IndexerStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle kullanılamayan dizinleyiciler: {indexerNames}",
"Info": "Bilgi",
"InteractiveSearch": "Etkileşimli Arama",
"KeyboardShortcuts": "Klavye kısayolları",
"LaunchBrowserHelpText": " Bir web tarayıcısıın ve uygulama başlangıcında {appName} ana sayfasına gidin.",
"LogLevel": "Günlük Düzeyi",
"LogLevel": "Log Seviyesi",
"Mode": "Mod",
"NoTagsHaveBeenAddedYet": "Henüz etiket eklenmedi",
"NotificationTriggers": "Bildirim Tetikleyicileri",
"OpenBrowserOnStart": "Başlangıçta tarayıcıyı aç",
"Password": "Şifre",
"PendingChangesDiscardChanges": "Değişiklikleri atın ve ayrıl",
"PendingChangesDiscardChanges": "Değişiklikleri at ve ayrıl",
"Priority": "Öncelik",
"ProxyType": "Proxy Türü",
"ReadTheWikiForMoreInformation": "Daha fazla bilgi için Wiki'yi okuyun",
@@ -211,7 +211,7 @@
"RestartNow": "Şimdi yeniden başlat",
"Result": "Sonuç",
"Retention": "Saklama",
"SettingsEnableColorImpairedModeHelpText": "Renk bozukluğu olan kullanıcıların renk kodlu bilgileri daha iyi ayırt etmesine olanak tanıyan değiştirilmiş stil",
"SettingsEnableColorImpairedModeHelpText": "Renk engelli kullanıcıların renkleri daha iyi ayırt etmesine olanak tanıyan değiştirilmiş stil",
"SettingsLongDateFormat": "Uzun Tarih Formatı",
"SettingsShortDateFormat": "Kısa Tarih Formatı",
"SettingsShowRelativeDates": "Göreli Tarihleri Göster",
@@ -226,8 +226,8 @@
"StartTypingOrSelectAPathBelow": "Yazmaya başlayın veya aşağıdan bir yol seçin",
"StartupDirectory": "Başlangıç Dizini",
"SuggestTranslationChange": "Çeviri değişikliği önerin",
"SystemTimeCheckMessage": "Sistem saati 1 günden fazla kapalı. Zamanlanan görevler, saat düzeltilene kadar doğru çalışmayabilir",
"TableOptionsColumnsMessage": "Hangi sütunların görünür olduğunu ve hangi sırada görüneceklerini seçin",
"SystemTimeHealthCheckMessage": "Sistem saati 1 günden fazla kapalı. Zamanlanan görevler, saat düzeltilene kadar doğru çalışmayabilir",
"TableOptionsColumnsMessage": "Hangi sütunların görünür olacağını ve hangi sırayla görüneceğini seçin",
"Title": "Başlık",
"Today": "Bugün",
"Tomorrow": "Yarın",
@@ -253,19 +253,19 @@
"AddingTag": "Etiket ekleniyor",
"CouldNotConnectSignalR": "SignalR'ye bağlanılamadı, kullanıcı arayüzü güncellenmeyecek",
"Custom": "Özel",
"DownloadClientStatusSingleClientHealthCheckMessage": "Hatalar nedeniyle indirilemeyen istemciler: {downloadClientNames}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Hatalar nedeniyle indirme istemcileri kullanılamıyor: {downloadClientNames}",
"Enabled": "Etkin",
"IgnoredAddresses": "Yoksayılan Adresler",
"Indexer": "Dizinleyici",
"DownloadClientStatusAllClientHealthCheckMessage": "Hatalar nedeniyle tüm indirme istemcileri kullanılamıyor",
"DownloadClientStatusAllClientHealthCheckMessage": "Tüm indirme istemcileri hatalar nedeniyle kullanılamıyor",
"EditIndexer": "Dizinleyiciyi Düzenle",
"Enable": "etkinleştirme",
"Enable": "Etkinleştir",
"EnableInteractiveSearch": "Etkileşimli Aramayı Etkinleştir",
"EnableRss": "RSS'yi etkinleştir",
"EnableSSL": "SSL'yi etkinleştir",
"NoLeaveIt": "Hayır, Bırak",
"Error": "Hata",
"Events": "Etkinlikler",
"Events": "Olaylar",
"EventType": "Etkinlik tipi",
"Exception": "İstisna",
"ExistingTag": "Mevcut etiket",
@@ -275,14 +275,14 @@
"Name": "İsim",
"New": "Yeni",
"NoBackupsAreAvailable": "Kullanılabilir yedek yok",
"NoLogFiles": "Günlük dosyası yok",
"NoLogFiles": "Log kayıt dosyası henüz yok",
"Restart": "Tekrar başlat",
"RestartRequiredHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
"Restore": "Onarmak",
"Seeders": "Ekme makineleri",
"TagCannotBeDeletedWhileInUse": "Kullanımdayken silinemez",
"TagIsNotUsedAndCanBeDeleted": "Etiket kullanılmaz ve silinebilir",
"TagsHelpText": "En az bir eşleşen etikete sahip filmler için geçerlidir",
"TagsHelpText": "En az bir eşleşen etiketi olan dizinleyiciler için geçerlidir",
"UILanguage": "UI Dili",
"UpdateScriptPathHelpText": ıkarılan bir güncelleme paketini alan ve güncelleme işleminin geri kalanını işleyen özel bir komut dosyasına giden yol",
"Uptime": "Çalışma süresi",
@@ -295,8 +295,8 @@
"Warn": "Uyar",
"Wiki": "Wiki",
"Apply": "Uygula",
"BackupFolderHelpText": "Göreli yollar {appName}'ın AppData dizini altında olacaktır",
"Grabbed": "Yakalandı",
"BackupFolderHelpText": "Bağıl yollar {appName}'ın AppData dizini altında olacak",
"Grabbed": "Alındı",
"ProxyPasswordHelpText": "Gerekirse yalnızca bir kullanıcı adı ve şifre girmeniz gerekir. Aksi takdirde boş bırakın.",
"UpdateAutomaticallyHelpText": "Güncelleştirmeleri otomatik olarak indirip yükleyin. Sistem: Güncellemeler'den yükleme yapmaya devam edebileceksiniz",
"UpdateMechanismHelpText": "{appName}'ın yerleşik güncelleyicisini veya bir komut dosyasını kullanın",
@@ -313,17 +313,17 @@
"HistoryCleanupDaysHelpText": "Otomatik temizlemeyi devre dışı bırakmak için 0'a ayarlayın",
"HistoryCleanupDaysHelpTextWarning": "Geri dönüşüm kutusundaki, seçilen gün sayısından daha eski olan dosyalar otomatik olarak temizlenecektir",
"Filters": "Filtreler",
"OnGrab": "Yakalandığında",
"OnGrab": "Yayın Alındığında",
"OnHealthIssue": "Sağlık Sorunu Hakkında",
"TestAllIndexers": "Tüm Dizinleyicileri Test Et",
"GrabReleases": "Bırakma",
"TestAllIndexers": "Dizinleyicileri Test Et",
"GrabReleases": "Sürümü Al",
"No": "Hayır",
"NetCore": ".NET",
"UnableToLoadIndexers": "Dizinleyiciler yüklenemiyor",
"Yes": "Evet",
"Link": "Bağlantılar",
"MappedDrivesRunningAsService": "Eşlenen ağ sürücüleri, bir Windows Hizmeti olarak çalışırken kullanılamaz. Daha fazla bilgi için lütfen SSS bölümüne bakın",
"Ended": "Bitti",
"Ended": "Biten",
"LastDuration": "Yürütme Süresi",
"LastExecution": "Son Yürütme",
"NextExecution": "Sonraki Yürütme",
@@ -332,19 +332,19 @@
"ApplicationLongTermStatusCheckSingleClientMessage": "6 saatten uzun süredir yaşanan arızalar nedeniyle dizinleyiciler kullanılamıyor: {0}",
"Remove": "Kaldır",
"Replace": "Değiştir",
"OnLatestVersion": "{appName}'ın en son sürümü zaten kurulu",
"OnLatestVersion": "{appName}'ın en son sürümü kurulu",
"ApplyTagsHelpTextAdd": "Ekle: Etiketleri mevcut etiket listesine ekleyin",
"ApplyTagsHelpTextHowToApplyApplications": "Seçilen filmlere etiketler nasıl uygulanır",
"ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldırın",
"ApplyTagsHelpTextHowToApplyIndexers": "Seçilen indeksleyicilere etiketler nasıl uygulanır",
"ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen etiketlerle değiştirin (tüm etiketleri kaldırmak için etiket girmeyin)",
"DeleteSelectedDownloadClients": "İndirme İstemcilerini Sil",
"DownloadClientPriorityHelpText": "Birden çok İndirme İstemcisine öncelik verin. Round-Robin, aynı önceliğe sahip müşteriler için kullanılır.",
"DownloadClientPriorityHelpText": "Birden fazla İndirme İstemcisine öncelik verin. Aynı önceliğe sahip istemciler için Round-Robin algoritması kullanılır.",
"Genre": "Türler",
"Track": "İzleme",
"Year": "Yıl",
"More": "Daha",
"DeleteAppProfileMessageText": "Kalite profilini silmek istediğinizden emin misiniz {0}",
"DeleteAppProfileMessageText": "'{name}' uygulama profilini silmek istediğinizden emin misiniz?",
"RecentChanges": "Son değişiklikler",
"minutes": "Dakika",
"WhatsNew": "Ne var ne yok?",
@@ -353,18 +353,18 @@
"NotificationStatusSingleClientHealthCheckMessage": "Arızalar nedeniyle bildirimler kullanılamıyor: {notificationNames}",
"Applications": "Uygulamalar",
"AuthBasic": "Temel (Tarayıcıılır Penceresi)",
"AuthForm": "Formlar (Giriş Sayfası)",
"AuthForm": "Form (Giriş Sayfası)",
"DisabledForLocalAddresses": "Yerel Adreslerde Devre Dışı Bırak",
"None": "Yok",
"ResetAPIKeyMessageText": "API Anahtarınızı sıfırlamak istediğinizden emin misiniz?",
"Categories": "Kategoriler",
"Application": "Uygulama",
"Episode": "bölüm",
"Episode": "Bölüm",
"AddConnection": "Bağlantı Ekle",
"AddApplicationImplementation": "Uygulama Ekle - {implementationName}",
"AddIndexerImplementation": "Yeni Dizin Ekle - {implementationName}",
"AddIndexerImplementation": "Yeni Dizinleyici Ekle - {implementationName}",
"AddIndexerProxyImplementation": "Koşul Ekle - {implementationName}",
"EditConnectionImplementation": "Koşul Ekle - {implementationName}",
"EditConnectionImplementation": "Bildirimi Düzenle - {implementationName}",
"AddConnectionImplementation": "Bağlantı Ekle - {implementationName}",
"RestartProwlarr": "{appName}'ı yeniden başlatın",
"EditApplicationImplementation": "Koşul Ekle - {implementationName}",
@@ -382,7 +382,7 @@
"Clone": "Klon",
"Category": "Kategori",
"AppUpdated": "{appName} Güncellendi",
"AppUpdatedVersion": "{appName}, `{version}` sürümüne güncellendi; en son değişikliklerin etkin olabilmesi için {appName} uygulamasını yeniden başlatmanız gerekli",
"AppUpdatedVersion": "{appName}, `{version}` sürümüne güncellendi; değişikliklerin etkin olabilmesi için {appName} uygulamasını yeniden başlatmanız gerekli",
"ApplicationUrlHelpText": "Bu uygulamanın http(s)://, bağlantı noktası ve URL tabanını içeren harici URL'si",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Yeni şifreyi onayla",
"AuthenticationRequiredPasswordHelpTextWarning": "Yeni şifre girin",
@@ -410,7 +410,7 @@
"DownloadClientAriaSettingsDirectoryHelpText": "İndirilenlerin yerleştirileceği isteğe bağlı konum, varsayılan Aria2 konumunu kullanmak için boş bırakın",
"Donate": "Bağış yap",
"Destination": "Hedef",
"Directory": "Rehber",
"Directory": "Dizin",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "İndirilenlerin yerleştirileceği isteğe bağlı paylaşımlı klasör, varsayılan Download Station konumunu kullanmak için boş bırakın",
"DownloadClientFloodSettingsAdditionalTags": "Ek Etiketler",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Deluge json URL'sine bir önek ekler, bkz. {url}",
@@ -426,15 +426,15 @@
"AppProfileInUse": "Kullanımda Olan Uygulama Profili",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Eğer bir torrent hash değeri bazlı engellendi ise bazı dizin oluşturucular RSS/Arama sırasında bu torrenti gerektiği gibi reddedemeyebilir, bunu aktif etmek torrentin çekildikten sonra reddedilebilmesine izin verecektir, ama istemciye gönderilmeden önce.",
"AppProfileSelectHelpText": "Uygulama profilleri, Uygulama eşitlemede RSS, Otomatik Arama ve İnteraktif Arama ayarlarını kontrol etmek için kullanılır",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "İçerik eklenirken eşitleme ret işlemi, Torrent hash değerlerini kara listeye aldı",
"AppSettingsSummary": "{appName} uygulamasının PVR progranlarına müdahele etmek için gerekli konfigürasyonda kullanılan uygulama ve ayarlar",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Alma Sırasında Engellenen Torrent Karmalarını Eşitle ve Reddet",
"AppSettingsSummary": "{appName} uygulamasının PVR programlarınızla nasıl etkileşime gireceğini yapılandırmak için uygulamalar ve ayarlar",
"DownloadClientFreeboxSettingsApiUrl": "API URL'si",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Freebox API temel URL'sini API sürümüyle tanımlayın, örneğin '{url}', varsayılan olarak '{defaultApiUrl}' olur",
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox API'sine erişim oluşturulurken verilen uygulama kimliği (ör. 'app_id')",
"DownloadClientFreeboxSettingsAppToken": "Uygulama Jetonu",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox API'sine erişim oluşturulurken alınan uygulama jetonu (ör. 'app_token')",
"DownloadClientFreeboxSettingsAppId": "Uygulama kimliği",
"DownloadClientFreeboxSettingsHostHelpText": "Freebox'un ana bilgisayar adı veya ana bilgisayar IP adresi, varsayılan olarak '{url}' şeklindedir (yalnızca aynı ağdaysa çalışır)",
"DownloadClientFreeboxSettingsHostHelpText": "Freebox'un istemci adı veya istemci IP adresi, varsayılan olarak '{url}' şeklindedir (yalnızca aynı ağda çalışır)",
"Duration": "Süre",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "qBittorrent'in yapılandırılmış içerik düzenini mi, torrentteki orijinal düzeni mi kullanacağınızı yoksa her zaman bir alt klasör oluşturup oluşturmayacağınızı (qBittorrent 4.3.2+)",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Torrentlerin başlangıç durumu qBittorrent'e eklendi. Zorunlu Torrentlerin seed kısıtlamalarına uymadığını unutmayın",
@@ -443,9 +443,9 @@
"DownloadClientSettingsInitialState": "Başlangıç Durumu",
"DownloadClientSettingsUrlBaseHelpText": "{clientName} URL'sine {url} gibi bir önek ekler",
"DownloadClientSettingsInitialStateHelpText": "{clientName} dosyasına eklenen torrentler için başlangıç durumu",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "İlk ve Son İlk",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "İlk ve Son",
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Etkinleştirme, durdurulmuş durumdaki rTorrent'e torrentler ve magnet ekleyecektir. Bu magnet dosyalarını bozabilir.",
"DownloadClientSettingsAddPaused": "Ekleme Durduruldu",
"DownloadClientSettingsAddPaused": "Duraklatılana Ekle",
"DownloadClientSettingsDestinationHelpText": "İndirme hedefini manuel olarak belirtir, varsayılanı kullanmak için boş bırakın",
"DownloadClientSettingsUseSslHelpText": "{clientName} ile bağlantı kurulurken güvenli bağlantıyı kullan",
"DownloadClientTransmissionSettingsDirectoryHelpText": "İndirilenlerin yerleştirileceği isteğe bağlı konum, varsayılan İletim konumunu kullanmak için boş bırakın",
@@ -461,7 +461,7 @@
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Bu klasöre XBMC'den erişilmesi gerekecek",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Sıralı olarak indirin (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Güvenli bir bağlantı kullanın. qBittorrent'te Seçenekler -> Web Kullanıcı Arayüzü -> 'HTTP yerine HTTPS kullan' bölümüne bakın.",
"DownloadClientRTorrentSettingsAddStopped": "Ekleme Durduruldu",
"DownloadClientRTorrentSettingsAddStopped": "Durdurulana Ekle",
"Label": "Etiket",
"EditSelectedDownloadClients": "Seçilen İndirme İstemcilerini Düzenle",
"EditSelectedIndexers": "Seçili Dizinleyicileri Düzenle",
@@ -498,22 +498,22 @@
"XmlRpcPath": "XML RPC Yolu",
"IndexerSettingsSeedTime": "Seed Süresi",
"IndexerSettingsSeedRatio": "Seed Oranı",
"IndexerSettingsSeedTimeHelpText": "Bir torrentin durmadan önce seed edilmesi gereken süre. Boş bırakılırsa indirme istemcisinin varsayılan ayarını kullanır",
"IndexerSettingsSeedRatioHelpText": "Bir torrentin durmadan önce ulaşması gereken oran. Boş bırakılırsa indirme istemcisinin varsayılan değerini kullanır. Oran en az 1,0 olmalı ve indeksleyici kurallarına uygun olmalıdır",
"IndexerSettingsSeedTimeHelpText": "Bir torrentin durdurulmadan önce ulaşması gereken oran, boş bırakıldığında uygulamanın varsayılanı kullanılır",
"IndexerSettingsSeedRatioHelpText": "Bir torrentin durdurulmadan önce ulaşması gereken oran. Boş bırakılırsa indirme istemcisinin varsayılan değerini kullanır. Oran en az 1,0 olmalı ve indeksleyici kurallarına uygun olmalıdır",
"External": "Harici",
"Notifications": "Bildirimler",
"CountApplicationsSelected": "{count} koleksiyon seçildi",
"SeedRatio": "Seed Oranı",
"ThemeHelpText": "Uygulama Kullanıcı Arayüzü Temasını Değiştirin, 'Otomatik' Teması,ık veya Koyu modu ayarlamak için İşletim Sistemi Temanızı kullanacaktır. Theme.Park'tan ilham alındı",
"ThemeHelpText": "Uygulama UI Temasını Değiştirin, 'Otomatik' Tema, işletim sisteminizde kullandığınızık veya Koyu moda göre ayarlanır . {inspiredBy} tarafından esinlenilmiştir.",
"Notification": "Bildirimler",
"SelectDownloadClientModalTitle": "{modalTitle} - İndirme İstemcisini Seçin",
"EditSyncProfile": "Eşitleme Profili Ekle",
"UserAgentProvidedByTheAppThatCalledTheAPI": "API'yi çağıran uygulama tarafından sağlanan Kullanıcı Aracısı",
"Author": "Yazar",
"IndexerHDBitsSettingsMediums": "Orta",
"IndexerHDBitsSettingsMediums": "Ortamlar",
"OnHealthRestoredHelpText": "Sağlığın İyileştirilmesi Hakkında",
"SeedTime": "Seed Süresi",
"IndexerHDBitsSettingsCodecs": "Kodek",
"IndexerHDBitsSettingsCodecs": "Kodekler",
"Publisher": "Yayımcı",
"OnApplicationUpdateHelpText": "Uygulama Güncellemesinde",
"DeleteSelectedApplicationsMessageText": "Seçilen {count} içe aktarma listesini silmek istediğinizden emin misiniz?",
@@ -521,35 +521,290 @@
"UpdateAvailableHealthCheckMessage": "Yeni güncelleme mevcut: {version}",
"days": "gün",
"Default": "Varsayılan",
"GrabRelease": "Yayın Yakalama",
"ManualGrab": "Manuel Yakalama",
"GrabRelease": "Yayın Alma",
"ManualGrab": "Manuel Alımlarda",
"OverrideAndAddToDownloadClient": "Geçersiz kıl ve indirme kuyruğuna ekle",
"OverrideGrabModalTitle": "Geçersiz Kıl ve Yakala - {title}",
"OverrideGrabModalTitle": "Geçersiz Kıl ve Al - {title}",
"PrioritySettings": "Öncelik: {priority}",
"IndexerDownloadClientHealthCheckMessage": "Geçersiz indirme istemcilerine sahip dizinleyiciler: {indexerNames}.",
"BuiltIn": "Dahili",
"Script": "Hazır Metin",
"Script": "Komut Dosyası",
"InfoUrl": "Bilgi URL'si",
"PublishedDate": "Yayınlanma Tarihi",
"Any": "Herhangi",
"AllSearchResultsHiddenByFilter": "Tüm sonuçlar, uygulanan filtre tarafından gizlenir",
"HealthMessagesInfoBox": "Satırın sonundaki wiki bağlantısını (kitap simgesi) tıklayarak veya [günlüklerinizi]({link}) kontrol ederek bu durum kontrolü mesajlarının nedeni hakkında daha fazla bilgi bulabilirsiniz. Bu mesajları yorumlamakta zorluk yaşıyorsanız aşağıdaki bağlantılardan destek ekibimize ulaşabilirsiniz.",
"AllSearchResultsHiddenByFilter": "Uygulanan filtre nedeniyle tüm arama sonuçları gizlendi.",
"HealthMessagesInfoBox": "Satırın sonundaki wiki bağlantısını (kitap simgesi) tıklayarak veya [log kayıtlarınızı]({link}) kontrol ederek bu durum kontrolü mesajlarının nedeni hakkında daha fazla bilgi bulabilirsiniz. Bu mesajları yorumlamakta zorluk yaşıyorsanız aşağıdaki bağlantılardan destek ekibimize ulaşabilirsiniz.",
"PackageVersionInfo": "{packageAuthor} tarafından {packageVersion}",
"LogSizeLimit": "Log Boyutu Sınırı",
"LogSizeLimitHelpText": "Arşivlemeden önce MB cinsinden maksimum log dosya boyutu. Varsayılan 1 MB'tır.",
"AptUpdater": "Güncellemeyi yüklemek için apt kullanın",
"AptUpdater": "Güncellemeyi yüklemek için apt'ı kullanın",
"Download": "İndir",
"ErrorRestoringBackup": "Yedeği geri yüklerken hata",
"ExternalUpdater": "{appName}, harici bir güncelleme mekanizması kullanacak şekilde yapılandırıldı",
"LogFilesLocation": "Günlük dosyaları şu konumda bulunur: {location}",
"LogFilesLocation": "Log kayıtlarının bulunduğu konum: {location}",
"NoEventsFound": "Etkinlik bulunamadı",
"RestartReloadNote": "Not: {appName}, geri yükleme işlemi sırasında kullanıcı arayüzünü otomatik olarak yeniden başlatacak ve yeniden yükleyecektir.",
"TheLogLevelDefault": "Günlük düzeyi varsayılan olarak 'Bilgi' şeklindedir ve [Genel Ayarlar](/settings/general) bölümünden değiştirilebilir",
"TheLogLevelDefault": "Log seviyesi varsayılan olarak 'Bilgi' şeklindedir ve [Genel Ayarlar](/ayarlar/genel) bölümünden değiştirilebilir",
"UpdateAppDirectlyLoadError": "{appName} doğrudan güncellenemiyor,",
"DockerUpdater": "güncellemeyi almak için docker konteynerini güncelleyin",
"DockerUpdater": "Güncellemeyi almak için docker konteynerini güncelleyin",
"FailedToFetchUpdates": "Güncellemeler getirilemedi",
"Logout": ıkış",
"UpdaterLogFiles": "Güncelleme Günlük Dosyaları",
"UpdaterLogFiles": "Log Kayıt Güncelleyici",
"WouldYouLikeToRestoreBackup": "'{name}' yedeğini geri yüklemek ister misiniz?",
"InstallLatest": "En Sonu Yükle"
"InstallLatest": "En Sonu Yükle",
"Install": "Kur",
"InstallMajorVersionUpdate": "Güncellemeyi Kur",
"InstallMajorVersionUpdateMessage": "Bu güncelleştirme yeni bir ana sürüm yükleyecek ve sisteminizle uyumlu olmayabilir. Bu güncelleştirmeyi yüklemek istediğinizden emin misiniz?",
"InstallMajorVersionUpdateMessageLink": "Daha fazla bilgi için lütfen [{domain}]({url}) adresini kontrol edin.",
"Season": "Sezon",
"Artist": "sanatçı",
"Mixed": "Karışık",
"Stats": "Durum",
"CurrentlyInstalled": "Şuan Kurulu",
"PreviouslyInstalled": "Daha Önce Kurulmuş",
"FailedToFetchSettings": "Ayarlar alınamadı",
"IndexerSettingsCookie": "Çerez",
"IndexerHDBitsSettingsMediumsHelpText": "Belirtilmezse tüm seçenekler kullanılır.",
"IndexerSettingsApiPathHelpText": "API'ye giden yol, genellikle {url}",
"IndexerSettingsAdditionalParameters": "Ek Parametreler",
"IndexerSettingsApiPath": "API Yolu",
"IndexerHDBitsSettingsCodecsHelpText": "Belirtilmezse tüm seçenekler kullanılır.",
"IndexerHDBitsSettingsOriginsHelpText": "Belirtilmezse tüm seçenekler kullanılır.",
"MinimumSeeders": "Minimum Seeder",
"AuthQueries": "Yetkilendirme Talepleri",
"AreYouSureYouWantToDeleteIndexer": "'{name}' uygulamasını {appName} uygulamasından silmek istediğinizden emin misiniz?",
"Auth": "Yetkilendirme",
"AverageQueries": "Talep Ortalaması",
"AverageResponseTimesMs": "Ortalama Dizin Oluşturucu Yanıt Süreleri (ms)",
"BookSearch": "Kitap Ara",
"DeleteIndexerProxy": "Dizinleyici Proxy'sini Sil",
"DownloadClientSettingsPriorityItemHelpText": "Öğeleri alırken kullanılacak öncelik",
"EditCategory": "Kategoriyi Düzenle",
"EnableIndexer": "Dizinleyiciyi Etkinleştir",
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "SAHNE sürümlerini sonuçlardan hariç tut",
"IndexerBeyondHDSettingsRefundOnly": "Sadece İade",
"DefaultCategory": "Varsayılan Kategori",
"GrabTitle": "Başlığı Al",
"ApplicationsLoadError": "Uygulama listesi yüklenemiyor",
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Sadece freeleech'te ara (Sınırlı UL)",
"AreYouSureYouWantToDeleteCategory": "Haritalanan kategoriyi silmek istediğinizden emin misiniz?",
"AverageGrabs": "Ortalama Alım Sayısı",
"DevelopmentSettings": "Geliştirme Ayarları",
"IndexerBeyondHDSettingsRssKeyHelpText": "Siteden RSS Anahtarı (Güvenlik => RSS Anahtarı)",
"ApplicationTagsHelpTextWarning": "Etiketler istenmeyen etkilere neden olabileceğinden dikkatli kullanılmalıdır. Etiketi olan bir uygulama yalnızca aynı etikete sahip dizin oluşturucuları eşitler.",
"DeleteApplication": "Uygulamayı Sil",
"IndexerDownloadClientHelpText": "Bu dizinleyiciden {appName} içinde yapılan alımlar için hangi indirme istemcisinin kullanılacağını belirtin",
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Bir sürüm için eşlenen kategori yoksa varsayılan olarak kullanılacak yedek kategori. {appName}'a özel bir kategori eklemek, {appName} ile ilgisi olmayan indirmelerle çakışmaları önlemeye yardımcı olur. Kategori kullanmak isteğe bağlıdır ancak önemle tavsiye edilir. Çıkış dizininde bir alt dizin [kategori] oluşturur.",
"IncludeManualGrabsHelpText": "{appName} uygulamasında yapılan manuel alımları dahil et",
"IndexerAlphaRatioSettingsExcludeScene": "SAHNE'yi hariç tut",
"AudioSearch": "Müzik Ara",
"IndexerDisabled": "Dizinleyici Devre Dışı",
"ClearHistoryMessageText": "{appName} geçmişinin tamamını temizlemek istediğinizden emin misiniz?",
"ClearHistory": "Geçmişi Temizle",
"ElapsedTime": "Geçen Süre",
"EnabledRedirected": "Etkinleştirildi, Yönlendirildi",
"IndexerAuth": "Dizinleyici Kimlik Doğrulaması",
"EnableRssHelpText": "Dizinleyici için RSS beslemesini etkinleştirin",
"Description": "Tanım",
"AppsMinimumSeeders": "Uygulama İçin Azami Seeder",
"AppsMinimumSeedersHelpText": "Uygulamaların gerektirdiği veri kaynağından alınacak öğelerin minimum seeder sayısı. Boş bırakılırsa varsayılan senkronizasyon profili kullanılır",
"BasicSearch": "Temel Arama",
"DeleteSelectedApplications": "Seçili Uygulamaları Sil",
"DeleteSelectedIndexers": "Seçili Dizinleyicileri Sil",
"IndexerCategories": "Dizinleyici Kategorileri",
"Encoding": "Kodlama",
"FullSync": "Tam Senkronizasyon",
"GoToApplication": "Uygulamaya git",
"BookSearchTypes": "Kitap Arama Türleri",
"Id": "KİMLİK",
"DeleteSelectedIndexer": "Seçili Dizinleyiciyi Sil",
"DeleteAppProfile": "Uygulama Profilini Sil",
"DeleteClientCategory": "İndirme İstemcisi Kategorisini Sil",
"HistoryDetails": "Geçmiş Ayrıntıları",
"IndexerFailureRate": "Dizinleyici Arıza Oranı",
"IndexerSettingsCookieHelpText": "Site Çerezi",
"DisabledUntil": "Şu tarihe kadar devre dışı bırakıldı",
"DownloadClientsSettingsSummary": "{appName} kullanıcı arayüzü aramasına entegrasyon için indirme istemcisi yapılandırması",
"Apps": "Uygulamalar",
"ApplicationTagsHelpText": "Etiketi olmayan veya bir veya daha fazla eşleşen etiketi olan dizin oluşturucuları bu uygulamayla senkronize edin. Burada hiçbir etiket listelenmezse, etiketleri nedeniyle hiçbir dizin oluşturucunun senkronizasyonu engellenmeyecektir.",
"Book": "Kitap",
"DownloadClientCategory": "İstemci Kategorisini İndirin",
"FilterPlaceHolder": "Dizinleyici Ara",
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerAlreadySetup": "Dizin oluşturucunun en az bir örneği zaten yapılandırılmış",
"IndexerBeyondHDSettingsLimitedOnly": "Sadece Sınırlı",
"ClickToChangeQueryOptions": "Talep seçeneklerini değiştirmek için tıklayın",
"CountIndexersAvailable": "{count} dizinleyici mevcut",
"DownloadClientSettingsDefaultCategoryHelpText": "Bir sürüm için eşlenen kategori yoksa varsayılan olarak kullanılacak yedek kategori. {appName}'a özel bir kategori eklemek, {appName} ile ilgisi olmayan indirmelerle çakışmaları önlemeye yardımcı olur. Kategori kullanmak isteğe bağlıdır ancak önemle tavsiye edilir.",
"IndexerBeyondHDSettingsRewindOnly": "Sadece Geri Sar",
"FoundCountReleases": "{itemCount} sürüm bulundu",
"HistoryCleanup": "Geçmiş Temizliği",
"IndexerSettingsPasskey": "Geçiş Anahtarı",
"IndexerAvistazSettingsPasswordHelpText": "Site Şifresi",
"IndexerAvistazSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerAvistazSettingsUsernameHelpText": "Site Kullanıcı Adı",
"IndexerAvistazSettingsPidHelpText": "Hesabım veya Profilim sayfasının PID'si",
"IndexerAvistazSettingsUsernameHelpTextWarning": "Bu indeksleyicinin API'si yalnızca üyeler ve üzeri kullanıcılar tarafından kullanılabilir.",
"IndexerBeyondHDSettingsApiKeyHelpText": "Site API anahtarı (Güvenlik => API Anahtarı)",
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Sadece iadeyi ara",
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Sadece tekrarları ara",
"IndexerBeyondHDSettingsSearchTypes": "Arama Türleri",
"IndexerBeyondHDSettingsSearchTypesHelpText": "İlginizi çeken sürüm türlerini seçin. Hiçbiri seçilmezse, tüm seçenekler kullanılır.",
"IndexerDetails": "Dizinleyici Ayrıntıları",
"IndexerFileListSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerPassThePopcornSettingsApiUserHelpText": "Bu ayarlar PassThePopcorn güvenlik ayarlarınızda (Profil Düzenle > Güvenlik) bulunur.",
"IndexerProxies": "Dizinleyici Proxy'leri",
"NewznabUrl": "Newznab URL'si",
"Open": "Açık",
"SearchCapabilities": "Arama Yetenekleri",
"TestAllApps": "Tüm Uygulamaları Test Et",
"IndexerVipExpiringHealthCheckMessage": "Dizinleyici VIP avantajlarının süresi yakında doluyor: {indexerNames}",
"IndexerVipExpiredHealthCheckMessage": "Dizinleyici VIP avantajları sona erdi: {indexerNames}",
"IndexerGazelleGamesSettingsSearchGroupNames": "Grup Adlarını Ara",
"IndexerSettingsGrabLimit": "Alım Sınırı",
"PreferMagnetUrl": "Magnet URL'sini tercih edin",
"PreferMagnetUrlHelpText": "Etkinleştirildiğinde, bu dizinleyici torrent bağlantılarına geri dönüş için magnet URL'lerinin kullanımını tercih edecektir",
"Redirected": "Yönlendirildi",
"SearchCountIndexers": "{count} dizinleyiciyi ara",
"SearchType": "Arama Türü",
"SyncAppIndexers": "Dizinleyicileri Senkronize Et",
"TVSearchTypes": "TV Arama Türleri",
"TotalIndexerQueries": "Toplam Dizinleyici Sorguları",
"TotalUserAgentQueries": "Kullanıcı Aracısı Başına Toplam Sorgu Sayısı",
"LastFailure": "Son Hata",
"RssQueries": "RSS Sorguları",
"ProxyValidationUnableToConnect": "Proxy'ye bağlanılamıyor: {exceptionMessage}. Ayrıntılar için bu hatayla ilgili günlüğü kontrol edin",
"QueryResults": "Sorgu Sonuçları",
"IndexerFileListSettingsUsernameHelpText": "Site Kullanıcı Adı",
"IndexerGazelleGamesSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerHDBitsSettingsUseFilenamesHelpText": "Torrent dosya adlarını sürüm başlıkları olarak kullanmak istiyorsanız bu seçeneği işaretleyin",
"IndexerHDBitsSettingsUsernameHelpText": "Site Kullanıcı Adı",
"IndexerHistoryLoadError": "Dizinleyici geçmişi yüklenirken hata oluştu",
"IndexerIPTorrentsSettingsCookieUserAgent": "Çerezler için Kullanıcı Aracısı",
"IndexerId": "Dizinleyici Kimliği",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerNebulanceSettingsApiKeyHelpText": "API Anahtarı Kullanıcı Ayarları > Api Anahtarları'ndan. Anahtarın Listeleme ve İndirme izinlerine sahip olması gerekir",
"IndexerNewznabSettingsVipExpirationHelpText": "VIP Son Kullanma Tarihi için (yyyy-aa-gg) tarihini girin veya boş bırakın, {appName} VIP'nin sona ermesinden 1 hafta sonra bildirimde bulunacaktır",
"IndexerSettingsApiUser": "API Kullanıcısı",
"IndexerSettingsBaseUrl": "Temel URL",
"IndexerSettingsBaseUrlHelpText": "{appName}'ın siteye yönelik istekler için hangi temel URL'yi kullanacağını seçin",
"IndexerSettingsLimitsUnit": "Limit Birimi",
"IndexerSettingsLimitsUnitHelpText": "Dizinleyici başına limitleri saymak için zaman birimi",
"IndexerSettingsRssKey": "RSS Anahtarı",
"MinimumSeedersHelpText": "Dizinleyicinin alım yapması için uygulamanın gerektirdiği minimum seeder sayısı",
"MusicSearchTypes": "Müzik Arama Türleri",
"NoApplicationsFound": "Hiçbir uygulama bulunamadı",
"OnGrabHelpText": "Yayın Alındığında",
"PackSeedTime": "Paket Seed Süresi",
"ProwlarrDownloadClientsAlert": "{appName} içinde doğrudan arama yapmayı düşünüyorsanız, İndirme İstemcileri eklemeniz gerekir. Aksi takdirde, bunları buraya eklemeniz gerekmez. Uygulamalarınızdan yapılan aramalar için, bunun yerine orada yapılandırılan indirme istemcileri kullanılır.",
"UnableToLoadAppProfiles": "Uygulama profilleri yüklenemiyor",
"UnableToLoadDevelopmentSettings": "Geliştirme ayarları yüklenemiyor",
"IndexerHDBitsSettingsOrigins": "Kaynaklar",
"IndexerNoDefinitionCheckHealthCheckMessage": "Dizinleyicilerin tanımı yoktur ve çalışmayacaktır: {indexerNames}. Lütfen {appName}'i kaldırın ve (veya) yeniden ekleyin.",
"MovieSearchTypes": "Film Arama Türleri",
"NoIndexerCategories": "Bu dizinleyici için hiçbir kategori bulunamadı",
"PackSeedTimeHelpText": "Bir paketin (sezon veya diskografi) torrentinin durdurulmadan önce aktif olması gereken süre, boş bırakılırsa uygulamanın varsayılan değeri kullanılır",
"IndexerSettingsGrabLimitHelpText": "{appName}'ın siteye izin vereceği ilgili birim tarafından belirtilen maksimum kapma sayısı",
"IndexerSettingsPreferMagnetUrlHelpText": "Etkinleştirildiğinde, bu dizinleyici torrent bağlantılarına geri dönüş için magnet URL'lerinin kullanımını tercih edecektir",
"Private": "Özel",
"ProwlarrSupportsAnyIndexer": "{appName}, 'Generic Newznab' (usenet için) veya 'Generic Torznab' (torrentler için) kullanan Newznab/Torznab standardını kullanan herhangi bir indeksleyiciye ek olarak birçok indeksleyiciyi destekler. Aşağıdan indeksleyicinizi arayın ve seçin.",
"IndexerInfo": "Dizinleyici Bilgileri",
"IndexerMTeamTpSettingsApiKeyHelpText": "Siteden API Anahtarı (Kullanıcı Kontrol Paneli => Güvenlik => Laboratuvar'da Bulunur)",
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerRedactedSettingsApiKeyHelpText": "Siteden API Anahtarı (Ayarlar => Erişim Ayarları'nda Bulunur)",
"IndexerSettingsQueryLimitHelpText": "{appName}'in siteye izin vereceği ilgili birim tarafından belirtilen maksimum sorgu sayısı",
"IndexerSettingsVipExpiration": "VIP Son Kullanma Tarihi",
"Parameters": "Parametreler",
"TotalQueries": "Toplam Sorgular",
"SettingsIndexerLogging": "Gelişmiş Dizin Oluşturucu Günlüğü",
"SettingsLogRotate": "Günlük Döndürme",
"TotalIndexerSuccessfulGrabs": "Dizinleyicinin Toplam Başarılı Alma Sayısı",
"SyncProfiles": "Profilleri Senkronize Et",
"IndexerProxy": "Dizinleyici Proxy",
"Redirect": "Yönlendir",
"SettingsSqlLoggingHelpText": "{appName} uygulamasından gelen tüm SQL sorgularını günlüğe kaydet",
"Proxies": "Proxy'ler",
"Public": "Herkese Açık",
"RepeatSearch": "Tekrar Ara",
"ManageApplications": "Uygulamaları Yönet",
"SearchAllIndexers": "Tüm dizinleyicilerde ara",
"SeedRatioHelpText": "Bir torrentin durdurulmadan önce ulaşması gereken oran, boş bırakıldığında uygulamanın varsayılanı kullanılır",
"SeedTimeHelpText": "Bir torrentin durdurulmadan önce aktif olması gereken süre, boş bırakıldığında uygulamanın varsayılanı kullanılır",
"IndexerRss": "Dizinleyici RSS",
"SearchTypes": "Arama Türleri",
"SemiPrivate": "Yarı Özel",
"SettingsLogSql": "Sql Günlüğü",
"SelectedCountOfCountReleases": "{itemCount} sürümden {selectedCount} tanesi seçildi",
"IndexerSettingsSummary": "Proxy'ler de dahil olmak üzere çeşitli genel dizinleyici ayarlarını yapılandırın.",
"SettingsLogRotateHelpText": "Günlük klasöründe saklanacak maksimum günlük dosyası sayısı",
"TvSearch": "Dizi Ara",
"SelectIndexers": "Dizinleyici Seç",
"Privacy": "Gizlilik",
"SettingsConsoleLogLevel": "Konsol Günlük Düzeyi",
"SettingsFilterSentryEventsHelpText": "Bilinen kullanıcı hatası olaylarının Analitik olarak gönderilmesini filtreleyin",
"SyncLevel": "Senkronizasyon Seviyesi",
"IndexerName": "Dizinleyici Adı",
"IndexerSite": "Dizinleyici Sitesi",
"IndexerTagsHelpTextWarning": "Etiketler dikkatli kullanılmalıdır, istenmeyen etkilere neden olabilirler. Etiketli bir dizinleyici yalnızca aynı etikete sahip uygulamalarla senkronize olur.",
"InitialFailure": "İlk Hata",
"MappedCategories": "Haritalanmış Kategoriler",
"NotSupported": "Desteklenmiyor",
"SettingsIndexerLoggingHelpText": "Yanıt dahil olmak üzere ek Dizinleyici verilerini günlüğe kaydet",
"SearchQueries": "Arama Sorguları",
"SyncProfile": "Profil Senkronizasyonu",
"NoSearchResultsFound": "Hiçbir arama sonucu bulunamadı, aşağıdan yeni bir arama yapmayı deneyin.",
"RssFeed": "RSS Beslemesi",
"VipExpiration": "VIP Son Kullanma Tarihi",
"IndexerPassThePopcornSettingsApiKeyHelpText": "Site API Anahtarı",
"IndexerSettingsFreeleechOnly": "Sadece Freeleech",
"NoIndexerHistory": "Bu dizinleyici için geçmiş bulunamadı",
"SearchIndexers": "Dizinleyicilerde Ara",
"Url": "Url",
"Website": "Web site",
"IndexerTagsHelpText": "Etiketleri kullanarak Dizinleyici Proxy'lerini veya Dizinleyici'nin hangi uygulamalarla senkronize edileceğini belirtin.",
"MassEditor": "Kitle Editörü",
"RawSearchSupported": "Ham Arama Destekleniyor",
"SettingsFilterSentryEvents": "Analitik Olayları Filtrele",
"TorznabUrl": "Torznab Url",
"TotalHostGrabs": "İstemci Başına Toplam Alım",
"TotalUserAgentGrabs": "Kullanıcı Aracısı Başına Toplam Alım Sayısı",
"IndexerGazelleGamesSettingsApiKeyHelpText": "Siteden API Anahtarı (Ayarlar => Erişim Ayarları'nda Bulunur)",
"IndexerObsoleteCheckMessage": "Dizinleyiciler eski veya güncellendi: {0}. Lütfen {appName}'i kaldırın ve (veya) yeniden ekleyin",
"IndexerNzbIndexSettingsApiKeyHelpText": "Site API Anahtarı",
"IndexerOrpheusSettingsApiKeyHelpText": "Siteden API Anahtarı (Ayarlar => Erişim Ayarları'nda Bulunur)",
"IndexerHDBitsSettingsPasskeyHelpText": "Kullanıcı Detaylarından Geçiş Anahtarı",
"IndexerQuery": "Dizinleyici Sorgusu",
"MovieSearch": "Film Arama",
"TotalGrabs": "Toplam Alınan",
"TotalHostQueries": "İstemci Başına Toplam Sorgu",
"Query": "Sorgu",
"QueryOptions": "Sorgu Seçenekleri",
"SyncLevelAddRemove": "Yalnızca Ekle ve Kaldır: {appName} uygulamasından dizinleyiciler eklendiğinde veya kaldırıldığında, bu uzak uygulama güncellenecektir.",
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "Tarayıcıdan kullanılan çerezle ilişkili Kullanıcı Aracısı",
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini arayın",
"IndexerSettingsAppsMinimumSeedersHelpText": "Uygulamalar tarafından indeksleyicinin alım yapması için gereken minimum sedeerlar, boş bırakılırsa Eşitleme profilinin varsayılanı kullanılacaktır",
"IndexerSettingsQueryLimit": "Sorgu Limiti",
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Yalnızca freeleech sürümlerini göster",
"IndexerHDBitsSettingsUseFilenames": "Dosya Adlarını Kullan",
"IndexerNewznabSettingsAdditionalParametersHelpText": "Ek Newznab parametreleri",
"IndexerNewznabSettingsApiKeyHelpText": "Site API Anahtarı",
"IndexerSettingsAppsMinimumSeeders": "Uygulamalar Minimum Seeders",
"RedirectHelpText": "Dizinleyici için gelen indirme isteğini yeniden yönlendirin ve isteği {appName} aracılığıyla proxy olarak göndermek yerine doğrudan alım yapmayı tercih edin",
"SyncLevelFull": "Tam Senkronizasyon: Bu uygulamanın dizinleyicilerini tamamen senkronize halde tutar. {appName} içindeki dizinleyicilerde yapılan değişiklikler daha sonra bu uygulamayla senkronize edilir. Bu uygulama içinde dizinleyicilerde uzaktan yapılan herhangi bir değişiklik, bir sonraki senkronizasyonda {appName} tarafından geçersiz kılınır.",
"IndexerSettingsPreferMagnetUrl": "Magnet URL'sini Tercih Et",
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Site API Anahtarı",
"ProwlarrDownloadClientsInAppOnlyAlert": "İndirme istemcileri yalnızca {appName} uygulama içi aramalar içindir ve uygulamalarla senkronize edilmez. Geliştiricilerin bu tür bir işlevsellik ekleme planı yoktur.",
"ProwlarrSupportsAnyDownloadClient": "{appName} aşağıda listelenen indirme istemcilerini destekler.",
"UnableToLoadIndexerProxies": "Dizin Oluşturucu Proxy'leri yüklenemiyor",
"IndexerStatus": "Dizinleyici Durumu",
"IndexerPassThePopcornSettingsGoldenPopcornOnly": "Sadece Golden Popcorn",
"IndexerPassThePopcornSettingsGoldenPopcornOnlyHelpText": "Yalnızca Golden Popcorn sürümlerini arayın",
"IndexerSettingsPackSeedTime": "Paket Seed Süresi",
"IndexerSettingsPackSeedTimeIndexerHelpText": "Bir paketin (sezon veya diskografi) torrentinin durdurulmadan önce edilmesi gereken süre, boş bırakılırsa varsayılan değeri kullanılır",
"IndexerFileListSettingsPasskeyHelpText": "Site Parolası (Bu, indirme istemcinizde gösterilen izleyici URL'sindeki alfanümerik dizedir)",
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Kullanıcı ve Torrent izinlerine sahip olmalısınız",
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Grup adlarına göre sürüm ara",
"IndexerHealthCheckNoIndexers": "Hiçbir dizinleyici etkinleştirilmedi, {appName} arama sonuçlarını döndürmeyecek",
"QueryType": "Sorgu Türü"
}

View File

@@ -292,7 +292,7 @@
"Style": "Стиль",
"SuggestTranslationChange": "Запропонуйте зміну перекладу",
"TableOptionsColumnsMessage": "Виберіть, які стовпці відображаються та в якому порядку вони відображаються",
"SystemTimeCheckMessage": "Системний час вимкнено більш ніж на 1 день. Заплановані завдання можуть не працювати належним чином, доки час не буде виправлено",
"SystemTimeHealthCheckMessage": "Системний час вимкнено більш ніж на 1 день. Заплановані завдання можуть не працювати належним чином, доки час не буде виправлено",
"OnGrab": "При захопленні",
"SSLCertPath": "Шлях сертифіката SSL",
"UI": "Інтерфейс користувача",
@@ -436,5 +436,10 @@
"ExternalUpdater": "{appName} налаштовано на використання зовнішнього механізму оновлення",
"NoEventsFound": "Подій не знайдено",
"RestartReloadNote": "Примітка: {appName} автоматично перезапуститься та перезавантажить інтерфейс під час процесу відновлення.",
"InstallLatest": "Встановити останній"
"InstallLatest": "Встановити останній",
"Mixed": "Виправлено",
"CurrentlyInstalled": "В даний час встановлено",
"Season": "Причина",
"Stats": "Статус",
"CountIndexersSelected": "{count} індексер(-и) обрано"
}

View File

@@ -60,7 +60,7 @@
"SSLPort": "Cổng SSL",
"Style": "Phong cách",
"SuggestTranslationChange": "Đề xuất thay đổi bản dịch",
"SystemTimeCheckMessage": "Thời gian hệ thống tắt hơn 1 ngày. Các tác vụ đã lên lịch có thể không chạy chính xác cho đến khi thời gian được sửa",
"SystemTimeHealthCheckMessage": "Thời gian hệ thống tắt hơn 1 ngày. Các tác vụ đã lên lịch có thể không chạy chính xác cho đến khi thời gian được sửa",
"TableOptions": "Tùy chọn bảng",
"TableOptionsColumnsMessage": "Chọn cột nào hiển thị và chúng xuất hiện theo thứ tự nào",
"TagCannotBeDeletedWhileInUse": "Không thể bị xóa khi đang sử dụng",
@@ -372,5 +372,30 @@
"ExternalUpdater": "{appName} được định cấu hình để sử dụng cơ chế cập nhật bên ngoài",
"RestartReloadNote": "Lưu ý: {appName} sẽ tự động khởi động lại và tải lại giao diện người dùng trong quá trình khôi phục.",
"UpdateAppDirectlyLoadError": "Không thể cập nhật {appName} trực tiếp,",
"InstallLatest": "Cài đặt mới nhất"
"InstallLatest": "Cài đặt mới nhất",
"AuthenticationMethodHelpTextWarning": "Vui lòng chọn một phương thức xác thực hợp lệ",
"AuthenticationRequiredPasswordHelpTextWarning": "Nhập mật khẩu mới",
"AuthenticationRequiredUsernameHelpTextWarning": "Nhập tên người dùng mới",
"UpdaterLogFiles": "Tệp nhật ký của trình cập nhật",
"UseSsl": "Dùng SSL",
"AppUpdatedVersion": "{appName} đã được cập nhật lên phiên bản `{version}`, để nhận được những thay đổi mới nhất, bạn cần tải lại {appName}",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Xác nhận mật khẩu mới",
"UpdateAvailableHealthCheckMessage": "Có cập nhật mới: {version}",
"AuthenticationRequiredWarning": "Để ngăn truy cập từ xa mà không cần xác thực, {appName} hiện yêu cầu bật xác thực. Bạn có thể tùy ý tắt xác thực từ các địa chỉ cục bộ.",
"AuthenticationRequired": "Bắt buộc phải xác thực",
"AuthenticationMethod": "Phương thức xác thực",
"AddDownloadClientImplementation": "Thêm trình tải xuống - {implementationName}",
"AddIndexerImplementation": "Thêm trình lập chỉ mục - {implementationName}",
"AddConnection": "Thêm kết nối",
"AddConnectionImplementation": "Thêm điều kiện - {implementationName}",
"AppUpdated": "{appName} đã cập nhật",
"Clone": "Đóng",
"EditIndexerImplementation": "Thêm điều kiện - {implementationName}",
"CurrentlyInstalled": "Mới cài đặt",
"EditApplicationImplementation": "Thêm điều kiện - {implementationName}",
"Stats": "Trạng thái",
"Season": "Lý do",
"Mixed": "đã sửa",
"EditConnectionImplementation": "Thêm điều kiện - {implementationName}",
"AddApplicationImplementation": "Thêm điều kiện - {implementationName}"
}

View File

@@ -13,18 +13,18 @@
"AddRemoveOnly": "仅添加和删除",
"AddSyncProfile": "添加同步配置文件",
"AddToDownloadClient": "添加发布到下载客户端",
"Added": "添加",
"Added": "添加日期",
"AddedToDownloadClient": "发布已添加档案到客户端",
"AddingTag": "添加标签",
"Age": "年龄",
"All": "全部",
"AllIndexersHiddenDueToFilter": "由于应用了筛选器,所有索引器都被隐藏。",
"Analytics": "分析",
"AnalyticsEnabledHelpText": "将匿名使用情况和错误信息发送到{appName}的服务器。这包括有关您的浏览器信息、您使用的{appName} WebUI页面、错误报告以及操作系统和运行时版本。我们将使用此信息来确定功能和错误修复的优先级。",
"AnalyticsEnabledHelpText": "将匿名使用情况和错误信息发送到 {appName} 的服务器。这包括有关您的浏览器信息、您使用的 {appName} WebUI页面、错误报告以及操作系统和运行时版本。我们将使用此信息来确定功能和错误修复的优先级。",
"ApiKey": "API 密钥",
"ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少 {length} 个字符长。您可以通过设置或配置文件完成此操作",
"AppDataDirectory": "AppData 目录",
"AppDataLocationHealthCheckMessage": "更新时无法阻止删除 AppData",
"AppDataLocationHealthCheckMessage": "为防止在更新时删除 AppData,更新将无法进行",
"AppProfileInUse": "正在使用的应用程序配置文件",
"AppProfileSelectHelpText": "应用程序配置用于控制应用程序同步设置 RSS、自动搜索和交互式搜索设置",
"AppSettingsSummary": "配置{appName}与PVR程序交互方式的应用和设置",
@@ -89,7 +89,7 @@
"ConnectSettingsSummary": "通知和自定义脚本",
"ConnectionLost": "连接丢失",
"Connections": "连接",
"CouldNotConnectSignalR": "无法连接至SignalR不会升级UI",
"CouldNotConnectSignalR": "无法连接至 SignalRUI 将不会更新",
"Custom": "自定义",
"CustomFilters": "自定义过滤器",
"DatabaseMigration": "数据库迁移版本",
@@ -101,14 +101,14 @@
"DeleteApplication": "删除应用程序",
"DeleteApplicationMessageText": "您确定要删除应用程序“{name}”吗?",
"DeleteBackup": "删除备份",
"DeleteBackupMessageText": "您确定要删除备份“{name}”吗?",
"DeleteBackupMessageText": "您确定要删除备份 “{name}” 吗?",
"DeleteClientCategory": "删除下载客户端分类",
"DeleteDownloadClient": "删除下载客户端",
"DeleteDownloadClientMessageText": "确定要删除下载客户端 “{name}” 吗?",
"DeleteDownloadClientMessageText": "确定要删除下载客户端 “{name}” 吗?",
"DeleteIndexerProxy": "删除搜刮器代理",
"DeleteIndexerProxyMessageText": "您确定要删除索引器代理“{name}”吗?",
"DeleteNotification": "删除消息推送",
"DeleteNotificationMessageText": "您确定要删除通知“{name}”吗?",
"DeleteNotificationMessageText": "您确定要删除通知 “{name}” 吗?",
"DeleteTag": "删除标签",
"DeleteTagMessageText": "您确定要删除标签 '{label}' 吗?",
"Description": "描述",
@@ -133,7 +133,7 @@
"ElapsedTime": "运行时间",
"Enable": "启用",
"EnableAutomaticSearch": "启用自动搜索",
"EnableAutomaticSearchHelpText": "当自动搜索通过UI{appName}执行时将被使用",
"EnableAutomaticSearchHelpText": "当自动搜索通过 UI{appName} 执行时将被使用",
"EnableIndexer": "启用搜刮器",
"EnableInteractiveSearch": "启用手动搜索",
"EnableInteractiveSearchHelpText": "当手动搜索启用时使用",
@@ -200,7 +200,7 @@
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "由于故障超过6小时所有搜刮器均不可用",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "由于故障6小时下列搜刮器都已不可用{indexerNames}",
"IndexerName": "‎索引‎‎名字‎",
"IndexerNoDefinitionCheckHealthCheckMessage": "索引器没有定义,将无法工作: {0}. 请删除或重新添加到{appName}",
"IndexerNoDefinitionCheckHealthCheckMessage": "索引器没有定义,将无法工作: {indexerNames}. 请删除或重新添加到{appName}",
"IndexerObsoleteCheckMessage": "搜刮器已过弃用或已更新:{0}。请将其删除和(或)重新添加到 {appName}",
"IndexerPriority": "搜刮器优先级",
"IndexerPriorityHelpText": "索引器优先级从1(最高)到50(最低)默认25。",
@@ -307,7 +307,7 @@
"ProwlarrSupportsAnyIndexer": "{appName}支持多种搜刮器包括任何使用Newznab/Torznab标准的搜刮器“通用Newznab”对应Usenet“Generic Torznab”对应Torrents。从以下搜索并选择你的搜刮器。",
"Proxies": "代理",
"Proxy": "代理",
"ProxyBypassFilterHelpText": "使用“ , ”作为分隔符,“ *. ”作为二级域名的通配符",
"ProxyBypassFilterHelpText": "使用 “ , ” 作为分隔符,并使用 “ *. ” 作为二级域名的通配符",
"ProxyBadRequestHealthCheckMessage": "测试代理失败。状态码:{statusCode}",
"ProxyFailedToTestHealthCheckMessage": "测试代理失败: {url}",
"ProxyResolveIpHealthCheckMessage": "无法解析已设置的代理服务器主机{proxyHostName}的IP地址",
@@ -411,7 +411,7 @@
"SyncProfile": "同步配置文件",
"SyncProfiles": "同步配置文件",
"System": "系统",
"SystemTimeCheckMessage": "系统时间相差超过1天。在纠正时间之前计划的任务可能无法正确运行",
"SystemTimeHealthCheckMessage": "系统时间相差超过1天。在纠正时间之前计划的任务可能无法正确运行",
"TVSearchTypes": "‎电视‎‎搜索‎‎类型‎",
"TableOptions": "表格选项",
"TableOptionsColumnsMessage": "选择显示哪些列并排序",
@@ -463,7 +463,7 @@
"UnableToLoadUISettings": "无法加载UI设置",
"UnsavedChanges": "未保存更改",
"UnselectAll": "取消全选",
"UpdateAutomaticallyHelpText": "自动下载并安装更新。还可以在“系统更新”中安装",
"UpdateAutomaticallyHelpText": "自动下载并安装更新。还可以在“系统”->“更新”中安装",
"UpdateAvailableHealthCheckMessage": "有新的更新可用",
"UpdateStartupNotWritableHealthCheckMessage": "无法安装更新,因为用户“{userName}”对于启动文件夹“{startupFolder}”没有写入权限。",
"UpdateStartupTranslocationHealthCheckMessage": "无法安装更新,因为启动文件夹“{0}”在一个应用程序迁移文件夹。Cannot install update because startup folder '{startupFolder}' is in an App Translocation folder.",
@@ -599,7 +599,7 @@
"PackSeedTime": "做种时间",
"PasswordConfirmation": "确认密码",
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "确认新密码",
"InvalidUILanguage": "您的UI设置为无效语言请纠正并保存设置",
"InvalidUILanguage": "您的 UI 设置为无效语言,请纠正并保存设置",
"NoIndexerCategories": "没有找到此索引器的分类",
"DownloadClientQbittorrentSettingsContentLayout": "内容布局",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "是否使用 qBittorrent 配置的内容布局使用种子的原始布局或始终创建子文件夹qBittorrent 4.3.2+",
@@ -609,7 +609,7 @@
"BlackholeFolderHelpText": "{appName} 将在其中存储 {extension} 文件的文件夹",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "在抓取时不会同步黑名单种子",
"UsenetBlackholeNzbFolder": "NZB文件夹",
"DownloadClientFreeboxSettingsAppIdHelpText": "创建访问 Freebox API 所需的 App ID即“app_id”",
"DownloadClientFreeboxSettingsAppIdHelpText": "创建访问 Freebox API 所需的 App ID “app_id”",
"DownloadClientNzbgetSettingsAddPausedHelpText": "此选项至少需要 NzbGet 版本 16.0",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "按顺序下载文件qBittorrent 4.1.0+",
"TorrentBlackholeSaveMagnetFilesHelpText": "如果没有可用的 .torrent 文件,请保存磁力链接(仅当下载客户端支持保存到文件的磁力连接时才有用)",
@@ -619,7 +619,7 @@
"DownloadClientDelugeSettingsUrlBaseHelpText": "向 Deluge JSON URL 添加前缀,请参阅 {url}",
"DownloadClientFloodSettingsUrlBaseHelpText": "为 Flood API 添加前缀,例如 {url}",
"DownloadClientFreeboxSettingsAppToken": "App Token",
"DownloadClientFreeboxSettingsAppTokenHelpText": "创建访问 Freebox API 所需的 App token即“ app_token”",
"DownloadClientFreeboxSettingsAppTokenHelpText": "创建访问 Freebox API 所需的 App token “ app_token”",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "添加到 qBittorrent 的种子的初始状态。 请注意,强制做种不遵守种子限制",
"GrabRelease": "抓取版本",
"ManualGrab": "手动抓取",
@@ -641,7 +641,7 @@
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "如果 torrent 的哈希被屏蔽了某些索引器在使用RSS或者搜索期间可能无法正确拒绝它启用此功能将允许在抓取 torrent 之后但在将其发送到客户端之前拒绝它。",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "用于存放下载内容的共享文件夹可选择,留空使用默认的 Download Station 位置",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "添加媒体属性作为标签。 提示是示例。",
"DownloadClientFreeboxSettingsApiUrlHelpText": "使用 API 版本定义 Freebox API 基本 URL例如“{url}”,默认为“{defaultApiUrl}”",
"DownloadClientFreeboxSettingsApiUrlHelpText": "使用 API 版本定义 Freebox API 基本 URL例如 “{url}”,默认为 “{defaultApiUrl}”",
"DownloadClientPneumaticSettingsStrmFolder": "Strm 文件夹",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "首先下载第一个和最后一个片段qBittorrent 4.1.0+",
"DownloadClientQbittorrentSettingsUseSslHelpText": "使用安全连接。 请参阅 qBittorrent 中的「选项 -> Web UI -> “使用 HTTPS 而不是 HTTP”」。",
@@ -654,7 +654,7 @@
"IndexerSettingsAppsMinimumSeeders": "应用程序最少种子数",
"IndexerSettingsPackSeedTimeIndexerHelpText": "种子下载的时间季或专辑应在停止前保持上传状态应用程序默认设定为empty",
"IndexerHDBitsSettingsOriginsHelpText": "如果未指定,则使用所有选项。",
"DownloadClientFreeboxSettingsHostHelpText": "Freebox 的主机名或主机 IP 地址,默认为“{url}”(仅在同一网络上有效)",
"DownloadClientFreeboxSettingsHostHelpText": "Freebox 的主机名或主机 IP 地址,默认为 “{url}”(仅在同一网络上有效)",
"DownloadClientFreeboxSettingsPortHelpText": "用于访问 Freebox 接口的端口,默认为 '{port}'",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "先下载首尾文件块",
"DownloadClientSettingsAddPaused": "添加并暂停",
@@ -670,7 +670,7 @@
"Menu": "菜单",
"Mixed": "混合",
"TorrentBlackholeSaveMagnetFilesExtension": "保存磁力链接文件扩展名",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "用于磁力链接的扩展名,默认为“.magnet”",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "用于磁力链接的扩展名,默认为 “.magnet”",
"Destination": "目标",
"Directory": "目录",
"IndexerHDBitsSettingsCodecs": "编解码器",
@@ -714,7 +714,7 @@
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "默认的备用分类,当发布资源没有匹配的分类时将使用此分类。为 {appName} 添加一个特定的分类,可以避免与非 {appName} 的无关下载发生冲突。分类是可选的,但强烈建议使用。启用分类后,会在输出目录中创建一个 [分类] 子目录。",
"ErrorRestoringBackup": "恢复备份错误",
"UpdaterLogFiles": "更新器日志文件",
"WouldYouLikeToRestoreBackup": "是否要还原备份“{name}”?",
"WouldYouLikeToRestoreBackup": "是否要还原备份 “{name}”?",
"AptUpdater": "使用apt安装更新",
"DockerUpdater": "更新Docker容器以更新应用",
"Download": "下载",
@@ -726,5 +726,14 @@
"RestartReloadNote": "注意:{appName}将在恢复过程中自动重启并重新加载UI。",
"TheLogLevelDefault": "默认的日志等级为 \"Info\",可以在 [常规设置] 中修改 (/settings/general)",
"UpdateAppDirectlyLoadError": "无法直接更新{appName}",
"InstallLatest": "安装最新版"
"InstallLatest": "安装最新版",
"Install": "安装",
"InstallMajorVersionUpdate": "安装更新",
"InstallMajorVersionUpdateMessage": "此更新将安装新的主要版本,这可能与您的系统不兼容。您确定要安装此更新吗?",
"InstallMajorVersionUpdateMessageLink": "请查看 [{domain}]({url}) 以获取更多信息。",
"CurrentlyInstalled": "已安装",
"PreviouslyInstalled": "上次安装",
"FailedToFetchSettings": "设置同步失败",
"DownloadClientSettingsPriorityItemHelpText": "抓取内容时优先使用",
"IndexerAlphaRatioSettingsExcludeScene": "排除场景"
}

View File

@@ -0,0 +1,6 @@
{
"About": "关于",
"Add": "添加",
"Analytics": "分析",
"Username": "用户名"
}

View File

@@ -92,7 +92,7 @@
"Queued": "佇列",
"Replace": "替換",
"Scheduled": "已排程",
"UI": "UI",
"UI": "使用者介面",
"Apply": "套用",
"Connections": "連接",
"Reset": "重置",
@@ -112,7 +112,7 @@
"UnableToAddANewAppProfilePleaseTryAgain": "無法加入新的條件,請重新嘗試。",
"UnableToAddANewApplicationPleaseTryAgain": "無法加入新的條件,請重新嘗試。",
"UnableToAddANewDownloadClientPleaseTryAgain": "無法加入新的條件,請重新嘗試。",
"UnableToAddANewIndexerPleaseTryAgain": "無法加入新的條件,請重新嘗試。",
"UnableToAddANewIndexerPleaseTryAgain": "無法加入新的索引器,請重新嘗試。",
"UnableToAddANewIndexerProxyPleaseTryAgain": "無法加入新的條件,請重新嘗試。",
"AddApplicationImplementation": "新增連接 - {implementationName}",
"AddIndexerProxyImplementation": "新增索引 - {implementationName}",
@@ -137,5 +137,24 @@
"BuiltIn": "內建的",
"AllSearchResultsHiddenByFilter": "根據所使用的篩選器已將所有結果隱藏",
"AptUpdater": "使用apt安裝更新",
"Discord": "Discord"
"Discord": "Discord",
"Any": "任何",
"UpdateAppDirectlyLoadError": "無法直接更新 {appName}",
"UnselectAll": "取消全選",
"Uptime": "上線時間",
"AdvancedSettingsHiddenClickToShow": "進階設定已隱藏,點擊以顯示",
"UnableToLoadIndexers": "無法載入索引器",
"UnableToLoadHistory": "無法載入歷史記錄",
"UnableToLoadTags": "無法載入標籤",
"UILanguage": "使用者介面語言",
"UILanguageHelpText": "{appName} 介面所使用的語言",
"UISettings": "使用者介面設定",
"UnableToLoadUISettings": "無法載入 UI 設定",
"AddCustomFilter": "新增自定義過濾器",
"AddApplication": "新增應用程式",
"AddDownloadClientToProwlarr": "新增一個下載客戶端以允許 {appName} 從 UI 直接傳送手動搜尋結果。",
"AddCategory": "新增類別",
"AdvancedSettingsShownClickToHide": "進階設定已顯示,點擊以隱藏",
"Version": "版本",
"UpdateAvailableHealthCheckMessage": "可用的新版本: {version}"
}

View File

@@ -105,6 +105,8 @@ namespace NzbDrone.Core.Messaging.Commands
_logger.Trace("Publishing {0}", command.Name);
_logger.Trace("Checking if command is queued or started: {0}", command.Name);
command.Trigger = trigger;
lock (_commandQueue)
{
var existingCommands = QueuedOrStarted(command.Name);
@@ -141,7 +143,6 @@ namespace NzbDrone.Core.Messaging.Commands
var command = GetCommand(commandName);
command.LastExecutionTime = lastExecutionTime;
command.LastStartTime = lastStartTime;
command.Trigger = trigger;
return Push(command, priority, trigger);
}
@@ -232,13 +233,13 @@ namespace NzbDrone.Core.Messaging.Commands
_repo.Trim();
}
private dynamic GetCommand(string commandName)
private Command GetCommand(string commandName)
{
commandName = commandName.Split('.').Last();
var commands = _knownTypes.GetImplementations(typeof(Command));
var commandType = commands.Single(c => c.Name.Equals(commandName, StringComparison.InvariantCultureIgnoreCase));
return Json.Deserialize("{}", commandType);
return Json.Deserialize("{}", commandType) as Command;
}
private void Update(CommandModel command, CommandStatus status, string message)

View File

@@ -79,7 +79,7 @@ namespace NzbDrone.Core.Notifications
foreach (var notification in notifications)
{
if (blockedNotifications.TryGetValue(notification.Definition.Id, out var notificationStatus))
if (blockedNotifications.TryGetValue(notification.Definition.Id, out var notificationStatus) && notificationStatus.DisabledTill.HasValue)
{
_logger.Debug("Temporarily ignoring notification {0} till {1} due to recent failures.", notification.Definition.Name, notificationStatus.DisabledTill.Value.ToLocalTime());
continue;

View File

@@ -10,8 +10,8 @@
<PackageReference Include="Microsoft.AspNetCore.Cryptography.KeyDerivation" Version="6.0.35" />
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
<PackageReference Include="Npgsql" Version="7.0.8" />
<PackageReference Include="Polly" Version="8.4.2" />
<PackageReference Include="Npgsql" Version="7.0.9" />
<PackageReference Include="Polly" Version="8.5.0" />
<PackageReference Include="Servarr.FluentMigrator.Runner" Version="3.3.2.9" />
<PackageReference Include="Servarr.FluentMigrator.Runner.Postgres" Version="3.3.2.9" />
<PackageReference Include="Servarr.FluentMigrator.Runner.SQLite" Version="3.3.2.9" />

View File

@@ -61,9 +61,8 @@ namespace Prowlarr.Api.V1.Commands
using var reader = new StreamReader(Request.Body);
var body = reader.ReadToEnd();
dynamic command = STJson.Deserialize(body, commandType);
var command = STJson.Deserialize(body, commandType) as Command;
command.Trigger = CommandTrigger.Manual;
command.SuppressMessages = !command.SendUpdatesToClient;
command.SendUpdatesToClient = true;
command.ClientUserAgent = Request.Headers["User-Agent"];

View File

@@ -46,6 +46,7 @@ namespace Prowlarr.Api.V1.Config
public int BackupInterval { get; set; }
public int BackupRetention { get; set; }
public int HistoryCleanupDays { get; set; }
public bool TrustCgnatIpAddresses { get; set; }
}
public static class HostConfigResourceMapper

View File

@@ -341,7 +341,7 @@ namespace NzbDrone.Api.V1.Indexers
{
var blockedIndexers = _indexerStatusService.GetBlockedProviders().ToDictionary(v => v.ProviderId, v => v);
return blockedIndexers.TryGetValue(indexer.Definition.Id, out var blockedIndexerStatus) ? blockedIndexerStatus : null;
return blockedIndexers.GetValueOrDefault(indexer.Definition.Id);
}
private void AddRetryAfterHeader(int retryAfterSeconds)

View File

@@ -51,7 +51,7 @@ namespace Prowlarr.Api.V1.System.Backup
}
[RestDeleteById]
public void DeleteBackup(int id)
public object DeleteBackup(int id)
{
var backup = GetBackup(id);
@@ -68,6 +68,8 @@ namespace Prowlarr.Api.V1.System.Backup
}
_diskProvider.DeleteFile(path);
return new { };
}
[HttpPost("restore/{id:int}")]

View File

@@ -4966,6 +4966,9 @@
"historyCleanupDays": {
"type": "integer",
"format": "int32"
},
"trustCgnatIpAddresses": {
"type": "boolean"
}
},
"additionalProperties": false

View File

@@ -27,10 +27,13 @@ namespace Prowlarr.Http.Authentication
if (_authenticationRequired == AuthenticationRequiredType.DisabledForLocalAddresses)
{
if (context.Resource is HttpContext httpContext &&
IPAddress.TryParse(httpContext.GetRemoteIP(), out var ipAddress) &&
ipAddress.IsLocalAddress())
IPAddress.TryParse(httpContext.GetRemoteIP(), out var ipAddress))
{
context.Succeed(requirement);
if (ipAddress.IsLocalAddress() ||
(_configService.TrustCgnatIpAddresses && ipAddress.IsCgnatIpAddress()))
{
context.Succeed(requirement);
}
}
}

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