1
0
mirror of https://github.com/Sonarr/Sonarr.git synced 2024-12-12 11:15:43 +02:00

Use named tokens for backend translations

Closes #6051
This commit is contained in:
Mark McDowall 2023-10-16 23:51:00 -07:00 committed by GitHub
parent 41ed300899
commit 11f96c3104
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
42 changed files with 554 additions and 292 deletions

View File

@ -30,9 +30,11 @@ public void should_get_string_in_dictionary_if_lang_exists_and_string_exists()
} }
[Test] [Test]
public void should_get_string_in_default_language_dictionary_if_no_lang_country_code_exists_and_string_exists() public void should_get_string_in_french()
{ {
var localizedString = Subject.GetLocalizedString("UiLanguage", "fr_fr"); Mocker.GetMock<IConfigService>().Setup(m => m.UILanguage).Returns((int)Language.French);
var localizedString = Subject.GetLocalizedString("UiLanguage");
localizedString.Should().Be("UI Langue"); localizedString.Should().Be("UI Langue");
@ -40,19 +42,10 @@ public void should_get_string_in_default_language_dictionary_if_no_lang_country_
} }
[Test] [Test]
public void should_get_string_in_default_dictionary_if_no_lang_exists_and_string_exists() public void should_get_string_in_default_dictionary_if_unknown_language_and_string_exists()
{ {
var localizedString = Subject.GetLocalizedString("UiLanguage", "an"); Mocker.GetMock<IConfigService>().Setup(m => m.UILanguage).Returns(0);
var localizedString = Subject.GetLocalizedString("UiLanguage");
localizedString.Should().Be("UI Language");
ExceptionVerification.ExpectedErrors(1);
}
[Test]
public void should_get_string_in_default_dictionary_if_lang_empty_and_string_exists()
{
var localizedString = Subject.GetLocalizedString("UiLanguage", "");
localizedString.Should().Be("UI Language"); localizedString.Should().Be("UI Language");
} }
@ -60,7 +53,7 @@ public void should_get_string_in_default_dictionary_if_lang_empty_and_string_exi
[Test] [Test]
public void should_return_argument_if_string_doesnt_exists() public void should_return_argument_if_string_doesnt_exists()
{ {
var localizedString = Subject.GetLocalizedString("badString", "en"); var localizedString = Subject.GetLocalizedString("badString");
localizedString.Should().Be("badString"); localizedString.Should().Be("badString");
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using NLog; using NLog;
using NzbDrone.Core.Configuration; using NzbDrone.Core.Configuration;
using NzbDrone.Core.Configuration.Events; using NzbDrone.Core.Configuration.Events;
@ -28,7 +29,7 @@ public override HealthCheck Check()
{ {
_logger.Warn("Please update your API key to be at least {0} characters long. You can do this via settings or the config file", MinimumLength); _logger.Warn("Please update your API key to be at least {0} characters long. You can do this via settings or the config file", MinimumLength);
return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("ApiKeyValidationHealthCheckMessage"), MinimumLength), "#invalid-api-key"); return new HealthCheck(GetType(), HealthCheckResult.Warning, _localizationService.GetLocalizedString("ApiKeyValidationHealthCheckMessage", new Dictionary<string, object> { { "MinimumLength", MinimumLength } }), "#invalid-api-key");
} }
return new HealthCheck(GetType()); return new HealthCheck(GetType());

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NLog; using NLog;
using NzbDrone.Core.Download; using NzbDrone.Core.Download;
@ -44,7 +45,11 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
$"{string.Format(_localizationService.GetLocalizedString("DownloadClientCheckUnableToCommunicateWithHealthCheckMessage"), downloadClient.Definition.Name)} {ex.Message}", _localizationService.GetLocalizedString("DownloadClientCheckUnableToCommunicateWithHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientName", downloadClient.Definition.Name },
{ "errorMessage", ex.Message }
}),
"#unable-to-communicate-with-download-client"); "#unable-to-communicate-with-download-client");
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using NLog; using NLog;
using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.Datastore.Events;
using NzbDrone.Core.Download; using NzbDrone.Core.Download;
@ -44,7 +45,10 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("DownloadClientRemovesCompletedDownloadsHealthCheckMessage"), clientName, "Sonarr"), _localizationService.GetLocalizedString("DownloadClientRemovesCompletedDownloadsHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientName", clientName }
}),
"#download-client-removes-completed-downloads"); "#download-client-removes-completed-downloads");
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using NLog; using NLog;
@ -53,7 +54,11 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("DownloadClientRootFolderHealthCheckMessage"), client.Definition.Name, folder.FullPath), _localizationService.GetLocalizedString("DownloadClientRootFolderHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath }
}),
"#downloads-in-root-folder"); "#downloads-in-root-folder");
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using NLog; using NLog;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Datastore.Events; using NzbDrone.Core.Datastore.Events;
@ -45,7 +46,11 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("DownloadClientSortingHealthCheckMessage"), clientName, status.SortingMode), _localizationService.GetLocalizedString("DownloadClientSortingHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientName", clientName },
{ "sortingMode", status.SortingMode }
}),
"#download-folder-and-library-folder-not-different-folders"); "#download-folder-and-library-folder-not-different-folders");
} }
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Download; using NzbDrone.Core.Download;
@ -45,7 +46,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("DownloadClientStatusSingleClientHealthCheckMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), _localizationService.GetLocalizedString("DownloadClientStatusSingleClientHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientNames", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name)) }
}),
"#download-clients-are-unavailable-due-to-failures"); "#download-clients-are-unavailable-due-to-failures");
} }
} }

View File

@ -54,13 +54,19 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("ImportListRootFolderMissingRootHealthCheckMessage"), FormatRootFolder(missingRootFolder.Key, missingRootFolder.Value)), _localizationService.GetLocalizedString("ImportListRootFolderMissingRootHealthCheckMessage", new Dictionary<string, object>
{
{ "rootFolderInfo", FormatRootFolder(missingRootFolder.Key, missingRootFolder.Value) }
}),
"#import-list-missing-root-folder"); "#import-list-missing-root-folder");
} }
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("ImportListRootFolderMultipleMissingRootsHealthCheckMessage"), string.Join(" | ", missingRootFolders.Select(m => FormatRootFolder(m.Key, m.Value)))), _localizationService.GetLocalizedString("ImportListRootFolderMultipleMissingRootsHealthCheckMessage", new Dictionary<string, object>
{
{ "rootFoldersInfo", string.Join(" | ", missingRootFolders.Select(m => FormatRootFolder(m.Key, m.Value))) }
}),
"#import-list-missing-root-folder"); "#import-list-missing-root-folder");
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.ImportLists; using NzbDrone.Core.ImportLists;
@ -45,7 +46,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("ImportListStatusUnavailableHealthCheckMessage"), string.Join(", ", backOffProviders.Select(v => v.ImportList.Definition.Name))), _localizationService.GetLocalizedString("ImportListStatusUnavailableHealthCheckMessage", new Dictionary<string, object>
{
{ "importListNames", string.Join(", ", backOffProviders.Select(v => v.ImportList.Definition.Name)) }
}),
"#import-lists-are-unavailable-due-to-failures"); "#import-lists-are-unavailable-due-to-failures");
} }
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Core.Download; using NzbDrone.Core.Download;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
@ -35,7 +36,10 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerDownloadClientHealthCheckMessage"), string.Join(", ", invalidIndexers.Select(v => v.Name).ToArray())), _localizationService.GetLocalizedString("IndexerDownloadClientHealthCheckMessage", new Dictionary<string, object>
{
{ "indexerNames", string.Join(", ", invalidIndexers.Select(v => v.Name).ToArray()) }
}),
"#invalid-indexer-download-client-setting"); "#invalid-indexer-download-client-setting");
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
@ -41,7 +42,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerJackettAllHealthCheckMessage"), string.Join(", ", jackettAllProviders.Select(i => i.Name))), _localizationService.GetLocalizedString("IndexerJackettAllHealthCheckMessage", new Dictionary<string, object>
{
{ "indexerNames", string.Join(", ", jackettAllProviders.Select(i => i.Name)) }
}),
"#jackett-all-endpoint-used"); "#jackett-all-endpoint-used");
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
@ -48,7 +49,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerLongTermStatusUnavailableHealthCheckMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), _localizationService.GetLocalizedString("IndexerLongTermStatusUnavailableHealthCheckMessage", new Dictionary<string, object>
{
{ "indexerNames", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name)) }
}),
"#indexers-are-unavailable-due-to-failures"); "#indexers-are-unavailable-due-to-failures");
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers; using NzbDrone.Core.Indexers;
@ -48,7 +49,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerStatusUnavailableHealthCheckMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), _localizationService.GetLocalizedString("IndexerStatusUnavailableHealthCheckMessage", new Dictionary<string, object>
{
{ "indexerNames", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name)) }
}),
"#indexers-are-unavailable-due-to-failures"); "#indexers-are-unavailable-due-to-failures");
} }
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Localization; using NzbDrone.Core.Localization;
@ -45,7 +46,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Warning, HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("NotificationStatusSingleClientHealthCheckMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), _localizationService.GetLocalizedString("NotificationStatusSingleClientHealthCheckMessage", new Dictionary<string, object>
{
{ "notificationNames", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name)) }
}),
"#notifications-are-unavailable-due-to-failures"); "#notifications-are-unavailable-due-to-failures");
} }
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net; using System.Net;
using NLog; using NLog;
@ -42,7 +43,10 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("ProxyResolveIpHealthCheckMessage"), _configService.ProxyHostname), _localizationService.GetLocalizedString("ProxyResolveIpHealthCheckMessage", new Dictionary<string, object>
{
{ "proxyHostName", _configService.ProxyHostname }
}),
"#proxy-failed-resolve-ip"); "#proxy-failed-resolve-ip");
} }
@ -61,7 +65,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("ProxyBadRequestHealthCheckMessage"), response.StatusCode), _localizationService.GetLocalizedString("ProxyBadRequestHealthCheckMessage", new Dictionary<string, object>
{
{ "statusCode", response.StatusCode }
}),
"#proxy-failed-test"); "#proxy-failed-test");
} }
} }
@ -71,7 +78,10 @@ public override HealthCheck Check()
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("ProxyFailedToTestHealthCheckMessage"), request.Url), _localizationService.GetLocalizedString("ProxyFailedToTestHealthCheckMessage", new Dictionary<string, object>
{
{ "url", request.Url }
}),
"#proxy-failed-test"); "#proxy-failed-test");
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using NzbDrone.Common.Disk; using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Configuration; using NzbDrone.Core.Configuration;
@ -33,7 +34,10 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("RecycleBinUnableToWriteHealthCheckMessage"), recycleBin), _localizationService.GetLocalizedString("RecycleBinUnableToWriteHealthCheckMessage", new Dictionary<string, object>
{
{ "path", recycleBin }
}),
"#cannot-write-recycle-bin"); "#cannot-write-recycle-bin");
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using NLog; using NLog;
@ -68,30 +69,92 @@ public override HealthCheck Check()
{ {
if (!status.IsLocalhost) if (!status.IsLocalhost)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingWrongOSPathHealthCheckMessage"), client.Definition.Name, folder.FullPath, _osInfo.Name), "#bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingWrongOSPathHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath },
{ "osName", _osInfo.Name }
}),
"#bad-remote-path-mapping");
} }
if (_osInfo.IsDocker) if (_osInfo.IsDocker)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingBadDockerPathHealthCheckMessage"), client.Definition.Name, folder.FullPath, _osInfo.Name), "#docker-bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingBadDockerPathHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath },
{ "osName", _osInfo.Name }
}),
"#docker-bad-remote-path-mapping");
} }
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingLocalWrongOSPathHealthCheckMessage"), client.Definition.Name, folder.FullPath, _osInfo.Name), "#bad-download-client-settings"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingLocalWrongOSPathHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath },
{ "osName", _osInfo.Name }
}),
"#bad-download-client-settings");
} }
if (!_diskProvider.FolderExists(folder.FullPath)) if (!_diskProvider.FolderExists(folder.FullPath))
{ {
if (_osInfo.IsDocker) if (_osInfo.IsDocker)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingDockerFolderMissingHealthCheckMessage"), client.Definition.Name, folder.FullPath), "#docker-bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingDockerFolderMissingHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath }
}),
"#docker-bad-remote-path-mapping");
} }
if (!status.IsLocalhost) if (!status.IsLocalhost)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingLocalFolderMissingHealthCheckMessage"), client.Definition.Name, folder.FullPath), "#bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingLocalFolderMissingHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath }
}),
"#bad-remote-path-mapping");
} }
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingGenericPermissionsHealthCheckMessage"), client.Definition.Name, folder.FullPath), "#permissions-error"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingGenericPermissionsHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", folder.FullPath }
}),
"#permissions-error");
} }
} }
} }
@ -129,12 +192,28 @@ public HealthCheck Check(IEvent message)
if (_diskProvider.FileExists(episodePath)) if (_diskProvider.FileExists(episodePath))
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingDownloadPermissionsHealthCheckMessage"), episodePath), "#permissions-error"); return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingDownloadPermissionsHealthCheckMessage",
new Dictionary<string, object>
{
{ "path", episodePath }
}),
"#permissions-error");
} }
// If the file doesn't exist but EpisodeInfo is not null then the message is coming from // If the file doesn't exist but EpisodeInfo is not null then the message is coming from
// ImportApprovedEpisodes and the file must have been removed part way through processing // ImportApprovedEpisodes and the file must have been removed part way through processing
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFileRemovedHealthCheckMessage"), episodePath), "#remote-path-file-removed"); return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFileRemovedHealthCheckMessage",
new Dictionary<string, object>
{
{ "path", episodePath }
}),
"#remote-path-file-removed");
} }
// If the previous case did not match then the failure occured in DownloadedEpisodeImportService, // If the previous case did not match then the failure occured in DownloadedEpisodeImportService,
@ -156,42 +235,118 @@ public HealthCheck Check(IEvent message)
// that the user realises something is wrong. // that the user realises something is wrong.
if (dlpath.IsNullOrWhiteSpace()) if (dlpath.IsNullOrWhiteSpace())
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("RemotePathMappingImportFailedHealthCheckMessage"), "#remote-path-import-failed"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("RemotePathMappingImportFailedHealthCheckMessage"),
"#remote-path-import-failed");
} }
if (!dlpath.IsPathValid(PathValidationType.CurrentOs)) if (!dlpath.IsPathValid(PathValidationType.CurrentOs))
{ {
if (!status.IsLocalhost) if (!status.IsLocalhost)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFilesWrongOSPathHealthCheckMessage"), client.Definition.Name, dlpath, _osInfo.Name), "#bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFilesWrongOSPathHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", dlpath },
{ "osName", _osInfo.Name }
}),
"#bad-remote-path-mapping");
} }
if (_osInfo.IsDocker) if (_osInfo.IsDocker)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFilesBadDockerPathHealthCheckMessage"), client.Definition.Name, dlpath, _osInfo.Name), "#docker-bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFilesBadDockerPathHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", dlpath },
{ "osName", _osInfo.Name }
}),
"#docker-bad-remote-path-mapping");
} }
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage"), client.Definition.Name, dlpath, _osInfo.Name), "#bad-download-client-settings"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", dlpath },
{ "osName", _osInfo.Name }
}),
"#bad-download-client-settings");
} }
if (_diskProvider.FolderExists(dlpath)) if (_diskProvider.FolderExists(dlpath))
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFolderPermissionsHealthCheckMessage"), dlpath), "#permissions-error"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFolderPermissionsHealthCheckMessage",
new Dictionary<string, object>
{
{ "path", dlpath }
}),
"#permissions-error");
} }
// if it's a remote client/docker, likely missing path mappings // if it's a remote client/docker, likely missing path mappings
if (_osInfo.IsDocker) if (_osInfo.IsDocker)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFolderPermissionsHealthCheckMessage"), client.Definition.Name, dlpath), "#docker-bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFolderPermissionsHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", dlpath }
}),
"#docker-bad-remote-path-mapping");
} }
if (!status.IsLocalhost) if (!status.IsLocalhost)
{ {
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingRemoteDownloadClientHealthCheckMessage"), client.Definition.Name, dlpath), "#bad-remote-path-mapping"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingRemoteDownloadClientHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", dlpath },
{ "osName", _osInfo.Name }
}), "#bad-remote-path-mapping");
} }
// path mappings shouldn't be needed locally so probably a permissions issue // path mappings shouldn't be needed locally so probably a permissions issue
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("RemotePathMappingFilesGenericPermissionsHealthCheckMessage"), client.Definition.Name, dlpath), "#permissions-error"); return new HealthCheck(
GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString(
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage",
new Dictionary<string, object>
{
{ "downloadClientName", client.Definition.Name },
{ "path", dlpath }
}),
"#permissions-error");
} }
catch (DownloadClientException ex) catch (DownloadClientException ex)
{ {

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
using NzbDrone.Core.Localization; using NzbDrone.Core.Localization;
@ -34,13 +35,19 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("RemovedSeriesSingleRemovedHealthCheckMessage"), seriesText), _localizationService.GetLocalizedString("RemovedSeriesSingleRemovedHealthCheckMessage", new Dictionary<string, object>
{
{ "series", seriesText }
}),
"#series-removed-from-thetvdb"); "#series-removed-from-thetvdb");
} }
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("RemovedSeriesMultipleRemovedHealthCheckMessage"), seriesText), _localizationService.GetLocalizedString("RemovedSeriesMultipleRemovedHealthCheckMessage", new Dictionary<string, object>
{
{ "series", seriesText }
}),
"#series-removed-from-thetvdb"); "#series-removed-from-thetvdb");
} }

View File

@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq; using System.Linq;
using NzbDrone.Common.Disk; using NzbDrone.Common.Disk;
using NzbDrone.Common.Extensions; using NzbDrone.Common.Extensions;
@ -42,13 +43,23 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("RootFolderMissingHealthCheckMessage"), missingRootFolders.First()), _localizationService.GetLocalizedString(
"RootFolderMissingHealthCheckMessage",
new Dictionary<string, object>
{
{ "rootFolderPath", missingRootFolders.First() }
}),
"#missing-root-folder"); "#missing-root-folder");
} }
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("RootFolderMultipleMissingHealthCheckMessage"), string.Join(" | ", missingRootFolders)), _localizationService.GetLocalizedString(
"RootFolderMultipleMissingHealthCheckMessage",
new Dictionary<string, object>
{
{ "rootFolderPaths", string.Join(" | ", missingRootFolders) }
}),
"#missing-root-folder"); "#missing-root-folder");
} }

View File

@ -1,4 +1,5 @@
using System; using System;
using System.Collections.Generic;
using System.IO; using System.IO;
using NzbDrone.Common.Disk; using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo; using NzbDrone.Common.EnvironmentInfo;
@ -47,7 +48,12 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateStartupTranslocationHealthCheckMessage"), startupFolder), _localizationService.GetLocalizedString(
"UpdateStartupTranslocationHealthCheckMessage",
new Dictionary<string, object>
{
{ "startupFolder", startupFolder }
}),
"#cannot-install-update-because-startup-folder-is-in-an-app-translocation-folder."); "#cannot-install-update-because-startup-folder-is-in-an-app-translocation-folder.");
} }
@ -55,7 +61,13 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateStartupNotWritableHealthCheckMessage"), startupFolder, Environment.UserName), _localizationService.GetLocalizedString(
"UpdateStartupNotWritableHealthCheckMessage",
new Dictionary<string, object>
{
{ "startupFolder", startupFolder },
{ "userName", Environment.UserName }
}),
"#cannot-install-update-because-startup-folder-is-not-writable-by-the-user"); "#cannot-install-update-because-startup-folder-is-not-writable-by-the-user");
} }
@ -63,7 +75,13 @@ public override HealthCheck Check()
{ {
return new HealthCheck(GetType(), return new HealthCheck(GetType(),
HealthCheckResult.Error, HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateUINotWritableHealthCheckMessage"), uiFolder, Environment.UserName), _localizationService.GetLocalizedString(
"UpdateUiNotWritableHealthCheckMessage",
new Dictionary<string, object>
{
{ "startupFolder", startupFolder },
{ "userName", Environment.UserName }
}),
"#cannot-install-update-because-ui-folder-is-not-writable-by-the-user"); "#cannot-install-update-because-ui-folder-is-not-writable-by-the-user");
} }
} }

View File

@ -1,6 +1,6 @@
{ {
"Added": "Přidáno", "Added": "Přidáno",
"ApiKeyValidationHealthCheckMessage": "Aktualizujte svůj klíč API tak, aby měl alespoň {0} znaků. Můžete to provést prostřednictvím nastavení nebo konfiguračního souboru", "ApiKeyValidationHealthCheckMessage": "Aktualizujte svůj klíč API tak, aby měl alespoň {length} znaků. Můžete to provést prostřednictvím nastavení nebo konfiguračního souboru",
"BlocklistRelease": "Blocklist pro vydání", "BlocklistRelease": "Blocklist pro vydání",
"AgeWhenGrabbed": "Stáří (kdy bylo získáno)", "AgeWhenGrabbed": "Stáří (kdy bylo získáno)",
"Always": "Vždy", "Always": "Vždy",
@ -246,7 +246,7 @@
"CustomFormatJson": "Vlastní JSON formát", "CustomFormatJson": "Vlastní JSON formát",
"Debug": "Ladit", "Debug": "Ladit",
"Day": "Den", "Day": "Den",
"DeleteCustomFormatMessageText": "Opravdu chcete odstranit vlastní formát '{0}'?", "DeleteCustomFormatMessageText": "Opravdu chcete odstranit vlastní formát '{customFormatName}'?",
"DefaultNameCopiedProfile": "{name} - Kopírovat", "DefaultNameCopiedProfile": "{name} - Kopírovat",
"DefaultNameCopiedSpecification": "{name} - Kopírovat", "DefaultNameCopiedSpecification": "{name} - Kopírovat",
"DefaultNotFoundMessage": "Asi jsi se ztratil, není tu nic k vidění.", "DefaultNotFoundMessage": "Asi jsi se ztratil, není tu nic k vidění.",

View File

@ -1,6 +1,6 @@
{ {
"Added": "Hinzugefügt", "Added": "Hinzugefügt",
"ApiKeyValidationHealthCheckMessage": "Bitte den API Schlüssel korrigieren, dieser muss mindestens {0} Zeichen lang sein. Die Änderung kann über die Einstellungen oder die Konfigurationsdatei erfolgen", "ApiKeyValidationHealthCheckMessage": "Bitte den API Schlüssel korrigieren, dieser muss mindestens {length} Zeichen lang sein. Die Änderung kann über die Einstellungen oder die Konfigurationsdatei erfolgen",
"AppDataLocationHealthCheckMessage": "Ein Update ist nicht möglich, um das Löschen von AppData beim Update zu verhindern", "AppDataLocationHealthCheckMessage": "Ein Update ist nicht möglich, um das Löschen von AppData beim Update zu verhindern",
"RemoveCompletedDownloads": "Entferne abgeschlossene Downloads", "RemoveCompletedDownloads": "Entferne abgeschlossene Downloads",
"RemoveFailedDownloads": "Entferne fehlgeschlagene Downloads", "RemoveFailedDownloads": "Entferne fehlgeschlagene Downloads",
@ -8,10 +8,10 @@
"AutomaticAdd": "Automatisch hinzufügen", "AutomaticAdd": "Automatisch hinzufügen",
"CountSeasons": "{Anzahl} Staffeln", "CountSeasons": "{Anzahl} Staffeln",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "Es ist kein Download-Client verfügbar", "DownloadClientCheckNoneAvailableHealthCheckMessage": "Es ist kein Download-Client verfügbar",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Kommunikation mit {0} nicht möglich.", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Kommunikation mit {downloadClientName} nicht möglich.",
"DownloadClientRootFolderHealthCheckMessage": "Der Download-Client {0} legt Downloads im Stammordner {1} ab. Sie sollten nicht in einen Stammordner herunterladen.", "DownloadClientRootFolderHealthCheckMessage": "Der Download-Client {downloadClientName} legt Downloads im Stammordner {rootFolderPath} ab. Sie sollten nicht in einen Stammordner herunterladen.",
"DownloadClientSortingHealthCheckMessage": "Im Download-Client {0} ist die Sortierung {1} für die Kategorie von {appName} aktiviert. Sie sollten die Sortierung in Ihrem Download-Client deaktivieren, um Importprobleme zu vermeiden.", "DownloadClientSortingHealthCheckMessage": "Im Download-Client {downloadClientName} ist die Sortierung {sortingMode} für die Kategorie von {appName} aktiviert. Sie sollten die Sortierung in Ihrem Download-Client deaktivieren, um Importprobleme zu vermeiden.",
"DownloadClientStatusSingleClientHealthCheckMessage": "Download-Clients sind aufgrund von Fehlern nicht verfügbar: {0}", "DownloadClientStatusSingleClientHealthCheckMessage": "Download-Clients sind aufgrund von Fehlern nicht verfügbar: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Alle Download-Clients sind aufgrund von Fehlern nicht verfügbar", "DownloadClientStatusAllClientHealthCheckMessage": "Alle Download-Clients sind aufgrund von Fehlern nicht verfügbar",
"EditSelectedDownloadClients": "Ausgewählte Download Clienten bearbeiten", "EditSelectedDownloadClients": "Ausgewählte Download Clienten bearbeiten",
"EditSelectedImportLists": "Ausgewählte Einspiel-Liste bearbeten", "EditSelectedImportLists": "Ausgewählte Einspiel-Liste bearbeten",
@ -22,10 +22,10 @@
"Language": "Sprache", "Language": "Sprache",
"CloneCondition": "Bedingung klonen", "CloneCondition": "Bedingung klonen",
"DeleteCondition": "Bedingung löschen", "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 eigene Format '{0}' löschen willst?", "DeleteCustomFormatMessageText": "Bist du sicher, dass du das eigene Format '{customFormatName}' löschen willst?",
"RemoveSelectedItemQueueMessageText": "Bist du sicher, dass du ein Eintrag aus der Warteschlange entfernen willst?", "RemoveSelectedItemQueueMessageText": "Bist du sicher, dass du ein Eintrag aus der Warteschlange entfernen willst?",
"RemoveSelectedItemsQueueMessageText": "Bist du sicher, dass du {0} Einträge aus der Warteschlange entfernen willst?", "RemoveSelectedItemsQueueMessageText": "Bist du sicher, dass du {selectedCount} Einträge aus der Warteschlange entfernen willst?",
"DeleteSelectedDownloadClients": "Lösche Download Client(s)", "DeleteSelectedDownloadClients": "Lösche Download Client(s)",
"DeleteSelectedIndexers": "Lösche Indexer", "DeleteSelectedIndexers": "Lösche Indexer",
"DeleteSelectedImportLists": "Lösche Einspiel Liste", "DeleteSelectedImportLists": "Lösche Einspiel Liste",

View File

@ -1,6 +1,6 @@
{ {
"AppDataLocationHealthCheckMessage": "Η ενημέρωση δεν θα είναι δυνατή για να αποτραπεί η διαγραφή των δεδομένων εφαρμογής κατά την ενημέρωση", "AppDataLocationHealthCheckMessage": "Η ενημέρωση δεν θα είναι δυνατή για να αποτραπεί η διαγραφή των δεδομένων εφαρμογής κατά την ενημέρωση",
"ApiKeyValidationHealthCheckMessage": "Παρακαλούμε ενημερώστε το κλείδι API ώστε να έχει τουλάχιστον {0} χαρακτήρες. Μπορείτε να το κάνετε αυτό μέσα από τις ρυθμίσεις ή το αρχείο ρυθμίσεων", "ApiKeyValidationHealthCheckMessage": "Παρακαλούμε ενημερώστε το κλείδι API ώστε να έχει τουλάχιστον {length} χαρακτήρες. Μπορείτε να το κάνετε αυτό μέσα από τις ρυθμίσεις ή το αρχείο ρυθμίσεων",
"Added": "Προστέθηκε", "Added": "Προστέθηκε",
"ApplyChanges": "Εφαρμογή Αλλαγών", "ApplyChanges": "Εφαρμογή Αλλαγών",
"AutomaticAdd": "Αυτόματη Προσθήκη", "AutomaticAdd": "Αυτόματη Προσθήκη",
@ -10,9 +10,9 @@
"RemoveCompletedDownloads": "Αφαίρεση Ολοκληρωμένων Λήψεων", "RemoveCompletedDownloads": "Αφαίρεση Ολοκληρωμένων Λήψεων",
"RemoveFailedDownloads": "Αφαίρεση Αποτυχημένων Λήψεων", "RemoveFailedDownloads": "Αφαίρεση Αποτυχημένων Λήψεων",
"DeleteCondition": "Διαγραφή συνθήκης", "DeleteCondition": "Διαγραφή συνθήκης",
"DeleteConditionMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε τη συνθήκη '{0}';", "DeleteConditionMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε τη συνθήκη '{name}';",
"DeleteCustomFormatMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε τη προσαρμοσμένη μορφή '{0}';", "DeleteCustomFormatMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε τη προσαρμοσμένη μορφή '{customFormatName}';",
"RemoveSelectedItemsQueueMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε {0} αντικείμενα από την ουρά;", "RemoveSelectedItemsQueueMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε {selectedCount} αντικείμενα από την ουρά;",
"CloneCondition": "Κλωνοποίηση συνθήκης", "CloneCondition": "Κλωνοποίηση συνθήκης",
"RemoveSelectedItemQueueMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε 1 αντικείμενο από την ουρά;", "RemoveSelectedItemQueueMessageText": "Είστε σίγουροι πως θέλετε να διαγράψετε 1 αντικείμενο από την ουρά;",
"AddConditionImplementation": "Προσθήκη", "AddConditionImplementation": "Προσθήκη",

View File

@ -85,7 +85,7 @@
"AnimeTypeFormat": "Absolute episode number ({format})", "AnimeTypeFormat": "Absolute episode number ({format})",
"Any": "Any", "Any": "Any",
"ApiKey": "API Key", "ApiKey": "API Key",
"ApiKeyValidationHealthCheckMessage": "Please update your API key to be at least {0} characters long. You can do this via settings or the config file", "ApiKeyValidationHealthCheckMessage": "Please update your API key to be at least {length} characters long. You can do this via settings or the config file",
"AppDataDirectory": "AppData directory", "AppDataDirectory": "AppData directory",
"AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update", "AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update",
"AppUpdated": "{appName} Updated", "AppUpdated": "{appName} Updated",
@ -284,7 +284,7 @@
"DeleteCondition": "Delete Condition", "DeleteCondition": "Delete Condition",
"DeleteConditionMessageText": "Are you sure you want to delete the condition '{name}'?", "DeleteConditionMessageText": "Are you sure you want to delete the condition '{name}'?",
"DeleteCustomFormat": "Delete Custom Format", "DeleteCustomFormat": "Delete Custom Format",
"DeleteCustomFormatMessageText": "Are you sure you want to delete the custom format '{0}'?", "DeleteCustomFormatMessageText": "Are you sure you want to delete the custom format '{customFormatName}'?",
"DeleteDelayProfile": "Delete Delay Profile", "DeleteDelayProfile": "Delete Delay Profile",
"DeleteDelayProfileMessageText": "Are you sure you want to delete this delay profile?", "DeleteDelayProfileMessageText": "Are you sure you want to delete this delay profile?",
"DeleteDownloadClient": "Delete Download Client", "DeleteDownloadClient": "Delete Download Client",
@ -359,14 +359,14 @@
"Download": "Download", "Download": "Download",
"DownloadClient": "Download Client", "DownloadClient": "Download Client",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "No download client is available", "DownloadClientCheckNoneAvailableHealthCheckMessage": "No download client is available",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Unable to communicate with {0}.", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Unable to communicate with {downloadClientName}. {errorMessage}",
"DownloadClientOptionsLoadError": "Unable to load download client options", "DownloadClientOptionsLoadError": "Unable to load download client options",
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Download client {0} is set to remove completed downloads. This can result in downloads being removed from your client before {1} can import them.", "DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "Download client {downloadClientName} is set to remove completed downloads. This can result in downloads being removed from your client before {appName} can import them.",
"DownloadClientRootFolderHealthCheckMessage": "Download client {0} places downloads in the root folder {1}. You should not download to a root folder.", "DownloadClientRootFolderHealthCheckMessage": "Download client {downloadClientName} places downloads in the root folder {rootFolderPath}. You should not download to a root folder.",
"DownloadClientSettings": "Download Client Settings", "DownloadClientSettings": "Download Client Settings",
"DownloadClientSortingHealthCheckMessage": "Download client {0} has {1} sorting enabled for {appName}'s category. You should disable sorting in your download client to avoid import issues.", "DownloadClientSortingHealthCheckMessage": "Download client {downloadClientName} has {sortingMode} sorting enabled for {appName}'s category. You should disable sorting in your download client to avoid import issues.",
"DownloadClientStatusAllClientHealthCheckMessage": "All download clients are unavailable due to failures", "DownloadClientStatusAllClientHealthCheckMessage": "All download clients are unavailable due to failures",
"DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {0}", "DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {downloadClientNames}",
"DownloadClientTagHelpText": "Only use this download client for series with at least one matching tag. Leave blank to use with all series.", "DownloadClientTagHelpText": "Only use this download client for series with at least one matching tag. Leave blank to use with all series.",
"DownloadClients": "Download Clients", "DownloadClients": "Download Clients",
"DownloadClientsLoadError": "Unable to load download clients", "DownloadClientsLoadError": "Unable to load download clients",
@ -613,13 +613,13 @@
"ImportList": "Import List", "ImportList": "Import List",
"ImportListExclusions": "Import List Exclusions", "ImportListExclusions": "Import List Exclusions",
"ImportListExclusionsLoadError": "Unable to load Import List Exclusions", "ImportListExclusionsLoadError": "Unable to load Import List Exclusions",
"ImportListRootFolderMissingRootHealthCheckMessage": "Missing root folder for import list(s): {0}", "ImportListRootFolderMissingRootHealthCheckMessage": "Missing root folder for import list(s): {rootFolderInfo}",
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Multiple root folders are missing for import lists: {0}", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Multiple root folders are missing for import lists: {rootFolderInfo}",
"ImportListSearchForMissingEpisodes": "Search for Missing Episodes", "ImportListSearchForMissingEpisodes": "Search for Missing Episodes",
"ImportListSearchForMissingEpisodesHelpText": "After series is added to {appName} automatically search for missing episodes", "ImportListSearchForMissingEpisodesHelpText": "After series is added to {appName} automatically search for missing episodes",
"ImportListSettings": "Import List Settings", "ImportListSettings": "Import List Settings",
"ImportListStatusAllUnavailableHealthCheckMessage": "All lists are unavailable due to failures", "ImportListStatusAllUnavailableHealthCheckMessage": "All lists are unavailable due to failures",
"ImportListStatusUnavailableHealthCheckMessage": "Lists unavailable due to failures: {0}", "ImportListStatusUnavailableHealthCheckMessage": "Lists unavailable due to failures: {importListNames}",
"ImportLists": "Import Lists", "ImportLists": "Import Lists",
"ImportListsLoadError": "Unable to load Import Lists", "ImportListsLoadError": "Unable to load Import Lists",
"ImportListsSettingsSummary": "Import from another {appName} instance or Trakt lists and manage list exclusions", "ImportListsSettingsSummary": "Import from another {appName} instance or Trakt lists and manage list exclusions",
@ -639,11 +639,11 @@
"IncludeHealthWarnings": "Include Health Warnings", "IncludeHealthWarnings": "Include Health Warnings",
"IncludeUnmonitored": "Include Unmonitored", "IncludeUnmonitored": "Include Unmonitored",
"Indexer": "Indexer", "Indexer": "Indexer",
"IndexerDownloadClientHealthCheckMessage": "Indexers with invalid download clients: {0}.", "IndexerDownloadClientHealthCheckMessage": "Indexers with invalid download clients: {indexerNames}.",
"IndexerDownloadClientHelpText": "Specify which download client is used for grabs from this indexer", "IndexerDownloadClientHelpText": "Specify which download client is used for grabs from this indexer",
"IndexerJackettAllHealthCheckMessage": "Indexers using the unsupported Jackett 'all' endpoint: {0}", "IndexerJackettAllHealthCheckMessage": "Indexers using the unsupported Jackett 'all' endpoint: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures for more than 6 hours", "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures for more than 6 hours",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures for more than 6 hours: {0}", "IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures for more than 6 hours: {indexerNames}",
"IndexerOptionsLoadError": "Unable to load indexer options", "IndexerOptionsLoadError": "Unable to load indexer options",
"IndexerPriority": "Indexer Priority", "IndexerPriority": "Indexer Priority",
"IndexerPriorityHelpText": "Indexer Priority from 1 (Highest) to 50 (Lowest). Default: 25. Used when grabbing releases as a tiebreaker for otherwise equal releases, {appName} will still use all enabled indexers for RSS Sync and Searching", "IndexerPriorityHelpText": "Indexer Priority from 1 (Highest) to 50 (Lowest). Default: 25. Used when grabbing releases as a tiebreaker for otherwise equal releases, {appName} will still use all enabled indexers for RSS Sync and Searching",
@ -654,7 +654,7 @@
"IndexerSearchNoInteractiveHealthCheckMessage": "No indexers available with Interactive Search enabled, {appName} will not provide any interactive search results", "IndexerSearchNoInteractiveHealthCheckMessage": "No indexers available with Interactive Search enabled, {appName} will not provide any interactive search results",
"IndexerSettings": "Indexer Settings", "IndexerSettings": "Indexer Settings",
"IndexerStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures", "IndexerStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures",
"IndexerStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures: {0}", "IndexerStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures: {indexerNames}",
"IndexerTagHelpText": "Only use this indexer for series with at least one matching tag. Leave blank to use with all series.", "IndexerTagHelpText": "Only use this indexer for series with at least one matching tag. Leave blank to use with all series.",
"Indexers": "Indexers", "Indexers": "Indexers",
"IndexersLoadError": "Unable to load Indexers", "IndexersLoadError": "Unable to load Indexers",
@ -882,7 +882,7 @@
"None": "None", "None": "None",
"NotSeasonPack": "Not Season Pack", "NotSeasonPack": "Not Season Pack",
"NotificationStatusAllClientHealthCheckMessage": "All notifications are unavailable due to failures", "NotificationStatusAllClientHealthCheckMessage": "All notifications are unavailable due to failures",
"NotificationStatusSingleClientHealthCheckMessage": "Notifications unavailable due to failures: {0}", "NotificationStatusSingleClientHealthCheckMessage": "Notifications unavailable due to failures: {notificationNames}",
"NotificationTriggers": "Notification Triggers", "NotificationTriggers": "Notification Triggers",
"NotificationTriggersHelpText": "Select which events should trigger this notification", "NotificationTriggersHelpText": "Select which events should trigger this notification",
"NotificationsLoadError": "Unable to load Notifications", "NotificationsLoadError": "Unable to load Notifications",
@ -985,11 +985,11 @@
"Protocol": "Protocol", "Protocol": "Protocol",
"ProtocolHelpText": "Choose which protocol(s) to use and which one is preferred when choosing between otherwise equal releases", "ProtocolHelpText": "Choose which protocol(s) to use and which one is preferred when choosing between otherwise equal releases",
"Proxy": "Proxy", "Proxy": "Proxy",
"ProxyBadRequestHealthCheckMessage": "Failed to test proxy. Status Code: {0}", "ProxyBadRequestHealthCheckMessage": "Failed to test proxy. Status Code: {statusCode}",
"ProxyBypassFilterHelpText": "Use ',' as a separator, and '*.' as a wildcard for subdomains", "ProxyBypassFilterHelpText": "Use ',' as a separator, and '*.' as a wildcard for subdomains",
"ProxyFailedToTestHealthCheckMessage": "Failed to test proxy: {0}", "ProxyFailedToTestHealthCheckMessage": "Failed to test proxy: {url}",
"ProxyPasswordHelpText": "You only need to enter a username and password if one is required. Leave them blank otherwise.", "ProxyPasswordHelpText": "You only need to enter a username and password if one is required. Leave them blank otherwise.",
"ProxyResolveIpHealthCheckMessage": "Failed to resolve the IP Address for the Configured Proxy Host {0}", "ProxyResolveIpHealthCheckMessage": "Failed to resolve the IP Address for the Configured Proxy Host {proxyHostName}",
"ProxyType": "Proxy Type", "ProxyType": "Proxy Type",
"ProxyUsernameHelpText": "You only need to enter a username and password if one is required. Leave them blank otherwise.", "ProxyUsernameHelpText": "You only need to enter a username and password if one is required. Leave them blank otherwise.",
"PublishedDate": "Published Date", "PublishedDate": "Published Date",
@ -1018,7 +1018,7 @@
"Real": "Real", "Real": "Real",
"Reason": "Reason", "Reason": "Reason",
"RecentChanges": "Recent Changes", "RecentChanges": "Recent Changes",
"RecycleBinUnableToWriteHealthCheckMessage": "Unable to write to configured recycling bin folder: {0}. Ensure this path exists and is writable by the user running {appName}", "RecycleBinUnableToWriteHealthCheckMessage": "Unable to write to configured recycling bin folder: {path}. Ensure this path exists and is writable by the user running {appName}",
"RecyclingBin": "Recycling Bin", "RecyclingBin": "Recycling Bin",
"RecyclingBinCleanup": "Recycling Bin Cleanup", "RecyclingBinCleanup": "Recycling Bin Cleanup",
"RecyclingBinCleanupHelpText": "Set to 0 to disable automatic cleanup", "RecyclingBinCleanupHelpText": "Set to 0 to disable automatic cleanup",
@ -1054,24 +1054,24 @@
"ReleaseTitle": "Release Title", "ReleaseTitle": "Release Title",
"Reload": "Reload", "Reload": "Reload",
"RemotePath": "Remote Path", "RemotePath": "Remote Path",
"RemotePathMappingBadDockerPathHealthCheckMessage": "You are using docker; download client {0} places downloads in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.", "RemotePathMappingBadDockerPathHealthCheckMessage": "You are using docker; download client {downloadClientName} places downloads in {path} but this is not a valid {osName} path. Review your remote path mappings and download client settings.",
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "You are using docker; download client {0} places downloads in {1} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.", "RemotePathMappingDockerFolderMissingHealthCheckMessage": "You are using docker; download client $1{downloadClientName} places downloads in {path} but this directory does not appear to exist inside the container. Review your remote path mappings and container volume settings.",
"RemotePathMappingDownloadPermissionsHealthCheckMessage": "{appName} can see but not access downloaded episode {0}. Likely permissions error.", "RemotePathMappingDownloadPermissionsHealthCheckMessage": "{appName} can see but not access downloaded episode {path}. Likely permissions error.",
"RemotePathMappingFileRemovedHealthCheckMessage": "File {0} was removed part way through processing.", "RemotePathMappingFileRemovedHealthCheckMessage": "File {path} was removed part way through processing.",
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "You are using docker; download client {0} reported files in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.", "RemotePathMappingFilesBadDockerPathHealthCheckMessage": "You are using docker; download client {downloadClientName} reported files in {path} but this is not a valid {osName} path. Review your remote path mappings and download client settings.",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Download client {0} reported files in {1} but {appName} cannot see this directory. You may need to adjust the folder's permissions.", "RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Download client {downloadClientName} reported files in {path} but {appName} cannot see this directory. You may need to adjust the folder's permissions.",
"RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "Local download client {0} reported files in {1} but this is not a valid {2} path. Review your download client settings.", "RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "Local download client {downloadClientName} reported files in {path} but this is not a valid {osName} path. Review your download client settings.",
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "Remote download client {0} reported files in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.", "RemotePathMappingFilesWrongOSPathHealthCheckMessage": "Remote download client {downloadClientName} reported files in {path} but this is not a valid {osName} path. Review your remote path mappings and download client settings.",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} can see but not access download directory {0}. Likely permissions error.", "RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} can see but not access download directory {downloadPath}. Likely permissions error.",
"RemotePathMappingGenericPermissionsHealthCheckMessage": "Download client {0} places downloads in {1} but {appName} cannot see this directory. You may need to adjust the folder's permissions.", "RemotePathMappingGenericPermissionsHealthCheckMessage": "Download client {downloadClientName} places downloads in {path} but {appName} cannot see this directory. You may need to adjust the folder's permissions.",
"RemotePathMappingHostHelpText": "The same host you specified for the remote Download Client", "RemotePathMappingHostHelpText": "The same host you specified for the remote Download Client",
"RemotePathMappingImportFailedHealthCheckMessage": "{appName} failed to import (an) episode(s). Check your logs for details.", "RemotePathMappingImportFailedHealthCheckMessage": "{appName} failed to import (an) episode(s). Check your logs for details.",
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "Remote download client {0} places downloads in {1} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.", "RemotePathMappingLocalFolderMissingHealthCheckMessage": "Remote download client {downloadClientName} places downloads in {path} but this directory does not appear to exist. Likely missing or incorrect remote path mapping.",
"RemotePathMappingLocalPathHelpText": "Path that {appName} should use to access the remote path locally", "RemotePathMappingLocalPathHelpText": "Path that {appName} should use to access the remote path locally",
"RemotePathMappingLocalWrongOSPathHealthCheckMessage": "Local download client {0} places downloads in {1} but this is not a valid {2} path. Review your download client settings.", "RemotePathMappingLocalWrongOSPathHealthCheckMessage": "Local download client {downloadClientName} places downloads in {path} but this is not a valid {osName} path. Review your download client settings.",
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "Remote download client {0} reported files in {1} but this directory does not appear to exist. Likely missing remote path mapping.", "RemotePathMappingRemoteDownloadClientHealthCheckMessage": "Remote download client {downloadClientName} reported files in {path} but this directory does not appear to exist. Likely missing remote path mapping.",
"RemotePathMappingRemotePathHelpText": "Root path to the directory that the Download Client accesses", "RemotePathMappingRemotePathHelpText": "Root path to the directory that the Download Client accesses",
"RemotePathMappingWrongOSPathHealthCheckMessage": "Remote download client {0} places downloads in {1} but this is not a valid {2} path. Review your remote path mappings and download client settings.", "RemotePathMappingWrongOSPathHealthCheckMessage": "Remote download client {downloadClientName} places downloads in {path} but this is not a valid {osName} path. Review your remote path mappings and download client settings.",
"RemotePathMappings": "Remote Path Mappings", "RemotePathMappings": "Remote Path Mappings",
"RemotePathMappingsInfo": "Remote Path Mappings are very rarely required, if {app} and your download client are on the same system it is better to match your paths. For more information see the [wiki]({wikiLink})", "RemotePathMappingsInfo": "Remote Path Mappings are very rarely required, if {app} and your download client are on the same system it is better to match your paths. For more information see the [wiki]({wikiLink})",
"RemotePathMappingsLoadError": "Unable to load Remote Path Mappings", "RemotePathMappingsLoadError": "Unable to load Remote Path Mappings",
@ -1100,8 +1100,8 @@
"RemoveTagsAutomatically": "Remove Tags Automatically", "RemoveTagsAutomatically": "Remove Tags Automatically",
"RemoveTagsAutomaticallyHelpText": "Remove tags automatically if conditions are not met", "RemoveTagsAutomaticallyHelpText": "Remove tags automatically if conditions are not met",
"RemovedFromTaskQueue": "Removed from task queue", "RemovedFromTaskQueue": "Removed from task queue",
"RemovedSeriesMultipleRemovedHealthCheckMessage": "Series {0} were removed from TheTVDB", "RemovedSeriesMultipleRemovedHealthCheckMessage": "Series {series} were removed from TheTVDB",
"RemovedSeriesSingleRemovedHealthCheckMessage": "Series {0} was removed from TheTVDB", "RemovedSeriesSingleRemovedHealthCheckMessage": "Series {series} was removed from TheTVDB",
"RemovingTag": "Removing tag", "RemovingTag": "Removing tag",
"RenameEpisodes": "Rename Episodes", "RenameEpisodes": "Rename Episodes",
"RenameEpisodesHelpText": "{appName} will use the existing file name if renaming is disabled", "RenameEpisodesHelpText": "{appName} will use the existing file name if renaming is disabled",
@ -1146,8 +1146,8 @@
"RetryingDownloadOn": "Retrying download on {date} at {time}", "RetryingDownloadOn": "Retrying download on {date} at {time}",
"RootFolder": "Root Folder", "RootFolder": "Root Folder",
"RootFolderLoadError": "Unable to add root folder", "RootFolderLoadError": "Unable to add root folder",
"RootFolderMissingHealthCheckMessage": "Missing root folder: {0}", "RootFolderMissingHealthCheckMessage": "Missing root folder: {rootFolderPath}",
"RootFolderMultipleMissingHealthCheckMessage": "Multiple root folders are missing: {0}", "RootFolderMultipleMissingHealthCheckMessage": "Multiple root folders are missing: {rootFolderPaths}",
"RootFolderPath": "Root Folder Path", "RootFolderPath": "Root Folder Path",
"RootFolderSelectFreeSpace": "{freeSpace} Free", "RootFolderSelectFreeSpace": "{freeSpace} Free",
"RootFolders": "Root Folders", "RootFolders": "Root Folders",
@ -1438,10 +1438,9 @@
"UpdateScriptPathHelpText": "Path to a custom script that takes an extracted update package and handle the remainder of the update process", "UpdateScriptPathHelpText": "Path to a custom script that takes an extracted update package and handle the remainder of the update process",
"UpdateSelected": "Update Selected", "UpdateSelected": "Update Selected",
"UpdateSonarrDirectlyLoadError": "Unable to update {appName} directly,", "UpdateSonarrDirectlyLoadError": "Unable to update {appName} directly,",
"UpdateStartupNotWritableHealthCheckMessage": "Cannot install update because startup folder '{0}' is not writable by the user '{1}'.", "UpdateStartupNotWritableHealthCheckMessage": "Cannot install update because startup folder '{startupFolder}' is not writable by the user '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Cannot install update because startup folder '{0}' is in an App Translocation folder.", "UpdateStartupTranslocationHealthCheckMessage": "Cannot install update because startup folder '{ }' is in an App Translocation folder.",
"UpdateUINotWritableHealthCheckMessage": "Cannot install update because UI folder '{0}' is not writable by the user '{1}'.", "UpdateUiNotWritableHealthCheckMessage": "Cannot install update because UI folder '{uiFolder}' is not writable by the user '{userName}'.",
"UpdateUiNotWritableHealthCheckMessage": "Cannot install update because UI folder '{0}' is not writable by the user '{1}'.",
"UpdaterLogFiles": "Updater Log Files", "UpdaterLogFiles": "Updater Log Files",
"Updates": "Updates", "Updates": "Updates",
"UpgradeUntil": "Upgrade Until", "UpgradeUntil": "Upgrade Until",

View File

@ -167,7 +167,7 @@
"AllResultsAreHiddenByTheAppliedFilter": "Todos los resultados están ocultos por el filtro aplicado", "AllResultsAreHiddenByTheAppliedFilter": "Todos los resultados están ocultos por el filtro aplicado",
"AnalyseVideoFilesHelpText": "Extraer información de video como la resolución, el tiempo de ejecución y la información del códec de los archivos. Esto requiere que {appName} lea partes del archivo lo cual puede causar una alta actividad en el disco o en la red durante los escaneos.", "AnalyseVideoFilesHelpText": "Extraer información de video como la resolución, el tiempo de ejecución y la información del códec de los archivos. Esto requiere que {appName} lea partes del archivo lo cual puede causar una alta actividad en el disco o en la red durante los escaneos.",
"AnimeTypeDescription": "Episodios lanzados usando un número de episodio absoluto", "AnimeTypeDescription": "Episodios lanzados usando un número de episodio absoluto",
"ApiKeyValidationHealthCheckMessage": "Actualice su clave de API para que tenga al menos {0} carácteres. Puede hacerlo en los ajustes o en el archivo de configuración", "ApiKeyValidationHealthCheckMessage": "Actualice su clave de API para que tenga al menos {length} carácteres. Puede hacerlo en los ajustes o en el archivo de configuración",
"AppDataLocationHealthCheckMessage": "No será posible actualizar para prevenir la eliminación de AppData al Actualizar", "AppDataLocationHealthCheckMessage": "No será posible actualizar para prevenir la eliminación de AppData al Actualizar",
"Scheduled": "Programado", "Scheduled": "Programado",
"Season": "Temporada", "Season": "Temporada",
@ -209,7 +209,7 @@
"ManageImportLists": "Gestionar Listas de Importación", "ManageImportLists": "Gestionar Listas de Importación",
"ManageDownloadClients": "Gestionar Clientes de Descarga", "ManageDownloadClients": "Gestionar Clientes de Descarga",
"MoveAutomatically": "Mover Automáticamente", "MoveAutomatically": "Mover Automáticamente",
"IndexerDownloadClientHealthCheckMessage": "Indexadores con clientes de descarga inválidos: {0}.", "IndexerDownloadClientHealthCheckMessage": "Indexadores con clientes de descarga inválidos: {indexerNames}.",
"ManageLists": "Gestionar Listas", "ManageLists": "Gestionar Listas",
"DeleteSelectedImportLists": "Eliminar Lista(s) de Importación", "DeleteSelectedImportLists": "Eliminar Lista(s) de Importación",
"EditSelectedIndexers": "Editar Indexadores Seleccionados", "EditSelectedIndexers": "Editar Indexadores Seleccionados",

View File

@ -1,16 +1,16 @@
{ {
"BlocklistReleaseHelpText": "Etsii kohdetta uudelleen ja estää {appName}ia sieppaamasta tätä julkaisua automaattisesti uudelleen.", "BlocklistReleaseHelpText": "Etsii kohdetta uudelleen ja estää {appName}ia sieppaamasta tätä julkaisua automaattisesti uudelleen.",
"RecycleBinUnableToWriteHealthCheckMessage": "Määritettyyn roskakorikansioon ei voida tallentaa: {0}. Varmista että sijainti on olemassa ja että sovelluksen suorittavalla käyttäjällä on siihen kirjoitusoikeus.", "RecycleBinUnableToWriteHealthCheckMessage": "Määritettyyn roskakorikansioon ei voida tallentaa: {path}. Varmista että sijainti on olemassa ja että sovelluksen suorittavalla käyttäjällä on siihen kirjoitusoikeus.",
"RemotePathMappingDownloadPermissionsHealthCheckMessage": "{appName} näkee ladatun jakson \"{0}\", muttei voi käyttää sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.", "RemotePathMappingDownloadPermissionsHealthCheckMessage": "{appName} näkee ladatun jakson \"{path}\", muttei voi käyttää sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
"Added": "Lisätty", "Added": "Lisätty",
"AppDataLocationHealthCheckMessage": "Päivitystä ei sallita, jotta AppData-kansion poisto päivityksen yhteydessä voidaan estää.", "AppDataLocationHealthCheckMessage": "Päivitystä ei sallita, jotta AppData-kansion poisto päivityksen yhteydessä voidaan estää.",
"DownloadClientSortingHealthCheckMessage": "", "DownloadClientSortingHealthCheckMessage": "",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "RSS-synkronointia käyttäviä tietolähteitä ei ole määritetty, jonka vuoksi uusia julkaisuja ei siepata automaattisesti.", "IndexerRssNoIndexersEnabledHealthCheckMessage": "RSS-synkronointia käyttäviä tietolähteitä ei ole määritetty, jonka vuoksi uusia julkaisuja ei siepata automaattisesti.",
"IndexerSearchNoInteractiveHealthCheckMessage": "Manuaalista hakua varten ei ole määritetty tietolähteitä, eikä manuaalinen haku sen vuoksi löydä tuloksia.", "IndexerSearchNoInteractiveHealthCheckMessage": "Manuaalista hakua varten ei ole määritetty tietolähteitä, eikä manuaalinen haku sen vuoksi löydä tuloksia.",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Lataustyökalu \"{0}\" ilmoitti tiedostosijainniksi \"{1}\", mutta {appName} ei näe kansiota. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.", "RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Lataustyökalu \"{downloadClientName}\" ilmoitti tiedostosijainniksi \"{path}\", mutta {appName} ei näe kansiota. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} näkee ladatauskansion \"{0}\" näkyy, muttei voi käyttää sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.", "RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} näkee ladatauskansion \"{downloadPath}\" näkyy, muttei voi käyttää sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
"RemotePathMappingImportFailedHealthCheckMessage": "Jaksojen tuonti epäonnistui. Katso tarkemmat tiedot lokista.", "RemotePathMappingImportFailedHealthCheckMessage": "Jaksojen tuonti epäonnistui. Katso tarkemmat tiedot lokista.",
"RemotePathMappingGenericPermissionsHealthCheckMessage": "Lataustyökalu \"{0}\" tallentaa latauksen sijaintiin \"{1}\", mutta {appName} ei näe sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.", "RemotePathMappingGenericPermissionsHealthCheckMessage": "Lataustyökalu \"{downloadClientName}\" tallentaa latauksen sijaintiin \"{path}\", mutta {appName} ei näe sitä. Tämä johtuu todennäköisesti liian rajallisista käyttöoikeuksista.",
"IndexerSearchNoAutomaticHealthCheckMessage": "Automaattista hakua varten ei ole määritetty tietolähteitä, eikä automaattinen haku sen vuoksi löydä tuloksia.", "IndexerSearchNoAutomaticHealthCheckMessage": "Automaattista hakua varten ei ole määritetty tietolähteitä, eikä automaattinen haku sen vuoksi löydä tuloksia.",
"AgeWhenGrabbed": "Ikä (sieppaushetkellä)", "AgeWhenGrabbed": "Ikä (sieppaushetkellä)",
"GrabId": "Sieppaustunniste", "GrabId": "Sieppaustunniste",
@ -24,7 +24,7 @@
"GrabRelease": "Sieppaa julkaisu", "GrabRelease": "Sieppaa julkaisu",
"Hostname": "Osoite", "Hostname": "Osoite",
"OriginalLanguage": "Alkuperäinen kieli", "OriginalLanguage": "Alkuperäinen kieli",
"ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{0}\" IP-osoitteen selvitys epäonnistui.", "ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{proxyHostName}\" IP-osoitteen selvitys epäonnistui.",
"SetPermissionsLinuxHelpText": "Tulisiko chmod suorittaa, kun tiedostoja tuodaan/nimetään uudelleen?", "SetPermissionsLinuxHelpText": "Tulisiko chmod suorittaa, kun tiedostoja tuodaan/nimetään uudelleen?",
"UrlBaseHelpText": "Käänteisen välityspalvelimen tuki (esim. \"http://[host]:[port]/[urlBase]\"). Käytä oletusta jättämällä tyhjäksi.", "UrlBaseHelpText": "Käänteisen välityspalvelimen tuki (esim. \"http://[host]:[port]/[urlBase]\"). Käytä oletusta jättämällä tyhjäksi.",
"SetPermissionsLinuxHelpTextWarning": "Jollet ole varma mitä nämä asetukset tekevät, älä muuta niitä.", "SetPermissionsLinuxHelpTextWarning": "Jollet ole varma mitä nämä asetukset tekevät, älä muuta niitä.",

View File

@ -2,7 +2,7 @@
"Language": "Langue", "Language": "Langue",
"UiLanguage": "UI Langue", "UiLanguage": "UI Langue",
"Added": "Ajouté", "Added": "Ajouté",
"ApiKeyValidationHealthCheckMessage": "Veuillez mettre à jour votre clé API pour qu'elle contienne au moins {0} caractères. Vous pouvez le faire via les paramètres ou le fichier de configuration", "ApiKeyValidationHealthCheckMessage": "Veuillez mettre à jour votre clé API pour qu'elle contienne au moins {length} caractères. Vous pouvez le faire via les paramètres ou le fichier de configuration",
"AppDataLocationHealthCheckMessage": "La mise à jour ne sera pas possible afin empêcher la suppression de AppData lors de la mise à jour", "AppDataLocationHealthCheckMessage": "La mise à jour ne sera pas possible afin empêcher la suppression de AppData lors de la mise à jour",
"ApplyChanges": "Appliquer les modifications", "ApplyChanges": "Appliquer les modifications",
"AutomaticAdd": "Ajout automatique", "AutomaticAdd": "Ajout automatique",
@ -159,8 +159,8 @@
"AutomaticUpdatesDisabledDocker": "Les mises à jour automatiques ne sont pas directement prises en charge lors de l'utilisation du mécanisme de mise à jour de Docker. Vous devrez mettre à jour l'image du conteneur en dehors de {appName} ou utiliser un script", "AutomaticUpdatesDisabledDocker": "Les mises à jour automatiques ne sont pas directement prises en charge lors de l'utilisation du mécanisme de mise à jour de Docker. Vous devrez mettre à jour l'image du conteneur en dehors de {appName} ou utiliser un script",
"BackupRetentionHelpText": "Les sauvegardes automatiques plus anciennes que la période de rétention seront nettoyées automatiquement", "BackupRetentionHelpText": "Les sauvegardes automatiques plus anciennes que la période de rétention seront nettoyées automatiquement",
"QualityProfile": "Profil de qualité", "QualityProfile": "Profil de qualité",
"RemotePathMappingDownloadPermissionsHealthCheckMessage": "Sonarr peut voir mais ne peut pas accéder à l'épisode téléchargé {0}. Probablement une erreur de permissions.", "RemotePathMappingDownloadPermissionsHealthCheckMessage": "Sonarr peut voir mais ne peut pas accéder à l'épisode téléchargé {path}. Probablement une erreur de permissions.",
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "Vous utilisez Docker ; le client de téléchargement {0} place les téléchargements dans {1}, mais ce répertoire ne semble pas exister dans le conteneur. Vérifiez vos mappages de chemins d'accès distants et les paramètres de volume du conteneur.", "RemotePathMappingDockerFolderMissingHealthCheckMessage": "Vous utilisez Docker ; le client de téléchargement $1{downloadClientName} place les téléchargements dans {path}, mais ce répertoire ne semble pas exister dans le conteneur. Vérifiez vos mappages de chemins d'accès distants et les paramètres de volume du conteneur.",
"BlocklistReleases": "Publications de la liste de blocage", "BlocklistReleases": "Publications de la liste de blocage",
"BindAddress": "Adresse de liaison", "BindAddress": "Adresse de liaison",
"BackupsLoadError": "Impossible de charger les sauvegardes", "BackupsLoadError": "Impossible de charger les sauvegardes",
@ -186,9 +186,9 @@
"ChownGroupHelpTextWarning": "Cela ne fonctionne que si l'utilisateur qui exécute sonarr est le propriétaire du fichier. Il est préférable de s'assurer que le client de téléchargement utilise le même groupe que sonarr.", "ChownGroupHelpTextWarning": "Cela ne fonctionne que si l'utilisateur qui exécute sonarr est le propriétaire du fichier. Il est préférable de s'assurer que le client de téléchargement utilise le même groupe que sonarr.",
"ClickToChangeQuality": "Cliquez pour changer la qualité", "ClickToChangeQuality": "Cliquez pour changer la qualité",
"RefreshSeries": "Actualiser les séries", "RefreshSeries": "Actualiser les séries",
"RecycleBinUnableToWriteHealthCheckMessage": "Impossible d'écrire dans le dossier configuré de la corbeille de recyclage : {0}. Assurez-vous que ce chemin existe et qu'il est accessible en écriture par l'utilisateur qui exécute Sonarr.", "RecycleBinUnableToWriteHealthCheckMessage": "Impossible d'écrire dans le dossier configuré de la corbeille de recyclage : {path}. Assurez-vous que ce chemin existe et qu'il est accessible en écriture par l'utilisateur qui exécute Sonarr.",
"RemotePathMappingFileRemovedHealthCheckMessage": "Le fichier {0} a été supprimé en cours de traitement.", "RemotePathMappingFileRemovedHealthCheckMessage": "Le fichier {path} a été supprimé en cours de traitement.",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Le client de téléchargement {0} a signalé des fichiers dans {1} mais Sonarr ne peut pas voir ce répertoire. Il se peut que vous deviez ajuster les permissions du dossier.", "RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Le client de téléchargement {downloadClientName} a signalé des fichiers dans {path} mais Sonarr ne peut pas voir ce répertoire. Il se peut que vous deviez ajuster les permissions du dossier.",
"CalendarFeed": "Flux de calendrier {appName}", "CalendarFeed": "Flux de calendrier {appName}",
"CalendarLegendDownloadedTooltip": "L'épisode a été téléchargé et classé", "CalendarLegendDownloadedTooltip": "L'épisode a été téléchargé et classé",
"CalendarLegendDownloadingTooltip": "L'épisode est en cours de téléchargement", "CalendarLegendDownloadingTooltip": "L'épisode est en cours de téléchargement",
@ -203,13 +203,13 @@
"ClickToChangeLanguage": "Cliquez pour changer de langue", "ClickToChangeLanguage": "Cliquez pour changer de langue",
"ClickToChangeEpisode": "Cliquez pour changer d'épisode", "ClickToChangeEpisode": "Cliquez pour changer d'épisode",
"ClickToChangeReleaseGroup": "Cliquez pour changer de groupe de diffusion", "ClickToChangeReleaseGroup": "Cliquez pour changer de groupe de diffusion",
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Vous utilisez Docker ; le client de téléchargement {0} a signalé des fichiers dans {1} mais ce n'est pas un chemin {2} valide. Vérifiez vos mappages de chemins d'accès distants et les paramètres du client de téléchargement.", "RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Vous utilisez Docker ; le client de téléchargement {downloadClientName} a signalé des fichiers dans {path} mais ce n'est pas un chemin {osName} valide. Vérifiez vos mappages de chemins d'accès distants et les paramètres du client de téléchargement.",
"BypassDelayIfAboveCustomFormatScoreMinimumScoreHelpText": "Score minimum requis pour le format personnalisé pour ignorer le délai pour le protocole préféré", "BypassDelayIfAboveCustomFormatScoreMinimumScoreHelpText": "Score minimum requis pour le format personnalisé pour ignorer le délai pour le protocole préféré",
"BypassDelayIfHighestQualityHelpText": "Ignorer le délai lorsque la libération a la qualité activée la plus élevée dans le profil de qualité avec le protocole préféré", "BypassDelayIfHighestQualityHelpText": "Ignorer le délai lorsque la libération a la qualité activée la plus élevée dans le profil de qualité avec le protocole préféré",
"RemotePathMappingBadDockerPathHealthCheckMessage": "Vous utilisez Docker ; le client de téléchargement {0} place les téléchargements dans {1} mais ce n'est pas un chemin {2} valide. Revoyez vos mappages de chemins d'accès distants et les paramètres du client de téléchargement.", "RemotePathMappingBadDockerPathHealthCheckMessage": "Vous utilisez Docker ; le client de téléchargement {downloadClientName} place les téléchargements dans {path} mais ce n'est pas un chemin {osName} valide. Revoyez vos mappages de chemins d'accès distants et les paramètres du client de téléchargement.",
"RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "Le client de téléchargement local {0} a signalé des fichiers dans {1}, mais il ne s'agit pas d'un chemin {2} valide. Vérifiez les paramètres de votre client de téléchargement.", "RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "Le client de téléchargement local {downloadClientName} a signalé des fichiers dans {path}, mais il ne s'agit pas d'un chemin {osName} valide. Vérifiez les paramètres de votre client de téléchargement.",
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "Le client de téléchargement distant {0} a signalé des fichiers dans {1}, mais il ne s'agit pas d'un chemin {2} valide. Revoyez vos mappages de chemins d'accès distants et les paramètres du client de téléchargement.", "RemotePathMappingFilesWrongOSPathHealthCheckMessage": "Le client de téléchargement distant {downloadClientName} a signalé des fichiers dans {path}, mais il ne s'agit pas d'un chemin {osName} valide. Revoyez vos mappages de chemins d'accès distants et les paramètres du client de téléchargement.",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "Sonarr peut voir mais ne peut pas accéder au répertoire de téléchargement {0}. Il s'agit probablement d'une erreur de permissions.", "RemotePathMappingFolderPermissionsHealthCheckMessage": "Sonarr peut voir mais ne peut pas accéder au répertoire de téléchargement {downloadPath}. Il s'agit probablement d'une erreur de permissions.",
"Path": "Chemin", "Path": "Chemin",
"QueueIsEmpty": "La file d'attente est vide", "QueueIsEmpty": "La file d'attente est vide",
"Warn": "Avertissement", "Warn": "Avertissement",
@ -428,7 +428,7 @@
"ManageDownloadClients": "Gérer les clients de téléchargement", "ManageDownloadClients": "Gérer les clients de téléchargement",
"NoDownloadClientsFound": "Aucun client de téléchargement n'a été trouvé", "NoDownloadClientsFound": "Aucun client de téléchargement n'a été trouvé",
"NotificationStatusAllClientHealthCheckMessage": "Toutes les notifications sont indisponibles en raison de dysfonctionnements", "NotificationStatusAllClientHealthCheckMessage": "Toutes les notifications sont indisponibles en raison de dysfonctionnements",
"NotificationStatusSingleClientHealthCheckMessage": "Notifications indisponibles en raison de dysfonctionnements : {0}", "NotificationStatusSingleClientHealthCheckMessage": "Notifications indisponibles en raison de dysfonctionnements : {notificationNames}",
"RecentChanges": "Changements récents", "RecentChanges": "Changements récents",
"SetTags": "Définir les étiquettes", "SetTags": "Définir les étiquettes",
"Replace": "Remplacer", "Replace": "Remplacer",

View File

@ -1,6 +1,6 @@
{ {
"Added": "נוסף", "Added": "נוסף",
"ApiKeyValidationHealthCheckMessage": "עדכן בבקשה את מפתח ה־API שלך כדי שיהיה באורך של לפחות {0} תווים. תוכל לעשות זאת בהגדרות או דרך קובץ הקונפיגורציה.", "ApiKeyValidationHealthCheckMessage": "עדכן בבקשה את מפתח ה־API שלך כדי שיהיה באורך של לפחות {length} תווים. תוכל לעשות זאת בהגדרות או דרך קובץ הקונפיגורציה.",
"Add": "הוסף", "Add": "הוסף",
"Activity": "פעילות", "Activity": "פעילות",
"Indexer": "אינדקסר", "Indexer": "אינדקסר",

View File

@ -5,56 +5,56 @@
"Close": "Bezárás", "Close": "Bezárás",
"Delete": "Törlés", "Delete": "Törlés",
"DeleteCondition": "Feltétel törlése", "DeleteCondition": "Feltétel törlése",
"DeleteConditionMessageText": "Biztosan törölni akarod a '{0}' feltételt?", "DeleteConditionMessageText": "Biztosan törölni akarod a '{name}' feltételt?",
"DeleteCustomFormat": "Egyéni formátum törlése", "DeleteCustomFormat": "Egyéni formátum törlése",
"DeleteCustomFormatMessageText": "Biztosan törölni akarod a/az '{0}' egyéni formátumot?", "DeleteCustomFormatMessageText": "Biztosan törölni akarod a/az '{customFormatName}' egyéni formátumot?",
"ExportCustomFormat": "Egyéni formátum exportálása", "ExportCustomFormat": "Egyéni formátum exportálása",
"IndexerJackettAllHealthCheckMessage": "A nem támogatott Jackett 'all' végpontot használó indexelők: {0}", "IndexerJackettAllHealthCheckMessage": "A nem támogatott Jackett 'all' végpontot használó indexelők: {indexerNames}",
"Remove": "Eltávolítás", "Remove": "Eltávolítás",
"RemoveFromDownloadClient": "Eltávolítás a letöltési kliensből", "RemoveFromDownloadClient": "Eltávolítás a letöltési kliensből",
"RemoveFromDownloadClientHelpTextWarning": "A törlés eltávolítja a letöltést és a fájl(okat) a letöltési kliensből.", "RemoveFromDownloadClientHelpTextWarning": "A törlés eltávolítja a letöltést és a fájl(okat) a letöltési kliensből.",
"RemoveSelectedItem": "Kijelölt elem eltávolítása", "RemoveSelectedItem": "Kijelölt elem eltávolítása",
"RemoveSelectedItemQueueMessageText": "Biztosan el akar távolítani 1 elemet a várólistáról?", "RemoveSelectedItemQueueMessageText": "Biztosan el akar távolítani 1 elemet a várólistáról?",
"RemoveSelectedItems": "Kijelölt elemek eltávolítása", "RemoveSelectedItems": "Kijelölt elemek eltávolítása",
"RemoveSelectedItemsQueueMessageText": "Biztosan el akar távolítani {0} elemet a várólistáról?", "RemoveSelectedItemsQueueMessageText": "Biztosan el akar távolítani {selectedCount} elemet a várólistáról?",
"Required": "Kötelező", "Required": "Kötelező",
"Added": "Hozzáadva", "Added": "Hozzáadva",
"ApiKeyValidationHealthCheckMessage": "Kérlek frissítsd az API kulcsot, ami legalább {0} karakter hosszú. Ezt megteheted a Beállításokban, vagy a config file-ban", "ApiKeyValidationHealthCheckMessage": "Kérlek frissítsd az API kulcsot, ami legalább {length} karakter hosszú. Ezt megteheted a Beállításokban, vagy a config file-ban",
"ApplyChanges": "Változások alkalmazása", "ApplyChanges": "Változások alkalmazása",
"AppDataLocationHealthCheckMessage": "A frissítés nem lehetséges az alkalmazás adatok törlése nélkül", "AppDataLocationHealthCheckMessage": "A frissítés nem lehetséges az alkalmazás adatok törlése nélkül",
"AutomaticAdd": "Automatikus hozzáadás", "AutomaticAdd": "Automatikus hozzáadás",
"CountSeasons": "{count} évad", "CountSeasons": "{count} évad",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "Nincs elérhető letöltési kliens", "DownloadClientCheckNoneAvailableHealthCheckMessage": "Nincs elérhető letöltési kliens",
"DownloadClientRootFolderHealthCheckMessage": "A letöltési kliens {0} a letöltéseket a gyökérmappába helyezi. Ne tölts le közvetlenül a gyökérmappába.", "DownloadClientRootFolderHealthCheckMessage": "A letöltési kliens {downloadClientName} a letöltéseket a gyökérmappába helyezi. Ne tölts le közvetlenül a gyökérmappába.",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Nem lehet kommunikálni a {0} -val.", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Nem lehet kommunikálni a {downloadClientName} -val.",
"DownloadClientStatusAllClientHealthCheckMessage": "Az összes letöltési kliens elérhetetlen meghibásodások miatt", "DownloadClientStatusAllClientHealthCheckMessage": "Az összes letöltési kliens elérhetetlen meghibásodások miatt",
"EditSelectedDownloadClients": "Kiválasztott letöltési kliensek szerkesztése", "EditSelectedDownloadClients": "Kiválasztott letöltési kliensek szerkesztése",
"EditSelectedImportLists": "Kiválasztott import listák szerkesztése", "EditSelectedImportLists": "Kiválasztott import listák szerkesztése",
"EditSelectedIndexers": "Kiválasztott indexelők szerkesztése", "EditSelectedIndexers": "Kiválasztott indexelők szerkesztése",
"DownloadClientStatusSingleClientHealthCheckMessage": "Letöltési kliensek elérhetetlenek meghibásodások miatt: {0}", "DownloadClientStatusSingleClientHealthCheckMessage": "Letöltési kliensek elérhetetlenek meghibásodások miatt: {downloadClientNames}",
"EnableAutomaticSearch": "Automatikus keresés engedélyezése", "EnableAutomaticSearch": "Automatikus keresés engedélyezése",
"EditSeries": "Sorozat szerkesztése", "EditSeries": "Sorozat szerkesztése",
"EnableInteractiveSearch": "Interaktív keresés engedélyezése", "EnableInteractiveSearch": "Interaktív keresés engedélyezése",
"Ended": "Vége", "Ended": "Vége",
"HideAdvanced": "Haladó elrejtése", "HideAdvanced": "Haladó elrejtése",
"ImportListRootFolderMissingRootHealthCheckMessage": "Hiányzó gyökérmappa a/az {0} importálási listához", "ImportListRootFolderMissingRootHealthCheckMessage": "Hiányzó gyökérmappa a/az {rootFolderInfo} importálási listához",
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Több gyökérmappa hiányzik a/az {0} importálási listához", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Több gyökérmappa hiányzik a/az {rootFoldersInfo} importálási listához",
"Enabled": "Engedélyezés", "Enabled": "Engedélyezés",
"HiddenClickToShow": "Rejtett, kattints a felfedéshez", "HiddenClickToShow": "Rejtett, kattints a felfedéshez",
"ImportListStatusAllUnavailableHealthCheckMessage": "Minden lista elérhetetlen meghibásodások miatt", "ImportListStatusAllUnavailableHealthCheckMessage": "Minden lista elérhetetlen meghibásodások miatt",
"ImportListStatusUnavailableHealthCheckMessage": "Listák elérhetetlenek meghibásodások miatt: {0}", "ImportListStatusUnavailableHealthCheckMessage": "Listák elérhetetlenek meghibásodások miatt: {importListNames}",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Befejezett letöltés kezelésének engedélyezése, ha lehetséges", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Befejezett letöltés kezelésének engedélyezése, ha lehetséges",
"ImportMechanismHandlingDisabledHealthCheckMessage": "Befejezett letöltés kezelésének engedélyezése", "ImportMechanismHandlingDisabledHealthCheckMessage": "Befejezett letöltés kezelésének engedélyezése",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Befejezett letöltés kezelésének engedélyezése, ha lehetséges (Több számítógépen nem támogatott)", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Befejezett letöltés kezelésének engedélyezése, ha lehetséges (Több számítógépen nem támogatott)",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "Nincsenek elérhető indexelők RSS szinkronizációval, a {appName} nem fog automatikusan új kiadásokat letölteni", "IndexerRssNoIndexersEnabledHealthCheckMessage": "Nincsenek elérhető indexelők RSS szinkronizációval, a {appName} nem fog automatikusan új kiadásokat letölteni",
"IndexerRssNoIndexersAvailableHealthCheckMessage": "Az összes RSS-képes indexelő ideiglenesen nem elérhető a legutóbbi indexelő hibák miatt", "IndexerRssNoIndexersAvailableHealthCheckMessage": "Az összes RSS-képes indexelő ideiglenesen nem elérhető a legutóbbi indexelő hibák miatt",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodás miatt több, mint 6 órája: {0}", "IndexerLongTermStatusUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodás miatt több, mint 6 órája: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodás miatt több, mint 6 órája", "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodás miatt több, mint 6 órája",
"IndexerSearchNoInteractiveHealthCheckMessage": "Nincsenek elérhető indexelők az Interaktív Keresés funkcióval, a {appName} nem fog interaktív keresési eredményeket szolgáltatni", "IndexerSearchNoInteractiveHealthCheckMessage": "Nincsenek elérhető indexelők az Interaktív Keresés funkcióval, a {appName} nem fog interaktív keresési eredményeket szolgáltatni",
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "Az összes keresési képességgel rendelkező indexelő ideiglenesen nem elérhető a legutóbbi indexelő hibák miatt", "IndexerSearchNoAvailableIndexersHealthCheckMessage": "Az összes keresési képességgel rendelkező indexelő ideiglenesen nem elérhető a legutóbbi indexelő hibák miatt",
"IndexerSearchNoAutomaticHealthCheckMessage": "Nincsenek elérhető indexelők az Automatikus Keresés funkcióval, a {appName} nem fog automatikus keresési eredményeket szolgáltatni", "IndexerSearchNoAutomaticHealthCheckMessage": "Nincsenek elérhető indexelők az Automatikus Keresés funkcióval, a {appName} nem fog automatikus keresési eredményeket szolgáltatni",
"Language": "Nyelv", "Language": "Nyelv",
"IndexerStatusUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodások miatt: {0}", "IndexerStatusUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodások miatt: {indexerNames}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodások miatt", "IndexerStatusAllUnavailableHealthCheckMessage": "Minden indexelő elérhetetlen meghibásodások miatt",
"OneSeason": "1 évad", "OneSeason": "1 évad",
"OriginalLanguage": "Eredeti nyelv", "OriginalLanguage": "Eredeti nyelv",
@ -64,45 +64,45 @@
"MountHealthCheckMessage": "A sorozat elérési útvonalát tartalmazó kötet csak olvasható módban van csatolva: ", "MountHealthCheckMessage": "A sorozat elérési útvonalát tartalmazó kötet csak olvasható módban van csatolva: ",
"Network": "Hálózat", "Network": "Hálózat",
"NoSeasons": "Nincsenek évadok", "NoSeasons": "Nincsenek évadok",
"ProxyBadRequestHealthCheckMessage": "Sikertelen proxy teszt. Állapotkód: {0}", "ProxyBadRequestHealthCheckMessage": "Sikertelen proxy teszt. Állapotkód: {statusCode}",
"Priority": "Elsőbbség", "Priority": "Elsőbbség",
"ProxyFailedToTestHealthCheckMessage": "Sikertelen proxy teszt: {0}", "ProxyFailedToTestHealthCheckMessage": "Sikertelen proxy teszt: {url}",
"ProxyResolveIpHealthCheckMessage": "Nem sikerült feloldani a konfigurált proxy kiszolgáló {0} IP-címét", "ProxyResolveIpHealthCheckMessage": "Nem sikerült feloldani a konfigurált proxy kiszolgáló {proxyHostName} IP-címét",
"PreviousAiring": "Előző rész", "PreviousAiring": "Előző rész",
"RecycleBinUnableToWriteHealthCheckMessage": "Nem lehet írni a konfigurált lomtár mappába {0}. Győződjön meg arról, hogy ez az elérési útvonal létezik, és az a felhasználó, aki a {appName}-t futtatja, írási jogosultsággal rendelkezik", "RecycleBinUnableToWriteHealthCheckMessage": "Nem lehet írni a konfigurált lomtár mappába {path}. Győződjön meg arról, hogy ez az elérési útvonal létezik, és az a felhasználó, aki a {appName}-t futtatja, írási jogosultsággal rendelkezik",
"QualityProfile": "Minőségi profil", "QualityProfile": "Minőségi profil",
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "Docker-t használ; a(z) {0} letöltési kliens a letöltéseket a(z) {1} mappába helyezi, de úgy tűnik, hogy ez a könyvtár nem létezik a konténeren belül. Ellenőrizze a távoli útvonal hozzárendeléseket, és a konténer kötet beállításait.", "RemotePathMappingDockerFolderMissingHealthCheckMessage": "Docker-t használ; a(z) $1{downloadClientName} letöltési kliens a letöltéseket a(z) {path} mappába helyezi, de úgy tűnik, hogy ez a könyvtár nem létezik a konténeren belül. Ellenőrizze a távoli útvonal hozzárendeléseket, és a konténer kötet beállításait.",
"RefreshSeries": "Sorozat frissítése", "RefreshSeries": "Sorozat frissítése",
"RemotePathMappingFileRemovedHealthCheckMessage": "A(z) {0} fájlt részben feldolgozás közben eltávolították.", "RemotePathMappingFileRemovedHealthCheckMessage": "A(z) {path} fájlt részben feldolgozás közben eltávolították.",
"RemotePathMappingDownloadPermissionsHealthCheckMessage": "A {appName} látja, de nem tud hozzáférni a letöltött epizódhoz {0}. Valószínűleg jogosultsági hiba.", "RemotePathMappingDownloadPermissionsHealthCheckMessage": "A {appName} látja, de nem tud hozzáférni a letöltött epizódhoz {path}. Valószínűleg jogosultsági hiba.",
"RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "A(z) {0} helyi letöltési kliens a fájlokat a(z) {1} mappában jelentette, de ez nem érvényes {2} elérési útvonal. Ellenőrizze a letöltési kliens beállításait.", "RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "A(z) {downloadClientName} helyi letöltési kliens a fájlokat a(z) {path} mappában jelentette, de ez nem érvényes {osName} elérési útvonal. Ellenőrizze a letöltési kliens beállításait.",
"RemotePathMappingGenericPermissionsHealthCheckMessage": "A(z) {0} letöltési kliens a letöltéseket a(z) {1} mappába helyezi, de a {appName} nem látja ezt a könyvtárat. Lehetséges, hogy be kell állítania a mappa jogosultságait.", "RemotePathMappingGenericPermissionsHealthCheckMessage": "A(z) {downloadClientName} letöltési kliens a letöltéseket a(z) {path} mappába helyezi, de a {appName} nem látja ezt a könyvtárat. Lehetséges, hogy be kell állítania a mappa jogosultságait.",
"RemotePathMappingImportFailedHealthCheckMessage": "A {appName}-nak nem sikerült importálni az epizód(ok)at. Ellenőrizze a naplókat a részletekért.", "RemotePathMappingImportFailedHealthCheckMessage": "A {appName}-nak nem sikerült importálni az epizód(ok)at. Ellenőrizze a naplókat a részletekért.",
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "A(z) {0} távoli letöltési kliens a fájlokat a(z) {1} mappában jelentette, de úgy tűnik, hogy ez a könyvtár nem létezik. Valószínűleg hiányzik a távoli útvonal hozzárendelés.", "RemotePathMappingRemoteDownloadClientHealthCheckMessage": "A(z) {downloadClientName} távoli letöltési kliens a fájlokat a(z) {path} mappában jelentette, de úgy tűnik, hogy ez a könyvtár nem létezik. Valószínűleg hiányzik a távoli útvonal hozzárendelés.",
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "A(z) {0} távoli letöltési kliens a letöltéseket a(z) {1} mappába helyezi, de úgy tűnik, hogy ez a könyvtár nem létezik. Valószínűleg hiányzik vagy helytelen a távoli útvonal hozzárendelés.", "RemotePathMappingLocalFolderMissingHealthCheckMessage": "A(z) {downloadClientName} távoli letöltési kliens a letöltéseket a(z) {path} mappába helyezi, de úgy tűnik, hogy ez a könyvtár nem létezik. Valószínűleg hiányzik vagy helytelen a távoli útvonal hozzárendelés.",
"RemotePathMappingLocalWrongOSPathHealthCheckMessage": "A(z) {0} helyi letöltési kliens a letöltéseket a(z) {1} mappába helyezi, de ez nem érvényes {2} elérési útvonal. Ellenőrizze a letöltési kliens beállításait.", "RemotePathMappingLocalWrongOSPathHealthCheckMessage": "A(z) {downloadClientName} helyi letöltési kliens a letöltéseket a(z) {path} mappába helyezi, de ez nem érvényes {osName} elérési útvonal. Ellenőrizze a letöltési kliens beállításait.",
"RemoveFailedDownloads": "Sikertelen letöltések eltávolítása", "RemoveFailedDownloads": "Sikertelen letöltések eltávolítása",
"RemovedSeriesMultipleRemovedHealthCheckMessage": "A(z) {0} sorozatokat eltávolították a TheTVDB-ről", "RemovedSeriesMultipleRemovedHealthCheckMessage": "A(z) {series} sorozatokat eltávolították a TheTVDB-ről",
"RemotePathMappingWrongOSPathHealthCheckMessage": "A(z) {0} távoli letöltési kliens a letöltéseket a(z) {1} mappába helyezi, de ez nem érvényes {2} elérési útvonal. Kérjük, ellenőrizze a távoli útvonal leképezéseket és a letöltési kliens beállításait.", "RemotePathMappingWrongOSPathHealthCheckMessage": "A(z) {downloadClientName} távoli letöltési kliens a letöltéseket a(z) {path} mappába helyezi, de ez nem érvényes {osName} elérési útvonal. Kérjük, ellenőrizze a távoli útvonal leképezéseket és a letöltési kliens beállításait.",
"RemoveCompletedDownloads": "Befejezett letöltések eltávolítása", "RemoveCompletedDownloads": "Befejezett letöltések eltávolítása",
"RemovedSeriesSingleRemovedHealthCheckMessage": "A(z) {0} sorozatot eltávolították a TheTVDB-ről", "RemovedSeriesSingleRemovedHealthCheckMessage": "A(z) {series} sorozatot eltávolították a TheTVDB-ről",
"RootFolderMissingHealthCheckMessage": "Hiányzó gyökérmappa: {0}", "RootFolderMissingHealthCheckMessage": "Hiányzó gyökérmappa: {rootFolderPath}",
"RootFolder": "Gyökérmappa", "RootFolder": "Gyökérmappa",
"SearchForMonitoredEpisodes": "Megfigyelt epizódok keresése", "SearchForMonitoredEpisodes": "Megfigyelt epizódok keresése",
"ShowAdvanced": "Haladó nézet", "ShowAdvanced": "Haladó nézet",
"RootFolderMultipleMissingHealthCheckMessage": "Több gyökérmappa hiányzik: {0}", "RootFolderMultipleMissingHealthCheckMessage": "Több gyökérmappa hiányzik: {rootFolderPaths}",
"SizeOnDisk": "Méret a lemezen", "SizeOnDisk": "Méret a lemezen",
"ShownClickToHide": "Kattints, hogy elrejtsd", "ShownClickToHide": "Kattints, hogy elrejtsd",
"SystemTimeHealthCheckMessage": "A rendszer idő több, mint 1 napot eltér az aktuális időtől. Előfordulhat, hogy az ütemezett feladatok nem futnak megfelelően, amíg az időt nem korrigálják", "SystemTimeHealthCheckMessage": "A rendszer idő több, mint 1 napot eltér az aktuális időtől. Előfordulhat, hogy az ütemezett feladatok nem futnak megfelelően, amíg az időt nem korrigálják",
"Unmonitored": "Nem felügyelt", "Unmonitored": "Nem felügyelt",
"UpdateStartupNotWritableHealthCheckMessage": "A frissítés telepítése nem lehetséges, mert a kezdő mappa '{0}' nem írható a(z) '{1}' felhasználó által.", "UpdateStartupNotWritableHealthCheckMessage": "A frissítés telepítése nem lehetséges, mert a kezdő mappa '{startupFolder}' nem írható a(z) '{userName}' felhasználó által.",
"UpdateStartupTranslocationHealthCheckMessage": "A frissítés telepítése nem lehetséges, mert a kezdő mappa '{0}' az App Translocation mappában található.", "UpdateStartupTranslocationHealthCheckMessage": "A frissítés telepítése nem lehetséges, mert a kezdő mappa '{startupFolder}' az App Translocation mappában található.",
"UpdateAvailableHealthCheckMessage": "Új frissítés elérhető", "UpdateAvailableHealthCheckMessage": "Új frissítés elérhető",
"UpdateUINotWritableHealthCheckMessage": "A frissítés telepítése nem lehetséges, mert a felhasználó '{1}' nem rendelkezik írási jogosultsággal a(z) '{0}' felhasználói felület mappában.", "UpdateUiNotWritableHealthCheckMessage": "A frissítés telepítése nem lehetséges, mert a felhasználó '{userName}' nem rendelkezik írási jogosultsággal a(z) '{uiFolder}' felhasználói felület mappában.",
"DownloadClientSortingHealthCheckMessage": "A(z) {0} letöltési kliensben engedélyezve van a {1} rendezés a {appName} kategóriájához. Az import problémák elkerülése érdekében ki kell kapcsolnia a rendezést a letöltési kliensben.", "DownloadClientSortingHealthCheckMessage": "A(z) {downloadClientName} letöltési kliensben engedélyezve van a {sortingMode} rendezés a {appName} kategóriájához. Az import problémák elkerülése érdekében ki kell kapcsolnia a rendezést a letöltési kliensben.",
"RemotePathMappingBadDockerPathHealthCheckMessage": "Docker-t használ; a(z) {0} letöltési kliens a letöltéseket a(z) {1} mappába helyezi, de ez nem érvényes {2} elérési útvonal. Ellenőrizze a távoli útvonal hozzárendeléseket, és a letöltési kliens beállításait.", "RemotePathMappingBadDockerPathHealthCheckMessage": "Docker-t használ; a(z) {downloadClientName} letöltési kliens a letöltéseket a(z) {path} mappába helyezi, de ez nem érvényes {osName} elérési útvonal. Ellenőrizze a távoli útvonal hozzárendeléseket, és a letöltési kliens beállításait.",
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Docker-t használ; a(z) {0} letöltési kliens a fájlokat a(z) {1} mappában jelentette, de ez nem érvényes {2} elérési útvonal. Ellenőrizze a távoli útvonal hozzárendeléseket, és a letöltési kliens beállításait.", "RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Docker-t használ; a(z) {downloadClientName} letöltési kliens a fájlokat a(z) {path} mappában jelentette, de ez nem érvényes {osName} elérési útvonal. Ellenőrizze a távoli útvonal hozzárendeléseket, és a letöltési kliens beállításait.",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "A(z) {0} letöltési kliens a fájlokat a(z) {1} mappában jelentette, de a {appName} nem látja ezt a könyvtárat. Lehetséges, hogy be kell állítania a mappa jogosultságait.", "RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "A(z) {downloadClientName} letöltési kliens a fájlokat a(z) {path} mappában jelentette, de a {appName} nem látja ezt a könyvtárat. Lehetséges, hogy be kell állítania a mappa jogosultságait.",
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "A(z) {0} távoli letöltési kliens a fájlokat a(z) {1} mappában jelentette, de ez nem érvényes {2} elérési útvonal. Ellenőrizze a távoli útvonal hozzárendeléseket, és a letöltési kliens beállításait.", "RemotePathMappingFilesWrongOSPathHealthCheckMessage": "A(z) {downloadClientName} távoli letöltési kliens a fájlokat a(z) {path} mappában jelentette, de ez nem érvényes {osName} elérési útvonal. Ellenőrizze a távoli útvonal hozzárendeléseket, és a letöltési kliens beállításait.",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "A {appName} látja, de nem fér hozzá a letöltési könyvtárhoz {0}. Valószínűleg jogosultsági hiba." "RemotePathMappingFolderPermissionsHealthCheckMessage": "A {appName} látja, de nem fér hozzá a letöltési könyvtárhoz {downloadPath}. Valószínűleg jogosultsági hiba."
} }

View File

@ -14,8 +14,8 @@
"PreviousAiring": "Sebelumnya Tayang", "PreviousAiring": "Sebelumnya Tayang",
"OriginalLanguage": "Bahasa Asli", "OriginalLanguage": "Bahasa Asli",
"Priority": "Prioritas", "Priority": "Prioritas",
"ProxyFailedToTestHealthCheckMessage": "Gagal menguji proxy: {0}", "ProxyFailedToTestHealthCheckMessage": "Gagal menguji proxy: {url}",
"ProxyBadRequestHealthCheckMessage": "Gagal menguji proxy. Kode Status: {0}", "ProxyBadRequestHealthCheckMessage": "Gagal menguji proxy. Kode Status: {statusCode}",
"QualityProfile": "Profil Kualitas", "QualityProfile": "Profil Kualitas",
"Add": "Tambah", "Add": "Tambah",
"Cancel": "Batal", "Cancel": "Batal",

View File

@ -1,11 +1,11 @@
{ {
"DeleteConditionMessageText": "Sei sicuro di voler eliminare la condizione '{0}'?", "DeleteConditionMessageText": "Sei sicuro di voler eliminare la condizione '{name}'?",
"ApplyTagsHelpTextReplace": "Sostituire: Sostituisce le etichette con quelle inserite (non inserire nessuna etichette per eliminarle tutte)", "ApplyTagsHelpTextReplace": "Sostituire: Sostituisce le etichette con quelle inserite (non inserire nessuna etichette per eliminarle tutte)",
"ApplyTagsHelpTextHowToApplyIndexers": "Come applicare etichette agli indicizzatori selezionati", "ApplyTagsHelpTextHowToApplyIndexers": "Come applicare etichette agli indicizzatori selezionati",
"MoveAutomatically": "Sposta Automaticamente", "MoveAutomatically": "Sposta Automaticamente",
"ApplyTagsHelpTextRemove": "Rimuovi: Rimuove le etichette inserite", "ApplyTagsHelpTextRemove": "Rimuovi: Rimuove le etichette inserite",
"ApplyTagsHelpTextAdd": "Aggiungi: Aggiunge le etichette alla lista esistente di etichette", "ApplyTagsHelpTextAdd": "Aggiungi: Aggiunge le etichette alla lista esistente di etichette",
"DeleteCustomFormatMessageText": "Sei sicuro di voler eliminare il formato personalizzato '{0}'?", "DeleteCustomFormatMessageText": "Sei sicuro di voler eliminare il formato personalizzato '{customFormatName}'?",
"DeleteSelectedDownloadClients": "Cancella i Client di Download", "DeleteSelectedDownloadClients": "Cancella i Client di Download",
"Added": "Aggiunto", "Added": "Aggiunto",
"AutomaticAdd": "Aggiungi Automaticamente", "AutomaticAdd": "Aggiungi Automaticamente",
@ -15,7 +15,7 @@
"AutoAdd": "Aggiungi Automaticamente", "AutoAdd": "Aggiungi Automaticamente",
"AirDate": "Data di Trasmissione", "AirDate": "Data di Trasmissione",
"AllTitles": "Tutti i Titoli", "AllTitles": "Tutti i Titoli",
"ApiKeyValidationHealthCheckMessage": "Aggiorna la tua chiave API in modo che abbia una lunghezza di almeno {0} caratteri. Puoi farlo dalle impostazioni o dal file di configurazione", "ApiKeyValidationHealthCheckMessage": "Aggiorna la tua chiave API in modo che abbia una lunghezza di almeno {length} caratteri. Puoi farlo dalle impostazioni o dal file di configurazione",
"Apply": "Applica", "Apply": "Applica",
"ApplyChanges": "Applica Cambiamenti", "ApplyChanges": "Applica Cambiamenti",
"ApplyTags": "Applica Etichette", "ApplyTags": "Applica Etichette",

View File

@ -1,5 +1,5 @@
{ {
"ApiKeyValidationHealthCheckMessage": "Vennligst oppdater din API-nøkkel til å være minst {0} tegn lang. Du kan gjøre dette via innstillinger eller konfigurasjonsfilen", "ApiKeyValidationHealthCheckMessage": "Vennligst oppdater din API-nøkkel til å være minst {length} tegn lang. Du kan gjøre dette via innstillinger eller konfigurasjonsfilen",
"ApplyChanges": "Bekreft endringer", "ApplyChanges": "Bekreft endringer",
"AllTitles": "Alle titler", "AllTitles": "Alle titler",
"AddAutoTag": "Legg til automatisk tagg", "AddAutoTag": "Legg til automatisk tagg",

View File

@ -1,6 +1,6 @@
{ {
"RemoveFailedDownloads": "Verwijder mislukte downloads", "RemoveFailedDownloads": "Verwijder mislukte downloads",
"ApiKeyValidationHealthCheckMessage": "Maak je API sleutel alsjeblieft minimaal {0} karakters lang. Dit kan gedaan worden via de instellingen of het configuratiebestand", "ApiKeyValidationHealthCheckMessage": "Maak je API sleutel alsjeblieft minimaal {length} karakters lang. Dit kan gedaan worden via de instellingen of het configuratiebestand",
"RemoveCompletedDownloads": "Verwijder voltooide downloads", "RemoveCompletedDownloads": "Verwijder voltooide downloads",
"AppDataLocationHealthCheckMessage": "Updaten zal niet mogelijk zijn om het verwijderen van AppData te voorkomen", "AppDataLocationHealthCheckMessage": "Updaten zal niet mogelijk zijn om het verwijderen van AppData te voorkomen",
"Added": "Toegevoegd", "Added": "Toegevoegd",

View File

@ -13,7 +13,7 @@
"ApplyTagsHelpTextHowToApplyIndexers": "Jak zastosować tagi do wybranych indeksatorów", "ApplyTagsHelpTextHowToApplyIndexers": "Jak zastosować tagi do wybranych indeksatorów",
"Authentication": "Autoryzacja", "Authentication": "Autoryzacja",
"BlocklistReleases": "Dodaj wersje do czarnej listy", "BlocklistReleases": "Dodaj wersje do czarnej listy",
"ApiKeyValidationHealthCheckMessage": "Zaktualizuj swój klucz API aby był długi na co najmniej {0} znaków. Możesz to zrobić poprzez ustawienia lub plik konfiguracyjny", "ApiKeyValidationHealthCheckMessage": "Zaktualizuj swój klucz API aby był długi na co najmniej {length} znaków. Możesz to zrobić poprzez ustawienia lub plik konfiguracyjny",
"AudioInfo": "Informacje o audio", "AudioInfo": "Informacje o audio",
"AddAutoTagError": "Nie można dodać nowego tagu automatycznego, spróbuj ponownie.", "AddAutoTagError": "Nie można dodać nowego tagu automatycznego, spróbuj ponownie.",
"AddConditionError": "Nie można dodać nowego warunku, spróbuj ponownie.", "AddConditionError": "Nie można dodać nowego warunku, spróbuj ponownie.",

View File

@ -4,7 +4,7 @@
"CountSeasons": "{count} temporadas", "CountSeasons": "{count} temporadas",
"Language": "Idioma", "Language": "Idioma",
"Added": "Adicionado", "Added": "Adicionado",
"ApiKeyValidationHealthCheckMessage": "Por favor, atualize a sua API Key para ter no mínimo {0} caracteres. Pode fazer através das definições ou do ficheiro de configuração", "ApiKeyValidationHealthCheckMessage": "Por favor, atualize a sua API Key para ter no mínimo {length} caracteres. Pode fazer através das definições ou do ficheiro de configuração",
"AppDataLocationHealthCheckMessage": "Não foi possível atualizar para prevenir apagar a AppData durante a atualização", "AppDataLocationHealthCheckMessage": "Não foi possível atualizar para prevenir apagar a AppData durante a atualização",
"AddAutoTag": "Adicionar Etiqueta Automática", "AddAutoTag": "Adicionar Etiqueta Automática",
"AbsoluteEpisodeNumbers": "Números de Episódios Absolutos", "AbsoluteEpisodeNumbers": "Números de Episódios Absolutos",

View File

@ -9,15 +9,15 @@
"Enabled": "Habilitado", "Enabled": "Habilitado",
"Ended": "Terminou", "Ended": "Terminou",
"HideAdvanced": "Ocultar Avançado", "HideAdvanced": "Ocultar Avançado",
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Múltiplas pastas raiz estão faltando nas listas de importação: {0}", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Múltiplas pastas raiz estão faltando nas listas de importação: {rootFoldersInfo}",
"ImportListStatusAllUnavailableHealthCheckMessage": "Todas as listas estão indisponíveis devido a falhas", "ImportListStatusAllUnavailableHealthCheckMessage": "Todas as listas estão indisponíveis devido a falhas",
"ImportMechanismHandlingDisabledHealthCheckMessage": "Ativar gerenciamento de download concluído", "ImportMechanismHandlingDisabledHealthCheckMessage": "Ativar gerenciamento de download concluído",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas por mais de 6 horas: {0}", "IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas por mais de 6 horas: {indexerNames}",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "Nenhum indexador disponível com sincronização de RSS ativada, o {appName} não obterá novos lançamentos automaticamente", "IndexerRssNoIndexersEnabledHealthCheckMessage": "Nenhum indexador disponível com sincronização de RSS ativada, o {appName} não obterá novos lançamentos automaticamente",
"IndexerSearchNoAutomaticHealthCheckMessage": "Nenhum indexador disponível com a pesquisa automática ativada, o {appName} não fornecerá nenhum resultado de pesquisa automática", "IndexerSearchNoAutomaticHealthCheckMessage": "Nenhum indexador disponível com a pesquisa automática ativada, o {appName} não fornecerá nenhum resultado de pesquisa automática",
"IndexerSearchNoInteractiveHealthCheckMessage": "Nenhum indexador disponível com a Pesquisa interativa habilitada, o {appName} não fornecerá nenhum resultado de pesquisa interativa", "IndexerSearchNoInteractiveHealthCheckMessage": "Nenhum indexador disponível com a Pesquisa interativa habilitada, o {appName} não fornecerá nenhum resultado de pesquisa interativa",
"IndexerStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas", "IndexerStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas",
"IndexerStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas: {0}", "IndexerStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas: {indexerNames}",
"Language": "Idioma", "Language": "Idioma",
"Monitored": "Monitorado", "Monitored": "Monitorado",
"MountHealthCheckMessage": "A montagem que contém um caminho de série é montada somente para leitura: ", "MountHealthCheckMessage": "A montagem que contém um caminho de série é montada somente para leitura: ",
@ -30,21 +30,21 @@
"RemoveFailedDownloads": "Remover downloads com falha", "RemoveFailedDownloads": "Remover downloads com falha",
"QualityProfile": "Perfil de Qualidade", "QualityProfile": "Perfil de Qualidade",
"RefreshSeries": "Atualizar Séries", "RefreshSeries": "Atualizar Séries",
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "Você está usando o docker; o cliente de download {0} coloca os downloads em {1}, mas esse diretório parece não existir dentro do contêiner. Revise seus mapeamentos de caminho remoto e configurações de volume do contêiner.", "RemotePathMappingDockerFolderMissingHealthCheckMessage": "Você está usando o docker; o cliente de download $1{downloadClientName} coloca os downloads em {path}, mas esse diretório parece não existir dentro do contêiner. Revise seus mapeamentos de caminho remoto e configurações de volume do contêiner.",
"RemotePathMappingDownloadPermissionsHealthCheckMessage": "O {appName} pode ver, mas não acessar o episódio baixado {0}. Provável erro de permissão.", "RemotePathMappingDownloadPermissionsHealthCheckMessage": "O {appName} pode ver, mas não acessar o episódio baixado {path}. Provável erro de permissão.",
"RemotePathMappingFileRemovedHealthCheckMessage": "O arquivo {0} foi removido no meio do processamento.", "RemotePathMappingFileRemovedHealthCheckMessage": "O arquivo {path} foi removido no meio do processamento.",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Baixe os arquivos relatados do cliente {0} em {1}, mas o {appName} não pode ver este diretório. Pode ser necessário ajustar as permissões da pasta.", "RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "Baixe os arquivos relatados do cliente {downloadClientName} em {path}, mas o {appName} não pode ver este diretório. Pode ser necessário ajustar as permissões da pasta.",
"RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "O cliente de download local {0} relatou arquivos em {1}, mas este não é um caminho {2} válido. Revise as configurações do cliente de download.", "RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "O cliente de download local {downloadClientName} relatou arquivos em {path}, mas este não é um caminho {osName} válido. Revise as configurações do cliente de download.",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} pode ver, mas não acessar o diretório de download {0}. Provável erro de permissão.", "RemotePathMappingFolderPermissionsHealthCheckMessage": "{appName} pode ver, mas não acessar o diretório de download {downloadPath}. Provável erro de permissão.",
"RemotePathMappingGenericPermissionsHealthCheckMessage": "O cliente de download {0} coloca os downloads em {1}, mas o {appName} não pode ver este diretório. Pode ser necessário ajustar as permissões da pasta.", "RemotePathMappingGenericPermissionsHealthCheckMessage": "O cliente de download {downloadClientName} coloca os downloads em {path}, mas o {appName} não pode ver este diretório. Pode ser necessário ajustar as permissões da pasta.",
"RemotePathMappingImportFailedHealthCheckMessage": "{appName} falhou ao importar (um) episódio(s). Verifique seus logs para obter detalhes.", "RemotePathMappingImportFailedHealthCheckMessage": "{appName} falhou ao importar (um) episódio(s). Verifique seus logs para obter detalhes.",
"RemotePathMappingLocalWrongOSPathHealthCheckMessage": "O cliente de download local {0} coloca os downloads em {1}, mas este não é um caminho {2} válido. Revise as configurações do cliente de download.", "RemotePathMappingLocalWrongOSPathHealthCheckMessage": "O cliente de download local {downloadClientName} coloca os downloads em {path}, mas este não é um caminho {osName} válido. Revise as configurações do cliente de download.",
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "O cliente de download remoto {0} relatou arquivos em {1}, mas este diretório parece não existir. Provavelmente faltando mapeamento de caminho remoto.", "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 {0} foi removida do TheTVDB", "RemovedSeriesMultipleRemovedHealthCheckMessage": "A série {series} foi removida do TheTVDB",
"RemovedSeriesSingleRemovedHealthCheckMessage": "As séries {0} foram removidas do TheTVDB", "RemovedSeriesSingleRemovedHealthCheckMessage": "As séries {series} foram removidas do TheTVDB",
"RootFolder": "Pasta Raiz", "RootFolder": "Pasta Raiz",
"RootFolderMissingHealthCheckMessage": "Pasta raiz ausente: {0}", "RootFolderMissingHealthCheckMessage": "Pasta raiz ausente: {rootFolderPath}",
"RootFolderMultipleMissingHealthCheckMessage": "Faltam várias pastas raiz: {0}", "RootFolderMultipleMissingHealthCheckMessage": "Faltam várias pastas raiz: {rootFolderPaths}",
"SearchForMonitoredEpisodes": "Pesquisar episódios monitorados", "SearchForMonitoredEpisodes": "Pesquisar episódios monitorados",
"ShowAdvanced": "Mostrar Avançado", "ShowAdvanced": "Mostrar Avançado",
"ShownClickToHide": "Mostrado, clique para ocultar", "ShownClickToHide": "Mostrado, clique para ocultar",
@ -52,41 +52,40 @@
"SystemTimeHealthCheckMessage": "A hora do sistema está desligada por mais de 1 dia. Tarefas agendadas podem não ser executadas corretamente até que o horário seja corrigido", "SystemTimeHealthCheckMessage": "A hora do sistema está desligada por mais de 1 dia. Tarefas agendadas podem não ser executadas corretamente até que o horário seja corrigido",
"Unmonitored": "Não monitorado", "Unmonitored": "Não monitorado",
"UpdateAvailableHealthCheckMessage": "Nova atualização está disponível", "UpdateAvailableHealthCheckMessage": "Nova atualização está disponível",
"UpdateUINotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de IU '{0}' não pode ser gravada pelo usuário '{1}'.",
"Added": "Adicionado", "Added": "Adicionado",
"ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {0} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração", "ApiKeyValidationHealthCheckMessage": "Atualize sua chave de API para ter pelo menos {length} caracteres. Você pode fazer isso através das configurações ou do arquivo de configuração",
"RemoveCompletedDownloads": "Remover downloads concluídos", "RemoveCompletedDownloads": "Remover downloads concluídos",
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na atualização", "AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na atualização",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Não é possível se comunicar com {0}.", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Não é possível se comunicar com {downloadClientName}.",
"DownloadClientRootFolderHealthCheckMessage": "O cliente de download {0} coloca os downloads na pasta raiz {1}. Você não deve baixar para uma pasta raiz.", "DownloadClientRootFolderHealthCheckMessage": "O cliente de download {downloadClientName} coloca os downloads na pasta raiz {rootFolderPath}. Você não deve baixar para uma pasta raiz.",
"DownloadClientSortingHealthCheckMessage": "O cliente de download {0} tem classificação {1} habilitada para a categoria {appName}. Você deve desativar a classificação em seu cliente de download para evitar problemas de importação.", "DownloadClientSortingHealthCheckMessage": "O cliente de download {downloadClientName} tem classificação {sortingMode} habilitada para a categoria {appName}. Você deve desativar a classificação em seu cliente de download para evitar problemas de importação.",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clientes de download indisponíveis devido a falhas: {0}", "DownloadClientStatusSingleClientHealthCheckMessage": "Clientes de download indisponíveis devido a falhas: {downloadClientNames}",
"EditSelectedIndexers": "Editar indexadores selecionados", "EditSelectedIndexers": "Editar indexadores selecionados",
"EditSeries": "Editar Série", "EditSeries": "Editar Série",
"EnableAutomaticSearch": "Ativar pesquisa automática", "EnableAutomaticSearch": "Ativar pesquisa automática",
"EnableInteractiveSearch": "Ativar pesquisa interativa", "EnableInteractiveSearch": "Ativar pesquisa interativa",
"HiddenClickToShow": "Oculto, clique para mostrar", "HiddenClickToShow": "Oculto, clique para mostrar",
"ImportListRootFolderMissingRootHealthCheckMessage": "Pasta raiz ausente para lista(s) de importação: {0}", "ImportListRootFolderMissingRootHealthCheckMessage": "Pasta raiz ausente para lista(s) de importação: {rootFolderInfo}",
"ImportListStatusUnavailableHealthCheckMessage": "Listas indisponíveis devido a falhas: {0}", "ImportListStatusUnavailableHealthCheckMessage": "Listas indisponíveis devido a falhas: {importListNames}",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Ative o Gerenciamento de download concluído, se possível", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Ative o Gerenciamento de download concluído, se possível",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Ative o Gerenciamento de download concluído, se possível (Multi-computador não suportado)", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "Ative o Gerenciamento de download concluído, se possível (Multi-computador não suportado)",
"IndexerJackettAllHealthCheckMessage": "Indexadores usando o endpont Jackett 'all' sem suporte: {0}", "IndexerJackettAllHealthCheckMessage": "Indexadores usando o endpont Jackett 'all' sem suporte: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas por mais de 6 horas", "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas por mais de 6 horas",
"IndexerRssNoIndexersAvailableHealthCheckMessage": "Todos os indexadores compatíveis com rss estão temporariamente indisponíveis devido a erros recentes do indexador", "IndexerRssNoIndexersAvailableHealthCheckMessage": "Todos os indexadores compatíveis com rss estão temporariamente indisponíveis devido a erros recentes do indexador",
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "Todos os indexadores com capacidade de pesquisa estão temporariamente indisponíveis devido a erros recentes do indexador", "IndexerSearchNoAvailableIndexersHealthCheckMessage": "Todos os indexadores com capacidade de pesquisa estão temporariamente indisponíveis devido a erros recentes do indexador",
"NextAiring": "Próxima Exibição", "NextAiring": "Próxima Exibição",
"OriginalLanguage": "Idioma Original", "OriginalLanguage": "Idioma Original",
"ProxyBadRequestHealthCheckMessage": "Falha ao testar o proxy. Código de estado: {0}", "ProxyBadRequestHealthCheckMessage": "Falha ao testar o proxy. Código de estado: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Falha ao testar o proxy: {0}", "ProxyFailedToTestHealthCheckMessage": "Falha ao testar o proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "Falha ao resolver o endereço IP do host de proxy configurado {0}", "ProxyResolveIpHealthCheckMessage": "Falha ao resolver o endereço IP do host de proxy configurado {proxyHostName}",
"RecycleBinUnableToWriteHealthCheckMessage": "Não é possível gravar na pasta da lixeira configurada: {0}. Certifique-se de que este caminho exista e seja gravável pelo usuário executando o {appName}", "RecycleBinUnableToWriteHealthCheckMessage": "Não é possível gravar na pasta da lixeira configurada: {path}. Certifique-se de que este caminho exista e seja gravável pelo usuário executando o {appName}",
"RemotePathMappingBadDockerPathHealthCheckMessage": "Você está usando o docker; cliente de download {0} coloca downloads em {1}, mas este não é um caminho {2} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.", "RemotePathMappingBadDockerPathHealthCheckMessage": "Você está usando o docker; cliente de download {downloadClientName} coloca 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.",
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Você está usando o docker; baixe os arquivos relatados do cliente {0} em {1}, mas este não é um caminho {2} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.", "RemotePathMappingFilesBadDockerPathHealthCheckMessage": "Você está usando o docker; baixe os arquivos relatados do cliente {downloadClientName} em {path}, mas este não é um caminho {osName} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.",
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "O cliente de download remoto {0} relatou arquivos em {1}, mas este não é um caminho {2} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.", "RemotePathMappingFilesWrongOSPathHealthCheckMessage": "O cliente de download remoto {downloadClientName} relatou arquivos em {path}, mas este não é um caminho {osName} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.",
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "O cliente de download remoto {0} coloca os downloads em {1}, mas este diretório parece não existir. Mapeamento de caminho remoto provavelmente ausente ou incorreto.", "RemotePathMappingLocalFolderMissingHealthCheckMessage": "O cliente de download remoto {downloadClientName} coloca os downloads em {path}, mas este diretório parece não existir. Mapeamento de caminho remoto provavelmente ausente ou incorreto.",
"RemotePathMappingWrongOSPathHealthCheckMessage": "O cliente de download remoto {0} coloca os downloads em {1}, mas este não é um caminho {2} válido. Revise seus mapeamentos de caminho remoto e baixe as configurações do cliente.", "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 '{0}' não pode ser gravada pelo usuário '{1}'.", "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 '{0}' está em uma pasta de translocação de aplicativo.", "UpdateStartupTranslocationHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{startupFolder}' está em uma pasta de translocação de aplicativo.",
"BlocklistReleaseHelpText": "Inicia uma busca por este episódio novamente e impede que esta versão seja capturada novamente", "BlocklistReleaseHelpText": "Inicia uma busca por este episódio novamente e impede que esta versão seja capturada novamente",
"BlocklistReleases": "Lançamentos na lista de bloqueio", "BlocklistReleases": "Lançamentos na lista de bloqueio",
"CloneCondition": "Clonar Condição", "CloneCondition": "Clonar Condição",
@ -96,7 +95,7 @@
"DeleteCondition": "Excluir condição", "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", "DeleteCustomFormat": "Excluir formato personalizado",
"DeleteCustomFormatMessageText": "Tem certeza de que deseja excluir o formato personalizado '{0}'?", "DeleteCustomFormatMessageText": "Tem certeza de que deseja excluir o formato personalizado '{customFormatName}'?",
"ExportCustomFormat": "Exportar Formato Personalizado", "ExportCustomFormat": "Exportar Formato Personalizado",
"Negated": "Negado", "Negated": "Negado",
"Remove": "Remover", "Remove": "Remover",
@ -400,7 +399,7 @@
"SomeResultsAreHiddenByTheAppliedFilter": "Alguns resultados estão ocultos pelo filtro aplicado", "SomeResultsAreHiddenByTheAppliedFilter": "Alguns resultados estão ocultos pelo filtro aplicado",
"UnableToLoadAutoTagging": "Não foi possível carregar a marcação automática", "UnableToLoadAutoTagging": "Não foi possível carregar a marcação automática",
"UnableToLoadRootFolders": "Não foi possível carregar as pastas raiz", "UnableToLoadRootFolders": "Não foi possível carregar as pastas raiz",
"IndexerDownloadClientHealthCheckMessage": "Indexadores com clientes de download inválidos: {0}.", "IndexerDownloadClientHealthCheckMessage": "Indexadores com clientes de download inválidos: {indexerNames}.",
"AddConditionError": "Não foi possível adicionar uma nova condição. Tente novamente.", "AddConditionError": "Não foi possível adicionar uma nova condição. Tente novamente.",
"AddConnection": "Adicionar Conexão", "AddConnection": "Adicionar Conexão",
"AddCustomFormat": "Adicionar Formato Personalizado", "AddCustomFormat": "Adicionar Formato Personalizado",
@ -901,7 +900,7 @@
"UpdateAutomaticallyHelpText": "Baixe e instale atualizações automaticamente. Você ainda poderá instalar a partir do Sistema: Atualizações", "UpdateAutomaticallyHelpText": "Baixe e instale atualizações automaticamente. Você ainda poderá instalar a partir do Sistema: Atualizações",
"UpdateMechanismHelpText": "Use o atualizador integrado do {appName} ou um script", "UpdateMechanismHelpText": "Use o atualizador integrado do {appName} ou um script",
"UpdateSonarrDirectlyLoadError": "Incapaz de atualizar o {appName} diretamente,", "UpdateSonarrDirectlyLoadError": "Incapaz de atualizar o {appName} diretamente,",
"UpdateUiNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de IU '{0}' não pode ser salva pelo usuário '{1}'.", "UpdateUiNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de IU '{uiFolder}' não pode ser salva pelo usuário '{userName}'.",
"UpgradeUntil": "Atualizar Até", "UpgradeUntil": "Atualizar Até",
"UpgradeUntilCustomFormatScore": "Atualizar até pontuação de formato personalizado", "UpgradeUntilCustomFormatScore": "Atualizar até pontuação de formato personalizado",
"UpgradeUntilHelpText": "Quando essa qualidade for atingida, o {appName} não fará mais download de episódios", "UpgradeUntilHelpText": "Quando essa qualidade for atingida, o {appName} não fará mais download de episódios",
@ -1257,7 +1256,7 @@
"MoveFiles": "Mover Arquivos", "MoveFiles": "Mover Arquivos",
"MultiLanguages": "Multi-Idiomas", "MultiLanguages": "Multi-Idiomas",
"NoEpisodesFoundForSelectedSeason": "Nenhum episódio foi encontrado para a temporada selecionada", "NoEpisodesFoundForSelectedSeason": "Nenhum episódio foi encontrado para a temporada selecionada",
"NotificationStatusSingleClientHealthCheckMessage": "Notificações indisponíveis devido a falhas: {0}", "NotificationStatusSingleClientHealthCheckMessage": "Notificações indisponíveis devido a falhas: {notificationNames}",
"Or": "ou", "Or": "ou",
"Organize": "Organizar", "Organize": "Organizar",
"OrganizeLoadError": "Erro ao carregar visualizações", "OrganizeLoadError": "Erro ao carregar visualizações",
@ -1484,5 +1483,5 @@
"FormatShortTimeSpanSeconds": "{seconds} segundo(s)", "FormatShortTimeSpanSeconds": "{seconds} segundo(s)",
"FormatTimeSpanDays": "{days}d {time}", "FormatTimeSpanDays": "{days}d {time}",
"Yesterday": "Ontem", "Yesterday": "Ontem",
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "O cliente de download {0} está configurado para remover downloads concluídos. Isso pode resultar na remoção dos downloads do seu cliente antes que {1} possa importá-los." "DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "O cliente de download {downloadClientName} está configurado para remover downloads concluídos. Isso pode resultar na remoção dos downloads do seu cliente antes que {appName} possa importá-los."
} }

View File

@ -20,13 +20,13 @@
"ApplyTagsHelpTextAdd": "Adăugare: adăugați etichetele la lista de etichete existentă", "ApplyTagsHelpTextAdd": "Adăugare: adăugați etichetele la lista de etichete existentă",
"ApplyTagsHelpTextReplace": "Înlocuire: înlocuiți etichetele cu etichetele introduse (nu introduceți etichete pentru a șterge toate etichetele)", "ApplyTagsHelpTextReplace": "Înlocuire: înlocuiți etichetele cu etichetele introduse (nu introduceți etichete pentru a șterge toate etichetele)",
"CancelPendingTask": "Sigur doriți să anulați această sarcină în așteptare?", "CancelPendingTask": "Sigur doriți să anulați această sarcină în așteptare?",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Nu pot comunica cu {0}.", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Nu pot comunica cu {downloadClientName}.",
"CloneCustomFormat": "Clonați format personalizat", "CloneCustomFormat": "Clonați format personalizat",
"Close": "Închide", "Close": "Închide",
"Delete": "Șterge", "Delete": "Șterge",
"Added": "Adăugat", "Added": "Adăugat",
"CountSeasons": "{count} sezoane", "CountSeasons": "{count} sezoane",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clienții de descărcare indisponibili datorită erorilor: {0}", "DownloadClientStatusSingleClientHealthCheckMessage": "Clienții de descărcare indisponibili datorită erorilor: {downloadClientNames}",
"EnableAutomaticSearch": "Activați căutarea automată", "EnableAutomaticSearch": "Activați căutarea automată",
"EnableInteractiveSearch": "Activați căutarea interactivă", "EnableInteractiveSearch": "Activați căutarea interactivă",
"Enabled": "Activat", "Enabled": "Activat",
@ -69,7 +69,7 @@
"DotNetVersion": ".NET", "DotNetVersion": ".NET",
"Download": "Descarca", "Download": "Descarca",
"DownloadClient": "Client de descărcare", "DownloadClient": "Client de descărcare",
"DownloadClientRootFolderHealthCheckMessage": "Clientul de descărcare {0} plasează descărcările în folderul rădăcină {1}. Nu trebuie să descărcați într-un folder rădăcină.", "DownloadClientRootFolderHealthCheckMessage": "Clientul de descărcare {downloadClientName} plasează descărcările în folderul rădăcină {rootFolderPath}. Nu trebuie să descărcați într-un folder rădăcină.",
"Episode": "Episod", "Episode": "Episod",
"EpisodeTitle": "Titlu episod", "EpisodeTitle": "Titlu episod",
"Episodes": "Episoade", "Episodes": "Episoade",
@ -151,7 +151,7 @@
"InteractiveImportNoImportMode": "Un mod de import trebuie selectat", "InteractiveImportNoImportMode": "Un mod de import trebuie selectat",
"InteractiveImportNoFilesFound": "Nu au fost găsite fișiere video în folderul selectat", "InteractiveImportNoFilesFound": "Nu au fost găsite fișiere video în folderul selectat",
"InteractiveImportLoadError": "Imposibil de încărcat articole de import manual", "InteractiveImportLoadError": "Imposibil de încărcat articole de import manual",
"NotificationStatusSingleClientHealthCheckMessage": "Notificări indisponibile datorită erorilor: {0}", "NotificationStatusSingleClientHealthCheckMessage": "Notificări indisponibile datorită erorilor: {notificationNames}",
"ParseModalUnableToParse": "Nu se poate analiza titlul furnizat, vă rugăm să încercați din nou.", "ParseModalUnableToParse": "Nu se poate analiza titlul furnizat, vă rugăm să încercați din nou.",
"ParseModalErrorParsing": "Eroare la analizare, încercați din nou.", "ParseModalErrorParsing": "Eroare la analizare, încercați din nou.",
"Parse": "Analiza", "Parse": "Analiza",

View File

@ -1,16 +1,16 @@
{ {
"ApiKeyValidationHealthCheckMessage": "Пожалуйста, обновите свой ключ API, чтобы он был длиной не менее {0} символов. Вы можете сделать это через настройки или файл конфигурации", "ApiKeyValidationHealthCheckMessage": "Пожалуйста, обновите свой ключ API, чтобы он был длиной не менее {length} символов. Вы можете сделать это через настройки или файл конфигурации",
"DownloadClientSortingHealthCheckMessage": "В клиенте загрузки {0} включена сортировка {1} для категории {appName}. Вам следует отключить сортировку в вашем клиенте загрузки, чтобы избежать проблем с импортом.", "DownloadClientSortingHealthCheckMessage": "В клиенте загрузки {downloadClientName} включена сортировка {sortingMode} для категории {appName}. Вам следует отключить сортировку в вашем клиенте загрузки, чтобы избежать проблем с импортом.",
"IndexerJackettAllHealthCheckMessage": "Используется не поддерживаемый в Jackett конечный параметр 'all' в индексаторе: {0}", "IndexerJackettAllHealthCheckMessage": "Используется не поддерживаемый в Jackett конечный параметр 'all' в индексаторе: {indexerNames}",
"IndexerSearchNoAutomaticHealthCheckMessage": "Нет доступных индексаторов с включенным автоматическим поиском, {appName} не будет предоставлять результаты автоматического поиска", "IndexerSearchNoAutomaticHealthCheckMessage": "Нет доступных индексаторов с включенным автоматическим поиском, {appName} не будет предоставлять результаты автоматического поиска",
"Added": "Добавлено", "Added": "Добавлено",
"AppDataLocationHealthCheckMessage": "Обновление будет не возможно, во избежание удаления данных программы во время обновления", "AppDataLocationHealthCheckMessage": "Обновление будет не возможно, во избежание удаления данных программы во время обновления",
"ApplyChanges": "Применить изменения", "ApplyChanges": "Применить изменения",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "Ни один загрузчик не доступен", "DownloadClientCheckNoneAvailableHealthCheckMessage": "Ни один загрузчик не доступен",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Невозможно связаться с {0}.", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "Невозможно связаться с {downloadClientName}.",
"DownloadClientRootFolderHealthCheckMessage": "Клиент загрузки {0} помещает загрузки в корневую папку {1}. Вы не должны загружать в корневую папку.", "DownloadClientRootFolderHealthCheckMessage": "Клиент загрузки {downloadClientName} помещает загрузки в корневую папку {rootFolderPath}. Вы не должны загружать в корневую папку.",
"DownloadClientStatusAllClientHealthCheckMessage": "Все клиенты загрузки недоступны из-за сбоев", "DownloadClientStatusAllClientHealthCheckMessage": "Все клиенты загрузки недоступны из-за сбоев",
"DownloadClientStatusSingleClientHealthCheckMessage": "Клиенты для скачивания недоступны из-за ошибок: {0}", "DownloadClientStatusSingleClientHealthCheckMessage": "Клиенты для скачивания недоступны из-за ошибок: {downloadClientNames}",
"EditSelectedDownloadClients": "Редактировать выбранные клиенты загрузки", "EditSelectedDownloadClients": "Редактировать выбранные клиенты загрузки",
"EditSelectedImportLists": "Редактировать выбранные списки импорта", "EditSelectedImportLists": "Редактировать выбранные списки импорта",
"EditSeries": "Редактировать серию", "EditSeries": "Редактировать серию",
@ -19,14 +19,14 @@
"Enabled": "Включено", "Enabled": "Включено",
"HiddenClickToShow": "Скрыто, нажмите чтобы показать", "HiddenClickToShow": "Скрыто, нажмите чтобы показать",
"HideAdvanced": "Скрыть расширенные", "HideAdvanced": "Скрыть расширенные",
"ImportListRootFolderMissingRootHealthCheckMessage": "Отсутствует корневая папка для импортирования списка(ов): {0}", "ImportListRootFolderMissingRootHealthCheckMessage": "Отсутствует корневая папка для импортирования списка(ов): {rootFolderInfo}",
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Для импортируемых списков отсутствуют несколько корневых папок: {0}", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "Для импортируемых списков отсутствуют несколько корневых папок: {rootFoldersInfo}",
"ImportListStatusAllUnavailableHealthCheckMessage": "Все листы недоступны из-за ошибок", "ImportListStatusAllUnavailableHealthCheckMessage": "Все листы недоступны из-за ошибок",
"ImportListStatusUnavailableHealthCheckMessage": "Листы недоступны из-за ошибок: {0}", "ImportListStatusUnavailableHealthCheckMessage": "Листы недоступны из-за ошибок: {importListNames}",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Включить обработку завершенной загрузки, если это возможно", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "Включить обработку завершенной загрузки, если это возможно",
"ImportMechanismHandlingDisabledHealthCheckMessage": "Включить обработку завершенных скачиваний", "ImportMechanismHandlingDisabledHealthCheckMessage": "Включить обработку завершенных скачиваний",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов", "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов: {0}", "IndexerLongTermStatusUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов: {indexerNames}",
"IndexerRssNoIndexersAvailableHealthCheckMessage": "Все RSS индексаторы временно выключены из-за ошибок", "IndexerRssNoIndexersAvailableHealthCheckMessage": "Все RSS индексаторы временно выключены из-за ошибок",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "Нет доступных индексаторов с включенной синхронизацией RSS, {appName} не будет автоматически получать новые выпуски", "IndexerRssNoIndexersEnabledHealthCheckMessage": "Нет доступных индексаторов с включенной синхронизацией RSS, {appName} не будет автоматически получать новые выпуски",
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "Все индексаторы с возможностью поиска временно выключены из-за ошибок", "IndexerSearchNoAvailableIndexersHealthCheckMessage": "Все индексаторы с возможностью поиска временно выключены из-за ошибок",
@ -35,12 +35,12 @@
"EditConditionImplementation": "Редактировать условие - {implementationName}", "EditConditionImplementation": "Редактировать условие - {implementationName}",
"EditImportListImplementation": "Редактировать импорт лист - {implementationName}", "EditImportListImplementation": "Редактировать импорт лист - {implementationName}",
"Implementation": "Реализация", "Implementation": "Реализация",
"IndexerDownloadClientHealthCheckMessage": "Индексаторы с недопустимыми клиентами загрузки: {0}.", "IndexerDownloadClientHealthCheckMessage": "Индексаторы с недопустимыми клиентами загрузки: {indexerNames}.",
"ManageClients": "Управление клиентами", "ManageClients": "Управление клиентами",
"ManageIndexers": "Управление индексаторами", "ManageIndexers": "Управление индексаторами",
"MoveAutomatically": "Перемещать автоматически", "MoveAutomatically": "Перемещать автоматически",
"NoDownloadClientsFound": "Клиенты для загрузки не найдены", "NoDownloadClientsFound": "Клиенты для загрузки не найдены",
"NotificationStatusSingleClientHealthCheckMessage": "Уведомления недоступны из-за сбоев: {0}", "NotificationStatusSingleClientHealthCheckMessage": "Уведомления недоступны из-за сбоев: {notificationNames}",
"CountIndexersSelected": "{count} выбранных индексаторов", "CountIndexersSelected": "{count} выбранных индексаторов",
"EditAutoTag": "Редактировать автоматическую маркировку", "EditAutoTag": "Редактировать автоматическую маркировку",
"NoHistoryBlocklist": "Нет истории блокировок", "NoHistoryBlocklist": "Нет истории блокировок",

View File

@ -2,7 +2,7 @@
"BlocklistRelease": "Chặn bản phát hành", "BlocklistRelease": "Chặn bản phát hành",
"BlocklistReleases": "Phát hành danh sách đen", "BlocklistReleases": "Phát hành danh sách đen",
"Added": "Đã thêm", "Added": "Đã thêm",
"ApiKeyValidationHealthCheckMessage": "Hãy cập nhật mã API để dài ít nhất {0} kí tự. Bạn có thể làm điều này trong cài đặt hoặc trong tập config", "ApiKeyValidationHealthCheckMessage": "Hãy cập nhật mã API để dài ít nhất {length} kí tự. Bạn có thể làm điều này trong cài đặt hoặc trong tập config",
"AppDataLocationHealthCheckMessage": "Việc cập nhật sẽ không xảy ra để tránh xóa AppData khi cập nhật", "AppDataLocationHealthCheckMessage": "Việc cập nhật sẽ không xảy ra để tránh xóa AppData khi cập nhật",
"ApplyChanges": "Áp dụng thay đổi", "ApplyChanges": "Áp dụng thay đổi",
"AutomaticAdd": "Tự động thêm" "AutomaticAdd": "Tự động thêm"

View File

@ -2,8 +2,8 @@
"CloneCondition": "克隆条件", "CloneCondition": "克隆条件",
"DeleteCondition": "删除条件", "DeleteCondition": "删除条件",
"DeleteConditionMessageText": "你确定要删除条件 “{name}” 吗?", "DeleteConditionMessageText": "你确定要删除条件 “{name}” 吗?",
"DeleteCustomFormatMessageText": "是否确实要删除条件“{0}”?", "DeleteCustomFormatMessageText": "是否确实要删除条件“{customFormatName}”?",
"ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少{0}个字符长。您可以通过设置或配置文件执行此操作", "ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少{length}个字符长。您可以通过设置或配置文件执行此操作",
"RemoveSelectedItemQueueMessageText": "您确定要从队列中删除一个项目吗?", "RemoveSelectedItemQueueMessageText": "您确定要从队列中删除一个项目吗?",
"RemoveSelectedItemsQueueMessageText": "您确定要从队列中删除{selectedCount}项吗?", "RemoveSelectedItemsQueueMessageText": "您确定要从队列中删除{selectedCount}项吗?",
"ApplyChanges": "应用更改", "ApplyChanges": "应用更改",
@ -63,22 +63,22 @@
"Metadata": "元数据", "Metadata": "元数据",
"CountSeasons": "季{count}", "CountSeasons": "季{count}",
"DownloadClientCheckNoneAvailableHealthCheckMessage": "无可用的下载客户端", "DownloadClientCheckNoneAvailableHealthCheckMessage": "无可用的下载客户端",
"DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "无法与{0}进行通讯。", "DownloadClientCheckUnableToCommunicateWithHealthCheckMessage": "无法与{downloadClientName}进行通讯。",
"DownloadClientRootFolderHealthCheckMessage": "下载客户端{0}将下载内容放在根文件夹{1}中。您不应该下载到根文件夹。", "DownloadClientRootFolderHealthCheckMessage": "下载客户端{downloadClientName}将下载内容放在根文件夹{rootFolderPath}中。您不应该下载到根文件夹。",
"DownloadClientSortingHealthCheckMessage": "下载客户端{0}已为{appName}的类别启用{1}排序。您应该在下载客户端中禁用排序,以避免导入问题。", "DownloadClientSortingHealthCheckMessage": "下载客户端{downloadClientName}已为{appName}的类别启用{sortingMode}排序。您应该在下载客户端中禁用排序,以避免导入问题。",
"DownloadClientStatusAllClientHealthCheckMessage": "所有下载客户端都不可用", "DownloadClientStatusAllClientHealthCheckMessage": "所有下载客户端都不可用",
"DownloadClientStatusSingleClientHealthCheckMessage": "所有下载客户端都不可用:{0}", "DownloadClientStatusSingleClientHealthCheckMessage": "所有下载客户端都不可用:{downloadClientNames}",
"EditSeries": "编辑剧集", "EditSeries": "编辑剧集",
"Enabled": "已启用", "Enabled": "已启用",
"Ended": "已完结", "Ended": "已完结",
"ImportListRootFolderMissingRootHealthCheckMessage": "在导入列表中缺少根目录文件夹:{0}", "ImportListRootFolderMissingRootHealthCheckMessage": "在导入列表中缺少根目录文件夹:{rootFolderInfo}",
"ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "导入列表中缺失多个根目录文件夹:{0}", "ImportListRootFolderMultipleMissingRootsHealthCheckMessage": "导入列表中缺失多个根目录文件夹:{rootFoldersInfo}",
"ImportListStatusAllUnavailableHealthCheckMessage": "所有的列表因错误不可用", "ImportListStatusAllUnavailableHealthCheckMessage": "所有的列表因错误不可用",
"ImportListStatusUnavailableHealthCheckMessage": "列表因错误不可用:{0}", "ImportListStatusUnavailableHealthCheckMessage": "列表因错误不可用:{importListNames}",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "如果可能,启用完整的下载处理(不支持多台计算机)", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleMultiComputerHealthCheckMessage": "如果可能,启用完整的下载处理(不支持多台计算机)",
"ImportMechanismHandlingDisabledHealthCheckMessage": "启用下载完成处理", "ImportMechanismHandlingDisabledHealthCheckMessage": "启用下载完成处理",
"IndexerJackettAllHealthCheckMessage": "使用 Jackett 不受支持的“全部”终点的索引器:{0}", "IndexerJackettAllHealthCheckMessage": "使用 Jackett 不受支持的“全部”终点的索引器:{indexerNames}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "由于故障6小时,下列索引器都已不可用:{0}", "IndexerLongTermStatusUnavailableHealthCheckMessage": "由于故障6小时,下列索引器都已不可用:{indexerNames}",
"IndexerRssNoIndexersAvailableHealthCheckMessage": "由于最近的索引器错误,所有支持rss的索引器暂时不可用", "IndexerRssNoIndexersAvailableHealthCheckMessage": "由于最近的索引器错误,所有支持rss的索引器暂时不可用",
"IndexerRssNoIndexersEnabledHealthCheckMessage": "没有启用RSS同步的索引器,{appName}不会自动抓取新版本", "IndexerRssNoIndexersEnabledHealthCheckMessage": "没有启用RSS同步的索引器,{appName}不会自动抓取新版本",
"IndexerSearchNoAutomaticHealthCheckMessage": "没有启用自动搜索的索引器,{appName}不会提供任何自动搜索结果", "IndexerSearchNoAutomaticHealthCheckMessage": "没有启用自动搜索的索引器,{appName}不会提供任何自动搜索结果",
@ -89,12 +89,12 @@
"OneSeason": "季1", "OneSeason": "季1",
"OriginalLanguage": "原语言", "OriginalLanguage": "原语言",
"Priority": "优先级", "Priority": "优先级",
"ProxyBadRequestHealthCheckMessage": "测试代理失败。状态代码:{0}", "ProxyBadRequestHealthCheckMessage": "测试代理失败。状态代码:{statusCode}",
"RecycleBinUnableToWriteHealthCheckMessage": "配置文件夹:{0}无法写入,检查此路径是否存在,并且是否可由{appName}写入", "RecycleBinUnableToWriteHealthCheckMessage": "配置文件夹:{path}无法写入,检查此路径是否存在,并且是否可由{appName}写入",
"QualityProfile": "质量配置", "QualityProfile": "质量配置",
"RefreshSeries": "刷新节目", "RefreshSeries": "刷新节目",
"RemotePathMappingBadDockerPathHealthCheckMessage": "您正在使用docker;下载客户端{0}下载目录为{1},但这不是有效的{2}路径。查看Docker路径映射并为下载客户端重新配置。", "RemotePathMappingBadDockerPathHealthCheckMessage": "您正在使用docker;下载客户端{downloadClientName}下载目录为{path},但这不是有效的{osName}路径。查看Docker路径映射并为下载客户端重新配置。",
"RemotePathMappingDownloadPermissionsHealthCheckMessage": "{appName}已存在剧集目录{0}但无法访问。可能是权限错误。", "RemotePathMappingDownloadPermissionsHealthCheckMessage": "{appName}已存在剧集目录{path}但无法访问。可能是权限错误。",
"Mode": "模式", "Mode": "模式",
"MoreInfo": "更多信息", "MoreInfo": "更多信息",
"New": "新的", "New": "新的",
@ -107,7 +107,7 @@
"NoLeaveIt": "不,就这样", "NoLeaveIt": "不,就这样",
"NoLogFiles": "没有日志文件", "NoLogFiles": "没有日志文件",
"Options": "选项", "Options": "选项",
"RemotePathMappingDockerFolderMissingHealthCheckMessage": "您正在使用docker;下载客户端{0}下载目录为{1},但容器中似乎不存在此目录。请检查Docker路径映射。", "RemotePathMappingDockerFolderMissingHealthCheckMessage": "您正在使用docker;下载客户端$1{downloadClientName}下载目录为{path},但容器中似乎不存在此目录。请检查Docker路径映射。",
"AirDate": "播出日期", "AirDate": "播出日期",
"Daily": "日常的", "Daily": "日常的",
"FullSeason": "全部剧集", "FullSeason": "全部剧集",
@ -115,7 +115,7 @@
"ImportLists": "导入列表", "ImportLists": "导入列表",
"ExistingTag": "已有标签", "ExistingTag": "已有标签",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "由于故障超过6小时,所有索引器均不可用", "IndexerLongTermStatusAllUnavailableHealthCheckMessage": "由于故障超过6小时,所有索引器均不可用",
"IndexerStatusUnavailableHealthCheckMessage": "搜刮器因错误不可用:{0}", "IndexerStatusUnavailableHealthCheckMessage": "搜刮器因错误不可用:{indexerNames}",
"IndexerSearchNoAvailableIndexersHealthCheckMessage": "由于最近的索引器错误,所有支持搜索的索引器暂时不可用", "IndexerSearchNoAvailableIndexersHealthCheckMessage": "由于最近的索引器错误,所有支持搜索的索引器暂时不可用",
"LogFiles": "日志文件", "LogFiles": "日志文件",
"MatchedToEpisodes": "与剧集匹配", "MatchedToEpisodes": "与剧集匹配",
@ -132,7 +132,7 @@
"Proper": "合适的", "Proper": "合适的",
"ReleaseGroup": "发布组", "ReleaseGroup": "发布组",
"ReleaseTitle": "发行版标题", "ReleaseTitle": "发行版标题",
"RemotePathMappingFileRemovedHealthCheckMessage": "文件{0} 在处理的过程中被部分删除。", "RemotePathMappingFileRemovedHealthCheckMessage": "文件{path} 在处理的过程中被部分删除。",
"AutoAdd": "自动添加", "AutoAdd": "自动添加",
"Cancel": "取消", "Cancel": "取消",
"DeleteSelectedDownloadClientsMessageText": "您确定要删除{count}选定的下载客户端吗?", "DeleteSelectedDownloadClientsMessageText": "您确定要删除{count}选定的下载客户端吗?",
@ -144,7 +144,7 @@
"LibraryImport": "媒体库导入", "LibraryImport": "媒体库导入",
"PreviousAiring": "上一次播出", "PreviousAiring": "上一次播出",
"Profiles": "配置", "Profiles": "配置",
"ProxyResolveIpHealthCheckMessage": "无法解析已设置的代理服务器主机{0}的IP地址", "ProxyResolveIpHealthCheckMessage": "无法解析已设置的代理服务器主机{proxyHostName}的IP地址",
"Quality": "媒体质量", "Quality": "媒体质量",
"Queue": "队列", "Queue": "队列",
"Real": "真的", "Real": "真的",
@ -223,7 +223,7 @@
"EnableAutomaticSearch": "启用自动搜索", "EnableAutomaticSearch": "启用自动搜索",
"EpisodeAirDate": "剧集播出日期", "EpisodeAirDate": "剧集播出日期",
"IndexerSearchNoInteractiveHealthCheckMessage": "没有启用交互式搜索的索引器,{appName}将不提供任何交互式搜索结果", "IndexerSearchNoInteractiveHealthCheckMessage": "没有启用交互式搜索的索引器,{appName}将不提供任何交互式搜索结果",
"ProxyFailedToTestHealthCheckMessage": "测试代理失败: {0}", "ProxyFailedToTestHealthCheckMessage": "测试代理失败: {url}",
"About": "关于", "About": "关于",
"Actions": "动作", "Actions": "动作",
"AppDataDirectory": "AppData目录", "AppDataDirectory": "AppData目录",
@ -274,42 +274,41 @@
"Tags": "标签", "Tags": "标签",
"Series": "节目", "Series": "节目",
"ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "如果可能,在下载完成后自动处理", "ImportMechanismEnableCompletedDownloadHandlingIfPossibleHealthCheckMessage": "如果可能,在下载完成后自动处理",
"RemotePathMappingGenericPermissionsHealthCheckMessage": "下载客户端{0}将文件下载在{1}中,但{appName}无法找到此目录。您可能需要调整文件夹的权限。", "RemotePathMappingGenericPermissionsHealthCheckMessage": "下载客户端{downloadClientName}将文件下载在{path}中,但{appName}无法找到此目录。您可能需要调整文件夹的权限。",
"RemotePathMappingLocalWrongOSPathHealthCheckMessage": "本地下载客户端{0}将文件下载在{1}中,但这不是有效的{2}路径。查看您的下载客户端设置。", "RemotePathMappingLocalWrongOSPathHealthCheckMessage": "本地下载客户端{downloadClientName}将文件下载在{path}中,但这不是有效的{osName}路径。查看您的下载客户端设置。",
"RemotePathMappingRemoteDownloadClientHealthCheckMessage": "远程下载客户端{0}报告了{1}中的文件,但此目录似乎不存在。可能缺少远程路径映射。", "RemotePathMappingRemoteDownloadClientHealthCheckMessage": "远程下载客户端{downloadClientName}报告了{path}中的文件,但此目录似乎不存在。可能缺少远程路径映射。",
"IRCLinkText": "#Libera上的{appName}", "IRCLinkText": "#Libera上的{appName}",
"LiberaWebchat": "Libera聊天", "LiberaWebchat": "Libera聊天",
"RemotePathMappingFilesBadDockerPathHealthCheckMessage": "您正在使用Docker;下载客户端{0}报告了{1}中的文件,但这不是有效的{2}中的路径。查看Docker路径映射并更新下载客户端设置。", "RemotePathMappingFilesBadDockerPathHealthCheckMessage": "您正在使用Docker;下载客户端{downloadClientName}报告了{path}中的文件,但这不是有效的{osName}中的路径。查看Docker路径映射并更新下载客户端设置。",
"RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "下载客户端{0}报告的文件在{1},但{appName}无法查看此目录。您可能需要调整文件夹的权限。", "RemotePathMappingFilesGenericPermissionsHealthCheckMessage": "下载客户端{downloadClientName}报告的文件在{path},但{appName}无法查看此目录。您可能需要调整文件夹的权限。",
"RemovedFromTaskQueue": "从任务队列中删除", "RemovedFromTaskQueue": "从任务队列中删除",
"RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "本地下载客户端{0}报告了{1}中的文件,但这不是有效的{2}路径。查看您的下载客户端设置。", "RemotePathMappingFilesLocalWrongOSPathHealthCheckMessage": "本地下载客户端{downloadClientName}报告了{path}中的文件,但这不是有效的{osName}路径。查看您的下载客户端设置。",
"RemotePathMappingFilesWrongOSPathHealthCheckMessage": "远程下载客户端{0}报告了{1}中的文件,但这不是有效的{2}路径。查看远程路径映射并更新下载客户端设置。", "RemotePathMappingFilesWrongOSPathHealthCheckMessage": "远程下载客户端{downloadClientName}报告了{path}中的文件,但这不是有效的{osName}路径。查看远程路径映射并更新下载客户端设置。",
"Restart": "重启", "Restart": "重启",
"RestartReloadNote": "注意:{appName}将在恢复过程中自动重启并重新加载UI。", "RestartReloadNote": "注意:{appName}将在恢复过程中自动重启并重新加载UI。",
"Restore": "恢复", "Restore": "恢复",
"RootFolder": "根目录", "RootFolder": "根目录",
"RemoveSelectedItems": "删除所选项目", "RemoveSelectedItems": "删除所选项目",
"RemovedSeriesSingleRemovedHealthCheckMessage": "节目{0}已从TVDB中删除", "RemovedSeriesSingleRemovedHealthCheckMessage": "节目{series}已从TVDB中删除",
"RootFolderMissingHealthCheckMessage": "缺少根目录: {0}", "RootFolderMissingHealthCheckMessage": "缺少根目录: {rootFolderPath}",
"RootFolderMultipleMissingHealthCheckMessage": "多个根目录缺失:{0}", "RootFolderMultipleMissingHealthCheckMessage": "多个根目录缺失:{rootFolderPaths}",
"SkipRedownloadHelpText": "阻止{appName}尝试下载此项目的替代版本", "SkipRedownloadHelpText": "阻止{appName}尝试下载此项目的替代版本",
"Tasks": "任务", "Tasks": "任务",
"Wanted": "想要的", "Wanted": "想要的",
"Yes": "确定", "Yes": "确定",
"UpdateUINotWritableHealthCheckMessage": "无法安装升级,因为用户“{1}”不可写入界面文件夹“{0}”。",
"AbsoluteEpisodeNumbers": "准确的集数", "AbsoluteEpisodeNumbers": "准确的集数",
"RemoveCompleted": "移除已完成", "RemoveCompleted": "移除已完成",
"RemoveFailed": "删除失败", "RemoveFailed": "删除失败",
"RemovedSeriesMultipleRemovedHealthCheckMessage": "已从TVDB中删除节目{0}", "RemovedSeriesMultipleRemovedHealthCheckMessage": "已从TVDB中删除节目{series}",
"RemotePathMappingFolderPermissionsHealthCheckMessage": "下载目录{0}已存在但{appName}无法访问。可能是权限错误。", "RemotePathMappingFolderPermissionsHealthCheckMessage": "下载目录{downloadPath}已存在但{appName}无法访问。可能是权限错误。",
"RemovingTag": "移除标签", "RemovingTag": "移除标签",
"RemotePathMappingLocalFolderMissingHealthCheckMessage": "远程下载客户端{0}将文件下载在{1}中,但此目录似乎不存在。可能缺少或不正确的远程路径映射。", "RemotePathMappingLocalFolderMissingHealthCheckMessage": "远程下载客户端{downloadClientName}将文件下载在{path}中,但此目录似乎不存在。可能缺少或不正确的远程路径映射。",
"Replace": "替换", "Replace": "替换",
"Repack": "重新打包", "Repack": "重新打包",
"Version": "版本", "Version": "版本",
"Special": "特色", "Special": "特色",
"RemotePathMappingImportFailedHealthCheckMessage": "{appName}无法导入剧集。查看日志以了解详细信息。", "RemotePathMappingImportFailedHealthCheckMessage": "{appName}无法导入剧集。查看日志以了解详细信息。",
"RemotePathMappingWrongOSPathHealthCheckMessage": "远程下载客户端{0}将文件下载在{1}中,但这不是有效的{2}路径。查看远程路径映射并更新下载客户端设置。", "RemotePathMappingWrongOSPathHealthCheckMessage": "远程下载客户端{downloadClientName}将文件下载在{path}中,但这不是有效的{osName}路径。查看远程路径映射并更新下载客户端设置。",
"RemoveFromDownloadClientHelpTextWarning": "删除将从下载客户端删除下载和文件。", "RemoveFromDownloadClientHelpTextWarning": "删除将从下载客户端删除下载和文件。",
"Renamed": "已重命名", "Renamed": "已重命名",
"RootFolderPath": "根目录路径", "RootFolderPath": "根目录路径",
@ -325,7 +324,7 @@
"Title": "标题", "Title": "标题",
"Type": "类型", "Type": "类型",
"UnmonitoredOnly": "监控中", "UnmonitoredOnly": "监控中",
"UpdateStartupTranslocationHealthCheckMessage": "无法安装更新,因为启动文件夹“{0}”在一个应用程序迁移文件夹。", "UpdateStartupTranslocationHealthCheckMessage": "无法安装更新,因为启动文件夹“{startupFolder}”在一个应用程序迁移文件夹。",
"Updates": "更新", "Updates": "更新",
"VideoCodec": "视频编码", "VideoCodec": "视频编码",
"VideoDynamicRange": "视频动态范围", "VideoDynamicRange": "视频动态范围",
@ -334,7 +333,7 @@
"SeasonCount": "季数量", "SeasonCount": "季数量",
"SystemTimeHealthCheckMessage": "系统时间相差超过1天。在纠正时间之前,计划的任务可能无法正确运行", "SystemTimeHealthCheckMessage": "系统时间相差超过1天。在纠正时间之前,计划的任务可能无法正确运行",
"TestAll": "测试全部", "TestAll": "测试全部",
"UpdateStartupNotWritableHealthCheckMessage": "无法安装更新,因为用户“{1}”对于启动文件夹“{0}”没有写入权限。", "UpdateStartupNotWritableHealthCheckMessage": "无法安装更新,因为用户“{userName}”对于启动文件夹“{startupFolder}”没有写入权限。",
"SeriesTitle": "节目标题", "SeriesTitle": "节目标题",
"SetTags": "设置标签", "SetTags": "设置标签",
"Size": "大小", "Size": "大小",
@ -841,7 +840,7 @@
"SourceRelativePath": "源相对路径", "SourceRelativePath": "源相对路径",
"MetadataSourceSettingsSummary": "{appName}从哪里获得剧集和集信息的总结", "MetadataSourceSettingsSummary": "{appName}从哪里获得剧集和集信息的总结",
"SslCertPassword": "SSL证书密码", "SslCertPassword": "SSL证书密码",
"UpdateUiNotWritableHealthCheckMessage": "无法安装更新,因为用户“{1}”无法写入 UI 文件夹“{0}”。", "UpdateUiNotWritableHealthCheckMessage": "无法安装更新,因为用户“{userName}”无法写入 UI 文件夹“{uiFolder}”。",
"MinimumCustomFormatScoreHelpText": "允许下载的最小自定义格式分数", "MinimumCustomFormatScoreHelpText": "允许下载的最小自定义格式分数",
"SslCertPasswordHelpText": "pfx文件密码", "SslCertPasswordHelpText": "pfx文件密码",
"UpgradeUntilCustomFormatScore": "升级直到自定义格式分数满足", "UpgradeUntilCustomFormatScore": "升级直到自定义格式分数满足",
@ -942,7 +941,7 @@
"HourShorthand": "时", "HourShorthand": "时",
"ImportedTo": "导入到", "ImportedTo": "导入到",
"Importing": "导入中", "Importing": "导入中",
"IndexerDownloadClientHealthCheckMessage": "有无效下载客户端的索引器:{0}。", "IndexerDownloadClientHealthCheckMessage": "有无效下载客户端的索引器:{indexerNames}。",
"IndexersSettingsSummary": "索引器和索引器选项", "IndexersSettingsSummary": "索引器和索引器选项",
"InteractiveImport": "手动导入", "InteractiveImport": "手动导入",
"InstanceNameHelpText": "选项卡及日志应用名称", "InstanceNameHelpText": "选项卡及日志应用名称",
@ -1311,7 +1310,7 @@
"MyComputer": "我的电脑", "MyComputer": "我的电脑",
"NamingSettings": "命名设置", "NamingSettings": "命名设置",
"NoEpisodeOverview": "没有集摘要", "NoEpisodeOverview": "没有集摘要",
"NotificationStatusSingleClientHealthCheckMessage": "由于失败导致通知不可用:{0}", "NotificationStatusSingleClientHealthCheckMessage": "由于失败导致通知不可用:{notificationNames}",
"NotificationTriggers": "通知触发器", "NotificationTriggers": "通知触发器",
"NotificationsLoadError": "无法加载通知连接", "NotificationsLoadError": "无法加载通知连接",
"OnApplicationUpdate": "程序更新时", "OnApplicationUpdate": "程序更新时",
@ -1484,5 +1483,5 @@
"Files": "文件", "Files": "文件",
"SeriesDetailsOneEpisodeFile": "1个集文件", "SeriesDetailsOneEpisodeFile": "1个集文件",
"UrlBase": "基本URL", "UrlBase": "基本URL",
"DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "下载客户端{0}设置为删除已完成的下载。这可能导致在{1}可以导入下载之前从您的客户端删除下载。" "DownloadClientRemovesCompletedDownloadsHealthCheckMessage": "下载客户端{downloadClientName}设置为删除已完成的下载。这可能导致在{appName}可以导入下载之前从您的客户端删除下载。"
} }

View File

@ -1,6 +1,6 @@
{ {
"BlocklistRelease": "封鎖清單版本", "BlocklistRelease": "封鎖清單版本",
"BlocklistReleases": "封鎖清單版本", "BlocklistReleases": "封鎖清單版本",
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{0}個字元長。您可以通過設定或配置文件進行此操作。", "ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{length}個字元長。您可以通過設定或配置文件進行此操作。",
"AppDataLocationHealthCheckMessage": "為了避免在更新過程中刪除AppData,將無法進行更新。" "AppDataLocationHealthCheckMessage": "為了避免在更新過程中刪除AppData,將無法進行更新。"
} }

View File

@ -2,6 +2,7 @@
using System.Collections.Generic; using System.Collections.Generic;
using System.IO; using System.IO;
using System.Text.Json; using System.Text.Json;
using System.Text.RegularExpressions;
using System.Threading.Tasks; using System.Threading.Tasks;
using NLog; using NLog;
using NzbDrone.Common.Cache; using NzbDrone.Common.Cache;
@ -18,14 +19,17 @@ namespace NzbDrone.Core.Localization
public interface ILocalizationService public interface ILocalizationService
{ {
Dictionary<string, string> GetLocalizationDictionary(); Dictionary<string, string> GetLocalizationDictionary();
string GetLocalizedString(string phrase); string GetLocalizedString(string phrase);
string GetLocalizedString(string phrase, string language); string GetLocalizedString(string phrase, Dictionary<string, object> tokens);
string GetLanguageIdentifier(); string GetLanguageIdentifier();
} }
public class LocalizationService : ILocalizationService, IHandleAsync<ConfigSavedEvent> public class LocalizationService : ILocalizationService, IHandleAsync<ConfigSavedEvent>
{ {
private const string DefaultCulture = "en"; private const string DefaultCulture = "en";
private static readonly Regex TokenRegex = new Regex(@"(?:\{)(?<token>[a-z0-9]+)(?:\})",
RegexOptions.Compiled | RegexOptions.IgnoreCase | RegexOptions.CultureInvariant);
private readonly ICached<Dictionary<string, string>> _cache; private readonly ICached<Dictionary<string, string>> _cache;
@ -53,23 +57,18 @@ public Dictionary<string, string> GetLocalizationDictionary()
public string GetLocalizedString(string phrase) public string GetLocalizedString(string phrase)
{ {
var language = GetLanguageFileName(); return GetLocalizedString(phrase, new Dictionary<string, object>());
return GetLocalizedString(phrase, language);
} }
public string GetLocalizedString(string phrase, string language) public string GetLocalizedString(string phrase, Dictionary<string, object> tokens)
{ {
var language = GetLanguageFileName();
if (string.IsNullOrEmpty(phrase)) if (string.IsNullOrEmpty(phrase))
{ {
throw new ArgumentNullException(nameof(phrase)); throw new ArgumentNullException(nameof(phrase));
} }
if (language.IsNullOrWhiteSpace())
{
language = GetLanguageFileName();
}
if (language == null) if (language == null)
{ {
language = DefaultCulture; language = DefaultCulture;
@ -79,7 +78,7 @@ public string GetLocalizedString(string phrase, string language)
if (dictionary.TryGetValue(phrase, out var value)) if (dictionary.TryGetValue(phrase, out var value))
{ {
return value; return ReplaceTokens(value, tokens);
} }
return phrase; return phrase;
@ -98,6 +97,20 @@ public string GetLanguageIdentifier()
return language; return language;
} }
private string ReplaceTokens(string input, Dictionary<string, object> tokens)
{
tokens.TryAdd("appName", "Sonarr");
return TokenRegex.Replace(input, (match) =>
{
var tokenName = match.Groups["token"].Value;
tokens.TryGetValue(tokenName, out var token);
return token?.ToString() ?? $"{{{tokenName}}}";
});
}
private string GetLanguageFileName() private string GetLanguageFileName()
{ {
return GetLanguageIdentifier().Replace("-", "_").ToLowerInvariant(); return GetLanguageIdentifier().Replace("-", "_").ToLowerInvariant();