1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2026-04-17 21:26:13 -04:00

Compare commits

...

20 Commits

Author SHA1 Message Date
kephasdev
2ac139ab4d Fixed: Augmenting languages for releases with MULTI and other languages
(cherry picked from commit d58135bf1754b6185eef19a2f4069b27a918d01e)
2025-01-17 19:58:22 -08:00
Bogdan
c69db1ff92 New: Parsing titles with AKA separating multiple titles
Closes #7576
2025-01-17 19:57:52 -08:00
Bogdan
6dae2f0d84 Fixed: Images after series are updated via Series Editor 2025-01-17 19:57:13 -08:00
Bogdan
87934c7761 Fix typo in logging for custom format score 2025-01-17 19:55:57 -08:00
Bogdan
fe8478f42a Fix translation key for RSS in History Details 2025-01-17 19:55:57 -08:00
jcassette
a840bb5423 New: reflink support for ZFS 2025-01-17 19:55:37 -08:00
Weblate
8f5d628c55 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Florian Savouré <florian.savoure@gmail.com>
Co-authored-by: Georgi Panov <darkfella91@gmail.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Lizandra Candido da Silva <lizandra.c.s@gmail.com>
Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: keysuck <joshkkim@gmail.com>
Co-authored-by: warkurre86 <tom.novo.86@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/tr/
Translation: Servarr/Sonarr
2025-01-17 19:55:19 -08:00
Mark McDowall
acebe87dba New: Parse releases with year and season number in brackets
Closes #7559
2025-01-10 17:06:40 -08:00
Mark McDowall
7d77500667 Fixed: Series being unmonitored when still in Import List
Closes #7555
2025-01-10 17:06:33 -08:00
Stevie Robinson
ec73a13396 Update translation widget 2025-01-10 17:06:19 -08:00
Stevie Robinson
fa0f77659c Additional logging for delay profile decisions
Closes #7558
2025-01-10 17:06:05 -08:00
Stevie Robinson
1609f0c964 New: Show release source in history grab popup 2025-01-10 17:05:46 -08:00
Bogdan
1fea0b3d10 Remote image links for Discord's manual interaction needed 2025-01-10 17:05:32 -08:00
Stevie Robinson
3c8268c428 Additional logging for custom format score 2025-01-10 17:05:23 -08:00
Mark McDowall
c589c4f85e Fixed: Tooltips for detailed error messages 2025-01-10 17:05:05 -08:00
Weblate
f843107c25 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: CaveMan474 <Caveman_TheLastOne@proton.me>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Lars <lars.erik.heloe@gmail.com>
Co-authored-by: Mickaël O <mickael.ouillon@ac-bordeaux.fr>
Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: RabSsS01 <royermatthieu78@gmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: mryx007 <mryx@mail.de>
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/nb_NO/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/tr/
Translation: Servarr/Sonarr
2025-01-10 17:04:56 -08:00
Stevie Robinson
035c474f10 Fixed: Listening on all IPv4 Addresses
Closes #7526
2025-01-04 17:58:24 -08:00
Stevie Robinson
4dcc015fb1 Fixed: qBittorrent Ratio Limit Check
Closes #7527
2025-01-04 17:56:49 -08:00
Mark McDowall
1969e0107f Bump version to 4.0.12 2025-01-04 17:17:20 -08:00
Weblate
ac7c05c050 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Ano10 <Ano10@users.noreply.translate.servarr.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Matti Meikäläinen <diefor-93@hotmail.com>
Co-authored-by: Oskari Lavinto <olavinto@protonmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/sonarr/tr/
Translation: Servarr/Sonarr
2025-01-04 17:17:10 -08:00
41 changed files with 1104 additions and 291 deletions

View File

@@ -22,7 +22,7 @@ env:
FRAMEWORK: net6.0
RAW_BRANCH_NAME: ${{ github.head_ref || github.ref_name }}
SONARR_MAJOR_VERSION: 4
VERSION: 4.0.11
VERSION: 4.0.12
jobs:
backend:

View File

@@ -1,6 +1,6 @@
# <img width="24px" src="./Logo/256.png" alt="Sonarr"></img> Sonarr
[![Translated](https://translate.servarr.com/widgets/servarr/-/sonarr/svg-badge.svg)](https://translate.servarr.com/engage/servarr/)
[![Translated](https://translate.servarr.com/widget/servarr/sonarr/svg-badge.svg)](https://translate.servarr.com/engage/servarr/)
[![Backers on Open Collective](https://opencollective.com/Sonarr/backers/badge.svg)](#backers)
[![Sponsors on Open Collective](https://opencollective.com/Sonarr/sponsors/badge.svg)](#sponsors)
[![Mega Sponsors on Open Collective](https://opencollective.com/Sonarr/megasponsors/badge.svg)](#mega-sponsors)

View File

@@ -41,6 +41,7 @@ function HistoryDetails(props: HistoryDetailsProps) {
indexer,
releaseGroup,
seriesMatchType,
releaseSource,
customFormatScore,
nzbInfoUrl,
downloadClient,
@@ -53,6 +54,31 @@ function HistoryDetails(props: HistoryDetailsProps) {
const downloadClientNameInfo = downloadClientName ?? downloadClient;
let releaseSourceMessage = '';
switch (releaseSource) {
case 'Unknown':
releaseSourceMessage = translate('Unknown');
break;
case 'Rss':
releaseSourceMessage = translate('Rss');
break;
case 'Search':
releaseSourceMessage = translate('Search');
break;
case 'UserInvokedSearch':
releaseSourceMessage = translate('UserInvokedSearch');
break;
case 'InteractiveSearch':
releaseSourceMessage = translate('InteractiveSearch');
break;
case 'ReleasePush':
releaseSourceMessage = translate('ReleasePush');
break;
default:
releaseSourceMessage = '';
}
return (
<DescriptionList>
<DescriptionListItem
@@ -88,6 +114,14 @@ function HistoryDetails(props: HistoryDetailsProps) {
/>
) : null}
{releaseSource ? (
<DescriptionListItem
descriptionClassName={styles.description}
title={translate('ReleaseSource')}
data={releaseSourceMessage}
/>
) : null}
{nzbInfoUrl ? (
<span>
<DescriptionListItemTitle>

View File

@@ -258,14 +258,7 @@ function FormInputGroup<T>(props: FormInputGroupProps<T>) {
{helpLink ? <Link to={helpLink}>{translate('MoreInfo')}</Link> : null}
{errors.map((error, index) => {
return 'message' in error ? (
<FormInputHelpText
key={index}
text={error.message}
isError={true}
isCheckInput={checkInput}
/>
) : (
return 'errorMessage' in error ? (
<FormInputHelpText
key={index}
text={error.errorMessage}
@@ -274,23 +267,30 @@ function FormInputGroup<T>(props: FormInputGroupProps<T>) {
isError={true}
isCheckInput={checkInput}
/>
) : (
<FormInputHelpText
key={index}
text={error.message}
isError={true}
isCheckInput={checkInput}
/>
);
})}
{warnings.map((warning, index) => {
return 'message' in warning ? (
return 'errorMessage' in warning ? (
<FormInputHelpText
key={index}
text={warning.message}
text={warning.errorMessage}
link={warning.infoLink}
tooltip={warning.detailedDescription}
isWarning={true}
isCheckInput={checkInput}
/>
) : (
<FormInputHelpText
key={index}
text={warning.errorMessage}
link={warning.infoLink}
tooltip={warning.detailedDescription}
text={warning.message}
isWarning={true}
isCheckInput={checkInput}
/>

View File

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

View File

@@ -168,6 +168,50 @@ namespace NzbDrone.Core.Test.Download.Aggregation.Aggregators
Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
}
[Test]
public void should_return_multi_languages_when_release_as_specified_language_and_indexer_has_multi_languages_configuration()
{
var releaseTitle = "Series.Title.S01E01.MULTi.VFF.VFQ.1080p.BluRay.DTS.HDMA.x264-RlsGroup";
var indexerDefinition = new IndexerDefinition
{
Id = 1,
Settings = new TorrentRssIndexerSettings { MultiLanguages = new List<int> { Language.Original.Id, Language.French.Id } }
};
Mocker.GetMock<IIndexerFactory>()
.Setup(v => v.Find(1))
.Returns(indexerDefinition);
_remoteEpisode.ParsedEpisodeInfo = GetParsedEpisodeInfo(new List<Language> { Language.French }, releaseTitle);
_remoteEpisode.Release.IndexerId = 1;
_remoteEpisode.Release.Title = releaseTitle;
Subject.Aggregate(_remoteEpisode).Languages.Should().BeEquivalentTo(new List<Language> { _series.OriginalLanguage, Language.French });
Mocker.GetMock<IIndexerFactory>().Verify(c => c.Find(1), Times.Once());
Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
}
[Test]
public void should_return_multi_languages_when_release_as_other_language_and_indexer_has_multi_languages_configuration()
{
var releaseTitle = "Series.Title.S01E01.MULTi.GERMAN.1080p.BluRay.DTS.HDMA.x264-RlsGroup";
var indexerDefinition = new IndexerDefinition
{
Id = 1,
Settings = new TorrentRssIndexerSettings { MultiLanguages = new List<int> { Language.Original.Id, Language.French.Id } }
};
Mocker.GetMock<IIndexerFactory>()
.Setup(v => v.Find(1))
.Returns(indexerDefinition);
_remoteEpisode.ParsedEpisodeInfo = GetParsedEpisodeInfo(new List<Language> { Language.German }, releaseTitle);
_remoteEpisode.Release.IndexerId = 1;
_remoteEpisode.Release.Title = releaseTitle;
Subject.Aggregate(_remoteEpisode).Languages.Should().BeEquivalentTo(new List<Language> { _series.OriginalLanguage, Language.French, Language.German });
Mocker.GetMock<IIndexerFactory>().Verify(c => c.Find(1), Times.Once());
Mocker.GetMock<IIndexerFactory>().VerifyNoOtherCalls();
}
[Test]
public void should_return_original_when_indexer_has_no_multi_languages_configuration()
{

View File

@@ -712,6 +712,30 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(1.0f);
GivenCompletedTorrent(state, ratio: 1.1006066990976857f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_just_under_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(1.0f);
GivenCompletedTorrent(state, ratio: 0.9999f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_and_paused(string state)
@@ -724,6 +748,30 @@ namespace NzbDrone.Core.Test.Download.DownloadClientTests.QBittorrentTests
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_overridden_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f);
GivenCompletedTorrent(state, ratio: 1.1006066990976857f, ratioLimit: 1.1f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_be_removable_and_should_allow_move_files_if_just_under_overridden_max_ratio_reached_after_rounding_and_paused(string state)
{
GivenGlobalSeedLimits(2.0f);
GivenCompletedTorrent(state, ratio: 0.9999f, ratioLimit: 1.0f);
var item = Subject.GetItems().Single();
item.CanBeRemoved.Should().BeTrue();
item.CanMoveFiles.Should().BeTrue();
}
[TestCase("pausedUP")]
[TestCase("stoppedUP")]
public void should_not_be_removable_if_overridden_max_ratio_not_reached_and_paused(string state)

View File

@@ -14,7 +14,7 @@ namespace NzbDrone.Core.Test.ImportListTests
{
private void GivenExisting(List<ImportListItemInfo> existing)
{
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Setup(v => v.GetAllForLists(It.IsAny<List<int>>()))
.Returns(existing);
}
@@ -58,13 +58,13 @@ namespace NzbDrone.Core.Test.ImportListTests
numDeleted.Should().Be(1);
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.InsertMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].TvdbId == newItem.TvdbId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.UpdateMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].TvdbId == updatedItem.TvdbId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.DeleteMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].TvdbId != newItem.TvdbId && s[0].TvdbId != updatedItem.TvdbId)), Times.Once());
}
@@ -107,13 +107,13 @@ namespace NzbDrone.Core.Test.ImportListTests
numDeleted.Should().Be(1);
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.InsertMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].ImdbId == newItem.ImdbId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.UpdateMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].ImdbId == updatedItem.ImdbId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.DeleteMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].ImdbId != newItem.ImdbId && s[0].ImdbId != updatedItem.ImdbId)), Times.Once());
}
@@ -156,13 +156,13 @@ namespace NzbDrone.Core.Test.ImportListTests
numDeleted.Should().Be(1);
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.InsertMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].TmdbId == newItem.TmdbId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.UpdateMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].TmdbId == updatedItem.TmdbId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.DeleteMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].TmdbId != newItem.TmdbId && s[0].TmdbId != updatedItem.TmdbId)), Times.Once());
}
@@ -205,13 +205,13 @@ namespace NzbDrone.Core.Test.ImportListTests
numDeleted.Should().Be(1);
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.InsertMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].MalId == newItem.MalId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.UpdateMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].MalId == updatedItem.MalId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.DeleteMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].MalId != newItem.MalId && s[0].MalId != updatedItem.MalId)), Times.Once());
}
@@ -254,13 +254,13 @@ namespace NzbDrone.Core.Test.ImportListTests
numDeleted.Should().Be(1);
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.InsertMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].AniListId == newItem.AniListId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.UpdateMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].AniListId == updatedItem.AniListId)), Times.Once());
Mocker.GetMock<IImportListItemInfoRepository>()
Mocker.GetMock<IImportListItemRepository>()
.Verify(v => v.DeleteMany(It.Is<List<ImportListItemInfo>>(s => s.Count == 1 && s[0].AniListId != newItem.AniListId && s[0].AniListId != updatedItem.AniListId)), Times.Once());
}
}

View File

@@ -42,24 +42,45 @@ namespace NzbDrone.Core.Test.ImportListTests
.TheFirst(1)
.With(s => s.TvdbId = 6)
.With(s => s.ImdbId = "6")
.With(s => s.TmdbId = 6)
.With(s => s.MalIds = new HashSet<int> { 6 })
.With(s => s.AniListIds = new HashSet<int> { 6 })
.With(s => s.Monitored = true)
.TheNext(1)
.With(s => s.TvdbId = 7)
.With(s => s.ImdbId = "7")
.With(s => s.TmdbId = 7)
.With(s => s.MalIds = new HashSet<int> { 7 })
.With(s => s.AniListIds = new HashSet<int> { 7 })
.With(s => s.Monitored = true)
.TheNext(1)
.With(s => s.TvdbId = 8)
.With(s => s.ImdbId = "8")
.With(s => s.TmdbId = 8)
.With(s => s.MalIds = new HashSet<int> { 8 })
.With(s => s.AniListIds = new HashSet<int> { 8 })
.With(s => s.Monitored = true)
.Build().ToList();
_list2Series = Builder<ImportListItemInfo>.CreateListOfSize(3)
.TheFirst(1)
.With(s => s.TvdbId = 6)
.With(s => s.ImdbId = "6")
.With(s => s.TmdbId = 6)
.With(s => s.MalId = 6)
.With(s => s.AniListId = 6)
.TheNext(1)
.With(s => s.TvdbId = 7)
.With(s => s.ImdbId = "7")
.With(s => s.TmdbId = 7)
.With(s => s.MalId = 7)
.With(s => s.AniListId = 7)
.TheNext(1)
.With(s => s.TvdbId = 8)
.With(s => s.ImdbId = "8")
.With(s => s.TmdbId = 8)
.With(s => s.MalId = 8)
.With(s => s.AniListId = 8)
.Build().ToList();
_importListFetch = new ImportListFetchResult(_list1Series, false);
@@ -110,6 +131,10 @@ namespace NzbDrone.Core.Test.ImportListTests
Mocker.GetMock<IImportListExclusionService>()
.Setup(v => v.All())
.Returns(new List<ImportListExclusion>());
Mocker.GetMock<IImportListItemService>()
.Setup(s => s.All())
.Returns(new List<ImportListItemInfo>());
}
private void WithTvdbId()
@@ -153,6 +178,19 @@ namespace NzbDrone.Core.Test.ImportListTests
});
}
private List<ImportListItemInfo> WithImportListItems(int count)
{
var importListItems = Builder<ImportListItemInfo>.CreateListOfSize(count)
.Build()
.ToList();
Mocker.GetMock<IImportListItemService>()
.Setup(s => s.All())
.Returns(importListItems);
return importListItems;
}
private void WithMonitorType(MonitorTypes monitor)
{
_importLists.ForEach(li => (li.Definition as ImportListDefinition).ShouldMonitor = monitor);
@@ -285,16 +323,18 @@ namespace NzbDrone.Core.Test.ImportListTests
{
WithList(1, true);
WithCleanLevel(ListSyncLevelType.KeepAndUnmonitor);
var importListItems = WithImportListItems(_existingSeries.Count - 1);
_importListFetch.Series.ForEach(m => m.ImportListId = 1);
Mocker.GetMock<IImportListItemService>()
.Setup(v => v.Exists(6, It.IsAny<string>()))
.Returns(true);
for (var i = 0; i < importListItems.Count; i++)
{
importListItems[i].TvdbId = _existingSeries[i].TvdbId;
}
Subject.Execute(_commandAll);
Mocker.GetMock<ISeriesService>()
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count > 0 && s.All(m => !m.Monitored)), true), Times.Once());
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count == 1 && s.All(m => !m.Monitored)), true), Times.Once());
}
[Test]
@@ -302,18 +342,75 @@ namespace NzbDrone.Core.Test.ImportListTests
{
WithList(1, true);
WithCleanLevel(ListSyncLevelType.KeepAndUnmonitor);
var importListItems = WithImportListItems(_existingSeries.Count - 1);
_importListFetch.Series.ForEach(m => m.ImportListId = 1);
var x = _importLists;
Mocker.GetMock<IImportListItemService>()
.Setup(v => v.Exists(It.IsAny<int>(), "6"))
.Returns(true);
for (var i = 0; i < importListItems.Count; i++)
{
importListItems[i].ImdbId = _existingSeries[i].ImdbId;
}
Subject.Execute(_commandAll);
Mocker.GetMock<ISeriesService>()
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count > 0 && s.All(m => !m.Monitored)), true), Times.Once());
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count == 1 && s.All(m => !m.Monitored)), true), Times.Once());
}
[Test]
public void should_not_clean_on_clean_library_if_tmdb_match()
{
WithList(1, true);
WithCleanLevel(ListSyncLevelType.KeepAndUnmonitor);
var importListItems = WithImportListItems(_existingSeries.Count - 1);
_importListFetch.Series.ForEach(m => m.ImportListId = 1);
for (var i = 0; i < importListItems.Count; i++)
{
importListItems[i].TmdbId = _existingSeries[i].TmdbId;
}
Subject.Execute(_commandAll);
Mocker.GetMock<ISeriesService>()
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count == 1 && s.All(m => !m.Monitored)), true), Times.Once());
}
[Test]
public void should_not_clean_on_clean_library_if_malid_match()
{
WithList(1, true);
WithCleanLevel(ListSyncLevelType.KeepAndUnmonitor);
var importListItems = WithImportListItems(_existingSeries.Count - 1);
_importListFetch.Series.ForEach(m => m.ImportListId = 1);
for (var i = 0; i < importListItems.Count; i++)
{
importListItems[i].MalId = _existingSeries[i].MalIds.First();
}
Subject.Execute(_commandAll);
Mocker.GetMock<ISeriesService>()
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count == 1 && s.All(m => !m.Monitored)), true), Times.Once());
}
[Test]
public void should_not_clean_on_clean_library_if_anilistid_match()
{
WithList(1, true);
WithCleanLevel(ListSyncLevelType.KeepAndUnmonitor);
var importListItems = WithImportListItems(_existingSeries.Count - 1);
_importListFetch.Series.ForEach(m => m.ImportListId = 1);
for (var i = 0; i < importListItems.Count; i++)
{
importListItems[i].AniListId = _existingSeries[i].AniListIds.First();
}
Subject.Execute(_commandAll);
Mocker.GetMock<ISeriesService>()
.Verify(v => v.UpdateSeries(It.Is<List<Series>>(s => s.Count == 1 && s.All(m => !m.Monitored)), true), Times.Once());
}
[Test]
@@ -345,6 +442,7 @@ namespace NzbDrone.Core.Test.ImportListTests
Mocker.GetMock<ISeriesService>()
.Verify(v => v.UpdateSeries(It.IsAny<List<Series>>(), It.IsAny<bool>()), Times.Never());
Mocker.GetMock<ISeriesService>()
.Verify(v => v.DeleteSeries(It.IsAny<List<int>>(), It.IsAny<bool>(), It.IsAny<bool>()), Times.Never());
}

View File

@@ -96,6 +96,8 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Босх: Спадок (S2E1) / Series: Legacy (S2E1) (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Босх: Спадок", "Series: Legacy")]
[TestCase("Босх: Спадок / Series: Legacy / S2E1-4 of 10 (2023) WEB-DL 1080p Ukr/Eng | sub Eng", "Босх: Спадок", "Series: Legacy")]
[TestCase("Босх: Спадок AKA Series: Legacy S02 1080p NF WEB-DL Dual- Audio DD+ 5.1 Atmos H.264-APEX", "Босх: Спадок", "Series: Legacy")]
[TestCase("Босх.Спадок.AKA.Series.Legacy.S02.1080p.NF.WEB-DL.DUAL.DDP5.1.Atmos.H.264-APEX", "Босх Спадок", "Series Legacy")]
public void should_parse_multiple_series_titles(string postTitle, params string[] titles)
{
var seriesTitleInfo = Parser.Parser.ParseTitle(postTitle).SeriesTitleInfo;

View File

@@ -35,7 +35,8 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Series Title / S2E1-16 of 16 [2022, WEB-DL] RUS", "Series Title", 2)]
[TestCase("[hchcsen] Mobile Series 00 S01 [BD Remux Dual Audio 1080p AVC 2xFLAC] (Kidou Senshi Gundam 00 Season 1)", "Mobile Series 00", 1)]
[TestCase("[HorribleRips] Mobile Series 00 S1 [1080p]", "Mobile Series 00", 1)]
[TestCase("[Zoombie] Zom 100: Bucket List of the Dead S01 [Web][MKV][h265 10-bit][1080p][AC3 2.0][Softsubs (Zoombie)]", "Zom 100: Bucket List of the Dead", 1)]
[TestCase("[Zoombie] Series 100: Bucket List S01 [Web][MKV][h265 10-bit][1080p][AC3 2.0][Softsubs (Zoombie)]", "Series 100: Bucket List", 1)]
[TestCase("Seriesless (2016/S01/WEB-DL/1080p/AC3 5.1/DUAL/SUB)", "Seriesless (2016)", 1)]
public void should_parse_full_season_release(string postTitle, string title, int season)
{
var result = Parser.Parser.ParseTitle(postTitle);

View File

@@ -175,6 +175,8 @@ namespace NzbDrone.Core.Test.ParserTests
[TestCase("Series - Temporada 1 - [HDTV 1080p][Cap.101](wolfmax4k.com)", "Series", 1, 1)]
[TestCase("Series [HDTV 1080p][Cap.101](wolfmax4k.com)", "Series", 1, 1)]
[TestCase("Series [HDTV 1080p][Cap. 101](wolfmax4k.com).mkv", "Series", 1, 1)]
[TestCase("Amazing Title (2024/S01E07/DSNP/WEB-DL/1080p/ESP/EAC3 5.1/ING/EAC3 5.1 Atmos/SUBS) SPWEB", "Amazing Title (2024)", 1, 7)]
[TestCase("Mini Title (Miniserie) (2024/S01E07/DSNP/WEB-DL/1080p/ESP/EAC3 5.1/ING/EAC3 5.1 Atmos/SUBS) SPWEB", "Mini Title (2024)", 1, 7)]
// [TestCase("", "", 0, 0)]
public void should_parse_single_episode(string postTitle, string title, int seasonNumber, int episodeNumber)

View File

@@ -0,0 +1,15 @@
using FluentMigrator;
using NzbDrone.Core.Datastore.Migration.Framework;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(217)]
public class add_mal_and_anilist_ids : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Alter.Table("Series").AddColumn("MalIds").AsString().WithDefaultValue("[]");
Alter.Table("Series").AddColumn("AniListIds").AsString().WithDefaultValue("[]");
}
}
}

View File

@@ -117,6 +117,8 @@ namespace NzbDrone.Core.DecisionEngine
remoteEpisode.CustomFormats = _formatCalculator.ParseCustomFormat(remoteEpisode, remoteEpisode.Release.Size);
remoteEpisode.CustomFormatScore = remoteEpisode?.Series?.QualityProfile?.Value.CalculateCustomFormatScore(remoteEpisode.CustomFormats) ?? 0;
_logger.Trace("Custom Format Score of '{0}' [{1}] calculated for '{2}'", remoteEpisode.CustomFormatScore, remoteEpisode.CustomFormats?.ConcatToString(), report.Title);
remoteEpisode.DownloadAllowed = remoteEpisode.Episodes.Any();
decision = GetDecisionForReport(remoteEpisode, searchCriteria);
}

View File

@@ -1,3 +1,4 @@
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Parser.Model;
@@ -6,6 +7,13 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
{
public class CustomFormatAllowedbyProfileSpecification : IDownloadDecisionEngineSpecification
{
private readonly Logger _logger;
public CustomFormatAllowedbyProfileSpecification(Logger logger)
{
_logger = logger;
}
public SpecificationPriority Priority => SpecificationPriority.Default;
public RejectionType Type => RejectionType.Permanent;
@@ -19,6 +27,8 @@ namespace NzbDrone.Core.DecisionEngine.Specifications
return DownloadSpecDecision.Reject(DownloadRejectionReason.CustomFormatMinimumScore, "Custom Formats {0} have score {1} below Series profile minimum {2}", subject.CustomFormats.ConcatToString(), score, minScore);
}
_logger.Trace("Custom Format Score of {0} [{1}] above Series profile minimum {2}", score, subject.CustomFormats.ConcatToString(), minScore);
return DownloadSpecDecision.Accept();
}
}

View File

@@ -41,10 +41,12 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (delay == 0)
{
_logger.Debug("QualityProfile does not require a waiting period before download for {0}.", subject.Release.DownloadProtocol);
_logger.Debug("Delay Profile does not require a waiting period before download for {0}.", subject.Release.DownloadProtocol);
return DownloadSpecDecision.Accept();
}
_logger.Debug("Delay Profile requires a waiting period of {0} minutes for {1}", delay, subject.Release.DownloadProtocol);
var qualityComparer = new QualityModelComparer(qualityProfile);
if (isPreferredProtocol)
@@ -95,6 +97,7 @@ namespace NzbDrone.Core.DecisionEngine.Specifications.RssSync
if (oldest != null && oldest.Release.AgeMinutes > delay)
{
_logger.Debug("Oldest pending release {0} has been delayed for {1}, longer than the set delay of {2}. Release will be accepted", oldest.Release.Title, oldest.Release.AgeMinutes, delay);
return DownloadSpecDecision.Accept();
}

View File

@@ -76,7 +76,7 @@ namespace NzbDrone.Core.Download.Aggregation.Aggregators
languages = languages.Except(languagesToRemove).ToList();
}
if ((languages.Count == 0 || (languages.Count == 1 && languages.First() == Language.Unknown)) && releaseInfo?.Title?.IsNotNullOrWhiteSpace() == true)
if (releaseInfo?.Title?.IsNotNullOrWhiteSpace() == true)
{
IndexerDefinition indexer = null;
@@ -93,7 +93,14 @@ namespace NzbDrone.Core.Download.Aggregation.Aggregators
if (indexer?.Settings is IIndexerSettings settings && settings.MultiLanguages.Any() && Parser.Parser.HasMultipleLanguages(releaseInfo.Title))
{
// Use indexer setting for Multi-languages
languages = settings.MultiLanguages.Select(i => (Language)i).ToList();
if (languages.Count == 0 || (languages.Count == 1 && languages.First() == Language.Unknown))
{
languages = settings.MultiLanguages.Select(i => (Language)i).ToList();
}
else
{
languages.AddRange(settings.MultiLanguages.Select(i => (Language)i).Except(languages).ToList());
}
}
}

View File

@@ -630,14 +630,14 @@ namespace NzbDrone.Core.Download.Clients.QBittorrent
{
if (torrent.RatioLimit >= 0)
{
if (torrent.Ratio >= torrent.RatioLimit)
if (torrent.RatioLimit - torrent.Ratio <= 0.001f)
{
return true;
}
}
else if (torrent.RatioLimit == -2 && config.MaxRatioEnabled)
{
if (Math.Round(torrent.Ratio, 2) >= config.MaxRatio)
if (config.MaxRatio - torrent.Ratio <= 0.001f)
{
return true;
}

View File

@@ -1,18 +1,16 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Datastore;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.ImportLists.ImportListItems
{
public interface IImportListItemInfoRepository : IBasicRepository<ImportListItemInfo>
public interface IImportListItemRepository : IBasicRepository<ImportListItemInfo>
{
List<ImportListItemInfo> GetAllForLists(List<int> listIds);
bool Exists(int tvdbId, string imdbId);
}
public class ImportListItemRepository : BasicRepository<ImportListItemInfo>, IImportListItemInfoRepository
public class ImportListItemRepository : BasicRepository<ImportListItemInfo>, IImportListItemRepository
{
public ImportListItemRepository(IMainDatabase database, IEventAggregator eventAggregator)
: base(database, eventAggregator)
@@ -23,21 +21,5 @@ namespace NzbDrone.Core.ImportLists.ImportListItems
{
return Query(x => listIds.Contains(x.ImportListId));
}
public bool Exists(int tvdbId, string imdbId)
{
List<ImportListItemInfo> items;
if (string.IsNullOrWhiteSpace(imdbId))
{
items = Query(x => x.TvdbId == tvdbId);
}
else
{
items = Query(x => x.TvdbId == tvdbId || x.ImdbId == imdbId);
}
return items.Any();
}
}
}

View File

@@ -1,6 +1,5 @@
using System.Collections.Generic;
using System.Linq;
using NLog;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser.Model;
@@ -10,21 +9,18 @@ namespace NzbDrone.Core.ImportLists.ImportListItems
{
public interface IImportListItemService
{
List<ImportListItemInfo> All();
List<ImportListItemInfo> GetAllForLists(List<int> listIds);
int SyncSeriesForList(List<ImportListItemInfo> listSeries, int listId);
bool Exists(int tvdbId, string imdbId);
}
public class ImportListItemService : IImportListItemService, IHandleAsync<ProviderDeletedEvent<IImportList>>
{
private readonly IImportListItemInfoRepository _importListSeriesRepository;
private readonly Logger _logger;
private readonly IImportListItemRepository _importListItemRepository;
public ImportListItemService(IImportListItemInfoRepository importListSeriesRepository,
Logger logger)
public ImportListItemService(IImportListItemRepository importListItemRepository)
{
_importListSeriesRepository = importListSeriesRepository;
_logger = logger;
_importListItemRepository = importListItemRepository;
}
public int SyncSeriesForList(List<ImportListItemInfo> listSeries, int listId)
@@ -58,27 +54,27 @@ namespace NzbDrone.Core.ImportLists.ImportListItems
existingItem.ReleaseDate = item.ReleaseDate;
});
_importListSeriesRepository.InsertMany(toAdd);
_importListSeriesRepository.UpdateMany(toUpdate);
_importListSeriesRepository.DeleteMany(existingListSeries);
_importListItemRepository.InsertMany(toAdd);
_importListItemRepository.UpdateMany(toUpdate);
_importListItemRepository.DeleteMany(existingListSeries);
return existingListSeries.Count;
}
public List<ImportListItemInfo> All()
{
return _importListItemRepository.All().ToList();
}
public List<ImportListItemInfo> GetAllForLists(List<int> listIds)
{
return _importListSeriesRepository.GetAllForLists(listIds).ToList();
return _importListItemRepository.GetAllForLists(listIds).ToList();
}
public void HandleAsync(ProviderDeletedEvent<IImportList> message)
{
var seriesOnList = _importListSeriesRepository.GetAllForLists(new List<int> { message.ProviderId });
_importListSeriesRepository.DeleteMany(seriesOnList);
}
public bool Exists(int tvdbId, string imdbId)
{
return _importListSeriesRepository.Exists(tvdbId, imdbId);
var seriesOnList = _importListItemRepository.GetAllForLists(new List<int> { message.ProviderId });
_importListItemRepository.DeleteMany(seriesOnList);
}
private ImportListItemInfo FindItem(List<ImportListItemInfo> existingItems, ImportListItemInfo item)

View File

@@ -299,12 +299,18 @@ namespace NzbDrone.Core.ImportLists
var seriesToUpdate = new List<Series>();
var seriesInLibrary = _seriesService.GetAllSeries();
var allListItems = _importListItemService.All();
foreach (var series in seriesInLibrary)
{
var seriesExists = _importListItemService.Exists(series.TvdbId, series.ImdbId);
var seriesExists = allListItems.Where(l =>
l.TvdbId == series.TvdbId ||
l.ImdbId == series.ImdbId ||
l.TmdbId == series.TmdbId ||
series.MalIds.Contains(l.MalId) ||
series.AniListIds.Contains(l.AniListId)).ToList();
if (!seriesExists)
if (!seriesExists.Any())
{
switch (_configService.ListSyncLevel)
{

View File

@@ -1 +1,90 @@
{}
{
"AddedDate": "Добавен: {date}",
"AddANewPath": "Добави нов път",
"AddCustomFilter": "Добави персонализиран филтър",
"AddDownloadClientImplementation": "Добави клиент за изтегляне - {implementationName}",
"AddExclusion": "Добави изключение",
"AddImportList": "Добави списък за импортиране",
"AddIndexer": "Добави индексатор",
"AirsTomorrowOn": "Утре от {time} по {networkLabel}",
"AddedToDownloadQueue": "Добавен към опашката за изтегляне",
"AfterManualRefresh": "След ръчно опресняване",
"AirsDateAtTimeOn": "{date} в {time} по {networkLabel}",
"AirsTbaOn": "TBA по {networkLabel}",
"AirsTimeOn": "{time} по {networkLabel}",
"AllFiles": "Всички файлове",
"AlternateTitles": "Алтернативни заглавия",
"Any": "Всякакви",
"AddConditionImplementation": "Добави условие - {implementationName}",
"AddConnectionImplementation": "Добави връзка - {implementationName}",
"AddListExclusion": "Добави изключение от списъка",
"AddImportListExclusion": "Добави изключение от списъка за импортиране",
"AddImportListExclusionError": "Не може да се добави ново изключение от списъка за импортиране, моля, опитайте отново.",
"AddListExclusionSeriesHelpText": "Предотврати добавянето на сериили в {appName} посредством списъци",
"AnimeEpisodeTypeFormat": "Абсолютен номер на епизода ({format})",
"AddRootFolderError": "Не може да се добави основна папка, моля, опитайте отново",
"AnimeEpisodeTypeDescription": "Епизоди, издадени с абсолютен номер на епизод",
"AnalyseVideoFilesHelpText": "Извлича видео информация, като резолюция, продължителност и информация за кодека от файловете. Това изисква {appName} да прочете части от файла, което може да предизвика висока дискова или мрежова активност по време на сканирането.",
"AnalyticsEnabledHelpText": "Изпращайте анонимна информация за използването и грешките към сървърите на {appName}. Това включва информация за вашия браузър, кои страници на уеб интерфейса на {appName} използвате, докладваните грешки, както и версията на операционната система и изпълнителната среда. Ще използваме тази информация, за да приоритизираме нови функции и поправки на бъгове.",
"Anime": "Аниме",
"AddIndexerError": "Не може да се добави нов индексатор, моля, опитайте отново.",
"AddIndexerImplementation": "Добави индексатор - {implementationName}",
"AddDelayProfileError": "Не може да се добави нов профил за забавяне, моля, опитайте отново.",
"AddNotificationError": "Не може да се добави ново известие, моля, опитайте отново.",
"AddImportListImplementation": "Добави списък за импортиране - {implementationName}",
"AddList": "Добави списък",
"AddNewSeriesSearchForMissingEpisodes": "Започни търсене на липсващи епизоди",
"AddRemotePathMapping": "Добави мапиране към отдалечен път",
"AddRemotePathMappingError": "Не може да се добави ново мапиране към отдалечен път, моля, опитайте отново.",
"AddToDownloadQueue": "Добави към опашката за изтегляне",
"AlreadyInYourLibrary": "Вече е във вашата библиотека",
"AnEpisodeIsDownloading": "Изтегля се епизод",
"AnimeEpisodeFormat": "Аниме Епизод Формат",
"ApiKey": "API ключ",
"Added": "Добавен",
"ApiKeyValidationHealthCheckMessage": "Моля, актуализирайте ключа си за API, за да бъде с дължина най-малко {length} знака. Може да направите това чрез настройките или конфигурационния файл",
"AddConditionError": "Не може да се добави новo условие, моля, опитайте отново.",
"AddAutoTagError": "Не може да се добави нов автоматичен таг, моля, опитайте отново.",
"AddConnection": "Добави връзка",
"AddCustomFormat": "Добави персонализиран формат",
"AddCustomFormatError": "Не може да се добави нов персонализиран формат, моля, опитайте отново.",
"AddDelayProfile": "Добави профил за забавяне",
"AddDownloadClient": "Добави клиент за изтегляне",
"AddDownloadClientError": "Не може да се добави нов клиент за изтегляне, моля, опитайте отново.",
"AddListExclusionError": "Не може да се добави ново изключение от списъка, моля, опитайте отново.",
"AddNewRestriction": "Добави новo ограничение",
"AddListError": "Не може да се добави нов списък, моля, опитайте отново.",
"AddQualityProfile": "Добави профил за качество",
"AddQualityProfileError": "Не може да се добави нов профил за качество, моля, опитайте отново.",
"AddReleaseProfile": "Добави профил за издания",
"Always": "Винаги",
"AnalyseVideoFiles": "Анализирай видео файлове",
"Analytics": "Анализ",
"AgeWhenGrabbed": "Възраст (при грабване)",
"AddAutoTag": "Добави автоматичен етикет",
"AddCondition": "Добави условие",
"AirDate": "Ефирна дата",
"AllTitles": "Всички заглавия",
"AddRootFolder": "Добави основна папка",
"Add": "Добави",
"AddingTag": "Добавяне на етикет",
"Age": "Възраст",
"All": "Всички",
"Activity": "Активност",
"AddNew": "Добави нов",
"Actions": "Действия",
"About": "Относно",
"Agenda": "Агенда",
"AddNewSeries": "Добави нов сериал",
"AddNewSeriesError": "Неуспешно зареждане на резултатите от търсенето, моля, опитайте отново.",
"AddNewSeriesHelpText": "Добавянето на нови сериали е лесно, започнете, като напишете името на сериала, който искате да добавите.",
"AddNewSeriesRootFolderHelpText": "'{folder}' подпапка ще бъде създадена автоматично",
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Започни търсене на епизоди, които не са достигнали максималното качество за надграждане",
"AddSeriesWithTitle": "Добави {title}",
"Absolute": "Абсолютен",
"AllSeriesAreHiddenByTheAppliedFilter": "Всички резултати са скрити от приложения филтър",
"AllSeriesInRootFolderHaveBeenImported": "Всички сериали в {path} са импортирани",
"AbsoluteEpisodeNumber": "Абсолютен епизоден номер",
"AllResultsAreHiddenByTheAppliedFilter": "Всички резултати са скрити от приложения филтър",
"AppDataDirectory": "Директория на AppData"
}

View File

@@ -37,7 +37,7 @@
"Connect": "Připojit",
"ConnectSettingsSummary": "Oznámení, připojení k mediálním serverům/přehrávačům a vlastní skripty",
"Connections": "Připojení",
"AbsoluteEpisodeNumber": "Úplné číslo dílu",
"AbsoluteEpisodeNumber": "Celkový počet epizod",
"AddAutoTagError": "Nepodařilo se přidat novou automatickou značku, zkuste to prosím znovu.",
"AddConditionError": "Nepodařilo se přidat novou podmínku, prosím, zkuste to znovu.",
"AddConnection": "Přidat spojení",
@@ -76,14 +76,14 @@
"CollectionsLoadError": "Nelze načíst sbírky",
"CompletedDownloadHandling": "Zpracování stahování bylo dokončeno",
"Condition": "Stav",
"UpdateMechanismHelpText": "Použijte vestavěný nástroj {appName}u pro aktualizaci nebo skript",
"UpdateMechanismHelpText": "Použij vestavěný nástroj {appName}u pro aktualizaci nebo skript",
"AddCondition": "Přidat podmínku",
"AutoTagging": "Automatické označování",
"AddAutoTag": "Přidat automatickou značku",
"AutoTaggingRequiredHelpText": "Tato podmínka {implementationName} musí odpovídat, aby se pravidlo automatického označování použilo. V opačném případě postačí jediná shoda s {implementationName}.",
"AirDate": "Datum vysílání",
"AllTitles": "Všechny názvy",
"AbsoluteEpisodeNumbers": "Úplné číslo dílu(ů)",
"AbsoluteEpisodeNumbers": "Celkový počet epizod",
"AddRootFolder": "Přidat kořenový adresář",
"Backups": "Zálohy",
"Clear": "Vymazat",
@@ -127,7 +127,7 @@
"Actions": "Akce",
"AptUpdater": "K instalaci aktualizace používat apt",
"BackupNow": "Zálohovat nyní",
"AppDataDirectory": "Adresář AppData",
"AppDataDirectory": "AppData Adresář",
"ApplyTagsHelpTextHowToApplySeries": "Jak použít značky na vybrané seriály",
"BackupFolderHelpText": "Relativní cesty budou v adresáři AppData {appName}u",
"BlocklistReleases": "Blocklist pro vydání",
@@ -138,7 +138,7 @@
"AddNewSeriesError": "Výsledky vyhledávání se nepodařilo načíst, zkuste to prosím znovu.",
"AddNewSeriesHelpText": "Přidání nového seriálu je snadné, stačí začít psát název seriálu, který chcete přidat.",
"AddNewSeriesRootFolderHelpText": "'{folder}' posdložka bude vytvořena automaticky",
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Zahájit hledání vynechaných epizod",
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Zahájit hledání Neodpovídajících vynechaných epizod",
"AddNewSeriesSearchForMissingEpisodes": "Zahájit hledání chybějících epizod",
"AddReleaseProfile": "Přidat profil vydání",
"AddRemotePathMapping": "Přidat mapování vzdálených cest",
@@ -271,7 +271,7 @@
"DailyEpisodeTypeFormat": "Datum ({format})",
"Default": "Výchozí",
"IndexerDownloadClientHelpText": "Zvolte, který klient pro stahování bude použit pro zachytávání z toho indexeru",
"DeletedReasonManual": "Soubor byl smazán pomocí UI",
"DeletedReasonManual": "Soubor byl odstraněn pomocí {appName}, a to buď ručně, nebo jiným nástrojem prostřednictvím rozhraní API",
"DeletedReasonUpgrade": "Soubor byl odstraněn pro import lepší verze",
"EditConditionImplementation": "Upravit sbírku - {implementationName}",
"ClearBlocklist": "Vyčistit blocklist",
@@ -321,7 +321,7 @@
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Klient stahování {downloadClientName} je nastaven na odstranění dokončených stahování. To může vést k tomu, že stahování budou z klienta odstraněna dříve, než je bude moci importovat {appName}.",
"ConnectionSettingsUrlBaseHelpText": "Přidá předponu do {connectionName} url, jako např. {url}",
"CustomFormatsSpecificationRegularExpressionHelpText": "Vlastní formát RegEx nerozlišuje velká a malá písmena",
"CustomFormatsSpecificationFlag": "Vlajka",
"CustomFormatsSpecificationFlag": "Značka",
"BlackholeFolderHelpText": "Složka, do které {appName} uloží soubor {extension}",
"BlackholeWatchFolder": "Složka sledování",
"Category": "Kategorie",
@@ -331,5 +331,189 @@
"BlocklistMultipleOnlyHint": "Blokovat a nehledat náhradu",
"CustomFormatsSettingsTriggerInfo": "Vlastní formát se použije na vydání nebo soubor, pokud odpovídá alespoň jednomu z různých typů zvolených podmínek.",
"ChangeCategory": "Změnit kategorii",
"CustomFilter": "Vlastní filtr"
"CustomFilter": "Vlastní filtr",
"ClickToChangeIndexerFlags": "Kliknutím změníte značky indexeru",
"QualityProfile": "Profil Kvality",
"ContinuingSeriesDescription": "Očekává se více dílů/další sezóna",
"DeleteReleaseProfile": "Smazat profil vydání",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Přidá prefix do url adresy json deluge, viz {url}",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Nejprve první a poslední",
"DownloadClientRTorrentSettingsAddStopped": "Přidat zastavené",
"DownloadClientRTorrentSettingsUrlPathHelpText": "Cesta ke koncovému bodu XMLRPC, viz {url}. Při použití ruTorrentu je to obvykle RPC2 nebo [cesta k ruTorrentu]{url2}.",
"AddListExclusion": "Přidej Seznam Výjimek",
"DeleteSelectedSeries": "Smazat vybrané seriály",
"AllSeriesAreHiddenByTheAppliedFilter": "Všechny výsledky jsou skryté použitým filtrem",
"DeleteSeriesFoldersHelpText": "Smazat složky seriálu a všechno v nich",
"DownloadClientNzbgetSettingsAddPausedHelpText": "Tato volba vyžaduje NzbGet verze alespoň 16.0",
"Priority": "Přednost",
"ProxyBadRequestHealthCheckMessage": "Nepodařilo se otestovat proxy. Kód Stavu: {statusCode}",
"DownloadClientFreeboxSettingsPortHelpText": "Port použitý pro přístup k rozhraní Freeboxu, výchozí hodnota je {port}",
"CountSeriesSelected": "{count} vybrané seriály",
"CleanLibraryLevel": "Vyčistit Úroveň Knihovny",
"DeleteSeriesFolders": "Smazat složky seriálu",
"DoNotPrefer": "Neupřednostňovat",
"Destination": "Cesta",
"AddListExclusionSeriesHelpText": "„Zamezit přidávání Seriálu do {appName} prostřednictvím seznamů“",
"CountCustomFormatsSelected": "{count} vybraný vlastní formát(y)",
"DeleteQualityProfile": "Smazat profil kvality",
"DeleteSpecification": "Smaž specifikace",
"MappedNetworkDrivesWindowsService": "Mapované síťové jednotky nejsou k dispozici, když běží jako služba Windows. Další informace najdete v [FAQ]({url}).",
"DeletedSeriesDescription": "Seriál byl smazán z TheTVDB",
"RecycleBinUnableToWriteHealthCheckMessage": "Nelze zapisovat do nakonfigurované složky koše: {path}. Ujistěte se, že tato cesta existuje a že do ní může zapisovat uživatel se spuštěnou {appName}",
"DeleteSelectedImportListExclusionsMessageText": "Opravdu smazat vybraný importovaný seznam vyjímek?",
"DoNotUpgradeAutomatically": "Neupgradovat automaticky",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Počáteční stav torrentů přidaných do qBittorrentu. Pamatujte, že vynucené torrenty nedodržují omezení týkající se seedů",
"DeleteSelectedCustomFormats": "Smazat vlastní formát(y)",
"ClickToChangeReleaseType": "Kliknutím změníte typ verze",
"CollapseAll": "Sbal Všechno",
"CutoffUnmetNoItems": "Žádné neodpovídající nesplněné položky",
"CutoffUnmetLoadError": "Chybné načítání nesplněných položek",
"AddDelayProfileError": "Nelze přidat nový profil zpoždění, zkuste to prosím znovu.",
"AddedDate": "Přidáno: {date}",
"AlternateTitles": "Střídej tituly",
"BlocklistAndSearchHint": "Začne hledat náhradu po blokaci",
"BlocklistAndSearchMultipleHint": "Začne vyhledávat náhrady po blokaci",
"BlocklistFilterHasNoItems": "Vybraný filtr blokování neobsahuje žádné položky",
"BlocklistOnly": "Pouze seznam blokování",
"BlocklistOnlyHint": "Přidat do seznamu blokování bez náhrady",
"DeleteRemotePathMapping": "Smazat externí cestu k souboru",
"AutoTaggingSpecificationTag": "Značka",
"ChangeCategoryHint": "Změní stahování do kategorie „Post-Import“ z aplikace Download Client",
"ChangeCategoryMultipleHint": "Změní stahování do kategorie „Post-Import“ z aplikace Download Client",
"DeleteSelected": "Smazat vybrané",
"DownloadClientDelugeValidationLabelPluginFailureDetail": "{appName} nemohl(a) přidat etiketu k {clientName}.",
"DayOfWeekAt": "{day} v {time}",
"CountVotes": "{votes} hlasy",
"CustomColonReplacementFormatHint": "Platný znak souborového systému, například dvojtečka (písmeno)",
"ProxyFailedToTestHealthCheckMessage": "Nepodařilo se otestovat proxy: {url}",
"Completed": "Hotovo",
"DockerUpdater": "Aby jsi získal aktualizaci proveď update docker kontejneru",
"CustomFormatsSpecificationExceptLanguage": "Vyjma jazyka",
"CustomFormatsSpecificationExceptLanguageHelpText": "Odpovídá, pokud je přítomen jiný jazyk než vybraný",
"CustomFormatsSpecificationMaximumSize": "Maximální velikost",
"CustomFormatsSpecificationReleaseGroup": "Vydávající Skupina",
"CutoffNotMet": "Mezní hodnota není splněna",
"DeleteEpisodeFile": "Smazat Soubor Epizody",
"DeleteEpisodeFileMessage": "Opravdu chceš smazat '{path}'?",
"DeleteEpisodeFromDisk": "Smazat Epizodu z disku",
"DeleteIndexer": "Smazat Indexer",
"DeleteRemotePathMappingMessageText": "Opravdu chceš smazat tohle externí cestu k souboru?",
"Directory": "Adresář",
"DoNotBlocklist": "Nepřidávat do Seznamu blokování",
"DoneEditingGroups": "Úpravy skupin dokončeny",
"DeleteSeriesModalHeader": "Smazat - {title}",
"DeleteSelectedCustomFormatsMessageText": "Opravdu odstranit {count} vybraný vlastní formát(y)?",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "Nedostupný klient pro stahování",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Nelze komunikovat s {downloadClientName}. {errorMessage}",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token aplikace získaný při vytváření přístupu k Freebox API (tj. app_token)",
"DownloadClientFreeboxSettingsAppToken": "Token aplikace",
"Enable": "Povolit",
"Episode": "Epizoda",
"DestinationPath": "Cesta Destinace",
"EnableAutomaticSearchHelpText": "Použije se při automatickém vyhledávání prostřednictvím uživatelského rozhraní nebo pomocí {appName}",
"CustomColonReplacement": "Vlastní Náhrada znaku dvojtečky",
"CustomColonReplacementFormatHelpText": "Znaky které nahradí dvojtečky",
"DeleteEpisodesFiles": "Smazat{episodeFileCount} Soubory Epizody",
"DeleteEpisodesFilesHelpText": "Smazat soubory epizody a složku seriálu",
"DeleteImportListExclusionMessageText": "Opravdu chceš smazat tento import Seznamu Vyjímek?",
"DeleteSelectedEpisodeFiles": "Smazat soubory vybrané epizody",
"DeleteSelectedEpisodeFilesHelpText": "Opravdu smazat soubory vybrané epizody?",
"DeleteSeriesFolderConfirmation": "Složka seriálu `{path}` a veškerý její obsah bude smazán.",
"DeleteSeriesFolderEpisodeCount": "{episodeFileCount} celkově souborů epizody {size}",
"Details": "Detaily",
"DetailedProgressBar": "Podrobný ukazatel průběhu",
"DeleteSeriesFolderHelpText": "Smazat složku seriálu a její obsah",
"DoNotBlocklistHint": "Odstraň bez přidání do seznamu blokování",
"Donate": "Daruj",
"DownloadClientAriaSettingsDirectoryHelpText": "Volitelné umístění pro stahování, pokud chcete použít výchozí umístění Aria2, ponechte prázdné",
"DownloadClientDelugeValidationLabelPluginFailure": "Konfigurace etikety selhala",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Přidá vlastnosti médií jako značky. Nápovědy jsou příklady.",
"DownloadClientFreeboxSettingsApiUrl": "API URL",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Definuj základní adresu URL rozhraní Freebox API s verzí rozhraní API, např. {url}, výchozí hodnota je {defaultApiUrl}",
"DownloadClientFreeboxSettingsAppId": "ID aplikace",
"DownloadClientFreeboxSettingsAppIdHelpText": "ID aplikace zadané při vytváření přístupu k Freebox API (tj. app_id)",
"DownloadClientQbittorrentSettingsContentLayout": "Rozvržení obsahu",
"DownloadClientQbittorrentSettingsSequentialOrder": "Postupné pořadí",
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Povolení přidá torrenty a magnety do rTorrentu v zastaveném stavu. To může způsobit poškození souborů magnet.",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění rTorrentu",
"Donations": "Dary",
"Connection": "Spojení",
"DeleteSeriesFolder": "Smazat složku seriálu",
"DeleteNotification": "Smazat Oznámení",
"DownloadClientFloodSettingsAdditionalTags": "Další Značky",
"DownloadClientFloodSettingsUrlBaseHelpText": "Přidá prefix do Flood API, viz {url}",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Volitelná sdílená složka, do které se mají stahované soubory ukládat, pokud chcete použít výchozí umístění Download Station, ponechte prázdné",
"DownloadClientFreeboxSettingsHostHelpText": "Název hostitele nebo IP adresa hostitele Freeboxu, výchozí hodnota je {url} (funguje pouze ve stejné síti)",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Stahovat nejprve první a poslední kusy (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Stahovat v postupném pořadí (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Používat zabezpečené připojení. Viz Možnosti -> WebUI -> Webové uživatelské rozhraní -> Použít HTTPS místo HTTP v qBittorrentu.",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Volitelné umístění pro stahování, ponechte prázdné pro použití výchozího umístění Transmission",
"DownloadClients": "Klienti pro stahování",
"HealthMessagesInfoBox": "Další informace o příčině těchto zpráv o kontrole zdraví najdete kliknutím na odkaz wiki (ikona knihy) na konci řádku nebo kontrolou [logů]({link}). Pokud máte potíže s interpretací těchto zpráv, můžete se obrátit na naši podporu, a to na níže uvedených odkazech.",
"GrabRelease": "Získat vydání",
"DownloadClientRTorrentSettingsUrlPath": "Cesta URL",
"Indexer": "Indexer",
"CustomFormatsSpecificationMaximumSizeHelpText": "Vydání musí odpovídat nebo být menší než tato velikost",
"CustomFormatsSpecificationMinimumSize": "Minimální velikost",
"Deleted": "Smazáno",
"DeletedReasonEpisodeMissingFromDisk": "{appName} nenalezen soubor na disku, Došlo k odvázání souboru na epizodu v databázi",
"DeleteSeriesFolderCountConfirmation": "Opravdu smazat {count} vybraný seriál?",
"DetailedProgressBarHelpText": "Zobrazit text na Ukazateli průběhu",
"Disabled": "Zakázáno",
"DownloadClientFloodSettingsTagsHelpText": "Počáteční značky stahování. Aby bylo stahování rozpoznáno, musí mít všechny počáteční značky. Tím se zabrání konfliktům s nesouvisejícími stahováními.",
"Filters": "Filtry",
"Implementation": "Implementace",
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Soubory .strm v této složce budou importovány pomocí drone",
"History": "Historie",
"Discord": "Discord",
"DotNetVersion": ".NET",
"Download": "Stáhnout",
"DownloadClient": "Download klient",
"DownloadClientSettingsInitialStateHelpText": "Počáteční stav pro torrenty přidané do {clientName}",
"DownloadClientSettingsInitialState": "Počáteční stav",
"DownloadClientSettingsDestinationHelpText": "Ručně určuje cíl stahování, pro použití výchozího nastavení nechte prázdné",
"DownloadClientSettingsUseSslHelpText": "Při připojení k {clientName} použít zabezpečené připojení",
"EditConnectionImplementation": "Upravit připojení - {implementationName}",
"EnableInteractiveSearchHelpText": "Použije se při interaktivním vyhledávání",
"Ended": "Ukončeno",
"External": "Externí",
"General": "Obecné",
"AutoTaggingSpecificationGenre": "Žánr(y)",
"AutoTaggingSpecificationMaximumYear": "Maximální Rok",
"AutoTaggingSpecificationMinimumYear": "Minimální Rok",
"AutoTaggingSpecificationOriginalLanguage": "Jazyk",
"AutoTaggingSpecificationQualityProfile": "Profil Kvality",
"AutoTaggingSpecificationRootFolder": "Kořenová Složka",
"AutoTaggingSpecificationSeriesType": "Typ seriálu",
"AutoTaggingSpecificationStatus": "Status",
"CustomFormatsSpecificationLanguage": "Jazyk",
"CustomFormatsSpecificationRegularExpression": "Běžný výraz",
"CustomFormatsSpecificationMinimumSizeHelpText": "Vydání musí být větší než tato velikost",
"CustomFormatsSpecificationResolution": "Rozlišení",
"CustomFormatsSpecificationSource": "Zdroj",
"DeleteImportListExclusion": "Smazat import Seznamu Vyjímek",
"DiskSpace": "Místo na disku",
"DeleteReleaseProfileMessageText": "Opravdu smazat profil vydání '{name}'?",
"Docker": "Docker",
"DownloadClientQbittorrentSettingsContentLayoutHelpText": "Zda použít rozvržení obsahu nakonfigurované v qBittorrentu, původní rozvržení z torrentu nebo vždy vytvořit podsložku (qBittorrent 4.3.2+)",
"DownloadClientSettingsAddPaused": "Přidat pozastavené",
"DownloadClientSettingsUrlBaseHelpText": "Přidá prefix k {clientName}, například {url}",
"ExistingTag": "Stávající značka",
"ProxyResolveIpHealthCheckMessage": "Nepodařilo se vyřešit adresu IP konfigurovaného hostitele proxy {proxyHostName}",
"DownloadClientDelugeSettingsDirectory": "Adresář stahování",
"DownloadClientPneumaticSettingsNzbFolder": "Složka Nzb",
"FailedToFetchSettings": "Nepodařilo se načíst nastavení",
"DownloadClientSettings": "Nastavení klienta pro stahování",
"Grabbed": "Získáno",
"DatabaseMigration": "Migrace databáze",
"Delay": "Zpoždění",
"DeleteEmptyFolders": "Vymazat prázdné složky",
"DeleteEmptySeriesFoldersHelpText": "Smazat Složky prázdného Seriálu a Sezóny Během skenování a pokud jsou soubory epizody vymazány",
"DeleteTag": "Smazat štítek",
"DeleteTagMessageText": "Opravdu chceš smazat štítek \"{label}\"?",
"DestinationRelativePath": "Relativní cesta Destinace",
"DeleteSpecificationHelpText": "Opravdu smazat specifikaci '{name}'?",
"DownloadClientStatusAllClientHealthCheckMessage": "Všichni klienti pro stahování jsou nedostupní z důvodu selhání",
"DownloadClientStatusSingleClientHealthCheckMessage": "Klienti pro stahování jsou nedostupní z důvodu selhání: {downloadClientNames}",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Přidá předponu k url {clientName} rpc, např. {url}, výchozí hodnota je {defaultUrl}"
}

View File

@@ -22,7 +22,7 @@
"Language": "Sprache",
"CloneCondition": "Bedingung klonen",
"DeleteCondition": "Bedingung löschen",
"DeleteConditionMessageText": "Bist du sicher, dass du die Bedingung '{0}' löschen willst?",
"DeleteConditionMessageText": "Bist du sicher, dass du die Bedingung '{name}' löschen willst?",
"DeleteCustomFormatMessageText": "Bist du sicher, dass du das benutzerdefinierte Format '{name}' wirklich löschen willst?",
"RemoveSelectedItemQueueMessageText": "Bist du sicher, dass du ein Eintrag aus der Warteschlange entfernen willst?",
"RemoveSelectedItemsQueueMessageText": "Bist du sicher, dass du {selectedCount} Einträge aus der Warteschlange entfernen willst?",
@@ -162,7 +162,7 @@
"SelectEpisodesModalTitle": "{modalTitle} Episode(n) auswählen",
"SeasonPassTruncated": "Es werden nur die letzten 25 Staffeln gezeigt. Gehen Sie zu den Details, um alle Staffeln zu sehen",
"RestartReloadNote": "Hinweis: {appName} startet während des Wiederherstellungsvorgangs automatisch neu und lädt die Benutzeroberfläche neu.",
"AutoRedownloadFailedHelpText": "Suchen Sie automatisch nach einer anderen Version und versuchen Sie, sie herunterzuladen",
"AutoRedownloadFailedHelpText": "Automatisch nach einem anderen Release suchen und versuchen es herunterzuladen",
"AirDate": "Ausstrahlungsdatum",
"AgeWhenGrabbed": "Alter (bei Erfassung)",
"ApplyTagsHelpTextHowToApplySeries": "So wenden Sie Tags auf die ausgewählte Serie an",
@@ -229,7 +229,7 @@
"UiLanguageHelpText": "Sprache, die {appName} für die Benutzeroberfläche verwendet",
"UsenetBlackhole": "Usenet Blackhole",
"YesCancel": "Ja Abbrechen",
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Suchen Sie automatisch nach einer anderen Version und versuchen Sie, sie herunterzuladen, wenn eine fehlerhafte Version aus der interaktiven Suche ausgewählt wurde",
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Falls ein Release aus der interaktiven Suche fehlschlägt, automatisch nach einer alternativen Version suchen und versuchen, sie herunterzuladen",
"DownloadClientQbittorrentSettingsSequentialOrder": "Fortlaufende Reihenfolge",
"AutoTagging": "Automatisches Tagging",
"AddRootFolder": "Stammverzeichnis hinzufügen",
@@ -486,7 +486,7 @@
"StartImport": "Import starten",
"StartProcessing": "Verarbeitung starten",
"Tasks": "Aufgaben",
"ThemeHelpText": "Ändern Sie das Benutzeroberflächen-Design der Anwendung. Das „Auto“-Design verwendet Ihr Betriebssystemdesign, um den Hell- oder Dunkelmodus festzulegen. Inspiriert vom Theme.Park",
"ThemeHelpText": "UI-Design ändern: Der 'Auto'-Modus übernimmt das Betriebssystem-Theme, um automatisch zwischen Light- und Dark-Modus zu wechseln. Inspiriert von Theme.Park",
"Theme": "Design",
"TestAllLists": "Prüfe alle Listen",
"Titles": "Titel",
@@ -2138,5 +2138,14 @@
"UpgradeUntilCustomFormatScoreEpisodeHelpText": "Sobald dieser benutzerdefinierte Formatwert erreicht ist, wird {appName} keine Episoden-Releases mehr herunterladen",
"UpgradesAllowedHelpText": "Wenn deaktiviert, werden Qualitäten nicht aktualisiert.",
"VideoDynamicRange": "Video-Dynamikbereich",
"Warning": "Warnung"
"Warning": "Warnung",
"ReleasePush": "Veröffentlichung-Push",
"ReleaseSource": "Veröffentlichungsquelle",
"MetadataKometaDeprecatedSetting": "Veraltet",
"MetadataKometaDeprecated": "Kometa-Dateien werden nicht mehr erstellt, die Unterstützung wird in Version 5 vollständig entfernt",
"NotificationsTelegramSettingsIncludeInstanceName": "Instanzname im Titel einfügen",
"NotificationsTelegramSettingsIncludeInstanceNameHelpText": "Optional den Instanznamen in die Benachrichtigung einfügen",
"IndexerSettingsFailDownloadsHelpText": "Beim Verarbeiten abgeschlossener Downloads behandelt {appName} diese ausgewählten Dateitypen als fehlgeschlagene Downloads.",
"UserInvokedSearch": "Benutzerinitiierte Suche",
"IndexerSettingsFailDownloads": "Fehlgeschlagene Downloads"
}

View File

@@ -1667,12 +1667,14 @@
"ReleaseProfiles": "Release Profiles",
"ReleaseProfilesLoadError": "Unable to load Release Profiles",
"ReleaseRejected": "Release Rejected",
"ReleasePush": "Release Push",
"ReleaseSceneIndicatorAssumingScene": "Assuming Scene numbering.",
"ReleaseSceneIndicatorAssumingTvdb": "Assuming TVDB numbering.",
"ReleaseSceneIndicatorMappedNotRequested": "Mapped episode wasn't requested in this search.",
"ReleaseSceneIndicatorSourceMessage": "{message} releases exist with ambiguous numbering, unable to reliably identify episode.",
"ReleaseSceneIndicatorUnknownMessage": "Numbering varies for this episode and release does not match any known mappings.",
"ReleaseSceneIndicatorUnknownSeries": "Unknown episode or series.",
"ReleaseSource": "Release Source",
"ReleaseTitle": "Release Title",
"ReleaseType": "Release Type",
"Reload": "Reload",
@@ -2118,6 +2120,7 @@
"UsenetDelayTime": "Usenet Delay: {usenetDelay}",
"UsenetDisabled": "Usenet Disabled",
"Username": "Username",
"UserInvokedSearch": "User Invoked Search",
"UtcAirDate": "UTC Air Date",
"Version": "Version",
"VersionNumber": "Version {version}",

View File

@@ -4,15 +4,15 @@
"Added": "Lisäysaika",
"AppDataLocationHealthCheckMessage": "Päivityksiä ei sallita, jotta AppData-kansion poistaminen päivityksen yhteydessä voidaan estää",
"DownloadClientSortingHealthCheckMessage": "Latauspalvelun \"{downloadClientName}\" {sortingMode} on kytketty käyttöön {appName}in kategorialle ja tuontiongelmien välttämiseksi se tulisi poistaa käytöstä.",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "RSS-synkronointia varten ei ole määritetty tietolähteitä ja tämän vuoksi {appName} ei kaappaa uusia julkaisuja automaattisesti.",
"IndexerSearchNoInteractiveHealthCheckMessage": "Manuaalihaulle ei ole määritetty tietolähteitä, eikä {appName} sen vuoksi löydä sillä tuloksia.",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "RSS-synkronoinnille ei ole määritetty hakupalveluita, eikä {appName} tämän vuoksi kaappaa uusia julkaisuja automaattisesti.",
"IndexerSearchNoInteractiveHealthCheckMessage": "Manuaalihaulle ei ole määritetty hakupalveluita, eikä {appName} sen vuoksi löydä sillä tuloksia.",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Latauspalvelu {downloadClientName} ilmoitti tiedostosijainniksi \"{path}\", mutta {appName} ei näe sitä. Kansion käyttöoikeuksia on ehkä muokattava.",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} näkee ladatauskansion \"{downloadPath}\", mutta ei voi avata sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
"RemotePathMappingImportEpisodeFailedHealthCheckMessage": "{appName} ei voinut tuoda jaksoja. Katso tarkemmat tiedot lokista.",
"RemotePathMappingGenericPermissionsHealthCheckMessage": "Latauspalvelu {downloadClientName} tallentaa lataukset kohteeseen \"{path}\", mutta {appName} ei näe sitä. Kansion käyttöoikeuksia on ehkä muokattava.",
"IndexerSearchNoAutomaticHealthCheckMessage": "Automaattihakua varten ei ole määritetty tietolähteitä ja tämän vuoksi {appName}in automaattihaku ei löydä tuloksia.",
"IndexerSearchNoAutomaticHealthCheckMessage": "Automaattihaulle ei ole määritetty hakupalveluita, eikä {appName}in automaattihaku tämän vuoksi löydä tuloksia.",
"AgeWhenGrabbed": "Ikä (kaappaushetkellä)",
"GrabId": "Kaappauksen tunniste",
"GrabId": "Kaappauksen ID",
"BindAddressHelpText": "Toimiva IP-osoite, localhost tai * (tähti) kaikille verkkoliitännöille.",
"BrowserReloadRequired": "Vaatii selaimen sivupäivityksen (F5).",
"CustomFormatHelpText": "Julkaisut pisteytetään niitä vastaavien mukautettujen muotojen pisteiden yhteenlaskun summalla. {appName} tallentaa julkaisun, jos se parantaa arvosanaa nykyisellä laadulla tai parempaa.",
@@ -43,7 +43,7 @@
"TimeFormat": "Kellonajan esitys",
"UiLanguage": "Käyttöliittymän kieli",
"UiLanguageHelpText": "{appName}in käyttöliittymän kieli.",
"AutomaticUpdatesDisabledDocker": "Automaattisia päivityksiä ei tueta suoraan käytettäessä Dockerin päivitysmekanismia. Docker-säiliö on päivitettävä {appName}in ulkopuolella tai päivitys on suoritettava komentosarjalla.",
"AutomaticUpdatesDisabledDocker": "Automaattisia päivityksiä ei tueta suoraan käytettäessä Dockerin päivitysmekanismia. Docker-säiliö on päivitettävä {appName}in ulkopuolella, tai päivitys on suoritettava komentosarjalla.",
"AddListExclusionSeriesHelpText": "Estä {appName}ia lisäämästä sarjaa listoilta.",
"AppUpdated": "{appName} on päivitetty",
"AuthenticationMethodHelpText": "Vaadi {appName}in käyttöön käyttäjätunnus ja salasana.",
@@ -136,7 +136,7 @@
"AuthForm": "Lomake (kirjautumissivu)",
"Backup": "Varmuuskopiointi",
"AutomaticSearch": "Automaattihaku",
"BackupRetentionHelpText": "Säilytysjaksoa vanhemmat varmuuskopiot siivotaan automaattisesti.",
"BackupRetentionHelpText": "Säilytysaikaa vanhemmat varmuuskopiot siivotaan automaattisesti.",
"BackupsLoadError": "Varmuuskopioinnin lataus epäonnistui",
"BypassDelayIfAboveCustomFormatScoreMinimumScoreHelpText": "Mukautetun muodon vähimmäispisteytys, jolla ensisijaisen protokollan viiveen ohitus sallitaan.",
"BypassDelayIfHighestQuality": "Ohita, jos korkein laatu",
@@ -182,8 +182,8 @@
"IndexerSettingsApiUrl": "Rajapinnan URL",
"IndexerSettingsCookie": "Eväste",
"IndexerSettingsPasskey": "Suojausavain",
"IndexerTagSeriesHelpText": "Tietolähdettä käytetään vain vähintään yhdellä täsmäävällä tunnisteella merkityille sarjoille. Käytä kaikille jättämällä tyhjäksi.",
"IndexerValidationQuerySeasonEpisodesNotSupported": "Tietolähde ei tue nykyistä kyselyä. Tarkista tukeeko se kategorioita ja kausien/jaksojen etsintää.",
"IndexerTagSeriesHelpText": "Hakupalvelua käytetään vain vähintään yhdellä täsmäävällä tunnisteella merkityille sarjoille. Käytä kaikille jättämällä tyhjäksi.",
"IndexerValidationQuerySeasonEpisodesNotSupported": "Hakupalvelu ei tue nykyistä kyselyä. Tarkista tukeeko se kategorioita ja kausien/jaksojen etsintää.",
"InfoUrl": "Tietojen URL",
"InstanceName": "Instanssin nimi",
"InteractiveImportLoadError": "Manuaalituonnin kohteiden lataus epäonnistui",
@@ -200,7 +200,7 @@
"IndexerSettingsWebsiteUrl": "Verkkosivuston URL",
"IndexerValidationInvalidApiKey": "Rajapinnan avain ei kelpaa",
"IndexersLoadError": "Tietolähteiden lataus epäonnistui",
"IndexersSettingsSummary": "Tietolähteet ja niiden asetukset.",
"IndexersSettingsSummary": "Hakupalvelut ja julkaisurajoitukset.",
"Indexers": "Tietolähteet",
"KeyboardShortcutsFocusSearchBox": "Kohdista hakukenttä",
"LastExecution": "Edellinen suoritus",
@@ -252,7 +252,7 @@
"SceneInformation": "Kohtaustiedot",
"SelectFolderModalTitle": "{modalTitle} Valitse kansio",
"SelectQuality": "Valitse laatu",
"SeriesFolderFormatHelpText": "Käytetään kun lisätään uusi sarja tai siirretään sarjoja sarjaeditorin avulla.",
"SeriesFolderFormatHelpText": "Käytetään kun lisätään uusia sarjoja tai siirretään vanhoja kun niiden tietoja muokataan.",
"SeriesIndexFooterMissingMonitored": "Jaksoja puuttuu (sarjaa valvotaan)",
"ShowPreviousAiring": "Näytä edellinen esitys",
"ShowBannersHelpText": "Korvaa nimet bannerikuvilla.",
@@ -320,7 +320,7 @@
"StandardEpisodeTypeFormat": "Kausien ja jaksojen numerointi ({format})",
"StartupDirectory": "Käynnistyskansio",
"Started": "Alkoi",
"SupportedIndexersMoreInfo": "Saat tietoja yksittäisistä tietolähteistä painamalla niiden ohessa olevia lisätietopainikkeita.",
"SupportedIndexersMoreInfo": "Saat tietoja yksittäisistä palveluista painamalla niiden ohessa olevia lisätietopainikkeita.",
"Status": "Tila",
"SupportedListsSeries": "{appName} tukee useita listoja, joiden avulla sarjoja voidaan tuoda tietokantaan.",
"SystemTimeHealthCheckMessage": "Järjestelmän aika on ainakin vuorokauden pielessä, eivätkä ajoitetut tehtävät toimi oikein ennen kuin se on korjattu.",
@@ -362,7 +362,7 @@
"Monitored": "Valvonta",
"ApplyTagsHelpTextHowToApplyDownloadClients": "Tunnisteiden käyttö valituille latauspalveluille",
"ApplyTagsHelpTextHowToApplyImportLists": "Tunnisteiden käyttö valituille tuontilistoille",
"ApplyTagsHelpTextHowToApplySeries": "Tunnisteiden käyttö valituille sarjoille",
"ApplyTagsHelpTextHowToApplySeries": "Tunnisteiden käyttö valituille sarjoille:",
"LogFiles": "Lokitiedostot",
"None": "Ei mitään",
"RemoveSelectedItems": "Poista valitut kohteet",
@@ -429,7 +429,7 @@
"EditDownloadClientImplementation": "Muokataan latauspalvelua {implementationName}",
"EditImportListImplementation": "Muokataan tuontilistaa {implementationName}",
"EndedOnly": "Vain päättyneet",
"EnableInteractiveSearchHelpTextWarning": "Tämä tietolähde ei tue hakua.",
"EnableInteractiveSearchHelpTextWarning": "Tämä hakupalvelu ei tue hakua.",
"Episode": "Jakso",
"EpisodeCount": "Jaksomäärä",
"EpisodeAirDate": "Jakson esitysaika",
@@ -684,7 +684,7 @@
"QuickSearch": "Pikahaku",
"QualityProfilesLoadError": "Laatuprofiilien lataus epäonnistui",
"SeriesDetailsCountEpisodeFiles": "{episodeFileCount} jaksotiedostoa",
"SeriesEditor": "Sarjaeditori",
"SeriesEditor": "Sarjojen muokkaus",
"SeriesIndexFooterMissingUnmonitored": "Jaksoja puuttuu (sarjaa ei valvota)",
"SeriesIsUnmonitored": "Sarjaa ei valvota",
"Sunday": "Sunnuntai",
@@ -700,7 +700,7 @@
"FileBrowserPlaceholderText": "Kirjoita sijainti tai selaa se alta",
"FeatureRequests": "Kehitysehdotukset",
"IndexerPriority": "Tietolähteiden painotus",
"IndexerOptionsLoadError": "Tietolähdeasetusten lataus epäonnistui",
"IndexerOptionsLoadError": "Hakupalveluasetusten lataus epäonnistui",
"NoTagsHaveBeenAddedYet": "Tunnisteita ei ole vielä lisätty.",
"PreferProtocol": "Suosi {preferredProtocol}-protokollaa",
"RemotePathMappings": "Etäsijaintien kohdistukset",
@@ -708,7 +708,7 @@
"Scheduled": "Ajoitukset",
"RootFolders": "Juurikansiot",
"RssSyncInterval": "RSS-synkronoinnin ajoitus",
"SelectSeries": "Valitse sarja",
"SelectSeries": "Sarjojen monivalinta",
"SelectSeasonModalTitle": "{modalTitle} Valitse kausi",
"ShowUnknownSeriesItems": "Näytä tuntemattomien sarjojen kohteet",
"TimeLeft": "Aikaa jäljellä",
@@ -749,7 +749,7 @@
"DownloadClientOptionsLoadError": "Latauspalveluasetusten lataus epäonnistui",
"UseHardlinksInsteadOfCopy": "Käytä hardlink-kytköksiä",
"TorrentBlackholeSaveMagnetFilesReadOnlyHelpText": "Tiedostojen siirron sijaan tämä ohjaa {appName}in kopioimaan tiedostot tai käyttämään hardlink-kytköksiä (asetuksista/järjestelmästä riippuen).",
"IndexerValidationUnableToConnectHttpError": "Tietolähteeseen ei voitu muodostaa yhteyttä. Tarkista DNS-asetukset ja varmista, että IPv6 toimii tai on poistettu käytöstä. {exceptionMessage}.",
"IndexerValidationUnableToConnectHttpError": "Hakupalveluun ei voitu muodostaa yhteyttä. Tarkista DNS-asetukset ja varmista, että IPv6 toimii tai on poistettu käytöstä. {exceptionMessage}.",
"BypassDelayIfHighestQualityHelpText": "Ohitusviive kun julkaisun laatu vastaa laatuprofiilin korkeinta käytössä olevaa laatua halutulla protokollalla.",
"IndexerHDBitsSettingsCategoriesHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
"IndexerHDBitsSettingsCategories": "Kategoriat",
@@ -919,7 +919,7 @@
"IndexerSettings": "Tietolähdeasetukset",
"IncludeHealthWarnings": "Sisällytä kuntovaroitukset",
"ListsLoadError": "Listojen lataus epäonnistui",
"IndexerValidationUnableToConnect": "Tietolähteeseen ei voitu muodostaa yhteyttä: {exceptionMessage}. Etsi tietoja tämän virheen lähellä olevista lokimerkinnöistä.",
"IndexerValidationUnableToConnect": "Hakupalveluun ei voitu muodostaa yhteyttä: {exceptionMessage}. Etsi tietoja tämän virheen lähellä olevista lokimerkinnöistä.",
"MetadataSettingsSeriesSummary": "Luo metatietotiedostot kun jaksoja tuodaan tai sarjojen tietoja päivitetään.",
"MassSearchCancelWarning": "Tämä on mahdollista keskeyttää vain käynnistämällä {appName} uudelleen tai poistamalla kaikki tietolähteet käytöstä.",
"MetadataSourceSettingsSeriesSummary": "Tietoja siitä, mistä {appName} saa sarjojen ja jaksojen tiedot.",
@@ -1032,7 +1032,7 @@
"MonitorNewItems": "Valvo uusia kohteita",
"MonitorSpecialEpisodesDescription": "Valvo kaikkia erikoisjaksoja muuttamatta muiden jaksojen tilaa.",
"MonitorNoNewSeasons": "Ei uusia kausia",
"OpenSeries": "Kun sarja avataan",
"OpenSeries": "Avaa sarja",
"NoChange": "Ei muutosta",
"Today": "Tänään",
"Titles": "Nimikkeet",
@@ -1101,7 +1101,7 @@
"ImportExtraFiles": "Tuo oheistiedostot",
"DeleteCustomFormat": "Poista mukautettu muoto",
"Repeat": "Toista",
"InteractiveImport": "Manuaalituonti",
"InteractiveImport": "Manuaalinen tuonti",
"NotificationsKodiSettingAlwaysUpdate": "Päivitä aina",
"NotificationsKodiSettingAlwaysUpdateHelpText": "Määrittää päivitetäänkö kirjasto myös videotoiston aikana.",
"Connection": "Yhteys",
@@ -1156,7 +1156,7 @@
"ReleaseSceneIndicatorMappedNotRequested": "Valittu jakso ei sisältynyt tähän hakuun.",
"ReplaceWithSpaceDash": "Korvaa yhdistelmällä \"välilyönti yhdysmerkki\"",
"ReplaceWithSpaceDashSpace": "Korvaa yhdistelmällä \"välilyönti yhdysmerkki välilyönti\"",
"SearchIsNotSupportedWithThisIndexer": "Tämä tietolähde ei tue hakua.",
"SearchIsNotSupportedWithThisIndexer": "Tämä hakupalvelu ei tue hakua.",
"DownloadClientDownloadStationProviderMessage": "{appName} ei voi muodostaa yhteyttä Download Stationiin, jos DSM-tili on määritetty käyttämään kaksivaiheista tunnistautumista.",
"UnsavedChanges": "Muutoksia ei ole tallennettu",
"VideoDynamicRange": "Videon dynaaminen alue",
@@ -1205,7 +1205,7 @@
"Authentication": "Tunnistautuminen",
"AutomaticAdd": "Automaattinen lisäys",
"AutoAdd": "Automaattilisäys",
"AutoRedownloadFailedHelpText": "Etsi ja pyri lataamaan eri julkaisu automaattisesti.",
"AutoRedownloadFailedHelpText": "Etsi ja pyri lataamaan korvaava julkaisu automaattisesti.",
"Clone": "Monista",
"CloneCustomFormat": "Monista mukautettu muoto",
"ConnectSettings": "Ilmoituspavelun asetukset",
@@ -1238,7 +1238,7 @@
"MultiEpisodeInvalidFormat": "Useita jaksoja: virheellinen kaava",
"AutoRedownloadFailedFromInteractiveSearch": "Uudelleenlataus manuaalihaun tuloksista epäonnistui",
"Blocklist": "Estolista",
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Etsi ja pyri lataamaan eri julkaisu automaattisesti vaikka epäonnistunut julkaisu oli kaapattu manuaalihaun tuloksista.",
"AutoRedownloadFailedFromInteractiveSearchHelpText": "Etsi ja lataa uusi vastaava julkaisu, kun epäonnistunut lataus on valittu manuaalihaun tuloksista.",
"StandardEpisodeFormat": "Tavallisten jaksojen kaava",
"SceneNumberNotVerified": "Kohtausnumeroa ei ole vielä vahvistettu",
"Scene": "Kohtaus",
@@ -1310,8 +1310,8 @@
"Ok": "Ok",
"General": "Yleiset",
"Folders": "Kansiot",
"IndexerRssNoIndexersAvailableHealthCheckMessage": "RSS-syötteitä tukevat tietolähteet eivät ole hiljattaisten tietolähdevirheiden vuoksi tilapaisesti käytettävissä.",
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "Hakua tukevat tietolähteet eivät ole hiljattaisten tietolähdevirheiden vuoksi tilapaisesti käytettävissä.",
"IndexerRssNoIndexersAvailableHealthCheckMessage": "RSS-syötteitä tukevat hakupalvelut eivät ole hiljattaisten hakupalveluvirheiden vuoksi tilapäisesti käytettävissä.",
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "Hakua tukevat hakupalvelut eivät ole hiljattaisten hakupalveluvirheiden vuoksi tilapäisesti käytettävissä.",
"IndexerSettingsCategoriesHelpText": "Pudotusvalikko. Poista vakio-/päivittäissarjat käytöstä jättämällä tyhjäksi.",
"IndexerSettingsSeasonPackSeedTime": "Kausikoosteiden jakoaika",
"KeyboardShortcutsSaveSettings": "Tallenna asetukset",
@@ -1349,7 +1349,7 @@
"IndexerSettingsAnimeCategoriesHelpText": "Pudotusvalikko. Poista anime käytöstä jättämällä tyhjäksi.",
"IndexerValidationCloudFlareCaptchaExpired": "CloudFlaren CAPTCHA-tunniste on vanhentunut. Päivitä se.",
"KeyboardShortcutsConfirmModal": "Vastaa vahvistuskysymykseen hyväksyvästi",
"ManualImport": "Manuaalituonti",
"ManualImport": "Manuaalinen tuonti",
"MediaManagementSettings": "Medianhallinnan asetukset",
"Mechanism": "Mekanismi",
"Negate": "Kiellä",
@@ -1403,7 +1403,7 @@
"NotSeasonPack": "Ei ole kausikooste",
"OpenBrowserOnStartHelpText": " Avaa {appName}in verkkokäyttöliittymä verkkoselaimeen käynnistyksen yhteydessä.",
"Password": "Salasana",
"ReleaseProfileIndexerHelpText": "Määritä mitä tietolähdettä profiili koskee.",
"ReleaseProfileIndexerHelpText": "Määritä mitä hakupalvelua profiili koskee.",
"SeasonCount": "Kausien määrä",
"SeasonNumberToken": "Kausi {seasonNumber}",
"SeasonNumber": "Kauden numero",
@@ -1441,7 +1441,7 @@
"SetReleaseGroup": "Aseta julkaisuryhmä",
"NotificationsTraktSettingsRefreshToken": "Päivitä tunniste",
"IndexerSettingsAdditionalNewznabParametersHelpText": "Huomioi, että kategorian vaihdon jälkeen alaryhmiin on lisättävä pakolliset/rajoitetut aliryhmäsäännöt vieraskielisten julkaisujen välttämiseksi.",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {indexerNames}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Hakupalvelut eivät ole käytettävissä yli kuusi tuntia kestäneiden virheiden vuoksi: {indexerNames}.",
"FullSeason": "Koko kausi",
"ShowRelativeDates": "Käytä suhteellisia päiväyksiä",
"ProxyPasswordHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
@@ -1630,7 +1630,7 @@
"RemoveQueueItemRemovalMethodHelpTextWarning": "\"Poista latauspalvelusta\" poistaa latauksen ja sen tiedostot.",
"UnableToLoadAutoTagging": "Automaattimerkinnän lataus epäonnistui",
"IndexerSettingsRejectBlocklistedTorrentHashes": "Hylkää estetyt torrent-hajautusarvot kaapattaessa",
"IndexerSettingsRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein joidenkin tietolähteiden RSS-syötteestä tai hausta. Tämän käyttöönotto mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, kuitenkin ennen kuin niitä välitetään latauspalvelulle.",
"IndexerSettingsRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein joidenkin hakupalveluiden RSS-syötteestä tai hausta. Tämän käyttöönotto mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, kuitenkin ennen kuin niitä välitetään latauspalvelulle.",
"NotificationsSynologyValidationTestFailed": "Ei ole Synology tai synoindex ei ole käytettävissä",
"NotificationsSlackSettingsIconHelpText": "Muuta Slack-julkaisuissa käytettävää kuvaketta (emoji tai URL-osoite).",
"NotificationsTwitterSettingsConsumerKey": "Kuluttajan avain",
@@ -1671,7 +1671,7 @@
"FilterLessThanOrEqual": "on pienempi kuin tai sama",
"FilterNotInLast": "ei kuluneina",
"FilterNotInNext": "ei seuraavina",
"IndexerValidationNoResultsInConfiguredCategories": "Kysely onnistui, mutta tietolähteesi ei palauttanut tuloksia määrietystyistä kategorioista. Tämä voi johtua tietolähteen ongelmasta tai tietolähteelle määritetyistä kategoria-asetuksista.",
"IndexerValidationNoResultsInConfiguredCategories": "Kysely onnistui, mutta hakupalvelusi ei palauttanut tuloksia määrietystyistä kategorioista. Tämä voi johtua palvelun ongelmasta tai sille määritetyistä kategoria-asetuksista.",
"TvdbId": "TheTVDB ID",
"DownloadClientSettingsInitialState": "Aloitustila",
"DownloadClientSettingsRecentPriority": "Uusien painotus",
@@ -1712,7 +1712,7 @@
"MaximumSingleEpisodeAgeHelpText": "Täysiä tuotantokausia etsittäessä hyväksytään vain kausipaketit, joiden uusin jakso on tätä asetusta vanhempi. Koskee vain vakiosarjoja. Poista käytöstä asettamalla arvoksi \"0\" (nolla).",
"FailedToLoadSystemStatusFromApi": "Järjestelmän tilan lataus rajapinnasta epäonnistui",
"DownloadClientSabnzbdValidationEnableDisableTvSortingDetail": "Sinun on poistettava televisiojärjestely käytöstä {appName}in käyttämältä kategorialta tuontiongelmien välttämiseksi. Korjaa tämä SABnzb:stä.",
"IndexerValidationNoRssFeedQueryAvailable": "RSS-syötekyselyä ei ole käytettävissä. Tämä voi johtua tietolähteen ongelmasta tai tietolähteelle määritetyistä kategoria-asetuksista.",
"IndexerValidationNoRssFeedQueryAvailable": "RSS-syötekyselyitä ei ole käytettävissä. Tämä voi johtua hakupalvelun ongelmasta tai palvelulle määritetyistä kategoria-asetuksista.",
"DownloadClientSabnzbdValidationEnableDisableDateSortingDetail": "Sinun on poistettava päiväysjärjestely käytöstä {appName}in käyttämältä kategorialta tuontiongelmien välttämiseksi. Korjaa tämä SABnzb:stä.",
"DownloadClientSabnzbdValidationEnableDisableMovieSortingDetail": "Sinun on poistettava elokuvien järjestely käytöstä {appName}in käyttämältä kategorialta tuontiongelmien välttämiseksi. Korjaa tämä SABnzb:stä.",
"DownloadClientSettingsCategoryHelpText": "Luomalla {appName}ille oman kategorian, erottuvat sen lataukset muiden lähteiden latauksista. Kategorian määritys on valinnaista, mutta erittäin suositeltavaa.",
@@ -1739,7 +1739,7 @@
"Repack": "Uudelleenpaketoitu",
"SupportedAutoTaggingProperties": "{appName} tukee automaattimerkinnän säännöissä seuraavia arvoja",
"RegularExpressionsCanBeTested": "Säännöllisiä lausekkeita voidaan testata [täällä]({url}).",
"RssSyncIntervalHelpTextWarning": "Tämä koskee kaikkia tietolähteitä. Noudata niiden asettamia sääntöjä.",
"RssSyncIntervalHelpTextWarning": "Tämä koskee kaikkia hakupalveluita. Noudata niiden asettamia sääntöjä.",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla, esim. \"{url}\". Oletus on \"{defaultApiUrl}\".",
"DownloadClientFreeboxSettingsHostHelpText": "Freeboxin isäntänimi tai IP-osoite. Oletus on \"{url}\" (toimii vain samassa verkossa).",
"DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on {port}.",
@@ -1804,7 +1804,7 @@
"ClickToChangeIndexerFlags": "Muuta tietolähteen lippuja painamalla tästä",
"CustomFormatsSpecificationFlag": "Lippu",
"SelectIndexerFlags": "Valitse tietolähteen liput",
"SetIndexerFlagsModalTitle": "{modalTitle} Aseta tietolähteen liput",
"SetIndexerFlagsModalTitle": "{modalTitle} Aseta hakupalvelun liput",
"CustomFilter": "Mukautettu suodatin",
"Label": "Nimi",
"ShowTagsHelpText": "Näytä tunnisteet julisteen alla.",
@@ -2027,7 +2027,7 @@
"ReleaseRejected": "Julkaisu hylättiin",
"ReleaseSceneIndicatorSourceMessage": "{message} julkaisua on numeroitu epäselvästi, eikä jaksoa voida tunnistaa luotettavasti.",
"RetentionHelpText": "Vain Usenet: määritä rajoittamaton säilytys asettamalla arvoksi 0.",
"SupportedIndexers": "{appName} tukee kaikkien Newznab-yhteensopivien tietolähteiden ohella myös monia muita alla listattuja tietolähteitä.",
"SupportedIndexers": "{appName} tukee kaikkien Newznab-yhteensopivien hakupalveluiden ohella myös monia muita alla listattuja palveluita.",
"TagIsNotUsedAndCanBeDeleted": "Tunniste ei ole käytössä ja voidaan poistaa.",
"Umask775Description": "{octal} Omistajalla ja ryhmällä kirjoitus, muilla luku",
"SeasonsMonitoredPartial": "Osittainen",
@@ -2111,23 +2111,23 @@
"MarkAsFailed": "Merkitse epäonnistuneeksi",
"ImportListsSonarrSettingsFullUrlHelpText": "Tuonnin lähteenä olevan {appName}-instanssin täydellinen URL-osoite portteineen.",
"ImportListsValidationTestFailed": "Testi keskeytettiin virheen vuoksi: {exceptionMessage}",
"IndexerSettingsRssUrlHelpText": "Syötä tietolähteen {indexer} kanssa toimivan RSS-syötteen URL-osoite.",
"IndexerSettingsRssUrlHelpText": "Syötä hakupalvelun {indexer} kanssa toimivan RSS-syötteen URL-osoite.",
"ImportListsSonarrValidationInvalidUrl": "{appName} URL on virheellinen. Puuttuuko URL-perusta?",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Ota valmistuneiden latausten käsittely käyttöön, jos mahdollista (ei tue useiden tietokoneiden ympäristöä).",
"InvalidFormat": "Virheellinen muoto",
"IndexerValidationUnableToConnectTimeout": "Tietolähteeseen ei voitu muodostaa yhteyttä, mahdollisesti aikakatkaisun vuoksi. yritä uudelleen tai tarkista verkkoasetukset. {exceptionMessage}.",
"IndexerValidationUnableToConnectTimeout": "Hakupalveluun ei voitu muodostaa yhteyttä, mahdollisesti aikakatkaisun vuoksi. yritä uudelleen tai tarkista verkkoasetukset. {exceptionMessage}.",
"IndexerSettingsCookieHelpText": "Jos sivusto vaatii RSS-syötteen käyttöön kirjautumisevästeen, on se noudettava selaimen avulla.",
"IndexerValidationUnableToConnectServerUnavailable": "Tietolähteeseen ei voitu muodostaa yhteyttä, koska sen palvelin ei ole tavoitettavissa. Yritä myöhemmin uudelleen. {exceptionMessage}.",
"IndexerValidationJackettAllNotSupportedHelpText": "Jackettin \"all\"-päätettä ei tueta. Lisää tietolähteet yksitellen.",
"IndexerValidationUnableToConnectInvalidCredentials": "Tietolähteeseen ei voitu muodostaa yhteyttä virheellisten käyttäjätietojen vuoksi. {exceptionMessage}.",
"IndexerValidationUnableToConnectServerUnavailable": "Hakupalveluun ei voitu muodostaa yhteyttä, koska sen palvelin ei ole tavoitettavissa. Yritä myöhemmin uudelleen. {exceptionMessage}.",
"IndexerValidationJackettAllNotSupportedHelpText": "Jackettin \"all\"-päätettä ei tueta. Lisää hakupalvelut yksitellen.",
"IndexerValidationUnableToConnectInvalidCredentials": "Hakupalveluun ei voitu muodostaa yhteyttä virheellisten käyttäjätietojen vuoksi. {exceptionMessage}.",
"IndexerSettingsRssUrl": "RSS-syötteen URL",
"ImportListsSonarrSettingsSyncSeasonMonitoring": "Synkronoi sarjojen valvonta",
"ImportListsSonarrSettingsSyncSeasonMonitoringHelpText": "Synkronoi kausien valvontatila {appName}-instanssista. Tämän ollessa käytössä omaa valvontatilaa ei huomioida.",
"ImportListsValidationUnableToConnectException": "Tuontilistaan ei voitu muodostaa yhteyttä: {exceptionMessage}. Saat lisätietoja virheen lähellä olevista lokimerkinnöistä.",
"IndexerIPTorrentsSettingsFeedUrlHelpText": "IPTorrentsin luoma täysi RSS-syöte, joka käyttää vain valitsemiasi kategorioita (HD, SD, x264, yms...).",
"IndexerJackettAllHealthCheckMessage": "Jackettin ei-tuettua \"all\"-päätettä käyttävät tietolähteet: {indexerNames}.",
"IndexerJackettAllHealthCheckMessage": "Jackettin ei-tuettua \"all\"-päätettä käyttävät hakupalvelut: {indexerNames}.",
"IndexerSettingsAllowZeroSizeHelpText": "Sallii syötteet, jotka eivät ilmoita julkaisujen kokoa. Huomioi, ettei kokoon liittyviä tarkistuksia tällöin suoriteta.",
"IndexerValidationSearchParametersNotSupported": "Tietolähde ei tue vaadittuja hakuparametreja.",
"IndexerValidationSearchParametersNotSupported": "Hakupalvelu ei tue vaadittuja hakuparametreja.",
"ImportListsSonarrSettingsFullUrl": "Täysi URL",
"ImportListsSonarrSettingsTagsHelpText": "Lähdeinstanssin tunnisteet, joilla tuodaan.",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Ota valmistuneiden latausten käsittely käyttöön, jos mahdollista.",
@@ -2138,11 +2138,14 @@
"IndexerSettingsMinimumSeeders": "Jakajien vähimmäismäärä",
"IndexerSettingsMinimumSeedersHelpText": "Kaappaukseen vaadittava jakajien vähimmäismäärä.",
"IndexerValidationCloudFlareCaptchaRequired": "Sivusto on suojattu CloudFlare CAPTCHA:lla ja se vaatii kelvollisen CAPTCHA-tunnisteen.",
"IndexerValidationFeedNotSupported": "Tietolähteen syötettä ei tueta: {exceptionMessage}",
"IndexerValidationJackettAllNotSupported": "Jackettin \"all\"-päätettä ei tueta. Lisää tietolähteet yksitellen.",
"IndexerValidationFeedNotSupported": "Hakupalvelun syötettä ei tueta: {exceptionMessage}",
"IndexerValidationJackettAllNotSupported": "Jackettin \"all\"-päätettä ei tueta. Lisää hakupalvelut yksitellen.",
"KeepAndUnmonitorSeries": "Säilytä sarja ja lopeta sen valvonta",
"KeepAndTagSeries": "Säilytä sarja ja merkitse se tunnisteella",
"IndexerValidationRequestLimitReached": "Pyyntörajoitus on saavutettu: {exceptionMessage}",
"IndexerValidationTestAbortedDueToError": "Testi keskeytettiin virheen vuoksi: {exceptionMessage}",
"IndexerValidationUnableToConnectResolutionFailure": "Tietolähteeseen ei voitu muodostaa yhteyttä. Tarkista yhteytesi tietolähteen palvelimeen ja DNS:ään. {exceptionMessage}."
"IndexerValidationUnableToConnectResolutionFailure": "Hakupalveluun ei voitu muodostaa yhteyttä. Tarkista yhteytesi hakupalvelun palvelimeen ja DNS:ään. {exceptionMessage}.",
"ReleaseSource": "Julkaisulähde",
"UserInvokedSearch": "Käyttäjä herätti haun",
"ReleasePush": "Julkaisun työntö"
}

View File

@@ -294,7 +294,7 @@
"Restart": "Redémarrer",
"RestartNow": "Redémarrer maintenant",
"SaveSettings": "Enregistrer les paramètres",
"ShowMonitoredHelpText": "Afficher l'état de surveillance sous le poster",
"ShowMonitoredHelpText": "Affiche l'état de surveillance sous le poster",
"SkipFreeSpaceCheck": "Ignorer la vérification de l'espace libre",
"Sunday": "Dimanche",
"TorrentDelay": "Retard du torrent",
@@ -401,7 +401,7 @@
"SearchForMissing": "Rechercher les manquants",
"SearchAll": "Tout rechercher",
"Series": "Série",
"ShowSearchHelpText": "Afficher le bouton de recherche au survol",
"ShowSearchHelpText": "Affiche le bouton de recherche au survol",
"SmartReplace": "Remplacement intelligent",
"SmartReplaceHint": "Dash ou Space Dash selon le nom",
"Space": "Espace",
@@ -435,7 +435,7 @@
"EditDownloadClientImplementation": "Modifier le client de téléchargement - {implementationName}",
"External": "Externe",
"Monday": "Lundi",
"ShowQualityProfileHelpText": "Afficher le profil de qualité sous l'affiche",
"ShowQualityProfileHelpText": "Affiche le profil de qualité sous l'affiche",
"IncludeCustomFormatWhenRenamingHelpText": "Inclure dans le format de renommage {Formats personnalisés}",
"SelectDropdown": "Sélectionner...",
"InteractiveImportNoFilesFound": "Aucun fichier vidéo n'a été trouvé dans le dossier sélectionné",
@@ -728,7 +728,7 @@
"ShowEpisodeInformation": "Afficher les informations sur l'épisode",
"ShowEpisodeInformationHelpText": "Afficher le titre et le numéro de l'épisode",
"ShowEpisodes": "Afficher les épisodes",
"ShowMonitored": "Afficher le chemin",
"ShowMonitored": "Afficher l'état de surveillance",
"ShowNetwork": "Afficher le réseau",
"ShowPath": "Afficher le chemin",
"ShowPreviousAiring": "Afficher la diffusion précédente",
@@ -737,7 +737,7 @@
"ShowSearch": "Afficher la recherche",
"ShowSeasonCount": "Afficher le nombre de saisons",
"ShowSizeOnDisk": "Afficher la taille sur le disque",
"ShowTitle": "Montrer le titre",
"ShowTitle": "Afficher le titre",
"ShowSeriesTitleHelpText": "Afficher le titre de la série sous l'affiche",
"ShowUnknownSeriesItems": "Afficher les éléments de série inconnus",
"ShowUnknownSeriesItemsHelpText": "Afficher les éléments sans série dans la file d'attente. Cela peut inclure des séries, des films ou tout autre élément supprimé dans la catégorie de {appName}",
@@ -1047,7 +1047,7 @@
"IncludeCustomFormatWhenRenaming": "Inclure un format personnalisé lors du changement de nom",
"InteractiveImportNoSeries": "Les séries doivent être choisies pour chaque fichier sélectionné",
"Level": "Niveau",
"LibraryImport": "Importer biblio.",
"LibraryImport": "Importer bibliothèque",
"ListExclusionsLoadError": "Impossible de charger les exclusions de liste",
"ListQualityProfileHelpText": "Les éléments de la liste du profil de qualité seront ajoutés avec",
"ListTagsHelpText": "Balises qui seront ajoutées lors de l'importation à partir de cette liste",
@@ -2075,7 +2075,7 @@
"DayOfWeekAt": "{day} à {time}",
"TomorrowAt": "Demain à {time}",
"TodayAt": "Aujourd'hui à {time}",
"ShowTagsHelpText": "Afficher les labels sous l'affiche",
"ShowTagsHelpText": "Affiche les labels sous l'affiche",
"ShowTags": "Afficher les labels",
"CountVotes": "{votes} votes",
"NoBlocklistItems": "Aucun élément de la liste de blocage",
@@ -2104,5 +2104,31 @@
"LogSizeLimit": "Limite de taille du journal",
"DeleteSelectedImportListExclusionsMessageText": "Êtes-vous sûr de vouloir supprimer les exclusions de la liste d'importation sélectionnée ?",
"CustomFormatsSpecificationExceptLanguage": "Excepté Langue",
"CustomFormatsSpecificationExceptLanguageHelpText": "Corresponf si l'autre langue que celle sélectionné est présente"
"CustomFormatsSpecificationExceptLanguageHelpText": "Correspond si l'autre langue que celle sélectionné est présente",
"IndexerSettingsFailDownloadsHelpText": "Lors du traitement des téléchargements terminés, {appName} traitera ces types de fichiers sélectionnés comme des téléchargements ayant échoué.",
"IndexerSettingsFailDownloads": "Échec des téléchargements",
"Completed": "Complété",
"CutoffNotMet": "Seuil non atteint",
"DownloadClientUnavailable": "Client de téléchargement indisponible",
"CountCustomFormatsSelected": "{count} format(s) personnalisé(s) sélectionné(s)",
"Delay": "Retard",
"NotificationsGotifySettingsMetadataLinks": "Liens de métadonnées",
"NotificationsGotifySettingsMetadataLinksHelpText": "Ajouter un lien vers les métadonnées de la série lors de l'envoi de notifications",
"MetadataKometaDeprecated": "Les fichiers Kometa ne seront plus créés, le support sera complètement supprimé dans la v5",
"Premiere": "Première",
"RecentFolders": "Dossiers récents",
"UpdatePath": "Chemin de mise à jour",
"UpdateSeriesPath": "Mettre à jour le chemin de la série",
"NoCustomFormatsFound": "Aucun format personnalisé trouvé",
"EditSelectedCustomFormats": "Modifier les formats personnalisés sélectionnés",
"SkipFreeSpaceCheckHelpText": "À utiliser lorsque {appName} ne parvient pas à détecter l'espace libre de votre dossier racine",
"MetadataPlexSettingsEpisodeMappings": "Mappages des épisodes",
"MetadataPlexSettingsEpisodeMappingsHelpText": "Inclure les mappages d'épisodes pour tous les fichiers dans le fichier .plexmatch",
"FailedToFetchSettings": "Impossible de récupérer les paramètres",
"DeleteSelectedCustomFormats": "Supprimer les format(s) personnalisé(s)",
"DeleteSelectedCustomFormatsMessageText": "Êtes-vous sûr de vouloir supprimer {count} format(s) personnalisé(s) sélectionné(s) ?",
"LastSearched": "Dernière recherche",
"FolderNameTokens": "Jetons de nom de dossier",
"ManageCustomFormats": "Gérer les formats personnalisés",
"Menu": "Menu"
}

View File

@@ -55,5 +55,207 @@
"AddCondition": "조건 추가",
"AddIndexerError": "새 인덱서를 추가 할 수 없습니다. 다시 시도해주세요.",
"TorrentBlackholeTorrentFolder": "토렌트 폴더",
"UseSsl": "SSL 사용"
"UseSsl": "SSL 사용",
"AddListExclusion": "목록 예외 추가",
"BeforeUpdate": "업데이트 전",
"BindAddress": "바인드 주소",
"RemotePathMappingsInfo": "원격 경로 매핑은 거의 필요하지 않습니다. {appName}와(과) 다운로드 클라이언트가 동일한 시스템에 있는 경우 경로를 일치시키는 것이 좋습니다. 상세 내용은 [위키]({wikiLink})를 참조하세요.",
"RemoveSelectedBlocklistMessageText": "블랙리스트에서 선택한 항목을 제거 하시겠습니까?",
"RemoveSelectedItemQueueMessageText": "대기열에서 {0} 항목 {1}을 제거하시겠습니까?",
"RssSync": "RSS 동기화",
"RssSyncInterval": "RSS 동기화 간격",
"SelectLanguages": "언어 선택",
"SizeOnDisk": "디스크 상 크기",
"SslCertPassword": "SSL 인증서 비밀번호",
"SslCertPasswordHelpText": "pfx 파일의 비밀번호",
"SslCertPath": "SSL 인증서 경로",
"SupportedIndexersMoreInfo": "개별 인덱서에 대한 상세 내용을 보려면 정보 버튼을 클릭하세요.",
"SupportedListsMoreInfo": "개별 가져오기 목록에 대한 상세 내용을 보려면 정보 버튼을 클릭하세요.",
"UiLanguage": "UI 언어",
"UiSettings": "UI 설정",
"UpgradeUntil": "품질까지 업그레이드",
"Uppercase": "대문자",
"AutoTaggingSpecificationStatus": "상태",
"BuiltIn": "내장",
"ChangeFileDate": "파일 날짜 변경",
"Delete": "삭제",
"DeleteSelectedIndexers": "인덱서 삭제",
"DownloadClientSettings": "클라이언트 설정 다운로드",
"GrabId": "ID 잡아",
"ImportLists": "기울기",
"LocalPath": "로컬 경로",
"AnalyticsEnabledHelpText": "익명의 사용 및 오류 정보를 {appName}의 서버에 보냅니다. 여기에는 브라우저에 대한 정보, 사용하는 {appName} WebUI 페이지, 오류 보고, OS 및 런타임 버전이 포함됩니다. 이 정보를 사용하여 기능 및 버그 수정의 우선 순위를 지정합니다.",
"Connection": "연결",
"Dates": "날짜",
"DownloadClientSettingsRecentPriority": "클라이언트 우선 순위",
"Day": "일",
"Debug": "디버그",
"EditIndexerImplementation": "인덱서 추가 - {implementationName}",
"Clone": "닫기",
"CleanLibraryLevel": "정리 라이브러리 수준",
"ClickToChangeQuality": "품질을 변경하려면 클릭",
"ClientPriority": "클라이언트 우선 순위",
"Component": "구성 요소",
"DeleteEmptyFolders": "빈 폴더 삭제",
"MinimumCustomFormatScore": "최소 사용자 정의 형식 점수",
"MinimumFreeSpaceHelpText": "사용 가능한 디스크 공간을 이보다 적게 남겨 둘 경우 가져오기 방지",
"MoveAutomatically": "빠른 가져오기",
"No": "아니",
"IndexerSettingsRejectBlocklistedTorrentHashes": "동기화 중 차단 목록에 있는 토렌트 해시 거부",
"NotificationsSimplepushSettingsEvent": "이벤트",
"AutomaticSearch": "자동 검색",
"CustomFormat": "사용자 정의 형식",
"DelayProfile": "지연 프로필",
"DelayProfiles": "지연 프로필",
"EnableRss": "RSS 활성화",
"ChangeFileDateHelpText": "가져오기 / 재검색시 파일 날짜 변경",
"CreateGroup": "그룹 만들기",
"RecyclingBinHelpText": "영화 파일은 영구적으로 삭제되지 않고 삭제되면 여기로 이동합니다",
"IconForCutoffUnmetHelpText": "컷오프가 충족되지 않은 경우 파일 아이콘 표시",
"RemotePath": "원격 경로",
"ChmodFolder": "chmod 폴더",
"RemotePathMappingHostHelpText": "원격 다운로드 클라이언트에 지정한 것과 동일한 호스트",
"RemotePathMappingRemotePathHelpText": "다운로드 클라이언트가 액세스하는 디렉토리의 루트 경로",
"RemoveFromBlocklist": "블랙리스트에서 제거",
"RequiredHelpText": "이 {implementationName} 조건은 적용 할 맞춤 형식에 대해 일치해야합니다. 그렇지 않으면 단일 {implementationName} 일치로 충분합니다.",
"ShowRelativeDates": "상대 날짜 표시",
"ShowRelativeDatesHelpText": "상대 (오늘 / 어제 / 기타) 또는 절대 날짜 표시",
"TablePageSize": "페이지 크기",
"TablePageSizeHelpText": "각 페이지에 표시 할 항목 수",
"TagCannotBeDeletedWhileInUse": "사용 중에는 삭제할 수 없습니다",
"AddImportListExclusionError": "새 목록 제외를 추가 할 수 없음 재시도해주세요.",
"AddQualityProfile": "품질 프로필 추가",
"AddReleaseProfile": "지연 프로필 편집",
"AutoRedownloadFailedHelpText": "다른 출시를 자동으로 검색하고 다운로드 시도",
"BypassProxyForLocalAddresses": "로컬 주소에 대한 프록시 우회",
"CancelPendingTask": "이 보류 중인 작업을 취소하시겠습니까?",
"CancelProcessing": "처리 취소",
"Certification": "인증",
"SslPort": "SSL 포트",
"CustomFormatsSettings": "사용자 정의 형식 설정",
"CustomFormatsSpecificationReleaseGroup": "출시 그룹",
"DownloadClientPneumaticSettingsNzbFolder": "Nzb 폴더",
"CopyToClipboard": "클립 보드에 복사",
"DeleteQualityProfile": "품질 프로필 삭제",
"DetailedProgressBarHelpText": "진행률 표시줄에 텍스트 표시",
"Disabled": "비활성화됨",
"DisabledForLocalAddresses": "로컬 주소에 대해 비활성화됨",
"DiskSpace": "디스크 공간",
"Filters": "필터",
"ImportListExclusions": "제외 목록",
"AddRemotePathMapping": "원격 경로 매핑 추가",
"AppUpdatedVersion": "{appName}이 버전 `{version}`으로 업데이트되었습니다. 최신 변경 사항을 받으려면 {appName}을 재로드해야 합니다 ",
"BackupIntervalHelpText": "자동 백업 간격",
"BackupNow": "지금 백업",
"Backups": "백업",
"ChmodFolderHelpText": "8 진수, 미디어 폴더 및 파일로 가져오기 / 이름 변경 중에 적용됨 (실행 비트 없음)",
"ChooseAnotherFolder": "다른 폴더 선택",
"CompletedDownloadHandling": "완료된 다운로드 처리",
"CopyUsingHardlinksHelpTextWarning": "간혹 파일 잠금으로 인해 시드중인 파일의 이름을 바꾸지 못할 수 있습니다. 일시적으로 시드를 비활성화하고 {appName}의 이름 바꾸기 기능을 해결 방법으로 사용할 수 있습니다.",
"CurrentlyInstalled": "현재 설치됨",
"CustomFormatsSettingsSummary": "사용자 정의 형식 및 설정",
"DeleteIndexer": "인덱서 삭제",
"DeleteNotification": "알림 삭제",
"DeleteRemotePathMapping": "원격 경로 매핑 편집",
"DeleteTag": "태그 삭제",
"Download": "다운로드",
"DownloadClientRootFolderHealthCheckMessage": "다운로드 클라이언트 {downloadClientName} 은(는) 루트 폴더 {rootFolderPath}에 다운로드를 저장합니다. 루트 폴더에 다운로드해서는 안됩니다.",
"IndexerSettingsRejectBlocklistedTorrentHashesHelpText": "해시에 의해 토렌트가 차단된 경우 일부 인덱서의 RSS/검색 중에 토렌트가 제대로 거부되지 않을 수 있습니다. 이 기능을 활성화하면 토렌트를 가져온 후 클라이언트로 전송하기 전에 토렌트를 거부할 수 있습니다.",
"DoneEditingGroups": "그룹 편집 완료",
"DotNetVersion": ".NET",
"EditImportListExclusion": "목록 제외 편집",
"EnableSsl": "SSL 활성화",
"Conditions": "조건",
"ConnectSettings": "연결 설정",
"AddImportListExclusion": "목록 예외 추가",
"AllFiles": "모든 파일",
"Always": "항상",
"Connect": "연결",
"ConnectionLostReconnect": "Radarr가 자동으로 연결을 시도하거나 아래에서 새로고침을 클릭할 수 있습니다.",
"CustomFormats": "사용자 정의 형식",
"Ui": "UI",
"DockerUpdater": "Docker 컨테이너를 업데이트하여 업데이트를 받으세요",
"EditConnectionImplementation": "애플리케이션 추가 - {implementationName}",
"From": "부터",
"BranchUpdate": "{appName} 업데이트에 사용할 파생 버전",
"DeleteBackup": "백업 삭제",
"DeleteSelectedDownloadClients": "다운로드 클라이언트 삭제",
"AgeWhenGrabbed": "연령 (잡았을 때)",
"AnalyseVideoFiles": "비디오 파일 분석",
"ApiKey": "API 키",
"AptUpdater": "apt를 사용하여 업데이트 설치",
"BranchUpdateMechanism": "외부 업데이트 메커니즘에서 사용하는 파생 버전",
"DeleteSpecification": "알림 삭제",
"Deleted": "삭제됨",
"Clear": "지우기",
"CloneProfile": "프로필 복제",
"CloneIndexer": "인덱서 복제",
"Cutoff": "중단점",
"Date": "날짜",
"DeleteDelayProfileMessageText": "이 지연 프로필을 삭제하시겠습니까?",
"DoNotBlocklistHint": "차단 목록에 추가하지 않고 제거",
"DoNotPrefer": "선호하지 않음",
"EnableHelpText": "이 메타데이터 유형에 대한 메타데이터 파일 생성 활성화",
"Docker": "Docker",
"Donations": "기부",
"ImportList": "기울기",
"ImportListSettings": "목록 설정",
"Add": "추가",
"Apply": "적용",
"ApplyTags": "태그 적용",
"Cancel": "취소",
"EditDownloadClientImplementation": "다운로드 클라이언트 추가 - {implementationName}",
"EditReleaseProfile": "지연 프로필 편집",
"AddRootFolder": "루트 폴더 추가",
"ExtraFileExtensionsHelpText": "가져올 추가 파일의 쉼표로 구분 된 목록 (.nfo는 .nfo-orig로 가져옴)",
"AddDelayProfile": "지연 프로필 추가",
"AddDownloadClient": "다운로드 클라이언트 추가",
"AddExclusion": "예외 추가",
"AddNewRestriction": "새로운 제한 추가",
"AuthForm": "양식 (로그인 페이지)",
"AuthBasic": "기본 (브라우저 팝업)",
"Authentication": "인증",
"Automatic": "자동",
"CertificateValidation": "인증서 검증",
"Close": "닫기",
"Connections": "연결",
"DeleteImportListExclusion": "가져오기 목록 제외 삭제",
"DoNotUpgradeAutomatically": "자동 업그레이드 안함",
"DownloadPropersAndRepacksHelpText": "Propers / Repacks로 자동 업그레이드할지 여부",
"NoIssuesWithYourConfiguration": "구성에 문제 없음",
"IncludeHealthWarnings": "건강 경고 포함",
"DownloadClientsSettingsSummary": "클라이언트 다운로드, 다운로드 처리 및 원격 경로 매핑",
"DownloadFailed": "다운로드 실패함",
"Downloaded": "다운로드됨",
"Downloading": "다운로드 중",
"ICalShowAsAllDayEvents": "종일 이벤트로 표시",
"Rating": "등급",
"RegularExpression": "일반 표현",
"Activity": "활동",
"Backup": "백업",
"AudioInfo": "오디오 정보",
"DownloadClient": "클라이언트 다운로드",
"ShortDateFormat": "짧은 날짜 형식",
"Yes": "예",
"Actions": "동작",
"About": "정보",
"EditConditionImplementation": "연결 추가 - {implementationName}",
"ICalLink": "iCal 링크",
"Agenda": "일정",
"DownloadClients": "클라이언트 다운로드",
"QualityProfile": "품질 프로필",
"Rss": "RSS",
"WhatsNew": "새로운 소식?",
"MaximumSize": "최대 크기",
"DeleteDownloadClient": "다운로드 클라이언트 삭제",
"DeleteImportListExclusionMessageText": "이 가져오기 목록 제외를 삭제하시겠습니까?",
"DeleteDelayProfile": "지연 프로필 삭제",
"DestinationRelativePath": "대상 상대 경로",
"File": "파일",
"ImportListsTraktSettingsGenres": "장르",
"InteractiveSearchModalHeader": "대화형 검색",
"ManualImportItemsLoadError": "수동 가져오기 항목을 로드할 수 없습니다",
"LongDateFormat": "긴 날짜 형식",
"Lowercase": "소문자",
"KeyboardShortcutsSaveSettings": "설정 저장"
}

View File

@@ -18,5 +18,42 @@
"Actions": "Handlinger",
"AddCustomFilter": "Legg til eget filter",
"AddConnection": "Legg til tilkobling",
"AddDelayProfile": "Legg til forsinkelsesprofil"
"AddDelayProfile": "Legg til forsinkelsesprofil",
"AddRootFolderError": "Kunne ikke legge til rotmappe",
"AddDelayProfileError": "Kunne ikke legge til ny forsinkelsesprofil, vennligst prøv igjen.",
"AddIndexerError": "Kunne ikke legge til ny indekser, vennligst prøv igjen.",
"AddList": "Legg til liste",
"AddListError": "Kunne ikke legge til ny liste, vennligst prøv igjen.",
"AddRootFolder": "Legg til Rotmappe",
"AddConnectionImplementation": "Legg til tilkobling - {implementationName}",
"AddDownloadClientImplementation": "Ny Nedlastingsklient - {implementationName}",
"AddImportListImplementation": "Legg til importliste - {implementationName}",
"AddIndexerImplementation": "Legg til indekser - {implementationName}",
"AddToDownloadQueue": "Legg til nedlastningskø",
"AddedToDownloadQueue": "Lagt til nedlastningskø",
"AfterManualRefresh": "Etter manuell oppdatering",
"AddCustomFormat": "Nytt Egendefinert format",
"AddCustomFormatError": "Kunne ikke legge til nytt egendefinert format, vennligst prøv på nytt.",
"AddDownloadClient": "Ny Nedlastingsklient",
"AddDownloadClientError": "Kunne ikke legge til ny Nedlastingsklient, vennligst prøv igjen.",
"AddImportList": "Ny Importliste",
"AddIndexer": "Legg til indekser",
"AddNewRestriction": "Legg til ny begrensning",
"AddNotificationError": "Kunne ikke legge til ny varsling, vennligst prøv igjen.",
"AddQualityProfile": "Legg til kvalitetsprofil",
"AddQualityProfileError": "Kunne ikke legge til ny kvalitetsprofil, vennligst prøv igjen.",
"AddReleaseProfile": "Legg til utgivelsesprofil",
"AddNew": "Legg til ny",
"Age": "Alder",
"Agenda": "Agenda",
"AddNewSeries": "Legg til ny serie",
"AddNewSeriesError": "Kunne ikke laste søkeresultat, vennligst prøv igjen.",
"AddNewSeriesHelpText": "Det er enkelt å legge til en ny serie. Bare begynn å taste navnet på serien du vil legge til.",
"AddNewSeriesRootFolderHelpText": "Undermappa \"{folder}\" vil bli automatisk laget",
"AddNewSeriesSearchForMissingEpisodes": "Søk etter manglende episoder",
"AddRemotePathMapping": "Legg til ekstern stimapping",
"AddRemotePathMappingError": "Kunne ikke legge til ny ekstern stimapping, vennligst prøv igjen.",
"AddSeriesWithTitle": "Legg til {title}",
"Added": "Lagt til",
"AddedDate": "Lagt til: {date}"
}

View File

@@ -1,7 +1,7 @@
{
"ApplyChanges": "Aplicar mudanças",
"AutomaticAdd": "Adição automática",
"CountSeasons": "{count} Temporadas",
"CountSeasons": "{count} temporadas",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "Nenhum cliente de download está disponível",
"DownloadClientStatusAllClientHealthCheckMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
"EditSelectedDownloadClients": "Editar clientes de download selecionados",
@@ -28,7 +28,7 @@
"PreviousAiring": "Exibição Anterior",
"Priority": "Prioridade",
"RemoveFailedDownloads": "Remover downloads com falha",
"QualityProfile": "Perfil de Qualidade",
"QualityProfile": "Perfil de qualidade",
"RefreshSeries": "Atualizar Séries",
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "Você está usando o docker; o cliente de download {downloadClientName} coloca os downloads em {path}, mas este diretório parece não existir dentro do contêiner. Revise seus mapeamentos de caminho remoto e configurações de volume de contêiner.",
"RemotePathMappingDownloadPermissionsEpisodeHealthCheckMessage": "O {appName} pode ver, mas não acessar o episódio baixado {path}. Provável erro de permissão.",
@@ -42,7 +42,7 @@
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "O cliente de download remoto {downloadClientName} relatou arquivos em {path}, mas este diretório parece não existir. Provavelmente faltando mapeamento de caminho remoto.",
"RemovedSeriesMultipleRemovedHealthCheckMessage": "A série {series} foi removida do TheTVDB",
"RemovedSeriesSingleRemovedHealthCheckMessage": "As séries {series} foram removidas do TheTVDB",
"RootFolder": "Pasta Raiz",
"RootFolder": "Pasta raiz",
"RootFolderMissingHealthCheckMessage": "Pasta raiz ausente: {rootFolderPath}",
"RootFolderMultipleMissingHealthCheckMessage": "Faltam várias pastas raiz: {rootFolderPaths}",
"SearchForMonitoredEpisodes": "Pesquisar episódios monitorados",
@@ -86,15 +86,15 @@
"RemotePathMappingWrongOSPathHealthCheckMessage": "O cliente de download remoto {downloadClientName} coloca os downloads em {path}, mas este não é um caminho {osName} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.",
"UpdateStartupNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{startupFolder}' não pode ser gravada pelo usuário '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{startupFolder}' está em uma pasta de translocação do App.",
"BlocklistReleases": "Lançamentos na lista de bloqueio",
"BlocklistReleases": "Bloquear lançamentos",
"CloneCondition": "Clonar condição",
"CloneCustomFormat": "Clonar formato personalizado",
"Close": "Fechar",
"Delete": "Excluir",
"DeleteCondition": "Excluir condição",
"DeleteConditionMessageText": "Tem certeza de que deseja excluir a condição '{name}'?",
"DeleteConditionMessageText": "Tem certeza de que deseja excluir a condição \"{name}\"?",
"DeleteCustomFormat": "Excluir formato personalizado",
"DeleteCustomFormatMessageText": "Tem certeza de que deseja excluir o formato personalizado '{name}'?",
"DeleteCustomFormatMessageText": "Tem certeza de que deseja excluir o formato personalizado \"{name}\"?",
"ExportCustomFormat": "Exportar formato personalizado",
"Negated": "Negado",
"Remove": "Remover",
@@ -104,7 +104,7 @@
"RemoveSelectedItems": "Remover Itens Selecionados",
"RemoveSelectedItemsQueueMessageText": "Tem certeza de que deseja remover {selectedCount} itens da fila?",
"Required": "Requerido",
"BlocklistRelease": "Lançamento na lista de bloqueio",
"BlocklistRelease": "Bloquear lançamento",
"Add": "Adicionar",
"AddingTag": "Adicionar etiqueta",
"Apply": "Aplicar",
@@ -169,7 +169,7 @@
"Calendar": "Calendário",
"Connect": "Conectar",
"CustomFormats": "Formatos personalizados",
"CutoffUnmet": "Corte não atingido",
"CutoffUnmet": "Limite não atingido",
"DownloadClients": "Clientes de download",
"Events": "Eventos",
"General": "Geral",
@@ -185,7 +185,7 @@
"ApplyTagsHelpTextHowToApplyDownloadClients": "Como aplicar etiquetas aos clientes de download selecionados",
"ApplyTagsHelpTextHowToApplyImportLists": "Como aplicar etiquetas às listas de importação selecionadas",
"ApplyTagsHelpTextHowToApplyIndexers": "Como aplicar etiquetas aos indexadores selecionados",
"ApplyTagsHelpTextHowToApplySeries": "Como aplicar tags à série selecionada",
"ApplyTagsHelpTextHowToApplySeries": "Como aplicar etiquetas à série selecionada",
"EpisodeInfo": "Info do Episódio",
"EpisodeNumbers": "Número(s) do(s) Episódio(s)",
"FullSeason": "Temporada Completa",
@@ -217,7 +217,7 @@
"Clear": "Limpar",
"CurrentlyInstalled": "Atualmente instalado",
"DeleteBackup": "Excluir backup",
"DeleteBackupMessageText": "Tem certeza de que deseja excluir o backup '{name}'?",
"DeleteBackupMessageText": "Tem certeza de que deseja excluir o backup \"{name}\"?",
"Discord": "Discord",
"DiskSpace": "Espaço em disco",
"Docker": "Docker",
@@ -281,10 +281,10 @@
"Scheduled": "Agendado",
"SeriesEditor": "Editor de séries",
"Size": "Tamanho",
"Source": "Fonte",
"Source": "Origem",
"Started": "Iniciado",
"StartupDirectory": "Diretório de Inicialização",
"Status": "Estado",
"Status": "Status",
"TestAll": "Testar Tudo",
"TheLogLevelDefault": "O nível de registro é padronizado como 'Info' e pode ser alterado em [Configurações Gerais](/settings/general)",
"Time": "Horário",
@@ -369,14 +369,14 @@
"Conditions": "Condições",
"CloneAutoTag": "Clonar etiqueta automática",
"DeleteAutoTag": "Excluir etiqueta automática",
"DeleteAutoTagHelpText": "Tem certeza de que deseja excluir a etiqueta automática '{name}'?",
"DeleteAutoTagHelpText": "Tem certeza de que deseja excluir a etiqueta automática \"{name}\"?",
"EditAutoTag": "Editar etiqueta automática",
"Negate": "Negar",
"Save": "Salvar",
"AddRootFolder": "Adicionar pasta raiz",
"AutoTagging": "Etiquetas automáticas",
"DeleteRootFolder": "Excluir pasta raiz",
"DeleteRootFolderMessageText": "Tem certeza de que deseja excluir a pasta raiz '{path}'?",
"DeleteRootFolderMessageText": "Tem certeza de que deseja excluir a pasta raiz \"{path}\"?",
"RemoveTagsAutomaticallyHelpText": "Remover tags automaticamente se as condições não forem encontradas",
"RootFolders": "Pastas Raiz",
"AllResultsAreHiddenByTheAppliedFilter": "Todos os resultados estão ocultos pelo filtro aplicado",
@@ -409,8 +409,8 @@
"AddImportListExclusionError": "Não foi possível adicionar uma nova exclusão à lista de importação. Tente novamente.",
"AddIndexer": "Adicionar indexador",
"AddIndexerError": "Não foi possível adicionar um novo indexador. Tente novamente.",
"AddList": "Adicionar Lista",
"AddListError": "Não foi possível adicionar uma nova lista, tente novamente.",
"AddList": "Adicionar lista",
"AddListError": "Não foi possível adicionar uma nova lista. Tente novamente.",
"AddListExclusionError": "Não foi possível adicionar uma nova exclusão à lista. Tente novamente.",
"AddNewRestriction": "Adicionar nova restrição",
"AddNotificationError": "Não foi possível adicionar uma nova notificação. Tente novamente.",
@@ -424,7 +424,7 @@
"AnalyseVideoFiles": "Analisar arquivos de vídeo",
"Analytics": "Análises",
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do {appName}. Isso inclui informações sobre seu navegador, quais páginas da interface Web do {appName} você usa, relatórios de erros, a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
"AnimeEpisodeFormat": "Formato do Episódio de Anime",
"AnimeEpisodeFormat": "Formato do episódio de anime",
"ApiKey": "Chave da API",
"ApplicationURL": "URL do aplicativo",
"ApplicationUrlHelpText": "A URL externa deste aplicativo, incluindo http(s)://, porta e URL base",
@@ -442,13 +442,13 @@
"BackupRetentionHelpText": "Backups automáticos anteriores ao período de retenção serão excluídos automaticamente",
"BackupsLoadError": "Não foi possível carregar os backups",
"BindAddress": "Vincular endereço",
"BindAddressHelpText": "Endereço IP válido, localhost ou '*' para todas as interfaces",
"BindAddressHelpText": "Endereço IP válido, localhost ou \"*\" para todas as interfaces",
"BlocklistLoadError": "Não foi possível carregar a lista de bloqueio",
"Branch": "Ramificação",
"BranchUpdate": "Ramificação para atualizar o {appName}",
"BranchUpdateMechanism": "Ramificação usada pelo mecanismo externo de atualização",
"BrowserReloadRequired": "É necessário recarregar o navegador",
"BuiltIn": "Embutido",
"BuiltIn": "Integrado",
"BypassDelayIfAboveCustomFormatScore": "Ignorar se estiver acima da pontuação do formato personalizado",
"BypassDelayIfAboveCustomFormatScoreHelpText": "Ignorar quando o lançamento tiver uma pontuação mais alta que a pontuação mínima configurada do formato personalizado",
"BypassDelayIfAboveCustomFormatScoreMinimumScore": "Pontuação mínima do formato personalizado",
@@ -476,24 +476,24 @@
"ColonReplacementFormatHelpText": "Mude como o {appName} lida com a substituição do dois-pontos",
"CompletedDownloadHandling": "Gerenciamento de downloads concluídos",
"Condition": "Condição",
"ConditionUsingRegularExpressions": "Esta condição corresponde ao uso de Expressões Regulares. Observe que os caracteres `\\^$.|?*+()[{` têm significados especiais e precisam de escape com um `\\`",
"ConditionUsingRegularExpressions": "Esta condição corresponde ao uso de Expressões regulares. Observe que os caracteres `\\^$.|?*+()[{` têm significados especiais e precisam de escape com uma `\\`",
"ConnectSettings": "Configurações de conexão",
"ConnectSettingsSummary": "Notificações, conexões com servidores/players de mídia e scripts personalizados",
"ConnectSettingsSummary": "Notificações, conexões com servidores/reprodutores de mídia e scripts personalizados",
"Connections": "Conexões",
"CopyToClipboard": "Copiar para a área de transferência",
"CopyUsingHardlinksHelpTextWarning": "Ocasionalmente, os bloqueios de arquivo podem impedir a renomeação de arquivos que estão sendo semeados. Você pode desabilitar temporariamente a semeadura e usar a função de renomeação do {appName} como uma solução alternativa.",
"CreateEmptySeriesFolders": "Criar Pastas de Séries Vazias",
"CreateEmptySeriesFoldersHelpText": "Crie pastas de série ausentes durante a verificação de disco",
"CreateEmptySeriesFolders": "Criar pastas de séries vazias",
"CreateEmptySeriesFoldersHelpText": "Crie pastas de séries ausentes durante a verificação de disco",
"CreateGroup": "Criar grupo",
"Custom": "Personalizado",
"CustomFormat": "Formato personalizado",
"CustomFormatUnknownCondition": "Condição de formato personalizado '{implementation}' desconhecida",
"CustomFormatUnknownConditionOption": "Opção '{key}' desconhecida para a condição '{implementation}'",
"CustomFormatUnknownCondition": "Condição de formato personalizado \"{implementation}\" desconhecida",
"CustomFormatUnknownConditionOption": "Opção \"{key}\" desconhecida para a condição \"{implementation}\"",
"CustomFormatsLoadError": "Não foi possível carregar os formatos personalizados",
"CustomFormatsSettings": "Configurações de formatos personalizados",
"CustomFormatsSettingsSummary": "Formatos personalizados e configurações",
"DailyEpisodeFormat": "Formato do episódio diário",
"Cutoff": "Corte",
"Cutoff": "Limite",
"Dash": "Traço",
"Dates": "Datas",
"Debug": "Depuração",
@@ -501,30 +501,30 @@
"DelayMinutes": "{delay} minutos",
"DelayProfile": "Perfil de atraso",
"DefaultCase": "Padrão maiúscula ou minúscula",
"DelayProfileSeriesTagsHelpText": "Aplica-se a séries com pelo menos uma tag correspondente",
"DelayProfileSeriesTagsHelpText": "Aplica-se a séries com pelo menos uma etiqueta correspondente",
"DelayProfiles": "Perfis de atraso",
"DelayProfilesLoadError": "Não foi possível carregar os perfis de atraso",
"DeleteDelayProfile": "Excluir perfil de atraso",
"DeleteDownloadClient": "Excluir cliente de download",
"DeleteDownloadClientMessageText": "Tem certeza de que deseja excluir o cliente de download '{name}'?",
"DeleteDownloadClientMessageText": "Tem certeza de que deseja excluir o cliente de download \"{name}\"?",
"DeleteEmptyFolders": "Excluir pastas vazias",
"DeleteEmptySeriesFoldersHelpText": "Excluir pastas vazias de séries e temporadas durante a verificação de disco e quando os arquivos de episódios são excluídos",
"DeleteImportList": "Excluir lista de importação",
"DeleteImportListExclusion": "Excluir exclusão da lista de importação",
"DeleteImportListExclusionMessageText": "Tem certeza de que deseja excluir esta exclusão da lista de importação?",
"DeleteImportListExclusionMessageText": "Tem certeza de que deseja remover esta exclusão da lista de importação?",
"DeleteIndexer": "Excluir indexador",
"DeleteIndexerMessageText": "Tem certeza de que deseja excluir o indexador '{name}'?",
"DeleteIndexerMessageText": "Tem certeza de que deseja excluir o indexador \"{name}\"?",
"DeleteNotification": "Excluir notificação",
"DeleteNotificationMessageText": "Tem certeza de que deseja excluir a notificação '{name}'?",
"DeleteNotificationMessageText": "Tem certeza de que deseja excluir a notificação \"{name}\"?",
"DeleteQualityProfile": "Excluir perfil de qualidade",
"DeleteQualityProfileMessageText": "Tem certeza de que deseja excluir o perfil de qualidade '{name}'?",
"DeleteQualityProfileMessageText": "Tem certeza de que deseja excluir o perfil de qualidade \"{name}\"?",
"DeleteReleaseProfile": "Excluir perfil de lançamento",
"DeleteRemotePathMapping": "Excluir mapeamento de caminho remoto",
"DeleteRemotePathMappingMessageText": "Tem certeza de que deseja excluir este mapeamento de caminho remoto?",
"DeleteSpecification": "Excluir especificação",
"DeleteSpecificationHelpText": "Tem certeza de que deseja excluir a especificação '{name}'?",
"DeleteSpecificationHelpText": "Tem certeza de que deseja excluir a especificação \"{name}\"?",
"DeleteTag": "Excluir etiqueta",
"DeleteTagMessageText": "Tem certeza de que deseja excluir a etiqueta '{label}'?",
"DeleteTagMessageText": "Tem certeza de que deseja excluir a etiqueta \"{label}\"?",
"DisabledForLocalAddresses": "Desabilitado para endereços locais",
"DoNotPrefer": "Não preferir",
"DoNotUpgradeAutomatically": "Não atualizar automaticamente",
@@ -558,7 +558,7 @@
"EnableInteractiveSearchHelpText": "Será usado com a pesquisa interativa",
"EnableColorImpairedMode": "Habilitar modo para daltonismo",
"EnableInteractiveSearchHelpTextWarning": "A pesquisa não é compatível com este indexador",
"EnableMediaInfoHelpText": "Extraia informações do vídeo, como resolução, duração e informações do codec de arquivos. Isso requer que o {appName} leia partes do arquivo que podem causar alta atividade no disco ou na rede durante as verificações.",
"EnableMediaInfoHelpText": "Extraia informações do vídeo, como resolução, duração e informações do codec de arquivos. Isso requer que o {appName} leia partes do arquivo, o que pode causar alta atividade no disco ou na rede durante as verificações.",
"EnableMetadataHelpText": "Habilitar criação de arquivo de metadados para este tipo de metadados",
"EnableProfile": "Habilitar perfil",
"EnableProfileHelpText": "Marque para habilitar o perfil de lançamento",
@@ -733,17 +733,17 @@
"RecyclingBinCleanupHelpText": "Defina como 0 para desativar a limpeza automática",
"RecyclingBinCleanupHelpTextWarning": "Os arquivos na lixeira mais antigos do que o número de dias selecionado serão limpos automaticamente",
"RecyclingBinHelpText": "Os arquivos irão para cá quando excluídos, em vez de serem excluídos permanentemente",
"AbsoluteEpisodeNumber": "Número Absoluto do Episódio",
"AbsoluteEpisodeNumber": "Número absoluto do episódio",
"AddAutoTagError": "Não foi possível adicionar uma nova etiqueta automática, tente novamente.",
"AnalyseVideoFilesHelpText": "Extraia informações do vídeo, como resolução, duração e informações do codec de arquivos. Isso requer que o {appName} leia partes do arquivo que podem causar alta atividade no disco ou na rede durante as verificações.",
"AuthenticationRequiredHelpText": "Altere para quais solicitações a autenticação é necessária. Não mude a menos que você entenda os riscos.",
"AuthenticationRequiredWarning": "Para evitar o acesso remoto sem autenticação, o {appName} agora exige que a autenticação esteja habilitada. Opcionalmente, você pode desabilitar a autenticação para endereços locais.",
"CopyUsingHardlinksSeriesHelpText": "Os links rígidos permitem que o {appName} importe torrents de propagação para a pasta da série sem ocupar espaço extra em disco ou copiar todo o conteúdo do arquivo. Links rígidos só funcionarão se a origem e o destino estiverem no mesmo volume",
"CopyUsingHardlinksSeriesHelpText": "Os links rígidos permitem que o {appName} importe torrents que estão sendo semeados para a pasta da série sem ocupar espaço adicional em disco ou copiar todo o conteúdo do arquivo. Links rígidos só funcionarão se a origem e o destino estiverem no mesmo volume",
"CustomFormatHelpText": "O {appName} pontua cada lançamento usando a soma das pontuações para formatos personalizados correspondentes. Se um novo lançamento tiver melhor pontuação, com a mesma qualidade ou melhor, o {appName} o obterá.",
"DelayProfileProtocol": "Protocolo: {preferredProtocol}",
"DeleteDelayProfileMessageText": "Tem certeza de que deseja excluir este perfil de atraso?",
"DeleteImportListMessageText": "Tem certeza de que deseja excluir a lista '{name}'?",
"DeleteReleaseProfileMessageText": "Tem certeza de que deseja excluir o perfil de lançamento '{name}'?",
"DeleteImportListMessageText": "Tem certeza de que deseja excluir a lista \"{name}\"?",
"DeleteReleaseProfileMessageText": "Tem certeza de que deseja excluir o perfil de lançamento \"{name}\"?",
"DownloadClientSeriesTagHelpText": "Use este cliente de download apenas para séries com pelo menos uma tag correspondente. Deixe em branco para usar com todas as séries.",
"EpisodeTitleRequiredHelpText": "Impeça a importação por até 48 horas se o título do episódio estiver no formato de nomenclatura e o título do episódio for TBA",
"External": "Externo",
@@ -823,7 +823,7 @@
"SeriesID": "ID da Série",
"SeriesLoadError": "Não foi possível carregar a série",
"SeriesTitleToExcludeHelpText": "O nome da série a excluir",
"SeriesType": "Tipo de Série",
"SeriesType": "Tipo de série",
"SeriesTypes": "Tipos de Séries",
"SetPermissions": "Definir Permissões",
"SetPermissionsLinuxHelpTextWarning": "Se você não tiver certeza do que essas configurações fazem, não as altere.",
@@ -927,17 +927,17 @@
"WantMoreControlAddACustomFormat": "Quer mais controle sobre quais downloads são preferidos? Adicione um [Formato Personalizado](/settings/customformats)",
"UnmonitorSpecialEpisodes": "Não Monitorar Especiais",
"MonitorAllEpisodes": "Todos os Episódios",
"AddNewSeries": "Adicionar Novas Séries",
"AddNewSeriesHelpText": "É fácil adicionar uma nova série, basta começar a digitar o nome da série que deseja adicionar.",
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Iniciar a pesquisa por episódios cujos cortes não foram atendidos",
"AddNewSeriesSearchForMissingEpisodes": "Iniciar a busca por episódios perdidos",
"AddNewSeries": "Adicionar nova série",
"AddNewSeriesHelpText": "É fácil adicionar uma nova série, basta começar a digitar o nome da série que deseja acrescentar.",
"AddNewSeriesSearchForCutoffUnmetEpisodes": "Iniciar a pesquisa por episódios cujos limites não foram atendidos",
"AddNewSeriesSearchForMissingEpisodes": "Iniciar a busca por episódios ausentes",
"AddSeriesWithTitle": "Adicionar {title}",
"AllSeriesInRootFolderHaveBeenImported": "Todas as séries em {path} foram importadas",
"AlreadyInYourLibrary": "Já está na sua biblioteca",
"Anime": "Anime",
"CancelProcessing": "Cancelar processamento",
"ChooseAnotherFolder": "Escolha outra pasta",
"CouldNotFindResults": "Não foi possível encontrar nenhum resultado para '{term}'",
"CouldNotFindResults": "Não foi possível encontrar nenhum resultado para \"{term}\"",
"Existing": "Existente",
"ImportCountSeries": "Importar {selectedCount} Séries",
"ImportErrors": "Erros de importação",
@@ -971,7 +971,7 @@
"StartProcessing": "Iniciar Processamento",
"Upcoming": "Por vir",
"AddNewSeriesError": "Falha ao carregar os resultados da pesquisa. Tente novamente.",
"AddNewSeriesRootFolderHelpText": "A subpasta '{folder}' será criada automaticamente",
"AddNewSeriesRootFolderHelpText": "A subpasta \"{folder}\" será criada automaticamente",
"AnimeEpisodeTypeDescription": "Episódios lançados usando um número de episódio absoluto",
"DailyEpisodeTypeDescription": "Episódios lançados diariamente ou com menos frequência que usam ano-mês-dia (2023-08-04)",
"LibraryImportTipsSeriesUseRootFolder": "Aponte o {appName} para a pasta que contém todas as suas séries, não uma específica. Por exemplo. \"`{goodFolderExample}`\" e não \"`{badFolderExample}`\". Além disso, cada série deve estar em sua própria pasta dentro da pasta raiz/biblioteca.",
@@ -984,8 +984,8 @@
"Today": "Hoje",
"AgeWhenGrabbed": "Tempo de vida (quando obtido)",
"DelayingDownloadUntil": "Atrasando o download até {date} às {time}",
"DeletedReasonEpisodeMissingFromDisk": "O {appName} não conseguiu encontrar o arquivo no disco, então o arquivo foi desvinculado do episódio no banco de dados",
"DeletedReasonManual": "O arquivo foi excluído usando {appName} manualmente ou por outra ferramenta por meio da API",
"DeletedReasonEpisodeMissingFromDisk": "O {appName} não conseguiu encontrar o arquivo no disco, então ele foi desvinculado do episódio no banco de dados",
"DeletedReasonManual": "O arquivo foi excluído usando o {appName}, manualmente ou por outra ferramenta por meio da API",
"DownloadFailed": "Download Falhou",
"DestinationRelativePath": "Caminho de destino relativo",
"DownloadIgnoredEpisodeTooltip": "Download do Episódio Ignorado",
@@ -1035,19 +1035,19 @@
"SpecialEpisode": "Episódio Especial",
"Agenda": "Programação",
"AnEpisodeIsDownloading": "Um episódio está baixando",
"CalendarLegendEpisodeMissingTooltip": "O episódio foi ao ar e está faltando no disco",
"CalendarLegendEpisodeMissingTooltip": "O episódio foi ao ar e está ausente no disco",
"CalendarFeed": "Feed de calendário do {appName}",
"CalendarLegendEpisodeDownloadedTooltip": "O episódio foi baixado e classificado",
"CalendarLegendEpisodeDownloadingTooltip": "O episódio está sendo baixado no momento",
"CalendarLegendEpisodeDownloadingTooltip": "O episódio está sendo baixado",
"CalendarLegendSeriesFinaleTooltip": "Final de série ou temporada",
"CalendarLegendEpisodeOnAirTooltip": "Episódio está sendo exibido no momento",
"CalendarLegendEpisodeOnAirTooltip": "O episódio está sendo exibido no momento",
"CalendarLegendSeriesPremiereTooltip": "Estreia de série ou temporada",
"CalendarLegendEpisodeUnairedTooltip": "Episódio ainda não foi ao ar",
"CalendarLegendEpisodeUnairedTooltip": "O episódio ainda não foi ao ar",
"CalendarLegendEpisodeUnmonitoredTooltip": "Episódio não monitorado",
"CalendarOptions": "Opções do calendário",
"CheckDownloadClientForDetails": "verifique o cliente de download para saber mais",
"CollapseMultipleEpisodes": "Agrupar Múltiplos Episódios",
"CollapseMultipleEpisodesHelpText": "Agrupar múltiplos episódios que vão ao ar no mesmo dia",
"CollapseMultipleEpisodes": "Agrupar vários episódios",
"CollapseMultipleEpisodesHelpText": "Agrupar vários episódios que vão ao ar no mesmo dia",
"Day": "Dia",
"DeletedReasonUpgrade": "O arquivo foi excluído para importar uma atualização",
"DestinationPath": "Caminho de destino",
@@ -1073,7 +1073,7 @@
"FullColorEventsHelpText": "Estilo alterado para colorir todo o evento com a cor do status, em vez de apenas a borda esquerda. Não se aplica à Programação",
"ICalTagsSeriesHelpText": "O feed conterá apenas séries com pelo menos uma tag correspondente",
"IconForFinalesHelpText": "Mostrar ícone para finais de séries/temporadas com base nas informações de episódios disponíveis",
"QualityCutoffNotMet": "Corte da Qualidade ainda não foi alcançado",
"QualityCutoffNotMet": "Limite da qualidade ainda não foi alcançado",
"QueueLoadError": "Falha ao carregar a fila",
"RemoveQueueItem": "Remover - {sourceTitle}",
"RemoveQueueItemConfirmation": "Tem certeza de que deseja remover '{sourceTitle}' da fila?",
@@ -1083,7 +1083,7 @@
"AddImportListImplementation": "Adicionar lista de importação - {implementationName}",
"AddANewPath": "Adicionar um novo caminho",
"AddConnectionImplementation": "Adicionar conexão - {implementationName}",
"AddCustomFilter": "Adicionar Filtro Personalizado",
"AddCustomFilter": "Adicionar filtro personalizado",
"AddDownloadClientImplementation": "Adicionar cliente de download - {implementationName}",
"AddIndexerImplementation": "Adicionar indexador - {implementationName}",
"AddToDownloadQueue": "Adicionar à fila de download",
@@ -1094,10 +1094,10 @@
"AppUpdatedVersion": "O {appName} foi atualizado para a versão `{version}`. Para obter as alterações mais recentes, recarregue o {appName} ",
"ChooseImportMode": "Escolha o modo de importação",
"ClickToChangeEpisode": "Clique para alterar o episódio",
"ConnectionLostReconnect": "O {appName} tentará se conectar automaticamente ou você pode clicar em Recarregar abaixo.",
"ConnectionLostReconnect": "O {appName} tentará se conectar automaticamente, ou você pode clicar em Recarregar abaixo.",
"CountSelectedFiles": "{selectedCount} arquivos selecionados",
"DefaultNotFoundMessage": "Você deve estar perdido, nada para ver aqui.",
"DeleteEpisodeFile": "Excluir Arquivo do Episódio",
"DeleteEpisodeFile": "Excluir arquivo do episódio",
"DeleteSelectedEpisodeFilesHelpText": "Tem certeza de que deseja excluir os arquivos de episódios selecionados?",
"EditConditionImplementation": "Editar condição - {implementationName}",
"EditIndexerImplementation": "Editar indexador - {implementationName}",
@@ -1128,18 +1128,18 @@
"ClickToChangeLanguage": "Clique para alterar o idioma",
"ClickToChangeQuality": "Clique para alterar a qualidade",
"ClickToChangeReleaseGroup": "Clique para alterar o grupo de lançamento",
"ClickToChangeSeason": "Clique para mudar a temporada",
"ClickToChangeSeries": "Clique para mudar de série",
"ClickToChangeSeason": "Clique para alterar a temporada",
"ClickToChangeSeries": "Clique para alterar a série",
"ConnectionLost": "Conexão perdida",
"ConnectionLostToBackend": "O {appName} perdeu a conexão com o backend e precisa ser recarregado para restaurar a funcionalidade.",
"ConnectionLostToBackend": "O {appName} perdeu a conexão com o backend e precisa ser recarregado para restaurar a funcionalidade.",
"Continuing": "Continuando",
"CountSelectedFile": "{selectedCount} arquivo selecionado",
"CustomFilters": "Filtros personalizados",
"DailyEpisodeTypeFormat": "Data ({format})",
"Default": "Padrão",
"DeleteEpisodeFileMessage": "Tem certeza de que deseja excluir '{path}'?",
"DeleteEpisodeFileMessage": "Tem certeza de que deseja excluir \"{path}\"?",
"DeleteEpisodeFromDisk": "Excluir episódio do disco",
"DeleteSelectedEpisodeFiles": "Excluir Arquivos de Episódios Selecionados",
"DeleteSelectedEpisodeFiles": "Excluir arquivos de episódios selecionados",
"Donate": "Doar",
"EditConnectionImplementation": "Editar Conexão - {implementationName}",
"EditDownloadClientImplementation": "Editar cliente de download - {implementationName}",
@@ -1340,13 +1340,13 @@
"SeriesIndexFooterMissingUnmonitored": "Episódios Ausentes (Série não monitorada)",
"DefaultNameCopiedProfile": "{name} - Cópia",
"DefaultNameCopiedSpecification": "{name} - Cópia",
"DeleteEpisodesFilesHelpText": "Excluir os arquivos do episódio e a pasta da série",
"DeleteSelectedSeries": "Excluir Séries Selecionadas",
"DeleteSeriesFolder": "Excluir Pasta da Série",
"DeleteEpisodesFilesHelpText": "Excluir os arquivos de episódios e a pasta da série",
"DeleteSelectedSeries": "Excluir séries selecionadas",
"DeleteSeriesFolder": "Excluir pasta da série",
"DeleteSeriesFolderConfirmation": "A pasta da série `{path}` e todo o seu conteúdo serão excluídos.",
"DeleteSeriesFolderCountConfirmation": "Tem certeza de que deseja excluir {count} séries selecionadas?",
"DeleteSeriesFolderHelpText": "Exclua a pasta da série e seu conteúdo",
"DeleteSeriesFolders": "Excluir Pastas das Séries",
"DeleteSeriesFolderCountConfirmation": "Tem certeza de que deseja excluir as {count} séries selecionadas?",
"DeleteSeriesFolderHelpText": "Excluir a pasta da série e seu conteúdo",
"DeleteSeriesFolders": "Excluir pastas das séries",
"DeleteSeriesModalHeader": "Excluir - {title}",
"DeletedSeriesDescription": "A série foi excluída do TheTVDB",
"DetailedProgressBarHelpText": "Mostrar texto na barra de progresso",
@@ -1418,13 +1418,13 @@
"DeleteEpisodesFiles": "Excluir {episodeFileCount} arquivos de episódios",
"NoMonitoredEpisodes": "Nenhum episódio monitorado nesta série",
"ShowBanners": "Mostrar Banners",
"DeleteSeriesFolderCountWithFilesConfirmation": "Tem certeza de que deseja excluir {count} séries selecionadas e todos os conteúdos?",
"DeleteSeriesFolderCountWithFilesConfirmation": "Tem certeza de que deseja excluir as {count} séries selecionadas e todos os conteúdos?",
"NoSeriesFoundImportOrAdd": "Nenhuma série encontrada. Para começar, você deseja importar sua série existente ou adicionar uma nova série.",
"ShowBannersHelpText": "Mostrar banners em vez de títulos",
"DeleteSeriesFolderEpisodeCount": "{episodeFileCount} arquivos de episódios totalizando {size}",
"DeleteSeriesFolderEpisodeCount": "{episodeFileCount} arquivos de episódios, totalizando {size}",
"OrganizeSelectedSeriesModalAlert": "Dica: para visualizar uma renomeação, selecione 'Cancelar', selecione qualquer título de série e use este ícone:",
"ShowQualityProfileHelpText": "Mostrar perfil de qualidade abaixo do pôster",
"DeleteSeriesFoldersHelpText": "Excluir as pastas da série e todo o seu conteúdo",
"DeleteSeriesFoldersHelpText": "Excluir as pastas das séries e todos os conteúdos",
"Total": "Total",
"DetailedProgressBar": "Barra de progresso detalhada",
"EndedSeriesDescription": "Não se espera mais episódios ou temporadas",
@@ -1437,7 +1437,7 @@
"AuthenticationRequiredPasswordHelpTextWarning": "Digite uma nova senha",
"AuthenticationRequiredUsernameHelpTextWarning": "Digite um novo nome de usuário",
"CollapseAll": "Recolher tudo",
"ContinuingSeriesDescription": "Espera-se mais episódio ou outra temporada",
"ContinuingSeriesDescription": "Espera-se mais episódios ou outra temporada",
"CountSeriesSelected": "{count} séries selecionadas",
"MissingLoadError": "Erro ao carregar itens ausentes",
"MissingNoItems": "Nenhum item ausente",
@@ -1450,8 +1450,8 @@
"CutoffUnmetLoadError": "Erro ao carregar itens de limite não atingido",
"MassSearchCancelWarning": "Isso não pode ser cancelado depois de iniciado sem reiniciar {appName} ou desabilitar todos os seus indexadores.",
"SearchForAllMissingEpisodes": "Pesquisar por todos os episódios ausentes",
"SearchForCutoffUnmetEpisodes": "Pesquise todos os episódios que o corte não foi atingido",
"SearchForCutoffUnmetEpisodesConfirmationCount": "Tem certeza de que deseja pesquisar todos os episódios de {totalRecords} corte não atingido?",
"SearchForCutoffUnmetEpisodes": "Pesquisar todos os episódios com limite não atingido",
"SearchForCutoffUnmetEpisodesConfirmationCount": "Tem certeza que deseja pesquisar todos os episódios de {totalRecords} com limite não atingido?",
"FormatAgeDay": "dia",
"FormatAgeHours": "horas",
"FormatDateTime": "{formattedDate} {formattedTime}",
@@ -1488,7 +1488,7 @@
"DownloadClientFreeboxSettingsPortHelpText": "Porta usada para acessar a interface do Freebox, o padrão é \"{port}\"",
"DownloadClientFreeboxUnableToReachFreeboxApi": "Não foi possível acessar a API do Freebox. Verifique o URL base e a versão na configuração \"URL da API\".",
"DownloadClientNzbgetValidationKeepHistoryOverMax": "A configuração KeepHistory do NzbGet deve ser menor que 25.000",
"DownloadClientNzbgetValidationKeepHistoryZeroDetail": "A configuração KeepHistory do NzbGet está definida como 0, que impede que o {appName} veja os downloads concluídos.",
"DownloadClientNzbgetValidationKeepHistoryZeroDetail": "A configuração KeepHistory do NzbGet está definida como 0, o que impede que o {appName} veja os downloads concluídos.",
"DownloadClientSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL do {clientName}, como {url}",
"DownloadClientSettingsUseSslHelpText": "Usar conexão segura ao conectar-se ao {clientName}",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Local opcional para colocar os downloads, deixe em branco para usar o local padrão do Transmission",
@@ -1504,7 +1504,7 @@
"UnknownDownloadState": "Estado de download desconhecido: {state}",
"UsenetBlackhole": "Blackhole para Usenet",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estado inicial para torrents adicionados ao qBittorrent. Observe que torrents forçados não obedecem às restrições de semeadura",
"DownloadClientQbittorrentTorrentStatePathError": "Não foi possível importar. O caminho corresponde ao diretório de download base do cliente, é possível que \"Manter pasta de nível superior\" esteja desabilitado para este torrent ou \"Layout de conteúdo de torrent\" NÃO esteja definido como 'Original' ou 'Criar subpasta'?",
"DownloadClientQbittorrentTorrentStatePathError": "Não foi possível importar. O caminho corresponde ao diretório de download base do cliente, é possível que \"Manter pasta de nível superior\" esteja desabilitado para este torrent ou \"Layout de conteúdo de torrent\" NÃO esteja definido como \"Original\" ou \"Criar subpasta\"?",
"DownloadClientQbittorrentValidationCategoryUnsupportedDetail": "Não há categorias até a versão 3.3.0 do qBittorrent. Atualize ou tente novamente com uma categoria vazia.",
"DownloadClientQbittorrentValidationRemovesAtRatioLimit": "O qBittorrent está configurado para remover torrents quando eles atingem seu limite de proporção de compartilhamento",
"DownloadClientQbittorrentValidationRemovesAtRatioLimitDetail": "O {appName} não poderá realizar o tratamento de download concluído conforme configurado. Para corrigir isso, no qBittorrent, acesse \"Ferramentas -> Opções... -> BitTorrent -> Limites de Semeadura\", e altere a opção de \"Remover\" para \"Parar\"",
@@ -1527,7 +1527,7 @@
"DownloadClientDownloadStationValidationApiVersion": "A versão da API do Download Station não é suportada; deve ser pelo menos {requiredVersion}. Suporte às versões de {minVersion} a {maxVersion}",
"DownloadClientDownloadStationValidationFolderMissing": "A pasta não existe",
"DownloadClientDownloadStationValidationNoDefaultDestination": "Nenhum destino padrão",
"DownloadClientDownloadStationValidationNoDefaultDestinationDetail": "Você deve fazer login em seu Diskstation como {username} e configurá-lo manualmente nas configurações do Download Station em BT/HTTP/FTP/NZB -> Localização.",
"DownloadClientDownloadStationValidationNoDefaultDestinationDetail": "Você deve fazer login em seu Diskstation como {username} e configurá-lo manualmente nas configurações do Download Station em BT/HTTP/FTP/NZB -> Location (Local).",
"DownloadClientDownloadStationValidationSharedFolderMissing": "A pasta compartilhada não existe",
"DownloadClientFloodSettingsAdditionalTags": "Etiquetas adicionais",
"DownloadClientFloodSettingsPostImportTags": "Etiquetas pós-importação",
@@ -1543,15 +1543,15 @@
"DownloadClientFreeboxSettingsAppToken": "Token do aplicativo",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token do aplicativo recuperado ao criar acesso à API do Freebox (ou seja, \"app_token\")",
"DownloadClientFreeboxSettingsHostHelpText": "Nome ou endereço IP do host do Freebox, o padrão é \"{url}\" (só funcionará se estiver na mesma rede)",
"DownloadClientFreeboxUnableToReachFreebox": "Não foi possível acessar a API do Freebox. Verifique as configurações \"Host\", \"Porta\" ou \"Usar SSL\". (Erro: {exceptionMessage})",
"DownloadClientFreeboxUnableToReachFreebox": "Não foi possível acessar a API do Freebox. Verifique as configurações \"Host\", \"Port\" (Porta) ou \"Use SSL\" (Usar SSL). (Erro: {exceptionMessage})",
"DownloadClientNzbVortexMultipleFilesMessage": "O download contém vários arquivos e não está em uma pasta de trabalho: {outputPath}",
"DownloadClientNzbgetSettingsAddPausedHelpText": "Esta opção requer pelo menos a versão 16.0 do NzbGet",
"DownloadClientDelugeValidationLabelPluginInactive": "Plugin de rótulo não ativado",
"DownloadClientNzbgetValidationKeepHistoryOverMaxDetail": "A configuração KeepHistory do NzbGet está muito alta.",
"DownloadClientNzbgetValidationKeepHistoryZero": "A configuração KeepHistory do NzbGet deve ser maior que 0",
"DownloadClientPneumaticSettingsNzbFolder": "Pasta Nzb",
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Esta pasta precisa estar acessível no XBMC",
"DownloadClientPneumaticSettingsStrmFolder": "Pasta Strm",
"DownloadClientPneumaticSettingsNzbFolder": "Pasta do Nzb",
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Esta pasta precisa estar acessível no XBMC",
"DownloadClientPneumaticSettingsStrmFolder": "Pasta do Strm",
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Os arquivos .strm nesta pasta serão importados pelo drone",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Priorizar o primeiro e o último",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Baixe a primeira e a última partes antes (qBittorrent 4.1.0+)",
@@ -1620,7 +1620,7 @@
"TorrentBlackholeSaveMagnetFilesReadOnlyHelpText": "Em vez de mover arquivos, isso instruirá {appName} a copiar ou vincular (dependendo das configurações/configuração do sistema)",
"TorrentBlackholeTorrentFolder": "Pasta do Torrent",
"UseSsl": "Usar SSL",
"UsenetBlackholeNzbFolder": "Pasta Nzb",
"UsenetBlackholeNzbFolder": "Pasta do Nzb",
"IndexerIPTorrentsSettingsFeedUrl": "URL do Feed",
"IndexerIPTorrentsSettingsFeedUrlHelpText": "A URL completa do feed RSS gerado pelo IPTorrents, usando apenas as categorias que você selecionou (HD, SD, x264, etc...)",
"IndexerSettingsAdditionalParameters": "Parâmetros Adicionais",
@@ -1875,23 +1875,23 @@
"ImportListsTraktSettingsWatchedListFilter": "Filtrar Lista de Assistido",
"ImportListsValidationUnableToConnectException": "Não foi possível conectar-se à lista de importação: {exceptionMessage}. Verifique o log em torno desse erro para obter detalhes.",
"AutoTaggingSpecificationGenre": "Gênero(s)",
"AutoTaggingSpecificationMaximumYear": "Ano Máximo",
"AutoTaggingSpecificationMinimumYear": "Ano Mínimo",
"AutoTaggingSpecificationMaximumYear": "Ano máximo",
"AutoTaggingSpecificationMinimumYear": "Ano mínimo",
"AutoTaggingSpecificationOriginalLanguage": "Idioma",
"AutoTaggingSpecificationQualityProfile": "Perfil de Qualidade",
"AutoTaggingSpecificationRootFolder": "Pasta Raiz",
"AutoTaggingSpecificationSeriesType": "Tipo de Série",
"AutoTaggingSpecificationStatus": "Estado",
"AutoTaggingSpecificationQualityProfile": "Perfil de qualidade",
"AutoTaggingSpecificationRootFolder": "Pasta raiz",
"AutoTaggingSpecificationSeriesType": "Tipo de série",
"AutoTaggingSpecificationStatus": "Status",
"CustomFormatsSpecificationLanguage": "Idioma",
"CustomFormatsSpecificationMaximumSize": "Tamanho Máximo",
"CustomFormatsSpecificationMaximumSize": "Tamanho máximo",
"CustomFormatsSpecificationMaximumSizeHelpText": "O lançamento deve ser menor ou igual a este tamanho",
"CustomFormatsSpecificationMinimumSize": "Tamanho Mínimo",
"CustomFormatsSpecificationMinimumSize": "Tamanho mínimo",
"CustomFormatsSpecificationMinimumSizeHelpText": "O lançamento deve ser maior que esse tamanho",
"CustomFormatsSpecificationRegularExpression": "Expressão regular (regex)",
"CustomFormatsSpecificationRegularExpressionHelpText": "O regex do formato personalizado não diferencia maiúsculas e minúsculas",
"CustomFormatsSpecificationReleaseGroup": "Grupo do Lançamento",
"CustomFormatsSpecificationReleaseGroup": "Grupo do lançamento",
"CustomFormatsSpecificationResolution": "Resolução",
"CustomFormatsSpecificationSource": "Fonte",
"CustomFormatsSpecificationSource": "Origem",
"ImportListsAniListSettingsAuthenticateWithAniList": "Autenticar com AniList",
"ImportListsAniListSettingsImportCancelled": "Importação Cancelada",
"ImportListsAniListSettingsImportCancelledHelpText": "Mídia: Série foi cancelada",
@@ -2008,7 +2008,7 @@
"BlocklistMultipleOnlyHint": "Adicionar à lista de bloqueio sem procurar por substitutos",
"BlocklistOnly": "Apenas adicionar à lista de bloqueio",
"BlocklistAndSearchMultipleHint": "Iniciar pesquisas por substitutos após adicionar à lista de bloqueio",
"BlocklistReleaseHelpText": "Impede que esta versão seja baixada novamente pelo {appName} via RSS ou Pesquisa automática",
"BlocklistReleaseHelpText": "Impede que este lançamento seja baixado novamente pelo {appName} via RSS ou Pesquisa automática",
"ChangeCategoryHint": "Altera o download para a \"Categoria pós-importação\" do cliente de download",
"ChangeCategoryMultipleHint": "Altera os downloads para a \"Categoria pós-importação' do cliente de download",
"DatabaseMigration": "Migração de banco de dados",
@@ -2031,24 +2031,24 @@
"ListSyncTag": "Etiqueta de Sincronização de Lista",
"ListSyncTagHelpText": "Esta etiqueta será adicionada quando uma série cair ou não estiver mais na(s) sua(s) lista(s)",
"LogOnly": "Só registro em log",
"CleanLibraryLevel": "Limpar nível da biblioteca",
"CleanLibraryLevel": "Nível de limpeza da biblioteca",
"AddDelayProfileError": "Não foi possível adicionar um novo perfil de atraso. Tente novamente.",
"ClickToChangeIndexerFlags": "Clique para alterar os sinalizadores do indexador",
"SelectIndexerFlags": "Selecionar Sinalizadores do Indexador",
"SetIndexerFlagsModalTitle": "{modalTitle} - Definir Sinalizadores do Indexador",
"CustomFormatsSpecificationFlag": "Sinalizar",
"CustomFormatsSpecificationFlag": "Sinalizador",
"IndexerFlags": "Sinalizadores do indexador",
"SetIndexerFlags": "Definir Sinalizadores de Indexador",
"ImportListsSonarrSettingsSyncSeasonMonitoring": "Sincronização do Monitoramento da Temporada",
"ImportListsSonarrSettingsSyncSeasonMonitoringHelpText": "Sincronização do monitoramento de temporada da instância {appName}, se ativado, 'Monitorar' será ignorado",
"CustomFilter": "Filtro Personalizado",
"CustomFilter": "Filtro personalizado",
"Filters": "Filtros",
"Label": "Rótulo",
"LabelIsRequired": "Rótulo é requerido",
"ConnectionSettingsUrlBaseHelpText": "Adiciona um prefixo ao URL {connectionName}, como {url}",
"ReleaseType": "Tipo de Lançamento",
"DownloadClientDelugeSettingsDirectory": "Diretório de Download",
"DownloadClientDelugeSettingsDirectoryCompleted": "Mover para o Diretório Quando Concluído",
"DownloadClientDelugeSettingsDirectory": "Diretório de download",
"DownloadClientDelugeSettingsDirectoryCompleted": "Diretório para mover quando concluído",
"DownloadClientDelugeSettingsDirectoryCompletedHelpText": "Local opcional para mover os downloads concluídos, deixe em branco para usar o local padrão do Deluge",
"DownloadClientDelugeSettingsDirectoryHelpText": "Local opcional para colocar downloads, deixe em branco para usar o local padrão do Deluge",
"EpisodeRequested": "Episódio Pedido",
@@ -2067,7 +2067,7 @@
"IndexerSettingsMultiLanguageReleaseHelpText": "Quais idiomas normalmente estão em um lançamento multi neste indexador?",
"AutoTaggingSpecificationTag": "Etiqueta",
"IndexerSettingsMultiLanguageRelease": "Multi Idiomas",
"DownloadClientQbittorrentTorrentStateMissingFiles": "qBittorrent está relatando arquivos perdidos",
"DownloadClientQbittorrentTorrentStateMissingFiles": "O qBittorrent está relatando arquivos ausentes",
"BlocklistFilterHasNoItems": "O filtro selecionado para a lista de bloqueio não contém itens",
"DayOfWeekAt": "{day} às {time}",
"TodayAt": "Hoje às {time}",
@@ -2075,12 +2075,12 @@
"HasUnmonitoredSeason": "Tem Temporada Não Monitorada",
"YesterdayAt": "Ontem às {time}",
"UnableToImportAutomatically": "Não foi possível importar automaticamente",
"CustomColonReplacement": "Substituto de Dois Pontos Personalizado",
"CustomColonReplacementFormatHint": "Caractere válido do sistema de arquivos, como dois pontos (letra)",
"CustomColonReplacement": "Personalizar substituto do dois-pontos",
"CustomColonReplacementFormatHint": "Caractere válido do sistema de arquivos, como dois-pontos (letra)",
"NotificationsPlexSettingsServerHelpText": "Selecione o servidor da conta plex.tv após a autenticação",
"OnFileImport": "Ao Importar o Arquivo",
"OnImportComplete": "Ao Completar Importação",
"CustomColonReplacementFormatHelpText": "Caracteres a serem usados em substituição aos dois pontos",
"CustomColonReplacementFormatHelpText": "Caracteres a serem usados em substituição ao sinal de dois-pontos",
"NotificationsPlexSettingsServer": "Servidor",
"OnFileUpgrade": "Ao Atualizar o Arquivo",
"CountVotes": "{votes} votos",
@@ -2099,8 +2099,8 @@
"NoBlocklistItems": "Sem itens na lista de bloqueio",
"NotificationsTelegramSettingsMetadataLinks": "Links de Metadados",
"NotificationsTelegramSettingsMetadataLinksHelpText": "Adicione links aos metadados da série ao enviar notificações",
"DeleteSelected": "Excluir Selecionado",
"DeleteSelectedImportListExclusionsMessageText": "Tem certeza de que deseja excluir as listas de importação selecionadas das exclusões?",
"DeleteSelected": "Excluir selecionado(s)",
"DeleteSelectedImportListExclusionsMessageText": "Tem certeza de que deseja remover as exclusões de lista de importação selecionadas?",
"LogSizeLimit": "Limite de Tamanho do Registro",
"LogSizeLimitHelpText": "Tamanho máximo do arquivo de registro em MB antes do arquivamento. O padrão é 1 MB.",
"DeleteSelectedCustomFormats": "Excluir formato(s) personalizado(s)",
@@ -2111,8 +2111,8 @@
"CountCustomFormatsSelected": "{count} formato(s) personalizado(s) selecionado(s)",
"LastSearched": "Última Pesquisa",
"SkipFreeSpaceCheckHelpText": "Usar quando {appName} não consegue detectar espaço livre em sua pasta raiz",
"CustomFormatsSpecificationExceptLanguage": "Exceto Idioma",
"CustomFormatsSpecificationExceptLanguageHelpText": "Corresponde se qualquer idioma diferente do idioma selecionado estiver presente",
"CustomFormatsSpecificationExceptLanguage": "Exceto idioma",
"CustomFormatsSpecificationExceptLanguageHelpText": "Corresponde se qualquer idioma diferente do selecionado estiver presente",
"MinimumCustomFormatScoreIncrement": "Incremento Mínimo da Pontuação de Formato Personalizado",
"MinimumCustomFormatScoreIncrementHelpText": "Melhoria mínima necessária da pontuação do formato personalizado entre versões existentes e novas antes que {appName} considere isso uma atualização",
"NotificationsGotifySettingsMetadataLinks": "Links de metadados",
@@ -2132,9 +2132,9 @@
"FavoriteFolderRemove": "Remover Pasta Favorita",
"FavoriteFolders": "Pastas Favoritas",
"Fallback": "Reserva",
"CutoffNotMet": "Corte Não Alcançado",
"CutoffNotMet": "Limite não atingido",
"Premiere": "Estreia",
"Completed": "Completado",
"Completed": "Concluído",
"Menu": "Menu",
"NotificationsSettingsWebhookHeaders": "Cabeçalhos",
"UpdatePath": "Caminho da Atualização",
@@ -2144,5 +2144,8 @@
"IndexerSettingsFailDownloads": "Downloads com Falhas",
"IndexerSettingsFailDownloadsHelpText": "Durante o processamento de downloads concluídos, {appName} tratará esses tipos de arquivos selecionados como downloads com falha.",
"NotificationsTelegramSettingsIncludeInstanceName": "Incluir nome da instância no título",
"NotificationsTelegramSettingsIncludeInstanceNameHelpText": "Opcionalmente, inclua o nome da instância na notificação"
"NotificationsTelegramSettingsIncludeInstanceNameHelpText": "Opcionalmente, inclua o nome da instância na notificação",
"ReleasePush": "Impulsionar Lançamento",
"ReleaseSource": "Fonte do Lançamento",
"UserInvokedSearch": "Pesquisa Invocada pelo Usuário"
}

View File

@@ -211,5 +211,6 @@
"DownloadClientUnavailable": "Client de descărcare indisponibil",
"Clone": "Clonează",
"DownloadClientSettingsOlderPriority": "Prioritate mai vechi",
"DownloadClientSettingsRecentPriority": "Prioritate recente"
"DownloadClientSettingsRecentPriority": "Prioritate recente",
"Absolute": "Absolut"
}

View File

@@ -615,7 +615,7 @@
"DeleteNotificationMessageText": "'{name}' bildirimini silmek istediğinizden emin misiniz?",
"Or": "veya",
"OverrideGrabModalTitle": "Geçersiz Kıl ve Al - {title}",
"PreferProtocol": "{preferredProtocol}'u tercih edin",
"PreferProtocol": "{preferredProtocol} Tercih Edin",
"PreferredProtocol": "Tercih Edilen Protokol",
"PublishedDate": "Yayınlanma Tarihi",
"RemoveQueueItem": "Kaldır - {sourceTitle}",
@@ -835,7 +835,7 @@
"UpdateAutomaticallyHelpText": "Güncelleştirmeleri otomatik olarak indirip yükleyin. Sistem: Güncellemeler'den yükleme yapmaya devam edebileceksiniz",
"Wanted": "Arananlar",
"Cutoff": "Kesinti",
"Required": "Gerekli",
"Required": "Zorunlu",
"AirsTbaOn": "Daha sonra duyurulacak {networkLabel}'de",
"AllFiles": "Tüm dosyalar",
"AllSeriesAreHiddenByTheAppliedFilter": "Tüm sonuçlar uygulanan filtre tarafından gizlendi",
@@ -864,7 +864,7 @@
"TomorrowAt": "Yarın {time}'da",
"NoBlocklistItems": "Engellenenler listesi öğesi yok",
"YesterdayAt": "Dün saat {time}'da",
"CustomFormatsSpecificationExceptLanguage": "Dil Dışında",
"CustomFormatsSpecificationExceptLanguage": "Dil Hariç",
"CustomFormatsSpecificationExceptLanguageHelpText": "Seçilen dil dışında herhangi bir dil mevcutsa eşleşir",
"LastSearched": "Son Aranan",
"Enable": "Etkinleştir",
@@ -958,7 +958,7 @@
"DownloadClientRootFolderHealthCheckMessage": "İndirme istemcisi {downloadClientName}, indirmeleri kök klasöre yerleştirir {rootFolderPath}. Bir kök klasöre indirmemelisiniz.",
"DeleteBackup": "Yedeklemeyi Sil",
"CustomColonReplacementFormatHelpText": "İki nokta üst üste yerine kullanılacak karakterler",
"CustomColonReplacement": "Özel Kolon Değişimi",
"CustomColonReplacement": "İki Nokta Üst Üste İşareti İçin Özel Değiştirme",
"CustomColonReplacementFormatHint": "İki Nokta (Harf) gibi geçerli dosya sistemi karakteri",
"CustomFormatsSpecificationReleaseGroup": "Yayın Grubu",
"CustomFormatsSpecificationResolution": "Çözünürlük",
@@ -1008,10 +1008,10 @@
"Debug": "Hata ayıklama",
"DailyEpisodeTypeFormat": "Tarih ({format})",
"DeleteSeriesFolders": "Dizi Klasörlerini Sil",
"Discord": "Uyuşmazlık",
"Discord": "Discord",
"DeleteSeriesFoldersHelpText": "Dizi klasörlerini ve tüm içeriklerini silin",
"QualitySettings": "Kalite Ayarları",
"ReplaceWithSpaceDashSpace": "Space Dash Space ile değiştirin",
"ReplaceWithSpaceDashSpace": "Boşluk, Tire ve Boşluk ile Değiştir",
"Continuing": "Devam Ediyor",
"CleanLibraryLevel": "Kütüphane Seviyesini Temizle",
"ClickToChangeSeason": "Sezonu değiştirmek için tıklayın",
@@ -1188,7 +1188,7 @@
"DeleteSeriesFolderEpisodeCount": "{episodeFileCount} bölüm dosyası toplamı {size}",
"DestinationPath": "Hedef yol",
"Disabled": "Devre dışı",
"ColonReplacementFormatHelpText": "{appName}'ın kolon değişimini nasıl işlediğini değiştirin",
"ColonReplacementFormatHelpText": "{appName} uygulamasının iki nokta üst üste işaretini değiştirme ayarı",
"DeleteTag": "Etiketi Sil",
"NamingSettingsLoadError": "Adlandırma ayarları yüklenemiyor",
"NotificationTriggers": "Bildirim Tetikleyicileri",
@@ -1435,8 +1435,8 @@
"RenameFiles": "Yeniden Adlandır",
"Renamed": "Yeniden adlandırıldı",
"Replace": "Değiştir",
"ReplaceWithDash": "Dash ile değiştir",
"ReplaceWithSpaceDash": "Space Dash ile değiştirin",
"ReplaceWithDash": "Tire ile değiştir",
"ReplaceWithSpaceDash": "Tire ve Boşluk ile Değiştir",
"RequiredHelpText": "Özel formatın uygulanabilmesi için bu {implementationName} koşulunun eşleşmesi gerekir. Aksi takdirde tek bir {implementationName} eşleşmesi yeterlidir.",
"RestartRequiredHelpTextWarning": "Etkili olması için yeniden başlatma gerektirir",
"RetentionHelpText": "Yalnızca Usenet: Sınırsız saklamaya ayarlamak için sıfıra ayarlayın",

View File

@@ -24,7 +24,8 @@ namespace NzbDrone.Core.MetadataSource.SkyHook.Resource
public int? TvRageId { get; set; }
public int? TvMazeId { get; set; }
public int? TmdbId { get; set; }
public HashSet<int> MalIds { get; set; }
public HashSet<int> AniListIds { get; set; }
public string Status { get; set; }
public int? Runtime { get; set; }
public TimeOfDayResource TimeOfDay { get; set; }

View File

@@ -194,6 +194,8 @@ namespace NzbDrone.Core.MetadataSource.SkyHook
}
series.ImdbId = show.ImdbId;
series.MalIds = show.MalIds;
series.AniListIds = show.AniListIds;
series.Title = show.Title;
series.CleanTitle = Parser.Parser.CleanSeriesTitle(show.Title);
series.SortTitle = SeriesTitleNormalizer.Normalize(show.Title, show.TvdbId);

View File

@@ -554,7 +554,7 @@ namespace NzbDrone.Core.Notifications.Discord
{
embed.Thumbnail = new DiscordImage
{
Url = series?.Images?.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.Url
Url = series?.Images?.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Poster)?.RemoteUrl
};
}
@@ -562,7 +562,7 @@ namespace NzbDrone.Core.Notifications.Discord
{
embed.Image = new DiscordImage
{
Url = series?.Images?.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.Url
Url = series?.Images?.FirstOrDefault(x => x.CoverType == MediaCoverTypes.Fanart)?.RemoteUrl
};
}

View File

@@ -51,6 +51,9 @@ namespace NzbDrone.Core.Parser
// Some Chinese anime releases contain both Chinese and English titles separated by | instead of /, remove the Chinese title and replace with normal anime pattern
new RegexReplace(@"^\[(?<subgroup>[^\]]+)\](?:\s)(?:(?<chinesetitle>(?=[^\]]*?[\u4E00-\u9FCC])[^\]]*?)(?:\s\|\s))(?<title>[^\]]+?)(?:[- ]+)(?<episode>[0-9]+(?:-[0-9]+)?(?![a-z]))话?(?:END|完)?", "[${subgroup}] ${title} - ${episode} ", RegexOptions.Compiled),
// Spanish releases with information in brackets
new RegexReplace(@"^(?<title>.+?(?=[ ._-]\()).+?\((?<year>\d{4})\/(?<info>S[^\/]+)", "${title} (${year}) - ${info} ", RegexOptions.Compiled),
};
private static readonly Regex[] ReportTitleRegex = new[]
@@ -572,7 +575,7 @@ namespace NzbDrone.Core.Parser
private static readonly Regex YearInTitleRegex = new Regex(@"^(?<title>.+?)[-_. ]+?[\(\[]?(?<year>\d{4})[\]\)]?",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex TitleComponentsRegex = new Regex(@"^(?:(?<title>.+?) \((?<title>.+?)\)|(?<title>.+?) \| (?<title>.+?))$",
private static readonly Regex TitleComponentsRegex = new Regex(@"^(?:(?<title>.+?) \((?<title>.+?)\)|(?<title>.+?) \| (?<title>.+?)|(?<title>.+?) AKA (?<title>.+?))$",
RegexOptions.IgnoreCase | RegexOptions.Compiled);
private static readonly Regex PartRegex = new Regex(@"\(\d+\)$", RegexOptions.Compiled);

View File

@@ -94,6 +94,8 @@ namespace NzbDrone.Core.Tv
series.TvMazeId = seriesInfo.TvMazeId;
series.TmdbId = seriesInfo.TmdbId;
series.ImdbId = seriesInfo.ImdbId;
series.MalIds = seriesInfo.MalIds;
series.AniListIds = seriesInfo.AniListIds;
series.AirTime = seriesInfo.AirTime;
series.Overview = seriesInfo.Overview;
series.OriginalLanguage = seriesInfo.OriginalLanguage;

View File

@@ -17,6 +17,8 @@ namespace NzbDrone.Core.Tv
Seasons = new List<Season>();
Tags = new HashSet<int>();
OriginalLanguage = Language.English;
MalIds = new HashSet<int>();
AniListIds = new HashSet<int>();
}
public int TvdbId { get; set; }
@@ -24,6 +26,8 @@ namespace NzbDrone.Core.Tv
public int TvMazeId { get; set; }
public string ImdbId { get; set; }
public int TmdbId { get; set; }
public HashSet<int> MalIds { get; set; }
public HashSet<int> AniListIds { get; set; }
public string Title { get; set; }
public string CleanTitle { get; set; }
public string SortTitle { get; set; }

View File

@@ -1,5 +1,4 @@
using FluentValidation;
using FluentValidation.Validators;
using NzbDrone.Common.Extensions;
namespace NzbDrone.Core.Validation
@@ -10,10 +9,5 @@ namespace NzbDrone.Core.Validation
{
return ruleBuilder.Must(x => x.IsValidIpAddress()).WithMessage("Must contain wildcard (*) or a valid IP Address");
}
public static IRuleBuilderOptions<T, string> NotListenAllIp4Address<T>(this IRuleBuilder<T, string> ruleBuilder)
{
return ruleBuilder.SetValidator(new RegularExpressionValidator(@"^(?!0\.0\.0\.0)")).WithMessage("Use * instead of 0.0.0.0");
}
}
}

View File

@@ -33,7 +33,6 @@ namespace Sonarr.Api.V3.Config
SharedValidator.RuleFor(c => c.BindAddress)
.ValidIpAddress()
.NotListenAllIp4Address()
.When(c => c.BindAddress != "*" && c.BindAddress != "localhost");
SharedValidator.RuleFor(c => c.Port).ValidPort();

View File

@@ -329,7 +329,7 @@ namespace Sonarr.Api.V3.Series
{
foreach (var series in message.Series)
{
BroadcastResourceChange(ModelAction.Deleted, series.ToResource());
BroadcastResourceChange(ModelAction.Deleted, GetSeriesResource(series, false));
}
}
@@ -344,7 +344,7 @@ namespace Sonarr.Api.V3.Series
{
foreach (var series in message.Series)
{
BroadcastResourceChange(ModelAction.Updated, series.ToResource());
BroadcastResourceChange(ModelAction.Updated, GetSeriesResource(series, false));
}
}