Compare commits

...

26 Commits

Author SHA1 Message Date
bakerboy448
749684e24a New: Indexer Messaging and Error Improvements
(cherry picked from commit 3b505d8734dcbe3fa53acba7f94f1361151e6a44)
2023-06-19 16:12:15 +03:00
Bogdan
3a0ca45aa9 Fix sorting queue items by size 2023-06-18 15:00:49 +03:00
Bogdan
595efd498e Close database connections in housekeeping tasks
Co-authored-by: ferencmarkizay <ferencmarkizay@gmail.com>
2023-06-18 15:00:11 +03:00
Bogdan
dea1060d61 Bump version to 0.2.0 2023-06-18 07:18:42 +03:00
Weblate
f6049b8bf2 Translated using Weblate (Portuguese (Brazil)) [skip ci]
Currently translated at 100.0% (942 of 942 strings)

Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translation: Servarr/Readarr
2023-06-18 04:53:21 +03:00
Bogdan
53ced38221 New: Improved page loading errors
Closes #2605
2023-06-17 00:51:10 +03:00
Tristan Kennedy
3a3cf8511e Added padding to search tab to maintain visual consistancy
(cherry picked from commit 55ef505d740a9aadc7f161274006e150b0d9cf8f)
2023-06-17 00:50:55 +03:00
Servarr
9ec913337d Automated API Docs update [skip ci] 2023-06-15 13:26:07 +03:00
Weblate
9a2120ae92 Update translation files [skip ci]
Updated by "Cleanup translation files" hook in Weblate.

Translated using Weblate (Norwegian Bokmål) [skip ci]

Currently translated at 16.0% (151 of 942 strings)

Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 100.0% (942 of 942 strings)

Translated using Weblate (Turkish) [skip ci]

Currently translated at 61.6% (581 of 942 strings)

Translated using Weblate (Romanian) [skip ci]

Currently translated at 59.9% (565 of 942 strings)

Translated using Weblate (Polish) [skip ci]

Currently translated at 65.9% (621 of 942 strings)

Translated using Weblate (Korean) [skip ci]

Currently translated at 60.9% (574 of 942 strings)

Translated using Weblate (Japanese) [skip ci]

Currently translated at 61.4% (579 of 942 strings)

Translated using Weblate (Icelandic) [skip ci]

Currently translated at 61.5% (580 of 942 strings)

Translated using Weblate (Hindi) [skip ci]

Currently translated at 61.4% (579 of 942 strings)

Translated using Weblate (Hebrew) [skip ci]

Currently translated at 64.0% (603 of 942 strings)

Translated using Weblate (French) [skip ci]

Currently translated at 78.5% (740 of 942 strings)

Translated using Weblate (Finnish) [skip ci]

Currently translated at 88.1% (830 of 942 strings)

Translated using Weblate (Danish) [skip ci]

Currently translated at 61.9% (584 of 942 strings)

Translated using Weblate (Czech) [skip ci]

Currently translated at 61.6% (581 of 942 strings)

Translated using Weblate (Bulgarian) [skip ci]

Currently translated at 61.5% (580 of 942 strings)

Translated using Weblate (Arabic) [skip ci]

Currently translated at 61.6% (581 of 942 strings)

Translated using Weblate (Spanish) [skip ci]

Currently translated at 68.2% (643 of 942 strings)

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fatalicus <fatalicus@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translation: Servarr/Readarr
2023-06-15 13:16:52 +03:00
Bogdan
818d3a94d5 Add skip ci to API docs update commit 2023-06-15 13:15:37 +03:00
Bogdan
4e493b74e6 Update cleansing rules for RSS TL feed and homedir for Mac
(cherry picked from commit e5ff4aafa3f0b855fec332788e9fc490a03dfce3)

Closes #2593
2023-06-15 13:06:26 +03:00
Bogdan
c7eaf1e85c Update translations
(cherry picked from commit 26031389757f6b5270bbe5591101b08e58debb73)

Closes #2599
2023-06-15 13:02:50 +03:00
Bogdan
31fe15c911 Add HelpTextWarning support in FieldDefinition
(cherry picked from commit 0e07d54ee77d5f83716e17b6757e23f38ff73694)

Closes #2595
2023-06-15 13:00:42 +03:00
Bogdan
2c36a6c25f Require ApiKey for all actions in SonarrImport
(cherry picked from commit 19b8fbe13bf584b915a05fe9fc87622adbaee0b7)

Closes #2600
2023-06-15 12:58:43 +03:00
Bogdan
6af56f7a15 Fixed: Treat redirects as errors in Readarr Import List
(cherry picked from commit 059a156f4a34c6b9cbe139fa1973b814e8a534ae)

Closes #2601
2023-06-15 12:57:09 +03:00
Qstick
6e13191c25 Fixed: Correctly handle 302 and 303 redirects in HttpClient
(cherry picked from commit ed7c5a937f4b50fcdf819e8fe347c8c0bc6bd2e7)

(cherry picked from commit 11bd764a75d3b97117098738d3489c4b3329738f)
2023-06-14 08:13:20 +03:00
bakerboy448
921ddfc962 Fixed: Handle checkingResumeData state form qBittorrent
(cherry picked from commit 8d8a16225ff7772ccb57784f272ca31e28bb8455)
2023-06-14 08:12:58 +03:00
Weblate
22f977401a Update translation files [skip ci]
Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/
Translation: Servarr/Readarr
2023-06-13 01:38:53 +03:00
Bogdan
113d9a07ef Update translations 2023-06-13 01:35:03 +03:00
Qstick
0560d65ea1 Update Remote Path Mapping delete modal title
(cherry picked from commit 18716a00516a971f7f2eb369b920266bea24fe08)

Closes #2588
Fixes #2587
2023-06-12 22:31:04 +03:00
Weblate
94ff105104 Translated using Weblate (Indonesian) [skip ci]
Currently translated at 3.7% (35 of 928 strings)

Co-authored-by: liimee <git.taaa@fedora.email>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/id/
Translation: Servarr/Readarr
2023-06-12 21:58:09 +03:00
Bogdan
9bcf258aa9 Bump version to 0.1.9 2023-06-11 09:38:16 +03:00
Bogdan
54985bd4ca Use more specific styling for kinds in ProgressBar
(cherry picked from commit dd31c913d2a974d95f3be251714ce749cfd99a72)
2023-06-10 02:07:40 +03:00
Weblate
9e4d551f08 Translated using Weblate (Russian) [skip ci]
Currently translated at 67.7% (629 of 928 strings)

Co-authored-by: Андрей <andryfly7@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ru/
Translation: Servarr/Readarr
2023-06-10 02:02:58 +03:00
Weblate
8390da1c2a Translated using Weblate (Greek) [skip ci]
Currently translated at 99.8% (927 of 928 strings)

Translated using Weblate (French) [skip ci]

Currently translated at 78.4% (728 of 928 strings)

Translated using Weblate (Portuguese) [skip ci]

Currently translated at 77.0% (715 of 928 strings)

Translated using Weblate (German) [skip ci]

Currently translated at 98.3% (913 of 928 strings)

Translated using Weblate (German) [skip ci]

Currently translated at 98.3% (913 of 928 strings)

Translated using Weblate (Indonesian) [skip ci]

Currently translated at 3.5% (33 of 928 strings)

Translated using Weblate (Croatian) [skip ci]

Currently translated at 15.7% (146 of 928 strings)

Translated using Weblate (Ukrainian) [skip ci]

Currently translated at 66.7% (619 of 928 strings)

Translated using Weblate (Norwegian Bokmål) [skip ci]

Currently translated at 15.7% (146 of 928 strings)

Translated using Weblate (Catalan) [skip ci]

Currently translated at 67.7% (629 of 928 strings)

Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 100.0% (928 of 928 strings)

Translated using Weblate (Portuguese (Brazil)) [skip ci]

Currently translated at 100.0% (928 of 928 strings)

Translated using Weblate (Portuguese) [skip ci]

Currently translated at 76.9% (714 of 928 strings)

Translated using Weblate (Vietnamese) [skip ci]

Currently translated at 61.5% (571 of 928 strings)

Translated using Weblate (Turkish) [skip ci]

Currently translated at 61.6% (572 of 928 strings)

Translated using Weblate (Swedish) [skip ci]

Currently translated at 86.7% (805 of 928 strings)

Translated using Weblate (Russian) [skip ci]

Currently translated at 67.6% (628 of 928 strings)

Translated using Weblate (Polish) [skip ci]

Currently translated at 65.7% (610 of 928 strings)

Translated using Weblate (Japanese) [skip ci]

Currently translated at 61.5% (571 of 928 strings)

Translated using Weblate (Italian) [skip ci]

Currently translated at 73.0% (678 of 928 strings)

Translated using Weblate (Hungarian) [skip ci]

Currently translated at 98.0% (910 of 928 strings)

Translated using Weblate (French) [skip ci]

Currently translated at 78.3% (727 of 928 strings)

Translated using Weblate (Greek) [skip ci]

Currently translated at 98.5% (915 of 928 strings)

Translated using Weblate (German) [skip ci]

Currently translated at 98.1% (911 of 928 strings)

Translated using Weblate (German) [skip ci]

Currently translated at 98.1% (911 of 928 strings)

Translated using Weblate (Dutch) [skip ci]

Currently translated at 68.2% (633 of 928 strings)

Translated using Weblate (Dutch) [skip ci]

Currently translated at 68.2% (633 of 928 strings)

Translated using Weblate (French) [skip ci]

Currently translated at 78.3% (727 of 928 strings)

Translated using Weblate (Thai) [skip ci]

Currently translated at 61.5% (571 of 928 strings)

Translated using Weblate (Romanian) [skip ci]

Currently translated at 60.0% (557 of 928 strings)

Translated using Weblate (Icelandic) [skip ci]

Currently translated at 61.5% (571 of 928 strings)

Translated using Weblate (Hindi) [skip ci]

Currently translated at 61.5% (571 of 928 strings)

Translated using Weblate (Hebrew) [skip ci]

Currently translated at 64.0% (594 of 928 strings)

Translated using Weblate (Finnish) [skip ci]

Currently translated at 88.2% (819 of 928 strings)

Translated using Weblate (Danish) [skip ci]

Currently translated at 61.9% (575 of 928 strings)

Translated using Weblate (Bulgarian) [skip ci]

Currently translated at 61.5% (571 of 928 strings)

Translated using Weblate (Spanish) [skip ci]

Currently translated at 67.9% (631 of 928 strings)

Translated using Weblate (Arabic) [skip ci]

Currently translated at 61.6% (572 of 928 strings)

Translated using Weblate (Czech) [skip ci]

Currently translated at 61.6% (572 of 928 strings)

Update translation files [skip ci]

Updated by "Cleanup translation files" hook in Weblate.

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Jens <jensmahnke@me.com>
Co-authored-by: MoowGlax <matthieu.derouet.pro@gmail.com>
Co-authored-by: Thijs Waalen <contact@thijswaalen.com>
Co-authored-by: Thodoris Kalatzis <teo.kal@hotmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: emacsdias <emacs.dias@gmail.com>
Co-authored-by: foXaCe <foxace66@gmail.com>
Co-authored-by: reloxx <reloxx@interia.pl>
Co-authored-by: splifter <a.strahlke@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/el/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/he/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/hu/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/id/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/nl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pl/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/sv/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/th/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/tr/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/uk/
Translate-URL: https://translate.servarr.com/projects/servarr/readarr/vi/
Translation: Servarr/Readarr
2023-06-07 19:21:06 +03:00
Qstick
44ae043c58 Bump version to 0.1.8 2023-06-04 14:48:35 -05:00
78 changed files with 729 additions and 330 deletions

View File

@@ -9,7 +9,7 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '0.1.7'
majorVersion: '0.2.0'
minorVersion: $[counter('minorVersion', 1)]
readarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(readarrVersion)'
@@ -984,7 +984,7 @@ stages:
git status
if git status | grep modified
then
git commit -am 'Automated API Docs update'
git commit -am 'Automated API Docs update [skip ci]'
git push -f --set-upstream origin api-docs
curl -X POST -H "Authorization: token ${GITHUBTOKEN}" -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/readarr/readarr/pulls -d '{"head":"api-docs","base":"develop","title":"Update API docs"}'
else

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import ConfirmModal from 'Components/Modal/ConfirmModal';
import PageContent from 'Components/Page/PageContent';
@@ -161,16 +162,16 @@ class Blocklist extends Component {
{
!isAnyFetching && !!error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadBlocklist')}
</div>
</Alert>
}
{
isAllPopulated && !error && !items.length &&
<div>
<Alert kind={kinds.INFO}>
{translate('NoHistoryBlocklist')}
</div>
</Alert>
}
{
@@ -214,7 +215,7 @@ class Blocklist extends Component {
isOpen={isConfirmRemoveModalOpen}
kind={kinds.DANGER}
title={translate('RemoveSelected')}
message={translate('RemoveSelectedMessageText')}
message={translate('RemoveSelectedItemBlocklistMessageText')}
confirmLabel={translate('RemoveSelected')}
onConfirm={this.onRemoveSelectedConfirmed}
onCancel={this.onConfirmRemoveModalClose}

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import FilterMenu from 'Components/Menu/FilterMenu';
import PageContent from 'Components/Page/PageContent';
@@ -11,7 +12,7 @@ import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
import TablePager from 'Components/Table/TablePager';
import { align, icons } from 'Helpers/Props';
import { align, icons, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import HistoryRowConnector from './HistoryRowConnector';
@@ -85,9 +86,9 @@ class History extends Component {
{
!isFetchingAny && hasError &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadHistory')}
</div>
</Alert>
}
{
@@ -95,9 +96,9 @@ class History extends Component {
// wait for the books to populate because they are never coming.
isPopulated && !hasError && !items.length &&
<div>
No history found
</div>
<Alert kind={kinds.INFO}>
{translate('NoHistory')}
</Alert>
}
{

View File

@@ -1,6 +1,7 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
@@ -12,7 +13,7 @@ import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import TableOptionsModalWrapper from 'Components/Table/TableOptions/TableOptionsModalWrapper';
import TablePager from 'Components/Table/TablePager';
import { align, icons } from 'Helpers/Props';
import { align, icons, kinds } from 'Helpers/Props';
import getRemovedItems from 'Utilities/Object/getRemovedItems';
import hasDifferentItems from 'Utilities/Object/hasDifferentItems';
import translate from 'Utilities/String/translate';
@@ -233,17 +234,17 @@ class Queue extends Component {
{
!isRefreshing && hasError ?
<div>
<Alert kind={kinds.DANGER}>
{translate('FailedToLoadQueue')}
</div> :
</Alert> :
null
}
{
isAllPopulated && !hasError && !items.length ?
<div>
<Alert kind={kinds.INFO}>
{translate('QueueIsEmpty')}
</div> :
</Alert> :
null
}

View File

@@ -89,12 +89,12 @@ class RemoveQueueItemsModal extends Component {
onModalClose={this.onModalClose}
>
<ModalHeader>
Remove Selected Item{selectedCount > 1 ? 's' : ''}
{selectedCount > 1 ? translate('RemoveSelectedItems') : translate('RemoveSelectedItem')}
</ModalHeader>
<ModalBody>
<div className={styles.message}>
Are you sure you want to remove {selectedCount} item{selectedCount > 1 ? 's' : ''} from the queue?
{selectedCount > 1 ? translate('RemoveSelectedItemsQueueMessageText', selectedCount) : translate('RemoveSelectedItemQueueMessageText')}
</div>
{
@@ -118,14 +118,14 @@ class RemoveQueueItemsModal extends Component {
<FormGroup>
<FormLabel>
Add Release{selectedCount > 1 ? 's' : ''} To Blocklist
{selectedCount > 1 ? translate('BlocklistReleases') : translate('BlocklistRelease')}
</FormLabel>
<FormInputGroup
type={inputTypes.CHECK}
name="blocklist"
value={blocklist}
helpText={translate('BlocklistHelpText')}
helpText={translate('BlocklistReleaseHelpText')}
onChange={this.onBlocklistChange}
/>
</FormGroup>
@@ -150,14 +150,14 @@ class RemoveQueueItemsModal extends Component {
<ModalFooter>
<Button onPress={this.onModalClose}>
Close
{translate('Close')}
</Button>
<Button
kind={kinds.DANGER}
onPress={this.onRemoveConfirmed}
>
Remove
{translate('Remove')}
</Button>
</ModalFooter>
</ModalContent>

View File

@@ -1,8 +1,10 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import { kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import AuthorHistoryRowConnector from './AuthorHistoryRowConnector';
@@ -70,9 +72,9 @@ class AuthorHistoryTableContent extends Component {
{
!isFetching && !!error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadHistory')}
</div>
</Alert>
}
{

View File

@@ -1,6 +1,8 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import { kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import AgendaConnector from './Agenda/AgendaConnector';
import * as calendarViews from './calendarViews';
@@ -31,9 +33,9 @@ class Calendar extends Component {
{
!isFetching && !!error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadTheCalendar')}
</div>
</Alert>
}
{

View File

@@ -62,6 +62,7 @@ function ProviderFieldFormGroup(props) {
name,
label,
helpText,
helpTextWarning,
helpLink,
placeholder,
value,
@@ -95,6 +96,7 @@ function ProviderFieldFormGroup(props) {
name={name}
label={label}
helpText={helpText}
helpTextWarning={helpTextWarning}
helpLink={helpLink}
placeholder={placeholder}
value={value}
@@ -121,6 +123,7 @@ ProviderFieldFormGroup.propTypes = {
name: PropTypes.string.isRequired,
label: PropTypes.string.isRequired,
helpText: PropTypes.string,
helpTextWarning: PropTypes.string,
helpLink: PropTypes.string,
placeholder: PropTypes.string,
value: PropTypes.any,

View File

@@ -1,6 +1,8 @@
import PropTypes from 'prop-types';
import React from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import { kinds } from 'Helpers/Props';
function PageSectionContent(props) {
const {
@@ -17,7 +19,7 @@ function PageSectionContent(props) {
);
} else if (!isFetching && !!error) {
return (
<div>{errorMessage}</div>
<Alert kind={kinds.DANGER}>{errorMessage}</Alert>
);
} else if (isPopulated && !error) {
return (

View File

@@ -16,6 +16,38 @@
box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);
color: var(--white);
transition: width 0.6s ease;
&.primary {
background-color: var(--primaryColor);
}
&.danger {
background-color: var(--dangerColor);
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, color(#f05050 shade(5%)), color(#f05050 shade(5%)) 5px, color(#f05050 shade(15%)) 5px, color(#f05050 shade(15%)) 10px);
}
}
&.success {
background-color: var(--successColor);
}
&.purple {
background-color: var(--purple);
}
&.warning {
background-color: var(--warningColor);
&:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, #ffa500, #ffa500 5px, color(#ffa500 tint(15%)) 5px, color(#ffa500 tint(15%)) 10px);
}
}
&.info {
background-color: var(--infoColor);
}
}
.frontTextContainer {
@@ -45,38 +77,6 @@
cursor: default;
}
.primary {
background-color: var(--primaryColor);
}
.danger {
background-color: var(--dangerColor);
&:global(.colorImpaired) {
background: repeating-linear-gradient(90deg, color(#f05050 shade(5%)), color(#f05050 shade(5%)) 5px, color(#f05050 shade(15%)) 5px, color(#f05050 shade(15%)) 10px);
}
}
.success {
background-color: var(--successColor);
}
.purple {
background-color: var(--purple);
}
.warning {
background-color: var(--warningColor);
&:global(.colorImpaired) {
background: repeating-linear-gradient(45deg, #ffa500, #ffa500 5px, color(#ffa500 tint(15%)) 5px, color(#ffa500 tint(15%)) 10px);
}
}
.info {
background-color: var(--infoColor);
}
.small {
height: $progressBarSmallHeight;

View File

@@ -38,7 +38,7 @@ function ProgressBar(props) {
{
showText && width ?
<div
className={styles.backTextContainer}
className={classNames(styles.backTextContainer, styles[kind])}
style={{ width: actualWidth }}
>
<div className={styles.backText}>
@@ -67,7 +67,7 @@ function ProgressBar(props) {
{
showText ?
<div
className={styles.frontTextContainer}
className={classNames(styles.frontTextContainer, styles[kind])}
style={{ width: progressPercent }}
>
<div

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
@@ -92,9 +93,9 @@ class SelectQualityModalContent extends Component {
{
!isFetching && !!error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadQualities')}
</div>
</Alert>
}
{

View File

@@ -7,3 +7,9 @@
.filteredMessage {
margin-top: 10px;
}
.blankpad {
padding-top: 10px;
padding-bottom: 10px;
padding-left: 2em;
}

View File

@@ -1,6 +1,7 @@
// This file is automatically generated.
// Please do not change this file!
interface CssExports {
'blankpad': string;
'filterMenuContainer': string;
'filteredMessage': string;
}

View File

@@ -104,7 +104,7 @@ function InteractiveSearch(props) {
{
!isFetching && error ?
<div>
<div className={styles.blankpad}>
Unable to load results for this book search. Try again later
</div> :
null
@@ -112,7 +112,7 @@ function InteractiveSearch(props) {
{
!isFetching && isPopulated && !totalReleasesCount ?
<div>
<div className={styles.blankpad}>
No results found
</div> :
null
@@ -120,7 +120,7 @@ function InteractiveSearch(props) {
{
!!totalReleasesCount && isPopulated && !items.length ?
<div>
<div className={styles.blankpad}>
All results are hidden by the applied filter
</div> :
null

View File

@@ -78,7 +78,7 @@ class Specification extends Component {
<IconButton
className={styles.cloneButton}
title={translate('Clone')}
title={translate('CloneCondition')}
name={icons.CLONE}
onPress={this.onCloneSpecificationPress}
/>
@@ -92,14 +92,14 @@ class Specification extends Component {
{
negate &&
<Label kind={kinds.DANGER}>
Negated
{translate('Negated')}
</Label>
}
{
required &&
<Label kind={kinds.SUCCESS}>
Required
{translate('Required')}
</Label>
}
</div>
@@ -114,8 +114,8 @@ class Specification extends Component {
<ConfirmModal
isOpen={this.state.isDeleteSpecificationModalOpen}
kind={kinds.DANGER}
title={translate('DeleteFormat')}
message={translate('DeleteFormatMessageText', [name])}
title={translate('DeleteCondition')}
message={translate('DeleteConditionMessageText', [name])}
confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteSpecification}
onCancel={this.onDeleteSpecificationModalClose}

View File

@@ -1,12 +1,13 @@
import PropTypes from 'prop-types';
import React from 'react';
import Alert from 'Components/Alert';
import FieldSet from 'Components/FieldSet';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
import FormLabel from 'Components/Form/FormLabel';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import { inputTypes, sizes } from 'Helpers/Props';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
function DownloadClientOptions(props) {
@@ -28,9 +29,9 @@ function DownloadClientOptions(props) {
{
!isFetching && error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadDownloadClientOptions')}
</div>
</Alert>
}
{

View File

@@ -88,8 +88,8 @@ class RemotePathMapping extends Component {
<ConfirmModal
isOpen={this.state.isDeleteRemotePathMappingModalOpen}
kind={kinds.DANGER}
title={translate('DeleteDelayProfile')}
message={translate('DeleteDelayProfileMessageText')}
title={translate('DeleteRemotePathMapping')}
message={translate('DeleteRemotePathMappingMessageText')}
confirmLabel={translate('Delete')}
onConfirm={this.onConfirmDeleteRemotePathMapping}
onCancel={this.onDeleteRemotePathMappingModalClose}

View File

@@ -1,6 +1,7 @@
import _ from 'lodash';
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import Form from 'Components/Form/Form';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import ConfirmModal from 'Components/Modal/ConfirmModal';
@@ -124,9 +125,9 @@ class GeneralSettings extends Component {
{
!isFetching && error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadGeneralSettings')}
</div>
</Alert>
}
{

View File

@@ -1,12 +1,13 @@
import PropTypes from 'prop-types';
import React from 'react';
import Alert from 'Components/Alert';
import FieldSet from 'Components/FieldSet';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
import FormLabel from 'Components/Form/FormLabel';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import { inputTypes } from 'Helpers/Props';
import { inputTypes, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
function IndexerOptions(props) {
@@ -28,9 +29,9 @@ function IndexerOptions(props) {
{
!isFetching && error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadIndexerOptions')}
</div>
</Alert>
}
{

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import FieldSet from 'Components/FieldSet';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
@@ -8,7 +9,7 @@ import FormLabel from 'Components/Form/FormLabel';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import { inputTypes, sizes } from 'Helpers/Props';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import RemotePathMappingsConnector from 'Settings/DownloadClients/RemotePathMappings/RemotePathMappingsConnector';
import SettingsToolbarConnector from 'Settings/SettingsToolbarConnector';
import translate from 'Utilities/String/translate';
@@ -79,9 +80,9 @@ class MediaManagement extends Component {
{
!isFetching && error &&
<FieldSet legend={translate('NamingSettings')}>
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadMediaManagementSettings')}
</div>
</Alert>
</FieldSet>
}

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import FieldSet from 'Components/FieldSet';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
@@ -7,7 +8,7 @@ import FormInputButton from 'Components/Form/FormInputButton';
import FormInputGroup from 'Components/Form/FormInputGroup';
import FormLabel from 'Components/Form/FormLabel';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import { inputTypes, sizes } from 'Helpers/Props';
import { inputTypes, kinds, sizes } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import NamingModal from './NamingModal';
import styles from './Naming.css';
@@ -118,9 +119,9 @@ class Naming extends Component {
{
!isFetching && error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadNamingSettings')}
</div>
</Alert>
}
{

View File

@@ -1,12 +1,13 @@
import PropTypes from 'prop-types';
import React from 'react';
import Alert from 'Components/Alert';
import FieldSet from 'Components/FieldSet';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
import FormInputGroup from 'Components/Form/FormInputGroup';
import FormLabel from 'Components/Form/FormLabel';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import { inputTypes } from 'Helpers/Props';
import { inputTypes, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
const writeAudioTagOptions = [
@@ -41,9 +42,9 @@ function MetadataProvider(props) {
{
!isFetching && error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadMetadataProviderSettings')}
</div>
</Alert>
}
{

View File

@@ -55,12 +55,12 @@ class ResetQualityDefinitionsModalContent extends Component {
onModalClose={onModalClose}
>
<ModalHeader>
Reset Quality Definitions
{translate('ResetQualityDefinitions')}
</ModalHeader>
<ModalBody>
<div className={styles.messageContainer}>
Are you sure you want to reset quality definitions?
{translate('ResetQualityDefinitionsMessageText')}
</div>
<FormGroup>
@@ -81,7 +81,7 @@ class ResetQualityDefinitionsModalContent extends Component {
<ModalFooter>
<Button onPress={onModalClose}>
Cancel
{translate('Cancel')}
</Button>
<Button
@@ -89,7 +89,7 @@ class ResetQualityDefinitionsModalContent extends Component {
onPress={this.onResetQualityDefinitionsConfirmed}
isDisabled={isResettingQualityDefinitions}
>
Reset
{translate('Reset')}
</Button>
</ModalFooter>
</ModalContent>

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import FieldSet from 'Components/FieldSet';
import Form from 'Components/Form/Form';
import FormGroup from 'Components/Form/FormGroup';
@@ -8,7 +9,7 @@ import FormLabel from 'Components/Form/FormLabel';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
import { inputTypes } from 'Helpers/Props';
import { inputTypes, kinds } from 'Helpers/Props';
import SettingsToolbarConnector from 'Settings/SettingsToolbarConnector';
import themes from 'Styles/Themes';
import titleCase from 'Utilities/String/titleCase';
@@ -81,9 +82,9 @@ class UISettings extends Component {
{
!isFetching && error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadUISettings')}
</div>
</Alert>
}
{

View File

@@ -1,5 +1,6 @@
import PropTypes from 'prop-types';
import React, { Component } from 'react';
import Alert from 'Components/Alert';
import LoadingIndicator from 'Components/Loading/LoadingIndicator';
import PageContent from 'Components/Page/PageContent';
import PageContentBody from 'Components/Page/PageContentBody';
@@ -8,7 +9,7 @@ import PageToolbarButton from 'Components/Page/Toolbar/PageToolbarButton';
import PageToolbarSection from 'Components/Page/Toolbar/PageToolbarSection';
import Table from 'Components/Table/Table';
import TableBody from 'Components/Table/TableBody';
import { icons } from 'Helpers/Props';
import { icons, kinds } from 'Helpers/Props';
import translate from 'Utilities/String/translate';
import BackupRow from './BackupRow';
import RestoreBackupModalConnector from './RestoreBackupModalConnector';
@@ -107,16 +108,16 @@ class Backups extends Component {
{
!isFetching && !!error &&
<div>
<Alert kind={kinds.DANGER}>
{translate('UnableToLoadBackups')}
</div>
</Alert>
}
{
noBackups &&
<div>
<Alert kind={kinds.INFO}>
{translate('NoBackupsAreAvailable')}
</div>
</Alert>
}
{

View File

@@ -27,35 +27,36 @@ namespace NzbDrone.Api.Test.ClientSchemaTests
var schema = SchemaBuilder.ToSchema(model);
schema.Should().Contain(c =>
c.Order == 1 && c.Name == "lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" &&
(string)c.Value == "Poop");
schema.Should().Contain(c =>
c.Order == 0 && c.Name == "firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" &&
(string)c.Value == "Bob");
schema.Should().Contain(c => c.Order == 1 && c.Name == "lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && c.HelpTextWarning == "Mandatory Last Name" && (string)c.Value == "Poop");
schema.Should().Contain(c => c.Order == 0 && c.Name == "firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && c.HelpTextWarning == "Mandatory First Name" && (string)c.Value == "Bob");
}
[Test]
public void schema_should_have_nested_fields()
{
var model = new NestedTestModel();
model.Name.FirstName = "Bob";
model.Name.LastName = "Poop";
var model = new NestedTestModel
{
Name =
{
FirstName = "Bob",
LastName = "Poop"
}
};
var schema = SchemaBuilder.ToSchema(model);
schema.Should().Contain(c => c.Order == 0 && c.Name == "name.firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && (string)c.Value == "Bob");
schema.Should().Contain(c => c.Order == 1 && c.Name == "name.lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && (string)c.Value == "Poop");
schema.Should().Contain(c => c.Order == 0 && c.Name == "name.firstName" && c.Label == "First Name" && c.HelpText == "Your First Name" && c.HelpTextWarning == "Mandatory First Name" && (string)c.Value == "Bob");
schema.Should().Contain(c => c.Order == 1 && c.Name == "name.lastName" && c.Label == "Last Name" && c.HelpText == "Your Last Name" && c.HelpTextWarning == "Mandatory Last Name" && (string)c.Value == "Poop");
schema.Should().Contain(c => c.Order == 2 && c.Name == "quote" && c.Label == "Quote" && c.HelpText == "Your Favorite Quote");
}
}
public class TestModel
{
[FieldDefinition(0, Label = "First Name", HelpText = "Your First Name")]
[FieldDefinition(0, Label = "First Name", HelpText = "Your First Name", HelpTextWarning = "Mandatory First Name")]
public string FirstName { get; set; }
[FieldDefinition(1, Label = "Last Name", HelpText = "Your Last Name")]
[FieldDefinition(1, Label = "Last Name", HelpText = "Your Last Name", HelpTextWarning = "Mandatory Last Name")]
public string LastName { get; set; }
public string Other { get; set; }

View File

@@ -10,7 +10,9 @@ namespace NzbDrone.Common.Test.InstrumentationTests
// Indexer Urls
[TestCase(@"https://iptorrents.com/torrents/rss?u=mySecret;tp=mySecret;l5;download")]
[TestCase(@"http://rss.torrentleech.org/mySecret")]
[TestCase(@"http://rss.torrentleech.org/rss/download/12345/01233210/filename.torrent")]
[TestCase(@"https://rss24h.torrentleech.org/mySecret")]
[TestCase(@"http://rss.torrentleech.org/rss/download/12345/01233210/file.name-RLSGRP.torrent")]
[TestCase(@"https://www.torrentleech.org/rss/download/12345/01233210/file.name-RLSGRP.torrent")]
[TestCase(@"http://www.bitmetv.org/rss.php?uid=mySecret&passkey=mySecret")]
[TestCase(@"https://rss.omgwtfnzbs.org/rss-search.php?catid=19,20&user=Readarr&api=mySecret&eng=1")]
[TestCase(@"https://dognzb.cr/fetch/2b51db35e1912ffc138825a12b9933d2/2b51db35e1910123321025a12b9933d2")]
@@ -44,6 +46,7 @@ namespace NzbDrone.Common.Test.InstrumentationTests
// Deluge
[TestCase(@",{""download_location"": ""C:\Users\\mySecret mySecret\\Downloads""}")]
[TestCase(@",{""download_location"": ""/home/mySecret/Downloads""}")]
[TestCase(@",{""download_location"": ""/Users/mySecret/Downloads""}")]
[TestCase(@"auth.login(""mySecret"")")]
// Download Station
@@ -56,8 +59,11 @@ namespace NzbDrone.Common.Test.InstrumentationTests
// Internal
[TestCase(@"OutputPath=/home/mySecret/Downloads")]
[TestCase(@"OutputPath=/Users/mySecret/Downloads")]
[TestCase("Hardlinking episode file: /home/mySecret/Downloads to /media/abc.mkv")]
[TestCase("Hardlinking episode file: /Users/mySecret/Downloads to /media/abc.mkv")]
[TestCase("Hardlink '/home/mySecret/Downloads/abs.mkv' to '/media/abc.mkv' failed.")]
[TestCase("Hardlink '/Users/mySecret/Downloads/abs.mkv' to '/media/abc.mkv' failed.")]
[TestCase("https://notifiarr.com/notifier.php: api=1234530f-422f-4aac-b6b3-01233210aaaa&radarr_health_issue_message=Download")]
[TestCase("/readarr/signalr/messages/negotiate?access_token=1234530f422f4aacb6b301233210aaaa&negotiateVersion=1")]
[TestCase(@"[Info] MigrationController: *** Migrating Database=readarr-main;Host=postgres14;Username=mySecret;Password=mySecret;Port=5432;Enlist=False ***")]

View File

@@ -60,8 +60,7 @@ namespace NzbDrone.Common.Http
if (request.AllowAutoRedirect && response.HasHttpRedirect)
{
var autoRedirectChain = new List<string>();
autoRedirectChain.Add(request.Url.ToString());
var autoRedirectChain = new List<string> { request.Url.ToString() };
do
{
@@ -75,6 +74,14 @@ namespace NzbDrone.Common.Http
throw new WebException($"Too many automatic redirections were attempted for {autoRedirectChain.Join(" -> ")}", WebExceptionStatus.ProtocolError);
}
// 302 or 303 should default to GET on redirect even if POST on original
if (RequestRequiresForceGet(response.StatusCode, response.Request.Method))
{
request.Method = HttpMethod.Get;
request.ContentData = null;
request.ContentSummary = null;
}
response = ExecuteRequest(request, cookieContainer);
}
while (response.HasHttpRedirect);
@@ -105,6 +112,16 @@ namespace NzbDrone.Common.Http
return response;
}
private static bool RequestRequiresForceGet(HttpStatusCode statusCode, HttpMethod requestMethod)
{
return statusCode switch
{
HttpStatusCode.Moved or HttpStatusCode.Found or HttpStatusCode.MultipleChoices => requestMethod == HttpMethod.Post,
HttpStatusCode.SeeOther => requestMethod != HttpMethod.Get && requestMethod != HttpMethod.Head,
_ => false,
};
}
private HttpResponse ExecuteRequest(HttpRequest request, CookieContainer cookieContainer)
{
foreach (var interceptor in _requestInterceptors)

View File

@@ -50,6 +50,8 @@ namespace NzbDrone.Common.Http
public bool HasHttpError => (int)StatusCode >= 400;
public bool HasHttpServerError => (int)StatusCode >= 500;
public bool HasHttpRedirect => StatusCode == HttpStatusCode.Moved ||
StatusCode == HttpStatusCode.MovedPermanently ||
StatusCode == HttpStatusCode.Found ||

View File

@@ -7,56 +7,56 @@ namespace NzbDrone.Common.Instrumentation
{
public class CleanseLogMessage
{
private static readonly Regex[] CleansingRules = new[]
{
// Url
new Regex(@"(?<=\?|&|: )((?:api|auth|pass)?key|(?:access[-_]?)?token|auth|user|uid|api|[a-z_]*apikey|account|passwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=\?|&)[^=]*?(username|password)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
new Regex(@"getnzb.*?(?<=\?|&)(r)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
private static readonly Regex[] CleansingRules =
{
// Url
new (@"(?<=\?|&|: )((?:api|auth|pass)?key|(?:access[-_]?)?token|auth|user|uid|api|[a-z_]*apikey|account|passwd)=(?<secret>[^&=""]+?)(?=[ ""&=]|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=\?|&)[^=]*?(username|password)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"rss(24h)?\.torrentleech\.org/(?!rss)(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"torrentleech\.org/rss/download/[0-9]+/(?<secret>[0-9a-z]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"iptorrents\.com/[/a-z0-9?&;]*?(?:[?&;](u|tp)=(?<secret>[^&=;]+?))+(?= |;|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"/fetch/[a-z0-9]{32}/(?<secret>[a-z0-9]{32})", RegexOptions.Compiled),
new (@"getnzb.*?(?<=\?|&)(r)=(?<secret>[^&=]+?)(?= |&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"\b(\w*)?(_?(?<!use|get_)token|username|passwo?rd)=(?<secret>[^&=]+?)(?= |&|$|;)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Trackers Announce Keys; Designed for Qbit Json; should work for all in theory
new Regex(@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?<secret>[a-z0-9]{16,})|(?<secret>[a-z0-9]{16,})(/|%2f)announce"),
// Trackers Announce Keys; Designed for Qbit Json; should work for all in theory
new (@"announce(\.php)?(/|%2f|%3fpasskey%3d)(?<secret>[a-z0-9]{16,})|(?<secret>[a-z0-9]{16,})(/|%2f)announce"),
// Path
new Regex(@"C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"/home/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Path
new (@"C:\\Users\\(?<secret>[^\""]+?)(\\|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"/(home|Users)/(?<secret>[^/""]+?)(/|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// NzbGet
new Regex(@"""Name""\s*:\s*""[^""]*(username|password)""\s*,\s*""Value""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// NzbGet
new (@"""Name""\s*:\s*""[^""]*(username|password)""\s*,\s*""Value""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Sabnzbd
new Regex(@"""[^""]*(username|password|api_?key|nzb_key)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"""email_(account|to|from|pwd)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Sabnzbd
new (@"""[^""]*(username|password|api_?key|nzb_key)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"""email_(account|to|from|pwd)""\s*:\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// uTorrent
new Regex(@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// uTorrent
new (@"\[""[a-z._]*(username|password)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"\[""(boss_key|boss_key_salt|proxy\.proxy)"",\d,""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Deluge
new Regex(@"auth.login\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Deluge
new (@"auth.login\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// BroadcastheNet
new Regex(@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new Regex(@"(?<=\?|&)(authkey|torrent_pass)=(?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// BroadcastheNet
new (@"""?method""?\s*:\s*""(getTorrents)"",\s*""?params""?\s*:\s*\[\s*""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"getTorrents\(""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
new (@"(?<=\?|&)(authkey|torrent_pass)=(?<secret>[^&=]+?)(?=""|&|$)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Good Reads
new Regex(@"(?<=""(token|tokensecret)"":\s)""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Good Reads
new (@"(?<=""(token|tokensecret)"":\s)""(?<secret>[^""]+?)""", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Webhooks
// Notifiarr
new Regex(@"api/v[0-9]/notification/readarr/(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Webhooks
// Notifiarr
new (@"api/v[0-9]/notification/readarr/(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase),
// Discord
new Regex(@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase)
};
// Discord
new (@"discord.com/api/webhooks/((?<secret>[\w-]+)/)?(?<secret>[\w-]+)", RegexOptions.Compiled | RegexOptions.IgnoreCase)
};
private static readonly Regex CleanseRemoteIPRegex = new Regex(@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled);
private static readonly Regex CleanseRemoteIPRegex = new (@"(?:Auth-\w+(?<!Failure|Unauthorized) ip|from) (\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})", RegexOptions.Compiled);
public static string Cleanse(string message)
{
@@ -68,15 +68,15 @@ namespace NzbDrone.Common.Instrumentation
foreach (var regex in CleansingRules)
{
message = regex.Replace(message, m =>
{
var value = m.Value;
foreach (var capture in m.Groups["secret"].Captures.OfType<Capture>().Reverse())
{
var value = m.Value;
foreach (var capture in m.Groups["secret"].Captures.OfType<Capture>().Reverse())
{
value = value.Replace(capture.Index - m.Index, capture.Length, "(removed)");
}
value = value.Replace(capture.Index - m.Index, capture.Length, "(removed)");
}
return value;
});
return value;
});
}
message = CleanseRemoteIPRegex.Replace(message, CleanseRemoteIP);
@@ -87,7 +87,6 @@ namespace NzbDrone.Common.Instrumentation
private static string CleanseRemoteIP(Match match)
{
var group = match.Groups[1];
var valueAll = match.Value;
var valueIP = group.Value;
if (IPAddress.TryParse(valueIP, out var address) && !address.IsLocalAddress())

View File

@@ -225,6 +225,7 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
[TestCase("checkingDL")]
[TestCase("checkingUP")]
[TestCase("metaDL")]
[TestCase("checkingResumeData")]
public void queued_item_should_have_required_properties(string state)
{
var torrent = new QBittorrentTorrent

View File

@@ -15,6 +15,7 @@ namespace NzbDrone.Core.Annotations
public string Label { get; set; }
public string Unit { get; set; }
public string HelpText { get; set; }
public string HelpTextWarning { get; set; }
public string HelpLink { get; set; }
public FieldType Type { get; set; }
public bool Advanced { get; set; }

View File

@@ -253,6 +253,7 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
case "queuedDL": // queuing is enabled and torrent is queued for download
case "checkingDL": // same as checkingUP, but torrent has NOT finished downloading
case "checkingUP": // torrent has finished downloading and is being checked. Set when `recheck torrent on completion` is enabled. In the event the check fails we shouldn't treat it as completed.
case "checkingResumeData": // torrent is checking resume data on load
item.Status = DownloadItemStatus.Queued;
break;

View File

@@ -16,7 +16,7 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
public void Clean()
{
var mapper = _database.OpenConnection();
using var mapper = _database.OpenConnection();
if (_database.DatabaseType == DatabaseType.PostgreSQL)
{
@@ -31,7 +31,7 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
}
else
{
mapper.Execute(@"DELETE FROM ""PendingReleases""
mapper.Execute(@"DELETE FROM ""PendingReleases""
WHERE ""Added"" < @TwoWeeksAgo
AND ""REASON"" IN @Reasons",
new

View File

@@ -14,7 +14,7 @@ namespace NzbDrone.Core.Housekeeping.Housekeepers
public void Clean()
{
var mapper = _database.OpenConnection();
using var mapper = _database.OpenConnection();
mapper.Execute(@"DELETE FROM ""DownloadClientStatus""
WHERE ""Id"" IN (

View File

@@ -108,11 +108,11 @@ namespace NzbDrone.Core.ImportLists.Readarr
return new
{
options = devices.OrderBy(d => d.Name, StringComparer.InvariantCultureIgnoreCase)
.Select(d => new
{
Value = d.Id,
Name = d.Name
})
.Select(d => new
{
Value = d.Id,
Name = d.Name
})
};
}
@@ -123,28 +123,26 @@ namespace NzbDrone.Core.ImportLists.Readarr
return new
{
options = devices.OrderBy(d => d.Label, StringComparer.InvariantCultureIgnoreCase)
.Select(d => new
{
Value = d.Id,
Name = d.Label
})
.Select(d => new
{
Value = d.Id,
Name = d.Label
})
};
}
if (action == "getRootFolders")
{
Settings.Validate().Filter("ApiKey").ThrowOnError();
var remoteRootfolders = _readarrV1Proxy.GetRootFolders(Settings);
var remoteRootFolders = _readarrV1Proxy.GetRootFolders(Settings);
return new
{
options = remoteRootfolders.OrderBy(d => d.Path, StringComparer.InvariantCultureIgnoreCase)
.Select(d => new
{
value = d.Path,
name = d.Path
})
options = remoteRootFolders.OrderBy(d => d.Path, StringComparer.InvariantCultureIgnoreCase)
.Select(d => new
{
value = d.Path,
name = d.Path
})
};
}

View File

@@ -69,13 +69,19 @@ namespace NzbDrone.Core.ImportLists.Readarr
return new ValidationFailure("ApiKey", "API Key is invalid");
}
_logger.Error(ex, "Unable to send test message");
return new ValidationFailure("ApiKey", "Unable to send test message");
if (ex.Response.HasHttpRedirect)
{
_logger.Error(ex, "Readarr returned redirect and is invalid");
return new ValidationFailure("BaseUrl", "Readarr URL is invalid, are you missing a URL base?");
}
_logger.Error(ex, "Unable to connect to import list.");
return new ValidationFailure(string.Empty, $"Unable to connect to import list: {ex.Message}. Check the log surrounding this error for details.");
}
catch (Exception ex)
{
_logger.Error(ex, "Unable to send test message");
return new ValidationFailure("", "Unable to send test message");
_logger.Error(ex, "Unable to connect to import list.");
return new ValidationFailure(string.Empty, $"Unable to connect to import list: {ex.Message}. Check the log surrounding this error for details.");
}
return null;
@@ -90,11 +96,18 @@ namespace NzbDrone.Core.ImportLists.Readarr
var baseUrl = settings.BaseUrl.TrimEnd('/');
var request = new HttpRequestBuilder(baseUrl).Resource(resource).Accept(HttpAccept.Json)
.SetHeader("X-Api-Key", settings.ApiKey).Build();
var request = new HttpRequestBuilder(baseUrl).Resource(resource)
.Accept(HttpAccept.Json)
.SetHeader("X-Api-Key", settings.ApiKey)
.Build();
var response = _httpClient.Get(request);
if ((int)response.StatusCode >= 300)
{
throw new HttpException(response);
}
var results = JsonConvert.DeserializeObject<List<TResource>>(response.Content);
return results;

View File

@@ -2,6 +2,8 @@ using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Threading.Tasks;
using FluentValidation.Results;
using NLog;
using NzbDrone.Common.Extensions;
@@ -77,6 +79,7 @@ namespace NzbDrone.Core.Indexers
{
var releases = new List<ReleaseInfo>();
var url = string.Empty;
var minimumBackoff = TimeSpan.FromHours(1);
try
{
@@ -169,8 +172,7 @@ namespace NzbDrone.Core.Indexers
}
catch (WebException webException)
{
if (webException.Status == WebExceptionStatus.NameResolutionFailure ||
webException.Status == WebExceptionStatus.ConnectFailure)
if (webException.Status is WebExceptionStatus.NameResolutionFailure or WebExceptionStatus.ConnectFailure)
{
_indexerStatusService.RecordConnectionFailure(Definition.Id);
}
@@ -180,7 +182,7 @@ namespace NzbDrone.Core.Indexers
}
if (webException.Message.Contains("502") || webException.Message.Contains("503") ||
webException.Message.Contains("timed out"))
webException.Message.Contains("504") || webException.Message.Contains("timed out"))
{
_logger.Warn("{0} server is currently unavailable. {1} {2}", this, url, webException.Message);
}
@@ -191,34 +193,29 @@ namespace NzbDrone.Core.Indexers
}
catch (TooManyRequestsException ex)
{
if (ex.RetryAfter != TimeSpan.Zero)
{
_indexerStatusService.RecordFailure(Definition.Id, ex.RetryAfter);
}
else
{
_indexerStatusService.RecordFailure(Definition.Id, TimeSpan.FromHours(1));
}
var retryTime = ex.RetryAfter != TimeSpan.Zero ? ex.RetryAfter : minimumBackoff;
_indexerStatusService.RecordFailure(Definition.Id, retryTime);
_logger.Warn("API Request Limit reached for {0}", this);
_logger.Warn("API Request Limit reached for {0}. Disabled for {1}", this, retryTime);
}
catch (HttpException ex)
{
_indexerStatusService.RecordFailure(Definition.Id);
_logger.Warn("{0} {1}", this, ex.Message);
}
catch (RequestLimitReachedException ex)
{
if (ex.RetryAfter != TimeSpan.Zero)
if (ex.Response.HasHttpServerError)
{
_indexerStatusService.RecordFailure(Definition.Id, ex.RetryAfter);
_logger.Warn("Unable to connect to {0} at [{1}]. Indexer's server is unavailable. Try again later. {2}", this, url, ex.Message);
}
else
{
_indexerStatusService.RecordFailure(Definition.Id, TimeSpan.FromHours(1));
_logger.Warn("{0} {1}", this, ex.Message);
}
}
catch (RequestLimitReachedException ex)
{
var retryTime = ex.RetryAfter != TimeSpan.Zero ? ex.RetryAfter : minimumBackoff;
_indexerStatusService.RecordFailure(Definition.Id, retryTime);
_logger.Warn("API Request Limit reached for {0}", this);
_logger.Warn("API Request Limit reached for {0}. Disabled for {1}", this, retryTime);
}
catch (ApiKeyException)
{
@@ -238,6 +235,11 @@ namespace NzbDrone.Core.Indexers
_logger.Error(ex, "CAPTCHA token required for {0}, check indexer settings.", this);
}
}
catch (TaskCanceledException ex)
{
_indexerStatusService.RecordFailure(Definition.Id);
_logger.Warn(ex, "Unable to connect to indexer, possibly due to a timeout. {0}", url);
}
catch (IndexerException ex)
{
_indexerStatusService.RecordFailure(Definition.Id);
@@ -333,6 +335,8 @@ namespace NzbDrone.Core.Indexers
catch (RequestLimitReachedException ex)
{
_logger.Warn("Request limit reached: " + ex.Message);
return new ValidationFailure(string.Empty, "Request limit reached: " + ex.Message);
}
catch (CloudFlareCaptchaException ex)
{
@@ -357,6 +361,55 @@ namespace NzbDrone.Core.Indexers
return new ValidationFailure(string.Empty, "Unable to connect to indexer. " + ex.Message);
}
catch (HttpException ex)
{
if (ex.Response.StatusCode == HttpStatusCode.BadRequest &&
ex.Response.Content.Contains("not support the requested query"))
{
_logger.Warn(ex, "Indexer does not support the query");
return new ValidationFailure(string.Empty, "Indexer does not support the current query. Check if the categories and or searching for seasons/episodes are supported. Check the log for more details.");
}
_logger.Warn(ex, "Unable to connect to indexer");
if (ex.Response.HasHttpServerError)
{
return new ValidationFailure(string.Empty, "Unable to connect to indexer, indexer's server is unavailable. Try again later. " + ex.Message);
}
if (ex.Response.StatusCode is HttpStatusCode.Forbidden or HttpStatusCode.Unauthorized)
{
return new ValidationFailure(string.Empty, "Unable to connect to indexer, invalid credentials. " + ex.Message);
}
return new ValidationFailure(string.Empty, "Unable to connect to indexer, check the log above the ValidationFailure for more details. " + ex.Message);
}
catch (HttpRequestException ex)
{
_logger.Warn(ex, "Unable to connect to indexer");
return new ValidationFailure(string.Empty, "Unable to connect to indexer, please check your DNS settings and ensure IPv6 is working or disabled. " + ex.Message);
}
catch (TaskCanceledException ex)
{
_logger.Warn(ex, "Unable to connect to indexer");
return new ValidationFailure(string.Empty, "Unable to connect to indexer, possibly due to a timeout. Try again or check your network settings. " + ex.Message);
}
catch (WebException webException)
{
_logger.Warn("Unable to connect to indexer.");
if (webException.Status is WebExceptionStatus.NameResolutionFailure or WebExceptionStatus.ConnectFailure)
{
return new ValidationFailure(string.Empty, "Unable to connect to indexer connection failure. Check your connection to the indexer's server and DNS." + webException.Message);
}
if (webException.Message.Contains("502") || webException.Message.Contains("503") ||
webException.Message.Contains("504") || webException.Message.Contains("timed out"))
{
return new ValidationFailure(string.Empty, "Unable to connect to indexer, indexer's server is unavailable. Try again later. " + webException.Message);
}
}
catch (Exception ex)
{
_logger.Warn(ex, "Unable to connect to indexer");

View File

@@ -121,7 +121,8 @@ namespace NzbDrone.Core.Indexers
protected virtual bool PreProcess(IndexerResponse indexerResponse)
{
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK)
// Server Down HTTP Errors are handled in HTTPIndexerBase so ignore them here
if (indexerResponse.HttpResponse.StatusCode != HttpStatusCode.OK && !indexerResponse.HttpResponse.HasHttpServerError)
{
throw new IndexerException(indexerResponse, "Indexer API call resulted in an unexpected StatusCode [{0}]", indexerResponse.HttpResponse.StatusCode);
}

View File

@@ -149,7 +149,6 @@
"RemovedFromTaskQueue": "تمت إزالته من قائمة انتظار المهام",
"RemoveTagRemovingTag": "إزالة العلامة",
"RemoveTagExistingTag": "علامة موجودة",
"RemoveSelectedMessageText": "هل أنت متأكد أنك تريد إزالة العناصر المحددة من القائمة السوداء؟",
"RemoveSelected": "ازل المحدد",
"RemoveHelpTextWarning": "ستؤدي الإزالة إلى إزالة التنزيل والملف (الملفات) من عميل التنزيل.",
"RemoveFromQueue": "إزالة من قائمة الانتظار",
@@ -466,7 +465,6 @@
"Time": "زمن",
"Component": "مكون",
"Blocklist": "القائمة السوداء",
"BlocklistHelpText": "يمنع Radarr من الاستيلاء على هذا الإصدار تلقائيًا مرة أخرى",
"BlocklistRelease": "إصدار القائمة السوداء",
"ThisCannotBeCancelled": "لا يمكن إلغاء هذا بمجرد البدء دون إعادة تشغيل Radarr.",
"UnselectAll": "إلغاء تحديد الكل",
@@ -579,5 +577,18 @@
"HiddenClickToShow": "مخفي ، انقر للعرض",
"HideAdvanced": "إخفاء الإعدادات المتقدمة",
"ShowAdvanced": "عرض متقدمة",
"ShownClickToHide": "يظهر ، انقر للإخفاء"
"ShownClickToHide": "يظهر ، انقر للإخفاء",
"ColonReplacement": "استبدال القولون",
"ReplaceWithDash": "استبدل بـ داش",
"ReplaceWithSpaceDash": "استبدل بـ Space Dash",
"ReplaceWithSpaceDashSpace": "استبدل بـ Space Dash Space",
"DeleteRemotePathMapping": "تحرير تعيين المسار البعيد",
"BlocklistReleases": "إصدار القائمة السوداء",
"DeleteRemotePathMappingMessageText": "هل أنت متأكد أنك تريد حذف تعيين المسار البعيد هذا؟",
"Negated": "نفي",
"RemoveSelectedItemBlocklistMessageText": "هل أنت متأكد أنك تريد إزالة العناصر المحددة من القائمة السوداء؟",
"RemoveSelectedItemQueueMessageText": "هل تريد بالتأكيد إزالة {0} عنصر {1} من قائمة الانتظار؟",
"Required": "مطلوب",
"DeleteConditionMessageText": "هل أنت متأكد أنك تريد حذف العلامة \"{0}\"؟",
"RemoveSelectedItemsQueueMessageText": "هل تريد بالتأكيد إزالة {0} عنصر {1} من قائمة الانتظار؟"
}

View File

@@ -288,7 +288,6 @@
"RemoveFromQueue": "Премахване от опашката",
"RemoveHelpTextWarning": "Премахването ще премахне изтеглянето и файловете от клиента за изтегляне.",
"RemoveSelected": "Премахнете избраното",
"RemoveSelectedMessageText": "Наистина ли искате да премахнете избраните елементи от черния списък?",
"RemoveTagExistingTag": "Съществуващ маркер",
"RemoveTagRemovingTag": "Премахване на етикет",
"RemovedFromTaskQueue": "Премахнато от опашката на задачите",
@@ -578,5 +577,18 @@
"HiddenClickToShow": "Скрито, кликнете за показване",
"HideAdvanced": "Скрий Разширено",
"ShowAdvanced": "Показване на напреднали",
"ShownClickToHide": "Показано, щракнете, за да се скриете"
"ShownClickToHide": "Показано, щракнете, за да се скриете",
"ColonReplacement": "Подмяна на дебелото черво",
"ReplaceWithDash": "Заменете с Dash",
"ReplaceWithSpaceDash": "Заменете с Space Dash",
"ReplaceWithSpaceDashSpace": "Заменете с Space Dash Space",
"DeleteRemotePathMapping": "Редактиране на отдалечено картографиране на пътя",
"DeleteRemotePathMappingMessageText": "Наистина ли искате да изтриете това отдалечено картографиране на пътя?",
"BlocklistReleases": "Освобождаване на черния списък",
"DeleteConditionMessageText": "Наистина ли искате да изтриете маркера '{0}'?",
"RemoveSelectedItemQueueMessageText": "Наистина ли искате да премахнете {0} елемент {1} от опашката?",
"Required": "Задължително",
"Negated": "Отрицателно",
"RemoveSelectedItemBlocklistMessageText": "Наистина ли искате да премахнете избраните елементи от черния списък?",
"RemoveSelectedItemsQueueMessageText": "Наистина ли искате да премахнете {0} елемент {1} от опашката?"
}

View File

@@ -513,7 +513,6 @@
"APIKey": "Clau API",
"ApiKeyHelpTextWarning": "Cal reiniciar perquè tingui efecte",
"ApplyTagsHelpTexts1": "Com aplicar etiquetes a les pel·lícules seleccionades",
"RemoveSelectedMessageText": "Esteu segur que voleu suprimir els elements seleccionats de la llista de blocs?",
"RescanAfterRefreshHelpTextWarning": "Radarr no detectarà automàticament els canvis als fitxers quan no estigui configurat com a \"Sempre\"",
"ShowUnknownAuthorItems": "Mostra elements de pel·lícula desconeguda",
"Size": " Mida",
@@ -584,7 +583,6 @@
"BookIsDownloading": "La pel·lícula s'està baixant",
"BookIsDownloadingInterp": "La pel·lícula s'està baixant - {0}% {1}",
"Label": "Etiqueta",
"BlocklistHelpText": "Impedeix que Lidarr torni a capturar aquesta versió automàticament",
"ChooseImportMethod": "Trieu el mode d'importació",
"ClickToChangeReleaseGroup": "Feu clic per canviar el grup de llançaments",
"HardlinkCopyFiles": "Enllaç dur/Copia fitxers",
@@ -621,5 +619,13 @@
"CutoffFormatScoreHelpText": "Un cop s'arribi a aquesta puntuació de format personalitzat, Radarr ja no baixarà pel·lícules",
"DeleteCustomFormatMessageText": "Esteu segur que voleu suprimir l'indexador '{0}'?",
"ImportListMissingRoot": "Falta la carpeta arrel per a les llistes d'importació: {0}",
"IndexerTagsHelpText": "Utilitzeu aquest indexador només per a pel·lícules amb almenys una etiqueta coincident. Deixeu-ho en blanc per utilitzar-ho amb totes les pel·lícules."
"IndexerTagsHelpText": "Utilitzeu aquest indexador només per a pel·lícules amb almenys una etiqueta coincident. Deixeu-ho en blanc per utilitzar-ho amb totes les pel·lícules.",
"ColonReplacement": "Substitució de dos punts",
"HiddenClickToShow": "Amagat, feu clic per mostrar",
"HideAdvanced": "Amaga avançat",
"ReplaceWithDash": "Substitueix per guió",
"ReplaceWithSpaceDash": "Substitueix per espai i guió",
"ReplaceWithSpaceDashSpace": "Substitueix per espai, guió i espai",
"ShowAdvanced": "Mostra característiques avançades",
"ShownClickToHide": "Es mostra, feu clic per amagar"
}

View File

@@ -293,7 +293,6 @@
"RemoveFromQueue": "Odebrat z fronty",
"RemoveHelpTextWarning": "Odebráním odstraníte stažené soubory a soubory z klienta pro stahování.",
"RemoveSelected": "Odstranit vybrané",
"RemoveSelectedMessageText": "Opravdu chcete odebrat vybrané položky z černé listiny?",
"RemoveTagExistingTag": "Stávající značka",
"RemoveTagRemovingTag": "Odebírání značky",
"RemovedFromTaskQueue": "Odebráno z fronty úkolů",
@@ -578,5 +577,18 @@
"HiddenClickToShow": "Skryté, kliknutím zobrazíte",
"HideAdvanced": "Skrýt pokročilé",
"ShowAdvanced": "Zobrazit pokročilé",
"ShownClickToHide": "Zobrazeno, kliknutím se skryjete"
"ShownClickToHide": "Zobrazeno, kliknutím se skryjete",
"ColonReplacement": "Výměna tlustého střeva",
"ReplaceWithDash": "Nahraďte Dash",
"ReplaceWithSpaceDashSpace": "Nahraďte Space Dash Space",
"ReplaceWithSpaceDash": "Nahraďte Space Dash",
"DeleteRemotePathMapping": "Upravit vzdálené mapování cesty",
"DeleteRemotePathMappingMessageText": "Opravdu chcete toto vzdálené mapování cesty odstranit?",
"Negated": "Negovaný",
"BlocklistReleases": "Vydání černé listiny",
"DeleteConditionMessageText": "Opravdu chcete smazat značku „{0}“?",
"RemoveSelectedItemBlocklistMessageText": "Opravdu chcete odebrat vybrané položky z černé listiny?",
"RemoveSelectedItemQueueMessageText": "Opravdu chcete odebrat {0} položku {1} z fronty?",
"RemoveSelectedItemsQueueMessageText": "Opravdu chcete odebrat {0} položku {1} z fronty?",
"Required": "Požadované"
}

View File

@@ -290,7 +290,6 @@
"RemoveFromQueue": "Fjern fra køen",
"RemoveHelpTextWarning": "Fjernelse fjerner download og fil (er) fra download-klienten.",
"RemoveSelected": "Fjern valgte",
"RemoveSelectedMessageText": "Er du sikker på, at du vil fjerne de valgte emner fra sortlisten?",
"RemoveTagExistingTag": "Eksisterende mærke",
"RemoveTagRemovingTag": "Fjerner tag",
"RemovedFromTaskQueue": "Fjernet fra opgavekøen",
@@ -581,5 +580,18 @@
"HiddenClickToShow": "Skjult, klik for at vise",
"ShownClickToHide": "Vist, klik for at skjule",
"HideAdvanced": "Gemt Avancerede",
"ShowAdvanced": "Vis avanceret"
"ShowAdvanced": "Vis avanceret",
"ColonReplacement": "Udskiftning af tyktarm",
"ReplaceWithDash": "Udskift med Dash",
"ReplaceWithSpaceDash": "Udskift med Space Dash",
"ReplaceWithSpaceDashSpace": "Udskift med Space Dash Space",
"DeleteRemotePathMapping": "Rediger kortlægning af fjernsti",
"DeleteRemotePathMappingMessageText": "Er du sikker på, at du vil slette denne kortlægning af fjernstien?",
"DeleteConditionMessageText": "Er du sikker på, at du vil slette listen '{0}'?",
"Negated": "Negeret",
"RemoveSelectedItemBlocklistMessageText": "Er du sikker på, at du vil fjerne de valgte emner fra sortlisten?",
"BlocklistReleases": "Udgivelse af sortliste",
"RemoveSelectedItemQueueMessageText": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
"RemoveSelectedItemsQueueMessageText": "Er du sikker på, at du vil fjerne {0} element {1} fra køen?",
"Required": "Påkrævet"
}

View File

@@ -113,12 +113,12 @@
"Edition": "Auflage",
"Enable": "Aktivieren",
"EnableAutomaticAdd": "Automatisch hinzufügen",
"EnableAutomaticSearch": "Automatisch suchen",
"EnableAutomaticSearch": "Automatische Suche einschalten",
"EnableColorImpairedMode": "Farbbeeinträchtigter Modus aktivieren",
"EnableColorImpairedModeHelpText": "Alternativer Stil, um farbbeeinträchtigten Benutzern eine bessere Unterscheidung farbcodierter Informationen zu ermöglichen",
"EnableCompletedDownloadHandlingHelpText": "Importiere fertige Downloads vom Downloader automatisch",
"EnableHelpText": "Metadaten Dateien erstellen für diesen Metadata Typ",
"EnableInteractiveSearch": "Interaktive Suche",
"EnableInteractiveSearch": "Interaktive Suche einschalten",
"EnableRSS": "RSS aktivieren",
"EnableSSL": "SSL",
"EnableSslHelpText": " Erfordert einen Neustart als Administrator",
@@ -287,7 +287,6 @@
"RemoveFromQueue": "Aus der Warteschlage entfernen",
"RemoveHelpTextWarning": "Dies wird den Download und alle bereits heruntergeladenen Dateien aus dem Downloader entfernen.",
"RemoveSelected": "Auswahl entfernen",
"RemoveSelectedMessageText": "Sind sie sicher, dass die ausgewählten Einträge aus der Sperrliste entfernt werden sollen?",
"RemoveTagExistingTag": "Vorhandener Tag",
"RemoveTagRemovingTag": "Tag entfernen",
"RemovedFromTaskQueue": "Aus der Aufgabenwarteschlage entfernt",
@@ -516,7 +515,6 @@
"UnableToLoadBlocklist": "Sperrliste konnte nicht geladen werden",
"ReleaseBranchCheckOfficialBranchMessage": "Zweig {0} ist kein gültiger Radarr-Release-Zweig. Sie erhalten keine Updates",
"Blocklist": "Sperrliste",
"BlocklistHelpText": "Dieses Release nicht automatisch erneut erfassen",
"BlocklistRelease": "Release sperren",
"RescanAfterRefreshHelpText": "Nach dem aktualisieren des Films, den Filmordner neu scannen",
"ShowUnknownAuthorItems": "Unzugeordente Filmeinträge anzeigen",
@@ -908,5 +906,12 @@
"HiddenClickToShow": "Versteckt, klicken zum anzeigen",
"HideAdvanced": "Erweiterte Ansicht",
"ShowAdvanced": "Einfache Ansicht",
"ShownClickToHide": "Angezeigt, zum verstecken klicken"
"ShownClickToHide": "Angezeigt, zum verstecken klicken",
"ColonReplacement": "Doppelpunkt-Ersatz",
"ReplaceWithDash": "Mit Bindestrich ersetzen",
"ReplaceWithSpaceDash": "Mit Leerzeichen Bindestrich ersetzen",
"ReplaceWithSpaceDashSpace": "Mit Leerzeichen Bindestrich Leerzeichen ersetzen",
"ApiKeyValidationHealthCheckMessage": "Bitte den API Schlüssel korrigieren, dieser muss mindestens {0} Zeichen lang sein. Die Änderung kann über die Einstellungen oder die Konfigurationsdatei erfolgen",
"ThereWasAnErrorLoadingThisItem": "Beim Laden des Eintrags ist ein Fehler aufgetreten",
"ThereWasAnErrorLoadingThisPage": "Beim Laden der Seite ist ein Fehler aufgetreten"
}

View File

@@ -64,7 +64,7 @@
"CompletedDownloadHandling": "Διαχείριση Ολοκληρωμένων Λήψεων",
"ConnectSettings": "Σύνδεση ρυθμίσεων",
"Connections": "Συνδέσεις",
"CopyUsingHardlinksHelpText": "Χρησιμοποιήστε σκληρούς συνδέσμους όταν προσπαθείτε να αντιγράψετε αρχεία από torrents που εξακολουθούν να σπέρνονται",
"CopyUsingHardlinksHelpText": "Οι σκληροί σύνδεσμοι επιτρέπουν στο Readarr να εισαγάγει τα torrents που έχουν κατέβει, στον φάκελο της ταινίας χωρίς να καταλαμβάνει περισσότερο χώρο στον δίσκο ή να αντιγράφει ολόκληρο το περιεχόμενο του αρχείου. Οι σκληροί σύνδεσμοι θα λειτουργήσουν μόνο αν η πηγή και ο προορισμός βρίσκονται στον ίδιο τόμο δίσκου",
"CopyUsingHardlinksHelpTextWarning": "Περιστασιακά, τα κλειδώματα αρχείων ενδέχεται να αποτρέψουν τη μετονομασία αρχείων που έχουν σπαρθεί. Μπορείτε προσωρινά να απενεργοποιήσετε τη σπορά και να χρησιμοποιήσετε τη λειτουργία μετονομασίας Radarr ως εργασία.",
"CreateEmptyAuthorFoldersHelpText": "Δημιουργήστε φακέλους ταινιών που λείπουν κατά τη σάρωση δίσκου",
"CreateGroup": "Δημιουργησε ΟΜΑΔΑ",
@@ -290,14 +290,13 @@
"RemoveFromQueue": "Κατάργηση από την ουρά",
"RemoveHelpTextWarning": "Η κατάργηση θα καταργήσει τη λήψη και τα αρχεία από τον πελάτη λήψης.",
"RemoveSelected": "Αφαιρέστε τα επιλεγμένα",
"RemoveSelectedMessageText": "Είστε βέβαιοι ότι θέλετε να αφαιρέσετε τα επιλεγμένα στοιχεία από τη λίστα αποκλεισμού;",
"RemoveTagExistingTag": "Υφιστάμενη ετικέτα",
"RemoveTagRemovingTag": "Κατάργηση ετικέτας",
"RemovedFromTaskQueue": "Καταργήθηκε από την ουρά εργασιών",
"RenameBooksHelpText": "Το Radarr θα χρησιμοποιήσει το υπάρχον όνομα αρχείου εάν η μετονομασία είναι απενεργοποιημένη",
"Reorder": "Παραγγέλλω πάλι",
"ReplaceIllegalCharacters": "Αντικαταστήστε τους παράνομους χαρακτήρες",
"RequiredHelpText": "Η κυκλοφορία πρέπει να περιέχει τουλάχιστον έναν από αυτούς τους όρους (μη ευαίσθητη υπόθεση)",
"RequiredHelpText": "Αυτή η {0} συνθήκη πρέπει να ταιριάζει για να εφαρμοστεί το προσαρμοσμένο μορφότυπο. Διαφορετικά, αρκεί μία μόνο {0} αντιστοιχία.",
"RequiredPlaceHolder": "Προσθέστε νέο περιορισμό",
"RescanAfterRefreshHelpTextWarning": "Το Radarr δεν θα εντοπίσει αυτόματα αλλαγές στα αρχεία όταν δεν έχει οριστεί σε \"Πάντα\"",
"RescanAuthorFolderAfterRefresh": "Επανεκκίνηση φακέλου ταινίας μετά την ανανέωση",
@@ -346,7 +345,7 @@
"ShowSizeOnDisk": "Εμφάνιση μεγέθους στο δίσκο",
"ShownAboveEachColumnWhenWeekIsTheActiveView": "Εμφανίζεται πάνω από κάθε στήλη όταν η εβδομάδα είναι η ενεργή προβολή",
"SkipFreeSpaceCheck": "Παράλειψη ελέγχου ελεύθερου χώρου",
"SkipFreeSpaceCheckWhenImportingHelpText": "Χρησιμοποιήστε το όταν το Radarr δεν μπορεί να εντοπίσει ελεύθερο χώρο από τον ριζικό φάκελο της ταινίας σας",
"SkipFreeSpaceCheckWhenImportingHelpText": "Χρησιμοποιήστε το όταν το Readarr δεν μπορεί να εντοπίσει ελεύθερο χώρο από τον ριζικό φάκελο του συγγραφέα",
"SorryThatAuthorCannotBeFound": "Δυστυχώς, δεν είναι δυνατή η εύρεση αυτής της ταινίας.",
"SorryThatBookCannotBeFound": "Δυστυχώς, δεν είναι δυνατή η εύρεση αυτής της ταινίας.",
"SourcePath": "Διαδρομή πηγής",
@@ -421,7 +420,7 @@
"UnmonitoredHelpText": "Συμπεριλάβετε ταινίες χωρίς παρακολούθηση στη ροή iCal",
"UpdateAll": "Ενημέρωση όλων",
"UpdateAutomaticallyHelpText": "Αυτόματη λήψη και εγκατάσταση ενημερώσεων. Θα εξακολουθείτε να μπορείτε να κάνετε εγκατάσταση από το System: Updates",
"UpdateMechanismHelpText": "Χρησιμοποιήστε το ενσωματωμένο πρόγραμμα ενημέρωσης του Radarr ή ένα σενάριο",
"UpdateMechanismHelpText": "Χρησιμοποιήστε το ενσωματωμένο πρόγραμμα ενημέρωσης του Readarr ή ένα script",
"UpdateScriptPathHelpText": "Διαδρομή σε ένα προσαρμοσμένο σενάριο που λαμβάνει ένα εξαγόμενο πακέτο ενημέρωσης και χειρίζεται το υπόλοιπο της διαδικασίας ενημέρωσης",
"Updates": "Ενημερώσεις",
"UpgradeAllowedHelpText": "Εάν οι ιδιότητες με ειδικές ανάγκες δεν θα αναβαθμιστούν",
@@ -498,7 +497,7 @@
"IndexerRssHealthCheckNoIndexers": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένο τον συγχρονισμό RSS, το Radarr δεν θα τραβήξει αυτόματα νέες κυκλοφορίες",
"IndexerSearchCheckNoAutomaticMessage": "Δεν υπάρχουν διαθέσιμα ευρετήρια με ενεργοποιημένη την αυτόματη αναζήτηση, το Radarr δεν θα παρέχει αποτελέσματα αυτόματης αναζήτησης",
"CreateEmptyAuthorFolders": "Δημιουργήστε άδειους φακέλους ταινιών",
"AppDataLocationHealthCheckMessage": "Η αναβάθμιση δεν είναι πιθανό να αποτρέψει την διαγραφή των AppData κατά την αναβάθμιση",
"AppDataLocationHealthCheckMessage": "Η ενημέρωση δεν θα είναι δυνατή για να αποτραπεί η διαγραφή των δεδομένων εφαρμογής κατά την ενημέρωση",
"DownloadClientStatusCheckAllClientMessage": "Όλα τα προγράμματα λήψης είναι μη διαθέσιμα λόγων αποτυχιών",
"Monitor": "Οθόνη",
"OnBookFileDeleteForUpgrade": "Διαγραφή αρχείου ταινίας για αναβάθμιση",
@@ -590,7 +589,6 @@
"MoveFiles": "Μετακίνηση αρχείων",
"OnApplicationUpdate": "Στην ενημέρωση της εφαρμογής",
"OnApplicationUpdateHelpText": "Στην ενημέρωση της εφαρμογής",
"BlocklistHelpText": "Αποτρέπει το Radarr από το να πάρει ξανά αυτόματα αυτήν την έκδοση",
"LoadingEditionsFailed": "Η φόρτωση των εκδόσεων απέτυχε",
"ManualDownload": "Χειροκίνητη λήψη",
"MetadataConsumers": "Καταναλωτές μεταδεδομένων",
@@ -911,5 +909,19 @@
"HiddenClickToShow": "Κρυφό, κάντε κλικ για εμφάνιση",
"HideAdvanced": "Απόκρυψη Προχωρημένων",
"ShowAdvanced": "Εμφάνιση για προχωρημένους",
"ShownClickToHide": "Εμφανίζεται, κάντε κλικ για απόκρυψη"
"ShownClickToHide": "Εμφανίζεται, κάντε κλικ για απόκρυψη",
"ColonReplacement": "Αντικατάσταση παχέος εντέρου",
"ReplaceWithDash": "Αντικαταστήστε με Dash",
"ReplaceWithSpaceDash": "Αντικαταστήστε με το Space Dash",
"ReplaceWithSpaceDashSpace": "Αντικαταστήστε με Space Dash Space",
"DashOrSpaceDashDependingOnName": "Παύλα ή Κενό-Παύλα ανάλογα με το όνομα",
"ListRefreshInterval": "Διάστημα Ανανέωσης Λίστας",
"ListWillRefreshEveryInterp": "Η λίστα θα ανανεώνεται κάθε {0}",
"Loading": "φόρτωση",
"RecycleBinUnableToWriteHealthCheck": "Δεν είναι δυνατή η εγγραφή στον επιλεγμένο φάκελο ανακύκλωσης: {0}. Ελέγξτε ότι αυτό το μονοπάτι υπάρχει και ότι είναι εγγράψιμο από τον χρήστη που τρέχει το Readarr",
"SmartReplace": "Έξυπνη Αντικατάσταση",
"ThereWasAnErrorLoadingThisItem": "Υπήρξε ένα σφάλμα κατά τη φόρτωση του αρχείου",
"ThereWasAnErrorLoadingThisPage": "Υπήρξε ένα σφάλμα κατά τη φόρτωση της σελίδας",
"Clone": "Κλωνοποίηση",
"ApiKeyValidationHealthCheckMessage": "Παρακαλούμε ενημερώστε το κλείδι API ώστε να έχει τουλάχιστον {0} χαρακτήρες. Μπορείτε να το κάνετε αυτό μέσα από τις ρυθμίσεις ή το αρχείο ρυθμίσεων"
}

View File

@@ -64,8 +64,9 @@
"BindAddressHelpText": "Valid IP address, localhost or '*' for all interfaces",
"BindAddressHelpTextWarning": "Requires restart to take effect",
"Blocklist": "Blocklist",
"BlocklistHelpText": "Prevents Readarr from automatically grabbing these files again",
"BlocklistRelease": "Blocklist Release",
"BlocklistReleaseHelpText": "Prevents Readarr from automatically grabbing these files again",
"BlocklistReleases": "Blocklist Releases",
"Book": "Book",
"BookAvailableButMissing": "Book Available, but Missing",
"BookEditor": "Book Editor",
@@ -122,6 +123,7 @@
"ClickToChangeReleaseGroup": "Click to change release group",
"ClientPriority": "Client Priority",
"Clone": "Clone",
"CloneCondition": "Clone Condition",
"CloneCustomFormat": "Clone Custom Format",
"CloneIndexer": "Clone Indexer",
"CloneProfile": "Clone Profile",
@@ -188,6 +190,8 @@
"DeleteBackupMessageText": "Are you sure you want to delete the backup '{0}'?",
"DeleteBookFile": "Delete Book File",
"DeleteBookFileMessageText": "Are you sure you want to delete {0}?",
"DeleteCondition": "Delete Condition",
"DeleteConditionMessageText": "Are you sure you want to delete condition '{0}'?",
"DeleteCustomFormat": "Delete Custom Format",
"DeleteCustomFormatMessageText": "Are you sure you want to delete the custom format '{0}'?",
"DeleteDelayProfile": "Delete Delay Profile",
@@ -213,6 +217,8 @@
"DeleteQualityProfileMessageText": "Are you sure you want to delete the quality profile '{0}'?",
"DeleteReleaseProfile": "Delete Release Profile",
"DeleteReleaseProfileMessageText": "Are you sure you want to delete this Release Profile?",
"DeleteRemotePathMapping": "Delete Remote Path Mapping",
"DeleteRemotePathMappingMessageText": "Are you sure you want to delete this remote path mapping?",
"DeleteRootFolder": "Delete Root Folder",
"DeleteRootFolderMessageText": "Are you sure you want to delete the root folder '{0}'?",
"DeleteSelectedBookFiles": "Delete Selected Book Files",
@@ -505,6 +511,7 @@
"NameStyle": "Author Name Style",
"NamingSettings": "Naming Settings",
"NegateHelpText": "If checked, the custom format will not apply if this {0} condition matches.",
"Negated": "Negated",
"New": "New",
"NewBooks": "New Books",
"NoBackupsAreAvailable": "No backups are available",
@@ -654,7 +661,11 @@
"RemoveFromQueue": "Remove from queue",
"RemoveHelpTextWarning": "Removing will remove the download and the file(s) from the download client.",
"RemoveSelected": "Remove Selected",
"RemoveSelectedMessageText": "Are you sure you want to remove the selected items from the blocklist?",
"RemoveSelectedItem": "Remove Selected Item",
"RemoveSelectedItemBlocklistMessageText": "Are you sure you want to remove the selected items from the blocklist?",
"RemoveSelectedItemQueueMessageText": "Are you sure you want to remove 1 item from the queue?",
"RemoveSelectedItems": "Remove Selected Items",
"RemoveSelectedItemsQueueMessageText": "Are you sure you want to remove {0} items from the queue?",
"RemoveTagExistingTag": "Existing tag",
"RemoveTagRemovingTag": "Removing tag",
"RemovedFromTaskQueue": "Removed from task queue",
@@ -667,6 +678,7 @@
"ReplaceWithDash": "Replace with Dash",
"ReplaceWithSpaceDash": "Replace with Space Dash",
"ReplaceWithSpaceDashSpace": "Replace with Space Dash Space",
"Required": "Required",
"RequiredHelpText": "This {0} condition must match for the custom format to apply. Otherwise a single {0} match is sufficient.",
"RequiredPlaceHolder": "Add new restriction",
"RescanAfterRefreshHelpText": "Rescan the author folder after refreshing the author",
@@ -677,6 +689,8 @@
"ResetAPIKeyMessageText": "Are you sure you want to reset your API Key?",
"ResetDefinitionTitlesHelpText": "Reset definition titles as well as values",
"ResetDefinitions": "Reset Definitions",
"ResetQualityDefinitions": "Reset Quality Definitions",
"ResetQualityDefinitionsMessageText": "Are you sure you want to reset quality definitions?",
"ResetTitles": "Reset Titles",
"Restart": "Restart",
"RestartNow": "Restart Now",

View File

@@ -294,7 +294,6 @@
"RemoveFromQueue": "Eliminar de la cola",
"RemoveHelpTextWarning": "Eliminar borrará la descarga y el/los fichero(s) del gestor de descargas.",
"RemoveSelected": "Borrar Seleccionados",
"RemoveSelectedMessageText": "¿Está seguro de que desea eliminar los elementos seleccionados de la lista negra?",
"RemoveTagExistingTag": "Etiqueta existente",
"RemoveTagRemovingTag": "Eliminando etiqueta",
"RemovedFromTaskQueue": "Eliminar de la cola de tareas",
@@ -468,7 +467,6 @@
"Level": "Nivel",
"ReleaseBranchCheckOfficialBranchMessage": "Las versión {0} no es una versión válida de Radarr, no recibirás actualizaciones",
"Blocklist": "Bloqueadas",
"BlocklistHelpText": "Evita que Radarr vuelva a capturar esta película automáticamente",
"BlocklistRelease": "Bloquear este Estreno",
"CreateEmptyAuthorFolders": "Crear carpetas de películas vacías",
"SelectAll": "Seleccionar Todas",
@@ -638,5 +636,21 @@
"HiddenClickToShow": "Oculto, clic para mostrar",
"HideAdvanced": "Ocultar Avanzado",
"ShowAdvanced": "Mostrar Avanzado",
"ShownClickToHide": "Mostrado, clic para ocultar"
"ShownClickToHide": "Mostrado, clic para ocultar",
"ColonReplacement": "Reemplazo dos puntos",
"ReplaceWithDash": "Reemplazar con Dash",
"ReplaceWithSpaceDash": "Reemplazar con Space Dash",
"ReplaceWithSpaceDashSpace": "Reemplazar con Space Dash Space",
"DeleteRemotePathMapping": "Editar Mapeo de Ruta Remota",
"BlocklistReleases": "Bloquear este Estreno",
"DeleteConditionMessageText": "Seguro que quieres eliminar la etiqueta '{0}'?",
"Negated": "Negado",
"RemoveSelectedItem": "Eliminar el elemento seleccionado",
"RemoveSelectedItemBlocklistMessageText": "¿Está seguro de que desea eliminar los elementos seleccionados de la lista negra?",
"RemoveSelectedItemQueueMessageText": "¿Está seguro de que desea eliminar el {0} elemento {1} de la cola?",
"RemoveSelectedItems": "Eliminar los elementos seleccionados",
"RemoveSelectedItemsQueueMessageText": "¿Estás seguro de que quieres eliminar {0} elementos de la cola?",
"Required": "Necesario",
"ResetQualityDefinitions": "Restablecer definiciones de calidad",
"ResetQualityDefinitionsMessageText": "¿Está seguro de que desea restablecer las definiciones de calidad?"
}

View File

@@ -289,7 +289,6 @@
"RemoveFromQueue": "Poista jonosta",
"RemoveHelpTextWarning": "Poistaminen poistaa latauksen ja tiedostot latausohjelmasta.",
"RemoveSelected": "Poista valitut",
"RemoveSelectedMessageText": "Haluatko varmasti poistaa valitut kohteet estolistalta?",
"RemoveTagExistingTag": "Olemassa oleva tunniste",
"RemoveTagRemovingTag": "Tunniste poistetaan",
"RemovedFromTaskQueue": "Poistettu tehtäväjonosta",
@@ -478,7 +477,6 @@
"UrlBaseHelpText": "Lisää Calibren URL-osoitteeseen etuliitteen, (esim. 'http://[host]:[port]/[urlBase]').",
"Author": "Kirjailija",
"BackupIntervalHelpText": "Readarrin tietokannan ja asetusten automaattisen varmuuskopioinnin suoritusaikaväli.",
"BlocklistHelpText": "Estää julkaisun automaattisen uudelleensieppauksen.",
"TagsHelpText": "Käytetään vähintään yhdellä täsmäävällä tunnisteella merkityille kirjailijoille. Käytä kaikille jättämällä tyhjäksi.",
"WriteAudioTagsScrubHelp": "Poista olemassa olevat tagit tiedostoista säilyttäen vain Readarrin lisäämät tagit.",
"DefaultTagsHelpText": "Kansiosta löydetyille kirjailijoille oletusarvoisesti määritettävät tunnisteet.",
@@ -816,5 +814,21 @@
"HiddenClickToShow": "Piilotettu, näytä painalla",
"HideAdvanced": "Piilota edistyneet",
"ShowAdvanced": "Näytä lisäasetukset",
"ShownClickToHide": "Näkyvissä, piilota painamalla"
"ShownClickToHide": "Näkyvissä, piilota painamalla",
"ColonReplacement": "Kaksoispisteen käsittely",
"ReplaceWithDash": "Korvaus: väliviiva",
"ReplaceWithSpaceDash": "Korvaus: välilyönti-väliviiva",
"ReplaceWithSpaceDashSpace": "Korvus: välilyönti-väliviiva-välilyönti",
"DeleteRemotePathMapping": "Muokkaa etäreittien kartoitusta",
"BlocklistReleases": "Lisää julkaisut estolistalle",
"DeleteConditionMessageText": "Haluatko varmasti poistaa tunnisteen '{0}'?",
"Negated": "Mitätöity",
"RemoveSelectedItem": "Poista valittu kohde",
"RemoveSelectedItemBlocklistMessageText": "Haluatko varmasti poistaa valitut kohteet estolistalta?",
"RemoveSelectedItemQueueMessageText": "Haluatko varmasti poistaa jonosta 1 kohteen?",
"RemoveSelectedItems": "Poista valitut kohteet",
"RemoveSelectedItemsQueueMessageText": "Haluatko varmasti poistaa jonosta {0} kohdetta?",
"Required": "Vaaditaan",
"ResetQualityDefinitions": "Palauta laatumääritykset",
"ResetQualityDefinitionsMessageText": "Haluatko varmasti palauttaa laatumääritykset?"
}

View File

@@ -294,7 +294,6 @@
"RemoveFromQueue": "Supprimer de la file d'attente",
"RemoveHelpTextWarning": "La suppression supprimera le téléchargement et le(s) fichier(s) du client de téléchargement.",
"RemoveSelected": "Supprimer la sélection",
"RemoveSelectedMessageText": "Êtes-vous sûr de vouloir supprimer les éléments sélectionnés de la liste noire ?",
"RemoveTagExistingTag": "Tag existant",
"RemoveTagRemovingTag": "Suppression du tag",
"RemovedFromTaskQueue": "Supprimé de la file d'attente des tâches",
@@ -478,7 +477,6 @@
"ReleaseBranchCheckOfficialBranchMessage": "La branche {0} n'est pas une branche de version Readarr valide, vous ne recevrez pas de mises à jour",
"Time": "Heure",
"Blocklist": "Liste noire",
"BlocklistHelpText": "Empêche Readarr de récupérer automatiquement ces fichiers de nouveau",
"BlocklistRelease": "Mettre cette release sur la liste noire",
"RescanAfterRefreshHelpText": "Réanalyser le dossier de l'auteur après avoir actualisé l'auteur",
"ShowUnknownAuthorItems": "Afficher les éléments avec auteur inconnu",
@@ -490,7 +488,7 @@
"All": "Tout",
"Wanted": "Recherché",
"CreateEmptyAuthorFolders": "Créer des dossiers auteurs vides",
"AppDataLocationHealthCheckMessage": "Mettre à jour ne sera pas possible afin d'éviter de supprimer le dossier AppData lors de la mise à jour",
"AppDataLocationHealthCheckMessage": "La mise à jour ne sera pas possible pour empêcher la suppression de AppData lors de la mise à jour",
"IndexerPriorityHelpText": "Priorité de l'indexeur de 1 (la plus élevée) à 50 (la plus basse). Par défaut : 25. Utilisé pour départager les versions lors des téléchargements. Readarr continuera d'utiliser tous les indexeurs activés pour les synchro RSS et les recherches.",
"Duration": "Durée",
"RemotePathMappingCheckBadDockerPath": "Vous utilisez docker ; le client de téléchargement {0} enregistre les téléchargements dans {1} mais ce n'est pas un chemin valide. Vérifiez vos paramètres de dossier distant et les paramètres de votre client de téléchargement.",
@@ -692,7 +690,7 @@
"CopyToClipboard": "Copier dans le presse-papier",
"CustomFormat": "Format Personnalisé",
"CustomFormatSettings": "Réglages Formats Personnalisés",
"CustomFormats": "Formats personnalisés",
"CustomFormats": "Formats perso.",
"DeleteCustomFormat": "Supprimer le format personnalisé",
"DeleteCustomFormatMessageText": "Voulez-vous vraiment supprimer l'indexeur '{0}' ?",
"DeleteFormatMessageText": "Êtes-vous sûr de vouloir supprimer le tag {0} ?",
@@ -717,10 +715,27 @@
"Loading": "Chargement",
"ThereWasAnErrorLoadingThisItem": "Une erreur s'est produite lors du chargement de cet élément",
"ThereWasAnErrorLoadingThisPage": "Une erreur s'est produite lors du chargement de cette page",
"ApiKeyValidationHealthCheckMessage": "Merci de mettre à jour votre clé API afin qu'elle fasse plus de 20 caractères. Rendez vous dans les paramètres ou dans le fichier de configuration",
"ApiKeyValidationHealthCheckMessage": "Veuillez mettre à jour votre clé API pour qu'elle contienne au moins {0} caractères. Vous pouvez le faire via les paramètres ou le fichier de configuration",
"DeleteBookFile": "Effacer le fichier du livre",
"HiddenClickToShow": "Caché, cliquez pour afficher",
"HideAdvanced": "Masquer avancé",
"ShowAdvanced": "Afficher avancés",
"ShownClickToHide": "Montré, cliquez pour masquer"
"ShownClickToHide": "Montré, cliquez pour masquer",
"ColonReplacement": "Remplacement pour le 'deux-points'",
"ReplaceWithDash": "Remplacer par Dash",
"ReplaceWithSpaceDash": "Remplacer par Space Dash",
"ReplaceWithSpaceDashSpace": "Remplacer par Space Dash Space",
"DeleteRemotePathMapping": "Éditer le chemin distant",
"DeleteRemotePathMappingMessageText": "Êtes-vous sûr de vouloir effacer ce chemin ?",
"BlocklistReleases": "Mettre cette release sur la liste noire",
"DeleteConditionMessageText": "Voulez-vous vraiment supprimer la liste '{0}' ?",
"Negated": "Inversé",
"RemoveSelectedItem": "Supprimer l'élément sélectionné",
"RemoveSelectedItemBlocklistMessageText": "Êtes-vous sûr de vouloir supprimer les films sélectionnés de la liste noire ?",
"RemoveSelectedItemQueueMessageText": "Êtes-vous sûr de vouloir désinstaller {0} objet{1} de la file d'attente ?",
"RemoveSelectedItems": "Supprimer les éléments sélectionnés",
"RemoveSelectedItemsQueueMessageText": "Êtes-vous sûr de vouloir supprimer {0} objet(s) de la file d'attente ?",
"Required": "Obligatoire",
"ResetQualityDefinitions": "Réinitialiser les définitions de qualité",
"ResetQualityDefinitionsMessageText": "Êtes-vous sûr de vouloir réinitialiser les définitions de qualité ?"
}

View File

@@ -274,7 +274,6 @@
"RemoveFromQueue": "הסר מהתור",
"RemoveHelpTextWarning": "הסרה תסיר את ההורדה ואת הקבצים מלקוח ההורדה.",
"RemoveSelected": "הסר פריטים שנבחרו",
"RemoveSelectedMessageText": "האם אתה בטוח שברצונך להסיר את הפריטים שנבחרו מהרשימה השחורה?",
"RemoveTagExistingTag": "תג קיים",
"RemoveTagRemovingTag": "הסרת התג",
"RemovedFromTaskQueue": "הוסר מתור המשימות",
@@ -554,7 +553,6 @@
"InstanceNameHelpText": "שם מופע בטאב ובשביל שם אפליקציית סיסלוג",
"RemotePathMappingCheckBadDockerPath": "אתה משתמש בדוקר; קליינט ההורדות {0} שם הורדות ב-{1} אבל הנתיב לא תקין {2}. בחן מחדש את ניתוב התיקיות והגדרות קליינט ההורדות.",
"AddList": "הוסף רשימה",
"BlocklistHelpText": "מנע מראדרר להוסיף את ההוצאה הזאת שוב",
"RemotePathMappingCheckDownloadPermissions": "ראדארר יכול לראות אבל לא לגשת לסרטים שירדו {0}. ככל הנראה בעיית הרשאות.",
"RemotePathMappingCheckFileRemoved": "הקובץ {0} הוסר תוך כדי התהליך.",
"RemotePathMappingCheckFilesBadDockerPath": "אתה משתמש בדוקר; קליינט ההורדות {0} שם הורדות ב-{1} אבל הנתיב לא תקין {2}. בחן מחדש את ניתוב התיקיות והגדרות קליינט ההורדות.",
@@ -600,5 +598,18 @@
"HiddenClickToShow": "מוסתר, לחץ להצגה",
"HideAdvanced": "הסתר מתקדם",
"ShowAdvanced": "הצג מתקדם",
"ShownClickToHide": "מוצג, לחץ כדי להסתיר"
"ShownClickToHide": "מוצג, לחץ כדי להסתיר",
"ColonReplacement": "החלפת המעי הגס",
"ReplaceWithDash": "החלף ב- Dash",
"ReplaceWithSpaceDash": "החלף במקף החלל",
"ReplaceWithSpaceDashSpace": "החלף במרחב מקף החלל",
"DeleteRemotePathMapping": "ערוך מיפוי נתיבים מרחוק",
"DeleteRemotePathMappingMessageText": "האם אתה בטוח שברצונך למחוק את מיפוי הנתיבים המרוחק הזה?",
"BlocklistReleases": "שחרור הרשימה השחורה",
"DeleteConditionMessageText": "האם אתה בטוח שברצונך למחוק את התג '{0}'?",
"Negated": "שלילי",
"Required": "נדרש",
"RemoveSelectedItemBlocklistMessageText": "האם אתה בטוח שברצונך להסיר את הפריטים שנבחרו מהרשימה השחורה?",
"RemoveSelectedItemQueueMessageText": "האם אתה בטוח שברצונך להסיר את {0} פריט {1} מהתור?",
"RemoveSelectedItemsQueueMessageText": "האם אתה בטוח שברצונך להסיר את {0} פריט {1} מהתור?"
}

View File

@@ -281,7 +281,6 @@
"RemoveFromQueue": "कतार से निकालें",
"RemoveHelpTextWarning": "हटाने से डाउनलोड और फ़ाइल को डाउनलोड क्लाइंट से निकाल दिया जाएगा।",
"RemoveSelected": "चुना हुआ हटाओ",
"RemoveSelectedMessageText": "क्या आप वाकई चयनित आइटम को ब्लैकलिस्ट से हटाना चाहते हैं?",
"RemoveTagExistingTag": "मौजूदा टैग",
"RemoveTagRemovingTag": "टैग हटाना",
"RemovedFromTaskQueue": "कार्य कतार से हटा दिया गया",
@@ -578,5 +577,17 @@
"HiddenClickToShow": "छिपा हुआ, दिखाने के लिए क्लिक करें",
"HideAdvanced": "उन्नत छिपाएँ",
"ShowAdvanced": "शो पहले होगा",
"ShownClickToHide": "दिखाया, छिपाने के लिए क्लिक करें"
"ShownClickToHide": "दिखाया, छिपाने के लिए क्लिक करें",
"ColonReplacement": "कोलन रिप्लेसमेंट",
"ReplaceWithDash": "डैश के साथ बदलें",
"ReplaceWithSpaceDash": "स्पेस डैश के साथ बदलें",
"ReplaceWithSpaceDashSpace": "स्पेस डैश स्पेस के साथ बदलें",
"DeleteRemotePathMapping": "दूरस्थ पथ मानचित्रण संपादित करें",
"BlocklistReleases": "ब्लैकलिस्ट रिलीज़",
"Negated": "नकार दिया गया",
"Required": "अपेक्षित",
"DeleteConditionMessageText": "क्या आप वाकई '{0}' सूची को हटाना चाहते हैं?",
"RemoveSelectedItemBlocklistMessageText": "क्या आप वाकई चयनित आइटम को ब्लैकलिस्ट से हटाना चाहते हैं?",
"RemoveSelectedItemQueueMessageText": "क्या आप वाकई {0} आइटम {1} को कतार से हटाना चाहते हैं?",
"RemoveSelectedItemsQueueMessageText": "क्या आप वाकई {0} आइटम {1} को कतार से हटाना चाहते हैं?"
}

View File

@@ -130,7 +130,6 @@
"AuthorClickToChangeBook": "Klikni za promjenu filma",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "U Radarru se automatski isključuje nadzor za filmove koji su izbrisani sa diska",
"BackupFolderHelpText": "Relativne putanje će biti unutar Radarrovog AppData direktorija",
"BlocklistHelpText": "Spriječi Radarr da automatski dohvaća ovu verziju ponovno",
"BypassIfHighestQuality": "Zaobiđi ako je Najviši Kvalitet",
"CancelMessageText": "Jeste li sigurni da želite otkazati ovaj zadatak na čekanju?",
"ChmodFolderHelpTextWarning": "Ovo jedino radi ako je korisnik koji je pokrenuo Radarr vlasnik datoteke. Bolje je osigurati da klijent za preuzimanje postavi dozvolu ispravno.",
@@ -141,7 +140,7 @@
"DeleteNotificationMessageText": "Jeste li sigurni da želite obrisati oznaku formata {0}?",
"DeleteQualityProfileMessageText": "Jeste li sigurni da želite obrisati ovaj profil odgode?",
"DeleteRootFolderMessageText": "Jeste li sigurni da želite obrisati oznaku formata {0}?",
"RemoveSelectedMessageText": "Jeste li sigurni da želite izbrisati odabrane stavke iz blok liste?",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Grana korištena za ažuriranje Radarra",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Grana korištena od strane vanjskog mehanizma za ažuriranje"
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Grana korištena od strane vanjskog mehanizma za ažuriranje",
"ColonReplacement": "Zamjena Zareza"
}

View File

@@ -275,7 +275,6 @@
"RemoveFromQueue": "Eltávolítás a sorból",
"RemoveHelpTextWarning": "Az eltávolítás eltávolítja a letöltést és a fájl(oka)t a letöltési kliensből.",
"RemoveSelected": "Kiválaszottak törlése",
"RemoveSelectedMessageText": "Biztosan eltávolítja a kijelölt elemeket a feketelistáról?",
"RemoveTagExistingTag": "Meglévő Címke",
"RemoveTagRemovingTag": "Címke eltávolítása",
"RemovedFromTaskQueue": "Eltávolítva a feladatsorról",
@@ -696,7 +695,6 @@
"BlocklistRelease": "Feketelistás Kiadás",
"NoHistoryBlocklist": "Nincs blokkolási előzménylista",
"Blocklist": "Feketelista",
"BlocklistHelpText": "Megakadályozza, hogy a Readarr automatikusan letöltse újra",
"RemoveFromBlocklist": "Eltávolítás a feketelistáról",
"UnableToLoadBlocklist": "Nem sikerült betölteni a feketelistát",
"Component": "Komponens",
@@ -907,5 +905,9 @@
"HiddenClickToShow": "Rejtett, kattints a megjelenítéshez",
"HideAdvanced": "Haladó Elrejtése",
"ShowAdvanced": "Haladó nézet",
"ShownClickToHide": "Kattints, hogy elrejtsd"
"ShownClickToHide": "Kattints, hogy elrejtsd",
"ColonReplacement": "Kettőspont Helyettesítés",
"ReplaceWithDash": "Cserélés kötőjelre",
"ReplaceWithSpaceDash": "Cserélje szóközre",
"ReplaceWithSpaceDashSpace": "Cserélje Szóköz kötőjel szóközre"
}

View File

@@ -23,5 +23,15 @@
"Calendar": "Kalender",
"Cancel": "Batal",
"Grab": "Peroleh",
"Hostname": "Hostname"
"Hostname": "Hostname",
"ChangeHasNotBeenSavedYet": "Perubahan belum disimpan",
"ClickToChangeQuality": "Klik untuk mengubah kualitas",
"AlternateTitles": "Judul Lain",
"AppDataDirectory": "Direktori AppData",
"Connections": "Koleksi",
"ExportCustomFormat": "Tambahkan Format Khusus",
"AuthorClickToChangeBook": "Klik untuk mengubah film",
"Automatic": "Otomatis",
"Close": "Tutup",
"Delete": "Hapus"
}

View File

@@ -295,7 +295,6 @@
"RemoveFromQueue": "Fjarlægðu úr biðröð",
"RemoveHelpTextWarning": "Fjarlæging fjarlægir niðurhalið og skrána / skrána úr niðurhalsviðskiptavininum.",
"RemoveSelected": "Fjarlægja valið",
"RemoveSelectedMessageText": "Ertu viss um að þú viljir fjarlægja valda hluti af svörtum lista?",
"RemoveTagExistingTag": "Núverandi merki",
"RemoveTagRemovingTag": "Fjarlægir merkið",
"RemovedFromTaskQueue": "Fjarlægð úr verkröð",
@@ -578,5 +577,18 @@
"HiddenClickToShow": "Falinn, smelltu til að sýna",
"HideAdvanced": "Fela lengra komna",
"ShowAdvanced": "Sýna lengra komna",
"ShownClickToHide": "Sýnt, smelltu til að fela"
"ShownClickToHide": "Sýnt, smelltu til að fela",
"ColonReplacement": "Skipt um ristil",
"ReplaceWithDash": "Skiptu um með Dash",
"ReplaceWithSpaceDash": "Skiptu um með Space Dash",
"ReplaceWithSpaceDashSpace": "Skiptu um með Space Dash Space",
"DeleteRemotePathMapping": "Breyta kortlagningu fjarstígs",
"DeleteRemotePathMappingMessageText": "Ertu viss um að þú viljir eyða þessari ytri slóðakortun?",
"BlocklistReleases": "Útgáfa svartalista",
"DeleteConditionMessageText": "Ertu viss um að þú viljir eyða merkinu '{0}'?",
"Negated": "Negated",
"RemoveSelectedItemBlocklistMessageText": "Ertu viss um að þú viljir fjarlægja valda hluti af svörtum lista?",
"RemoveSelectedItemQueueMessageText": "Ertu viss um að þú viljir fjarlægja {0} hlut {1} úr biðröðinni?",
"RemoveSelectedItemsQueueMessageText": "Ertu viss um að þú viljir fjarlægja {0} hlut {1} úr biðröðinni?",
"Required": "Nauðsynlegt"
}

View File

@@ -298,7 +298,6 @@
"RemoveFromQueue": "Rimuovi dalla coda",
"RemoveHelpTextWarning": "La rimozione eliminerà il download e i file dal client di download.",
"RemoveSelected": "Rimuovi Selezionato",
"RemoveSelectedMessageText": "Sei sicuro di voler rimuovere gli elementi selezionati della blacklist?",
"RemoveTagExistingTag": "Tag esistente",
"RemoveTagRemovingTag": "Sto eliminando il tag",
"RemovedFromTaskQueue": "Rimosso dalla coda lavori",
@@ -471,7 +470,6 @@
"AddMissing": "Aggiungi mancanti",
"AddNewItem": "Aggiungi Nuovo Elemento",
"Blocklist": "Lista dei Blocchi",
"BlocklistHelpText": "Impedisci a Readarr di re-acquisire automaticamente questi file",
"BlocklistRelease": "Release in Lista dei Blocchi",
"AllowFingerprinting": "Consenti il \"Fingerprinting\"",
"AllExpandedCollapseAll": "Collassa tutto",
@@ -684,5 +682,9 @@
"HiddenClickToShow": "Nascosto, premi per mostrare",
"HideAdvanced": "Nascondi Avanzate",
"ShowAdvanced": "Mostra Avanzate",
"ShownClickToHide": "Visibile, clicca per nascondere"
"ShownClickToHide": "Visibile, clicca per nascondere",
"ColonReplacement": "Sostituzione Due Punti",
"ReplaceWithDash": "Sostituisci con Dash",
"ReplaceWithSpaceDash": "Sostituisci con Space Dash",
"ReplaceWithSpaceDashSpace": "Sostituisci con Space Dash Space"
}

View File

@@ -288,7 +288,6 @@
"RemoveHelpTextWarning": "削除すると、ダウンロードとファイルがダウンロードクライアントから削除されます。",
"RemoveSelected": "削除選択",
"UpdateMechanismHelpText": "Radarrの組み込みアップデーターまたはスクリプトを使用する",
"RemoveSelectedMessageText": "選択したアイテムをブラックリストから削除してもよろしいですか?",
"RemoveTagExistingTag": "既存のタグ",
"RemoveTagRemovingTag": "タグの削除",
"RemovedFromTaskQueue": "タスクキューから削除されました",
@@ -578,5 +577,17 @@
"HiddenClickToShow": "非表示、クリックして表示",
"HideAdvanced": "高度な非表示",
"ShowAdvanced": "高度な表示",
"ShownClickToHide": "表示、クリックして非表示"
"ShownClickToHide": "表示、クリックして非表示",
"ColonReplacement": "結腸の置換",
"ReplaceWithDash": "ダッシュに置き換えます",
"ReplaceWithSpaceDash": "スペースダッシュに置き換えます",
"ReplaceWithSpaceDashSpace": "スペースダッシュスペースに置き換えます",
"DeleteRemotePathMapping": "リモートパスマッピングの編集",
"Negated": "否定",
"RemoveSelectedItemBlocklistMessageText": "選択したアイテムをブラックリストから削除してもよろしいですか?",
"RemoveSelectedItemQueueMessageText": "キューから{0}アイテム{1}を削除してもよろしいですか?",
"RemoveSelectedItemsQueueMessageText": "キューから{0}アイテム{1}を削除してもよろしいですか?",
"Required": "必須",
"BlocklistReleases": "ブラックリストリリース",
"DeleteConditionMessageText": "リスト「{0}」を削除してもよろしいですか?"
}

View File

@@ -310,7 +310,6 @@
"RemoveFromQueue": "대기열에서 제거",
"RemoveHelpTextWarning": "제거하면 다운로드 클라이언트에서 다운로드 및 파일이 제거됩니다.",
"RemoveSelected": "선택된 것을 지워 라",
"RemoveSelectedMessageText": "블랙리스트에서 선택한 항목을 제거 하시겠습니까?",
"RemoveTagExistingTag": "기존 태그",
"RemoveTagRemovingTag": "태그 제거",
"RemovedFromTaskQueue": "작업 대기열에서 제거됨",
@@ -577,5 +576,11 @@
"UpgradesAllowed": "허용되는 업그레이드",
"HideAdvanced": "고급 숨기기",
"HiddenClickToShow": "숨김, 클릭하여 표시",
"ShowAdvanced": "고급보기"
"ShowAdvanced": "고급보기",
"DeleteRemotePathMapping": "원격 경로 매핑 편집",
"BlocklistReleases": "블랙리스트 릴리스",
"DeleteConditionMessageText": "'{0}' 태그를 삭제하시겠습니까?",
"RemoveSelectedItemQueueMessageText": "대기열에서 {0} 항목 {1}을 제거하시겠습니까?",
"RemoveSelectedItemBlocklistMessageText": "블랙리스트에서 선택한 항목을 제거 하시겠습니까?",
"RemoveSelectedItemsQueueMessageText": "대기열에서 {0} 항목 {1}을 제거하시겠습니까?"
}

View File

@@ -46,7 +46,6 @@
"DeleteImportListExclusionMessageText": "Er du sikker på at du vil slette denne ekskluderingen av importlister?",
"DeleteReleaseProfileMessageText": "Er du sikker på at du vil slette denne forsinkelsesprofilen?",
"DeleteTagMessageText": "Er du sikker på at du vil slette formattaggen {0}?",
"RemoveSelectedMessageText": "Er du sikker på at du vil fjerne de valgte elementene fra svartelisten?",
"ResetAPIKeyMessageText": "Er du sikker på at du vil tilbakestille API -nøkkelen din?",
"ShowQualityProfile": "Legg til kvalitetsprofil",
"UsingExternalUpdateMechanismBranchToUseToUpdateReadarr": "Gren som skal brukes til å oppdatere Radarr",
@@ -61,7 +60,6 @@
"All": "Alle",
"DeleteBackupMessageText": "Er du sikker på at du vil slette formattaggen {0}?",
"Blocklist": "Svarteliste",
"BlocklistHelpText": "Hindrer Radarr i å automatisk gripe denne utgivelsen igjen",
"BlocklistRelease": "Blacklist -utgivelse",
"AppDataLocationHealthCheckMessage": "Oppdatering vil ikke være mulig for å forhindre sletting av AppData på oppdateringen",
"CopyUsingHardlinksHelpText": "Bruk harde lenker ved forsøk på å kopiere filer fra torrents som fortsatt blir delt",
@@ -147,5 +145,11 @@
"CustomFormat": "Egendefinert format",
"CustomFormats": "Egendefinert format",
"BypassIfHighestQuality": "Omgå hvis høyeste kvalitet",
"Formats": "Format"
"Formats": "Format",
"ColonReplacement": "Kolon erstatntning",
"20MinutesTwenty": "20 Minutter: {0}",
"AddMissing": "Legg til manglende",
"AddNewItem": "Legg til nytt item",
"45MinutesFourtyFive": "45 Minutter: {0}",
"60MinutesSixty": "60 Minutter: {0}"
}

View File

@@ -297,7 +297,6 @@
"RemoveFromQueue": "Verwijder uit wachtrij",
"RemoveHelpTextWarning": "Het verwijderen zal zowel de download als de bestanden verwijderen bij de downloader.",
"RemoveSelected": "Selectie Verwijderen",
"RemoveSelectedMessageText": "Ben je zeker dat je de geselecteerde items wil verwijderen van de uitzonderingslijst?",
"RemoveTagExistingTag": "Bestaande tag",
"RemoveTagRemovingTag": "Tag verwijderen",
"RemovedFromTaskQueue": "Verwijderd uit taken wachtrij",
@@ -479,14 +478,13 @@
"SelectAll": "Alles Selecteren",
"SelectedCountBooksSelectedInterp": "{0} Film(s) Geselecteerd",
"Series": "Series",
"ThisCannotBeCancelled": "Eenmaal gestart kan dit niet worden geannuleerd zonder Radarr opnieuw te starten.",
"ThisCannotBeCancelled": "Eenmaal gestart kan dit niet worden geannuleerd zonder al je indexeerders uit te schakelen.",
"UnableToLoadBlocklist": "Kon zwarte lijst niet laden",
"UnselectAll": "Alles Deselecteren",
"UpdateSelected": "Selectie Bijwerken",
"Time": "Tijd",
"Label": "Label",
"Wanted": "Gezocht",
"BlocklistHelpText": "Voorkom dat Radarr deze release nogmaals automatisch ophaalt",
"AppDataLocationHealthCheckMessage": "Updaten zal niet mogelijk zijn om het verwijderen van AppData te voorkomen",
"AddedAuthorSettings": "Auteur instellingen toegevoegd",
"AddMissing": "Voeg ontbrekende toe",
@@ -632,5 +630,16 @@
"HiddenClickToShow": "Verborgen, klik om te tonen",
"HideAdvanced": "Verberg Gevorderd",
"ShowAdvanced": "Toon Geavanceerd",
"ShownClickToHide": "Getoond, klik om te verbergen"
"ShownClickToHide": "Getoond, klik om te verbergen",
"ColonReplacement": "Dubbelepunt Vervanging",
"IndexerJackettAll": "Indexeerders die het niet ondersteunde 'all' endpoint van Jacket gebruiken: {0}",
"ReplaceWithDash": "Vervang met Streepje",
"ReplaceWithSpaceDash": "Vervang met Spatie Streepje",
"ReplaceWithSpaceDashSpace": "Vervang met Spatie Streepje Spatie",
"InstanceName": "Naam van de instantie",
"ThereWasAnErrorLoadingThisItem": "Er ging iets fout bij het laden van dit item",
"ThereWasAnErrorLoadingThisPage": "Er ging iets fout bij het laden van deze pagina",
"ApiKeyValidationHealthCheckMessage": "Maak je API sleutel alsjeblieft minimaal {0} karakters lang. Dit kan gedaan worden via de instellingen of het configuratiebestand",
"ResetDefinitions": "Reset definities",
"ResetTitles": "Reset titels"
}

View File

@@ -299,7 +299,6 @@
"RemoveFromQueue": "Usuń z kolejki",
"RemoveHelpTextWarning": "Usunięcie spowoduje usunięcie pobierania i plików z klienta pobierania.",
"RemoveSelected": "Usuń zaznaczone",
"RemoveSelectedMessageText": "Czy na pewno chcesz usunąć wybrane elementy z czarnej listy?",
"RenameBooksHelpText": "Radarr użyje istniejącej nazwy pliku, jeśli zmiana nazwy jest wyłączona",
"Reorder": "Zmień kolejność",
"ReplaceIllegalCharacters": "Zastąp niedozwolone znaki",
@@ -568,7 +567,6 @@
"RestartRequiredHelpTextWarning": "Wymaga ponownego uruchomienia, aby odniosło skutek",
"UserAgentProvidedByTheAppThatCalledTheAPI": "User-Agent podawany przez aplikację wywołującą API",
"AddList": "Dodaj listę",
"BlocklistHelpText": "Zapobiega ponownemu pobraniu tej wersji przez Radarr",
"RemotePathMappingCheckDownloadPermissions": "Radarr widzi film {0}, lecz nie ma do niego dostępu. Najprawdopodobniej to wynik błędu w uprawnieniach dostępu.",
"RemotePathMappingCheckFilesGenericPermissions": "Klient pobierania {0} zgłosił pliki w {1}, lecz Radarr nie widzi tego folderu. Być może musisz zmienić uprawnienia dostępu do tego folderu.",
"RemotePathMappingCheckFolderPermissions": "Radarr widzi folder {0}, lecz nie ma do niego dostępu. Prawdopodobnie to wynik błędu uprawnień dostępu.",
@@ -615,5 +613,20 @@
"HiddenClickToShow": "Ukryty, kliknij, aby pokazać",
"HideAdvanced": "Ukryj zaawansowane",
"ShowAdvanced": "Pokaż zaawansowane",
"ShownClickToHide": "Pokazane, kliknij, aby ukryć"
"ShownClickToHide": "Pokazane, kliknij, aby ukryć",
"ColonReplacement": "Wymiana okrężnicy",
"ReplaceWithDash": "Zastąp Dash",
"ReplaceWithSpaceDash": "Zastąp spacją Dash",
"ReplaceWithSpaceDashSpace": "Zastąp spacją Dash Space",
"DeleteRemotePathMapping": "Edytuj zdalne mapowanie ścieżki",
"DeleteRemotePathMappingMessageText": "Czy na pewno chcesz usunąć to mapowanie zdalnej ścieżki?",
"BlocklistReleases": "Wydanie czarnej listy",
"DeleteConditionMessageText": "Czy na pewno chcesz usunąć tag „{0}”?",
"Negated": "Zanegowane",
"RemoveSelectedItem": "Usuń wybrane",
"RemoveSelectedItemBlocklistMessageText": "Czy na pewno chcesz usunąć wybrane elementy z czarnej listy?",
"RemoveSelectedItemQueueMessageText": "Czy na pewno chcesz usunąć {0} element {1} z kolejki?",
"RemoveSelectedItems": "Usuń wybrane",
"RemoveSelectedItemsQueueMessageText": "Czy na pewno chcesz usunąć elementy ({0}) z kolejki?",
"Required": "wymagany"
}

View File

@@ -106,7 +106,6 @@
"RemoveFromQueue": "Remover da fila",
"RemoveHelpTextWarning": "Remover eliminará a transferência e o(s) ficheiro(s) do cliente de transferências.",
"RemoveSelected": "Remover selecionado(s)",
"RemoveSelectedMessageText": "Tem a certeza que quer remover os itens selecionados da lista de bloqueio?",
"RemoveTagExistingTag": "Etiqueta existente",
"RemoveTagRemovingTag": "Eliminando etiqueta",
"RemovedFromTaskQueue": "Eliminado da fila de tarefas",
@@ -693,12 +692,11 @@
"RemoveFromBlocklist": "Remover da lista de bloqueio",
"Wanted": "Desejado",
"Blocklist": "Lista de bloqueio",
"BlocklistHelpText": "Impede o Readarr de capturar automaticamente estes ficheiros novamente",
"BlocklistRelease": "Bloquear versão",
"IndexerJackettAll": "Indexadores que usam o ponto de extremidade não suportado do Jackett 'all (tudo)' : {0}",
"Duration": "Duração",
"Filters": "Filtros",
"AppDataLocationHealthCheckMessage": "Não será possível atualizar para evitar a exclusão da pasta AppData durante a atualização",
"AppDataLocationHealthCheckMessage": "Não foi possivél actualizar para prevenir apagar a AppData durante a actualização",
"FileWasDeletedByViaUI": "O ficheiro foi eliminado por meio da IU",
"SizeLimit": "Tamanho Limite",
"Started": "Começado",
@@ -837,5 +835,10 @@
"HiddenClickToShow": "Oculto, clique para mostrar",
"HideAdvanced": "Ocultar avançado",
"ShowAdvanced": "Mostrar avançado",
"ShownClickToHide": "Visível, clique para ocultar"
"ShownClickToHide": "Visível, clique para ocultar",
"ColonReplacement": "Substituição de dois-pontos",
"ReplaceWithDash": "Substituir por travessão",
"ReplaceWithSpaceDash": "Substituir por espaço e travessão",
"ReplaceWithSpaceDashSpace": "Substituir por espaço, travessão e espaço",
"ApiKeyValidationHealthCheckMessage": "Por favor, actualize a sua API Key para ter no minimo {0} caracteres. Pode fazer através das definições ou do ficheiro de configuração"
}

View File

@@ -139,16 +139,16 @@
"DestinationPath": "Caminho de destino",
"DetailedProgressBarHelpText": "Mostrar texto em barra de progresso",
"EnableAutomaticAdd": "Habilitar adição automática",
"EnableAutomaticSearch": "Habilitar pesquisa automática",
"EnableAutomaticSearch": "Ativar pesquisa automática",
"EnableColorImpairedMode": "Habilitar modo para daltonismo",
"EnableColorImpairedModeHelpText": "Estilo alterado para permitir que usuários com daltonismo distingam melhor as informações codificadas por cores",
"EnableCompletedDownloadHandlingHelpText": "Importar automaticamente downloads concluídos do cliente de download",
"EnableHelpText": "Habilitar a criação de um arquivo de metadados para este tipo de metadados",
"EnableInteractiveSearch": "Habilitar pesquisa interativa",
"EnableInteractiveSearch": "Ativar pesquisa interativa",
"EnableRSS": "Habilitar RSS",
"EnableSSL": "Habilitar SSL",
"EnableSslHelpText": " Requer a reinicialização com a execução como administrador para fazer efeito",
"Ended": "Terminado",
"Ended": "Terminou",
"ErrorLoadingContents": "Erro ao carregar conteúdo",
"ErrorLoadingPreviews": "Erro ao carregar as visualizações",
"Exception": "Exceção",
@@ -267,7 +267,7 @@
"PublishedDate": "Data de publicação",
"Quality": "Qualidade",
"QualityDefinitions": "Definições de qualidade",
"QualityProfile": "Perfil de qualidade",
"QualityProfile": "Perfil de Qualidade",
"QualityProfiles": "Perfis de qualidade",
"QualitySettings": "Configurações de qualidade",
"Queue": "Fila",
@@ -296,11 +296,10 @@
"RemoveCompletedDownloadsHelpText": "Remover downloads importados do histórico do cliente de download",
"RemoveFailedDownloadsHelpText": "Remover downloads com falha do histórico do cliente de download",
"RemoveFilter": "Remover filtro",
"RemoveFromDownloadClient": "Remover do cliente de download",
"RemoveFromDownloadClient": "Remover Do Cliente de Download",
"RemoveFromQueue": "Remover da fila",
"RemoveHelpTextWarning": "Isso removerá o download e o(s) arquivo(s) do cliente de download.",
"RemoveSelected": "Remover selecionado(s)",
"RemoveSelectedMessageText": "Tem certeza de que deseja remover os itens selecionados da lista de bloqueio?",
"RemoveTagExistingTag": "Tag existente",
"RemoveTagRemovingTag": "Removendo tag",
"RemovedFromTaskQueue": "Removido da fila de tarefas",
@@ -323,7 +322,7 @@
"Retention": "Retenção",
"RetentionHelpText": "Apenas Usenet: use 0 para definir para retenção ilimitada",
"RetryingDownloadInterp": "Tentando novamente o download {0} em {1}",
"RootFolder": "Pasta raiz",
"RootFolder": "Pasta Raiz",
"RootFolders": "Pastas raiz",
"RssSyncIntervalHelpText": "Intervalo em minutos. Defina como zero para desabilitar (isso interromperá todos os downloads automáticos de lançamentos)",
"SSLCertPassword": "Senha do certificado SSL",
@@ -424,7 +423,7 @@
"UnmonitoredHelpText": "Incluir livros não monitorados no feed do iCal",
"UpdateAll": "Atualizar tudo",
"UpdateAutomaticallyHelpText": "Baixar e instalar atualizações automaticamente. Você ainda poderá instalar a partir de Sistema: Atualizações",
"UpdateMechanismHelpText": "Usar o atualizador integrado do Readarr ou um script",
"UpdateMechanismHelpText": "Use o atualizador integrado do Readarr ou um script",
"UpdateScriptPathHelpText": "Caminho para um script personalizado que usa um pacote de atualização extraído e lida com o restante do processo de atualização",
"Updates": "Atualizações",
"UpgradeAllowedHelpText": "Se desabilitada, as qualidades não serão atualizadas",
@@ -694,9 +693,8 @@
"SeriesTotal": "Séries ({0})",
"TooManyBooks": "Livros ausentes ou muitos? Modifique ou crie um novo",
"BlocklistRelease": "Lista de Bloqueio de Lançamentos",
"NoHistoryBlocklist": "Sem histórico na lista de bloqueio",
"NoHistoryBlocklist": "Nenhum histórico na lista de bloqueio",
"Blocklist": "Lista de bloqueio",
"BlocklistHelpText": "Previne Readarr de automaticamente baixar esses arquivos novamente",
"RemoveFromBlocklist": "Remover da lista de bloqueio",
"UnableToLoadBlocklist": "Incapaz de carregar a lista de bloqueio",
"ReleaseBranchCheckOfficialBranchMessage": "Ramo {0} não é um ramo válido de lançamentos do Readarr, você não irá receber atualizações",
@@ -749,7 +747,7 @@
"OnRename": "Ao Renomear",
"OnUpgrade": "Ao Atualizar",
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na atualização",
"IndexerSearchCheckNoInteractiveMessage": "Nenhum indexador disponível com a Pesquisa interativa habilitada, o Readarr não fornecerá nenhum resultado de pesquisa interativa",
"IndexerSearchCheckNoInteractiveMessage": "Nenhum indexador disponível com a Pesquisa interativa habilitada, o Readarr não fornecerá nenhum resultado de pesquisa interativo",
"ConnectSettingsSummary": "Notificações, conexões com servidores/tocadores de mídia e scripts personalizados",
"DownloadClientStatusCheckAllClientMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
"DownloadClientsSettingsSummary": "Clientes de download, gerenciamento do download e mapeamento remoto de caminhos",
@@ -883,10 +881,10 @@
"CustomFormatScore": "Pontuação de formato personalizado",
"MinimumCustomFormatScore": "Pontuação mínima de formato personalizado",
"MinimumCustomFormatScoreHelpText": "Pontuação mínima de formato personalizado necessária para ignorar o atraso do protocolo preferido",
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos 20 caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {0} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
"DeleteFormat": "Excluir Formato",
"DataFutureBooks": "Monitorar livros que ainda não foram lançados",
"DeleteFormatMessageText": "Tem certeza de que deseja excluir a etiqueta de formato {0}?",
"DeleteFormatMessageText": "Tem certeza de que deseja excluir a etiqueta de formato {0} ?",
"IncludeCustomFormatWhenRenamingHelpText": "'Incluir em {Formatos Personalizados} formato de renomeação'",
"IndexerTagsHelpText": "Use este indexador apenas para autores com pelo menos uma etiqueta correspondente. Deixe em branco para usar com todos os autores.",
"MinFormatScoreHelpText": "Pontuação mínima de formato personalizado permitida para download",
@@ -911,14 +909,36 @@
"ImportListMissingRoot": "Pasta raiz ausente para lista(s) de importação: {0}",
"ImportListMultipleMissingRoots": "Várias pastas raiz estão ausentes para listas de importação: {0}",
"IndexerDownloadClientHelpText": "Especifique qual cliente de download é usado para capturas deste indexador",
"ListRefreshInterval": "Intervalo de Atualização da Lista",
"ListRefreshInterval": "Intervalo de atualização da lista",
"ListWillRefreshEveryInterp": "A lista será atualizada a cada {0}",
"ResetDefinitionTitlesHelpText": "Redefinir títulos de definição, bem como valores",
"ResetDefinitionTitlesHelpText": "Redefinir títulos da configuração, bem como valores",
"ResetDefinitions": "Redefinir Definições",
"ResetTitles": "Redefinir Títulos",
"UnableToLoadCustomFormats": "Não foi possível carregar formatos personalizados",
"HiddenClickToShow": "Oculto, clique para mostrar",
"HideAdvanced": "Ocultar avançado",
"ShowAdvanced": "Mostrar opções avançadas",
"ShownClickToHide": "Exibido, clique para ocultar"
"HideAdvanced": "Ocultar Avançado",
"ShowAdvanced": "Mostrar Avançado",
"ShownClickToHide": "Mostrado, clique para ocultar",
"ColonReplacement": "Substituição de Dois Pontos",
"DashOrSpaceDashDependingOnName": "Traço ou Traço e Espaço dependendo do nome",
"ReplaceWithDash": "Substituir por traço",
"ReplaceWithSpaceDash": "Substituir com Espaço e Traço",
"SmartReplace": "Substituição Inteligente",
"ReplaceWithSpaceDashSpace": "Substituir com Espaço e Traço e Espaço",
"DeleteRemotePathMapping": "Excluir Mapeamento de Caminho Remoto",
"BlocklistReleases": "Lista de Bloqueio de Lançamentos",
"CloneCondition": "Condição de Clone",
"DeleteConditionMessageText": "Tem certeza de que deseja excluir a condição '{0}'?",
"DeleteRemotePathMappingMessageText": "Tem certeza de que deseja excluir este mapeamento de caminho remoto?",
"DeleteCondition": "Excluir Condição",
"Negated": "Negado",
"RemoveSelectedItem": "Remover Item Selecionado",
"RemoveSelectedItemBlocklistMessageText": "Tem certeza de que deseja remover os itens selecionados da lista de bloqueio?",
"RemoveSelectedItems": "Remover Itens Selecionados",
"RemoveSelectedItemQueueMessageText": "Tem certeza de que deseja remover 1 item da fila?",
"RemoveSelectedItemsQueueMessageText": "Tem certeza de que deseja remover {0} itens da fila?",
"Required": "Requerido",
"ResetQualityDefinitions": "Redefinir Configurações de Qualidade",
"ResetQualityDefinitionsMessageText": "Tem certeza de que deseja redefinir as configurações de qualidade?",
"BlocklistReleaseHelpText": "Evita que o Readarr pegue automaticamente esses arquivos novamente"
}

View File

@@ -293,7 +293,6 @@
"RemoveFromQueue": "Eliminați din coadă",
"RemoveHelpTextWarning": "Eliminarea va elimina descărcarea și fișierele din clientul de descărcare.",
"RemoveSelected": "Șterge selecția",
"RemoveSelectedMessageText": "Sigur doriți să eliminați elementele selectate din lista neagră?",
"RemoveTagExistingTag": "Etichetă existentă",
"RemoveTagRemovingTag": "Se elimină eticheta",
"RemovedFromTaskQueue": "Eliminat din coada de activități",
@@ -579,5 +578,17 @@
"HiddenClickToShow": "Ascuns, faceți clic pentru a afișa",
"HideAdvanced": "Ascunde Avansat",
"ShowAdvanced": "Arată setări avansate",
"ShownClickToHide": "Afișat, faceți clic pentru a ascunde"
"ShownClickToHide": "Afișat, faceți clic pentru a ascunde",
"ReplaceWithDash": "Înlocuiți cu Dash",
"ReplaceWithSpaceDash": "Înlocuiți cu Space Dash",
"ColonReplacement": "Înlocuirea colonului",
"ReplaceWithSpaceDashSpace": "Înlocuiți cu Space Dash Space",
"BlocklistReleases": "Lansare pe lista neagră",
"DeleteConditionMessageText": "Sigur doriți să ștergeți eticheta „{0}”?",
"DeleteRemotePathMapping": "Editați maparea căilor la distanță",
"Negated": "Negat",
"Required": "Necesar",
"RemoveSelectedItemBlocklistMessageText": "Sigur doriți să eliminați elementele selectate din lista neagră?",
"RemoveSelectedItemQueueMessageText": "Sigur doriți să eliminați {0} elementul {1} din coadă?",
"RemoveSelectedItemsQueueMessageText": "Sigur doriți să eliminați {0} elementul {1} din coadă?"
}

View File

@@ -298,7 +298,6 @@
"RemoveFromQueue": "Удалить из очереди",
"RemoveHelpTextWarning": "Удаление приведет к удалению загрузки и файла(ов) из клиента загрузки.",
"RemoveSelected": "Удалить выбранное",
"RemoveSelectedMessageText": "Удалить выбранные элементы из черного списка?",
"RemoveTagExistingTag": "Существующий тэг",
"RemoveTagRemovingTag": "Удаление тега",
"RemovedFromTaskQueue": "Удалено из очереди задач",
@@ -474,7 +473,6 @@
"UnableToLoadBlocklist": "Не удалось загрузить черный список",
"Time": "Время",
"Blocklist": "Черный список",
"BlocklistHelpText": "Запрещает Radarr автоматически получать этот релиз повторно",
"BlocklistRelease": "Релиз из черного списка",
"Disabled": "Выключено",
"Duration": "Длительность",
@@ -633,5 +631,10 @@
"ShownClickToHide": "Показано, нажмите чтобы скрыть",
"HiddenClickToShow": "Скрыто, нажмите чтобы показать",
"HideAdvanced": "Скрыть расширенные",
"ShowAdvanced": "Показать расширенные"
"ShowAdvanced": "Показать расширенные",
"ColonReplacement": "Замена двоеточий",
"ReplaceWithDash": "Заменить на тире",
"ReplaceWithSpaceDash": "Заменить на пробел тире",
"ReplaceWithSpaceDashSpace": "Заменить на пробел тире пробел",
"ApiKeyValidationHealthCheckMessage": "Пожалуйста, обновите свой ключ API, чтобы он был длиной не менее {0} символов. Вы можете сделать это через настройки или файл конфигурации"
}

View File

@@ -92,7 +92,6 @@
"Indexers": "Indexery",
"MetadataProfiles": "profil metadát",
"RecyclingBin": "Kôš",
"RemoveSelectedMessageText": "Naozaj si prajete odstrániť označené položky z blocklistu?",
"Search": "Hľadať",
"UI": "UI",
"UpdateMechanismHelpText": "Použiť vstavaný Prowlarr aktualizátor alebo skript",
@@ -129,7 +128,6 @@
"RemotePathMappings": "Vzdialené mapovanie cesty",
"SettingsRemotePathMappingLocalPath": "Miestna cesta",
"Queue": "Fronta",
"BlocklistHelpText": "Zabráni Radarru, aby znova automaticky grabol toto vydanie",
"ClickToChangeReleaseGroup": "Kliknutím zmeníte skupinu vydania",
"ChooseImportMethod": "Zvoliť Import mód",
"CustomFormats": "Vlastný formát",

View File

@@ -301,7 +301,6 @@
"RemoveFromQueue": "Ta bort från kön",
"RemoveHelpTextWarning": "Om du tar bort tas nedladdningen och filen (filerna) bort från nedladdningsklienten.",
"RemoveSelected": "Radera markerade",
"RemoveSelectedMessageText": "Är du säker på att du vill ta bort de markerade objekten från blockeringslistan?",
"RemoveTagExistingTag": "Befintlig tagg",
"RemoveTagRemovingTag": "Ta bort taggen",
"RemovedFromTaskQueue": "Borttagen från uppgiftskön",
@@ -506,7 +505,6 @@
"ContinuingAllBooksDownloaded": "Fortsätter (Alla böcker nedladdade)",
"ContinuingMoreBooksAreExpected": "Fler böcker är väntade",
"NoHistoryBlocklist": "Ingen blocklista-historik",
"BlocklistHelpText": "Förhindra Readarr att automatiskt hämta denna utgåva igen",
"BlocklistRelease": "Svartlista Utgåva",
"DiscNumber": "Disk Nummer",
"LatestBook": "Senaste Bok",
@@ -819,5 +817,9 @@
"HiddenClickToShow": "Dold, klicka för att visa",
"HideAdvanced": "Dölj avancerat",
"ShownClickToHide": "Visad, klicka för att dölja",
"ShowAdvanced": "Visa avancerat"
"ShowAdvanced": "Visa avancerat",
"ColonReplacement": "Kolonbyte",
"ReplaceWithDash": "Ersätt med bindestreck",
"ReplaceWithSpaceDash": "Byt ut med Space Dash",
"ReplaceWithSpaceDashSpace": "Byt ut med Space Dash Space"
}

View File

@@ -293,7 +293,6 @@
"RemoveFromQueue": "ลบออกจากคิว",
"RemoveHelpTextWarning": "การลบจะลบการดาวน์โหลดและไฟล์ออกจากไคลเอนต์ดาวน์โหลด",
"RemoveSelected": "ลบรายการที่เลือก",
"RemoveSelectedMessageText": "แน่ใจหรือไม่ว่าต้องการลบรายการที่เลือกออกจากบัญชีดำ?",
"RemoveTagExistingTag": "แท็กที่มีอยู่",
"RemoveTagRemovingTag": "กำลังลบแท็ก",
"RemovedFromTaskQueue": "ลบออกจากคิวงาน",
@@ -578,5 +577,9 @@
"ShowAdvanced": "แสดงขั้นสูง",
"HiddenClickToShow": "ซ่อนอยู่คลิกเพื่อแสดง",
"HideAdvanced": "ซ่อนขั้นสูง",
"ShownClickToHide": "แสดงคลิกเพื่อซ่อน"
"ShownClickToHide": "แสดงคลิกเพื่อซ่อน",
"ColonReplacement": "การเปลี่ยนลำไส้ใหญ่",
"ReplaceWithDash": "แทนที่ด้วย Dash",
"ReplaceWithSpaceDash": "แทนที่ด้วย Space Dash",
"ReplaceWithSpaceDashSpace": "แทนที่ด้วย Space Dash Space"
}

View File

@@ -293,7 +293,6 @@
"RemoveFromQueue": "Sıradan kaldır",
"RemoveHelpTextWarning": "Kaldırma, indirmeyi ve dosyaları indirme istemcisinden kaldırır.",
"RemoveSelected": "Seçilenleri Kaldır",
"RemoveSelectedMessageText": "Kara listeden seçili öğeleri kaldırmak istediğinizden emin misiniz?",
"RemoveTagExistingTag": "Mevcut etiket",
"RemoveTagRemovingTag": "Etiket kaldırılıyor",
"RemovedFromTaskQueue": "Görev kuyruğundan kaldırıldı",
@@ -473,7 +472,6 @@
"UnableToLoadBlocklist": "Kara liste yüklenemiyor",
"Wanted": "İstenenler",
"Blocklist": "Kara liste",
"BlocklistHelpText": "Radarr'ın bu sürümü otomatik olarak tekrar yakalamasını engeller",
"BlocklistRelease": "Kara Liste Yayını",
"AppDataLocationHealthCheckMessage": "Güncellemede AppData'nın silinmesini önlemek için güncelleme mümkün olmayacak",
"Filters": "Filtre",
@@ -579,5 +577,18 @@
"HiddenClickToShow": "Gizli, göstermek için tıklayın",
"HideAdvanced": "Gelişmiş'i Gizle",
"ShowAdvanced": "Gelişmiş'i Göster",
"ShownClickToHide": "Gösterildi, gizlemek için tıklayın"
"ShownClickToHide": "Gösterildi, gizlemek için tıklayın",
"ColonReplacement": "Kolon Değiştirme",
"ReplaceWithDash": "Dash ile değiştir",
"ReplaceWithSpaceDash": "Space Dash ile değiştirin",
"ReplaceWithSpaceDashSpace": "Space Dash Space ile değiştirin",
"DeleteRemotePathMapping": "Uzak Yol Eşlemeyi Düzenle",
"DeleteRemotePathMappingMessageText": "Bu uzak yol eşlemesini silmek istediğinizden emin misiniz?",
"BlocklistReleases": "Kara Liste Yayını",
"DeleteConditionMessageText": "'{0}' etiketini silmek istediğinizden emin misiniz?",
"Negated": "Reddedildi",
"RemoveSelectedItemBlocklistMessageText": "Kara listeden seçili öğeleri kaldırmak istediğinizden emin misiniz?",
"RemoveSelectedItemQueueMessageText": "Sıradan {0} öğeyi {1} kaldırmak istediğinizden emin misiniz?",
"RemoveSelectedItemsQueueMessageText": "Sıradan {0} öğeyi {1} kaldırmak istediğinizden emin misiniz?",
"Required": "gereklidir"
}

View File

@@ -82,7 +82,6 @@
"CouldntFindAnyResultsForTerm": "Не вдалося знайти жодних результатів для '{0}'",
"CreateEmptyAuthorFolders": "Створіть порожні папки для фільмів",
"IsCutoffCutoff": "Припинення",
"RemoveSelectedMessageText": "Ви впевнені, що хочете видалити вибрані елементи зі списку блокування?",
"ShowQualityProfile": "Додати профіль якості",
"AlternateTitles": "Альтернативна назва",
"AnalyticsEnabledHelpText": "Надсилайте анонімну інформацію про використання та помилки на сервери Radarr. Це включає інформацію про ваш веб-переглядач, які сторінки Radarr WebUI ви використовуєте, звіти про помилки, а також версію ОС і часу виконання. Ми будемо використовувати цю інформацію, щоб визначити пріоритети функцій і виправлення помилок.",
@@ -93,7 +92,6 @@
"AuthorClickToChangeBook": "Натисніть, щоб змінити фільм",
"AutoUnmonitorPreviouslyDownloadedBooksHelpText": "Фільми, видалені з диска, автоматично не відстежуються в Radarr",
"BackupFolderHelpText": "Відносні шляхи будуть у каталозі AppData Radarr",
"BlocklistHelpText": "Забороняє Radarr знову автоматично захопити цей випуск",
"UsingExternalUpdateMechanismBranchUsedByExternalUpdateMechanism": "Гілка, що використовується зовнішнім механізмом оновлення",
"AddList": "Додати список",
"ShowDateAdded": "Показати дату додавання",
@@ -616,5 +614,9 @@
"HiddenClickToShow": "Приховано, натисніть, щоб показати",
"HideAdvanced": "Сховати додаткові",
"ShowAdvanced": "Показати Додатково",
"ShownClickToHide": "Показано, натисніть, щоб приховати"
"ShownClickToHide": "Показано, натисніть, щоб приховати",
"ColonReplacement": "Заміна двокрапок",
"ReplaceWithDash": "Замінити тире",
"ReplaceWithSpaceDash": "Замінити пробілом",
"ReplaceWithSpaceDashSpace": "Замінити на Пробіл Тире Пробіл"
}

View File

@@ -292,7 +292,6 @@
"RemoveFromQueue": "Xóa khỏi hàng đợi",
"RemoveHelpTextWarning": "Việc xóa sẽ xóa phần tải xuống và (các) tệp khỏi ứng dụng khách tải xuống.",
"RemoveSelected": "Bỏ đã chọn",
"RemoveSelectedMessageText": "Bạn có chắc chắn muốn xóa các mục đã chọn khỏi danh sách đen không?",
"RemoveTagExistingTag": "Thẻ hiện có",
"RemoveTagRemovingTag": "Xóa thẻ",
"RemovedFromTaskQueue": "Đã xóa khỏi hàng đợi tác vụ",
@@ -578,5 +577,9 @@
"HiddenClickToShow": "Ẩn, bấm để hiển thị",
"HideAdvanced": "Ẩn nâng cao",
"ShowAdvanced": "Hiển thị nâng cao",
"ShownClickToHide": "Hiển thị, nhấp để ẩn"
"ShownClickToHide": "Hiển thị, nhấp để ẩn",
"ColonReplacement": "Thay thế ruột kết",
"ReplaceWithDash": "Thay thế bằng Dấu gạch ngang",
"ReplaceWithSpaceDash": "Thay thế bằng Dấu gạch ngang",
"ReplaceWithSpaceDashSpace": "Thay thế bằng Space Dash Space"
}

View File

@@ -278,7 +278,6 @@
"RemoveFromQueue": "从队列中移除",
"RemoveHelpTextWarning": "移除操作会从下载客户端中删除任务和已下载文件。",
"RemoveSelected": "移除已选",
"RemoveSelectedMessageText": "您确定要从黑名单中删除选择项吗?",
"RemoveTagExistingTag": "已有标签",
"RemoveTagRemovingTag": "移除标签",
"RemovedFromTaskQueue": "从任务队列中移除",
@@ -486,7 +485,6 @@
"Level": "等级",
"RemoveFromBlocklist": "从黑名单中移除",
"Blocklist": "阻止列表",
"BlocklistHelpText": "防止Radarr再次自动抓取此版本",
"BlocklistRelease": "黑名单版本",
"AllowFingerprinting": "允许指纹识别",
"AllExpandedCollapseAll": "收缩所有",

View File

@@ -189,6 +189,8 @@ namespace Readarr.Api.V1.Queue
return q => q.Book?.ReleaseDate ?? DateTime.MinValue;
case "quality":
return q => q.Quality;
case "size":
return q => q.Size;
case "progress":
// Avoid exploding if a download's size is 0
return q => 100 - (q.Sizeleft / Math.Max(q.Size * 100, 1));

View File

@@ -10926,6 +10926,10 @@
"type": "string",
"nullable": true
},
"helpTextWarning": {
"type": "string",
"nullable": true
},
"helpLink": {
"type": "string",
"nullable": true

View File

@@ -9,6 +9,7 @@ namespace Readarr.Http.ClientSchema
public string Label { get; set; }
public string Unit { get; set; }
public string HelpText { get; set; }
public string HelpTextWarning { get; set; }
public string HelpLink { get; set; }
public object Value { get; set; }
public string Type { get; set; }

View File

@@ -98,6 +98,7 @@ namespace Readarr.Http.ClientSchema
Label = fieldAttribute.Label,
Unit = fieldAttribute.Unit,
HelpText = fieldAttribute.HelpText,
HelpTextWarning = fieldAttribute.HelpTextWarning,
HelpLink = fieldAttribute.HelpLink,
Order = fieldAttribute.Order,
Advanced = fieldAttribute.Advanced,