mirror of
https://github.com/lidarr/lidarr.git
synced 2025-07-31 04:00:18 -07:00
Fix typo in SkipRedownload
This commit is contained in:
parent
63f9196370
commit
6ecab2d84b
10 changed files with 64 additions and 62 deletions
|
@ -45,14 +45,14 @@ class QueueRow extends Component {
|
||||||
this.setState({ isRemoveQueueItemModalOpen: true });
|
this.setState({ isRemoveQueueItemModalOpen: true });
|
||||||
};
|
};
|
||||||
|
|
||||||
onRemoveQueueItemModalConfirmed = (blocklist, skipredownload) => {
|
onRemoveQueueItemModalConfirmed = (blocklist, skipRedownload) => {
|
||||||
const {
|
const {
|
||||||
onRemoveQueueItemPress,
|
onRemoveQueueItemPress,
|
||||||
onQueueRowModalOpenOrClose
|
onQueueRowModalOpenOrClose
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
onQueueRowModalOpenOrClose(false);
|
onQueueRowModalOpenOrClose(false);
|
||||||
onRemoveQueueItemPress(blocklist, skipredownload);
|
onRemoveQueueItemPress(blocklist, skipRedownload);
|
||||||
|
|
||||||
this.setState({ isRemoveQueueItemModalOpen: false });
|
this.setState({ isRemoveQueueItemModalOpen: false });
|
||||||
};
|
};
|
||||||
|
|
|
@ -21,9 +21,9 @@ class RemoveQueueItemModal extends Component {
|
||||||
super(props, context);
|
super(props, context);
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
remove: true,
|
removeFromClient: true,
|
||||||
blocklist: false,
|
blocklist: false,
|
||||||
skipredownload: false
|
skipRedownload: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -32,25 +32,25 @@ class RemoveQueueItemModal extends Component {
|
||||||
|
|
||||||
resetState = function() {
|
resetState = function() {
|
||||||
this.setState({
|
this.setState({
|
||||||
remove: true,
|
removeFromClient: true,
|
||||||
blocklist: false,
|
blocklist: false,
|
||||||
skipredownload: false
|
skipRedownload: false
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onRemoveChange = ({ value }) => {
|
onRemoveFromClientChange = ({ value }) => {
|
||||||
this.setState({ remove: value });
|
this.setState({ removeFromClient: value });
|
||||||
};
|
};
|
||||||
|
|
||||||
onBlocklistChange = ({ value }) => {
|
onBlocklistChange = ({ value }) => {
|
||||||
this.setState({ blocklist: value });
|
this.setState({ blocklist: value });
|
||||||
};
|
};
|
||||||
|
|
||||||
onSkipReDownloadChange = ({ value }) => {
|
onSkipRedownloadChange = ({ value }) => {
|
||||||
this.setState({ skipredownload: value });
|
this.setState({ skipRedownload: value });
|
||||||
};
|
};
|
||||||
|
|
||||||
onRemoveConfirmed = () => {
|
onRemoveConfirmed = () => {
|
||||||
|
@ -75,7 +75,7 @@ class RemoveQueueItemModal extends Component {
|
||||||
canIgnore
|
canIgnore
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const { remove, blocklist, skipredownload } = this.state;
|
const { removeFromClient, blocklist, skipRedownload } = this.state;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
|
@ -102,11 +102,11 @@ class RemoveQueueItemModal extends Component {
|
||||||
|
|
||||||
<FormInputGroup
|
<FormInputGroup
|
||||||
type={inputTypes.CHECK}
|
type={inputTypes.CHECK}
|
||||||
name="remove"
|
name="removeFromClient"
|
||||||
value={remove}
|
value={removeFromClient}
|
||||||
helpTextWarning={translate('RemoveHelpTextWarning')}
|
helpTextWarning={translate('RemoveFromDownloadClientHelpTextWarning')}
|
||||||
isDisabled={!canIgnore}
|
isDisabled={!canIgnore}
|
||||||
onChange={this.onRemoveChange}
|
onChange={this.onRemoveFromClientChange}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
|
@ -132,10 +132,10 @@ class RemoveQueueItemModal extends Component {
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormInputGroup
|
<FormInputGroup
|
||||||
type={inputTypes.CHECK}
|
type={inputTypes.CHECK}
|
||||||
name="skipredownload"
|
name="skipRedownload"
|
||||||
value={skipredownload}
|
value={skipRedownload}
|
||||||
helpText={translate('SkipredownloadHelpText')}
|
helpText={translate('SkipRedownloadHelpText')}
|
||||||
onChange={this.onSkipReDownloadChange}
|
onChange={this.onSkipRedownloadChange}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,9 +22,9 @@ class RemoveQueueItemsModal extends Component {
|
||||||
super(props, context);
|
super(props, context);
|
||||||
|
|
||||||
this.state = {
|
this.state = {
|
||||||
remove: true,
|
removeFromClient: true,
|
||||||
blocklist: false,
|
blocklist: false,
|
||||||
skipredownload: false
|
skipRedownload: false
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,25 +33,25 @@ class RemoveQueueItemsModal extends Component {
|
||||||
|
|
||||||
resetState = function() {
|
resetState = function() {
|
||||||
this.setState({
|
this.setState({
|
||||||
remove: true,
|
removeFromClient: true,
|
||||||
blocklist: false,
|
blocklist: false,
|
||||||
skipredownload: false
|
skipRedownload: false
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
//
|
//
|
||||||
// Listeners
|
// Listeners
|
||||||
|
|
||||||
onRemoveChange = ({ value }) => {
|
onRemoveFromClientChange = ({ value }) => {
|
||||||
this.setState({ remove: value });
|
this.setState({ removeFromClient: value });
|
||||||
};
|
};
|
||||||
|
|
||||||
onBlocklistChange = ({ value }) => {
|
onBlocklistChange = ({ value }) => {
|
||||||
this.setState({ blocklist: value });
|
this.setState({ blocklist: value });
|
||||||
};
|
};
|
||||||
|
|
||||||
onSkipReDownloadChange = ({ value }) => {
|
onSkipRedownloadChange = ({ value }) => {
|
||||||
this.setState({ skipredownload: value });
|
this.setState({ skipRedownload: value });
|
||||||
};
|
};
|
||||||
|
|
||||||
onRemoveConfirmed = () => {
|
onRemoveConfirmed = () => {
|
||||||
|
@ -76,7 +76,7 @@ class RemoveQueueItemsModal extends Component {
|
||||||
canIgnore
|
canIgnore
|
||||||
} = this.props;
|
} = this.props;
|
||||||
|
|
||||||
const { remove, blocklist, skipredownload } = this.state;
|
const { removeFromClient, blocklist, skipRedownload } = this.state;
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
|
@ -93,7 +93,7 @@ class RemoveQueueItemsModal extends Component {
|
||||||
|
|
||||||
<ModalBody>
|
<ModalBody>
|
||||||
<div className={styles.message}>
|
<div className={styles.message}>
|
||||||
{selectedCount > 1 ? translate('RemoveSelectedItemsQueueMessageText', selectedCount) : translate('RemoveSelectedItemQueueMessageText')}
|
{selectedCount > 1 ? translate('RemoveSelectedItemsQueueMessageText', [selectedCount]) : translate('RemoveSelectedItemQueueMessageText')}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<FormGroup>
|
<FormGroup>
|
||||||
|
@ -103,11 +103,11 @@ class RemoveQueueItemsModal extends Component {
|
||||||
|
|
||||||
<FormInputGroup
|
<FormInputGroup
|
||||||
type={inputTypes.CHECK}
|
type={inputTypes.CHECK}
|
||||||
name="remove"
|
name="removeFromClient"
|
||||||
value={remove}
|
value={removeFromClient}
|
||||||
helpTextWarning={translate('RemoveHelpTextWarning')}
|
helpTextWarning={translate('RemoveFromDownloadClientHelpTextWarning')}
|
||||||
isDisabled={!canIgnore}
|
isDisabled={!canIgnore}
|
||||||
onChange={this.onRemoveChange}
|
onChange={this.onRemoveFromClientChange}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
|
|
||||||
|
@ -133,10 +133,10 @@ class RemoveQueueItemsModal extends Component {
|
||||||
</FormLabel>
|
</FormLabel>
|
||||||
<FormInputGroup
|
<FormInputGroup
|
||||||
type={inputTypes.CHECK}
|
type={inputTypes.CHECK}
|
||||||
name="skipredownload"
|
name="skipRedownload"
|
||||||
value={skipredownload}
|
value={skipRedownload}
|
||||||
helpText={translate('SkipredownloadHelpText')}
|
helpText={translate('SkipRedownloadHelpText')}
|
||||||
onChange={this.onSkipReDownloadChange}
|
onChange={this.onSkipRedownloadChange}
|
||||||
/>
|
/>
|
||||||
</FormGroup>
|
</FormGroup>
|
||||||
}
|
}
|
||||||
|
|
|
@ -369,15 +369,15 @@ export const actionHandlers = handleThunks({
|
||||||
[REMOVE_QUEUE_ITEM]: function(getState, payload, dispatch) {
|
[REMOVE_QUEUE_ITEM]: function(getState, payload, dispatch) {
|
||||||
const {
|
const {
|
||||||
id,
|
id,
|
||||||
remove,
|
removeFromClient,
|
||||||
blocklist,
|
blocklist,
|
||||||
skipredownload
|
skipRedownload
|
||||||
} = payload;
|
} = payload;
|
||||||
|
|
||||||
dispatch(updateItem({ section: paged, id, isRemoving: true }));
|
dispatch(updateItem({ section: paged, id, isRemoving: true }));
|
||||||
|
|
||||||
const promise = createAjaxRequest({
|
const promise = createAjaxRequest({
|
||||||
url: `/queue/${id}?removeFromClient=${remove}&blocklist=${blocklist}&skipredownload=${skipredownload}`,
|
url: `/queue/${id}?removeFromClient=${removeFromClient}&blocklist=${blocklist}&skipRedownload=${skipRedownload}`,
|
||||||
method: 'DELETE'
|
method: 'DELETE'
|
||||||
}).request;
|
}).request;
|
||||||
|
|
||||||
|
@ -393,9 +393,9 @@ export const actionHandlers = handleThunks({
|
||||||
[REMOVE_QUEUE_ITEMS]: function(getState, payload, dispatch) {
|
[REMOVE_QUEUE_ITEMS]: function(getState, payload, dispatch) {
|
||||||
const {
|
const {
|
||||||
ids,
|
ids,
|
||||||
remove,
|
removeFromClient,
|
||||||
blocklist,
|
blocklist,
|
||||||
skipredownload
|
skipRedownload
|
||||||
} = payload;
|
} = payload;
|
||||||
|
|
||||||
dispatch(batchActions([
|
dispatch(batchActions([
|
||||||
|
@ -411,7 +411,7 @@ export const actionHandlers = handleThunks({
|
||||||
]));
|
]));
|
||||||
|
|
||||||
const promise = createAjaxRequest({
|
const promise = createAjaxRequest({
|
||||||
url: `/queue/bulk?removeFromClient=${remove}&blocklist=${blocklist}&skipredownload=${skipredownload}`,
|
url: `/queue/bulk?removeFromClient=${removeFromClient}&blocklist=${blocklist}&skipRedownload=${skipRedownload}`,
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
dataType: 'json',
|
dataType: 'json',
|
||||||
contentType: 'application/json',
|
contentType: 'application/json',
|
||||||
|
|
|
@ -60,9 +60,9 @@ namespace Lidarr.Api.V1.Queue
|
||||||
}
|
}
|
||||||
|
|
||||||
[RestDeleteById]
|
[RestDeleteById]
|
||||||
public void RemoveAction(int id, bool removeFromClient = true, bool blocklist = false, bool skipReDownload = false)
|
public void RemoveAction(int id, bool removeFromClient = true, bool blocklist = false, bool skipRedownload = false)
|
||||||
{
|
{
|
||||||
var trackedDownload = Remove(id, removeFromClient, blocklist, skipReDownload);
|
var trackedDownload = Remove(id, removeFromClient, blocklist, skipRedownload);
|
||||||
|
|
||||||
if (trackedDownload != null)
|
if (trackedDownload != null)
|
||||||
{
|
{
|
||||||
|
@ -71,13 +71,13 @@ namespace Lidarr.Api.V1.Queue
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpDelete("bulk")]
|
[HttpDelete("bulk")]
|
||||||
public object RemoveMany([FromBody] QueueBulkResource resource, [FromQuery] bool removeFromClient = true, [FromQuery] bool blocklist = false, [FromQuery] bool skipReDownload = false)
|
public object RemoveMany([FromBody] QueueBulkResource resource, [FromQuery] bool removeFromClient = true, [FromQuery] bool blocklist = false, [FromQuery] bool skipRedownload = false)
|
||||||
{
|
{
|
||||||
var trackedDownloadIds = new List<string>();
|
var trackedDownloadIds = new List<string>();
|
||||||
|
|
||||||
foreach (var id in resource.Ids)
|
foreach (var id in resource.Ids)
|
||||||
{
|
{
|
||||||
var trackedDownload = Remove(id, removeFromClient, blocklist, skipReDownload);
|
var trackedDownload = Remove(id, removeFromClient, blocklist, skipRedownload);
|
||||||
|
|
||||||
if (trackedDownload != null)
|
if (trackedDownload != null)
|
||||||
{
|
{
|
||||||
|
@ -195,7 +195,7 @@ namespace Lidarr.Api.V1.Queue
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private TrackedDownload Remove(int id, bool removeFromClient, bool blocklist, bool skipReDownload)
|
private TrackedDownload Remove(int id, bool removeFromClient, bool blocklist, bool skipRedownload)
|
||||||
{
|
{
|
||||||
var pendingRelease = _pendingReleaseService.FindPendingQueueItem(id);
|
var pendingRelease = _pendingReleaseService.FindPendingQueueItem(id);
|
||||||
|
|
||||||
|
@ -227,7 +227,7 @@ namespace Lidarr.Api.V1.Queue
|
||||||
|
|
||||||
if (blocklist)
|
if (blocklist)
|
||||||
{
|
{
|
||||||
_failedDownloadService.MarkAsFailed(trackedDownload.DownloadItem.DownloadId, skipReDownload);
|
_failedDownloadService.MarkAsFailed(trackedDownload.DownloadItem.DownloadId, skipRedownload);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!removeFromClient && !blocklist)
|
if (!removeFromClient && !blocklist)
|
||||||
|
|
|
@ -33,7 +33,7 @@ namespace NzbDrone.Core.Test.Download
|
||||||
{
|
{
|
||||||
ArtistId = 1,
|
ArtistId = 1,
|
||||||
AlbumIds = new List<int> { 1 },
|
AlbumIds = new List<int> { 1 },
|
||||||
SkipReDownload = true
|
SkipRedownload = true
|
||||||
};
|
};
|
||||||
|
|
||||||
Subject.Handle(failedEvent);
|
Subject.Handle(failedEvent);
|
||||||
|
|
|
@ -21,6 +21,6 @@ namespace NzbDrone.Core.Download
|
||||||
public string Message { get; set; }
|
public string Message { get; set; }
|
||||||
public Dictionary<string, string> Data { get; set; }
|
public Dictionary<string, string> Data { get; set; }
|
||||||
public TrackedDownload TrackedDownload { get; set; }
|
public TrackedDownload TrackedDownload { get; set; }
|
||||||
public bool SkipReDownload { get; set; }
|
public bool SkipRedownload { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -9,8 +9,8 @@ namespace NzbDrone.Core.Download
|
||||||
{
|
{
|
||||||
public interface IFailedDownloadService
|
public interface IFailedDownloadService
|
||||||
{
|
{
|
||||||
void MarkAsFailed(int historyId, bool skipReDownload = false);
|
void MarkAsFailed(int historyId, bool skipRedownload = false);
|
||||||
void MarkAsFailed(string downloadId, bool skipReDownload = false);
|
void MarkAsFailed(string downloadId, bool skipRedownload = false);
|
||||||
void Check(TrackedDownload trackedDownload);
|
void Check(TrackedDownload trackedDownload);
|
||||||
void ProcessFailed(TrackedDownload trackedDownload);
|
void ProcessFailed(TrackedDownload trackedDownload);
|
||||||
}
|
}
|
||||||
|
@ -30,14 +30,14 @@ namespace NzbDrone.Core.Download
|
||||||
_eventAggregator = eventAggregator;
|
_eventAggregator = eventAggregator;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MarkAsFailed(int historyId, bool skipReDownload = false)
|
public void MarkAsFailed(int historyId, bool skipRedownload = false)
|
||||||
{
|
{
|
||||||
var history = _historyService.Get(historyId);
|
var history = _historyService.Get(historyId);
|
||||||
|
|
||||||
var downloadId = history.DownloadId;
|
var downloadId = history.DownloadId;
|
||||||
if (downloadId.IsNullOrWhiteSpace())
|
if (downloadId.IsNullOrWhiteSpace())
|
||||||
{
|
{
|
||||||
PublishDownloadFailedEvent(new List<EntityHistory> { history }, "Manually marked as failed", skipReDownload: skipReDownload);
|
PublishDownloadFailedEvent(new List<EntityHistory> { history }, "Manually marked as failed", skipRedownload: skipRedownload);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -46,7 +46,7 @@ namespace NzbDrone.Core.Download
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void MarkAsFailed(string downloadId, bool skipReDownload = false)
|
public void MarkAsFailed(string downloadId, bool skipRedownload = false)
|
||||||
{
|
{
|
||||||
var history = _historyService.Find(downloadId, EntityHistoryEventType.Grabbed);
|
var history = _historyService.Find(downloadId, EntityHistoryEventType.Grabbed);
|
||||||
|
|
||||||
|
@ -54,7 +54,7 @@ namespace NzbDrone.Core.Download
|
||||||
{
|
{
|
||||||
var trackedDownload = _trackedDownloadService.Find(downloadId);
|
var trackedDownload = _trackedDownloadService.Find(downloadId);
|
||||||
|
|
||||||
PublishDownloadFailedEvent(history, "Manually marked as failed", trackedDownload, skipReDownload);
|
PublishDownloadFailedEvent(history, "Manually marked as failed", trackedDownload, skipRedownload);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -114,7 +114,7 @@ namespace NzbDrone.Core.Download
|
||||||
PublishDownloadFailedEvent(grabbedItems, failure, trackedDownload);
|
PublishDownloadFailedEvent(grabbedItems, failure, trackedDownload);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void PublishDownloadFailedEvent(List<EntityHistory> historyItems, string message, TrackedDownload trackedDownload = null, bool skipReDownload = false)
|
private void PublishDownloadFailedEvent(List<EntityHistory> historyItems, string message, TrackedDownload trackedDownload = null, bool skipRedownload = false)
|
||||||
{
|
{
|
||||||
var historyItem = historyItems.First();
|
var historyItem = historyItems.First();
|
||||||
|
|
||||||
|
@ -129,7 +129,7 @@ namespace NzbDrone.Core.Download
|
||||||
Message = message,
|
Message = message,
|
||||||
Data = historyItem.Data,
|
Data = historyItem.Data,
|
||||||
TrackedDownload = trackedDownload,
|
TrackedDownload = trackedDownload,
|
||||||
SkipReDownload = skipReDownload
|
SkipRedownload = skipRedownload
|
||||||
};
|
};
|
||||||
|
|
||||||
_eventAggregator.PublishEvent(downloadFailedEvent);
|
_eventAggregator.PublishEvent(downloadFailedEvent);
|
||||||
|
|
|
@ -29,7 +29,7 @@ namespace NzbDrone.Core.Download
|
||||||
[EventHandleOrder(EventHandleOrder.Last)]
|
[EventHandleOrder(EventHandleOrder.Last)]
|
||||||
public void Handle(DownloadFailedEvent message)
|
public void Handle(DownloadFailedEvent message)
|
||||||
{
|
{
|
||||||
if (message.SkipReDownload)
|
if (message.SkipRedownload)
|
||||||
{
|
{
|
||||||
_logger.Debug("Skip redownloading requested by user");
|
_logger.Debug("Skip redownloading requested by user");
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -743,12 +743,14 @@
|
||||||
"RemoveFilter": "Remove filter",
|
"RemoveFilter": "Remove filter",
|
||||||
"RemoveFromBlocklist": "Remove from blocklist",
|
"RemoveFromBlocklist": "Remove from blocklist",
|
||||||
"RemoveFromDownloadClient": "Remove From Download Client",
|
"RemoveFromDownloadClient": "Remove From Download Client",
|
||||||
|
"RemoveFromDownloadClientHelpTextWarning": "Removing will remove the download and the file(s) from the download client.",
|
||||||
"RemoveFromQueue": "Remove from queue",
|
"RemoveFromQueue": "Remove from queue",
|
||||||
"RemoveHelpTextWarning": "Removing will remove the download and the file(s) from the download client.",
|
|
||||||
"RemoveSelected": "Remove Selected",
|
"RemoveSelected": "Remove Selected",
|
||||||
"RemoveSelectedItem": "Remove Selected Item",
|
"RemoveSelectedItem": "Remove Selected Item",
|
||||||
"RemoveSelectedItemBlocklistMessageText": "Are you sure you want to remove the selected items from the blocklist?",
|
"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",
|
"RemoveSelectedItems": "Remove Selected Items",
|
||||||
|
"RemoveSelectedItemsQueueMessageText": "Are you sure you want to remove {0} items from the queue?",
|
||||||
"RemoveTagExistingTag": "Existing tag",
|
"RemoveTagExistingTag": "Existing tag",
|
||||||
"RemoveTagRemovingTag": "Removing tag",
|
"RemoveTagRemovingTag": "Removing tag",
|
||||||
"RemovedFromTaskQueue": "Removed from task queue",
|
"RemovedFromTaskQueue": "Removed from task queue",
|
||||||
|
@ -876,7 +878,7 @@
|
||||||
"SkipFreeSpaceCheck": "Skip Free Space Check",
|
"SkipFreeSpaceCheck": "Skip Free Space Check",
|
||||||
"SkipFreeSpaceCheckWhenImportingHelpText": "Use when Lidarr is unable to detect free space from your artist root folder",
|
"SkipFreeSpaceCheckWhenImportingHelpText": "Use when Lidarr is unable to detect free space from your artist root folder",
|
||||||
"SkipRedownload": "Skip Redownload",
|
"SkipRedownload": "Skip Redownload",
|
||||||
"SkipredownloadHelpText": "Prevents Lidarr from trying download alternative releases for the removed items",
|
"SkipRedownloadHelpText": "Prevents Lidarr from trying download alternative releases for the removed items",
|
||||||
"SmartReplace": "Smart Replace",
|
"SmartReplace": "Smart Replace",
|
||||||
"SomeResultsFiltered": "Some results are hidden by the applied filter",
|
"SomeResultsFiltered": "Some results are hidden by the applied filter",
|
||||||
"SorryThatAlbumCannotBeFound": "Sorry, that album cannot be found.",
|
"SorryThatAlbumCannotBeFound": "Sorry, that album cannot be found.",
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue