Compare commits

...

43 Commits

Author SHA1 Message Date
Weblate
5fee2c4cd9 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Altair <villagermd@outlook.com>
Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Fonkio <maxime.fabre10@gmail.com>
Co-authored-by: GkhnGRBZ <gkhn.gurbuz@hotmail.com>
Co-authored-by: Havok Dan <havokdan@yahoo.com.br>
Co-authored-by: Mailme Dashite <mailmedashite@protonmail.com>
Co-authored-by: Weblate <noreply@weblate.org>
Co-authored-by: fordas <fordas15@gmail.com>
Co-authored-by: toeiazarothis <patrickdealmeida89000@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/de/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/es/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fr/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt_BR/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/tr/
Translation: Servarr/Prowlarr
2024-04-20 08:18:02 +03:00
uwuceo
21d553cf1b Update description for MyAnonamouse's Freeleech setting (#2103) 2024-04-16 13:14:08 +03:00
Josh McKinney
782b2d3761 Add dev container workspace
Allows the linting and style settings for the frontend to be applied even when you load the main repo as a workspace

(cherry picked from commit d6278fced49b26be975c3a6039b38a94f700864b)
2024-04-16 12:59:13 +03:00
Servarr
e1da3eee80 Automated API Docs update 2024-04-16 10:34:38 +03:00
Bogdan
09af2da6b9 Fixed: Re-testing edited providers will forcibly test them 2024-04-16 09:17:14 +03:00
Bogdan
e3e9094d42 Bump version to 1.16.2 2024-04-14 08:37:49 +03:00
Bogdan
94634234ff Update categories for M-Team TP 2024-04-13 23:33:30 +03:00
Bogdan
a48d6029d9 Show releases with issues in the interactive search 2024-04-13 09:48:33 +03:00
Bogdan
9cc150b105 Fix AB tests 2024-04-13 09:14:43 +03:00
Bogdan
6a97d99876 Fixed: (AnimeBytes) Enable Use Filenames for Single Episodes by default 2024-04-13 07:52:33 +03:00
Josh McKinney
c957168040 Add DevContainer, VSCode config and extensions.json
(cherry picked from commit 5061dc4b5e5ea9925740496a5939a1762788b793)
2024-04-10 23:51:13 +03:00
Mark McDowall
61bc35b3fa New: Option to prefix app name on Telegram notification titles
(cherry picked from commit 37863a8deb339ef730b2dd5be61e1da1311fdd23)
2024-04-10 23:46:09 +03:00
Weblate
a84210c452 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Michael5564445 <michaelvelosk@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/uk/
Translation: Servarr/Prowlarr
2024-04-09 22:56:41 +03:00
Bogdan
8af6ea1d8f New: Retry on failed indexer requests 2024-04-09 22:05:11 +03:00
Bogdan
1a894ac583 Fixed: Matching at least 2 terms in the filter releases by query 2024-04-09 18:07:55 +03:00
bakerboy448
4f6e05414c Drop beta (Preview) from login meta description (#2097) 2024-04-09 17:30:26 +03:00
Bogdan
5096a088d4 Fixed: (IPTorrents) Improve category selector 2024-04-09 04:49:27 +03:00
Bogdan
6581bddba3 Detect shfs mounts 2024-04-08 22:27:42 +03:00
Bogdan
292af28d42 Bump version to 1.16.1 2024-04-07 07:59:28 +03:00
Bogdan
37a6d03d52 Fixed: (XSpeeds) Update categories
Co-authored-by: Garfield69 <garfield69@outlook.com>
2024-04-07 01:37:26 +03:00
Bogdan
fe35d450f0 Use info urls as guid and add remaster name to title for SecretCinema 2024-04-06 21:36:58 +03:00
Mark McDowall
6a9e27bc06 Fixed: Sending ntfy.sh notifications with unicode characters
(cherry picked from commit a169ebff2adda5c8585c6aae6249b1c1f7c12264)
2024-04-06 16:49:03 +03:00
Bogdan
a989bf82ea Fixed: (Gazelle) Ignore ineligible releases with Use Freeleech Token 2024-04-06 00:51:34 +03:00
Mark McDowall
ccc8d8002f Fixed: Testing SABnzbd when no categories are configured
(cherry picked from commit 0e31281828c737e3f6eecbb870960194888a970a)
2024-04-05 19:42:19 +03:00
Bogdan
eaaf8db486 Update timezone for ExoticaZ 2024-04-04 00:51:22 +03:00
Bogdan
c32fa7a84b Update timezone for FL & AvistaZ 2024-04-04 00:47:03 +03:00
Weblate
57e21a78ee Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Anonymous <noreply@weblate.org>
Co-authored-by: Fixer <ygj59783@zslsz.com>
Co-authored-by: Weblate <noreply@weblate.org>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ar/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/bg/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ca/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/cs/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/da/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/el/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/hi/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/hu/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/is/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/it/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ja/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ko/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/pt/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ro/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/ru/
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/th/
Translation: Servarr/Prowlarr
2024-04-02 17:34:07 +03:00
Bogdan
9cdf5d18d8 Fixed: Categories for Newznab/Torznab in add indexer 2024-04-02 16:01:41 +03:00
Bogdan
41b0a1211b Fixed: Migrate categories to capabilities in Newznab/Torznab settings 2024-04-02 13:07:11 +03:00
Bogdan
1b8f09f2ce Fixed: Improve capabilities fetching for applications sync 2024-04-01 17:55:26 +03:00
Bogdan
2f85de6b69 Add capabilities to Newznab & Torznab tests 2024-04-01 04:37:13 +03:00
Bogdan
b2ef9d5b0a Fixed: Filter invalid releases without categories or size 2024-04-01 03:54:02 +03:00
Bogdan
c80262d75b Translation fixes for health checks 2024-04-01 02:43:31 +03:00
Weblate
2a312d93ec Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: Jason54 <jason54700.jg@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/fr/
Translation: Servarr/Prowlarr
2024-04-01 02:26:50 +03:00
Weblate
e09df2fff3 Multiple Translations updated by Weblate
ignore-downstream

Co-authored-by: fordas <fordas15@gmail.com>
Translate-URL: https://translate.servarr.com/projects/servarr/prowlarr/es/
Translation: Servarr/Prowlarr
2024-04-01 02:22:47 +03:00
Mark McDowall
f0c7d13b20 Translations for health checks
Use named tokens for backend translations

(cherry picked from commit 11f96c31048c2d1aafca0c91736d439f7f9a95a8)
2024-04-01 02:18:17 +03:00
Bogdan
4dac60bef9 Fixed: Displaying capabilities for Newznab and Torznab feeds (#2083) 2024-04-01 00:49:31 +03:00
Bogdan
5aefb46790 Fixed: Check VIP expiration only for enabled indexers
Check on ProviderBulkUpdatedEvent as well

Fixes #2082
2024-03-31 15:11:15 +03:00
Bogdan
41b043e551 Fixed: (Cardigann) Log invalid category values 2024-03-30 16:48:02 +02:00
Bogdan
5447fad1fc Fixed: (Cardigann) Deprecate noappend for category and categorydesc 2024-03-30 16:46:30 +02:00
Bogdan
6a1e01abbd Disable Shizaproject due to being unusable 2024-03-29 02:54:56 +02:00
Bogdan
2803ad5ba0 Update name for RuTracker.org
Co-authored-by: ilike2burnthing <59480337+ilike2burnthing@users.noreply.github.com>
2024-03-29 01:43:52 +02:00
Bogdan
8fa8a13036 Bump version to 1.16.0 2024-03-28 03:41:53 +02:00
103 changed files with 1916 additions and 789 deletions

View File

@@ -0,0 +1,13 @@
// This file is used to open the backend and frontend in the same workspace, which is necessary as
// the frontend has vscode settings that are distinct from the backend
{
"folders": [
{
"path": ".."
},
{
"path": "../frontend"
}
],
"settings": {}
}

View File

@@ -0,0 +1,19 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/dotnet
{
"name": "Prowlarr",
"image": "mcr.microsoft.com/devcontainers/dotnet:1-6.0",
"features": {
"ghcr.io/devcontainers/features/node:1": {
"nodeGypDependencies": true,
"version": "16",
"nvmVersion": "latest"
}
},
"forwardPorts": [9696],
"customizations": {
"vscode": {
"extensions": ["esbenp.prettier-vscode"]
}
}
}

12
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,12 @@
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for more information:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
# https://containers.dev/guide/dependabot
version: 2
updates:
- package-ecosystem: "devcontainers"
directory: "/"
schedule:
interval: weekly

1
.gitignore vendored
View File

@@ -127,6 +127,7 @@ coverage*.xml
coverage*.json
setup/Output/
*.~is
.mono
# VS outout folders
bin

7
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,7 @@
{
"recommendations": [
"esbenp.prettier-vscode",
"ms-dotnettools.csdevkit",
"ms-vscode-remote.remote-containers"
]
}

26
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,26 @@
{
"version": "0.2.0",
"configurations": [
{
// Use IntelliSense to find out which attributes exist for C# debugging
// Use hover for the description of the existing attributes
// For further information visit https://github.com/dotnet/vscode-csharp/blob/main/debugger-launchjson.md
"name": "Run Prowlarr",
"type": "coreclr",
"request": "launch",
"preLaunchTask": "build dotnet",
// If you have changed target frameworks, make sure to update the program path.
"program": "${workspaceFolder}/_output/net6.0/Prowlarr",
"args": [],
"cwd": "${workspaceFolder}",
// For more information about the 'console' field, see https://aka.ms/VSCode-CS-LaunchJson-Console
"console": "integratedTerminal",
"stopAtEntry": false
},
{
"name": ".NET Core Attach",
"type": "coreclr",
"request": "attach"
}
]
}

44
.vscode/tasks.json vendored Normal file
View File

@@ -0,0 +1,44 @@
{
"version": "2.0.0",
"tasks": [
{
"label": "build dotnet",
"command": "dotnet",
"type": "process",
"args": [
"msbuild",
"-restore",
"${workspaceFolder}/src/Prowlarr.sln",
"-p:GenerateFullPaths=true",
"-p:Configuration=Debug",
"-p:Platform=Posix",
"-consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "publish",
"command": "dotnet",
"type": "process",
"args": [
"publish",
"${workspaceFolder}/src/Prowlarr.sln",
"-property:GenerateFullPaths=true",
"-consoleloggerparameters:NoSummary;ForceNoAlign"
],
"problemMatcher": "$msCompile"
},
{
"label": "watch",
"command": "dotnet",
"type": "process",
"args": [
"watch",
"run",
"--project",
"${workspaceFolder}/src/Prowlarr.sln"
],
"problemMatcher": "$msCompile"
}
]
}

View File

@@ -9,7 +9,7 @@ variables:
testsFolder: './_tests'
yarnCacheFolder: $(Pipeline.Workspace)/.yarn
nugetCacheFolder: $(Pipeline.Workspace)/.nuget/packages
majorVersion: '1.15.0'
majorVersion: '1.16.2'
minorVersion: $[counter('minorVersion', 1)]
prowlarrVersion: '$(majorVersion).$(minorVersion)'
buildName: '$(Build.SourceBranchName).$(prowlarrVersion)'

View File

@@ -1,8 +1,11 @@
import $ from 'jquery';
import _ from 'lodash';
import createAjaxRequest from 'Utilities/createAjaxRequest';
import getProviderState from 'Utilities/State/getProviderState';
import { set } from '../baseActions';
const abortCurrentRequests = {};
let lastTestData = null;
export function createCancelTestProviderHandler(section) {
return function(getState, payload, dispatch) {
@@ -17,10 +20,25 @@ function createTestProviderHandler(section, url) {
return function(getState, payload, dispatch) {
dispatch(set({ section, isTesting: true }));
const testData = getProviderState(payload, getState, section);
const {
queryParams = {},
...otherPayload
} = payload;
const testData = getProviderState({ ...otherPayload }, getState, section);
const params = { ...queryParams };
// If the user is re-testing the same provider without changes
// force it to be tested.
if (_.isEqual(testData, lastTestData)) {
params.forceTest = true;
}
lastTestData = testData;
const ajaxOptions = {
url: `${url}/test`,
url: `${url}/test?${$.param(params, true)}`,
method: 'POST',
contentType: 'application/json',
dataType: 'json',
@@ -32,6 +50,8 @@ function createTestProviderHandler(section, url) {
abortCurrentRequests[section] = abortRequest;
request.done((data) => {
lastTestData = null;
dispatch(set({
section,
isTesting: false,

View File

@@ -14,7 +14,7 @@
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="format-detection" content="telephone=no">
<meta name="description" content="Prowlarr (Preview)" />
<meta name="description" content="Prowlarr" />
<link
rel="apple-touch-icon"

View File

@@ -144,16 +144,46 @@
</Otherwise>
</Choose>
<!--
Set architecture to RuntimeInformation.ProcessArchitecture if not specified -->
<Choose>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'X64'">
<PropertyGroup>
<Architecture>x64</Architecture>
</PropertyGroup>
</When>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'X86'">
<PropertyGroup>
<Architecture>x86</Architecture>
</PropertyGroup>
</When>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'Arm64'">
<PropertyGroup>
<Architecture>arm64</Architecture>
</PropertyGroup>
</When>
<When Condition="'$([System.Runtime.InteropServices.RuntimeInformation]::ProcessArchitecture)' == 'Arm'">
<PropertyGroup>
<Architecture>arm</Architecture>
</PropertyGroup>
</When>
<Otherwise>
<PropertyGroup>
<Architecture></Architecture>
</PropertyGroup>
</Otherwise>
</Choose>
<PropertyGroup Condition="'$(IsWindows)' == 'true' and
'$(RuntimeIdentifier)' == ''">
<_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
<RuntimeIdentifier>win-$(Architecture)</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(IsLinux)' == 'true' and
'$(RuntimeIdentifier)' == ''">
<_UsingDefaultRuntimeIdentifier>true</_UsingDefaultRuntimeIdentifier>
<RuntimeIdentifier>linux-x64</RuntimeIdentifier>
<RuntimeIdentifier>linux-$(Architecture)</RuntimeIdentifier>
</PropertyGroup>
<PropertyGroup Condition="'$(IsOSX)' == 'true' and

View File

@@ -0,0 +1,200 @@
using System;
using System.Collections.Generic;
using System.Linq;
using FluentAssertions;
using Newtonsoft.Json.Linq;
using NUnit.Framework;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Datastore.Migration;
using NzbDrone.Core.Test.Framework;
namespace NzbDrone.Core.Test.Datastore.Migration
{
[TestFixture]
public class newznab_category_to_capabilities_settingsFixture : MigrationTest<newznab_category_to_capabilities_settings>
{
[Test]
public void should_migrate_categories_when_capabilities_is_not_defined()
{
var db = WithMigrationTestDb(c =>
{
c.Insert.IntoTable("Indexers").Row(new
{
Name = "Usenet Indexer",
Redirect = false,
AppProfileId = 0,
DownloadClientId = 0,
Priority = 25,
Added = DateTime.UtcNow,
Implementation = "Newznab",
Settings = new
{
Categories = new[]
{
new { Id = 2000, Name = "Movies" },
new { Id = 5000, Name = "TV" }
}
}.ToJson(),
ConfigContract = "NewznabSettings"
});
});
var items = db.Query<IndexerDefinition40>("SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"Indexers\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("Newznab");
items.First().ConfigContract.Should().Be("NewznabSettings");
items.First().Settings.Should().ContainKey("capabilities");
items.First().Settings.Should().NotContainKey("categories");
var newznabSettings = items.First().Settings.ToObject<NewznabSettings40>();
newznabSettings.Capabilities.Should().NotBeNull();
newznabSettings.Capabilities.SupportsRawSearch.Should().Be(false);
newznabSettings.Capabilities.Categories.Should().HaveCount(2);
newznabSettings.Capabilities.Categories.Should().Contain(c => c.Id == 2000 && c.Name == "Movies");
newznabSettings.Capabilities.Categories.Should().Contain(c => c.Id == 5000 && c.Name == "TV");
}
[Test]
public void should_migrate_categories_when_capabilities_is_defined()
{
var db = WithMigrationTestDb(c =>
{
c.Insert.IntoTable("Indexers").Row(new
{
Name = "Usenet Indexer",
Redirect = false,
AppProfileId = 0,
DownloadClientId = 0,
Priority = 25,
Added = DateTime.UtcNow,
Implementation = "Newznab",
Settings = new
{
Capabilities = new
{
SupportsRawSearch = true
},
Categories = new[]
{
new { Id = 2000, Name = "Movies" },
new { Id = 5000, Name = "TV" }
}
}.ToJson(),
ConfigContract = "NewznabSettings"
});
});
var items = db.Query<IndexerDefinition40>("SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"Indexers\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("Newznab");
items.First().ConfigContract.Should().Be("NewznabSettings");
items.First().Settings.Should().ContainKey("capabilities");
items.First().Settings.Should().NotContainKey("categories");
var newznabSettings = items.First().Settings.ToObject<NewznabSettings40>();
newznabSettings.Capabilities.Should().NotBeNull();
newznabSettings.Capabilities.SupportsRawSearch.Should().Be(true);
newznabSettings.Capabilities.Categories.Should().HaveCount(2);
newznabSettings.Capabilities.Categories.Should().Contain(c => c.Id == 2000 && c.Name == "Movies");
newznabSettings.Capabilities.Categories.Should().Contain(c => c.Id == 5000 && c.Name == "TV");
}
[Test]
public void should_use_defaults_when_categories_are_empty()
{
var db = WithMigrationTestDb(c =>
{
c.Insert.IntoTable("Indexers").Row(new
{
Name = "Usenet Indexer",
Redirect = false,
AppProfileId = 0,
DownloadClientId = 0,
Priority = 25,
Added = DateTime.UtcNow,
Implementation = "Newznab",
Settings = new
{
Categories = Array.Empty<object>()
}.ToJson(),
ConfigContract = "NewznabSettings"
});
});
var items = db.Query<IndexerDefinition40>("SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"Indexers\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("Newznab");
items.First().ConfigContract.Should().Be("NewznabSettings");
items.First().Settings.Should().ContainKey("capabilities");
items.First().Settings.Should().NotContainKey("categories");
var newznabSettings = items.First().Settings.ToObject<NewznabSettings40>();
newznabSettings.Capabilities.Should().NotBeNull();
newznabSettings.Capabilities.SupportsRawSearch.Should().Be(false);
newznabSettings.Capabilities.Categories.Should().NotBeNull();
newznabSettings.Capabilities.Categories.Should().HaveCount(0);
}
[Test]
public void should_use_defaults_when_settings_are_empty()
{
var db = WithMigrationTestDb(c =>
{
c.Insert.IntoTable("Indexers").Row(new
{
Name = "Usenet Indexer",
Redirect = false,
AppProfileId = 0,
DownloadClientId = 0,
Priority = 25,
Added = DateTime.UtcNow,
Implementation = "Newznab",
Settings = new { }.ToJson(),
ConfigContract = "NewznabSettings"
});
});
var items = db.Query<IndexerDefinition40>("SELECT \"Id\", \"Implementation\", \"ConfigContract\", \"Settings\" FROM \"Indexers\"");
items.Should().HaveCount(1);
items.First().Implementation.Should().Be("Newznab");
items.First().ConfigContract.Should().Be("NewznabSettings");
items.First().Settings.Should().NotContainKey("capabilities");
items.First().Settings.Should().NotContainKey("categories");
items.First().Settings.ToObject<NewznabSettings40>().Capabilities.Should().BeNull();
}
}
public class IndexerDefinition40
{
public int Id { get; set; }
public string Implementation { get; set; }
public string ConfigContract { get; set; }
public JObject Settings { get; set; }
}
public class NewznabSettings39
{
public object Categories { get; set; }
}
public class NewznabSettings40
{
public NewznabCapabilitiesSettings40 Capabilities { get; set; }
}
public class NewznabCapabilitiesSettings40
{
public bool SupportsRawSearch { get; set; }
public List<IndexerCategory40> Categories { get; set; }
}
public class IndexerCategory40
{
public int Id { get; set; }
public string Name { get; set; }
}
}

View File

@@ -45,10 +45,10 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
var releases = (await Subject.Fetch(new BasicSearchCriteria { SearchTerm = "test", Categories = new[] { 2000, 5000 } })).Releases;
releases.Should().HaveCount(33);
releases.Should().HaveCount(39);
releases.First().Should().BeOfType<TorrentInfo>();
var firstTorrentInfo = releases.ElementAt(2) as TorrentInfo;
var firstTorrentInfo = releases.ElementAt(3) as TorrentInfo;
firstTorrentInfo.Title.Should().Be("[SubsPlease] One Piece: The Great Gold Pirate - 1059 [Web][MKV][h264][720p][AAC 2.0][Softsubs (SubsPlease)][Episode 1059]");
firstTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
@@ -66,7 +66,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
firstTorrentInfo.Files.Should().Be(1);
firstTorrentInfo.MinimumSeedTime.Should().Be(259200);
var secondTorrentInfo = releases.ElementAt(16) as TorrentInfo;
var secondTorrentInfo = releases.ElementAt(20) as TorrentInfo;
secondTorrentInfo.Title.Should().Be("[GHOST] BLEACH S03 [Blu-ray][MKV][h265 10-bit][1080p][AC3 2.0][Dual Audio][Softsubs (GHOST)]");
secondTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
@@ -84,7 +84,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
secondTorrentInfo.Files.Should().Be(22);
secondTorrentInfo.MinimumSeedTime.Should().Be(655200);
var thirdTorrentInfo = releases.ElementAt(18) as TorrentInfo;
var thirdTorrentInfo = releases.ElementAt(23) as TorrentInfo;
thirdTorrentInfo.Title.Should().Be("[Polarwindz] Cowboy Bebop: Tengoku no Tobira 2001 [Blu-ray][MKV][h265 10-bit][1080p][Opus 5.1][Softsubs (Polarwindz)]");
thirdTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
@@ -102,7 +102,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
thirdTorrentInfo.Files.Should().Be(1);
thirdTorrentInfo.MinimumSeedTime.Should().Be(475200);
var fourthTorrentInfo = releases.ElementAt(3) as TorrentInfo;
var fourthTorrentInfo = releases.ElementAt(5) as TorrentInfo;
fourthTorrentInfo.Title.Should().Be("[SubsPlease] Dr. STONE: NEW WORLD S03E03 - 03 [Web][MKV][h264][720p][AAC 2.0][Softsubs (SubsPlease)][Episode 3]");
fourthTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
@@ -120,7 +120,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
fourthTorrentInfo.Files.Should().Be(1);
fourthTorrentInfo.MinimumSeedTime.Should().Be(259200);
var fifthTorrentInfo = releases.ElementAt(23) as TorrentInfo;
var fifthTorrentInfo = releases.ElementAt(28) as TorrentInfo;
fifthTorrentInfo.Title.Should().Be("[-ZR-] Dr. STONE: STONE WARS S02 [Web][MKV][h264][1080p][AAC 2.0][Dual Audio][Softsubs (-ZR-)]");
fifthTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
@@ -138,7 +138,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AnimeBytesTests
fifthTorrentInfo.Files.Should().Be(11);
fifthTorrentInfo.MinimumSeedTime.Should().Be(529200);
var sixthTorrentInfo = releases.ElementAt(31) as TorrentInfo;
var sixthTorrentInfo = releases.ElementAt(37) as TorrentInfo;
sixthTorrentInfo.Title.Should().Be("[HorribleSubs] Dr. STONE S01 [Web][MKV][h264][720p][AAC 2.0][Softsubs (HorribleSubs)]");
sixthTorrentInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);

View File

@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AvistazTests
torrentInfo.InfoUrl.Should().Be("https://avistaz.to/torrent/187240-japan-sinks-people-of-hope-2021-s01e05-720p-nf-web-dl-ddp20-x264-seikel");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2021-11-14 22:26:21"));
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2021-11-14 21:26:21"));
torrentInfo.Size.Should().Be(935127615);
torrentInfo.InfoHash.Should().Be("a879261d4e6e792402f92401141a21de70d51bf2");
torrentInfo.MagnetUrl.Should().Be(null);

View File

@@ -51,7 +51,7 @@ namespace NzbDrone.Core.Test.IndexerTests.AvistazTests
torrentInfo.InfoUrl.Should().Be("https://exoticaz.to/torrent/64040-ssis-419-my-first-experience-is-yua-mikami-from-the-day-i-lost-my-virginity-i-was-devoted-to-sex");
torrentInfo.CommentUrl.Should().BeNullOrEmpty();
torrentInfo.Indexer.Should().Be(Subject.Definition.Name);
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2022-06-11 10:04:50"));
torrentInfo.PublishDate.Should().Be(DateTime.Parse("2022-06-11 09:04:50"));
torrentInfo.Size.Should().Be(7085405541);
torrentInfo.InfoHash.Should().Be("asdjfiasdf54asd7f4a2sdf544asdf");
torrentInfo.MagnetUrl.Should().Be(null);

View File

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

View File

@@ -33,6 +33,10 @@ namespace NzbDrone.Core.Test.IndexerTests.NewznabTests
};
_caps = new IndexerCapabilities();
_caps.Categories.AddCategoryMapping(2000, NewznabStandardCategory.Movies, "Movies");
_caps.Categories.AddCategoryMapping(5000, NewznabStandardCategory.TV, "TV");
Mocker.GetMock<INewznabCapabilitiesProvider>()
.Setup(v => v.GetCapabilities(It.IsAny<NewznabSettings>(), It.IsAny<IndexerDefinition>()))
.Returns(_caps);

View File

@@ -37,6 +37,9 @@ namespace NzbDrone.Core.Test.IndexerTests.TorznabTests
_caps.Categories.AddCategoryMapping(2000, NewznabStandardCategory.Movies, "Movies");
_caps.Categories.AddCategoryMapping(2040, NewznabStandardCategory.MoviesHD, "Movies/HD");
_caps.Categories.AddCategoryMapping(5000, NewznabStandardCategory.TV, "TV");
_caps.Categories.AddCategoryMapping(5040, NewznabStandardCategory.TVHD, "TV/HD");
_caps.Categories.AddCategoryMapping(5070, NewznabStandardCategory.TVAnime, "TV/Anime");
Mocker.GetMock<INewznabCapabilitiesProvider>()
.Setup(v => v.GetCapabilities(It.IsAny<NewznabSettings>(), It.IsAny<IndexerDefinition>()))
@@ -83,23 +86,7 @@ namespace NzbDrone.Core.Test.IndexerTests.TorznabTests
var releases = (await Subject.Fetch(new MovieSearchCriteria())).Releases;
releases.Should().HaveCount(5);
releases.First().Should().BeOfType<TorrentInfo>();
var releaseInfo = releases.First() as TorrentInfo;
releaseInfo.Title.Should().Be("Series Title S05E02 HDTV x264-Xclusive [eztv]");
releaseInfo.DownloadProtocol.Should().Be(DownloadProtocol.Torrent);
releaseInfo.MagnetUrl.Should().Be("magnet:?xt=urn:btih:9fb267cff5ae5603f07a347676ec3bf3e35f75e1&dn=Game+of+Thrones+S05E02+HDTV+x264-Xclusive+%5Beztv%5D&tr=udp:%2F%2Fopen.demonii.com:1337&tr=udp:%2F%2Ftracker.coppersurfer.tk:6969&tr=udp:%2F%2Ftracker.leechers-paradise.org:6969&tr=udp:%2F%2Fexodus.desync.com:6969");
releaseInfo.DownloadUrl.Should().Be("magnet:?xt=urn:btih:9fb267cff5ae5603f07a347676ec3bf3e35f75e1&dn=Game+of+Thrones+S05E02+HDTV+x264-Xclusive+%5Beztv%5D&tr=udp:%2F%2Fopen.demonii.com:1337&tr=udp:%2F%2Ftracker.coppersurfer.tk:6969&tr=udp:%2F%2Ftracker.leechers-paradise.org:6969&tr=udp:%2F%2Fexodus.desync.com:6969");
releaseInfo.InfoUrl.Should().Be("https://thepiratebay.se/torrent/11811366/Series_Title_S05E02_HDTV_x264-Xclusive_%5Beztv%5D");
releaseInfo.CommentUrl.Should().Be("https://thepiratebay.se/torrent/11811366/Series_Title_S05E02_HDTV_x264-Xclusive_%5Beztv%5D");
releaseInfo.Indexer.Should().Be(Subject.Definition.Name);
releaseInfo.PublishDate.Should().Be(DateTime.Parse("Sat, 11 Apr 2015 21:34:00 -0600").ToUniversalTime());
releaseInfo.Size.Should().Be(388895872);
releaseInfo.InfoHash.Should().Be("9fb267cff5ae5603f07a347676ec3bf3e35f75e1");
releaseInfo.Seeders.Should().Be(34128);
releaseInfo.Peers.Should().Be(36724);
releases.Should().HaveCount(0);
}
[Test]

View File

@@ -15,12 +15,14 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
private readonly ILazyLibrarianV1Proxy _lazyLibrarianV1Proxy;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public LazyLibrarian(ILazyLibrarianV1Proxy lazyLibrarianV1Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public LazyLibrarian(ILazyLibrarianV1Proxy lazyLibrarianV1Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_lazyLibrarianV1Proxy = lazyLibrarianV1Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -65,7 +67,9 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -74,7 +78,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var lazyLibrarianIndexer = BuildLazyLibrarianIndexer(indexer, indexer.Protocol);
var lazyLibrarianIndexer = BuildLazyLibrarianIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _lazyLibrarianV1Proxy.AddIndexer(lazyLibrarianIndexer, Settings);
@@ -107,11 +111,12 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var indexerProps = indexerMapping.RemoteIndexerName.Split(",");
var lazyLibrarianIndexer = BuildLazyLibrarianIndexer(indexer, indexer.Protocol, indexerProps[1]);
var lazyLibrarianIndexer = BuildLazyLibrarianIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerProps[1]);
//Use the old remote id to find the indexer on LazyLibrarian incase the update was from a name change in Prowlarr
var remoteIndexer = _lazyLibrarianV1Proxy.GetIndexer(indexerProps[1], lazyLibrarianIndexer.Type, Settings);
@@ -133,7 +138,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to LazyLibrarian", indexer.Name, indexer.Id);
var newRemoteIndexer = _lazyLibrarianV1Proxy.AddIndexer(lazyLibrarianIndexer, Settings);
@@ -146,7 +151,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
}
}
private LazyLibrarianIndexer BuildLazyLibrarianIndexer(IndexerDefinition indexer, DownloadProtocol protocol, string originalName = null)
private LazyLibrarianIndexer BuildLazyLibrarianIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, string originalName = null)
{
var schema = protocol == DownloadProtocol.Usenet ? LazyLibrarianProviderType.Newznab : LazyLibrarianProviderType.Torznab;
@@ -156,7 +161,7 @@ namespace NzbDrone.Core.Applications.LazyLibrarian
Altername = $"{indexer.Name} (Prowlarr)",
Host = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/api",
Apikey = _configFileProvider.ApiKey,
Categories = string.Join(",", indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray())),
Categories = string.Join(",", indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray())),
Enabled = indexer.Enable,
Type = schema,
Priority = indexer.Priority

View File

@@ -21,13 +21,15 @@ namespace NzbDrone.Core.Applications.Lidarr
private readonly ILidarrV1Proxy _lidarrV1Proxy;
private readonly ICached<List<LidarrIndexer>> _schemaCache;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public Lidarr(ICacheManager cacheManager, ILidarrV1Proxy lidarrV1Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public Lidarr(ICacheManager cacheManager, ILidarrV1Proxy lidarrV1Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_schemaCache = cacheManager.GetCache<List<LidarrIndexer>>(GetType());
_lidarrV1Proxy = lidarrV1Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -49,7 +51,7 @@ namespace NzbDrone.Core.Applications.Lidarr
try
{
failures.AddIfNotNull(_lidarrV1Proxy.TestConnection(BuildLidarrIndexer(testIndexer, DownloadProtocol.Usenet), Settings));
failures.AddIfNotNull(_lidarrV1Proxy.TestConnection(BuildLidarrIndexer(testIndexer, testIndexer.Capabilities, DownloadProtocol.Usenet), Settings));
}
catch (HttpException ex)
{
@@ -118,7 +120,9 @@ namespace NzbDrone.Core.Applications.Lidarr
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -127,7 +131,7 @@ namespace NzbDrone.Core.Applications.Lidarr
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var lidarrIndexer = BuildLidarrIndexer(indexer, indexer.Protocol);
var lidarrIndexer = BuildLidarrIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _lidarrV1Proxy.AddIndexer(lidarrIndexer, Settings);
@@ -159,10 +163,11 @@ namespace NzbDrone.Core.Applications.Lidarr
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var lidarrIndexer = BuildLidarrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var lidarrIndexer = BuildLidarrIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var remoteIndexer = _lidarrV1Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
@@ -174,7 +179,7 @@ namespace NzbDrone.Core.Applications.Lidarr
{
_logger.Debug("Syncing remote indexer with current settings");
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
// Retain user fields not-affiliated with Prowlarr
lidarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => lidarrIndexer.Fields.All(s => s.Name != f.Name)));
@@ -200,7 +205,7 @@ namespace NzbDrone.Core.Applications.Lidarr
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Lidarr", indexer.Name, indexer.Id);
lidarrIndexer.Id = 0;
@@ -214,7 +219,7 @@ namespace NzbDrone.Core.Applications.Lidarr
}
}
private LidarrIndexer BuildLidarrIndexer(IndexerDefinition indexer, DownloadProtocol protocol, int id = 0)
private LidarrIndexer BuildLidarrIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, int id = 0)
{
var cacheKey = $"{Settings.BaseUrl}";
var schemas = _schemaCache.Get(cacheKey, () => _lidarrV1Proxy.GetIndexerSchema(Settings), TimeSpan.FromDays(7));
@@ -250,7 +255,7 @@ namespace NzbDrone.Core.Applications.Lidarr
lidarrIndexer.Fields.FirstOrDefault(x => x.Name == "baseUrl").Value = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/";
lidarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiPath").Value = "/api";
lidarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiKey").Value = _configFileProvider.ApiKey;
lidarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
lidarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
if (indexer.Protocol == DownloadProtocol.Torrent)
{

View File

@@ -15,12 +15,14 @@ namespace NzbDrone.Core.Applications.Mylar
private readonly IMylarV3Proxy _mylarV3Proxy;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public Mylar(IMylarV3Proxy mylarV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public Mylar(IMylarV3Proxy mylarV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_mylarV3Proxy = mylarV3Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -65,7 +67,9 @@ namespace NzbDrone.Core.Applications.Mylar
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -74,7 +78,7 @@ namespace NzbDrone.Core.Applications.Mylar
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var mylarIndexer = BuildMylarIndexer(indexer, indexer.Protocol);
var mylarIndexer = BuildMylarIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _mylarV3Proxy.AddIndexer(mylarIndexer, Settings);
@@ -107,11 +111,12 @@ namespace NzbDrone.Core.Applications.Mylar
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var indexerProps = indexerMapping.RemoteIndexerName.Split(",");
var mylarIndexer = BuildMylarIndexer(indexer, indexer.Protocol, indexerProps[1]);
var mylarIndexer = BuildMylarIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerProps[1]);
//Use the old remote id to find the indexer on Mylar incase the update was from a name change in Prowlarr
var remoteIndexer = _mylarV3Proxy.GetIndexer(indexerProps[1], mylarIndexer.Type, Settings);
@@ -133,7 +138,7 @@ namespace NzbDrone.Core.Applications.Mylar
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Mylar", indexer.Name, indexer.Id);
var newRemoteIndexer = _mylarV3Proxy.AddIndexer(mylarIndexer, Settings);
@@ -146,7 +151,7 @@ namespace NzbDrone.Core.Applications.Mylar
}
}
private MylarIndexer BuildMylarIndexer(IndexerDefinition indexer, DownloadProtocol protocol, string originalName = null)
private MylarIndexer BuildMylarIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, string originalName = null)
{
var schema = protocol == DownloadProtocol.Usenet ? MylarProviderType.Newznab : MylarProviderType.Torznab;
@@ -156,7 +161,7 @@ namespace NzbDrone.Core.Applications.Mylar
Altername = $"{indexer.Name} (Prowlarr)",
Host = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/api",
Apikey = _configFileProvider.ApiKey,
Categories = string.Join(",", indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray())),
Categories = string.Join(",", indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray())),
Enabled = indexer.Enable,
Type = schema,
};

View File

@@ -21,13 +21,15 @@ namespace NzbDrone.Core.Applications.Radarr
private readonly IRadarrV3Proxy _radarrV3Proxy;
private readonly ICached<List<RadarrIndexer>> _schemaCache;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public Radarr(ICacheManager cacheManager, IRadarrV3Proxy radarrV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public Radarr(ICacheManager cacheManager, IRadarrV3Proxy radarrV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_schemaCache = cacheManager.GetCache<List<RadarrIndexer>>(GetType());
_radarrV3Proxy = radarrV3Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -49,7 +51,7 @@ namespace NzbDrone.Core.Applications.Radarr
try
{
failures.AddIfNotNull(_radarrV3Proxy.TestConnection(BuildRadarrIndexer(testIndexer, DownloadProtocol.Usenet), Settings));
failures.AddIfNotNull(_radarrV3Proxy.TestConnection(BuildRadarrIndexer(testIndexer, testIndexer.Capabilities, DownloadProtocol.Usenet), Settings));
}
catch (HttpException ex)
{
@@ -118,7 +120,9 @@ namespace NzbDrone.Core.Applications.Radarr
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -127,7 +131,7 @@ namespace NzbDrone.Core.Applications.Radarr
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var radarrIndexer = BuildRadarrIndexer(indexer, indexer.Protocol);
var radarrIndexer = BuildRadarrIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _radarrV3Proxy.AddIndexer(radarrIndexer, Settings);
@@ -159,10 +163,11 @@ namespace NzbDrone.Core.Applications.Radarr
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var radarrIndexer = BuildRadarrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var radarrIndexer = BuildRadarrIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var remoteIndexer = _radarrV3Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
@@ -172,7 +177,7 @@ namespace NzbDrone.Core.Applications.Radarr
if (!radarrIndexer.Equals(remoteIndexer) || forceSync)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
// Retain user fields not-affiliated with Prowlarr
radarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => radarrIndexer.Fields.All(s => s.Name != f.Name)));
@@ -198,7 +203,7 @@ namespace NzbDrone.Core.Applications.Radarr
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Radarr", indexer.Name, indexer.Id);
radarrIndexer.Id = 0;
@@ -212,7 +217,7 @@ namespace NzbDrone.Core.Applications.Radarr
}
}
private RadarrIndexer BuildRadarrIndexer(IndexerDefinition indexer, DownloadProtocol protocol, int id = 0)
private RadarrIndexer BuildRadarrIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, int id = 0)
{
var cacheKey = $"{Settings.BaseUrl}";
var schemas = _schemaCache.Get(cacheKey, () => _radarrV3Proxy.GetIndexerSchema(Settings), TimeSpan.FromDays(7));
@@ -248,7 +253,7 @@ namespace NzbDrone.Core.Applications.Radarr
radarrIndexer.Fields.FirstOrDefault(x => x.Name == "baseUrl").Value = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/";
radarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiPath").Value = "/api";
radarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiKey").Value = _configFileProvider.ApiKey;
radarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
radarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
if (indexer.Protocol == DownloadProtocol.Torrent)
{

View File

@@ -21,13 +21,15 @@ namespace NzbDrone.Core.Applications.Readarr
private readonly ICached<List<ReadarrIndexer>> _schemaCache;
private readonly IReadarrV1Proxy _readarrV1Proxy;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public Readarr(ICacheManager cacheManager, IReadarrV1Proxy readarrV1Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public Readarr(ICacheManager cacheManager, IReadarrV1Proxy readarrV1Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_schemaCache = cacheManager.GetCache<List<ReadarrIndexer>>(GetType());
_readarrV1Proxy = readarrV1Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -49,7 +51,7 @@ namespace NzbDrone.Core.Applications.Readarr
try
{
failures.AddIfNotNull(_readarrV1Proxy.TestConnection(BuildReadarrIndexer(testIndexer, DownloadProtocol.Usenet), Settings));
failures.AddIfNotNull(_readarrV1Proxy.TestConnection(BuildReadarrIndexer(testIndexer, testIndexer.Capabilities, DownloadProtocol.Usenet), Settings));
}
catch (HttpException ex)
{
@@ -118,7 +120,9 @@ namespace NzbDrone.Core.Applications.Readarr
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -127,7 +131,7 @@ namespace NzbDrone.Core.Applications.Readarr
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var readarrIndexer = BuildReadarrIndexer(indexer, indexer.Protocol);
var readarrIndexer = BuildReadarrIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _readarrV1Proxy.AddIndexer(readarrIndexer, Settings);
@@ -159,10 +163,11 @@ namespace NzbDrone.Core.Applications.Readarr
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var readarrIndexer = BuildReadarrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var readarrIndexer = BuildReadarrIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var remoteIndexer = _readarrV1Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
@@ -174,7 +179,7 @@ namespace NzbDrone.Core.Applications.Readarr
{
_logger.Debug("Syncing remote indexer with current settings");
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
// Retain user fields not-affiliated with Prowlarr
readarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => readarrIndexer.Fields.All(s => s.Name != f.Name)));
@@ -200,7 +205,7 @@ namespace NzbDrone.Core.Applications.Readarr
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Readarr", indexer.Name, indexer.Id);
readarrIndexer.Id = 0;
@@ -214,7 +219,7 @@ namespace NzbDrone.Core.Applications.Readarr
}
}
private ReadarrIndexer BuildReadarrIndexer(IndexerDefinition indexer, DownloadProtocol protocol, int id = 0)
private ReadarrIndexer BuildReadarrIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, int id = 0)
{
var cacheKey = $"{Settings.BaseUrl}";
var schemas = _schemaCache.Get(cacheKey, () => _readarrV1Proxy.GetIndexerSchema(Settings), TimeSpan.FromDays(7));
@@ -244,7 +249,7 @@ namespace NzbDrone.Core.Applications.Readarr
readarrIndexer.Fields.FirstOrDefault(x => x.Name == "baseUrl").Value = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/";
readarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiPath").Value = "/api";
readarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiKey").Value = _configFileProvider.ApiKey;
readarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
readarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
if (indexer.Protocol == DownloadProtocol.Torrent)
{

View File

@@ -21,13 +21,15 @@ namespace NzbDrone.Core.Applications.Sonarr
private readonly ICached<List<SonarrIndexer>> _schemaCache;
private readonly ISonarrV3Proxy _sonarrV3Proxy;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public Sonarr(ICacheManager cacheManager, ISonarrV3Proxy sonarrV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public Sonarr(ICacheManager cacheManager, ISonarrV3Proxy sonarrV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_schemaCache = cacheManager.GetCache<List<SonarrIndexer>>(GetType());
_sonarrV3Proxy = sonarrV3Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -49,7 +51,7 @@ namespace NzbDrone.Core.Applications.Sonarr
try
{
failures.AddIfNotNull(_sonarrV3Proxy.TestConnection(BuildSonarrIndexer(testIndexer, DownloadProtocol.Usenet), Settings));
failures.AddIfNotNull(_sonarrV3Proxy.TestConnection(BuildSonarrIndexer(testIndexer, testIndexer.Capabilities, DownloadProtocol.Usenet), Settings));
}
catch (HttpException ex)
{
@@ -122,8 +124,10 @@ namespace NzbDrone.Core.Applications.Sonarr
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty() &&
indexer.Capabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty() &&
indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -132,7 +136,7 @@ namespace NzbDrone.Core.Applications.Sonarr
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var sonarrIndexer = BuildSonarrIndexer(indexer, indexer.Protocol);
var sonarrIndexer = BuildSonarrIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _sonarrV3Proxy.AddIndexer(sonarrIndexer, Settings);
@@ -164,10 +168,11 @@ namespace NzbDrone.Core.Applications.Sonarr
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var sonarrIndexer = BuildSonarrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var sonarrIndexer = BuildSonarrIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var remoteIndexer = _sonarrV3Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
@@ -179,7 +184,7 @@ namespace NzbDrone.Core.Applications.Sonarr
{
_logger.Debug("Syncing remote indexer with current settings");
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexer.Capabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
{
// Retain user fields not-affiliated with Prowlarr
sonarrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => sonarrIndexer.Fields.All(s => s.Name != f.Name)));
@@ -206,7 +211,7 @@ namespace NzbDrone.Core.Applications.Sonarr
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexer.Capabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any() || indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Sonarr", indexer.Name, indexer.Id);
sonarrIndexer.Id = 0;
@@ -220,7 +225,7 @@ namespace NzbDrone.Core.Applications.Sonarr
}
}
private SonarrIndexer BuildSonarrIndexer(IndexerDefinition indexer, DownloadProtocol protocol, int id = 0)
private SonarrIndexer BuildSonarrIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, int id = 0)
{
var cacheKey = $"{Settings.BaseUrl}";
var schemas = _schemaCache.Get(cacheKey, () => _sonarrV3Proxy.GetIndexerSchema(Settings), TimeSpan.FromDays(7));
@@ -256,8 +261,8 @@ namespace NzbDrone.Core.Applications.Sonarr
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "baseUrl").Value = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/";
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiPath").Value = "/api";
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "apiKey").Value = _configFileProvider.ApiKey;
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "animeCategories").Value = JArray.FromObject(indexer.Capabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()));
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
sonarrIndexer.Fields.FirstOrDefault(x => x.Name == "animeCategories").Value = JArray.FromObject(indexerCapabilities.Categories.SupportedCategories(Settings.AnimeSyncCategories.ToArray()));
if (sonarrIndexer.Fields.Any(x => x.Name == "animeStandardFormatSearch"))
{

View File

@@ -21,13 +21,15 @@ namespace NzbDrone.Core.Applications.Whisparr
private readonly IWhisparrV3Proxy _whisparrV3Proxy;
private readonly ICached<List<WhisparrIndexer>> _schemaCache;
private readonly IConfigFileProvider _configFileProvider;
private readonly IIndexerFactory _indexerFactory;
public Whisparr(ICacheManager cacheManager, IWhisparrV3Proxy whisparrV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, Logger logger)
public Whisparr(ICacheManager cacheManager, IWhisparrV3Proxy whisparrV3Proxy, IConfigFileProvider configFileProvider, IAppIndexerMapService appIndexerMapService, IIndexerFactory indexerFactory, Logger logger)
: base(appIndexerMapService, logger)
{
_schemaCache = cacheManager.GetCache<List<WhisparrIndexer>>(GetType());
_whisparrV3Proxy = whisparrV3Proxy;
_configFileProvider = configFileProvider;
_indexerFactory = indexerFactory;
}
public override ValidationResult Test()
@@ -49,7 +51,7 @@ namespace NzbDrone.Core.Applications.Whisparr
try
{
failures.AddIfNotNull(_whisparrV3Proxy.TestConnection(BuildWhisparrIndexer(testIndexer, DownloadProtocol.Usenet), Settings));
failures.AddIfNotNull(_whisparrV3Proxy.TestConnection(BuildWhisparrIndexer(testIndexer, testIndexer.Capabilities, DownloadProtocol.Usenet), Settings));
}
catch (HttpException ex)
{
@@ -118,7 +120,9 @@ namespace NzbDrone.Core.Applications.Whisparr
public override void AddIndexer(IndexerDefinition indexer)
{
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Empty())
{
_logger.Trace("Skipping add for indexer {0} [{1}] due to no app Sync Categories supported by the indexer", indexer.Name, indexer.Id);
@@ -127,7 +131,7 @@ namespace NzbDrone.Core.Applications.Whisparr
_logger.Trace("Adding indexer {0} [{1}]", indexer.Name, indexer.Id);
var whisparrIndexer = BuildWhisparrIndexer(indexer, indexer.Protocol);
var whisparrIndexer = BuildWhisparrIndexer(indexer, indexerCapabilities, indexer.Protocol);
var remoteIndexer = _whisparrV3Proxy.AddIndexer(whisparrIndexer, Settings);
@@ -159,10 +163,11 @@ namespace NzbDrone.Core.Applications.Whisparr
{
_logger.Debug("Updating indexer {0} [{1}]", indexer.Name, indexer.Id);
var indexerCapabilities = _indexerFactory.GetInstance(indexer).GetCapabilities();
var appMappings = _appIndexerMapService.GetMappingsForApp(Definition.Id);
var indexerMapping = appMappings.FirstOrDefault(m => m.IndexerId == indexer.Id);
var whisparrIndexer = BuildWhisparrIndexer(indexer, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var whisparrIndexer = BuildWhisparrIndexer(indexer, indexerCapabilities, indexer.Protocol, indexerMapping?.RemoteIndexerId ?? 0);
var remoteIndexer = _whisparrV3Proxy.GetIndexer(indexerMapping.RemoteIndexerId, Settings);
@@ -174,7 +179,7 @@ namespace NzbDrone.Core.Applications.Whisparr
{
_logger.Debug("Syncing remote indexer with current settings");
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
// Retain user fields not-affiliated with Prowlarr
whisparrIndexer.Fields.AddRange(remoteIndexer.Fields.Where(f => whisparrIndexer.Fields.All(s => s.Name != f.Name)));
@@ -200,7 +205,7 @@ namespace NzbDrone.Core.Applications.Whisparr
{
_appIndexerMapService.Delete(indexerMapping.Id);
if (indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
if (indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()).Any())
{
_logger.Debug("Remote indexer not found, re-adding {0} [{1}] to Whisparr", indexer.Name, indexer.Id);
whisparrIndexer.Id = 0;
@@ -214,7 +219,7 @@ namespace NzbDrone.Core.Applications.Whisparr
}
}
private WhisparrIndexer BuildWhisparrIndexer(IndexerDefinition indexer, DownloadProtocol protocol, int id = 0)
private WhisparrIndexer BuildWhisparrIndexer(IndexerDefinition indexer, IndexerCapabilities indexerCapabilities, DownloadProtocol protocol, int id = 0)
{
var cacheKey = $"{Settings.BaseUrl}";
var schemas = _schemaCache.Get(cacheKey, () => _whisparrV3Proxy.GetIndexerSchema(Settings), TimeSpan.FromDays(7));
@@ -244,7 +249,7 @@ namespace NzbDrone.Core.Applications.Whisparr
whisparrIndexer.Fields.FirstOrDefault(x => x.Name == "baseUrl").Value = $"{Settings.ProwlarrUrl.TrimEnd('/')}/{indexer.Id}/";
whisparrIndexer.Fields.FirstOrDefault(x => x.Name == "apiPath").Value = "/api";
whisparrIndexer.Fields.FirstOrDefault(x => x.Name == "apiKey").Value = _configFileProvider.ApiKey;
whisparrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexer.Capabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
whisparrIndexer.Fields.FirstOrDefault(x => x.Name == "categories").Value = JArray.FromObject(indexerCapabilities.Categories.SupportedCategories(Settings.SyncCategories.ToArray()));
if (indexer.Protocol == DownloadProtocol.Torrent)
{

View File

@@ -0,0 +1,65 @@
using System.Collections.Generic;
using System.Data;
using Dapper;
using FluentMigrator;
using Newtonsoft.Json.Linq;
using NzbDrone.Common.Serializer;
using NzbDrone.Core.Datastore.Migration.Framework;
namespace NzbDrone.Core.Datastore.Migration
{
[Migration(40)]
public class newznab_category_to_capabilities_settings : NzbDroneMigrationBase
{
protected override void MainDbUpgrade()
{
Execute.WithConnection(MoveCategoriesToCapabilities);
}
private void MoveCategoriesToCapabilities(IDbConnection conn, IDbTransaction tran)
{
var updated = new List<object>();
using (var cmd = conn.CreateCommand())
{
cmd.Transaction = tran;
cmd.CommandText = "SELECT \"Id\", \"Settings\" FROM \"Indexers\" WHERE \"Implementation\" IN ('Newznab', 'Torznab')";
using (var reader = cmd.ExecuteReader())
{
while (reader.Read())
{
var id = reader.GetInt32(0);
var settings = Json.Deserialize<JObject>(reader.GetString(1));
if ((settings.Value<JObject>("capabilities")?.ContainsKey("categories") ?? false) == false
&& settings.ContainsKey("categories")
&& settings.TryGetValue("categories", out var categories))
{
if (!settings.ContainsKey("capabilities"))
{
settings.Add("capabilities", new JObject());
}
settings.Value<JObject>("capabilities")?.Add(new JProperty("categories", JArray.FromObject(categories)));
if (settings.ContainsKey("categories"))
{
settings.Remove("categories");
}
}
updated.Add(new
{
Settings = settings.ToJson(),
Id = id
});
}
}
}
var updateSql = "UPDATE \"Indexers\" SET \"Settings\" = @Settings WHERE \"Id\" = @Id";
conn.Execute(updateSql, updated, transaction: tran);
}
}
}

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using Newtonsoft.Json;
using NzbDrone.Common.Disk;
using NzbDrone.Core.Download.Clients.Sabnzbd.JsonConverters;
@@ -7,10 +7,14 @@ namespace NzbDrone.Core.Download.Clients.Sabnzbd
{
public class SabnzbdConfig
{
public SabnzbdConfig()
{
Categories = new List<SabnzbdCategory>();
Servers = new List<object>();
}
public SabnzbdConfigMisc Misc { get; set; }
public List<SabnzbdCategory> Categories { get; set; }
public List<object> Servers { get; set; }
}

View File

@@ -1,4 +1,5 @@
using NLog;
using System.Collections.Generic;
using NLog;
using NzbDrone.Core.Configuration;
using NzbDrone.Core.Configuration.Events;
using NzbDrone.Core.Lifecycle;
@@ -28,7 +29,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
_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> { { "length", MinimumLength } }), "#invalid-api-key");
}
return new HealthCheck(GetType());

View File

@@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Download;
@@ -39,10 +40,19 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (backOffProviders.Count == enabledProviders.Count)
{
return new HealthCheck(GetType(), HealthCheckResult.Error, _localizationService.GetLocalizedString("DownloadClientStatusCheckAllClientMessage"), "#download-clients-are-unavailable-due-to-failures");
return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("DownloadClientStatusAllClientHealthCheckMessage"),
"#download-clients-are-unavailable-due-to-failures");
}
return new HealthCheck(GetType(), HealthCheckResult.Warning, string.Format(_localizationService.GetLocalizedString("DownloadClientStatusCheckSingleClientMessage"), string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name))), "#download-clients-are-unavailable-due-to-failures");
return new HealthCheck(GetType(),
HealthCheckResult.Warning,
_localizationService.GetLocalizedString("DownloadClientStatusSingleClientHealthCheckMessage", new Dictionary<string, object>
{
{ "downloadClientNames", string.Join(", ", backOffProviders.Select(v => v.Provider.Definition.Name)) }
}),
"#download-clients-are-unavailable-due-to-failures");
}
}
}

View File

@@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Core.Download;
using NzbDrone.Core.Indexers;
@@ -39,7 +40,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
return new HealthCheck(GetType(),
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");
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers;
@@ -17,9 +18,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
private readonly IIndexerFactory _providerFactory;
private readonly IIndexerStatusService _providerStatusService;
public IndexerLongTermStatusCheck(IIndexerFactory providerFactory,
IIndexerStatusService providerStatusService,
ILocalizationService localizationService)
public IndexerLongTermStatusCheck(IIndexerFactory providerFactory, IIndexerStatusService providerStatusService, ILocalizationService localizationService)
: base(localizationService)
{
_providerFactory = providerFactory;
@@ -46,14 +45,16 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("IndexerLongTermStatusCheckAllClientMessage"),
_localizationService.GetLocalizedString("IndexerLongTermStatusAllUnavailableHealthCheckMessage"),
"#indexers-are-unavailable-due-to-failures");
}
return new HealthCheck(GetType(),
HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerLongTermStatusCheckSingleClientMessage"),
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");
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Indexers;
@@ -44,14 +45,16 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("IndexerStatusCheckAllClientMessage"),
_localizationService.GetLocalizedString("IndexerStatusAllUnavailableHealthCheckMessage"),
"#indexers-are-unavailable-due-to-failures");
}
return new HealthCheck(GetType(),
HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerStatusCheckSingleClientMessage"),
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");
}
}

View File

@@ -11,6 +11,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
public class IndexerVIPCheck : HealthCheckBase
{
@@ -24,7 +25,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
public override HealthCheck Check()
{
var indexers = _indexerFactory.AllProviders(false);
var indexers = _indexerFactory.Enabled(false);
var expiringProviders = new List<IIndexer>();
foreach (var provider in indexers)
@@ -39,12 +40,8 @@ namespace NzbDrone.Core.HealthCheck.Checks
var expiration = (string)vipProp.GetValue(provider.Definition.Settings);
if (expiration.IsNullOrWhiteSpace())
{
continue;
}
if (DateTime.Parse(expiration).Between(DateTime.Now, DateTime.Now.AddDays(7)))
if (expiration.IsNotNullOrWhiteSpace() &&
DateTime.Parse(expiration).Between(DateTime.Now, DateTime.Now.AddDays(7)))
{
expiringProviders.Add(provider);
}
@@ -53,10 +50,12 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (!expiringProviders.Empty())
{
return new HealthCheck(GetType(),
HealthCheckResult.Warning,
string.Format(_localizationService.GetLocalizedString("IndexerVipCheckExpiringClientMessage"),
string.Join(", ", expiringProviders.Select(v => v.Definition.Name))),
"#indexer-vip-expiring");
HealthCheckResult.Warning,
_localizationService.GetLocalizedString("IndexerVipExpiringHealthCheckMessage", new Dictionary<string, object>
{
{ "indexerNames", string.Join(", ", expiringProviders.Select(v => v.Definition.Name).ToArray()) }
}),
"#indexer-vip-expiring");
}
return new HealthCheck(GetType());

View File

@@ -11,6 +11,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
[CheckOn(typeof(ProviderAddedEvent<IIndexer>))]
[CheckOn(typeof(ProviderUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderDeletedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkUpdatedEvent<IIndexer>))]
[CheckOn(typeof(ProviderBulkDeletedEvent<IIndexer>))]
public class IndexerVIPExpiredCheck : HealthCheckBase
{
@@ -24,7 +25,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
public override HealthCheck Check()
{
var indexers = _indexerFactory.AllProviders(false);
var indexers = _indexerFactory.Enabled(false);
var expiredProviders = new List<IIndexer>();
foreach (var provider in indexers)
@@ -39,12 +40,8 @@ namespace NzbDrone.Core.HealthCheck.Checks
var expiration = (string)vipProp.GetValue(provider.Definition.Settings);
if (expiration.IsNullOrWhiteSpace())
{
continue;
}
if (DateTime.Parse(expiration).Before(DateTime.Now))
if (expiration.IsNotNullOrWhiteSpace() &&
DateTime.Parse(expiration).Before(DateTime.Now))
{
expiredProviders.Add(provider);
}
@@ -53,10 +50,12 @@ namespace NzbDrone.Core.HealthCheck.Checks
if (!expiredProviders.Empty())
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("IndexerVipCheckExpiredClientMessage"),
string.Join(", ", expiredProviders.Select(v => v.Definition.Name))),
"#indexer-vip-expired");
HealthCheckResult.Error,
_localizationService.GetLocalizedString("IndexerVipExpiredHealthCheckMessage", new Dictionary<string, object>
{
{ "indexerNames", string.Join(", ", expiredProviders.Select(v => v.Definition.Name).ToArray()) }
}),
"#indexer-vip-expired");
}
return new HealthCheck(GetType());

View File

@@ -1,3 +1,4 @@
using System.Collections.Generic;
using System.Linq;
using NzbDrone.Common.Extensions;
using NzbDrone.Core.Localization;
@@ -45,7 +46,10 @@ namespace NzbDrone.Core.HealthCheck.Checks
return new HealthCheck(GetType(),
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");
}
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using NLog;
@@ -19,7 +20,7 @@ namespace NzbDrone.Core.HealthCheck.Checks
private readonly IHttpRequestBuilderFactory _cloudRequestBuilder;
public ProxyCheck(IProwlarrCloudRequestBuilder cloudRequestBuilder, IConfigService configService, IHttpClient client, ILocalizationService localizationService, Logger logger)
public ProxyCheck(IProwlarrCloudRequestBuilder cloudRequestBuilder, IConfigService configService, IHttpClient client, Logger logger, ILocalizationService localizationService)
: base(localizationService)
{
_configService = configService;
@@ -31,35 +32,58 @@ namespace NzbDrone.Core.HealthCheck.Checks
public override HealthCheck Check()
{
if (_configService.ProxyEnabled)
if (!_configService.ProxyEnabled)
{
var addresses = Dns.GetHostAddresses(_configService.ProxyHostname);
if (!addresses.Any())
{
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("ProxyCheckResolveIpMessage"), _configService.ProxyHostname));
}
return new HealthCheck(GetType());
}
var request = _cloudRequestBuilder.Create()
.Resource("/ping")
.Build();
var addresses = Dns.GetHostAddresses(_configService.ProxyHostname);
try
{
var response = _client.Execute(request);
// We only care about 400 responses, other error codes can be ignored
if (response.StatusCode == HttpStatusCode.BadRequest)
if (!addresses.Any())
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("ProxyResolveIpHealthCheckMessage", new Dictionary<string, object>
{
_logger.Error("Proxy Health Check failed: {0}", response.StatusCode);
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("ProxyCheckBadRequestMessage"), response.StatusCode));
}
}
catch (Exception ex)
{ "proxyHostName", _configService.ProxyHostname }
}),
"#proxy-failed-resolve-ip");
}
var request = _cloudRequestBuilder.Create()
.Resource("/ping")
.Build();
try
{
var response = _client.Execute(request);
// We only care about 400 responses, other error codes can be ignored
if (response.StatusCode == HttpStatusCode.BadRequest)
{
_logger.Error(ex, "Proxy Health Check failed");
return new HealthCheck(GetType(), HealthCheckResult.Error, string.Format(_localizationService.GetLocalizedString("ProxyCheckFailedToTestMessage"), request.Url));
_logger.Error("Proxy Health Check failed: {0}", response.StatusCode);
return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("ProxyBadRequestHealthCheckMessage", new Dictionary<string, object>
{
{ "statusCode", response.StatusCode }
}),
"#proxy-failed-test");
}
}
catch (Exception ex)
{
_logger.Error(ex, "Proxy Health Check failed");
return new HealthCheck(GetType(),
HealthCheckResult.Error,
_localizationService.GetLocalizedString("ProxyFailedToTestHealthCheckMessage", new Dictionary<string, object>
{
{ "url", request.Url }
}),
"#proxy-failed-test");
}
return new HealthCheck(GetType());
}

View File

@@ -1,4 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using NzbDrone.Common.Disk;
using NzbDrone.Common.EnvironmentInfo;
@@ -47,7 +48,12 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateCheckStartupTranslocationMessage"), startupFolder),
_localizationService.GetLocalizedString(
"UpdateStartupTranslocationHealthCheckMessage",
new Dictionary<string, object>
{
{ "startupFolder", startupFolder }
}),
"#cannot-install-update-because-startup-folder-is-in-an-app-translocation-folder.");
}
@@ -55,7 +61,13 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateCheckStartupNotWritableMessage"), 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");
}
@@ -63,14 +75,20 @@ namespace NzbDrone.Core.HealthCheck.Checks
{
return new HealthCheck(GetType(),
HealthCheckResult.Error,
string.Format(_localizationService.GetLocalizedString("UpdateCheckUINotWritableMessage"), uiFolder, Environment.UserName),
_localizationService.GetLocalizedString(
"UpdateUiNotWritableHealthCheckMessage",
new Dictionary<string, object>
{
{ "uiFolder", uiFolder },
{ "userName", Environment.UserName }
}),
"#cannot-install-update-because-ui-folder-is-not-writable-by-the-user");
}
}
if (BuildInfo.BuildDateTime < DateTime.UtcNow.AddDays(-14) && _checkUpdateService.AvailableUpdate() != null)
{
return new HealthCheck(GetType(), HealthCheckResult.Warning, _localizationService.GetLocalizedString("UpdateAvailable"), "#new-update-is-available");
return new HealthCheck(GetType(), HealthCheckResult.Warning, _localizationService.GetLocalizedString("UpdateAvailableHealthCheckMessage"));
}
return new HealthCheck(GetType());

View File

@@ -177,8 +177,8 @@ namespace NzbDrone.Core.IndexerSearch
if (criteriaBase.Categories is { Length: > 0 })
{
//Only query supported indexers
indexers = indexers.Where(i => ((IndexerDefinition)i.Definition).Capabilities.Categories.SupportedCategories(criteriaBase.Categories).Any()).ToList();
// Only query supported indexers
indexers = indexers.Where(i => i.GetCapabilities().Categories.SupportedCategories(criteriaBase.Categories).Any()).ToList();
if (indexers.Count == 0)
{
@@ -217,7 +217,7 @@ namespace NzbDrone.Core.IndexerSearch
//Filter results to only those in searched categories
if (criteriaBase.Categories.Length > 0)
{
var expandedQueryCats = ((IndexerDefinition)indexer.Definition).Capabilities.Categories.ExpandTorznabQueryCategories(criteriaBase.Categories);
var expandedQueryCats = indexer.GetCapabilities().Categories.ExpandTorznabQueryCategories(criteriaBase.Categories);
releases = releases.Where(result => result.Categories?.Any() != true || expandedQueryCats.Intersect(result.Categories.Select(c => c.Id)).Any()).ToList();

View File

@@ -467,6 +467,11 @@ namespace NzbDrone.Core.Indexers.Definitions
// Ignore these categories as they'll cause hell with the matcher
// TV Special, DVD Special, BD Special
if (groupName is "TV Special" or "DVD Special" or "BD Special")
{
continue;
}
if (groupName is "TV Series" or "OVA" or "ONA")
{
categories = new List<IndexerCategory> { NewznabStandardCategory.TVAnime };
@@ -695,7 +700,7 @@ namespace NzbDrone.Core.Indexers.Definitions
ExcludeHentai = false;
SearchByYear = false;
EnableSonarrCompatibility = true;
UseFilenameForSingleEpisodes = false;
UseFilenameForSingleEpisodes = true;
AddJapaneseTitle = true;
AddRomajiTitle = true;
AddAlternativeTitle = true;

View File

@@ -84,6 +84,6 @@ namespace NzbDrone.Core.Indexers.Definitions
public class AvistaZParser : AvistazParserBase
{
protected override string TimezoneOffset => "+01:00";
protected override string TimezoneOffset => "+02:00";
}
}

View File

@@ -502,36 +502,54 @@ namespace NzbDrone.Core.Indexers.Definitions.Cardigann
value = release.Description;
break;
case "category":
if (fieldModifiers.Contains("noappend"))
{
_logger.Warn("The \"noappend\" modifier is deprecated. Please switch to \"default\". See the Definition Format in the Wiki for more information.");
}
var cats = _categories.MapTrackerCatToNewznab(value);
if (cats.Any())
{
if (release.Categories == null || fieldModifiers.Contains("noappend"))
{
release.Categories = cats;
}
else
{
release.Categories = release.Categories.Union(cats).ToList();
}
release.Categories = release.Categories == null || fieldModifiers.Contains("noappend")
? cats
: release.Categories.Union(cats).ToList();
}
if (value.IsNotNullOrWhiteSpace() && !release.Categories.Any())
{
_logger.Warn("[{0}] Invalid category for value: '{1}'", _definition.Id, value);
}
else
{
value = release.Categories.ToString();
}
value = release.Categories.ToString();
break;
case "categorydesc":
var catsDesc = _categories.MapTrackerCatDescToNewznab(value);
if (catsDesc.Any())
if (fieldModifiers.Contains("noappend"))
{
if (release.Categories == null || fieldModifiers.Contains("noappend"))
{
release.Categories = catsDesc;
}
else
{
release.Categories = release.Categories.Union(catsDesc).ToList();
}
_logger.Warn("The \"noappend\" modifier is deprecated. Please switch to \"default\". See the Definition Format in the Wiki for more information.");
}
var catsDesc = _categories.MapTrackerCatDescToNewznab(value);
if (catsDesc.Any())
{
release.Categories = release.Categories == null || fieldModifiers.Contains("noappend")
? catsDesc
: release.Categories.Union(catsDesc).ToList();
}
if (value.IsNotNullOrWhiteSpace() && !release.Categories.Any())
{
_logger.Warn("[{0}] Invalid category for value: '{1}'", _definition.Id, value);
}
else
{
value = release.Categories.ToString();
}
value = release.Categories.ToString();
break;
case "size":
release.Size = ParseUtil.GetBytes(value);

View File

@@ -54,7 +54,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{
private readonly IndexerCapabilitiesCategories _categories;
protected override string TimezoneOffset => "+01:00";
protected override string TimezoneOffset => "+02:00";
public ExoticaZParser(IndexerCapabilitiesCategories categories)
{

View File

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

View File

@@ -59,6 +59,12 @@ public class GazelleParser : IParseIndexerResponse
{
foreach (var torrent in result.Torrents)
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (Settings.UseFreeleechToken && !torrent.CanUseToken)
{
continue;
}
var id = torrent.TorrentId;
var title = $"{result.Artist} - {result.GroupName} ({result.GroupYear}) [{torrent.Format} {torrent.Encoding}] [{torrent.Media}]";
@@ -72,14 +78,14 @@ public class GazelleParser : IParseIndexerResponse
var release = new TorrentInfo
{
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id, !torrent.IsFreeLeech && !torrent.IsNeutralLeech && !torrent.IsPersonalFreeLeech),
Title = WebUtility.HtmlDecode(title),
Container = torrent.Encoding,
Files = torrent.FileCount,
Grabs = torrent.Snatches,
Codec = torrent.Format,
Size = long.Parse(torrent.Size),
DownloadUrl = GetDownloadUrl(id, torrent.CanUseToken),
InfoUrl = infoUrl,
Seeders = int.Parse(torrent.Seeders),
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
PublishDate = torrent.Time.ToUniversalTime(),
@@ -104,6 +110,12 @@ public class GazelleParser : IParseIndexerResponse
}
else
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (Settings.UseFreeleechToken && !result.CanUseToken)
{
continue;
}
var id = result.TorrentId;
var groupName = WebUtility.HtmlDecode(result.GroupName);
var infoUrl = GetInfoUrl(result.GroupId, id);
@@ -111,10 +123,10 @@ public class GazelleParser : IParseIndexerResponse
var release = new TorrentInfo
{
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id, !result.IsFreeLeech && !result.IsNeutralLeech && !result.IsPersonalFreeLeech),
Title = groupName,
Size = long.Parse(result.Size),
DownloadUrl = GetDownloadUrl(id, result.CanUseToken),
InfoUrl = infoUrl,
Seeders = int.Parse(result.Seeders),
Peers = int.Parse(result.Leechers) + int.Parse(result.Seeders),
Files = result.FileCount,

View File

@@ -168,16 +168,22 @@ public class GreatPosterWallParser : GazelleParser
{
foreach (var torrent in result.Torrents)
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (_settings.UseFreeleechToken && !torrent.CanUseToken)
{
continue;
}
var infoUrl = GetInfoUrl(result.GroupId.ToString(), torrent.TorrentId);
var time = DateTime.SpecifyKind(torrent.Time, DateTimeKind.Unspecified);
var release = new TorrentInfo
{
Title = WebUtility.HtmlDecode(torrent.FileName).Trim(),
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(torrent.TorrentId, !torrent.IsFreeleech && !torrent.IsNeutralLeech && !torrent.IsPersonalFreeleech),
Title = WebUtility.HtmlDecode(torrent.FileName).Trim(),
PosterUrl = GetPosterUrl(result.Cover),
DownloadUrl = GetDownloadUrl(torrent.TorrentId, torrent.CanUseToken),
PublishDate = new DateTimeOffset(time, TimeSpan.FromHours(8)).UtcDateTime, // Time is Chinese Time, add 8 hours difference from UTC
Categories = ParseCategories(torrent),
Size = torrent.Size,

View File

@@ -333,7 +333,7 @@ namespace NzbDrone.Core.Indexers.Definitions
var publishDate = DateTimeUtil.FromTimeAgo(dateSplit.First());
var description = descrSplit.Length > 1 ? "Tags: " + descrSplit.First().Trim() : "";
var catIcon = row.QuerySelector("td:nth-of-type(1) a");
var catIcon = row.QuerySelector("td:nth-of-type(1) a[href^=\"?\"]");
if (catIcon == null)
{
// Torrents - Category column == Text or Code
@@ -342,7 +342,7 @@ namespace NzbDrone.Core.Indexers.Definitions
}
// Torrents - Category column == Icons
var cat = _categories.MapTrackerCatToNewznab(catIcon.GetAttribute("href").Substring(1));
var cat = _categories.MapTrackerCatToNewznab(catIcon.GetAttribute("href")?.Substring(1));
var size = ParseUtil.GetBytes(row.Children[sizeIndex].TextContent);

View File

@@ -139,7 +139,9 @@ public class MTeamTp : TorrentIndexerBase<MTeamTpSettings>
caps.Categories.AddCategoryMapping(407, NewznabStandardCategory.TVSport, "Sports(運動)");
caps.Categories.AddCategoryMapping(422, NewznabStandardCategory.PC0day, "Software(軟體)");
caps.Categories.AddCategoryMapping(423, NewznabStandardCategory.PCGames, "PCGame(PC遊戲)");
caps.Categories.AddCategoryMapping(427, NewznabStandardCategory.Books, "eBook(電子書)");
caps.Categories.AddCategoryMapping(427, NewznabStandardCategory.BooksEBook, "Study/Edu ebook(教育書面)");
caps.Categories.AddCategoryMapping(441, NewznabStandardCategory.BooksOther, "Study/Edu video(教育影片)");
caps.Categories.AddCategoryMapping(442, NewznabStandardCategory.AudioAudiobook, "Study/Edu audio(教育音檔)");
caps.Categories.AddCategoryMapping(409, NewznabStandardCategory.Other, "Misc(其他)");
// music

View File

@@ -525,7 +525,7 @@ namespace NzbDrone.Core.Indexers.Definitions
[FieldDefinition(3, Type = FieldType.Select, Label = "Search Type", SelectOptions = typeof(MyAnonamouseSearchType), HelpText = "Specify the desired search type")]
public int SearchType { get; set; }
[FieldDefinition(4, Type = FieldType.Checkbox, Label = "Buy Freeleech Token", HelpText = "Buy personal freeleech token for download")]
[FieldDefinition(4, Type = FieldType.Checkbox, Label = "Use Freeleech Wedges", HelpText = "Use freeleech wedges to make grabbed torrents personal freeleech")]
public bool Freeleech { get; set; }
[FieldDefinition(5, Type = FieldType.Checkbox, Label = "Search in description", HelpText = "Search text in the description")]

View File

@@ -44,7 +44,7 @@ namespace NzbDrone.Core.Indexers.Newznab
public string[] GetBaseUrlFromSettings()
{
if (Definition == null || Settings?.Categories == null)
if (Definition == null || Settings?.Capabilities == null)
{
return new[] { "" };
}
@@ -61,16 +61,23 @@ namespace NzbDrone.Core.Indexers.Newznab
{
var caps = new IndexerCapabilities();
if (Definition == null || Settings?.Categories == null)
if (Definition == null || Settings?.Capabilities?.Categories == null)
{
return caps;
}
foreach (var category in Settings.Categories)
foreach (var category in Settings.Capabilities.Categories)
{
caps.Categories.AddCategoryMapping(category.Name, category);
}
caps.SupportsRawSearch = Settings?.Capabilities?.SupportsRawSearch ?? false;
caps.SearchParams = Settings?.Capabilities?.SearchParams ?? new List<SearchParam> { SearchParam.Q };
caps.TvSearchParams = Settings?.Capabilities?.TvSearchParams ?? new List<TvSearchParam>();
caps.MovieSearchParams = Settings?.Capabilities?.MovieSearchParams ?? new List<MovieSearchParam>();
caps.MusicSearchParams = Settings?.Capabilities?.MusicSearchParams ?? new List<MusicSearchParam>();
caps.BookSearchParams = Settings?.Capabilities?.BookSearchParams ?? new List<BookSearchParam>();
return caps;
}
@@ -84,25 +91,24 @@ namespace NzbDrone.Core.Indexers.Newznab
{
get
{
yield return GetDefinition("abNZB", GetSettings("https://abnzb.com"));
yield return GetDefinition("altHUB", GetSettings("https://api.althub.co.za"));
yield return GetDefinition("AnimeTosho (Usenet)", GetSettings("https://feed.animetosho.org"));
yield return GetDefinition("DOGnzb", GetSettings("https://api.dognzb.cr"));
yield return GetDefinition("DrunkenSlug", GetSettings("https://drunkenslug.com"));
yield return GetDefinition("abNZB", GetSettings("https://abnzb.com"), categories: new[] { 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("altHUB", GetSettings("https://api.althub.co.za"), categories: new[] { 2000, 3000, 4000, 5000, 7000 });
yield return GetDefinition("AnimeTosho (Usenet)", GetSettings("https://feed.animetosho.org"), categories: new[] { 2020, 5070 });
yield return GetDefinition("DOGnzb", GetSettings("https://api.dognzb.cr"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("DrunkenSlug", GetSettings("https://drunkenslug.com"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000 });
yield return GetDefinition("GingaDADDY", GetSettings("https://www.gingadaddy.com"));
yield return GetDefinition("Miatrix", GetSettings("https://www.miatrix.com"));
yield return GetDefinition("Newz-Complex", GetSettings("https://newz-complex.org/www"));
yield return GetDefinition("Newz69", GetSettings("https://newz69.keagaming.com"));
yield return GetDefinition("NinjaCentral", GetSettings("https://ninjacentral.co.za"));
yield return GetDefinition("Nzb.su", GetSettings("https://api.nzb.su"));
yield return GetDefinition("NZBCat", GetSettings("https://nzb.cat"));
yield return GetDefinition("NZBFinder", GetSettings("https://nzbfinder.ws"));
yield return GetDefinition("NZBgeek", GetSettings("https://api.nzbgeek.info"));
yield return GetDefinition("NzbNoob", GetSettings("https://www.nzbnoob.com"));
yield return GetDefinition("NZBNDX", GetSettings("https://www.nzbndx.com"));
yield return GetDefinition("NzbPlanet", GetSettings("https://api.nzbplanet.net"));
yield return GetDefinition("NZBStars", GetSettings("https://nzbstars.com"));
yield return GetDefinition("Tabula Rasa", GetSettings("https://www.tabula-rasa.pw", apiPath: @"/api/v1/api"));
yield return GetDefinition("Miatrix", GetSettings("https://www.miatrix.com"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("Newz69", GetSettings("https://newz69.keagaming.com"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("NinjaCentral", GetSettings("https://ninjacentral.co.za"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("Nzb.su", GetSettings("https://api.nzb.su"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("NZBCat", GetSettings("https://nzb.cat"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000 });
yield return GetDefinition("NZBFinder", GetSettings("https://nzbfinder.ws"), categories: new[] { 2000, 3000, 5000, 6000, 7000 });
yield return GetDefinition("NZBgeek", GetSettings("https://api.nzbgeek.info"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("NzbNoob", GetSettings("https://www.nzbnoob.com"), categories: new[] { 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("NZBNDX", GetSettings("https://www.nzbndx.com"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("NzbPlanet", GetSettings("https://api.nzbplanet.net"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000, 8000 });
yield return GetDefinition("NZBStars", GetSettings("https://nzbstars.com"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000 });
yield return GetDefinition("Tabula Rasa", GetSettings("https://www.tabula-rasa.pw", apiPath: @"/api/v1/api"), categories: new[] { 1000, 2000, 3000, 4000, 5000, 6000, 7000 });
yield return GetDefinition("Generic Newznab", GetSettings(""));
}
}
@@ -113,8 +119,23 @@ namespace NzbDrone.Core.Indexers.Newznab
_capabilitiesProvider = capabilitiesProvider;
}
private IndexerDefinition GetDefinition(string name, NewznabSettings settings)
private IndexerDefinition GetDefinition(string name, NewznabSettings settings, IEnumerable<int> categories = null)
{
var caps = new IndexerCapabilities();
if (categories != null)
{
foreach (var categoryId in categories)
{
var mappedCat = NewznabStandardCategory.AllCats.FirstOrDefault(x => x.Id == categoryId);
if (mappedCat != null)
{
caps.Categories.AddCategoryMapping(mappedCat.Id, mappedCat);
}
}
}
return new IndexerDefinition
{
Enable = true,
@@ -127,7 +148,7 @@ namespace NzbDrone.Core.Indexers.Newznab
SupportsSearch = SupportsSearch,
SupportsRedirect = SupportsRedirect,
SupportsPagination = SupportsPagination,
Capabilities = Capabilities
Capabilities = caps
};
}

View File

@@ -124,7 +124,7 @@ namespace NzbDrone.Core.Indexers.Newznab
{
foreach (var param in xmlBasicSearch.Attribute("supportedParams").Value.Split(','))
{
if (Enum.TryParse(param, true, out SearchParam searchParam))
if (Enum.TryParse(param, true, out SearchParam searchParam) && !capabilities.SearchParams.Contains(searchParam))
{
capabilities.SearchParams.AddIfNotNull(searchParam);
}
@@ -146,7 +146,7 @@ namespace NzbDrone.Core.Indexers.Newznab
{
foreach (var param in xmlMovieSearch.Attribute("supportedParams").Value.Split(','))
{
if (Enum.TryParse(param, true, out MovieSearchParam searchParam))
if (Enum.TryParse(param, true, out MovieSearchParam searchParam) && !capabilities.MovieSearchParams.Contains(searchParam))
{
capabilities.MovieSearchParams.AddIfNotNull(searchParam);
}
@@ -166,7 +166,7 @@ namespace NzbDrone.Core.Indexers.Newznab
{
foreach (var param in xmlTvSearch.Attribute("supportedParams").Value.Split(','))
{
if (Enum.TryParse(param, true, out TvSearchParam searchParam))
if (Enum.TryParse(param, true, out TvSearchParam searchParam) && !capabilities.TvSearchParams.Contains(searchParam))
{
capabilities.TvSearchParams.AddIfNotNull(searchParam);
}
@@ -186,7 +186,7 @@ namespace NzbDrone.Core.Indexers.Newznab
{
foreach (var param in xmlAudioSearch.Attribute("supportedParams").Value.Split(','))
{
if (Enum.TryParse(param, true, out MusicSearchParam searchParam))
if (Enum.TryParse(param, true, out MusicSearchParam searchParam) && !capabilities.MusicSearchParams.Contains(searchParam))
{
capabilities.MusicSearchParams.AddIfNotNull(searchParam);
}
@@ -206,7 +206,7 @@ namespace NzbDrone.Core.Indexers.Newznab
{
foreach (var param in xmlBookSearch.Attribute("supportedParams").Value.Split(','))
{
if (Enum.TryParse(param, true, out BookSearchParam searchParam))
if (Enum.TryParse(param, true, out BookSearchParam searchParam) && !capabilities.BookSearchParams.Contains(searchParam))
{
capabilities.BookSearchParams.AddIfNotNull(searchParam);
}

View File

@@ -0,0 +1,35 @@
using System.Collections.Generic;
namespace NzbDrone.Core.Indexers.Newznab;
public class NewznabCapabilitiesSettings
{
public bool SupportsRawSearch { get; set; }
public List<SearchParam> SearchParams { get; set; }
public List<TvSearchParam> TvSearchParams { get; set; }
public List<MovieSearchParam> MovieSearchParams { get; set; }
public List<MusicSearchParam> MusicSearchParams { get; set; }
public List<BookSearchParam> BookSearchParams { get; set; }
public List<IndexerCategory> Categories { get; set; }
public NewznabCapabilitiesSettings()
{
}
public NewznabCapabilitiesSettings(IndexerCapabilities capabilities)
{
SupportsRawSearch = capabilities?.SupportsRawSearch ?? false;
SearchParams = capabilities?.SearchParams;
TvSearchParams = capabilities?.TvSearchParams;
MovieSearchParams = capabilities?.MovieSearchParams;
MusicSearchParams = capabilities?.MusicSearchParams;
BookSearchParams = capabilities?.BookSearchParams;
Categories = capabilities?.Categories.GetTorznabCategoryList();
}
}

View File

@@ -1,4 +1,3 @@
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using FluentValidation;
@@ -76,7 +75,7 @@ namespace NzbDrone.Core.Indexers.Newznab
[FieldDefinition(7)]
public IndexerBaseSettings BaseSettings { get; set; } = new ();
public List<IndexerCategory> Categories { get; set; }
public NewznabCapabilitiesSettings Capabilities { get; set; }
// Field 8 is used by TorznabSettings MinimumSeeders
// If you need to add another field here, update TorznabSettings as well and this comment

View File

@@ -276,6 +276,12 @@ namespace NzbDrone.Core.Indexers.Definitions
{
foreach (var torrent in result.Torrents)
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (_settings.UseFreeleechToken && !torrent.CanUseToken)
{
continue;
}
var id = torrent.TorrentId;
var title = GetTitle(result, torrent);
@@ -285,7 +291,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id, torrent.CanUseToken),
DownloadUrl = GetDownloadUrl(id, !torrent.IsFreeLeech && !torrent.IsNeutralLeech && !torrent.IsPersonalFreeLeech),
Title = WebUtility.HtmlDecode(title),
Artist = WebUtility.HtmlDecode(result.Artist),
Album = WebUtility.HtmlDecode(result.GroupName),
@@ -320,16 +326,22 @@ namespace NzbDrone.Core.Indexers.Definitions
// Non-Audio files are formatted a little differently (1:1 for group and torrents)
else
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (_settings.UseFreeleechToken && !result.CanUseToken)
{
continue;
}
var id = result.TorrentId;
var infoUrl = GetInfoUrl(result.GroupId, id);
var release = new TorrentInfo
{
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id, !result.IsFreeLeech && !result.IsNeutralLeech && !result.IsPersonalFreeLeech),
Title = WebUtility.HtmlDecode(result.GroupName),
Size = long.Parse(result.Size),
DownloadUrl = GetDownloadUrl(id, result.CanUseToken),
InfoUrl = infoUrl,
Seeders = int.Parse(result.Seeders),
Peers = int.Parse(result.Leechers) + int.Parse(result.Seeders),
PublishDate = long.TryParse(result.GroupTime, out var num) ? DateTimeOffset.FromUnixTimeSeconds(num).UtcDateTime : DateTimeUtil.FromFuzzyTime(result.GroupTime),

View File

@@ -247,6 +247,12 @@ namespace NzbDrone.Core.Indexers.Definitions
{
foreach (var torrent in result.Torrents)
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (_settings.UseFreeleechToken && !torrent.CanUseToken)
{
continue;
}
// skip non-freeload results when freeload only is set
if (_settings.FreeloadOnly && !torrent.IsFreeload)
{
@@ -262,7 +268,7 @@ namespace NzbDrone.Core.Indexers.Definitions
{
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id, torrent.CanUseToken && !torrent.IsFreeload),
DownloadUrl = GetDownloadUrl(id, !torrent.IsFreeLeech && !torrent.IsNeutralLeech && !torrent.IsFreeload && !torrent.IsPersonalFreeLeech),
Title = WebUtility.HtmlDecode(title),
Artist = WebUtility.HtmlDecode(result.Artist),
Album = WebUtility.HtmlDecode(result.GroupName),
@@ -297,6 +303,12 @@ namespace NzbDrone.Core.Indexers.Definitions
// Non-Audio files are formatted a little differently (1:1 for group and torrents)
else
{
// skip releases that cannot be used with freeleech tokens when the option is enabled
if (_settings.UseFreeleechToken && !result.CanUseToken)
{
continue;
}
// skip non-freeload results when freeload only is set
if (_settings.FreeloadOnly && !result.IsFreeload)
{
@@ -309,10 +321,10 @@ namespace NzbDrone.Core.Indexers.Definitions
var release = new TorrentInfo
{
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id, !result.IsFreeLeech && !result.IsNeutralLeech && !result.IsFreeload && !result.IsPersonalFreeLeech),
Title = WebUtility.HtmlDecode(result.GroupName),
Size = long.Parse(result.Size),
DownloadUrl = GetDownloadUrl(id, result.CanUseToken && !result.IsFreeload),
InfoUrl = infoUrl,
Seeders = int.Parse(result.Seeders),
Peers = int.Parse(result.Leechers) + int.Parse(result.Seeders),
PublishDate = DateTimeOffset.FromUnixTimeSeconds(ParseUtil.CoerceLong(result.GroupTime)).UtcDateTime,

View File

@@ -23,14 +23,14 @@ namespace NzbDrone.Core.Indexers.Definitions
{
public class RuTracker : TorrentIndexerBase<RuTrackerSettings>
{
public override string Name => "RuTracker";
public override string Name => "RuTracker.org";
public override string[] IndexerUrls => new[]
{
"https://rutracker.org/",
"https://rutracker.net/",
"https://rutracker.nl/"
};
public override string Description => "RuTracker is a Semi-Private Russian torrent site with a thriving file-sharing community";
public override string Description => "RuTracker.org is a Semi-Private Russian torrent site with a thriving file-sharing community";
public override string Language => "ru-RU";
public override Encoding Encoding => Encoding.GetEncoding("windows-1251");
public override IndexerPrivacy Privacy => IndexerPrivacy.SemiPrivate;

View File

@@ -104,6 +104,7 @@ public class SecretCinemaParser : IParseIndexerResponse
foreach (var torrent in result.Torrents)
{
var id = torrent.TorrentId;
var infoUrl = GetInfoUrl(result.GroupId, id);
// in SC movies, artist=director and GroupName=title
var artist = WebUtility.HtmlDecode(result.Artist);
@@ -112,15 +113,15 @@ public class SecretCinemaParser : IParseIndexerResponse
var release = new TorrentInfo
{
Guid = $"SecretCinema-{id}",
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id),
Title = title,
Container = torrent.Encoding,
Files = torrent.FileCount,
Grabs = torrent.Snatches,
Codec = torrent.Format,
Size = long.Parse(torrent.Size),
DownloadUrl = GetDownloadUrl(id),
InfoUrl = GetInfoUrl(result.GroupId, id),
Seeders = int.Parse(torrent.Seeders),
Peers = int.Parse(torrent.Leechers) + int.Parse(torrent.Seeders),
PublishDate = new DateTimeOffset(time, TimeSpan.FromHours(2)).UtcDateTime,
@@ -143,7 +144,12 @@ public class SecretCinemaParser : IParseIndexerResponse
{
// Remove director from title
// SC API returns no more useful information than this
release.Title = $"{title} ({result.GroupYear}) {torrent.Media}";
release.Title = $"{title} ({result.GroupYear}) {torrent.Media}".Trim();
if (torrent.RemasterTitle.IsNotNullOrWhiteSpace())
{
release.Title += $" [{torrent.RemasterTitle.Trim()}]";
}
// Replace media formats with standards
release.Title = Regex.Replace(release.Title, @"\bBDMV\b", "COMPLETE BLURAY", RegexOptions.IgnoreCase);
@@ -168,15 +174,16 @@ public class SecretCinemaParser : IParseIndexerResponse
else
{
var id = result.TorrentId;
var infoUrl = GetInfoUrl(result.GroupId, id);
var groupName = WebUtility.HtmlDecode(result.GroupName);
var release = new TorrentInfo
{
Guid = $"SecretCinema-{id}",
Guid = infoUrl,
InfoUrl = infoUrl,
DownloadUrl = GetDownloadUrl(id),
Title = groupName,
Size = long.Parse(result.Size),
DownloadUrl = GetDownloadUrl(id),
InfoUrl = GetInfoUrl(result.GroupId, id),
Seeders = int.Parse(result.Seeders),
Peers = int.Parse(result.Leechers) + int.Parse(result.Seeders),
Files = result.FileCount,
@@ -209,7 +216,7 @@ public class SecretCinemaParser : IParseIndexerResponse
private bool IsAnyMovieCategory(ICollection<IndexerCategory> category)
{
return category.Contains(NewznabStandardCategory.Movies) || NewznabStandardCategory.Movies.SubCategories.Any(subCat => category.Contains(subCat));
return category.Contains(NewznabStandardCategory.Movies) || NewznabStandardCategory.Movies.SubCategories.Any(category.Contains);
}
private string GetDownloadUrl(int torrentId)

View File

@@ -17,6 +17,7 @@ using NzbDrone.Core.Parser.Model;
namespace NzbDrone.Core.Indexers.Definitions
{
[Obsolete("Site unusable due to lack of new releases")]
public class Shizaproject : TorrentIndexerBase<NoAuthTorrentBaseSettings>
{
public override string Name => "ShizaProject";

View File

@@ -44,7 +44,7 @@ namespace NzbDrone.Core.Indexers.Torznab
public string[] GetBaseUrlFromSettings()
{
if (Definition == null || Settings?.Categories == null)
if (Definition == null || Settings?.Capabilities == null)
{
return new[] { "" };
}
@@ -61,16 +61,23 @@ namespace NzbDrone.Core.Indexers.Torznab
{
var caps = new IndexerCapabilities();
if (Definition == null || Settings?.Categories == null)
if (Definition == null || Settings?.Capabilities?.Categories == null)
{
return caps;
}
foreach (var category in Settings.Categories)
foreach (var category in Settings.Capabilities.Categories)
{
caps.Categories.AddCategoryMapping(category.Name, category);
}
caps.SupportsRawSearch = Settings?.Capabilities?.SupportsRawSearch ?? false;
caps.SearchParams = Settings?.Capabilities?.SearchParams ?? new List<SearchParam> { SearchParam.Q };
caps.TvSearchParams = Settings?.Capabilities?.TvSearchParams ?? new List<TvSearchParam>();
caps.MovieSearchParams = Settings?.Capabilities?.MovieSearchParams ?? new List<MovieSearchParam>();
caps.MusicSearchParams = Settings?.Capabilities?.MusicSearchParams ?? new List<MusicSearchParam>();
caps.BookSearchParams = Settings?.Capabilities?.BookSearchParams ?? new List<BookSearchParam>();
return caps;
}
@@ -84,8 +91,8 @@ namespace NzbDrone.Core.Indexers.Torznab
{
get
{
yield return GetDefinition("AnimeTosho", "Anime NZB/DDL mirror", settings: GetSettings("https://feed.animetosho.org"));
yield return GetDefinition("MoreThanTV", "Private torrent tracker for TV / MOVIES", settings: GetSettings("https://www.morethantv.me", apiPath: @"/api/torznab"));
yield return GetDefinition("AnimeTosho", "Anime NZB/DDL mirror", settings: GetSettings("https://feed.animetosho.org"), categories: new[] { 2020, 5070 });
yield return GetDefinition("MoreThanTV", "Private torrent tracker for TV / MOVIES", settings: GetSettings("https://www.morethantv.me", apiPath: @"/api/torznab"), categories: new[] { 2000, 5000 });
yield return GetDefinition("Torrent Network", "Torrent Network (TN) is a GERMAN Private site for TV / MOVIES / GENERAL", language: "de-DE", settings: GetSettings("https://tntracker.org", apiPath: @"/api/torznab/api"));
yield return GetDefinition("Generic Torznab", "A Newznab-like api for torrents.", settings: GetSettings(""));
}
@@ -97,8 +104,23 @@ namespace NzbDrone.Core.Indexers.Torznab
_capabilitiesProvider = capabilitiesProvider;
}
private IndexerDefinition GetDefinition(string name, string description, string language = null, TorznabSettings settings = null)
private IndexerDefinition GetDefinition(string name, string description, string language = null, TorznabSettings settings = null, IEnumerable<int> categories = null)
{
var caps = new IndexerCapabilities();
if (categories != null)
{
foreach (var categoryId in categories)
{
var mappedCat = NewznabStandardCategory.AllCats.FirstOrDefault(x => x.Id == categoryId);
if (mappedCat != null)
{
caps.Categories.AddCategoryMapping(mappedCat.Id, mappedCat);
}
}
}
return new IndexerDefinition
{
Enable = true,
@@ -112,7 +134,7 @@ namespace NzbDrone.Core.Indexers.Torznab
SupportsSearch = SupportsSearch,
SupportsRedirect = SupportsRedirect,
SupportsPagination = SupportsPagination,
Capabilities = Capabilities
Capabilities = caps
};
}

View File

@@ -120,6 +120,7 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
caps.Categories.AddCategoryMapping(113, NewznabStandardCategory.TVAnime, "Anime Boxsets");
caps.Categories.AddCategoryMapping(112, NewznabStandardCategory.MoviesOther, "Anime Movies");
caps.Categories.AddCategoryMapping(111, NewznabStandardCategory.MoviesOther, "Anime TV");
caps.Categories.AddCategoryMapping(150, NewznabStandardCategory.PC, "Apps");
caps.Categories.AddCategoryMapping(80, NewznabStandardCategory.AudioAudiobook, "Audiobooks");
caps.Categories.AddCategoryMapping(48, NewznabStandardCategory.Books, "Books Magazines");
caps.Categories.AddCategoryMapping(68, NewznabStandardCategory.MoviesOther, "Cams/TS");
@@ -154,7 +155,7 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
caps.Categories.AddCategoryMapping(13, NewznabStandardCategory.Audio, "Music");
caps.Categories.AddCategoryMapping(135, NewznabStandardCategory.AudioLossless, "Music/FLAC");
caps.Categories.AddCategoryMapping(136, NewznabStandardCategory.Audio, "Music Boxset");
caps.Categories.AddCategoryMapping(15, NewznabStandardCategory.AudioVideo, "Music Videos");
caps.Categories.AddCategoryMapping(148, NewznabStandardCategory.AudioVideo, "Music Videos");
caps.Categories.AddCategoryMapping(9, NewznabStandardCategory.Other, "Other");
caps.Categories.AddCategoryMapping(125, NewznabStandardCategory.Other, "Other/Pictures");
caps.Categories.AddCategoryMapping(54, NewznabStandardCategory.TVOther, "Soaps");
@@ -168,6 +169,7 @@ public class XSpeeds : TorrentIndexerBase<XSpeedsSettings>
caps.Categories.AddCategoryMapping(86, NewznabStandardCategory.TVSport, "Sports/MotorSports");
caps.Categories.AddCategoryMapping(89, NewznabStandardCategory.TVSport, "Sports/Olympics");
caps.Categories.AddCategoryMapping(126, NewznabStandardCategory.TV, "TV");
caps.Categories.AddCategoryMapping(149, NewznabStandardCategory.TV, "TV Specials");
caps.Categories.AddCategoryMapping(127, NewznabStandardCategory.TVUHD, "TV 4K");
caps.Categories.AddCategoryMapping(129, NewznabStandardCategory.TVHD, "TV HD");
caps.Categories.AddCategoryMapping(130, NewznabStandardCategory.TVHD, "TV HEVC");

View File

@@ -18,6 +18,8 @@ using NzbDrone.Core.Indexers.Exceptions;
using NzbDrone.Core.IndexerSearch.Definitions;
using NzbDrone.Core.Messaging.Events;
using NzbDrone.Core.Parser.Model;
using Polly;
using Polly.Retry;
namespace NzbDrone.Core.Indexers
{
@@ -28,6 +30,38 @@ namespace NzbDrone.Core.Indexers
protected readonly IIndexerHttpClient _httpClient;
protected readonly IEventAggregator _eventAggregator;
protected ResiliencePipeline<HttpResponse> RetryStrategy => new ResiliencePipelineBuilder<HttpResponse>()
.AddRetry(new RetryStrategyOptions<HttpResponse>
{
ShouldHandle = static args => args.Outcome switch
{
{ Result.HasHttpServerError: true } => PredicateResult.True(),
{ Result.StatusCode: HttpStatusCode.RequestTimeout } => PredicateResult.True(),
_ => PredicateResult.False()
},
Delay = RateLimit,
MaxRetryAttempts = 2,
BackoffType = DelayBackoffType.Exponential,
UseJitter = true,
OnRetry = args =>
{
var exception = args.Outcome.Exception;
if (exception is not null)
{
_logger.Warn(exception, "Request for {0} failed with exception '{1}'. Retrying in {2}s.", Definition.Name, exception.Message, args.RetryDelay.TotalSeconds);
}
else
{
_logger.Warn("Request for {0} failed with status {1}. Retrying in {2}s.", Definition.Name, args.Outcome.Result?.StatusCode, args.RetryDelay.TotalSeconds);
}
return default;
}
})
.Build();
public IDictionary<string, string> Cookies { get; set; }
public override bool SupportsRss => true;
@@ -363,7 +397,7 @@ namespace NzbDrone.Core.Indexers
}
}
releases.AddRange(pagedReleases.Where(IsValidRelease));
releases.AddRange(pagedReleases.Where(r => IsValidRelease(r, searchCriteria.InteractiveSearch)));
}
if (releases.Any())
@@ -469,7 +503,7 @@ namespace NzbDrone.Core.Indexers
return Capabilities ?? ((IndexerDefinition)Definition).Capabilities;
}
protected virtual bool IsValidRelease(ReleaseInfo release)
protected virtual bool IsValidRelease(ReleaseInfo release, bool interactiveSearch = false)
{
if (release.Title.IsNullOrWhiteSpace())
{
@@ -478,6 +512,26 @@ namespace NzbDrone.Core.Indexers
return false;
}
if (interactiveSearch)
{
// Show releases with issues in the interactive search
return true;
}
if (release.Size == null)
{
_logger.Warn("Invalid Release: '{0}' from indexer: {1}. No size provided.", release.Title, Definition.Name);
return false;
}
if (release.Categories == null || !release.Categories.Any())
{
_logger.Warn("Invalid Release: '{0}' from indexer: {1}. No categories provided.", release.Title, Definition.Name);
return false;
}
return true;
}
@@ -570,7 +624,9 @@ namespace NzbDrone.Core.Indexers
request.HttpRequest.SuppressHttpError = true;
request.HttpRequest.Encoding ??= Encoding;
var response = await _httpClient.ExecuteProxiedAsync(request.HttpRequest, Definition);
var response = await RetryStrategy
.ExecuteAsync(static async (state, _) => await state._httpClient.ExecuteProxiedAsync(state.HttpRequest, state.Definition), (_httpClient, request.HttpRequest, Definition))
.ConfigureAwait(false);
// Check response to see if auth is needed, if needed try again
if (CheckIfLoginNeeded(response))

View File

@@ -171,10 +171,15 @@ namespace NzbDrone.Core.Indexers
var splitRegex = new Regex("[^\\w]+");
// split search term to individual terms for less aggressive filtering, filter common terms
var terms = splitRegex.Split(searchCriteria.SearchTerm).Where(t => t.IsNotNullOrWhiteSpace() && t.Length > 1 && !commonWords.ContainsIgnoreCase(t));
var terms = splitRegex.Split(searchCriteria.SearchTerm).Where(t => t.IsNotNullOrWhiteSpace() && t.Length > 1 && !commonWords.ContainsIgnoreCase(t)).ToArray();
// check in title and description for any term searched for
releases = releases.Where(r => terms.Any(t => (r.Title.IsNotNullOrWhiteSpace() && r.Title.ContainsIgnoreCase(t)) || (r.Description.IsNotNullOrWhiteSpace() && r.Description.ContainsIgnoreCase(t)))).ToList();
releases = releases.Where(r =>
{
var matches = terms.Where(t => (r.Title.IsNotNullOrWhiteSpace() && r.Title.ContainsIgnoreCase(t)) || (r.Description.IsNotNullOrWhiteSpace() && r.Description.ContainsIgnoreCase(t)));
return terms.Length > 1 ? matches.Skip(1).Any() : matches.Any();
}).ToList();
}
return releases;

View File

@@ -208,7 +208,7 @@ namespace NzbDrone.Core.Indexers
definition.Description ??= provider.Description;
definition.Encoding = provider.Encoding;
definition.Language ??= provider.Language;
definition.Capabilities = provider.Capabilities;
definition.Capabilities ??= provider.Capabilities;
}
}
@@ -284,7 +284,9 @@ namespace NzbDrone.Core.Indexers
if (definition.Enable && definition.Implementation is nameof(Newznab.Newznab) or nameof(Torznab.Torznab))
{
var settings = (NewznabSettings)definition.Settings;
settings.Categories = _newznabCapabilitiesProvider.GetCapabilities(settings, definition)?.Categories.GetTorznabCategoryList();
var capabilities = _newznabCapabilitiesProvider.GetCapabilities(settings, definition);
settings.Capabilities = new NewznabCapabilitiesSettings(capabilities);
}
if (definition.Implementation == nameof(Cardigann))
@@ -304,7 +306,9 @@ namespace NzbDrone.Core.Indexers
if (definition.Enable && definition.Implementation is nameof(Newznab.Newznab) or nameof(Torznab.Torznab))
{
var settings = (NewznabSettings)definition.Settings;
settings.Categories = _newznabCapabilitiesProvider.GetCapabilities(settings, definition)?.Categories.GetTorznabCategoryList();
var capabilities = _newznabCapabilitiesProvider.GetCapabilities(settings, definition);
settings.Capabilities = new NewznabCapabilitiesSettings(capabilities);
}
if (definition.Implementation == nameof(Cardigann))

View File

@@ -47,8 +47,8 @@
"Protocol": "بروتوكول",
"Analytics": "تحليلات",
"ProxyBypassFilterHelpText": "استخدم \"،\" كفاصل ، و \"*.\" كحرف بدل للنطاقات الفرعية",
"ProxyCheckBadRequestMessage": "فشل اختبار الوكيل. رمز الحالة: {0}",
"ProxyCheckFailedToTestMessage": "فشل اختبار الوكيل: {0}",
"ProxyBadRequestHealthCheckMessage": "فشل اختبار الوكيل. رمز الحالة: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "فشل اختبار الوكيل: {url}",
"ProxyPasswordHelpText": "ما عليك سوى إدخال اسم مستخدم وكلمة مرور إذا كان أحدهما مطلوبًا. اتركها فارغة وإلا.",
"ProxyUsernameHelpText": "ما عليك سوى إدخال اسم مستخدم وكلمة مرور إذا كان أحدهما مطلوبًا. اتركها فارغة وإلا.",
"Queue": "طابور",
@@ -68,7 +68,7 @@
"UnableToAddANewIndexerPleaseTryAgain": "غير قادر على إضافة مفهرس جديد ، يرجى المحاولة مرة أخرى.",
"UnableToLoadBackups": "تعذر تحميل النسخ الاحتياطية",
"UnsavedChanges": "التغييرات غير المحفوظة",
"UpdateCheckUINotWritableMessage": "لا يمكن تثبيت التحديث لأن مجلد واجهة المستخدم '{0}' غير قابل للكتابة بواسطة المستخدم '{1}'",
"UpdateUiNotWritableHealthCheckMessage": "لا يمكن تثبيت التحديث لأن مجلد واجهة المستخدم '{uiFolder}' غير قابل للكتابة بواسطة المستخدم '{userName}'",
"UpdateScriptPathHelpText": "المسار إلى برنامج نصي مخصص يأخذ حزمة تحديث مستخرجة ويتعامل مع ما تبقى من عملية التحديث",
"Username": "اسم المستخدم",
"Warn": "حذر",
@@ -76,7 +76,7 @@
"EnableInteractiveSearch": "تمكين البحث التفاعلي",
"Source": "مصدر",
"SSLCertPassword": "كلمة مرور شهادة SSL",
"UpdateCheckStartupNotWritableMessage": "لا يمكن تثبيت التحديث لأن مجلد بدء التشغيل \"{0}\" غير قابل للكتابة بواسطة المستخدم \"{1}\".",
"UpdateStartupNotWritableHealthCheckMessage": "لا يمكن تثبيت التحديث لأن مجلد بدء التشغيل \"{startupFolder}\" غير قابل للكتابة بواسطة المستخدم \"{userName}\".",
"UpdateMechanismHelpText": "استخدم المحدث أو البرنامج النصي المدمج في {appName}",
"AppDataDirectory": "دليل AppData",
"ConnectSettings": "ربط الإعدادات",
@@ -87,8 +87,8 @@
"Details": "تفاصيل",
"Donations": "التبرعات",
"DownloadClient": "تحميل العميل",
"IndexerStatusCheckAllClientMessage": "جميع المفهرسات غير متوفرة بسبب الفشل",
"IndexerStatusCheckSingleClientMessage": "المفهرسات غير متاحة بسبب الإخفاقات: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "جميع المفهرسات غير متوفرة بسبب الفشل",
"IndexerStatusUnavailableHealthCheckMessage": "المفهرسات غير متاحة بسبب الإخفاقات: {indexerNames}",
"Info": "معلومات",
"Interval": "فترة",
"Manual": "كتيب",
@@ -130,8 +130,8 @@
"IncludeHealthWarningsHelpText": "قم بتضمين التحذيرات الصحية",
"Indexer": "مفهرس",
"IndexerFlags": "أعلام المفهرس",
"IndexerLongTermStatusCheckAllClientMessage": "جميع المفهرسات غير متوفرة بسبب الفشل لأكثر من 6 ساعات",
"IndexerLongTermStatusCheckSingleClientMessage": "المفهرسات غير متاحة بسبب الإخفاقات لأكثر من 6 ساعات: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "جميع المفهرسات غير متوفرة بسبب الفشل لأكثر من 6 ساعات",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "المفهرسات غير متاحة بسبب الإخفاقات لأكثر من 6 ساعات: {indexerNames}",
"IndexerPriorityHelpText": "أولوية المفهرس من 1 (الأعلى) إلى 50 (الأدنى). الافتراضي: 25.",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "جميع المفهرسات غير متوفرة بسبب الفشل",
"NoChange": "لا تغيير",
@@ -185,7 +185,7 @@
"NetCore": ".شبكة",
"Password": "كلمه السر",
"Proxy": "الوكيل",
"ProxyCheckResolveIpMessage": "فشل حل عنوان IP لمضيف الخادم الوكيل المكون {0}",
"ProxyResolveIpHealthCheckMessage": "فشل حل عنوان IP لمضيف الخادم الوكيل المكون {proxyHostName}",
"ProxyType": "نوع الوكيل",
"ReleaseStatus": "حالة الإصدار",
"Search": "بحث",
@@ -212,8 +212,8 @@
"DeleteIndexerProxyMessageText": "هل أنت متأكد أنك تريد حذف العلامة \"{0}\"؟",
"DeleteNotification": "حذف الإعلام",
"DownloadClients": "تحميل العملاء",
"DownloadClientStatusCheckAllClientMessage": "جميع عملاء التنزيل غير متاحين بسبب الفشل",
"DownloadClientStatusCheckSingleClientMessage": "برامج التنزيل غير متاحة بسبب الإخفاقات: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "جميع عملاء التنزيل غير متاحين بسبب الفشل",
"DownloadClientStatusSingleClientHealthCheckMessage": "برامج التنزيل غير متاحة بسبب الإخفاقات: {downloadClientNames}",
"Edit": "تعديل",
"EditIndexer": "تحرير المفهرس",
"Enable": "ممكن",
@@ -260,7 +260,7 @@
"DownloadClientsLoadError": "تعذر تحميل عملاء التنزيل",
"UnableToLoadTags": "تعذر تحميل العلامات",
"UnableToLoadUISettings": "تعذر تحميل إعدادات واجهة المستخدم",
"UpdateCheckStartupTranslocationMessage": "لا يمكن تثبيت التحديث لأن مجلد بدء التشغيل \"{0}\" موجود في مجلد App Translocation.",
"UpdateStartupTranslocationHealthCheckMessage": "لا يمكن تثبيت التحديث لأن مجلد بدء التشغيل \"{startupFolder}\" موجود في مجلد App Translocation.",
"Updates": "التحديثات",
"Version": "الإصدار",
"ApiKey": "مفتاح API",
@@ -347,11 +347,13 @@
"WhatsNew": "ما هو الجديد؟",
"minutes": "الدقائق",
"NotificationStatusAllClientHealthCheckMessage": "جميع القوائم غير متاحة بسبب الإخفاقات",
"NotificationStatusSingleClientHealthCheckMessage": "القوائم غير متاحة بسبب الإخفاقات: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "القوائم غير متاحة بسبب الإخفاقات: {notificationNames}",
"AuthBasic": "أساسي (المتصفح المنبثق)",
"AuthForm": "النماذج (صفحة تسجيل الدخول)",
"DisabledForLocalAddresses": "معطل بسبب العناوين المحلية",
"None": "لا شيء",
"ResetAPIKeyMessageText": "هل أنت متأكد أنك تريد إعادة تعيين مفتاح API الخاص بك؟",
"RestartProwlarr": "أعد تشغيل {appName}"
"RestartProwlarr": "أعد تشغيل {appName}",
"CustomFilter": "مرشحات مخصصة",
"IndexerHDBitsSettingsMediums": "متوسط"
}

View File

@@ -102,7 +102,7 @@
"UnableToAddANewIndexerProxyPleaseTryAgain": "Не може да се добави нов индексатор, моля, опитайте отново.",
"UnableToAddANewNotificationPleaseTryAgain": "Не може да се добави ново известие, моля, опитайте отново.",
"UpdateAutomaticallyHelpText": "Автоматично изтегляне и инсталиране на актуализации. Все още ще можете да инсталирате от System: Updates",
"UpdateCheckStartupTranslocationMessage": "Не може да се инсталира актуализация, защото стартовата папка „{0}“ е в папка за преместване на приложения.",
"UpdateStartupTranslocationHealthCheckMessage": "Не може да се инсталира актуализация, защото стартовата папка „{startupFolder}“ е в папка за преместване на приложения.",
"ReleaseStatus": "Състояние на освобождаване",
"UpdateScriptPathHelpText": "Път към персонализиран скрипт, който взема извлечен пакет за актуализация и обработва останалата част от процеса на актуализация",
"UseProxy": "Използвай прокси",
@@ -200,9 +200,9 @@
"PortNumber": "Номер на пристанище",
"Proxy": "Прокси",
"ProxyBypassFilterHelpText": "Използвайте „,“ като разделител и „*“. като заместващ знак за поддомейни",
"ProxyCheckBadRequestMessage": "Неуспешно тестване на прокси. Код на състоянието: {0}",
"ProxyCheckFailedToTestMessage": "Неуспешно тестване на прокси: {0}",
"ProxyCheckResolveIpMessage": "Неуспешно разрешаване на IP адреса за конфигурирания прокси хост {0}",
"ProxyBadRequestHealthCheckMessage": "Неуспешно тестване на прокси. Код на състоянието: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Неуспешно тестване на прокси: {url}",
"ProxyResolveIpHealthCheckMessage": "Неуспешно разрешаване на IP адреса за конфигурирания прокси хост {proxyHostName}",
"ProxyPasswordHelpText": "Трябва само да въведете потребителско име и парола, ако е необходимо. В противен случай ги оставете празни.",
"ProxyType": "Тип прокси",
"ExistingTag": "Съществуващ маркер",
@@ -239,8 +239,8 @@
"Test": "Тест",
"UI": "Потребителски интерфейс",
"UILanguage": "Език на потребителския интерфейс",
"UpdateCheckStartupNotWritableMessage": "Не може да се инсталира актуализация, тъй като стартовата папка „{0}“ не може да се записва от потребителя „{1}“.",
"UpdateCheckUINotWritableMessage": "Не може да се инсталира актуализация, защото папката „{0}“ на потребителския интерфейс не може да се записва от потребителя „{1}“.",
"UpdateStartupNotWritableHealthCheckMessage": "Не може да се инсталира актуализация, тъй като стартовата папка „{startupFolder}“ не може да се записва от потребителя „{userName}“.",
"UpdateUiNotWritableHealthCheckMessage": "Не може да се инсталира актуализация, защото папката „{uiFolder}“ на потребителския интерфейс не може да се записва от потребителя „{userName}“.",
"Enable": "Активиране",
"EventType": "Тип на събитието",
"Failed": "Се провали",
@@ -253,13 +253,13 @@
"HideAdvanced": "Скрий Разширено",
"Indexer": "Индексатор",
"IndexerFlags": "Индексиращи знамена",
"IndexerLongTermStatusCheckAllClientMessage": "Всички индексатори са недостъпни поради грешки за повече от 6 часа",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Всички индексатори са недостъпни поради грешки за повече от 6 часа",
"SSLCertPathHelpText": "Път към pfx файл",
"UrlBaseHelpText": "За обратна поддръжка на прокси по подразбиране е празно",
"View": "Изглед",
"BranchUpdate": "Клон, който да се използва за актуализиране на {appName}",
"Indexers": "Индексатори",
"IndexerStatusCheckAllClientMessage": "Всички индексатори са недостъпни поради грешки",
"IndexerStatusAllUnavailableHealthCheckMessage": "Всички индексатори са недостъпни поради грешки",
"Mode": "Режим",
"TagsSettingsSummary": "Вижте всички тагове и как се използват. Неизползваните маркери могат да бъдат премахнати",
"TestAllClients": "Тествайте всички клиенти",
@@ -272,8 +272,8 @@
"Updates": "Актуализации",
"Uptime": "Време за работа",
"DownloadClientSettings": "Изтеглете настройките на клиента",
"DownloadClientStatusCheckAllClientMessage": "Всички клиенти за изтегляне са недостъпни поради неуспехи",
"DownloadClientStatusCheckSingleClientMessage": "Клиентите за изтегляне са недостъпни поради грешки: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Всички клиенти за изтегляне са недостъпни поради неуспехи",
"DownloadClientStatusSingleClientHealthCheckMessage": "Клиентите за изтегляне са недостъпни поради грешки: {downloadClientNames}",
"Edit": "редактиране",
"EnableAutomaticSearch": "Активирайте автоматичното търсене",
"EnableAutomaticSearchHelpText": "Ще се използва, когато се извършват автоматични търсения чрез потребителския интерфейс или от {appName}",
@@ -288,9 +288,9 @@
"GeneralSettingsSummary": "Порт, SSL, потребителско име / парола, прокси, анализи и актуализации",
"History": "История",
"Host": "Водещ",
"IndexerLongTermStatusCheckSingleClientMessage": "Индексатори не са налични поради неуспехи за повече от 6 часа: {0}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Индексатори не са налични поради неуспехи за повече от 6 часа: {indexerNames}",
"IndexerPriorityHelpText": "Приоритет на индексатора от 1 (най-висок) до 50 (най-нисък). По подразбиране: 25.",
"IndexerStatusCheckSingleClientMessage": "Индексатори не са налични поради грешки: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Индексатори не са налични поради грешки: {indexerNames}",
"LaunchBrowserHelpText": " Отворете уеб браузър и отворете началната страница на {appName} при стартиране на приложението.",
"ResetAPIKey": "Нулиране на API ключ",
"Restart": "Рестартирам",
@@ -346,12 +346,14 @@
"RecentChanges": "Последни промени",
"WhatsNew": "Какво ново?",
"minutes": "Минути",
"NotificationStatusSingleClientHealthCheckMessage": "Списъци, недостъпни поради неуспехи: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Списъци, недостъпни поради неуспехи: {notificationNames}",
"NotificationStatusAllClientHealthCheckMessage": "Всички списъци са недостъпни поради неуспехи",
"AuthBasic": "Основно (изскачащ прозорец на браузъра)",
"AuthForm": "Формуляри (Страница за вход)",
"DisabledForLocalAddresses": "Забранено за местни адреси",
"None": "Нито един",
"ResetAPIKeyMessageText": "Наистина ли искате да нулирате своя API ключ?",
"RestartProwlarr": "Рестартирайте {appName}"
"RestartProwlarr": "Рестартирайте {appName}",
"IndexerHDBitsSettingsMediums": "Среден",
"CustomFilter": "Персонализирани филтри"
}

View File

@@ -74,7 +74,7 @@
"Retention": "Retenció",
"Title": "Títol",
"DeleteNotification": "Suprimeix la notificació",
"ProxyCheckBadRequestMessage": "No s'ha pogut provar el servidor intermediari. Codi d'estat: {0}",
"ProxyBadRequestHealthCheckMessage": "No s'ha pogut provar el servidor intermediari. Codi d'estat: {statusCode}",
"Reddit": "Reddit",
"System": "Sistema",
"Username": "Nom d'usuari",
@@ -128,8 +128,8 @@
"Filters": "Filtres",
"FocusSearchBox": "Posa el focus a la caixa de cerca",
"Grabbed": "Capturat",
"IndexerStatusCheckAllClientMessage": "Tots els indexadors no estan disponibles a causa d'errors",
"IndexerStatusCheckSingleClientMessage": "Els indexadors no estan disponibles a causa d'errors: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Tots els indexadors no estan disponibles a causa d'errors",
"IndexerStatusUnavailableHealthCheckMessage": "Els indexadors no estan disponibles a causa d'errors: {indexerNames}",
"MovieIndexScrollTop": "Índex de pel·lícules: Desplaçament superior",
"NotificationTriggers": "Activadors de notificacions",
"NotificationTriggersHelpText": "Seleccioneu quins esdeveniments haurien d'activar aquesta notificació",
@@ -175,7 +175,7 @@
"DeleteTagMessageText": "Esteu segur que voleu suprimir l'etiqueta '{label}'?",
"Details": "Detalls",
"Disabled": "Desactivat",
"DownloadClientStatusCheckAllClientMessage": "Tots els clients de descàrrega no estan disponibles a causa d'errors",
"DownloadClientStatusAllClientHealthCheckMessage": "Tots els clients de descàrrega no estan disponibles a causa d'errors",
"Edit": "Edita",
"EnableInteractiveSearchHelpText": "S'utilitzarà quan s'utilitzi la cerca interactiva",
"EnableInteractiveSearch": "Activa la cerca interactiva",
@@ -198,8 +198,8 @@
"OnApplicationUpdateHelpText": "A l'actualitzar de l'aplicació",
"OnGrab": "Al capturar",
"PackageVersion": "Versió del paquet",
"ProxyCheckFailedToTestMessage": "No s'ha pogut provar el servidor intermediari: {0}",
"ProxyCheckResolveIpMessage": "No s'ha pogut resoldre l'adreça IP de l'amfitrió intermediari configurat {0}",
"ProxyFailedToTestHealthCheckMessage": "No s'ha pogut provar el servidor intermediari: {url}",
"ProxyResolveIpHealthCheckMessage": "No s'ha pogut resoldre l'adreça IP de l'amfitrió intermediari configurat {proxyHostName}",
"Queued": "En cua",
"ReadTheWikiForMoreInformation": "Llegiu el Wiki per a més informació",
"RestartRequiredHelpTextWarning": "Cal reiniciar perquè tingui efecte",
@@ -235,13 +235,13 @@
"Enable": "Activa",
"IndexerFlags": "Indicadors de l'indexador",
"UnableToLoadNotifications": "No es poden carregar les notificacions",
"IndexerLongTermStatusCheckAllClientMessage": "Tots els indexadors no estan disponibles a causa d'errors durant més de 6 hores",
"IndexerLongTermStatusCheckSingleClientMessage": "Els indexadors no estan disponibles a causa d'errors durant més de 6 hores: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Tots els indexadors no estan disponibles a causa d'errors durant més de 6 hores",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Els indexadors no estan disponibles a causa d'errors durant més de 6 hores: {indexerNames}",
"IndexerPriority": "Prioritat de l'indexador",
"UnsavedChanges": "Canvis no desats",
"UpdateAutomaticallyHelpText": "Baixeu i instal·leu les actualitzacions automàticament. Encara podreu instal·lar des de Sistema: Actualitzacions",
"UpdateCheckStartupTranslocationMessage": "No es pot instal·lar l'actualització perquè la carpeta d'inici \"{0}\" es troba en una carpeta de translocació d'aplicacions.",
"UpdateCheckUINotWritableMessage": "No es pot instal·lar l'actualització perquè l'usuari '{1}' no pot escriure la carpeta de la IU '{0}'.",
"UpdateStartupTranslocationHealthCheckMessage": "No es pot instal·lar l'actualització perquè la carpeta d'inici \"{startupFolder}\" es troba en una carpeta de translocació d'aplicacions.",
"UpdateUiNotWritableHealthCheckMessage": "No es pot instal·lar l'actualització perquè l'usuari '{userName}' no pot escriure la carpeta de la IU '{uiFolder}'.",
"UpdateScriptPathHelpText": "Camí a un script personalitzat que pren un paquet d'actualització i gestiona la resta del procés d'actualització",
"Uptime": "Temps de funcionament",
"Info": "Informació",
@@ -266,7 +266,7 @@
"Discord": "Discord",
"Docker": "Docker",
"Donations": "Donacions",
"DownloadClientStatusCheckSingleClientMessage": "Baixa els clients no disponibles a causa d'errors: {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Baixa els clients no disponibles a causa d'errors: {downloadClientNames}",
"HealthNoIssues": "No hi ha cap problema amb la configuració",
"HideAdvanced": "Amaga avançat",
"History": "Història",
@@ -294,7 +294,7 @@
"UnableToAddANewNotificationPleaseTryAgain": "No es pot afegir una notificació nova, torneu-ho a provar.",
"UnableToLoadGeneralSettings": "No es pot carregar la configuració general",
"UnableToLoadHistory": "No es pot carregar l'historial",
"UpdateCheckStartupNotWritableMessage": "No es pot instal·lar l'actualització perquè l'usuari \"{1}\" no pot escriure la carpeta d'inici \"{0}\".",
"UpdateStartupNotWritableHealthCheckMessage": "No es pot instal·lar l'actualització perquè l'usuari \"{userName}\" no pot escriure la carpeta d'inici \"{startupFolder}\".",
"URLBase": "Base URL",
"Usenet": "Usenet",
"View": "Visualitza",
@@ -362,14 +362,14 @@
"Theme": "Tema",
"Track": "Traça",
"Year": "Any",
"UpdateAvailable": "Nova actualització disponible",
"UpdateAvailableHealthCheckMessage": "Nova actualització disponible",
"ConnectionLostReconnect": "{appName} intentarà connectar-se automàticament, o podeu fer clic a recarregar.",
"ConnectionLostToBackend": "{appName} ha perdut la connexió amb el backend i s'haurà de tornar a carregar per a restaurar la funcionalitat.",
"RecentChanges": "Canvis recents",
"WhatsNew": "Que hi ha de nou?",
"minutes": "Minuts",
"DeleteAppProfileMessageText": "Esteu segur que voleu suprimir el perfil de qualitat {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Llistes no disponibles a causa d'errors: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Llistes no disponibles a causa d'errors: {notificationNames}",
"AddConnection": "Afegeix una connexió",
"NotificationStatusAllClientHealthCheckMessage": "Totes les notificacions no estan disponibles a causa d'errors",
"AuthBasic": "Basic (finestra emergent del navegador)",
@@ -394,7 +394,7 @@
"EditIndexerImplementation": "Edita l'indexador - {implementationName}",
"EditSelectedDownloadClients": "Editeu els clients de descàrrega seleccionats",
"EditSelectedIndexers": "Edita els indexadors seleccionats",
"IndexerDownloadClientHealthCheckMessage": "Indexadors amb clients de baixada no vàlids: {0}.",
"IndexerDownloadClientHealthCheckMessage": "Indexadors amb clients de baixada no vàlids: {indexerNames}.",
"AddCustomFilter": "Afegeix un filtre personalitzat",
"AddDownloadClientImplementation": "Afegeix un client de descàrrega - {implementationName}",
"AddIndexerImplementation": "Afegeix un indexador - {implementationName}",
@@ -438,5 +438,10 @@
"Destination": "Destinació",
"Directory": "Directori",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Afegeix un prefix a l'url json del Deluge, vegeu {url}",
"CustomFilter": "Filtres personalitzats"
"CustomFilter": "Filtres personalitzats",
"IndexerHDBitsSettingsCodecs": "Còdec",
"DownloadClientSettingsUrlBaseHelpText": "Afegeix un prefix a l'URL {connectionName}, com ara {url}",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Ubicació opcional per a les baixades, deixeu-lo en blanc per utilitzar la ubicació predeterminada d'Aria2",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Ubicació opcional de les baixades completades, deixeu-lo en blanc per utilitzar la ubicació predeterminada de Deluge",
"IndexerHDBitsSettingsMediums": "Suport"
}

View File

@@ -23,7 +23,7 @@
"ProxyType": "Typ serveru proxy",
"Reddit": "Reddit",
"ErrorLoadingContents": "Chyba při načítání obsahu",
"IndexerLongTermStatusCheckAllClientMessage": "Všechny indexery nejsou k dispozici z důvodu selhání po dobu delší než 6 hodin",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání po dobu delší než 6 hodin",
"RemovedFromTaskQueue": "Odebráno z fronty úkolů",
"ResetAPIKey": "Resetovat klíč API",
"SSLCertPassword": "Heslo SSL Cert",
@@ -41,8 +41,8 @@
"Docker": "Přístavní dělník",
"Donations": "Dary",
"DownloadClientSettings": "Stáhněte si nastavení klienta",
"DownloadClientStatusCheckAllClientMessage": "Všichni klienti pro stahování nejsou kvůli chybám k dispozici",
"DownloadClientStatusCheckSingleClientMessage": "Stahování klientů není k dispozici z důvodu selhání: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Všichni klienti pro stahování nejsou kvůli chybám k dispozici",
"DownloadClientStatusSingleClientHealthCheckMessage": "Stahování klientů není k dispozici z důvodu selhání: {downloadClientNames}",
"Folder": "Složka",
"Grabs": "Urvat",
"HealthNoIssues": "Žádné problémy s vaší konfigurací",
@@ -55,7 +55,7 @@
"IndexerPriority": "Priorita indexování",
"IndexerPriorityHelpText": "Priorita indexování od 1 (nejvyšší) do 50 (nejnižší). Výchozí: 25.",
"Indexers": "Indexery",
"IndexerStatusCheckAllClientMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
"IndexerStatusAllUnavailableHealthCheckMessage": "Všechny indexery nejsou k dispozici z důvodu selhání",
"LastWriteTime": "Čas posledního zápisu",
"Level": "Úroveň",
"LogLevel": "Úroveň protokolu",
@@ -67,7 +67,7 @@
"Ok": "OK",
"SendAnonymousUsageData": "Odesílejte anonymní údaje o používání",
"UnselectAll": "Odznačit vše",
"UpdateCheckStartupNotWritableMessage": "Aktualizaci nelze nainstalovat, protože spouštěcí složku „{0}“ nelze zapisovat uživatelem „{1}“.",
"UpdateStartupNotWritableHealthCheckMessage": "Aktualizaci nelze nainstalovat, protože spouštěcí složku „{startupFolder}“ nelze zapisovat uživatelem „{userName}“.",
"Version": "Verze",
"AnalyticsEnabledHelpText": "Odesílejte anonymní informace o použití a chybách na servery {appName}u. To zahrnuje informace o vašem prohlížeči, které stránky {appName} WebUI používáte, hlášení chyb a také verzi operačního systému a běhového prostředí. Tyto informace použijeme k upřednostnění funkcí a oprav chyb.",
"ApiKey": "Klíč API",
@@ -124,9 +124,9 @@
"Grabbed": "Popadl",
"Health": "Zdraví",
"LogLevelTraceHelpTextWarning": "Trasování protokolování by mělo být povoleno pouze dočasně",
"ProxyCheckBadRequestMessage": "Nepodařilo se otestovat proxy. StatusCode: {0}",
"ProxyCheckFailedToTestMessage": "Nepodařilo se otestovat proxy: {0}",
"ProxyCheckResolveIpMessage": "Nepodařilo se vyřešit adresu IP konfigurovaného hostitele proxy {0}",
"ProxyBadRequestHealthCheckMessage": "Nepodařilo se otestovat proxy. StatusCode: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Nepodařilo se otestovat proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "Nepodařilo se vyřešit adresu IP konfigurovaného hostitele proxy {proxyHostName}",
"ProxyPasswordHelpText": "Musíte pouze zadat uživatelské jméno a heslo, pokud je požadováno. Jinak je nechte prázdné.",
"ProxyUsernameHelpText": "Musíte pouze zadat uživatelské jméno a heslo, pokud je požadováno. Jinak je nechte prázdné.",
"Queue": "Fronta",
@@ -161,8 +161,8 @@
"UnableToAddANewIndexerPleaseTryAgain": "Nelze přidat nový indexer, zkuste to znovu.",
"UnableToAddANewIndexerProxyPleaseTryAgain": "Nelze přidat nový indexer, zkuste to znovu.",
"UnableToLoadNotifications": "Nelze načíst oznámení",
"UpdateCheckStartupTranslocationMessage": "Aktualizaci nelze nainstalovat, protože spouštěcí složka „{0}“ je ve složce Translocation aplikace.",
"UpdateCheckUINotWritableMessage": "Aktualizaci nelze nainstalovat, protože uživatelská složka „{0}“ není zapisovatelná uživatelem „{1}“.",
"UpdateStartupTranslocationHealthCheckMessage": "Aktualizaci nelze nainstalovat, protože spouštěcí složka „{startupFolder}“ je ve složce Translocation aplikace.",
"UpdateUiNotWritableHealthCheckMessage": "Aktualizaci nelze nainstalovat, protože uživatelská složka „{uiFolder}“ není zapisovatelná uživatelem „{userName}“.",
"UpdateMechanismHelpText": "Použijte vestavěný aktualizátor {appName} nebo skript",
"UpdateScriptPathHelpText": "Cesta k vlastnímu skriptu, který přebírá extrahovaný balíček aktualizace a zpracovává zbytek procesu aktualizace",
"Uptime": "Provozuschopnost",
@@ -265,8 +265,8 @@
"Exception": "Výjimka",
"ExistingTag": "Stávající značka",
"IllRestartLater": "Restartuji později",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {0}",
"IndexerStatusCheckSingleClientMessage": "Indexery nedostupné z důvodu selhání: {0}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání po dobu delší než 6 hodin: {indexerNames}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexery nedostupné z důvodu selhání: {indexerNames}",
"SettingsTimeFormat": "Časový formát",
"ShowAdvanced": "Zobrazit pokročilé",
"ShowSearch": "Zobrazit vyhledávání",
@@ -353,7 +353,7 @@
"ApplicationURL": "URL aplikace",
"ApplicationUrlHelpText": "Externí adresa URL této aplikace včetně http(s)://, portu a základní adresy URL",
"ApplyChanges": "Použít změny",
"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",
"AppUpdated": "{appName} aktualizován",
"AddDownloadClientImplementation": "Přidat klienta pro stahování - {implementationName}",
"AuthenticationRequired": "Vyžadované ověření",
@@ -371,7 +371,7 @@
"EditIndexerImplementation": "Upravit indexer - {implementationName}",
"Episode": "epizoda",
"NotificationStatusAllClientHealthCheckMessage": "Všechny seznamy nejsou k dispozici z důvodu selhání",
"NotificationStatusSingleClientHealthCheckMessage": "Seznamy nejsou k dispozici z důvodu selhání: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Seznamy nejsou k dispozici z důvodu selhání: {notificationNames}",
"Application": "Aplikace",
"AppUpdatedVersion": "{appName} byl aktualizován na verzi `{version}`, abyste získali nejnovější změny, musíte znovu načíst {appName}",
"Encoding": "Kódování",
@@ -408,5 +408,9 @@
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Potvrďte nové heslo",
"days": "dnů",
"Id": "ID",
"CountApplicationsSelected": "Vybráno {0} kolekcí"
"CountApplicationsSelected": "Vybráno {0} kolekcí",
"IndexerHDBitsSettingsCodecs": "Kodek",
"IndexerHDBitsSettingsMediums": "Střední",
"Directory": "Adresář",
"CustomFilter": "Vlastní filtry"
}

View File

@@ -3,8 +3,8 @@
"Language": "Sprog",
"KeyboardShortcuts": "Keyboard Genveje",
"Info": "Information",
"IndexerStatusCheckSingleClientMessage": "Indexere utilgængelige på grund af fejl: {0}",
"IndexerStatusCheckAllClientMessage": "Alle indeksører er utilgængelige på grund af fejl",
"IndexerStatusUnavailableHealthCheckMessage": "Indexere utilgængelige på grund af fejl: {indexerNames}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle indeksører er utilgængelige på grund af fejl",
"Indexers": "Indexere",
"History": "Historie",
"HideAdvanced": "Gemt Avancerede",
@@ -21,8 +21,8 @@
"Events": "Begivenheder",
"Error": "Fejl",
"Edit": "Rediger",
"DownloadClientStatusCheckSingleClientMessage": "Download klienter er ikke tilgængelige på grund af fejl: {0}",
"DownloadClientStatusCheckAllClientMessage": "Alle download klienter er utilgængelige på grund af fejl",
"DownloadClientStatusSingleClientHealthCheckMessage": "Download klienter er ikke tilgængelige på grund af fejl: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Alle download klienter er utilgængelige på grund af fejl",
"DownloadClientsSettingsSummary": "Indstilling af downloadklienter til brug for {appName}s søgefunktion",
"DownloadClients": "Download Klienter",
"DownloadClient": "Download Klient",
@@ -135,8 +135,8 @@
"IllRestartLater": "Jeg genstarter senere",
"IncludeHealthWarningsHelpText": "Inkluder sundhedsadvarsler",
"Indexer": "Indekser",
"IndexerLongTermStatusCheckAllClientMessage": "Alle indeksatorer er ikke tilgængelige på grund af fejl i mere end 6 timer",
"IndexerLongTermStatusCheckSingleClientMessage": "Indeksatorer er ikke tilgængelige på grund af fejl i mere end 6 timer: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Alle indeksatorer er ikke tilgængelige på grund af fejl i mere end 6 timer",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indeksatorer er ikke tilgængelige på grund af fejl i mere end 6 timer: {indexerNames}",
"IndexerPriority": "Indekseringsprioritet",
"IndexerPriorityHelpText": "Indekseringsprioritet fra 1 (højest) til 50 (lavest). Standard: 25.",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Alle indexere er utilgængelige på grund af fejl",
@@ -173,9 +173,9 @@
"Priority": "Prioritet",
"Protocol": "Protokol",
"ProxyBypassFilterHelpText": "Brug ',' som en separator og '*.' som et jokertegn for underdomæner",
"ProxyCheckBadRequestMessage": "Kunne ikke teste proxy. Statuskode: {0}",
"ProxyCheckFailedToTestMessage": "Kunne ikke teste proxy: {0}",
"ProxyCheckResolveIpMessage": "Mislykkedes at løse IP-adressen til den konfigurerede proxyhost {0}",
"ProxyBadRequestHealthCheckMessage": "Kunne ikke teste proxy. Statuskode: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Kunne ikke teste proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "Mislykkedes at løse IP-adressen til den konfigurerede proxyhost {proxyHostName}",
"ProxyPasswordHelpText": "Du skal kun indtaste et brugernavn og en adgangskode, hvis der kræves et. Lad dem være tomme ellers.",
"ProxyUsernameHelpText": "Du skal kun indtaste et brugernavn og en adgangskode, hvis der kræves et. Lad dem være tomme ellers.",
"ReadTheWikiForMoreInformation": "Læs Wiki for mere information",
@@ -239,8 +239,8 @@
"UnableToLoadUISettings": "UI-indstillingerne kunne ikke indlæses",
"UnselectAll": "Fravælg alle",
"UpdateAutomaticallyHelpText": "Download og installer opdateringer automatisk. Du kan stadig installere fra System: Updates",
"UpdateCheckStartupNotWritableMessage": "Kan ikke installere opdatering, fordi startmappen '{0}' ikke kan skrives af brugeren '{1}'.",
"UpdateCheckUINotWritableMessage": "Kan ikke installere opdatering, fordi brugergrænsefladen \"{0}\" ikke kan skrives af brugeren \"{1}\".",
"UpdateStartupNotWritableHealthCheckMessage": "Kan ikke installere opdatering, fordi startmappen '{startupFolder}' ikke kan skrives af brugeren '{userName}'.",
"UpdateUiNotWritableHealthCheckMessage": "Kan ikke installere opdatering, fordi brugergrænsefladen \"{uiFolder}\" ikke kan skrives af brugeren \"{userName}\".",
"UpdateScriptPathHelpText": "Sti til et brugerdefineret script, der tager en udpakket opdateringspakke og håndterer resten af opdateringsprocessen",
"Uptime": "Oppetid",
"URLBase": "URL-base",
@@ -265,7 +265,7 @@
"StartupDirectory": "Startmappe",
"Status": "Status",
"DownloadClientsLoadError": "Kunne ikke indlæse downloadklienter",
"UpdateCheckStartupTranslocationMessage": "Kan ikke installere opdatering, fordi startmappen '{0}' er i en App Translocation-mappe.",
"UpdateStartupTranslocationHealthCheckMessage": "Kan ikke installere opdatering, fordi startmappen '{startupFolder}' er i en App Translocation-mappe.",
"UpdateMechanismHelpText": "Brug den indbyggede opdateringsfunktion eller et script",
"View": "Udsigt",
"Warn": "Advare",
@@ -363,7 +363,7 @@
"ConnectionLostReconnect": "Radarr vil prøve at tilslutte automatisk, eller du kan klikke genindlæs forneden.",
"minutes": "Protokoller",
"NotificationStatusAllClientHealthCheckMessage": "Alle lister er utilgængelige på grund af fejl",
"NotificationStatusSingleClientHealthCheckMessage": "Lister utilgængelige på grund af fejl: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Lister utilgængelige på grund af fejl: {notificationNames}",
"AuthForm": "Formularer (login-side)",
"DisabledForLocalAddresses": "Deaktiveret for lokale adresser",
"ResetAPIKeyMessageText": "Er du sikker på, at du vil nulstille din API-nøgle?",
@@ -377,5 +377,20 @@
"AddApplicationImplementation": "Tilføj forbindelse - {implementationName}",
"AddIndexerImplementation": "Tilføj betingelse - {implementationName}",
"ApplyChanges": "Anvend ændringer",
"AddDownloadClientImplementation": "Tilføj downloadklient - {implementationName}"
"AddDownloadClientImplementation": "Tilføj downloadklient - {implementationName}",
"Album": "album",
"Theme": "Tema",
"Categories": "Kategorier",
"Application": "Applikationer",
"EditIndexerProxyImplementation": "Tilføj betingelse - {implementationName}",
"Publisher": "Udgiver",
"IndexerHDBitsSettingsCodecs": "codec",
"Applications": "Applikationer",
"AddIndexerProxyImplementation": "Tilføj betingelse - {implementationName}",
"EditIndexerImplementation": "Tilføj betingelse - {implementationName}",
"Directory": "Mappe",
"EditApplicationImplementation": "Tilføj forbindelse - {implementationName}",
"EditDownloadClientImplementation": "Tilføj downloadklient - {implementationName}",
"IndexerHDBitsSettingsMediums": "Medium",
"CustomFilter": "Bruger Tilpassede Filtere"
}

View File

@@ -20,7 +20,7 @@
"Analytics": "Analysen",
"AnalyticsEnabledHelpText": "Senden Sie anonyme Nutzungs- und Fehlerinformationen an die Server von {appName}. Dazu gehören Informationen zu Ihrem Browser, welche {appName}-WebUI-Seiten Sie verwenden, Fehlerberichte sowie Betriebssystem- und Laufzeitversion. Wir werden diese Informationen verwenden, um Funktionen und Fehlerbehebungen zu priorisieren.",
"ApiKey": "API-Schlüssel",
"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",
"AppDataDirectory": "AppData-Verzeichnis",
"AppDataLocationHealthCheckMessage": "Ein Update ist nicht möglich, um das Löschen von AppData beim Update zu verhindern",
"AppProfileInUse": "App-Profil im Einsatz",
@@ -89,15 +89,15 @@
"DeleteApplication": "Applikation löschen",
"DeleteApplicationMessageText": "Wirklich die Applikation '{0}' löschen?",
"DeleteBackup": "Sicherung löschen",
"DeleteBackupMessageText": "Sind Sie sicher, dass Sie die Sicherung „{name}“ löschen möchten?",
"DeleteBackupMessageText": "Soll das Backup '{name}' wirklich gelöscht werden?",
"DeleteDownloadClient": "Download-Client löschen",
"DeleteDownloadClientMessageText": "Sind Sie sicher, dass Sie den Download-Client {name} löschen möchten?",
"DeleteDownloadClientMessageText": "Bist du sicher, dass du den Download Client '{name}' wirklich löschen willst?",
"DeleteIndexerProxy": "Indexer Proxy löschen",
"DeleteIndexerProxyMessageText": "Tag '{0}' wirklich löschen?",
"DeleteNotification": "Benachrichtigung löschen",
"DeleteNotificationMessageText": "Sind Sie sicher, dass Sie die Benachrichtigung {name}“ löschen möchten?",
"DeleteNotificationMessageText": "Bist du sicher, dass du die Benachrichtigung '{name}' wirklich löschen willst?",
"DeleteTag": "Tag löschen",
"DeleteTagMessageText": "Sind Sie sicher, dass Sie das Tag {label}“ löschen möchten?",
"DeleteTagMessageText": "Bist du sicher, dass du den Tag '{label}' wirklich löschen willst?",
"Description": "Beschreibung",
"Details": "Einzelheiten",
"DevelopmentSettings": "Entwicklungseinstellungen",
@@ -107,8 +107,8 @@
"Donations": "Spenden",
"DownloadClient": "Download Client",
"DownloadClientSettings": "Downloader Einstellungen",
"DownloadClientStatusCheckAllClientMessage": "Alle Download Clients sind aufgrund von Fehlern nicht verfügbar",
"DownloadClientStatusCheckSingleClientMessage": "Download Clients aufgrund von Fehlern nicht verfügbar: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Alle Download Clients sind aufgrund von Fehlern nicht verfügbar",
"DownloadClientStatusSingleClientHealthCheckMessage": "Download Clients aufgrund von Fehlern nicht verfügbar: {downloadClientNames}",
"DownloadClients": "Downloader",
"DownloadClientsSettingsSummary": "Download der Client-Konfigurationen für die Integration in die {appName} UI-Suche",
"Duration": "Dauer",
@@ -176,8 +176,8 @@
"IndexerFlags": "Indexer-Flags",
"IndexerHealthCheckNoIndexers": "Keine Indexer aktiviert, {appName} wird keine Suchergebnisse zurückgeben",
"IndexerInfo": "Indexer-Info",
"IndexerLongTermStatusCheckAllClientMessage": "Alle Indexer sind wegen über 6 Stunden langen bestehender Fehler nicht verfügbar",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexer wegen über 6 Stunden langen bestehenden Fehlern nicht verfügbar: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind wegen über 6 Stunden langen bestehender Fehler nicht verfügbar",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexer wegen über 6 Stunden langen bestehenden Fehlern nicht verfügbar: {indexerNames}",
"IndexerName": "Indexer-Name",
"IndexerNoDefCheckMessage": "Indexer haben keine Definition und werden nicht funktionieren: {0}. Bitte entferne und (oder) füge diese neu zu {appName} hinzu",
"IndexerObsoleteCheckMessage": "Indexer sind nicht mehr verfügbar oder wurden aktualiiert: {0}. Bitte enfernen und (oder) neu zu {appName} hinzufügen",
@@ -191,11 +191,11 @@
"IndexerRss": "Indexer RSS",
"IndexerSettingsSummary": "Konfiguration verschiedener globaler Indexer Einstellungen, einschließlich Proxies.",
"IndexerSite": "Indexer-Seite",
"IndexerStatusCheckAllClientMessage": "Alle Indexer sind aufgrund von Fehlern nicht verfügbar",
"IndexerStatusCheckSingleClientMessage": "Indexer aufgrund von Fehlern nicht verfügbar: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle Indexer sind aufgrund von Fehlern nicht verfügbar",
"IndexerStatusUnavailableHealthCheckMessage": "Indexer aufgrund von Fehlern nicht verfügbar: {indexerNames}",
"IndexerTagsHelpText": "Benutze Tags, um Indexer-Proxies zu spezifizieren, mit welchen Apps der Indexer synchronisiert oder um Indexer zu organisieren.",
"IndexerVipCheckExpiredClientMessage": "Die VIP Indexer Vorteile sind abgelaufen: {0}",
"IndexerVipCheckExpiringClientMessage": "Die Indexer VIP Vorteile verfallen bald: {0}",
"IndexerVipExpiredHealthCheckMessage": "Die VIP Indexer Vorteile sind abgelaufen: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Die Indexer VIP Vorteile verfallen bald: {indexerNames}",
"Indexers": "Indexer",
"Info": "Info",
"InstanceName": "Instanzname",
@@ -216,7 +216,7 @@
"Logging": "Protokollierung",
"Logs": "Protokolle",
"MIA": "MIA",
"MaintenanceRelease": "Wartung: Fehlerbehebung und andere Verbesserungen. Siehe Github Commit History für weitere Details",
"MaintenanceRelease": "Maintenance Release: Fehlerbehebungen und andere Verbesserungen. Siehe Github Commit Verlauf für weitere Details",
"Manual": "Manuell",
"MappedDrivesRunningAsService": "Zugeordnete Netzlaufwerke sind nicht verfügbar, wenn {appName} als Windows-Dienst ausgeführt wird. Bitte lesen Sie die FAQ für weitere Informationen",
"MassEditor": "Masseneditor",
@@ -281,9 +281,9 @@
"Proxies": "Proxies",
"Proxy": "Proxy",
"ProxyBypassFilterHelpText": "Verwenden Sie ',' als Trennzeichen und '*.' als Wildcard für Subdomains",
"ProxyCheckBadRequestMessage": "Proxy konnte nicht getestet werden. StatusCode: {0}",
"ProxyCheckFailedToTestMessage": "Proxy konnte nicht getestet werden: {0}",
"ProxyCheckResolveIpMessage": "Fehler beim Auflösen der IP-Adresse für den konfigurierten Proxy-Host {0}",
"ProxyBadRequestHealthCheckMessage": "Proxy konnte nicht getestet werden. StatusCode: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Proxy konnte nicht getestet werden: {url}",
"ProxyResolveIpHealthCheckMessage": "Fehler beim Auflösen der IP-Adresse für den konfigurierten Proxy-Host {proxyHostName}",
"ProxyPasswordHelpText": "Sie müssen nur einen Benutzernamen und ein Passwort eingeben, wenn dies erforderlich ist. Andernfalls lassen Sie sie leer.",
"ProxyType": "Proxy-Typ",
"ProxyUsernameHelpText": "Sie müssen nur einen Benutzernamen und ein Passwort eingeben, wenn dies erforderlich ist. Andernfalls lassen Sie sie leer.",
@@ -432,9 +432,9 @@
"UnsavedChanges": "Nicht gespeicherte Änderungen",
"UnselectAll": "Alle abwählen",
"UpdateAutomaticallyHelpText": "Updates automatisch herunterladen und installieren. Sie können weiterhin über System: Updates installieren",
"UpdateCheckStartupNotWritableMessage": "Update kann nicht installiert werden, da der Startordner '{0}' vom Benutzer '{1}' nicht beschreibbar ist.",
"UpdateCheckStartupTranslocationMessage": "Update kann nicht installiert werden, da sich der Startordner '{0}' in einem App Translocation-Ordner befindet.",
"UpdateCheckUINotWritableMessage": "Update kann nicht installiert werden, da der Benutzeroberflächenordner '{0}' vom Benutzer '{1}' nicht beschreibbar ist.",
"UpdateStartupNotWritableHealthCheckMessage": "Update kann nicht installiert werden, da der Startordner '{startupFolder}' vom Benutzer '{userName}' nicht beschreibbar ist.",
"UpdateStartupTranslocationHealthCheckMessage": "Update kann nicht installiert werden, da sich der Startordner '{startupFolder}' in einem App Translocation-Ordner befindet.",
"UpdateUiNotWritableHealthCheckMessage": "Update kann nicht installiert werden, da der Benutzeroberflächenordner '{uiFolder}' vom Benutzer '{userName}' nicht beschreibbar ist.",
"UpdateMechanismHelpText": "Verwenden Sie den integrierten Updater von {appName} oder ein Skript",
"UpdateScriptPathHelpText": "Pfad zu einem benutzerdefinierten Skript, das ein extrahiertes Update-Paket übernimmt und den Rest des Update-Prozesses abwickelt",
"Updates": "Aktualisierung",
@@ -471,11 +471,11 @@
"NoIndexersFound": "Keine Indexer gefunden",
"Theme": "Design",
"Season": "Staffel",
"ApplyTagsHelpTextAdd": "Hinzufügen: Fügen Sie die Tags der vorhandenen Tag-Liste hinzu",
"ApplyTagsHelpTextAdd": "Hinzufügen: Füge Tags zu den bestehenden Tags hinzu",
"ApplyTagsHelpTextHowToApplyApplications": "Wie werden Tags zu ausgewählten Autoren zugeteilt",
"ApplyTagsHelpTextHowToApplyIndexers": "So wenden Sie Tags auf die ausgewählten Indexer an",
"ApplyTagsHelpTextRemove": "Entfernen: Die eingegebenen Tags entfernen",
"ApplyTagsHelpTextReplace": "Ersetzen: Ersetzen Sie die Tags durch die eingegebenen Tags (geben Sie keine Tags ein, um alle Tags zu löschen).",
"ApplyTagsHelpTextHowToApplyIndexers": "Wie Tags zu den selektierten Indexern hinzugefügt werden können",
"ApplyTagsHelpTextRemove": "Entfernen: Entferne die hinterlegten Tags",
"ApplyTagsHelpTextReplace": "Ersetzen: Ersetze die Tags mit den eingegebenen Tags (keine Tags eingeben um alle Tags zu löschen)",
"DownloadClientPriorityHelpText": "Priorisiere mehrere Downloader. Rundlauf-Verfahren wird für Downloader mit der gleichen Priorität verwendet.",
"EditSelectedIndexers": "Ausgewähle Indexer bearbeiten",
"SelectIndexers": "Indexer suchen",
@@ -485,10 +485,10 @@
"More": "Mehr",
"Publisher": "Herausgeber",
"Track": "Trace",
"UpdateAvailable": "Neue Version verfügbar",
"UpdateAvailableHealthCheckMessage": "Neue Version verfügbar",
"Year": "Jahr",
"Album": "Album",
"Artist": "Künstler",
"Artist": "Interpret",
"Author": "Autor",
"Book": "Buch",
"ConnectionLostReconnect": "{appName} wird versuchen, automatisch eine Verbindung herzustellen, oder Sie können unten auf „Neu laden“ klicken.",
@@ -499,7 +499,7 @@
"DeleteAppProfileMessageText": "Qualitätsprofil '{0}' wirklich löschen?",
"AddConnection": "Verbindung hinzufügen",
"NotificationStatusAllClientHealthCheckMessage": "Wegen Fehlern sind keine Applikationen verfügbar",
"NotificationStatusSingleClientHealthCheckMessage": "Applikationen wegen folgender Fehler nicht verfügbar: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Applikationen wegen folgender Fehler nicht verfügbar: {notificationNames}",
"AuthBasic": "Basis (Browser-Popup)",
"AuthForm": "Formulare (Anmeldeseite)",
"DisabledForLocalAddresses": "Für lokale Adressen deaktiviert",

View File

@@ -28,8 +28,8 @@
"EventType": "Είδος Γεγονότος",
"Events": "Γεγονότα",
"Edit": "Επεξεργασία",
"DownloadClientStatusCheckSingleClientMessage": "Προγράμματα λήψης που είναι μη διαθέσιμα λόγων αποτυχιών: {0}",
"DownloadClientStatusCheckAllClientMessage": "Όλα τα προγράμματα λήψης είναι μη διαθέσιμα λόγων αποτυχιών",
"DownloadClientStatusSingleClientHealthCheckMessage": "Προγράμματα λήψης που είναι μη διαθέσιμα λόγων αποτυχιών: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Όλα τα προγράμματα λήψης είναι μη διαθέσιμα λόγων αποτυχιών",
"DownloadClientsSettingsSummary": "Κάντε λήψη της διαμόρφωσης πελατών για ενσωμάτωση στην αναζήτηση διεπαφής χρήστη {appName}",
"CustomFilters": "Custom Φιλτρα",
"ConnectSettingsSummary": "Ειδοποιήσεις και προσαρμοσμένα σενάρια",
@@ -45,7 +45,7 @@
"Indexer": "Ευρετήριο",
"PendingChangesDiscardChanges": "Απορρίψτε τις αλλαγές και φύγετε",
"ShowSearchHelpText": "Εμφάνιση κουμπιού αναζήτησης στο δείκτη",
"UpdateCheckStartupNotWritableMessage": "Δεν είναι δυνατή η εγκατάσταση της ενημέρωσης επειδή ο φάκελος εκκίνησης \"{0}\" δεν είναι εγγράψιμος από τον χρήστη \"{1}\".",
"UpdateStartupNotWritableHealthCheckMessage": "Δεν είναι δυνατή η εγκατάσταση της ενημέρωσης επειδή ο φάκελος εκκίνησης \"{startupFolder}\" δεν είναι εγγράψιμος από τον χρήστη \"{userName}\".",
"BranchUpdateMechanism": "Υποκατάστημα που χρησιμοποιείται από εξωτερικό μηχανισμό ενημέρωσης",
"Mode": "Τρόπος",
"SettingsEnableColorImpairedMode": "Ενεργοποίηση λειτουργίας με προβλήματα χρώματος",
@@ -73,8 +73,8 @@
"NoChange": "Καμία αλλαγή",
"Port": "Λιμάνι",
"PortNumber": "Αριθμός θύρας",
"IndexerStatusCheckAllClientMessage": "Όλοι οι δείκτες δεν είναι διαθέσιμοι λόγω αστοχιών",
"IndexerStatusCheckSingleClientMessage": "Τα ευρετήρια δεν είναι διαθέσιμα λόγω αστοχιών: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Όλοι οι δείκτες δεν είναι διαθέσιμοι λόγω αστοχιών",
"IndexerStatusUnavailableHealthCheckMessage": "Τα ευρετήρια δεν είναι διαθέσιμα λόγω αστοχιών: {indexerNames}",
"KeyboardShortcuts": "Συντομεύσεις πληκτρολογίου",
"Language": "Γλώσσα",
"Reset": "Επαναφορά",
@@ -113,7 +113,7 @@
"ProxyBypassFilterHelpText": "Χρησιμοποιήστε το \",\" ως διαχωριστικό και \"*.\" ως μπαλαντέρ για υποτομείς",
"UnableToAddANewAppProfilePleaseTryAgain": "Δεν είναι δυνατή η προσθήκη ενός νέου προφίλ ποιότητας. Δοκιμάστε ξανά.",
"UnableToLoadHistory": "Δεν είναι δυνατή η φόρτωση του ιστορικού",
"UpdateCheckUINotWritableMessage": "Δεν είναι δυνατή η εγκατάσταση της ενημέρωσης επειδή ο φάκελος διεπαφής χρήστη \"{0}\" δεν είναι εγγράψιμος από τον χρήστη \"{1}\".",
"UpdateUiNotWritableHealthCheckMessage": "Δεν είναι δυνατή η εγκατάσταση της ενημέρωσης επειδή ο φάκελος διεπαφής χρήστη \"{uiFolder}\" δεν είναι εγγράψιμος από τον χρήστη \"{userName}\".",
"AuthenticationMethodHelpText": "Απαιτήστε όνομα χρήστη και κωδικό πρόσβασης για πρόσβαση στο {appName}",
"Automatic": "Αυτόματο",
"BeforeUpdate": "Πριν από την ενημέρωση",
@@ -139,7 +139,7 @@
"HomePage": "Αρχική σελίδα",
"Host": "Πλήθος",
"Hostname": "Όνομα κεντρικού υπολογιστή",
"IndexerLongTermStatusCheckSingleClientMessage": "Τα ευρετήρια δεν είναι διαθέσιμα λόγω αστοχιών για περισσότερο από 6 ώρες: {0}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Τα ευρετήρια δεν είναι διαθέσιμα λόγω αστοχιών για περισσότερο από 6 ώρες: {indexerNames}",
"IndexerPriorityHelpText": "Προτεραιότητα ευρετηρίου από 1 (Υψηλότερη) έως 50 (Χαμηλότερη). Προεπιλογή: 25.",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Όλες οι λίστες δεν είναι διαθέσιμες λόγω αστοχιών",
"IndexerProxyStatusUnavailableHealthCheckMessage": "Τα ευρετήρια δεν είναι διαθέσιμα λόγω αστοχιών: {indexerProxyNames}",
@@ -166,8 +166,8 @@
"PendingChangesStayReview": "Παραμείνετε και ελέγξτε τις αλλαγές",
"Presets": "Προεπιλογές",
"Priority": "Προτεραιότητα",
"ProxyCheckFailedToTestMessage": "Αποτυχία δοκιμής διακομιστή μεσολάβησης: {0}",
"ProxyCheckResolveIpMessage": "Αποτυχία επίλυσης της διεύθυνσης IP για τον Διαμορφωμένο διακομιστή μεσολάβησης {0}",
"ProxyFailedToTestHealthCheckMessage": "Αποτυχία δοκιμής διακομιστή μεσολάβησης: {url}",
"ProxyResolveIpHealthCheckMessage": "Αποτυχία επίλυσης της διεύθυνσης IP για τον Διαμορφωμένο διακομιστή μεσολάβησης {proxyHostName}",
"Queue": "Ουρά",
"ReadTheWikiForMoreInformation": "Διαβάστε το Wiki για περισσότερες πληροφορίες",
"Refresh": "Φρεσκάρω",
@@ -219,7 +219,7 @@
"UnableToLoadNotifications": "Δεν είναι δυνατή η φόρτωση ειδοποιήσεων",
"UnableToLoadUISettings": "Δεν είναι δυνατή η φόρτωση των ρυθμίσεων διεπαφής χρήστη",
"UnsavedChanges": "Μη αποθηκευμένες αλλαγές",
"UpdateCheckStartupTranslocationMessage": "Δεν είναι δυνατή η εγκατάσταση της ενημέρωσης επειδή ο φάκελος εκκίνησης \"{0}\" βρίσκεται σε ένα φάκελο \"Μετατόπιση εφαρμογών\".",
"UpdateStartupTranslocationHealthCheckMessage": "Δεν είναι δυνατή η εγκατάσταση της ενημέρωσης επειδή ο φάκελος εκκίνησης \"{startupFolder}\" βρίσκεται σε ένα φάκελο \"Μετατόπιση εφαρμογών\".",
"UpdateScriptPathHelpText": "Διαδρομή σε ένα προσαρμοσμένο σενάριο που λαμβάνει ένα εξαγόμενο πακέτο ενημέρωσης και χειρίζεται το υπόλοιπο της διαδικασίας ενημέρωσης",
"URLBase": "Βάση διεύθυνσης URL",
"UrlBaseHelpText": "Για αντίστροφη υποστήριξη διακομιστή μεσολάβησης, η προεπιλογή είναι άδεια",
@@ -242,10 +242,10 @@
"BindAddress": "Δεσμευμένη διεύθυνση",
"EnableRss": "Ενεργοποίηση RSS",
"IndexerFlags": "Σημαίες ευρετηρίου",
"IndexerLongTermStatusCheckAllClientMessage": "Όλοι οι δείκτες δεν είναι διαθέσιμοι λόγω αστοχιών για περισσότερο από 6 ώρες",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Όλοι οι δείκτες δεν είναι διαθέσιμοι λόγω αστοχιών για περισσότερο από 6 ώρες",
"InteractiveSearch": "Διαδραστική αναζήτηση",
"Interval": "Διάστημα",
"ProxyCheckBadRequestMessage": "Αποτυχία δοκιμής διακομιστή μεσολάβησης. StatusCode: {0}",
"ProxyBadRequestHealthCheckMessage": "Αποτυχία δοκιμής διακομιστή μεσολάβησης. StatusCode: {statusCode}",
"ProxyPasswordHelpText": "Πρέπει να εισαγάγετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης μόνο εάν απαιτείται. Αφήστε τα κενά διαφορετικά.",
"ProxyType": "Τύπος διακομιστή μεσολάβησης",
"ProxyUsernameHelpText": "Πρέπει να εισαγάγετε ένα όνομα χρήστη και έναν κωδικό πρόσβασης μόνο εάν απαιτείται. Αφήστε τα κενά διαφορετικά.",
@@ -356,7 +356,7 @@
"Auth": "Auth",
"BookSearch": "Αναζήτηση βιβλίου",
"FullSync": "Πλήρης συγχρονισμός",
"IndexerVipCheckExpiringClientMessage": "Τα οφέλη VIP του ευρετηρίου λήγουν σύντομα: {0}",
"IndexerVipExpiringHealthCheckMessage": "Τα οφέλη VIP του ευρετηρίου λήγουν σύντομα: {indexerNames}",
"NotSupported": "Δεν υποστηρίζεται",
"Parameters": "Παράμετροι",
"Public": "Δημόσιο",
@@ -394,7 +394,7 @@
"IndexerQuery": "Ερώτημα ευρετηρίου",
"IndexerSettingsSummary": "Διαμορφώστε διάφορες καθολικές ρυθμίσεις ευρετηρίου, συμπεριλαμβανομένων των διακομιστών μεσολάβησης.",
"IndexerSite": "Ιστότοπος ευρετηρίου",
"IndexerVipCheckExpiredClientMessage": "Τα προνόμια VIP του ευρετηρίου έχουν λήξει: {0}",
"IndexerVipExpiredHealthCheckMessage": "Τα προνόμια VIP του ευρετηρίου έχουν λήξει: {indexerNames}",
"MappedCategories": "Χαρτογραφημένες κατηγορίες",
"MovieSearch": "Αναζήτηση ταινίας",
"MovieSearchTypes": "Τύποι αναζήτησης ταινιών",
@@ -459,7 +459,7 @@
"Remove": "Αφαιρώ",
"Replace": "Αντικαθιστώ",
"TheLatestVersionIsAlreadyInstalled": "Η τελευταία έκδοση του {appName} είναι ήδη εγκατεστημένη",
"ApiKeyValidationHealthCheckMessage": "Παρακαλούμε ενημερώστε το κλείδι API ώστε να έχει τουλάχιστον {0} χαρακτήρες. Μπορείτε να το κάνετε αυτό μέσα από τις ρυθμίσεις ή το αρχείο ρυθμίσεων",
"ApiKeyValidationHealthCheckMessage": "Παρακαλούμε ενημερώστε το κλείδι API ώστε να έχει τουλάχιστον {length} χαρακτήρες. Μπορείτε να το κάνετε αυτό μέσα από τις ρυθμίσεις ή το αρχείο ρυθμίσεων",
"StopSelecting": "Διακοπή Επιλογής",
"OnHealthRestored": "Στην Αποκατάσταση Υγείας",
"ApplicationURL": "Διεύθυνση URL εφαρμογής",
@@ -485,7 +485,7 @@
"Theme": "Θέμα",
"Track": "Ιχνος",
"Year": "Ετος",
"UpdateAvailable": "Νέα ενημέρωση είναι διαθέσιμη",
"UpdateAvailableHealthCheckMessage": "Νέα ενημέρωση είναι διαθέσιμη",
"Artist": "Καλλιτέχνης",
"Author": "Συγγραφέας",
"Book": "Βιβλίο",
@@ -501,7 +501,7 @@
"DeleteAppProfileMessageText": "Είστε βέβαιοι ότι θέλετε να διαγράψετε το προφίλ ποιότητας '{0}'?",
"AddConnection": "Προσθήκη Σύνδεσης",
"NotificationStatusAllClientHealthCheckMessage": "Όλες οι λίστες δεν είναι διαθέσιμες λόγω αστοχιών",
"NotificationStatusSingleClientHealthCheckMessage": "Μη διαθέσιμες λίστες λόγω αποτυχιών: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Μη διαθέσιμες λίστες λόγω αποτυχιών: {notificationNames}",
"AuthBasic": "Βασικό (Αναδυόμενο παράθυρο προγράμματος περιήγησης)",
"AuthForm": "Φόρμες (σελίδα σύνδεσης)",
"Clone": "Κλωνοποίηση",
@@ -518,5 +518,9 @@
"AddConnectionImplementation": "Προσθήκη - {implementationName}",
"AddIndexerImplementation": "Προσθήκη",
"EditIndexerProxyImplementation": "Προσθήκη",
"CountApplicationsSelected": "Επιλέχθηκαν {0} συλλογές"
"CountApplicationsSelected": "Επιλέχθηκαν {0} συλλογές",
"IndexerBeyondHDSettingsSearchTypes": "Τύποι αναζήτησης",
"IndexerHDBitsSettingsMediums": "Μεσαίο",
"UseSsl": "Χρησιμοποιήστε SSL",
"CustomFilter": "Custom Φιλτρα"
}

View File

@@ -34,7 +34,7 @@
"Analytics": "Analytics",
"AnalyticsEnabledHelpText": "Send anonymous usage and error information to {appName}'s servers. This includes information on your browser, which {appName} WebUI pages you use, error reporting as well as OS and runtime version. We will use this information to prioritize features and bug fixes.",
"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",
"AppDataLocationHealthCheckMessage": "Updating will not be possible to prevent deleting AppData on Update",
"AppProfileInUse": "App Profile in Use",
@@ -226,8 +226,8 @@
"DownloadClientSettingsPriorityItemHelpText": "Priority to use when grabbing items",
"DownloadClientSettingsUrlBaseHelpText": "Adds a prefix to the {clientName} url, such as {url}",
"DownloadClientSettingsUseSslHelpText": "Use secure connection when connection to {clientName}",
"DownloadClientStatusCheckAllClientMessage": "All download clients are unavailable due to failures",
"DownloadClientStatusCheckSingleClientMessage": "Download clients unavailable due to failures: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "All download clients are unavailable due to failures",
"DownloadClientStatusSingleClientHealthCheckMessage": "Download clients unavailable due to failures: {downloadClientNames}",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Optional location to put downloads in, leave blank to use the default Transmission location",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Adds a prefix to the {clientName} rpc url, eg {url}, defaults to '{defaultUrl}'",
"DownloadClients": "Download Clients",
@@ -327,7 +327,7 @@
"IndexerCategories": "Indexer Categories",
"IndexerDetails": "Indexer Details",
"IndexerDisabled": "Indexer Disabled",
"IndexerDownloadClientHealthCheckMessage": "Indexers with invalid download clients: {0}.",
"IndexerDownloadClientHealthCheckMessage": "Indexers with invalid download clients: {indexerNames}.",
"IndexerDownloadClientHelpText": "Specify which download client is used for grabs made within {appName} from this indexer",
"IndexerFailureRate": "Indexer Failure Rate",
"IndexerFileListSettingsFreeleechOnlyHelpText": "Search freeleech releases only",
@@ -356,8 +356,8 @@
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Search freeleech releases only",
"IndexerId": "Indexer ID",
"IndexerInfo": "Indexer Info",
"IndexerLongTermStatusCheckAllClientMessage": "All indexers are unavailable due to failures for more than 6 hours",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexers unavailable due to failures for more than 6 hours: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures for more than 6 hours",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures for more than 6 hours: {indexerNames}",
"IndexerMTeamTpSettingsApiKeyHelpText": "API Key from the Site (Found in User Control Panel => Security => Laboratory)",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Search freeleech releases only",
"IndexerName": "Indexer Name",
@@ -410,13 +410,13 @@
"IndexerSettingsVipExpiration": "VIP Expiration",
"IndexerSite": "Indexer Site",
"IndexerStatus": "Indexer Status",
"IndexerStatusCheckAllClientMessage": "All indexers are unavailable due to failures",
"IndexerStatusCheckSingleClientMessage": "Indexers unavailable due to failures: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "All indexers are unavailable due to failures",
"IndexerStatusUnavailableHealthCheckMessage": "Indexers unavailable due to failures: {indexerNames}",
"IndexerTagsHelpText": "Use tags to specify Indexer Proxies or which apps the indexer is synced to.",
"IndexerTagsHelpTextWarning": "Tags should be used with caution, they can have unintended effects. An indexer with a tag will only sync to apps with the same tag.",
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Site API Key",
"IndexerVipCheckExpiredClientMessage": "Indexer VIP benefits have expired: {0}",
"IndexerVipCheckExpiringClientMessage": "Indexer VIP benefits expiring soon: {0}",
"IndexerVipExpiredHealthCheckMessage": "Indexer VIP benefits have expired: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Indexer VIP benefits expiring soon: {indexerNames}",
"Indexers": "Indexers",
"Info": "Info",
"InitialFailure": "Initial Failure",
@@ -489,12 +489,14 @@
"NotSupported": "Not Supported",
"Notification": "Notification",
"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",
"NotificationTriggersHelpText": "Select which events should trigger this notification",
"Notifications": "Notifications",
"NotificationsEmailSettingsUseEncryption": "Use Encryption",
"NotificationsEmailSettingsUseEncryptionHelpText": "Whether to prefer using encryption if configured on the server, to always use encryption via SSL (Port 465 only) or StartTLS (any other port) or to never use encryption",
"NotificationsTelegramSettingsIncludeAppName": "Include {appName} in Title",
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Optionally prefix message title with {appName} to differentiate notifications from different applications",
"OAuthPopupMessage": "Pop-ups are being blocked by your browser",
"Ok": "Ok",
"OnApplicationUpdate": "On Application Update",
@@ -533,11 +535,11 @@
"ProwlarrSupportsAnyIndexer": "{appName} supports many indexers in addition to any indexer that uses the Newznab/Torznab standard using 'Generic Newznab' (for usenet) or 'Generic Torznab' (for torrents). Search & Select your indexer from below.",
"Proxies": "Proxies",
"Proxy": "Proxy",
"ProxyBadRequestHealthCheckMessage": "Failed to test proxy. Status code: {statusCode}",
"ProxyBypassFilterHelpText": "Use ',' as a separator, and '*.' as a wildcard for subdomains",
"ProxyCheckBadRequestMessage": "Failed to test proxy. Status code: {0}",
"ProxyCheckFailedToTestMessage": "Failed to test proxy: {0}",
"ProxyCheckResolveIpMessage": "Failed to resolve the IP Address for the Configured Proxy Host {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.",
"ProxyResolveIpHealthCheckMessage": "Failed to resolve the IP Address for the Configured Proxy Host {proxyHostName}",
"ProxyType": "Proxy Type",
"ProxyUsernameHelpText": "You only need to enter a username and password if one is required. Leave them blank otherwise.",
"Public": "Public",
@@ -718,12 +720,12 @@
"UnsavedChanges": "Unsaved Changes",
"UnselectAll": "Unselect All",
"UpdateAutomaticallyHelpText": "Automatically download and install updates. You will still be able to install from System: Updates",
"UpdateAvailable": "New update is available",
"UpdateCheckStartupNotWritableMessage": "Cannot install update because startup folder '{0}' is not writable by the user '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Cannot install update because startup folder '{0}' is in an App Translocation folder.",
"UpdateCheckUINotWritableMessage": "Cannot install update because UI folder '{0}' is not writable by the user '{1}'.",
"UpdateAvailableHealthCheckMessage": "New update is available",
"UpdateMechanismHelpText": "Use {appName}'s built-in updater or a script",
"UpdateScriptPathHelpText": "Path to a custom script that takes an extracted update package and handle the remainder of the update process",
"UpdateStartupNotWritableHealthCheckMessage": "Cannot install update because startup folder '{startupFolder}' is not writable by the user '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Cannot install update because startup folder '{startupFolder}' is in an App Translocation folder.",
"UpdateUiNotWritableHealthCheckMessage": "Cannot install update because UI folder '{uiFolder}' is not writable by the user '{userName}'.",
"Updates": "Updates",
"Uptime": "Uptime",
"Url": "Url",

View File

@@ -10,8 +10,8 @@
"Files": "Archivos",
"Events": "Eventos",
"Edit": "Editar",
"DownloadClientStatusCheckSingleClientMessage": "Gestores de descargas no disponibles debido a errores: {0}",
"DownloadClientStatusCheckAllClientMessage": "Los gestores de descargas no están disponibles debido a errores",
"DownloadClientStatusSingleClientHealthCheckMessage": "Gestores de descargas no disponibles debido a errores: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Los gestores de descargas no están disponibles debido a errores",
"DownloadClients": "Clientes de descarga",
"Delete": "Eliminar",
"Dates": "Fechas",
@@ -28,9 +28,9 @@
"About": "Acerca de",
"View": "Vista",
"Updates": "Actualizaciones",
"UpdateCheckUINotWritableMessage": "No se puede instalar la actualización porque la carpeta UI '{0}' no tiene permisos de escritura para el usuario '{1}'.",
"UpdateCheckStartupTranslocationMessage": "No se puede instalar la actualización porque la carpeta de arranque '{0}' está en una carpeta de \"App Translocation\".",
"UpdateCheckStartupNotWritableMessage": "No se puede instalar la actualización porque la carpeta de arranque '{0}' no tiene permisos de escritura para el usuario '{1}'.",
"UpdateUiNotWritableHealthCheckMessage": "No se puede instalar la actualización porque la carpeta de interfaz de usuario '{uiFolder}' no es modificable por el usuario '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "No se puede instalar la actualización porque la carpeta de arranque '{startupFolder}' está en una carpeta de \"App Translocation\".",
"UpdateStartupNotWritableHealthCheckMessage": "No se puede instalar la actualización porque la carpeta de arranque '{startupFolder}' no tiene permisos de escritura para el usuario '{userName}'.",
"UnselectAll": "Desmarcar todo",
"UI": "UI",
"Tasks": "Tareas",
@@ -51,9 +51,9 @@
"ReleaseBranchCheckOfficialBranchMessage": "Las versión {0} no es una versión válida de {appName}, no recibirás actualizaciones",
"Refresh": "Actualizar",
"Queue": "Cola",
"ProxyCheckResolveIpMessage": "No se pudo resolver la dirección IP del Host Proxy configurado {0}",
"ProxyCheckFailedToTestMessage": "Fallo al comprobar el proxy: {0}",
"ProxyCheckBadRequestMessage": "Fallo al comprobar el proxy. Status code: {0}",
"ProxyResolveIpHealthCheckMessage": "No se pudo resolver la dirección IP del Host Proxy configurado {proxyHostName}",
"ProxyFailedToTestHealthCheckMessage": "Fallo al comprobar el proxy: {url}",
"ProxyBadRequestHealthCheckMessage": "Fallo al comprobar el proxy. Status code: {statusCode}",
"Proxy": "Proxy",
"Options": "Opciones",
"NoChange": "Sin cambio",
@@ -62,7 +62,7 @@
"Logging": "Registro de eventos",
"LogFiles": "Archivos de Registro",
"Language": "Idioma",
"IndexerStatusCheckAllClientMessage": "Todos los indexadores no están disponibles debido a errores",
"IndexerStatusAllUnavailableHealthCheckMessage": "Todos los indexadores no están disponibles debido a errores",
"Added": "Añadido",
"Actions": "Acciones",
"UISettingsSummary": "Fecha, idioma, y opciones de color deteriorado",
@@ -71,7 +71,7 @@
"ReleaseStatus": "Estado del Estreno",
"Protocol": "Protocolo",
"LastWriteTime": "Última Fecha de Escritura",
"IndexerStatusCheckSingleClientMessage": "Indexadores no disponibles debido a errores: {indexerNames}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexadores no disponibles debido a errores: {indexerNames}",
"Indexer": "Indexador",
"Grabbed": "Añadido",
"GeneralSettingsSummary": "Puerto, SSL, nombre de usuario/contraseña , proxy, analíticas, y actualizaciones",
@@ -164,7 +164,7 @@
"UseProxy": "Usar proxy",
"Usenet": "Usenet",
"UrlBaseHelpText": "Para soporte de proxy inverso, por defecto está vacío",
"URLBase": "URL Base",
"URLBase": "URL base",
"Uptime": "Tiempo de actividad",
"UpdateScriptPathHelpText": "Ruta a un script personalizado que toma un paquete de actualización extraído y gestiona el resto del proceso de actualización",
"UpdateMechanismHelpText": "Usar el actualizador incorporado de {appName} o un script",
@@ -284,8 +284,8 @@
"MovieIndexScrollBottom": "Indice de Películas: Desplazar hacia abajo",
"CloseCurrentModal": "Cerrar esta Ventana Modal",
"AcceptConfirmationModal": "Aceptar Confirmación de esta Ventana Modal",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexers no disponible por errores durando más de 6 horas: {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Ningún indexer está disponible por errores durando más de 6 horas",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexers no disponible por errores durando más de 6 horas: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Ningún indexer está disponible por errores durando más de 6 horas",
"Reddit": "Reddit",
"UnableToAddANewAppProfilePleaseTryAgain": "No se ha podido añadir un nuevo perfil de calidad, prueba otra vez.",
"DeleteIndexerProxyMessageText": "¿Seguro que quieres eliminar el proxy indexador '{name}'?",
@@ -333,7 +333,7 @@
"Applications": "Aplicaciones",
"AppProfileInUse": "Perfil de aplicación en uso",
"AddDownloadClientToProwlarr": "Añadir un cliente de descargas permite a {appName} enviar descargas directamente desde la interfaz en una búsqueda manual.",
"Category": "Categoria",
"Category": "Categoría",
"Application": "Aplicación",
"BookSearch": "Búsqueda de libros",
"BookSearchTypes": "Tipos de búsqueda de libros",
@@ -388,7 +388,7 @@
"More": "Más",
"Track": "Rastro",
"Year": "Año",
"UpdateAvailable": "La nueva actualización está disponible",
"UpdateAvailableHealthCheckMessage": "La nueva actualización está disponible",
"Genre": "Género",
"Publisher": "Editor",
"AuthenticationRequired": "Autenticación requerida",
@@ -399,8 +399,8 @@
"EditSelectedIndexers": "Editar Indexadores Seleccionados",
"Implementation": "Implementación",
"ManageDownloadClients": "Gestionar Clientes de Descarga",
"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",
"IndexerDownloadClientHealthCheckMessage": "Indexadores con clientes de descarga inválidos: {0}.",
"ApiKeyValidationHealthCheckMessage": "Actualice su clave de API para que tenga al menos {length} carácteres. Puede hacerlo en los ajustes o en el archivo de configuración",
"IndexerDownloadClientHealthCheckMessage": "Indexadores con clientes de descarga inválidos: {indexerNames}.",
"Episode": "Episodio",
"ConnectionLostReconnect": "{appName} intentará conectarse automáticamente, o puede hacer clic en recargar abajo.",
"ConnectionLostToBackend": "{appName} ha perdido su conexión con el backend y tendrá que ser recargado para recuperar su funcionalidad.",
@@ -412,7 +412,7 @@
"DeleteAppProfileMessageText": "¿Estás seguro de que quieres eliminar el perfil de la aplicación '{name}'?",
"AddConnection": "Añadir Conexión",
"NotificationStatusAllClientHealthCheckMessage": "Las notificaciones no están disponibles debido a fallos",
"NotificationStatusSingleClientHealthCheckMessage": "Listas no disponibles debido a errores: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Listas no disponibles debido a errores: {notificationNames}",
"EditIndexerImplementation": "Editar Indexador - {implementationName}",
"AuthBasic": "Básico (ventana emergente del navegador)",
"AuthForm": "Formularios (Página de inicio de sesión)",
@@ -423,14 +423,14 @@
"External": "Externo",
"None": "Ninguno",
"ResetAPIKeyMessageText": "¿Estás seguro que quieres restablecer tu clave API?",
"EditIndexerProxyImplementation": "Editar Proxy de Indexador - { implementationName}",
"EditIndexerProxyImplementation": "Editar proxy de indexador - {implementationName}",
"AppUpdated": "{appName} Actualizado",
"AppUpdatedVersion": "{appName} ha sido actualizado a la versión `{version}`, para obtener los cambios más recientes, necesitará recargar {appName}",
"AddApplicationImplementation": "Agregar aplicación - {implementationName}",
"AddConnectionImplementation": "Añadir Conexión - {implementationName}",
"AddIndexerImplementation": "Agregar Indexador - {implementationName}",
"AddIndexerProxyImplementation": "Agregar Proxy de Indexador - { implementationName}",
"EditApplicationImplementation": "Editar Aplicación - { implementationName}",
"EditApplicationImplementation": "Editar aplicación - {implementationName}",
"EditConnectionImplementation": "Editar Conexión - {implementationName}",
"AddDownloadClientImplementation": "Añadir Cliente de Descarga - {implementationName}",
"AuthenticationMethod": "Método de autenticación",
@@ -524,10 +524,10 @@
"IndexerRss": "RSS del Indexador",
"IndexerSettingsSummary": "Configurar varios ajustes globales del Indexador, incluyendo Proxies.",
"IndexerName": "Nombre del Indexador",
"IndexerVipCheckExpiringClientMessage": "Las ventajas VIP de los indexadores expiran pronto: {0}",
"IndexerVipExpiringHealthCheckMessage": "Las ventajas VIP de los indexadores expiran pronto: {indexerNames}",
"IndexerProxies": "Proxies del Indexador",
"IndexerHistoryLoadError": "Error al cargar el historial del Indexador",
"IndexerVipCheckExpiredClientMessage": "Las ventajas VIP del Indexador han caducado: {0}",
"IndexerVipExpiredHealthCheckMessage": "Las ventajas VIP del Indexador han caducado: {indexerNames}",
"IndexerQuery": "Consulta dedl Indexador",
"IndexerSite": "Sitio del Indexador",
"IndexerStatus": "Estado del indexador",
@@ -638,5 +638,116 @@
"DownloadClientFreeboxSettingsAppIdHelpText": "ID de la app dada cuando se crea acceso a la API de Freebox (esto es 'app_id')",
"DownloadClientFloodSettingsTagsHelpText": "Etiquetas iniciales de una descarga. Para ser reconocida, una descarga debe tener todas las etiquetas iniciales. Esto evita conflictos con descargas no relacionadas.",
"DownloadClientFloodSettingsUrlBaseHelpText": "Añade un prefijo a la API de Flood, como {url}",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token de la app recuperado cuando se crea acceso a la API de Freebox (esto es 'app_token')"
"DownloadClientFreeboxSettingsAppTokenHelpText": "Token de la app recuperado cuando se crea acceso a la API de Freebox (esto es 'app_token')",
"ProwlarrDownloadClientsAlert": "Si intentas hacer búsquedas directamente dentro de {appName}, necesitas añadir clientes de descarga. De otro modo, no necesitas añadirlos aquí. Para búsquedas desde tus aplicaciones, los clientes de descarga configurados serán usados en su lugar.",
"ProwlarrDownloadClientsInAppOnlyAlert": "Los clientes de descarga son solo para búsquedas internas en {appName} y no sincronizan a las aplicaciones. No hay planes para añadir cualquier funcionalidad.",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Extensión a usar para enlaces magnet, predeterminado a '.magnet'",
"DownloadClientRTorrentSettingsUrlPath": "Ruta de url",
"IndexerHDBitsSettingsOrigins": "Orígenes",
"IndexerIPTorrentsSettingsCookieUserAgentHelpText": "User-Agent asociado con la cookie usada desde el navegador",
"IndexerSettingsSeedRatioHelpText": "El ratio que un torrent debería alcanzar antes de detenerse, vacío usa el predeterminado del cliente de descarga. El ratio debería ser al menos 1.0 y seguir las reglas de los indexadores",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Sincronizar rechazo de hashes de torrents en la lista de bloqueo mientras se captura",
"IndexerGazelleGamesSettingsApiKeyHelpTextWarning": "Debes tener permisos de usuario y de torrents",
"IndexerGazelleGamesSettingsSearchGroupNamesHelpText": "Busca lanzamientos por nombres de grupo",
"IndexerHDBitsSettingsOriginsHelpText": "Si no se especifica, se usarán todas las opciones.",
"IndexerIPTorrentsSettingsCookieUserAgent": "Cookie de User-Agent",
"IndexerAlphaRatioSettingsExcludeSceneHelpText": "Excluye lanzamientos de ESCENA de los resultados",
"IndexerAlphaRatioSettingsExcludeScene": "Excluir ESCENA",
"IndexerAlphaRatioSettingsFreeleechOnlyHelpText": "Buscar solo lanzamientos freeleech",
"IndexerBeyondHDSettingsLimitedOnly": "Solo limitados",
"IndexerBeyondHDSettingsRewindOnlyHelpText": "Buscar solo rebobinados",
"IndexerBeyondHDSettingsRssKeyHelpText": "Clave RSS del sitio (encontrada en Mi seguridad => Clave RSS)",
"IndexerBeyondHDSettingsSearchTypes": "Tipos de búsqueda",
"IndexerGazelleGamesSettingsSearchGroupNames": "Buscar nombres de grupo",
"IndexerHDBitsSettingsCodecsHelpText": "Si no se especifica, se usarán todas las opciones.",
"IndexerHDBitsSettingsMediumsHelpText": "Si no se especifica, se usarán todas las opciones.",
"IndexerHDBitsSettingsUseFilenames": "Usar nombres de archivo",
"IndexerHDBitsSettingsUseFilenamesHelpText": "Señala esta opción si quieres usar nombres de archivo como títulos de lanzamiento",
"IndexerHDBitsSettingsUsernameHelpText": "Usuario del sitio",
"IndexerIPTorrentsSettingsFreeleechOnlyHelpText": "Buscar solo lanzamientos freeleech",
"IndexerNewznabSettingsAdditionalParametersHelpText": "Parámetros adicionales de Newznab",
"IndexerNewznabSettingsApiKeyHelpText": "Clave API del sitio",
"IndexerNzbIndexSettingsApiKeyHelpText": "Clave API del sitio",
"IndexerPassThePopcornSettingsApiUserHelpText": "Estas opciones se encuentran en tus opciones de seguridad de PassThePopcorn (Editar perfil > Seguridad).",
"IndexerPassThePopcornSettingsApiKeyHelpText": "Clave API del sitio",
"IndexerRedactedSettingsApiKeyHelpText": "Clave API del sitio (encontrada en Opciones => Opciones de acceso)",
"IndexerSettingsAdditionalParameters": "Parámetros adicionales",
"IndexerSettingsApiPathHelpText": "Ruta a la API, usualmente {url}",
"IndexerSettingsApiUser": "Usuario de API",
"IndexerSettingsAppsMinimumSeeders": "Semillas mínimas de las aplicaciones",
"IndexerSettingsBaseUrlHelpText": "Selecciona qué url base usará {appName} para las peticiones al sitio",
"IndexerSettingsCookie": "Cookie",
"IndexerSettingsRssKey": "Clave RSS",
"IndexerSettingsSeedRatio": "Ratio de sembrado",
"IndexerSettingsSeedTimeHelpText": "El tiempo que un torrent debería ser compartido antes de detenerse, vació usa el predeterminado del cliente de descarga",
"IndexerMTeamTpSettingsApiKeyHelpText": "Clave API del sitio (encontrada en Panel de control de usuario => Seguridad => Laboratorio)",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Buscar solo lanzamientos freeleech",
"Menu": "Menú",
"Mixed": "Mezclado",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Descarga primero las primeras y últimas piezas (qBittorrent 4.1.0+)",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Primeras y últimas primero",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Estado inicial para los torrents añadidos a qBittorrent. Ten en cuenta que Forzar torrents no cumple las restricciones de semilla",
"DownloadClientRTorrentSettingsAddStopped": "Añadir detenido",
"DownloadClientRTorrentSettingsAddStoppedHelpText": "Permite añadir torrents y magnets a rTorrent en estado detenido. Esto puede romper los archivos magnet.",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Usa una conexión segura. Ver en Opciones -> Interfaz web -> 'Usar HTTPS en lugar de HTTP' en qbittorrent.",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Ubicación opcional en la que poner las descargas, dejar en blanco para usar la ubicación predeterminada de rTorrent",
"DownloadClientSettingsDefaultCategorySubFolderHelpText": "Categoría devuelta por defecto si no existe ninguna categoría mapeada para un lanzamiento. Añadir una categoría específica a {appName} evita conflictos con descargas no relacionadas con {appName}. Usar una categoría es opcional, pero bastante recomendado. Crea un subdirectorio [categoría] en el directorio de salida.",
"DownloadClientSettingsAddPaused": "Añadir pausado",
"DownloadClientSettingsPriorityItemHelpText": "Prioridad a usar cuando se capturen elementos",
"DownloadClientSettingsInitialStateHelpText": "Estado inicial para torrents añadidos a {clientName}",
"DownloadClientSettingsUseSslHelpText": "Usa una conexión segura cuando haya una conexión a {clientName}",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Ubicación opcional en la que poner las descargas, dejar en blanco para usar la ubicación predeterminada de Transmission",
"DownloadClientSettingsUrlBaseHelpText": "Añade un prefijo a la url {clientName}, como {url}",
"IndexerBeyondHDSettingsApiKeyHelpText": "Clave API del sitio (encontrada en Mi seguridad => Clave API)",
"IndexerBeyondHDSettingsFreeleechOnlyHelpText": "Buscar solo lanzamientos freeleech",
"IndexerBeyondHDSettingsLimitedOnlyHelpText": "Buscar solo freeleech (UL limitada)",
"IndexerFileListSettingsFreeleechOnlyHelpText": "Buscar solo lanzamientos freeleech",
"IndexerFileListSettingsPasskeyHelpText": "Clave de acceso del sitio (esto es la cadena alfanumérica en la url del tracket mostrada en tu cliente de descarga)",
"IndexerFileListSettingsUsernameHelpText": "Usuario del sitio",
"IndexerHDBitsSettingsMediums": "Medios",
"IndexerHDBitsSettingsCodecs": "Códecs",
"IndexerHDBitsSettingsFreeleechOnlyHelpText": "Mostrar solo lanzamientos freeleech",
"IndexerNebulanceSettingsApiKeyHelpText": "Clave API de Opciones de usuario > Claves API. La clave debe tener permisos de lista y descarga",
"IndexerNewznabSettingsVipExpirationHelpText": "Introduce la fecha (yyyy-mm-dd) para Expiración VIP o en blanco, {appName} notificará a una semana de la expiración del VIP",
"IndexerOrpheusSettingsApiKeyHelpText": "Clave API del sitio (encontrada en Opciones => Opciones de acceso)",
"IndexerPassThePopcornSettingsFreeleechOnlyHelpText": "Buscar solo lanzamientos freeleech",
"IndexerSettingsApiPath": "Ruta de API",
"IndexerSettingsBaseUrl": "Url base",
"IndexerSettingsPackSeedTime": "Tiempo de sembrado de pack",
"IndexerSettingsLimitsUnit": "Unidad de límites",
"IndexerSettingsQueryLimit": "Límite de petición",
"IndexerTorrentSyndikatSettingsApiKeyHelpText": "Clave API del sitio",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent es bloqueado por un hash puede no ser rechazado apropiadamente durante Buscar/RSS para algunos indexadores, habilitar esto permitirá que sea rechazado después de que el torrent sea capturado, pero antes es enviado al cliente.",
"IndexerSettingsAppsMinimumSeedersHelpText": "Semillas mínimas requeridas por las aplicaciones para que el indexador capture, dejar vacío usa el predeterminado de Sincronización de perfil",
"DownloadClientSettingsDefaultCategoryHelpText": "Categoría devuelta por defecto si no existe ninguna categoría mapeada para un lanzamiento. Añadir una categoría específica a {appName} evita conflictos con descargas no relacionadas con {appName}. Usar una categoría es opcional, pero bastante recomendado.",
"IndexerSettingsGrabLimitHelpText": "El número de capturas máximas especificadas por la unidad respectiva que {appName} permitirá al sitio",
"IndexerSettingsLimitsUnitHelpText": "La unidad o tiempo para límites de recuento por indexador",
"IndexerSettingsPackSeedTimeIndexerHelpText": "El tiempo en que un pack de torrent (temporada o discografía) debería ser compartido antes de detenerse, vacío usa el predeterminado de la aplicación",
"DownloadClientPneumaticSettingsNzbFolder": "Carpeta de Nzb",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Añade un prefijo a la url rpc de {clientName}, p. ej. {url}, predeterminado a '{defaultUrl}'",
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Esta carpeta necesitará ser alcanzable desde XBMC",
"DownloadClientPneumaticSettingsStrmFolder": "Carpeta de Strm",
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Los archivos .strm en esta carpeta será importados por drone",
"DownloadClientQbittorrentSettingsSequentialOrder": "Orden secuencial",
"DownloadClientFreeboxSettingsHostHelpText": "Nombre de host o dirección IP de host del Freebox, predeterminado a '{url}' (solo funcionará en la misma red)",
"DownloadClientFreeboxSettingsPortHelpText": "Puerto usado para acceder a la interfaz de Freebox, predeterminado a '{port}'",
"DownloadClientNzbgetSettingsAddPausedHelpText": "Esta opción requiere al menos NzbGet versión 16.0",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Descarga en orden secuencial (qBittorrent 4.1.0+)",
"DownloadClientRTorrentSettingsUrlPathHelpText": "Ruta al endpoint de XMLRPC, ver {url}. Esto es usualmente RPC2 o [ruta a ruTorrent]{url2} cuando se usa ruTorrent.",
"DownloadClientSettingsDestinationHelpText": "Especifica manualmente el destino de descarga, dejar en blanco para usar el predeterminado",
"DownloadClientSettingsInitialState": "Estado inicial",
"IndexerBeyondHDSettingsRefundOnly": "Solo devueltos",
"IndexerBeyondHDSettingsRefundOnlyHelpText": "Buscar solo devueltos",
"IndexerBeyondHDSettingsRewindOnly": "Solo rebobinados",
"IndexerBeyondHDSettingsSearchTypesHelpText": "Selecciona los tipos de lanzamientos en los que estás interesado. Si no se selecciona ninguno, se usarán todas las opciones.",
"IndexerGazelleGamesSettingsApiKeyHelpText": "Clave API del sitio (encontrada en Opciones => Opciones de acceso)",
"IndexerSettingsGrabLimit": "Límite de captura",
"IndexerSettingsQueryLimitHelpText": "El número de peticiones máximas especificadas por la unidad respectiva que {appName} permitirá al sitio",
"IndexerSettingsSeedTime": "Tiempo de sembrado",
"IndexerSettingsCookieHelpText": "Cookie del sitio",
"IndexerSettingsFreeleechOnly": "Solo freeleech",
"IndexerSettingsVipExpiration": "Expiración del VIP",
"XmlRpcPath": "Ruta RPC de XML",
"NotificationsTelegramSettingsIncludeAppName": "Incluir {appName} en el título",
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Opcionalmente prefija el título del mensaje con {appName} para diferenciar las notificaciones de las diferentes aplicaciones"
}

View File

@@ -51,15 +51,15 @@
"SettingsLongDateFormat": "Pitkän päiväyksen esitys",
"SettingsShortDateFormat": "Lyhyen päiväyksen esitys",
"UnselectAll": "Tyhjennä valinnat",
"UpdateCheckStartupTranslocationMessage": "Päivitystä ei voida asentaa, koska käynnistyskansio \"{0}\" sijaitsee \"App Translocation\" -kansiossa.",
"UpdateCheckUINotWritableMessage": "Päivityksen asennus ei onnistu, koska käyttäjällä \"{1}\" ei ole kirjoitusoikeutta käyttöliittymäkansioon \"{0}\".",
"UpdateStartupTranslocationHealthCheckMessage": "Päivitystä ei voida asentaa, koska käynnistyskansio \"{startupFolder}\" sijaitsee \"App Translocation\" -kansiossa.",
"UpdateUiNotWritableHealthCheckMessage": "Päivityksen asennus ei onnistu, koska käyttäjällä \"{userName}\" ei ole kirjoitusoikeutta käyttöliittymäkansioon \"{uiFolder}\".",
"UpdateMechanismHelpText": "Käytä {appName}in sisäänrakennettua päivitystoimintoa tai komentosarjaa.",
"Enable": "Käytä",
"UI": "Käyttöliittymä",
"Usenet": "Usenet",
"BackupNow": "Varmuuskopioi nyt",
"NoBackupsAreAvailable": "Varmuuskopioita ei ole käytettävissä",
"UpdateCheckStartupNotWritableMessage": "Päivitystä ei voida asentaa, koska käyttäjällä \"{1}\" ei ole kirjoitusoikeutta käynnistyskansioon \"{0}\".",
"UpdateStartupNotWritableHealthCheckMessage": "Päivitystä ei voida asentaa, koska käyttäjällä \"{userName}\" ei ole kirjoitusoikeutta käynnistyskansioon \"{startupFolder}\".",
"Updates": "Päivitykset",
"UpdateScriptPathHelpText": "Polku komentosarjaan, joka käsittelee puretun päivitystiedoston ja hoitaa asennuksen loppuosuuden.",
"Uptime": "Käyttöaika",
@@ -93,9 +93,9 @@
"Presets": "Esiasetukset",
"Priority": "Painotus",
"Protocol": "Protokolla",
"ProxyCheckBadRequestMessage": "Välityspalvelintesti epäonnistui. Tilakoodi: {0}.",
"ProxyCheckFailedToTestMessage": "Välityspalvelintesti epäonnistui: {0}",
"ProxyCheckResolveIpMessage": "Määritetyn välityspalvelimen \"{0}\" IP-osoitteen selvitys epäonnistui.",
"ProxyBadRequestHealthCheckMessage": "Välityspalvelintesti epäonnistui. Tilakoodi: {statusCode}.",
"ProxyFailedToTestHealthCheckMessage": "Välityspalvelintesti epäonnistui: {url}",
"ProxyResolveIpHealthCheckMessage": "Määritetyn välityspalvelimen \"{0}\" IP-osoitteen selvitys epäonnistui.",
"ProxyPasswordHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
"ProxyType": "Välityspalvelimen tyyppi",
"ProxyUsernameHelpText": "Käyttäjätunnus ja salasana tulee täyttää vain tarvittaessa. Mikäli näitä ei ole, tulee kentät jättää tyhjiksi.",
@@ -154,7 +154,7 @@
"Disabled": "Ei käytössä",
"DownloadClients": "Lataustyökalut",
"DownloadClientSettings": "Lataustyökalujen asetukset",
"DownloadClientStatusCheckAllClientMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä",
"DownloadClientStatusAllClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä",
"Mode": "Tila",
"MoreInfo": "Lisätietoja",
"SelectAll": "Valitse kaikki",
@@ -247,7 +247,7 @@
"DeleteBackup": "Poista varmuuskopio",
"DeleteBackupMessageText": "Haluatko varmasti poistaa varmuuskopion \"{name}\"?",
"DeleteDownloadClient": "Poista lataustyökalu",
"DownloadClientStatusCheckSingleClientMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä: {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Lataustyökaluja ei ole ongelmien vuoksi käytettävissä: {downloadClientNames}",
"EditIndexer": "Muokkaa tietolähdettä",
"EnableAutomaticSearch": "Käytä automaattihakua",
"EnableInteractiveSearch": "Käytä manuaalihakuun",
@@ -275,12 +275,12 @@
"IncludeHealthWarningsHelpText": "Sisällytä kuntovaroitukset",
"Indexer": "Tietolähde",
"IndexerFlags": "Tietolähteen liput",
"IndexerLongTermStatusCheckAllClientMessage": "Mikään tietolähde ei ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
"IndexerLongTermStatusCheckSingleClientMessage": "Tietolähteet eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Mikään tietolähde ei ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi.",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä yli 6 tuntia kestäneiden virheiden vuoksi: {indexerNames}",
"IndexerPriority": "Tietolähteiden painotus",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Välityspalvelimet eivät ole käytettävissä virheiden vuoksi",
"IndexerStatusCheckAllClientMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi",
"IndexerStatusCheckSingleClientMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi",
"IndexerStatusUnavailableHealthCheckMessage": "Tietolähteet eivät ole käytettävissä virheiden vuoksi: {indexerNames}",
"NoChange": "Ei muutosta",
"NoLogFiles": "Lokitiedostoja ei ole",
"SSLCertPasswordHelpText": "PFX-tiedoston salasana",
@@ -317,7 +317,7 @@
"IndexerObsoleteCheckMessage": "Tietolähteet ovat poistuneet tai ne ovat muuttuneet: {0}. Poista ja/tai lisää ne {appName}iin uudelleen.",
"IndexerProxy": "Tiedonhaun välityspalvelin",
"IndexerSettingsSummary": "Määritä useita globaaleita tietolähdeasetuksia, kuten välityspalvelimia.",
"IndexerVipCheckExpiringClientMessage": "Tietolähteen VIP-edut erääntyvät pian: {0}",
"IndexerVipExpiringHealthCheckMessage": "Tietolähteen VIP-edut erääntyvät pian: {indexerNames}",
"ProwlarrSupportsAnyIndexer": "{appName} tukee Newznab- ja Torznab-yhteensopivien tietolähteiden ohella myös useita muita lähteitä vaihtoehdoilla \"Yleinen Newznab\" (Usenetille) ja 'Yleinen Torznab' (torrenteille).",
"SettingsIndexerLogging": "Tehostettu tietolähteiden valvonta",
"AddIndexerProxy": "Lisää tiedonhaun välityspalvelin",
@@ -330,7 +330,7 @@
"IndexerRss": "Tietolähteen RSS",
"SearchIndexers": "Etsi tietolähteistä",
"AddRemoveOnly": "Ainoastaan lisää/poista",
"IndexerVipCheckExpiredClientMessage": "Tietolähteen VIP-edut ovat erääntyneet: {0}",
"IndexerVipExpiredHealthCheckMessage": "Tietolähteen VIP-edut ovat erääntyneet: {indexerNames}",
"MaintenanceRelease": "Huoltojulkaisu: korjauksia ja muita parannuksia. Lue lisää Githubin muutoshistoriasta.",
"Query": "Kysely",
"Redirect": "Uudelleenohjaus",
@@ -480,7 +480,7 @@
"Artist": "Esittäjä",
"Author": "Kirjailija",
"Book": "Kirja",
"UpdateAvailable": "Uusi päivitys on saatavilla",
"UpdateAvailableHealthCheckMessage": "Uusi päivitys on saatavilla",
"Episode": "Jakso",
"Label": "Nimi",
"Theme": "Teema",
@@ -492,7 +492,7 @@
"minutes": "minuuttia",
"AddConnection": "Lisää yhteys",
"NotificationStatusAllClientHealthCheckMessage": "Mikään ilmoituspavelu ei ole ongelmien vuoksi käytettävissä.",
"NotificationStatusSingleClientHealthCheckMessage": "Ilmoitukset eivät ole ongelmien vuoksi käytettävissä: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Ilmoitukset eivät ole ongelmien vuoksi käytettävissä: {notificationNames}",
"AuthBasic": "Perus (ponnahdusikkuna)",
"AuthForm": "Lomake (kirjautumissivu)",
"DisabledForLocalAddresses": "Ei käytössä paikallisille osoitteille",
@@ -511,7 +511,7 @@
"NoDownloadClientsFound": "Lataustyökaluja ei löytynyt",
"CountDownloadClientsSelected": "{count} lataustyökalu(a) on valittu",
"EditSelectedDownloadClients": "Muokkaa valittuja lataustyökaluja",
"IndexerDownloadClientHealthCheckMessage": "Tietolähteet virheellisillä lataustyökaluilla: {0}.",
"IndexerDownloadClientHealthCheckMessage": "Tietolähteet virheellisillä lataustyökaluilla: {indexerNames}.",
"AddIndexerProxyImplementation": "Lisää tiedonhaun välityspalvelin - {implementationName}",
"EditIndexerProxyImplementation": "Muokkaa tiedonhaun välityspalvelinta - {implementationName}",
"EditDownloadClientImplementation": "Muokataan lataustyökalua - {implementationName}",
@@ -564,7 +564,7 @@
"SearchAllIndexers": "Etsi kaikista tietolähteistä",
"SeedRatioHelpText": "Jakosuhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
"TorznabUrl": "Torznab URL",
"ApiKeyValidationHealthCheckMessage": "Muuta rajapinnan (API) avain ainakin {0} merkin pituiseksi. Voit tehdä tämän asetuksista tai muokkaamalla asetustiedostoa.",
"ApiKeyValidationHealthCheckMessage": "Muuta rajapinnan (API) avain ainakin {length} merkin pituiseksi. Voit tehdä tämän asetuksista tai muokkaamalla asetustiedostoa.",
"OnHealthRestored": "Terveystilan vakautuessa",
"OnHealthRestoredHelpText": "Terveystilan vakautuessa",
"TotalHostQueries": "Isännän kyselyiden kokonaismäärä",
@@ -608,5 +608,77 @@
"NotificationsEmailSettingsUseEncryptionHelpText": "Määrittää suositaanko salausta, jos se on määritetty palvelimelle, käytetäänkö aina SSL- (vain portti 465) tai StartTLS-salausta (kaikki muut portit), voi käytetäänkö salausta lainkaan.",
"ManageClients": "Hallitse työkaluja",
"NoApplicationsFound": "Sovelluksia ei löytynyt",
"DownloadClientAriaSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi."
"DownloadClientAriaSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
"UrlBaseHelpText": "Lisää {appName}in URL-osoitteeseen jälkiliitteen, esim. \"http://[osoite]:[portti]/[URL-perusta]\". Oletusarvo on tyhjä.",
"Donate": "Lahjoita",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Lisää median ominaisuuksia tunnisteina. Vihjeet ovat esimerkkejä.",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Valinnainen latuasten tallennussijainti. Käytä Aria2-oletusta jättämällä tyhjäksi.",
"DownloadClientSettingsUseSslHelpText": "Muodosta {clientName} -yhteys käyttäen salattua yhteyttä.",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Vaihtoehtoinen latauskansio. Käytä Transmissionin oletusta jättämällä tyhjäksi.",
"DownloadClientTransmissionSettingsUrlBaseHelpText": "Lisää etuliite lataustyökalun {clientName} RPC-URL-osoitteeseen. Esimerkiksi {url}. Oletus on \"{defaultUrl}\".",
"IndexerSettingsAppsMinimumSeedersHelpText": "Sovellusten edellyttämä tietolähteestä kaapattavien kohteiden jakajien (seed) vähimmäismäärä. Jos tyhjä, käytetään synkronointiprofiilin oletusta.",
"Menu": "Valikko",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Hylkää estetyt torrent-hajautusarvot kaapattaessa",
"IndexerBeyondHDSettingsSearchTypes": "Mitä etsitään",
"IndexerSettingsSeedRatio": "Jakosuhde",
"IndexerSettingsSeedTime": "Jakoaika",
"IndexerSettingsSeedTimeHelpText": "Aika, joka torrentia tulee jakaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi.",
"IndexerSettingsVipExpiration": "VIP-erääntyy",
"Destination": "Kohde",
"Directory": "Kansio",
"DownloadClientFloodSettingsTagsHelpText": "Latauksen alkuperäiset tunnisteet. Jotta se voidaa tunnistaa, on latauksella oltava sen alkuperäiset tunnisteet. Tämä välttää ristiriidat muiden latausten kanssa.",
"DownloadClientFreeboxSettingsApiUrl": "Rajapinnan URL-osoite",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä saatu app_token-tietue.",
"DownloadClientFreeboxSettingsHostHelpText": "Freeboxin isäntänimi tai IP-osoite. Oletus on \"{url}\" (toimii vain samassa verkossa).",
"DownloadClientPneumaticSettingsStrmFolder": "Strm-kansio",
"DownloadClientQbittorrentSettingsInitialStateHelpText": "Tila, jossa torrentit lisätään qBittorrentiin. Huomioi, että pakotetut torrentit eivät noudata nopeusrajoituksia.",
"DownloadClientSettingsAddPaused": "Lisää pysäytettynä",
"DownloadClientSettingsDestinationHelpText": "Määrittää manuaalisen tallennuskohteen. Käytä oletusta jättämällä tyhjäksi.",
"DownloadClientSettingsInitialState": "Virheellinen tila",
"DownloadClientSettingsInitialStateHelpText": "Lataustyökaluun {clientName} lisättyjen torrentien aloitustila.",
"IndexerHDBitsSettingsCodecs": "Koodekit",
"IndexerHDBitsSettingsCodecsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
"IndexerHDBitsSettingsMediums": "Mediatyypit",
"IndexerHDBitsSettingsMediumsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
"IndexerHDBitsSettingsOriginsHelpText": "Jos ei määritetty, käytetään kaikkia vaihtoehtoja.",
"IndexerSettingsAdditionalParameters": "Muut parametrit",
"IndexerSettingsApiPath": "API:n polku",
"IndexerSettingsApiPathHelpText": "Polku API:in (yleensä {url}).",
"IndexerSettingsCookie": "Eväste",
"IndexerSettingsPackSeedTime": "Koosteen jakoaika",
"IndexerSettingsPackSeedTimeIndexerHelpText": "Aika, joka koostepaketin (kuten sarjan tuotantokauden tai esittäjän diskografian) sisältävää torrentia tulee jakaa. Käytä sovelluksen oletusta jättämällä tyhjäksi.",
"IndexerSettingsSeedRatioHelpText": "Suhde, joka torrentin tulee saavuttaa ennen sen pysäytystä. Käytä lataustyökalun oletusta jättämällä tyhjäksi. Suhteen tulisi olla ainakin 1.0 ja noudattaa tietolähteen sääntöjä.",
"SecretToken": "Salainen tunniste",
"TorrentBlackholeSaveMagnetFiles": "Tallenna magnet-tiedostot",
"UseSsl": "Käytä SSL-salausta",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Jos torrent on estetty hajautusarvon perusteella sitä ei välttämättä hylätä oikein etsittäessä joiltakin tietolähteiltä RSS-syötteen tai haun välityksellä. Tämä mahdollistaa tällaisten torrentien hylkäämisen kaappauksen jälkeen, mutta ennen välitystä lataustyökalulle.",
"BlackholeFolderHelpText": "Kansio, jonne {appName} tallentaa {extension}-tiedoston.",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Lisää etuliitteen Delugen JSON-URL-osoitteeseen (ks. {url}).",
"DownloadClientFloodSettingsAdditionalTags": "Lisätunnisteet",
"DownloadClientPneumaticSettingsStrmFolderHelpText": "Tämän kansion .strm-tiedostot tuodaan droonilla.",
"DownloadClientQbittorrentSettingsSequentialOrderHelpText": "Lataa tiedostot järjestyksessä (qBittorrent 4.1.0+).",
"UsenetBlackholeNzbFolder": "NZB-kansio",
"XmlRpcPath": "XML RPC -sijainti",
"DownloadClientSettingsUrlBaseHelpText": "Lisää etuliite lataustuökalun {clientName} URL-osoitteeseen, kuten {url}.",
"DownloadClientFloodSettingsUrlBaseHelpText": "Lisää etuliitteen Flood-rajapintaan (esim. {url}).",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Valinnainen jaettu kansio latauksille. Download Stationin oletussijaintia jättämällä tyhjäksi.",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Määritä Freebox-rajapinnan perus-URL rajapinnan versiolla. Esimerkiksi \"{url}\". Oletus on \"{defaultApiUrl}\".",
"DownloadClientQbittorrentSettingsFirstAndLastFirst": "Ensimmäinen ja viimeinen ensin",
"DownloadClientFreeboxSettingsAppId": "Sovellustunniste",
"DownloadClientFreeboxSettingsPortHelpText": "Freebox-liittymän portti. Oletus on \"{port}\".",
"DownloadClientPneumaticSettingsNzbFolder": "NZB-kansio",
"DownloadClientQbittorrentSettingsSequentialOrder": "Peräkkäinen järjestys",
"CustomFilter": "Omat suodattimet",
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox-rajapinnan käyttöoikeutta määritettäessä käytettävä App ID -sovellustunniste.",
"DownloadClientFreeboxSettingsAppToken": "Sovellustietue",
"DownloadClientNzbgetSettingsAddPausedHelpText": "Tämä vaatii vähintään NzbGet-version 16.0.",
"DownloadClientPneumaticSettingsNzbFolderHelpText": "Tämän kansion on oltava tavoitettavissa XBMC:stä.",
"DownloadClientQbittorrentSettingsFirstAndLastFirstHelpText": "Aloita lataamalla ensimmäinen ja viimeinen osa (qBittorrent 4.1.0+).",
"DownloadClientQbittorrentSettingsUseSslHelpText": "Käytä suojattua yhteyttä. Katso qBittorentin asetusten \"Selainkäyttö\"-osion \"Käytä HTTPS:ää HTTP:n sijaan\" -asetus.",
"DownloadClientRTorrentSettingsAddStopped": "Lisää pysäytettynä",
"DownloadClientRTorrentSettingsUrlPath": "URL-sijainti",
"TorrentBlackholeSaveMagnetFilesHelpText": "Tallenna magnet-linkki, jos .torrent-tiedostoa ei ole käytettävissä (hyödyllinen vain lataustyökalun tukiessa tiedostoon tallennettuja magnet-linkkejä).",
"TorrentBlackholeTorrentFolder": "Torrent-kansio",
"TorrentBlackholeSaveMagnetFilesExtension": "Tallennettujen magnet-tiedostojen pääte",
"TorrentBlackholeSaveMagnetFilesExtensionHelpText": "Magnet-linkeille käytettävä tiedostopääte. Oletus on \".magnet\"."
}

View File

@@ -1,5 +1,5 @@
{
"IndexerStatusCheckAllClientMessage": "Tous les indexeurs sont indisponibles en raison d'échecs",
"IndexerStatusAllUnavailableHealthCheckMessage": "Tous les indexeurs sont indisponibles en raison d'échecs",
"Indexers": "Indexeurs",
"Host": "Hôte",
"History": "Historique",
@@ -11,8 +11,8 @@
"Files": "Fichiers",
"Events": "Événements",
"Edit": "Modifier",
"DownloadClientStatusCheckAllClientMessage": "Aucun client de téléchargement n'est disponible en raison d'échecs",
"DownloadClients": "Clients de télécharg.",
"DownloadClientStatusAllClientHealthCheckMessage": "Aucun client de téléchargement n'est disponible en raison d'échecs",
"DownloadClients": "Clients de téléchargement",
"Dates": "Dates",
"Date": "Date",
"Delete": "Supprimer",
@@ -26,13 +26,13 @@
"Analytics": "Statistiques",
"All": "Tout",
"About": "À propos",
"IndexerStatusCheckSingleClientMessage": "Indexeurs indisponibles en raison d'échecs : {0}",
"DownloadClientStatusCheckSingleClientMessage": "Clients de Téléchargement indisponibles en raison d'échecs: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexeurs indisponibles en raison d'échecs : {indexerNames}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clients de Téléchargement indisponibles en raison d'échecs: {downloadClientNames}",
"SetTags": "Définir des étiquettes",
"ReleaseStatus": "Statut de la version",
"UpdateCheckUINotWritableMessage": "Impossible d'installer la mise à jour car le dossier d'interface utilisateur '{0}' n'est pas accessible en écriture par l'utilisateur '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{0}' se trouve dans un dossier App Translocation.",
"UpdateCheckStartupNotWritableMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{0}' n'est pas accessible en écriture par l'utilisateur '{1}'.",
"UpdateUiNotWritableHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier d'interface utilisateur '{uiFolder}' n'est pas accessible en écriture par l'utilisateur '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{startupFolder}' se trouve dans un dossier App Translocation.",
"UpdateStartupNotWritableHealthCheckMessage": "Impossible d'installer la mise à jour car le dossier de démarrage '{startupFolder}' n'est pas accessible en écriture par l'utilisateur '{userName}'.",
"UnselectAll": "Tout désélectionner",
"UISettingsSummary": "Date, langue, et perceptions des couleurs",
"TagsSettingsSummary": "Voir toutes les étiquettes et comment elles sont utilisées. Les étiquettes inutilisées peuvent être supprimées",
@@ -51,9 +51,9 @@
"ReleaseBranchCheckOfficialBranchMessage": "La branche {0} n'est pas une branche de version {appName} valide, vous ne recevrez pas de mises à jour",
"Refresh": "Rafraîchir",
"Queue": "File d'attente",
"ProxyCheckResolveIpMessage": "Impossible de résoudre l'adresse IP de l'hôte proxy configuré {0}",
"ProxyCheckFailedToTestMessage": "Échec du test du proxy : {0}",
"ProxyCheckBadRequestMessage": "Échec du test du proxy. Code d'état : {0}",
"ProxyResolveIpHealthCheckMessage": "Impossible de résoudre l'adresse IP de l'hôte proxy configuré {proxyHostName}",
"ProxyFailedToTestHealthCheckMessage": "Échec du test du proxy : {url}",
"ProxyBadRequestHealthCheckMessage": "Échec du test du proxy. Code d'état : {statusCode}",
"Proxy": "Proxy",
"Protocol": "Protocole",
"Options": "Options",
@@ -284,8 +284,8 @@
"OnHealthIssueHelpText": "Sur un problème de santé",
"AcceptConfirmationModal": "Accepter les modalités d'utilisation",
"OpenThisModal": "Ouvrir cette fenêtre modale",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexeurs indisponibles en raison de pannes pendant plus de 6 heures : {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Tous les indexeurs sont indisponibles en raison d'échecs de plus de 6 heures",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexeurs indisponibles en raison de pannes pendant plus de 6 heures : {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Tous les indexeurs sont indisponibles en raison d'échecs de plus de 6 heures",
"Yesterday": "Hier",
"Tomorrow": "Demain",
"Today": "Aujourd'hui",
@@ -368,13 +368,13 @@
"AppSettingsSummary": "Applications et paramètres pour configurer comment {appName} interagit avec vos programmes PVR",
"IndexerTagsHelpText": "Utilisez des étiquettes pour spécifier les proxies d'indexation ou les applications avec lesquelles l'indexeur est synchronisé.",
"Notifications": "Notifications",
"IndexerVipCheckExpiredClientMessage": "Les avantages VIP de l'indexeur ont expiré : {0}",
"IndexerVipExpiredHealthCheckMessage": "Les avantages VIP de l'indexeur ont expiré : {indexerNames}",
"IndexerProxy": "Proxy d'indexation",
"IndexerSettingsSummary": "Configuration de divers paramètres globaux de l'indexeur, y compris les proxies.",
"IndexerProxies": "Proxys d'indexation",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Tous les proxys sont indisponibles en raison d'échecs",
"IndexerProxyStatusUnavailableHealthCheckMessage": "Proxys indisponibles en raison d'échecs : {indexerProxyNames}",
"IndexerVipCheckExpiringClientMessage": "Les avantages VIP de l'indexeur arrivent bientôt à expiration : {0}",
"IndexerVipExpiringHealthCheckMessage": "Les avantages VIP de l'indexeur arrivent bientôt à expiration : {indexerNames}",
"NoLinks": "Aucun liens",
"Notification": "Notification",
"UnableToAddANewIndexerProxyPleaseTryAgain": "Impossible d'ajouter un nouveau proxy d'indexation, veuillez réessayer.",
@@ -493,7 +493,7 @@
"Track": "Piste",
"Year": "Année",
"ApplicationURL": "URL de l'application",
"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",
"ApplicationUrlHelpText": "L'URL externe de cette application, y compris http(s)://, le port ainsi que la base de URL",
"ApplyChanges": "Appliquer les modifications",
"ApplyTagsHelpTextAdd": "Ajouter : ajoute les étiquettes à la liste de étiquettes existantes",
@@ -509,7 +509,7 @@
"DeleteSelectedDownloadClients": "Supprimer le(s) client(s) de téléchargement",
"DeleteSelectedDownloadClientsMessageText": "Voulez-vous vraiment supprimer {count} client(s) de téléchargement sélectionné(s) ?",
"StopSelecting": "Effacer la sélection",
"UpdateAvailable": "Une nouvelle mise à jour est disponible",
"UpdateAvailableHealthCheckMessage": "Une nouvelle mise à jour est disponible",
"AdvancedSettingsHiddenClickToShow": "Paramètres avancés masqués, cliquez pour afficher",
"AdvancedSettingsShownClickToHide": "Paramètres avancés affichés, cliquez pour masquer",
"AppsMinimumSeeders": "Apps avec le nombre minimum de seeders disponibles",
@@ -537,7 +537,7 @@
"AddIndexerImplementation": "Ajouter un indexeur - {implementationName}",
"EditConnectionImplementation": "Modifier la connexion - {implementationName}",
"NotificationStatusAllClientHealthCheckMessage": "Toutes les notifications ne sont pas disponibles en raison d'échecs",
"NotificationStatusSingleClientHealthCheckMessage": "Notifications indisponibles en raison d'échecs : {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Notifications indisponibles en raison d'échecs : {notificationNames}",
"EditApplicationImplementation": "Ajouter une condition - {implementationName}",
"EditIndexerImplementation": "Modifier l'indexeur - {implementationName}",
"EditIndexerProxyImplementation": "Modifier un proxy d'indexeur - {implementationName}",
@@ -587,7 +587,7 @@
"AddDownloadClientImplementation": "Ajouter un client de téléchargement - {implementationName}",
"ManageDownloadClients": "Gérer les clients de téléchargement",
"AuthenticationRequiredPasswordHelpTextWarning": "Saisir un nouveau mot de passe",
"IndexerDownloadClientHealthCheckMessage": "Indexeurs avec des clients de téléchargement invalides : {0].",
"IndexerDownloadClientHealthCheckMessage": "Indexeurs avec des clients de téléchargement invalides : {indexerNames}.",
"AuthenticationMethod": "Méthode d'authentification",
"AuthenticationMethodHelpTextWarning": "Veuillez choisir une méthode d'authentification valide",
"ActiveIndexers": "Indexeurs actifs",
@@ -745,5 +745,9 @@
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "Synchroniser le rejet des hachages torrent sur liste bloquée lors de la saisie",
"ClickToChangeQueryOptions": "Cliquez pour modifier les options de la requête",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Si un torrent est bloqué par le hachage, il peut ne pas être correctement rejeté pendant le RSS/recherche pour certains indexeurs. L'activation de cette fonction permet de le rejeter après que le torrent a été saisi, mais avant qu'il ne soit envoyé au client.",
"ProwlarrDownloadClientsAlert": "Si vous avez l'intention d'effectuer des recherches directement dans {appName}, vous devez ajouter les clients de téléchargement. Sinon, vous n'avez pas besoin de les ajouter ici. Pour les recherches à partir de vos applications, les clients de téléchargement qui y sont configurés sont utilisés à la place."
"ProwlarrDownloadClientsAlert": "Si vous avez l'intention d'effectuer des recherches directement dans {appName}, vous devez ajouter les clients de téléchargement. Sinon, vous n'avez pas besoin de les ajouter ici. Pour les recherches à partir de vos applications, les clients de téléchargement qui y sont configurés sont utilisés à la place.",
"IndexerMTeamTpSettingsApiKeyHelpText": "Clé API du site (trouvée dans le panneau de configuration utilisateur => Sécurité => Laboratoire)",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Rechercher uniquement les versions freeleech",
"NotificationsTelegramSettingsIncludeAppName": "Inclure {appName} dans le Titre",
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Préfixer éventuellement le titre du message par {appName} pour différencier les notifications des différentes applications"
}

View File

@@ -20,7 +20,7 @@
"NoLinks": "אין קישורים",
"PendingChangesDiscardChanges": "מחק שינויים ועזוב",
"ProxyBypassFilterHelpText": "השתמש ב- ',' כמפריד וב- '*.' כתו כללי לתת-דומיינים",
"ProxyCheckBadRequestMessage": "נכשל בדיקת ה- proxy. קוד קוד: {0}",
"ProxyBadRequestHealthCheckMessage": "נכשל בדיקת ה- proxy. קוד קוד: {statusCode}",
"ReleaseStatus": "שחרור סטטוס",
"Reload": "לִטעוֹן מִחָדָשׁ",
"RemovedFromTaskQueue": "הוסר מתור המשימות",
@@ -39,8 +39,8 @@
"Added": "נוסף",
"Component": "רְכִיב",
"Info": "מידע",
"IndexerLongTermStatusCheckAllClientMessage": "כל האינדקסים אינם זמינים עקב כשלים במשך יותר מ -6 שעות",
"IndexerLongTermStatusCheckSingleClientMessage": "אינדקסים לא זמינים עקב כשלים במשך יותר משש שעות: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "כל האינדקסים אינם זמינים עקב כשלים במשך יותר מ -6 שעות",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "אינדקסים לא זמינים עקב כשלים במשך יותר משש שעות: {indexerNames}",
"Manual": "מדריך ל",
"PageSize": "גודל עמוד",
"PageSizeHelpText": "מספר הפריטים להצגה בכל עמוד",
@@ -80,8 +80,8 @@
"Custom": "המותאם אישית",
"CustomFilters": "מסננים מותאמים אישית",
"Date": "תַאֲרִיך",
"DownloadClientStatusCheckAllClientMessage": "כל לקוחות ההורדה אינם זמינים עקב כשלים",
"DownloadClientStatusCheckSingleClientMessage": "הורדת לקוחות לא זמינה עקב כשלים: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "כל לקוחות ההורדה אינם זמינים עקב כשלים",
"DownloadClientStatusSingleClientHealthCheckMessage": "הורדת לקוחות לא זמינה עקב כשלים: {downloadClientNames}",
"Fixed": "תוקן",
"FocusSearchBox": "תיבת חיפוש פוקוס",
"Folder": "תיקיה",
@@ -141,7 +141,7 @@
"Time": "זְמַן",
"Title": "כותרת",
"UnableToLoadHistory": "לא ניתן לטעון את ההיסטוריה",
"UpdateCheckStartupNotWritableMessage": "לא ניתן להתקין את העדכון מכיוון שתיקיית ההפעלה '{0}' אינה ניתנת לכתיבה על ידי המשתמש '{1}'.",
"UpdateStartupNotWritableHealthCheckMessage": "לא ניתן להתקין את העדכון מכיוון שתיקיית ההפעלה '{startupFolder}' אינה ניתנת לכתיבה על ידי המשתמש '{userName}'.",
"AddDownloadClient": "הוסף לקוח הורדות",
"Filename": "שם קובץ",
"Files": "קבצים",
@@ -162,13 +162,13 @@
"IndexerPriorityHelpText": "עדיפות אינדקס מ -1 (הגבוה ביותר) ל -50 (הנמוך ביותר). ברירת מחדל: 25.",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "כל הרשימות אינן זמינות בגלל כשלים",
"IndexerProxyStatusUnavailableHealthCheckMessage": "אינדקסים לא זמינים בגלל כשלים: {indexerProxyNames}",
"IndexerStatusCheckAllClientMessage": "כל האינדקסים אינם זמינים עקב כשלים",
"IndexerStatusCheckSingleClientMessage": "אינדקסים לא זמינים בגלל כשלים: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "כל האינדקסים אינם זמינים עקב כשלים",
"IndexerStatusUnavailableHealthCheckMessage": "אינדקסים לא זמינים בגלל כשלים: {indexerNames}",
"NoBackupsAreAvailable": "אין גיבויים",
"PackageVersion": "גרסת חבילה",
"Peers": "עמיתים",
"ProxyCheckFailedToTestMessage": "נכשל בדיקת ה- proxy: {0}",
"ProxyCheckResolveIpMessage": "פתרון כתובת ה- IP עבור מארח ה- Proxy המוגדר {0} נכשל",
"ProxyFailedToTestHealthCheckMessage": "נכשל בדיקת ה- proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "פתרון כתובת ה- IP עבור מארח ה- Proxy המוגדר {proxyHostName} נכשל",
"ProxyPasswordHelpText": "עליך להזין שם משתמש וסיסמה רק אם נדרשים שם. השאר אותם ריקים אחרת.",
"ProxyUsernameHelpText": "עליך להזין שם משתמש וסיסמה רק אם נדרשים שם. השאר אותם ריקים אחרת.",
"Reddit": "רדיט",
@@ -197,8 +197,8 @@
"Tomorrow": "מָחָר",
"Torrent": "טורנטים",
"UnableToAddANewIndexerProxyPleaseTryAgain": "לא ניתן להוסיף אינדקס חדש, נסה שוב.",
"UpdateCheckStartupTranslocationMessage": "לא ניתן להתקין את העדכון מכיוון שתיקיית ההפעלה '{0}' נמצאת בתיקיית טרנסלוקציה של אפליקציות.",
"UpdateCheckUINotWritableMessage": "לא ניתן להתקין את העדכון מכיוון שתיקיית ממשק המשתמש '{0}' אינה ניתנת לכתיבה על ידי המשתמש '{1}'.",
"UpdateStartupTranslocationHealthCheckMessage": "לא ניתן להתקין את העדכון מכיוון שתיקיית ההפעלה '{startupFolder}' נמצאת בתיקיית טרנסלוקציה של אפליקציות.",
"UpdateUiNotWritableHealthCheckMessage": "לא ניתן להתקין את העדכון מכיוון שתיקיית ממשק המשתמש '{uiFolder}' אינה ניתנת לכתיבה על ידי המשתמש '{userName}'.",
"Updates": "עדכונים",
"UpdateScriptPathHelpText": "נתיב לסקריפט מותאם אישית שלוקח חבילת עדכון שחולצה ומטפל בשארית תהליך העדכון",
"Uptime": "זמן עבודה",
@@ -386,7 +386,7 @@
"DeleteSelectedDownloadClients": "מחק את לקוח ההורדות",
"DeleteSelectedIndexersMessageText": "האם אתה בטוח שברצונך למחוק את האינדקס '{0}'?",
"DownloadClientPriorityHelpText": "העדיפו עדיפות למספר לקוחות הורדה. Round-Robin משמש ללקוחות עם אותה עדיפות.",
"ApiKeyValidationHealthCheckMessage": "עדכן בבקשה את מפתח ה־API שלך כדי שיהיה באורך של לפחות {0} תווים. תוכל לעשות זאת בהגדרות או דרך קובץ הקונפיגורציה.",
"ApiKeyValidationHealthCheckMessage": "עדכן בבקשה את מפתח ה־API שלך כדי שיהיה באורך של לפחות {length} תווים. תוכל לעשות זאת בהגדרות או דרך קובץ הקונפיגורציה.",
"More": "יותר",
"Track": "זֵכֶר",
"ApplyTagsHelpTextHowToApplyApplications": "כיצד להחיל תגים על הסרטים שנבחרו",
@@ -401,7 +401,7 @@
"Album": "אלבום",
"Artist": "אמן",
"NotificationStatusAllClientHealthCheckMessage": "כל הרשימות אינן זמינות בגלל כשלים",
"NotificationStatusSingleClientHealthCheckMessage": "רשימות לא זמינות בגלל כשלים: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "רשימות לא זמינות בגלל כשלים: {notificationNames}",
"ResetAPIKeyMessageText": "האם אתה בטוח שברצונך לאפס את מפתח ה- API שלך?",
"DisabledForLocalAddresses": "מושבת לכתובות מקומיות",
"Publisher": "מוציא לאור",

View File

@@ -54,7 +54,7 @@
"Authentication": "प्रमाणीकरण",
"ClientPriority": "ग्राहक प्राथमिकता",
"Connections": "सम्बन्ध",
"DownloadClientStatusCheckSingleClientMessage": "विफलताओं के कारण अनुपलब्ध ग्राहक डाउनलोड करें: {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "विफलताओं के कारण अनुपलब्ध ग्राहक डाउनलोड करें: {downloadClientNames}",
"NoChanges": "कोई बदलाव नहीं",
"Yesterday": "बिता कल",
"DeleteIndexerProxyMessageText": "क्या आप वाकई '{0}' टैग हटाना चाहते हैं?",
@@ -104,8 +104,8 @@
"DownloadClientSettings": "क्लाइंट सेटिंग्स डाउनलोड करें",
"EventType": "घटना प्रकार",
"Exception": "अपवाद",
"IndexerStatusCheckAllClientMessage": "विफलताओं के कारण सभी अनुक्रमणिका अनुपलब्ध हैं",
"IndexerStatusCheckSingleClientMessage": "अनुक्रमणिका विफलताओं के कारण अनुपलब्ध: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "विफलताओं के कारण सभी अनुक्रमणिका अनुपलब्ध हैं",
"IndexerStatusUnavailableHealthCheckMessage": "अनुक्रमणिका विफलताओं के कारण अनुपलब्ध: {indexerNames}",
"Info": "जानकारी",
"Language": "भाषा: हिन्दी",
"UnableToAddANewDownloadClientPleaseTryAgain": "नया डाउनलोड क्लाइंट जोड़ने में असमर्थ, कृपया पुनः प्रयास करें।",
@@ -133,9 +133,9 @@
"NoLinks": "कोई लिंक नहीं",
"BindAddress": "बाँध का पता",
"Branch": "डाली",
"ProxyCheckBadRequestMessage": "प्रॉक्सी का परीक्षण करने में विफल। स्थिति कोड: {0}",
"ProxyCheckFailedToTestMessage": "प्रॉक्सी का परीक्षण करने में विफल: {0}",
"ProxyCheckResolveIpMessage": "कॉन्फ़िगर प्रॉक्सी होस्ट {0} के लिए आईपी एड्रेस को हल करने में विफल",
"ProxyBadRequestHealthCheckMessage": "प्रॉक्सी का परीक्षण करने में विफल। स्थिति कोड: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "प्रॉक्सी का परीक्षण करने में विफल: {url}",
"ProxyResolveIpHealthCheckMessage": "कॉन्फ़िगर प्रॉक्सी होस्ट {proxyHostName} के लिए आईपी एड्रेस को हल करने में विफल",
"ProxyPasswordHelpText": "यदि आवश्यक हो तो आपको केवल एक उपयोगकर्ता नाम और पासवर्ड दर्ज करना होगा। उन्हें खाली छोड़ दें अन्यथा।",
"ProxyType": "प्रॉक्सी प्रकार",
"ProxyUsernameHelpText": "यदि आवश्यक हो तो आपको केवल एक उपयोगकर्ता नाम और पासवर्ड दर्ज करना होगा। उन्हें खाली छोड़ दें अन्यथा।",
@@ -170,7 +170,7 @@
"UnsavedChanges": "बिना बदलाव किए",
"UnselectAll": "सभी का चयन रद्द",
"UpdateAutomaticallyHelpText": "अपडेट को स्वचालित रूप से डाउनलोड और इंस्टॉल करें। आप अभी भी सिस्टम से अपडेट कर पाएंगे: अपडेट",
"UpdateCheckUINotWritableMessage": "अद्यतन स्थापित नहीं कर सकता क्योंकि UI फ़ोल्डर '{0}' उपयोगकर्ता '{1}' द्वारा लिखने योग्य नहीं है।",
"UpdateUiNotWritableHealthCheckMessage": "अद्यतन स्थापित नहीं कर सकता क्योंकि UI फ़ोल्डर '{uiFolder}' उपयोगकर्ता '{userName}' द्वारा लिखने योग्य नहीं है।",
"Uptime": "अपटाइम",
"URLBase": "URL बेस",
"YesCancel": "हाँ, रद्द करें",
@@ -234,7 +234,7 @@
"CloneProfile": "क्लोन प्रोफ़ाइल",
"Close": "बंद करे",
"CloseCurrentModal": "वर्तमान मोडल को बंद करें",
"DownloadClientStatusCheckAllClientMessage": "सभी डाउनलोड क्लाइंट विफलताओं के कारण अनुपलब्ध हैं",
"DownloadClientStatusAllClientHealthCheckMessage": "सभी डाउनलोड क्लाइंट विफलताओं के कारण अनुपलब्ध हैं",
"Edit": "संपादित करें",
"EnableAutomaticSearch": "स्वचालित खोज सक्षम करें",
"EnableAutomaticSearchHelpText": "यूआई के माध्यम से या रेडर द्वारा स्वचालित खोज किए जाने पर उपयोग किया जाएगा",
@@ -268,8 +268,8 @@
"Hostname": "होस्ट का नाम",
"IncludeHealthWarningsHelpText": "स्वास्थ्य चेतावनी शामिल करें",
"IndexerFlags": "इंडेक्स फ्लैग",
"IndexerLongTermStatusCheckAllClientMessage": "6 घंटे से अधिक समय तक विफलताओं के कारण सभी सूचकांक अनुपलब्ध हैं",
"IndexerLongTermStatusCheckSingleClientMessage": "6 घंटे से अधिक समय तक विफलताओं के कारण सूचकांक उपलब्ध नहीं: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 घंटे से अधिक समय तक विफलताओं के कारण सभी सूचकांक अनुपलब्ध हैं",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "6 घंटे से अधिक समय तक विफलताओं के कारण सूचकांक उपलब्ध नहीं: {indexerNames}",
"IndexerPriority": "सूचकांक प्राथमिकता",
"IndexerPriorityHelpText": "इंडेक्सर प्राथमिकता 1 (उच्चतम) से 50 (सबसे कम)। डिफ़ॉल्ट: 25",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "सभी सूचियाँ विफल होने के कारण अनुपलब्ध हैं",
@@ -297,8 +297,8 @@
"DownloadClientsLoadError": "डाउनलोड क्लाइंट लोड करने में असमर्थ",
"UnableToLoadGeneralSettings": "सामान्य सेटिंग्स लोड करने में असमर्थ",
"UnableToLoadNotifications": "सूचनाएं लोड करने में असमर्थ",
"UpdateCheckStartupNotWritableMessage": "अपडेट स्थापित नहीं किया जा सकता क्योंकि स्टार्टअप फ़ोल्डर '{0}' उपयोगकर्ता '{1}' द्वारा लिखने योग्य नहीं है।",
"UpdateCheckStartupTranslocationMessage": "अपडेट स्थापित नहीं किया जा सकता क्योंकि स्टार्टअप फ़ोल्डर '{0}' ऐप ट्रांसलेशन फ़ोल्डर में है।",
"UpdateStartupNotWritableHealthCheckMessage": "अपडेट स्थापित नहीं किया जा सकता क्योंकि स्टार्टअप फ़ोल्डर '{startupFolder}' उपयोगकर्ता '{userName}' द्वारा लिखने योग्य नहीं है।",
"UpdateStartupTranslocationHealthCheckMessage": "अपडेट स्थापित नहीं किया जा सकता क्योंकि स्टार्टअप फ़ोल्डर '{startupFolder}' ऐप ट्रांसलेशन फ़ोल्डर में है।",
"NoUpdatesAreAvailable": "कोई अद्यतन उपलब्ध नहीं हैं",
"OAuthPopupMessage": "आपके ब्राउज़र द्वारा पॉप-अप्स को ब्लॉक किया जा रहा है",
"OnHealthIssueHelpText": "स्वास्थ्य के मुद्दे पर",
@@ -347,10 +347,12 @@
"minutes": "मिनट",
"DeleteAppProfileMessageText": "क्या आप वाकई गुणवत्ता प्रोफ़ाइल {0} को हटाना चाहते हैं",
"NotificationStatusAllClientHealthCheckMessage": "सभी सूचियाँ विफल होने के कारण अनुपलब्ध हैं",
"NotificationStatusSingleClientHealthCheckMessage": "विफलताओं के कारण अनुपलब्ध सूची: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "विफलताओं के कारण अनुपलब्ध सूची: {notificationNames}",
"AuthBasic": "बेसिक (ब्राउज़र पॉपअप)",
"AuthForm": "प्रपत्र (लॉग इन पेज)",
"DisabledForLocalAddresses": "स्थानीय पते के लिए अक्षम",
"None": "कोई नहीं",
"ResetAPIKeyMessageText": "क्या आप वाकई अपनी API कुंजी को रीसेट करना चाहते हैं?"
"ResetAPIKeyMessageText": "क्या आप वाकई अपनी API कुंजी को रीसेट करना चाहते हैं?",
"IndexerHDBitsSettingsMediums": "मध्यम",
"CustomFilter": "कस्टम फ़िल्टर"
}

View File

@@ -10,8 +10,8 @@
"Enable": "Aktiválás",
"EditIndexer": "Indexer Szerkesztése",
"Edit": "Szerkeszt",
"DownloadClientStatusCheckSingleClientMessage": "Letöltőkliens hiba miatt nem elérhető: {0}",
"DownloadClientStatusCheckAllClientMessage": "Az összes letöltőkliens elérhetetlen, hiba miatt",
"DownloadClientStatusSingleClientHealthCheckMessage": "Letöltőkliens hiba miatt nem elérhető: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Az összes letöltőkliens elérhetetlen, hiba miatt",
"DownloadClientsSettingsSummary": "Letöltőkliens konfigurációja a {appName} felhasználói felület keresésbe történő integráláshoz",
"DownloadClientSettings": "Letöltőkliens Beállítások",
"DownloadClients": "Letöltő kliensek",
@@ -160,9 +160,9 @@
"ProxyUsernameHelpText": "Csak akkor kell megadnia egy felhasználónevet és jelszót, ha szükséges. Ellenkező esetben hagyja üresen.",
"ProxyType": "Proxy típus",
"ProxyPasswordHelpText": "Csak akkor kell megadnia egy felhasználónevet és jelszót, ha szükséges. Ellenkező esetben hagyja üresen.",
"ProxyCheckResolveIpMessage": "Nem sikerült megoldani a konfigurált proxykiszolgáló IP-címét {0}",
"ProxyCheckFailedToTestMessage": "Proxy tesztelése sikertelen: {0}",
"ProxyCheckBadRequestMessage": "Proxy tesztelése sikertelen. Állapotkód: {0}",
"ProxyResolveIpHealthCheckMessage": "Nem sikerült megoldani a konfigurált proxykiszolgáló IP-címét {proxyHostName}",
"ProxyFailedToTestHealthCheckMessage": "Proxy tesztelése sikertelen: {url}",
"ProxyBadRequestHealthCheckMessage": "Proxy tesztelése sikertelen. Állapotkód: {statusCode}",
"ProxyBypassFilterHelpText": "Használja a ',' jelet elválasztóként és a '*' jelet. helyettesítő karakterként az aldomainekhez",
"Proxy": "Proxy",
"Protocol": "Protokoll",
@@ -215,7 +215,7 @@
"Interval": "Intervallum",
"InteractiveSearch": "Interaktív Keresés",
"Info": "Infó",
"IndexerStatusCheckSingleClientMessage": "Indexerek elérhetetlenek a következő hiba miatt: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexerek elérhetetlenek a következő hiba miatt: {indexerNames}",
"Hostname": "Hosztnév",
"Host": "Hoszt",
"Grabbed": "Megragadta",
@@ -249,7 +249,7 @@
"TagCannotBeDeletedWhileInUse": "Használat közben nem törölhető",
"TableOptionsColumnsMessage": "Válasszd ki, mely oszlopok legyenek láthatóak, és milyen sorrendben jelenjenek meg",
"SystemTimeCheckMessage": "A rendszeridő több mint 1 napja nem frissült. Előfordulhat, hogy az ütemezett feladatok az idő kijavításáig nem futnak megfelelően",
"IndexerStatusCheckAllClientMessage": "Az összes indexer elérhetetlen hiba miatt",
"IndexerStatusAllUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen hiba miatt",
"Indexers": "Indexerek",
"IndexerPriorityHelpText": "Indexelő prioritás 1-től (legmagasabb) 50-ig (legalacsonyabb). Alapértelmezés: 25.",
"IndexerPriority": "Indexer Prioritása",
@@ -271,9 +271,9 @@
"UpdateScriptPathHelpText": "Keresse meg az egyéni parancsfájl elérési útját, amely kibontott frissítési csomagot vesz fel, és kezeli a frissítési folyamat fennmaradó részét",
"Updates": "Frissítések",
"UpdateMechanismHelpText": "Használja a {appName} beépített frissítőjét vagy szkriptjét",
"UpdateCheckUINotWritableMessage": "Nem lehet telepíteni a frissítést, mert a(z) „{0}” felhasználói felület mappát nem írhatja a „{1}” felhasználó.",
"UpdateCheckStartupTranslocationMessage": "Nem lehet telepíteni a frissítést, mert a (z) „{0}” indítási mappa az Alkalmazások Transzlokációs mappájában található.",
"UpdateCheckStartupNotWritableMessage": "A frissítés nem telepíthető, mert a (z) „{0}” indítási mappát a „{1}” felhasználó nem írhatja.",
"UpdateUiNotWritableHealthCheckMessage": "Nem lehet telepíteni a frissítést, mert a(z) „{uiFolder}” felhasználói felület mappát nem írhatja a „{userName}” felhasználó.",
"UpdateStartupTranslocationHealthCheckMessage": "Nem lehet telepíteni a frissítést, mert a (z) „{startupFolder}” indítási mappa az Alkalmazások Transzlokációs mappájában található.",
"UpdateStartupNotWritableHealthCheckMessage": "A frissítés nem telepíthető, mert a (z) „{startupFolder}” indítási mappát a „{userName}” felhasználó nem írhatja.",
"UpdateAutomaticallyHelpText": "A frissítések automatikus letöltése és telepítése. A Rendszer: Frissítések alkalmazásból továbbra is telepíteni tudja",
"UnselectAll": "Minden kijelölés megszüntetése",
"UnsavedChanges": "Nem mentett változások",
@@ -284,8 +284,8 @@
"ShowSearch": "Keresés mutatása",
"SetTags": "Címkék beállítása",
"NotificationTriggers": "Értesítési triggerek",
"IndexerLongTermStatusCheckSingleClientMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt: {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Az összes indexer elérhetetlen több mint 6 órája, meghibásodás miatt",
"SettingsLogSql": "SQL naplózás",
"IndexerRss": "Indexer Rss",
"IndexerAuth": "Indexelő auth",
@@ -374,8 +374,8 @@
"IndexerSettingsSummary": "Konfigurálja a különböző globális indexer beállításokat, beleértve a proxykat is.",
"Notifications": "Értesítések",
"UnableToAddANewIndexerProxyPleaseTryAgain": "Nem lehet új Indexer Proxyt hozzáadni, próbálja újra.",
"IndexerVipCheckExpiredClientMessage": "Az Indexer VIP előnyei lejártak: {0}",
"IndexerVipCheckExpiringClientMessage": "Az Indexer VIP előnyei hamarosan lejárnak: {0}",
"IndexerVipExpiredHealthCheckMessage": "Az Indexer VIP előnyei lejártak: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Az Indexer VIP előnyei hamarosan lejárnak: {indexerNames}",
"IndexerProxy": "Indexelő Proxy",
"NoLinks": "Nincsenek Linkek",
"Notification": "Értesítés",
@@ -476,12 +476,12 @@
"EditSelectedDownloadClients": "Kijelölt letöltési kliensek szerkesztése",
"Label": "Címke",
"SelectIndexers": "Indexelők keresése",
"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",
"Episode": "Epizód",
"Genre": "Műfajok",
"Theme": "Téma",
"Track": "Dal",
"UpdateAvailable": "Új frissítés elérhető",
"UpdateAvailableHealthCheckMessage": "Új frissítés elérhető",
"Year": "Év",
"Book": "Könyv",
"Season": "Évad",
@@ -496,7 +496,7 @@
"minutes": "percek",
"AddConnection": "Csatlakozás hozzáadása",
"NotificationStatusAllClientHealthCheckMessage": "Az összes értesítés nem érhető el hibák miatt",
"NotificationStatusSingleClientHealthCheckMessage": "Az alkalmazás nem áll rendelkezésre az alábbi hibák miatt: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Az alkalmazás nem áll rendelkezésre az alábbi hibák miatt: {notificationNames}",
"AuthBasic": "Alap (böngésző előugró ablak)",
"AuthForm": "Űrlapok (bejelentkezési oldal)",
"DisabledForLocalAddresses": "Helyi címeknél letiltva",
@@ -546,7 +546,29 @@
"DeleteSelectedApplicationsMessageText": "Biztosan törölni szeretne {count} kiválasztott importlistát?",
"CountApplicationsSelected": "{count} Gyűjtemény(ek) kiválasztva",
"ManageClients": "Ügyfelek kezelése",
"IndexerDownloadClientHealthCheckMessage": "Indexelők érvénytelen letöltési kliensekkel: {0}.",
"IndexerDownloadClientHealthCheckMessage": "Indexelők érvénytelen letöltési kliensekkel: {indexerNames}.",
"PasswordConfirmation": "Jelszó megerősítése",
"SecretToken": "Titkos token"
"SecretToken": "Titkos token",
"UseSsl": "SSL használata",
"Donate": "Adományoz",
"IndexerBeyondHDSettingsSearchTypes": "Keresés típusa",
"Mixed": "Mixed",
"TorrentBlackholeSaveMagnetFiles": "Magnet fájlok mentése",
"DownloadClientSettingsInitialState": "Kezdeti állapot",
"DownloadClientSettingsInitialStateHelpText": "A torrentek kezdeti állapota hozzáadva a következőhöz {clientName}",
"DownloadClientTransmissionSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Aria2 hely használatához",
"IndexerHDBitsSettingsCodecs": "Kodek",
"IndexerHDBitsSettingsMediums": "Közepes",
"BlackholeFolderHelpText": "Mappa, amelyben az {appName} tárolja az {extension} fájlt",
"Destination": "Rendeltetési hely",
"Directory": "Könyvtár",
"DownloadClientFloodSettingsAdditionalTags": "További címkék",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Hozzáadja a média tulajdonságait címkékként. A tippek példák.",
"TorrentBlackholeSaveMagnetFilesExtension": "Magnet Files kiterjesztés mentése",
"TorrentBlackholeTorrentFolder": "Torrent mappa",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Előtagot ad a deluge json URL-hez, lásd: {url}",
"CustomFilter": "Egyedi Szűrők",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "Opcionális megosztott mappa a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Download Station hely használatához",
"DownloadClientRTorrentSettingsDirectoryHelpText": "Választható hely a letöltések elhelyezéséhez, hagyja üresen az alapértelmezett Aria2 hely használatához",
"DownloadClientSettingsUseSslHelpText": "Biztonságos kapcsolat használata, amikor a(z) {clientName} szolgáltatással csatlakozik"
}

View File

@@ -26,8 +26,8 @@
"Indexer": "Pengindeks",
"No": "Tidak",
"Priority": "Prioritas",
"ProxyCheckBadRequestMessage": "Gagal menguji proxy. Kode Status: {0}",
"ProxyCheckFailedToTestMessage": "Gagal menguji proxy: {0}",
"ProxyBadRequestHealthCheckMessage": "Gagal menguji proxy. Kode Status: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Gagal menguji proxy: {url}",
"Queue": "Antrean",
"Backup": "Cadangan",
"Backups": "Cadangan",

View File

@@ -104,7 +104,7 @@
"PackageVersion": "Pakki Útgáfa",
"PageSize": "Stærð blaðsíðu",
"PageSizeHelpText": "Fjöldi atriða til að sýna á hverri síðu",
"ProxyCheckResolveIpMessage": "Mistókst að leysa IP-tölu fyrir stillta proxy-gestgjafa {0}",
"ProxyResolveIpHealthCheckMessage": "Mistókst að leysa IP-tölu fyrir stillta proxy-gestgjafa {proxyHostName}",
"ProxyPasswordHelpText": "Þú þarft aðeins að slá inn notendanafn og lykilorð ef þess er krafist. Láttu þá vera auða annars.",
"ProxyType": "Umboðsmaður",
"Queue": "Biðröð",
@@ -127,9 +127,9 @@
"UnableToLoadUISettings": "Ekki er hægt að hlaða stillingar HÍ",
"UnselectAll": "Afmarkaðu allt",
"UpdateAutomaticallyHelpText": "Sjálfkrafa hlaða niður og setja upp uppfærslur. Þú munt samt geta sett upp úr System: Updates",
"UpdateCheckStartupNotWritableMessage": "Ekki er hægt að setja uppfærslu þar sem ræsimappan '{0}' er ekki skrifanleg af notandanum '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Ekki er hægt að setja uppfærslu vegna þess að ræsimappan '{0}' er í forritunarmöppu forrits.",
"UpdateCheckUINotWritableMessage": "Ekki er hægt að setja uppfærslu vegna þess að notendamöppan '{0}' er ekki skrifuð af notandanum '{1}'.",
"UpdateStartupNotWritableHealthCheckMessage": "Ekki er hægt að setja uppfærslu þar sem ræsimappan '{startupFolder}' er ekki skrifanleg af notandanum '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Ekki er hægt að setja uppfærslu vegna þess að ræsimappan '{startupFolder}' er í forritunarmöppu forrits.",
"UpdateUiNotWritableHealthCheckMessage": "Ekki er hægt að setja uppfærslu vegna þess að notendamöppan '{uiFolder}' er ekki skrifuð af notandanum '{userName}'.",
"UpdateMechanismHelpText": "Notaðu innbyggða uppfærslu {appName} eða handrit",
"Updates": "Uppfærslur",
"UpdateScriptPathHelpText": "Leið að sérsniðnu handriti sem tekur útdreginn uppfærslupakka og annast afganginn af uppfærsluferlinu",
@@ -211,8 +211,8 @@
"Discord": "Ósætti",
"Docker": "Docker",
"DownloadClients": "Sækja viðskiptavini",
"DownloadClientStatusCheckAllClientMessage": "Allir viðskiptavinir sem hlaða niður eru ekki tiltækir vegna bilana",
"DownloadClientStatusCheckSingleClientMessage": "Sæktu viðskiptavini sem eru ekki tiltækir vegna bilana: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Allir viðskiptavinir sem hlaða niður eru ekki tiltækir vegna bilana",
"DownloadClientStatusSingleClientHealthCheckMessage": "Sæktu viðskiptavini sem eru ekki tiltækir vegna bilana: {downloadClientNames}",
"EditIndexer": "Breyttu Indexer",
"Enable": "Virkja",
"EnableAutomaticSearch": "Virkja sjálfvirka leit",
@@ -227,12 +227,12 @@
"Indexer": "Indexer",
"Info": "Upplýsingar",
"IndexerFlags": "Indexer fánar",
"IndexerLongTermStatusCheckAllClientMessage": "Allir verðtryggingaraðilar eru ekki tiltækir vegna bilana í meira en 6 klukkustundir",
"IndexerLongTermStatusCheckSingleClientMessage": "Vísitölufólk er ekki tiltækt vegna bilana í meira en 6 klukkustundir: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Allir verðtryggingaraðilar eru ekki tiltækir vegna bilana í meira en 6 klukkustundir",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Vísitölufólk er ekki tiltækt vegna bilana í meira en 6 klukkustundir: {indexerNames}",
"IndexerPriorityHelpText": "Forgangur flokkara frá 1 (Hæstur) til 50 (Lægstur). Sjálfgefið: 25.",
"Indexers": "Vísitölufólk",
"IndexerStatusCheckAllClientMessage": "Allir verðtryggingaraðilar eru ekki tiltækir vegna bilana",
"IndexerStatusCheckSingleClientMessage": "Vísitölufólk er ekki tiltækt vegna bilana: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Allir verðtryggingaraðilar eru ekki tiltækir vegna bilana",
"IndexerStatusUnavailableHealthCheckMessage": "Vísitölufólk er ekki tiltækt vegna bilana: {indexerNames}",
"NoLogFiles": "Engar logskrár",
"Ok": "Allt í lagi",
"OnHealthIssueHelpText": "Um heilbrigðismál",
@@ -270,8 +270,8 @@
"Priority": "Forgangsröð",
"Protocol": "Bókun",
"ProxyBypassFilterHelpText": "Notaðu ',' sem aðskilnað og '*.' sem jókort fyrir undirlén",
"ProxyCheckBadRequestMessage": "Mistókst að prófa umboðsmann. Stöðukóði: {0}",
"ProxyCheckFailedToTestMessage": "Mistókst að prófa umboðsmann: {0}",
"ProxyBadRequestHealthCheckMessage": "Mistókst að prófa umboðsmann. Stöðukóði: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Mistókst að prófa umboðsmann: {url}",
"ProxyUsernameHelpText": "Þú þarft aðeins að slá inn notendanafn og lykilorð ef þess er krafist. Láttu þá vera auða annars.",
"ReleaseStatus": "Sleppa stöðu",
"RemovedFromTaskQueue": "Fjarlægð úr verkröð",
@@ -347,11 +347,13 @@
"ConnectionLostReconnect": "Radarr mun reyna að tengjast sjálfkrafa eða þú getur smellt á endurhlaða hér að neðan.",
"minutes": "Fundargerð",
"NotificationStatusAllClientHealthCheckMessage": "Allir listar eru ekki tiltækir vegna bilana",
"NotificationStatusSingleClientHealthCheckMessage": "Listar ekki tiltækir vegna bilana: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Listar ekki tiltækir vegna bilana: {notificationNames}",
"AuthBasic": "Grunn (sprettiglugga vafra)",
"AuthForm": "Eyðublöð (Innskráningarsíða)",
"DisabledForLocalAddresses": "Óvirkt vegna heimilisfanga",
"None": "Enginn",
"ResetAPIKeyMessageText": "Ertu viss um að þú viljir endurstilla API lykilinn þinn?",
"RestartProwlarr": "Endurræstu {appName}"
"RestartProwlarr": "Endurræstu {appName}",
"IndexerHDBitsSettingsMediums": "Miðlungs",
"CustomFilter": "Sérsniðin síur"
}

View File

@@ -7,7 +7,7 @@
"SelectAll": "Seleziona Tutto",
"Scheduled": "Programmato",
"ReleaseBranchCheckOfficialBranchMessage": "La versione {0} non è una versione valida per le release di {appName}, non riceverai aggiornamenti",
"ProxyCheckResolveIpMessage": "Impossibile risolvere l'indirizzo IP per l'Host Configurato del Proxy {0}",
"ProxyResolveIpHealthCheckMessage": "Impossibile risolvere l'indirizzo IP per l'Host Configurato del Proxy {proxyHostName}",
"NoChanges": "Nessuna Modifica",
"NoChange": "Nessuna Modifica",
"LastWriteTime": "Orario di Ultima Scrittura",
@@ -21,9 +21,9 @@
"Added": "Aggiunto",
"About": "Info",
"Updates": "Aggiornamenti",
"UpdateCheckUINotWritableMessage": "Impossibile installare l'aggiornamento perché l'utente '{1}' non ha i permessi di scrittura per la cartella dell'interfaccia '{0}'.",
"UpdateCheckStartupNotWritableMessage": "Impossibile installare l'aggiornamento perché l'utente '{1}' non ha i permessi di scrittura per la cartella di avvio '{0}'.",
"UpdateCheckStartupTranslocationMessage": "Impossibile installare l'aggiornamento perché la cartella '{0}' si trova in una cartella di \"App Translocation\".",
"UpdateUiNotWritableHealthCheckMessage": "Impossibile installare l'aggiornamento perché l'utente '{userName}' non ha i permessi di scrittura per la cartella dell'interfaccia '{uiFolder}'.",
"UpdateStartupNotWritableHealthCheckMessage": "Impossibile installare l'aggiornamento perché l'utente '{userName}' non ha i permessi di scrittura per la cartella di avvio '{startupFolder}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Impossibile installare l'aggiornamento perché la cartella '{startupFolder}' si trova in una cartella di \"App Translocation\".",
"UI": "Interfaccia",
"Tasks": "Attività",
"Tags": "Etichette",
@@ -41,8 +41,8 @@
"ReleaseStatus": "Stato Release",
"Refresh": "Aggiorna",
"Queue": "Coda",
"ProxyCheckFailedToTestMessage": "Test del proxy fallito: {0}",
"ProxyCheckBadRequestMessage": "Il test del proxy è fallito. Codice Stato: {0}",
"ProxyFailedToTestHealthCheckMessage": "Test del proxy fallito: {url}",
"ProxyBadRequestHealthCheckMessage": "Il test del proxy è fallito. Codice Stato: {statusCode}",
"Proxy": "Proxy",
"Protocol": "Protocollo",
"Options": "Opzioni",
@@ -50,8 +50,8 @@
"Logging": "Logging",
"LogFiles": "File di Log",
"Language": "Lingua",
"IndexerStatusCheckSingleClientMessage": "Indicizzatori non disponibili a causa di errori: {0}",
"IndexerStatusCheckAllClientMessage": "Nessun Indicizzatore disponibile a causa di errori",
"IndexerStatusUnavailableHealthCheckMessage": "Indicizzatori non disponibili a causa di errori: {indexerNames}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Nessun Indicizzatore disponibile a causa di errori",
"Indexers": "Indicizzatori",
"Host": "Host",
"History": "Storia",
@@ -65,8 +65,8 @@
"EventType": "Tipo di Evento",
"Events": "Eventi",
"Edit": "Modifica",
"DownloadClientStatusCheckSingleClientMessage": "Client per il download non disponibili per errori: {0}",
"DownloadClientStatusCheckAllClientMessage": "Nessun client di download è disponibile a causa di errori",
"DownloadClientStatusSingleClientHealthCheckMessage": "Client per il download non disponibili per errori: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Nessun client di download è disponibile a causa di errori",
"DownloadClientsSettingsSummary": "Configurazione dei client di download per l'integrazione nella ricerca di {appName}",
"DownloadClients": "Clients di Download",
"DownloadClient": "Client di Download",
@@ -284,8 +284,8 @@
"FocusSearchBox": "Evidenzia casella di ricerca",
"CloseCurrentModal": "Chiudi la Modale Attuale",
"AcceptConfirmationModal": "Accetta Conferma Modale",
"IndexerLongTermStatusCheckSingleClientMessage": "Alcuni Indicizzatori non sono disponibili da più di 6 ore a causa di errori: {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Nessun Indicizzatore è disponibile da più di 6 ore a causa di errori",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Alcuni Indicizzatori non sono disponibili da più di 6 ore a causa di errori: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Nessun Indicizzatore è disponibile da più di 6 ore a causa di errori",
"Description": "Descrizione",
"Add": "Aggiungi",
"Enabled": "Abilitato",
@@ -365,8 +365,8 @@
"Apps": "Le App",
"DevelopmentSettings": "Impostazioni di Sviluppo",
"RedirectHelpText": "Reindirizza le richieste di download per l'Indicizzatore e passa il prelievo direttamente invece di inoltrare la richiesta tramite {appName}",
"IndexerVipCheckExpiredClientMessage": "I benefici VIP dell'Indicizzatore sono scaduti: {0}",
"IndexerVipCheckExpiringClientMessage": "I benefici VIP dell'Indicizzatore scadranno a breve: {0}",
"IndexerVipExpiredHealthCheckMessage": "I benefici VIP dell'Indicizzatore sono scaduti: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "I benefici VIP dell'Indicizzatore scadranno a breve: {indexerNames}",
"IndexerProxies": "Proxy degli Indicizzatori",
"Stats": "Statistiche",
"SyncAppIndexers": "Sincronizza tutti gli indicizzatori",
@@ -484,10 +484,10 @@
"More": "Di più",
"Season": "Stagione",
"Year": "Anno",
"UpdateAvailable": "É disponibile un nuovo aggiornamento",
"UpdateAvailableHealthCheckMessage": "É disponibile un nuovo aggiornamento",
"Author": "Autore",
"ApplyChanges": "Applica Cambiamenti",
"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",
"DeleteAppProfileMessageText": "Sicuro di voler cancellare il profilo di qualità {0}",
"RecentChanges": "Cambiamenti recenti",
"WhatsNew": "Cosa c'è di nuovo?",
@@ -496,7 +496,7 @@
"minutes": "Minuti",
"AddConnection": "Aggiungi Connessione",
"NotificationStatusAllClientHealthCheckMessage": "Tutte le applicazioni non sono disponibili a causa di errori",
"NotificationStatusSingleClientHealthCheckMessage": "Applicazioni non disponibili a causa di errori: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Applicazioni non disponibili a causa di errori: {notificationNames}",
"AuthForm": "Form (Pagina di Login)",
"DisabledForLocalAddresses": "Disabilitato per Indirizzi Locali",
"None": "Nessuna",
@@ -529,5 +529,10 @@
"AddApplication": "Aggiungi Applicazione",
"AddCategory": "Aggiungi Categoria",
"ActiveApps": "App Attive",
"ActiveIndexers": "Indicizzatori Attivi"
"ActiveIndexers": "Indicizzatori Attivi",
"IndexerBeyondHDSettingsSearchTypes": "Tipi di Ricerca",
"Directory": "Cartella",
"CustomFilter": "Filtri Personalizzati",
"IndexerHDBitsSettingsCodecs": "Codec",
"IndexerHDBitsSettingsMediums": "medio"
}

View File

@@ -41,7 +41,7 @@
"UISettings": "UI設定",
"UnableToAddANewApplicationPleaseTryAgain": "新しい通知を追加できません。もう一度やり直してください。",
"UnableToLoadNotifications": "通知を読み込めません",
"UpdateCheckStartupNotWritableMessage": "スタートアップフォルダ「{0}」はユーザー「{1}」によって書き込み可能ではないため、更新をインストールできません。",
"UpdateStartupNotWritableHealthCheckMessage": "スタートアップフォルダ「{startupFolder}」はユーザー「{userName}」によって書き込み可能ではないため、更新をインストールできません。",
"UpdateMechanismHelpText": "{appName}の組み込みアップデーターまたはスクリプトを使用する",
"Wiki": "ウィキ",
"Yesterday": "昨日",
@@ -51,7 +51,7 @@
"DeleteIndexerProxyMessageText": "タグ「{0}」を削除してもよろしいですか?",
"Edit": "編集",
"DownloadClientSettings": "クライアント設定のダウンロード",
"DownloadClientStatusCheckAllClientMessage": "障害のため、すべてのダウンロードクライアントを利用できません",
"DownloadClientStatusAllClientHealthCheckMessage": "障害のため、すべてのダウンロードクライアントを利用できません",
"EnableAutomaticSearch": "自動検索を有効にする",
"EnableAutomaticSearchHelpText": "UIまたはRadarによって自動検索が実行されるときに使用されます",
"Enabled": "有効",
@@ -60,7 +60,7 @@
"Filename": "ファイル名",
"Files": "ファイル",
"Filter": "フィルタ",
"IndexerLongTermStatusCheckAllClientMessage": "6時間以上の障害のため、すべてのインデクサーが使用できなくなります",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6時間以上の障害のため、すべてのインデクサーが使用できなくなります",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "障害のため、すべてのインデクサーを使用できません",
"IndexerProxyStatusUnavailableHealthCheckMessage": "失敗のため利用できないリスト:{indexerProxyNames}",
"Indexers": "インデクサー",
@@ -109,7 +109,7 @@
"AddDownloadClient": "ダウンロードクライアントの追加",
"BackupFolderHelpText": "相対パスは{appName}のAppDataディレクトリの下にあります",
"DownloadClient": "クライアントのダウンロード",
"DownloadClientStatusCheckSingleClientMessage": "失敗のためにダウンロードできないクライアント:{0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "失敗のためにダウンロードできないクライアント:{downloadClientNames}",
"Restore": "戻す",
"EnableRss": "RSSを有効にする",
"EnableInteractiveSearch": "インタラクティブ検索を有効にする",
@@ -133,7 +133,7 @@
"Connections": "接続",
"ConnectSettings": "接続設定",
"Options": "オプション",
"IndexerStatusCheckAllClientMessage": "障害のため、すべてのインデクサーを使用できません",
"IndexerStatusAllUnavailableHealthCheckMessage": "障害のため、すべてのインデクサーを使用できません",
"Reddit": "Reddit",
"Today": "今日",
"Tomorrow": "明日",
@@ -171,9 +171,9 @@
"Protocol": "プロトコル",
"Proxy": "プロキシ",
"ProxyBypassFilterHelpText": "'、'を区切り文字として使用し、 '*。'を使用します。サブドメインのワイルドカードとして",
"ProxyCheckBadRequestMessage": "プロキシのテストに失敗しました。 StatusCode{0}",
"ProxyCheckFailedToTestMessage": "プロキシのテストに失敗しました:{0}",
"ProxyCheckResolveIpMessage": "構成済みプロキシホスト{0}のIPアドレスの解決に失敗しました",
"ProxyBadRequestHealthCheckMessage": "プロキシのテストに失敗しました。 StatusCode{statusCode}",
"ProxyFailedToTestHealthCheckMessage": "プロキシのテストに失敗しました:{url}",
"ProxyResolveIpHealthCheckMessage": "構成済みプロキシホスト{proxyHostName}のIPアドレスの解決に失敗しました",
"ProxyPasswordHelpText": "ユーザー名とパスワードが必要な場合にのみ入力する必要があります。それ以外の場合は空白のままにします。",
"ProxyType": "プロキシタイプ",
"RefreshMovie": "映画を更新する",
@@ -215,8 +215,8 @@
"BackupRetentionHelpText": "保存期間より古い自動バックアップは自動的にクリーンアップされます",
"Backups": "バックアップ",
"CertificateValidation": "証明書の検証",
"UpdateCheckStartupTranslocationMessage": "スタートアップフォルダー '{0}'がAppTranslocationフォルダーにあるため、更新をインストールできません。",
"UpdateCheckUINotWritableMessage": "UIフォルダー「{0}」はユーザー「{1}」によって書き込み可能ではないため、更新をインストールできません。",
"UpdateStartupTranslocationHealthCheckMessage": "スタートアップフォルダー '{startupFolder}'がAppTranslocationフォルダーにあるため、更新をインストールできません。",
"UpdateUiNotWritableHealthCheckMessage": "UIフォルダー「{uiFolder}」はユーザー「{userName}」によって書き込み可能ではないため、更新をインストールできません。",
"URLBase": "URLベース",
"UrlBaseHelpText": "リバースプロキシサポートの場合、デフォルトは空です",
"UseProxy": "プロキシを使う",
@@ -298,8 +298,8 @@
"Host": "ホスト",
"Hostname": "ホスト名",
"IllRestartLater": "後で再起動します",
"IndexerLongTermStatusCheckSingleClientMessage": "6時間以上の障害のため、インデクサーを使用できません{0}",
"IndexerStatusCheckSingleClientMessage": "失敗のためインデクサーを利用できません:{0}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "6時間以上の障害のため、インデクサーを使用できません{indexerNames}",
"IndexerStatusUnavailableHealthCheckMessage": "失敗のためインデクサーを利用できません:{indexerNames}",
"Info": "情報",
"NoLogFiles": "ログファイルがありません",
"NoTagsHaveBeenAddedYet": "タグはまだ追加されていません",
@@ -346,12 +346,14 @@
"RecentChanges": "最近の変化",
"WhatsNew": "新着情報?",
"minutes": "議事録",
"NotificationStatusSingleClientHealthCheckMessage": "失敗のため利用できないリスト:{0}",
"NotificationStatusSingleClientHealthCheckMessage": "失敗のため利用できないリスト:{notificationNames}",
"NotificationStatusAllClientHealthCheckMessage": "障害のため、すべてのリストを利用できません",
"AuthBasic": "基本(ブラウザポップアップ)",
"AuthForm": "フォーム(ログインページ)",
"DisabledForLocalAddresses": "ローカルアドレスでは無効",
"None": "なし",
"ResetAPIKeyMessageText": "APIキーをリセットしてもよろしいですか",
"RestartProwlarr": "{appName}を再起動します"
"RestartProwlarr": "{appName}を再起動します",
"IndexerHDBitsSettingsMediums": "中",
"CustomFilter": "カスタムフィルター"
}

View File

@@ -52,7 +52,7 @@
"Donations": "기부",
"DownloadClient": "클라이언트 다운로드",
"DownloadClientSettings": "클라이언트 설정 다운로드",
"DownloadClientStatusCheckAllClientMessage": "실패로 인해 모든 다운로드 클라이언트를 사용할 수 없습니다.",
"DownloadClientStatusAllClientHealthCheckMessage": "실패로 인해 모든 다운로드 클라이언트를 사용할 수 없습니다.",
"Add": "추가",
"Apply": "적용",
"AppDataLocationHealthCheckMessage": "업데이트 시 AppData 삭제를 방지하기 위해 업데이트 할 수 없습니다.",
@@ -66,7 +66,7 @@
"DeleteDownloadClientMessageText": "다운로드 클라이언트 '{0}'을(를) 삭제하시겠습니까?",
"DeleteNotification": "알림 삭제",
"DeleteNotificationMessageText": "알림 '{0}'을(를) 삭제하시겠습니까?",
"DownloadClientStatusCheckSingleClientMessage": "실패로 인해 다운 불러올 수 없는 클라이언트 : {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "실패로 인해 다운 불러올 수 없는 클라이언트 : {downloadClientNames}",
"MoreInfo": "더 많은 정보",
"Edit": "편집하다",
"Indexer": "인덱서",
@@ -236,7 +236,7 @@
"FocusSearchBox": "포커스 검색 창",
"GeneralSettingsSummary": "포트, SSL, 사용자 이름 / 암호, 프록시, 분석 및 업데이트",
"HideAdvanced": "고급 숨기기",
"IndexerStatusCheckAllClientMessage": "오류로 인해 모든 인덱서를 사용할 수 없습니다.",
"IndexerStatusAllUnavailableHealthCheckMessage": "오류로 인해 모든 인덱서를 사용할 수 없습니다.",
"InteractiveSearch": "대화형 검색",
"LastWriteTime": "마지막 쓰기 시간",
"Link": "연결",
@@ -248,15 +248,15 @@
"PendingChangesMessage": "저장하지 않은 변경 사항이 있습니다.이 페이지에서 나가시겠습니까?",
"PendingChangesStayReview": "변경 사항 유지 및 검토",
"Presets": "사전 설정",
"ProxyCheckResolveIpMessage": "구성된 프록시 호스트 {0}의 IP 주소를 확인하지 못했습니다.",
"ProxyResolveIpHealthCheckMessage": "구성된 프록시 호스트 {proxyHostName}의 IP 주소를 확인하지 못했습니다.",
"Reddit": "레딧",
"TagsSettingsSummary": "모든 태그와 사용 방법을 확인하십시오. 사용하지 않는 태그는 제거 할 수 있습니다.",
"Yesterday": "어제",
"ApplicationStatusCheckAllClientMessage": "실패로 인해 모든 목록을 사용할 수 없습니다.",
"ApplicationStatusCheckSingleClientMessage": "실패로 인해 사용할 수없는 목록 : {0}",
"ReleaseBranchCheckOfficialBranchMessage": "{0} 분기는 유효한 Whisparr 출시 분기가 아닙니다. 업데이트를받을 수 없습니다.",
"ProxyCheckBadRequestMessage": "프록시를 테스트하지 못했습니다. StatusCode : {0}",
"ProxyCheckFailedToTestMessage": "프록시 테스트 실패 : {0}",
"ProxyBadRequestHealthCheckMessage": "프록시를 테스트하지 못했습니다. StatusCode : {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "프록시 테스트 실패 : {url}",
"ReleaseStatus": "출시 상태",
"Rss": "RSS",
"Sort": "종류",
@@ -271,7 +271,7 @@
"RefreshMovie": "영화 새로 고침",
"SuggestTranslationChange": "번역 변경 제안",
"Level": "수평",
"UpdateCheckStartupTranslocationMessage": "시작 폴더 '{0}'이 (가) App Translocation 폴더에 있으므로 업데이트를 설치할 수 없습니다.",
"UpdateStartupTranslocationHealthCheckMessage": "시작 폴더 '{startupFolder}'이 (가) App Translocation 폴더에 있으므로 업데이트를 설치할 수 없습니다.",
"UrlBaseHelpText": "역방향 프록시 지원의 경우 기본값은 비어 있습니다.",
"MovieIndexScrollBottom": "영화 색인 : 아래로 스크롤",
"View": "전망",
@@ -288,7 +288,7 @@
"Priority": "우선 순위",
"SetTags": "태그 설정",
"System": "체계",
"UpdateCheckUINotWritableMessage": "사용자 '{1}'이 (가) UI 폴더 '{0}'에 쓸 수 없기 때문에 업데이트를 설치할 수 없습니다.",
"UpdateUiNotWritableHealthCheckMessage": "사용자 '{userName}'이 (가) UI 폴더 '{uiFolder}'에 쓸 수 없기 때문에 업데이트를 설치할 수 없습니다.",
"Warn": "경고",
"HomePage": "홈 페이지",
"Peers": "동료",
@@ -299,11 +299,11 @@
"Failed": "실패한",
"FeatureRequests": "기능 요청",
"IndexerFlags": "인덱서 플래그",
"IndexerLongTermStatusCheckAllClientMessage": "6 시간 이상 오류로 인해 모든 인덱서를 사용할 수 없습니다.",
"IndexerLongTermStatusCheckSingleClientMessage": "6 시간 이상 오류로 인해 인덱서를 사용할 수 없음 : {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 시간 이상 오류로 인해 모든 인덱서를 사용할 수 없습니다.",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "6 시간 이상 오류로 인해 인덱서를 사용할 수 없음 : {indexerNames}",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "오류로 인해 모든 인덱서를 사용할 수 없습니다.",
"IndexerProxyStatusUnavailableHealthCheckMessage": "오류로 인해 인덱서를 사용할 수 없음 : {indexerProxyNames}",
"IndexerStatusCheckSingleClientMessage": "오류로 인해 인덱서를 사용할 수 없음 : {0}",
"IndexerStatusUnavailableHealthCheckMessage": "오류로 인해 인덱서를 사용할 수 없음 : {indexerNames}",
"NetCore": ".NET Core",
"Save": "저장",
"SaveSettings": "설정 저장",
@@ -317,7 +317,7 @@
"Test": "테스트",
"Time": "시간",
"UnableToLoadIndexers": "인덱서를로드 할 수 없습니다.",
"UpdateCheckStartupNotWritableMessage": "'{1}'사용자가 '{0}'시작 폴더에 쓸 수 없기 때문에 업데이트를 설치할 수 없습니다.",
"UpdateStartupNotWritableHealthCheckMessage": "'{userName}'사용자가 '{startupFolder}'시작 폴더에 쓸 수 없기 때문에 업데이트를 설치할 수 없습니다.",
"Yes": "예",
"GrabReleases": "그랩 릴리스",
"NextExecution": "다음 실행",
@@ -346,12 +346,14 @@
"ConnectionLostToBackend": "Radarr는 백엔드와의 연결이 끊어졌으며 기능을 복원하려면 다시 로딩해야 합니다.",
"DeleteAppProfileMessageText": "품질 프로필 {0}을 (를) 삭제 하시겠습니까?",
"NotificationStatusAllClientHealthCheckMessage": "실패로 인해 모든 목록을 사용할 수 없습니다.",
"NotificationStatusSingleClientHealthCheckMessage": "실패로 인해 사용할 수없는 목록 : {0}",
"NotificationStatusSingleClientHealthCheckMessage": "실패로 인해 사용할 수없는 목록 : {notificationNames}",
"AuthBasic": "기본 (브라우저 팝업)",
"AuthForm": "양식 (로그인 페이지)",
"DisabledForLocalAddresses": "로컬 주소에 대해 비활성화됨",
"None": "없음",
"ResetAPIKeyMessageText": "API 키를 재설정하시겠습니까?",
"StopSelecting": "선택 취소",
"RestartProwlarr": "{appName} 다시 시작"
"RestartProwlarr": "{appName} 다시 시작",
"IndexerHDBitsSettingsMediums": "매질",
"CustomFilter": "사용자 지정 필터"
}

View File

@@ -127,7 +127,7 @@
"Artist": "artist",
"ApplicationUrlHelpText": "Denne applikasjonens eksterne URL inkludert http(s)://, port og URL base",
"ApplyChanges": "Bekreft endringer",
"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",
"ConnectionLostReconnect": "Radarr vil forsøke å koble til automatisk, eller du kan klikke oppdater nedenfor.",
"ConnectionLostToBackend": "Radarr har mistet tilkoblingen til baksystemet og må lastes inn på nytt for å gjenopprette funksjonalitet.",
"DeleteAppProfileMessageText": "Er du sikker på at du vil slette denne forsinkelsesprofilen?",

View File

@@ -23,7 +23,7 @@
"Analytics": "Statistieken",
"AnalyticsEnabledHelpText": "Stuur anonieme gebruiks- en foutinformatie naar de servers van {appName}. Dit omvat informatie over uw browser, welke {appName} WebUI pagina's u gebruikt, foutrapportage en OS en runtime versie. We zullen deze informatie gebruiken om prioriteiten te stellen voor functies en het verhelpen van fouten.",
"ApiKey": "API-sleutel",
"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",
"AppDataDirectory": "AppData map",
"AppDataLocationHealthCheckMessage": "Updaten zal niet mogelijk zijn om het verwijderen van AppData te voorkomen",
"AppProfileInUse": "App-profiel in gebruik",
@@ -108,8 +108,8 @@
"Donations": "Donaties",
"DownloadClient": "Downloader",
"DownloadClientSettings": "Downloader Instellingen",
"DownloadClientStatusCheckAllClientMessage": "Alle downloaders zijn onbeschikbaar wegens fouten",
"DownloadClientStatusCheckSingleClientMessage": "Downloaders onbeschikbaar wegens fouten: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Alle downloaders zijn onbeschikbaar wegens fouten",
"DownloadClientStatusSingleClientHealthCheckMessage": "Downloaders onbeschikbaar wegens fouten: {downloadClientNames}",
"DownloadClients": "Downloaders",
"DownloadClientsSettingsSummary": "Clientconfiguratie downloaden voor integratie in {appName} UI-zoekopdracht",
"Duration": "Duur",
@@ -170,8 +170,8 @@
"IndexerAuth": "Indexer-authenticatie",
"IndexerFlags": "Indexeerder Flags",
"IndexerHealthCheckNoIndexers": "Geen indexers ingeschakeld, {appName} geeft geen zoekresultaten terug",
"IndexerLongTermStatusCheckAllClientMessage": "Alle indexeerders zijn niet beschikbaar vanwege storingen gedurende meer dan 6 uur",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexeerders zijn niet beschikbaar vanwege storingen gedurende meer dan 6 uur: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Alle indexeerders zijn niet beschikbaar vanwege storingen gedurende meer dan 6 uur",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexeerders zijn niet beschikbaar vanwege storingen gedurende meer dan 6 uur: {indexerNames}",
"IndexerObsoleteCheckMessage": "Indexeerders zijn verouderd of zijn bijgewerkt: {0}. Gelieve te verwijderen en (of) opnieuw toe te voegen aan {appName}",
"IndexerPriority": "Indexeerder Prioriteit",
"IndexerPriorityHelpText": "Indexeerder Prioriteit van 1 (Hoogste) tot 50 (Laagste). Standaard: 25.",
@@ -182,11 +182,11 @@
"IndexerQuery": "Indexeer zoekopdracht",
"IndexerRss": "Indexeer RSS",
"IndexerSettingsSummary": "Configureer verschillende globale Indexer-instellingen, waaronder proxy's.",
"IndexerStatusCheckAllClientMessage": "Alle indexeerders zijn onbeschikbaar wegens fouten",
"IndexerStatusCheckSingleClientMessage": "Indexeerders onbeschikbaar wegens fouten: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Alle indexeerders zijn onbeschikbaar wegens fouten",
"IndexerStatusUnavailableHealthCheckMessage": "Indexeerders onbeschikbaar wegens fouten: {indexerNames}",
"IndexerTagsHelpText": "Gebruik tags om standaardclients op te geven, Indexeerder-proxy's op te geven of gewoon om uw indexeerders te ordenen.",
"IndexerVipCheckExpiredClientMessage": "Indexeerder VIP-voordelen zijn verlopen: {0}",
"IndexerVipCheckExpiringClientMessage": "Indexeerder VIP-voordelen verlopen binnenkort: {0}",
"IndexerVipExpiredHealthCheckMessage": "Indexeerder VIP-voordelen zijn verlopen: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Indexeerder VIP-voordelen verlopen binnenkort: {indexerNames}",
"Indexers": "Indexeerders",
"Info": "Info",
"InstanceName": "Naam van de instantie",
@@ -263,9 +263,9 @@
"ProwlarrSupportsAnyIndexer": "{appName} ondersteunt veel indexeerders naast elke indexeerder die de Newznab/Torznab-standaard gebruikt met 'Generic Newznab' (voor usenet) of 'Generic Torznab' (voor torrents). Zoek en selecteer uw indexeerder hieronder.",
"Proxy": "Proxy",
"ProxyBypassFilterHelpText": "Gebruik ',' als scheidingsteken en '*' als wildcard voor subdomeinen",
"ProxyCheckBadRequestMessage": "Testen van proxy is mislukt. Statuscode: {0}",
"ProxyCheckFailedToTestMessage": "Testen van proxy is mislukt: {0}",
"ProxyCheckResolveIpMessage": "Achterhalen van het IP-adres voor de geconfigureerde proxy host {0} is mislukt",
"ProxyBadRequestHealthCheckMessage": "Testen van proxy is mislukt. Statuscode: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Testen van proxy is mislukt: {url}",
"ProxyResolveIpHealthCheckMessage": "Achterhalen van het IP-adres voor de geconfigureerde proxy host {proxyHostName} is mislukt",
"ProxyPasswordHelpText": "Je moet alleen een gebruikersnaam en wachtwoord ingeven als dit vereist is, laat ze anders leeg.",
"ProxyType": "Proxy Type",
"ProxyUsernameHelpText": "Je moet alleen een gebruikersnaam en wachtwoord ingeven als dit vereist is, laat ze anders leeg.",
@@ -399,9 +399,9 @@
"UnsavedChanges": "Onopgeslagen Wijzigingen",
"UnselectAll": "Alles Deselecteren",
"UpdateAutomaticallyHelpText": "Download en installeer updates automatisch. Je zal nog steeds kunnen installeren vanuit Systeem: Updates",
"UpdateCheckStartupNotWritableMessage": "Kan de update niet installeren omdat de map '{0}' niet schrijfbaar is voor de gebruiker '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Kan de update niet installeren omdat de map '{0}' zich in een 'App Translocation' map bevindt.",
"UpdateCheckUINotWritableMessage": "Kan de update niet installeren omdat de UI map '{0}' niet schrijfbaar is voor de gebruiker '{1}'.",
"UpdateStartupNotWritableHealthCheckMessage": "Kan de update niet installeren omdat de map '{startupFolder}' niet schrijfbaar is voor de gebruiker '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Kan de update niet installeren omdat de map '{startupFolder}' zich in een 'App Translocation' map bevindt.",
"UpdateUiNotWritableHealthCheckMessage": "Kan de update niet installeren omdat de UI map '{uiFolder}' niet schrijfbaar is voor de gebruiker '{userName}'.",
"UpdateMechanismHelpText": "Gebruik de ingebouwde updater van {appName} of een script",
"UpdateScriptPathHelpText": "Pad naar een aangepast script dat een uitgepakt updatepakket accepteert en de rest van het updateproces afhandelt",
"Updates": "Updates",
@@ -438,7 +438,7 @@
"DownloadClientPriorityHelpText": "Geef prioriteit aan meerdere downloaders. Round-Robin wordt gebruikt voor downloaders met dezelfde prioriteit.",
"Genre": "Genres",
"Year": "Jaar",
"UpdateAvailable": "Nieuwe update is beschikbaar",
"UpdateAvailableHealthCheckMessage": "Nieuwe update is beschikbaar",
"Label": "Label",
"Publisher": "Uitgever",
"ApplyChanges": "Pas Wijzigingen Toe",

View File

@@ -92,7 +92,7 @@
"Test": "Test",
"UILanguage": "Język interfejsu użytkownika",
"UnableToLoadNotifications": "Nie można załadować powiadomień",
"UpdateCheckUINotWritableMessage": "Nie można zainstalować aktualizacji, ponieważ użytkownik „{1}” nie ma prawa zapisu w folderze interfejsu użytkownika „{0}”.",
"UpdateUiNotWritableHealthCheckMessage": "Nie można zainstalować aktualizacji, ponieważ użytkownik „{userName}” nie ma prawa zapisu w folderze interfejsu użytkownika „{uiFolder}”.",
"UseProxy": "Użyj proxy",
"DeleteIndexerProxyMessageText": "Czy na pewno chcesz usunąć tag „{0}”?",
"DeleteNotificationMessageText": "Czy na pewno chcesz usunąć powiadomienie „{0}”?",
@@ -130,12 +130,12 @@
"DeleteNotification": "Usuń powiadomienie",
"Disabled": "Wyłączone",
"Docker": "Doker",
"DownloadClientStatusCheckSingleClientMessage": "Klienci pobierania niedostępni z powodu błędów: {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Klienci pobierania niedostępni z powodu błędów: {downloadClientNames}",
"EditIndexer": "Edytuj indeksator",
"Enable": "Włączyć",
"EnableAutomaticSearch": "Włącz automatyczne wyszukiwanie",
"Enabled": "Włączone",
"DownloadClientStatusCheckAllClientMessage": "Wszyscy klienci pobierania są niedostępni z powodu błędów",
"DownloadClientStatusAllClientHealthCheckMessage": "Wszyscy klienci pobierania są niedostępni z powodu błędów",
"EnableInteractiveSearch": "Włącz wyszukiwanie interaktywne",
"EventType": "Typ wydarzenia",
"Failed": "Niepowodzenie",
@@ -156,13 +156,13 @@
"Hostname": "Nazwa hosta",
"IgnoredAddresses": "Ignorowane adresy",
"IllRestartLater": "Zrestartuję później",
"IndexerLongTermStatusCheckAllClientMessage": "Wszystkie indeksatory są niedostępne z powodu awarii przez ponad 6 godzin",
"IndexerLongTermStatusCheckSingleClientMessage": "Indeksatory niedostępne z powodu błędów przez ponad 6 godzin: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Wszystkie indeksatory są niedostępne z powodu awarii przez ponad 6 godzin",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indeksatory niedostępne z powodu błędów przez ponad 6 godzin: {indexerNames}",
"IndexerPriority": "Priorytet indeksatora",
"IndexerPriorityHelpText": "Priorytet indeksatora od 1 (najwyższy) do 50 (najniższy). Domyślnie: 25.",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Wszystkie listy są niedostępne z powodu błędów",
"ShowSearchHelpText": "Pokaż przycisk wyszukiwania po najechaniu kursorem",
"IndexerStatusCheckSingleClientMessage": "Indeksatory niedostępne z powodu błędów: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Indeksatory niedostępne z powodu błędów: {indexerNames}",
"Info": "Informacje",
"Interval": "Interwał",
"Language": "Język",
@@ -194,9 +194,9 @@
"Priority": "Priorytet",
"Proxy": "Pełnomocnik",
"ProxyBypassFilterHelpText": "Użyj znaku „,” jako separatora i „*”. jako symbol wieloznaczny dla subdomen",
"ProxyCheckBadRequestMessage": "Nie udało się przetestować serwera proxy. StatusCode: {0}",
"ProxyCheckFailedToTestMessage": "Nie udało się przetestować serwera proxy: {0}",
"ProxyCheckResolveIpMessage": "Nie udało się rozwiązać adresu IP dla skonfigurowanego hosta proxy {0}",
"ProxyBadRequestHealthCheckMessage": "Nie udało się przetestować serwera proxy. StatusCode: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Nie udało się przetestować serwera proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "Nie udało się rozwiązać adresu IP dla skonfigurowanego hosta proxy {proxyHostName}",
"ProxyPasswordHelpText": "Musisz tylko wprowadzić nazwę użytkownika i hasło, jeśli jest to wymagane. W przeciwnym razie pozostaw je puste.",
"ProxyUsernameHelpText": "Musisz tylko wprowadzić nazwę użytkownika i hasło, jeśli jest to wymagane. W przeciwnym razie pozostaw je puste.",
"Queue": "Kolejka",
@@ -268,8 +268,8 @@
"UnableToLoadTags": "Nie można załadować tagów",
"UnsavedChanges": "Niezapisane zmiany",
"UpdateAutomaticallyHelpText": "Automatycznie pobieraj i instaluj aktualizacje. Nadal będziesz mógł zainstalować z System: Updates",
"UpdateCheckStartupNotWritableMessage": "Nie można zainstalować aktualizacji, ponieważ użytkownik „{1}” nie ma prawa zapisu do folderu startowego „{0}”.",
"UpdateCheckStartupTranslocationMessage": "Nie można zainstalować aktualizacji, ponieważ folder startowy „{0}” znajduje się w folderze translokacji aplikacji.",
"UpdateStartupNotWritableHealthCheckMessage": "Nie można zainstalować aktualizacji, ponieważ użytkownik „{userName}” nie ma prawa zapisu do folderu startowego „{startupFolder}”.",
"UpdateStartupTranslocationHealthCheckMessage": "Nie można zainstalować aktualizacji, ponieważ folder startowy „{startupFolder}” znajduje się w folderze translokacji aplikacji.",
"UpdateMechanismHelpText": "Użyj wbudowanego aktualizatora {appName} lub skryptu",
"Updates": "Aktualizacje",
"UpdateScriptPathHelpText": "Ścieżka do niestandardowego skryptu, który pobiera wyodrębniony pakiet aktualizacji i obsługuje pozostałą część procesu aktualizacji",
@@ -302,7 +302,7 @@
"Columns": "Kolumny",
"Host": "Gospodarz",
"Indexers": "Indeksatory",
"IndexerStatusCheckAllClientMessage": "Wszystkie indeksatory są niedostępne z powodu błędów",
"IndexerStatusAllUnavailableHealthCheckMessage": "Wszystkie indeksatory są niedostępne z powodu błędów",
"RestartNow": "Zrestartuj teraz",
"Rss": "RSS",
"Tasks": "Zadania",
@@ -357,17 +357,17 @@
"DeleteSelectedIndexersMessageText": "Czy na pewno chcesz usunąć indeksator „{0}”?",
"DownloadClientPriorityHelpText": "Nadaj priorytet wielu klientom pobierania. W przypadku klientów o tym samym priorytecie używane jest działanie okrężne.",
"Track": "Ślad",
"UpdateAvailable": "Dostępna jest aktualizacja",
"UpdateAvailableHealthCheckMessage": "Dostępna jest aktualizacja",
"Genre": "Gatunki",
"ApplyChanges": "Zastosuj zmiany",
"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",
"DeleteAppProfileMessageText": "Czy na pewno chcesz usunąć profil jakości '{0}'?",
"ConnectionLostReconnect": "Radarr spróbuje połączyć się automatycznie lub możesz kliknąć przycisk przeładuj poniżej.",
"RecentChanges": "Ostatnie zmiany",
"WhatsNew": "Co nowego?",
"ConnectionLostToBackend": "Radarr utracił połączenie z silnikiem programu, aby przywrócić funkcjonalność musi zostać zrestartowany.",
"minutes": "Minuty",
"NotificationStatusSingleClientHealthCheckMessage": "Listy niedostępne z powodu błędów: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Listy niedostępne z powodu błędów: {notificationNames}",
"AddConnection": "Edytuj kolekcję",
"NotificationStatusAllClientHealthCheckMessage": "Wszystkie listy są niedostępne z powodu błędów",
"AuthForm": "Formularze (strona logowania)",

View File

@@ -4,9 +4,9 @@
"Warn": "Avisar",
"View": "Ver",
"Updates": "Atualizações",
"UpdateCheckUINotWritableMessage": "Não é possível instalar a atualização porque a pasta da IU \"{0}\" não tem permissões de escrita para o utilizador \"{1}\".",
"UpdateCheckStartupNotWritableMessage": "Não é possível instalar a atualização porque a pasta de arranque \"{0}\" não tem permissões de escrita para o utilizador \"{1}\".",
"UpdateCheckStartupTranslocationMessage": "Não é possível instalar a atualização porque a pasta de arranque \"{0}\" está em uma pasta de transposição de aplicações.",
"UpdateUiNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta da IU \"{uiFolder}\" não tem permissões de escrita para o utilizador \"{userName}\".",
"UpdateStartupNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de arranque \"{startupFolder}\" não tem permissões de escrita para o utilizador \"{userName}\".",
"UpdateStartupTranslocationHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de arranque \"{startupFolder}\" está em uma pasta de transposição de aplicações.",
"UnselectAll": "Desmarcar todos",
"UnsavedChanges": "Mudanças não guardadas",
"UISettingsSummary": "Opções de calendário, data e modo de daltonismo",
@@ -55,9 +55,9 @@
"ReleaseBranchCheckOfficialBranchMessage": "A ramificação {0} não é uma ramificação de versões válida do {appName}, você não receberá atualizações",
"Refresh": "Atualizar",
"Queue": "Fila",
"ProxyCheckResolveIpMessage": "Não é possível resolver o Endereço IP para o Anfitrião de proxy {0} definido",
"ProxyCheckFailedToTestMessage": "Falha ao testar o proxy: {0}",
"ProxyCheckBadRequestMessage": "Falha ao testar o proxy. Código de estado: {0}",
"ProxyResolveIpHealthCheckMessage": "Não é possível resolver o Endereço IP para o Anfitrião de proxy {proxyHostName} definido",
"ProxyFailedToTestHealthCheckMessage": "Falha ao testar o proxy: {url}",
"ProxyBadRequestHealthCheckMessage": "Falha ao testar o proxy. Código de estado: {statusCode}",
"Proxy": "Proxy",
"Protocol": "Protocolo",
"PendingChangesStayReview": "Ficar e rever mudanças",
@@ -79,8 +79,8 @@
"Language": "Idioma",
"KeyboardShortcuts": "Atalhos do teclado",
"Info": "Informações",
"IndexerStatusCheckSingleClientMessage": "Indexadores indisponíveis devido a falhas: {0}",
"IndexerStatusCheckAllClientMessage": "Todos os indexadores estão indisponíveis devido a falhas",
"IndexerStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas: {indexerNames}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas",
"Indexers": "Indexadores",
"Indexer": "Indexador",
"Host": "Anfitrião",
@@ -100,8 +100,8 @@
"Events": "Eventos",
"Error": "Erro",
"Edit": "Editar",
"DownloadClientStatusCheckSingleClientMessage": "Clientes de transferências indisponíveis devido a falhas: {0}",
"DownloadClientStatusCheckAllClientMessage": "Todos os clientes de transferências estão indisponíveis devido a falhas",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clientes de transferências indisponíveis devido a falhas: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Todos os clientes de transferências estão indisponíveis devido a falhas",
"DownloadClientsSettingsSummary": "Definições do cliente de transferências para integração à pesquisa da IU do {appName}",
"DownloadClients": "Clientes de transferências",
"DownloadClient": "Cliente de transferências",
@@ -289,8 +289,8 @@
"IndexerRss": "RSS do indexador",
"IndexerQuery": "Consulta do indexador",
"IndexerObsoleteCheckMessage": "Os seguintes indexadores são obsoletos ou foram actualizados: {0}. Remova-os e/ou adicione-os novamente ao {appName}",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexadores indisponíveis devido a erros por mais de 6 horas: {0}",
"IndexerLongTermStatusCheckAllClientMessage": "Todos os indexadores estão indisponíveis devido a erros por mais de 6 horas",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a erros por mais de 6 horas: {indexerNames}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a erros por mais de 6 horas",
"IndexerHealthCheckNoIndexers": "Não há indexadores activados, o {appName} não retornará resultados de pesquisa",
"IndexerAuth": "Autenticação do indexador",
"EnableRssHelpText": "Activar feed RSS para o indexador",
@@ -408,7 +408,7 @@
"AddSyncProfile": "Adicionar Perfil de Sincronização",
"AddApplication": "Adicionar Aplicação",
"AddCustomFilter": "Adicionar Filtro customizado",
"ApiKeyValidationHealthCheckMessage": "Por favor, actualize a sua API Key para ter no minimo {0} caracteres. Pode fazer através das definições ou do ficheiro de configuração",
"ApiKeyValidationHealthCheckMessage": "Por favor, actualize a sua API Key para ter no minimo {length} caracteres. Pode fazer através das definições ou do ficheiro de configuração",
"ApplicationURL": "URL da aplicação",
"Genre": "Gêneros",
"ThemeHelpText": "Alterar o tema da interface do usuário. O tema 'Auto' usará o tema do sistema operacional para definir o modo Claro ou Escuro. Inspirado por Theme.Park",
@@ -431,7 +431,7 @@
"Season": "Temporada",
"Theme": "Tema",
"Track": "Rastreio",
"UpdateAvailable": "Nova atualização disponível",
"UpdateAvailableHealthCheckMessage": "Nova atualização disponível",
"Label": "Rótulo",
"ConnectionLostReconnect": "O {appName} tentará ligar-se automaticamente, ou você pode clicar em Recarregar abaixo.",
"ConnectionLostToBackend": "O {appName} perdeu a ligação com o back-end e precisará ser recarregado para restaurar a funcionalidade.",
@@ -476,5 +476,10 @@
"AuthenticationRequiredPasswordConfirmationHelpTextWarning": "Confirmar nova senha",
"AdvancedSettingsHiddenClickToShow": "Definições avançadas ocultas, clique para mostrar",
"AddCategory": "Adicionar Categoria",
"CountApplicationsSelected": "{count} Coleções Selecionadas"
"CountApplicationsSelected": "{count} Coleções Selecionadas",
"IndexerHDBitsSettingsMediums": "Médio",
"Directory": "Diretório",
"UseSsl": "Usar SSL",
"IndexerHDBitsSettingsCodecs": "Codificador",
"CustomFilter": "Filtros personalizados"
}

View File

@@ -23,7 +23,7 @@
"Analytics": "Análises",
"AnalyticsEnabledHelpText": "Envie informações anônimas de uso e erro para os servidores do {appName}. Isso inclui informações sobre seu navegador, quais páginas da interface Web do {appName} você usa, relatórios de erros, e a versão do sistema operacional e do tempo de execução. Usaremos essas informações para priorizar recursos e correções de bugs.",
"ApiKey": "Chave da API",
"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",
"AppDataDirectory": "Diretório AppData",
"AppDataLocationHealthCheckMessage": "A atualização não será possível para evitar a exclusão de AppData na atualização",
"AppProfileInUse": "Perfil de aplicativo em uso",
@@ -123,8 +123,8 @@
"DownloadClient": "Cliente de download",
"DownloadClientCategory": "Categoria de Download do Cliente",
"DownloadClientSettings": "Configurações do cliente de download",
"DownloadClientStatusCheckAllClientMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
"DownloadClientStatusCheckSingleClientMessage": "Clientes de download indisponíveis devido a falhas: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Todos os clientes de download estão indisponíveis devido a falhas",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clientes de download indisponíveis devido a falhas: {downloadClientNames}",
"DownloadClients": "Clientes de download",
"DownloadClientsSettingsSummary": "Configuração de clientes de download para integração com a pesquisa da interface do usuário do {appName}",
"Duration": "Duração",
@@ -198,8 +198,8 @@
"IndexerFlags": "Sinalizadores do Indexador",
"IndexerHealthCheckNoIndexers": "Não há indexadores habilitados, o {appName} não retornará resultados para a pesquisa",
"IndexerInfo": "Info do Indexador",
"IndexerLongTermStatusCheckAllClientMessage": "Todos os indexadores estão indisponíveis devido a falhas por mais de 6 horas",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexadores indisponíveis devido a falhas por mais de 6 horas: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas por mais de 6 horas",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas por mais de 6 horas: {indexerNames}",
"IndexerName": "Nome do Indexador",
"IndexerNoDefCheckMessage": "Os indexadores não têm definição e não funcionarão: {0}. Por favor, remova e (ou) adicione novamente ao {appName}",
"IndexerObsoleteCheckMessage": "Os seguintes indexadores são obsoletos ou foram atualizados: {0}. Remova-os e/ou adicione-os novamente ao {appName}",
@@ -213,11 +213,11 @@
"IndexerRss": "RSS do indexador",
"IndexerSettingsSummary": "Defina várias configurações globais do Indexador, incluindo Proxies.",
"IndexerSite": "Site do Indexador",
"IndexerStatusCheckAllClientMessage": "Todos os indexadores estão indisponíveis devido a falhas",
"IndexerStatusCheckSingleClientMessage": "Indexadores indisponíveis devido a falhas: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Todos os indexadores estão indisponíveis devido a falhas",
"IndexerStatusUnavailableHealthCheckMessage": "Indexadores indisponíveis devido a falhas: {indexerNames}",
"IndexerTagsHelpText": "Use tags para especificar Proxies do indexador ou com quais aplicativos o indexador está sincronizado.",
"IndexerVipCheckExpiredClientMessage": "Benefícios VIP do Indexador expiraram: {0}",
"IndexerVipCheckExpiringClientMessage": "Os benefícios VIPS do Indexador expirarão em breve: {0}",
"IndexerVipExpiredHealthCheckMessage": "Benefícios VIP do Indexador expiraram: {indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "Os benefícios VIPS do Indexador expirarão em breve: {indexerNames}",
"Indexers": "Indexadores",
"Info": "Informações",
"InitialFailure": "Falha Inicial",
@@ -311,9 +311,9 @@
"Proxies": "Proxies",
"Proxy": "Proxy",
"ProxyBypassFilterHelpText": "Use ',' como separador e '*.' como curinga para subdomínios",
"ProxyCheckBadRequestMessage": "Falha ao testar o proxy. Código de status: {0}",
"ProxyCheckFailedToTestMessage": "Falha ao testar o proxy: {0}",
"ProxyCheckResolveIpMessage": "Falha ao resolver o endereço IP do host de proxy configurado {0}",
"ProxyBadRequestHealthCheckMessage": "Falha ao testar o proxy. Código de status: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Falha ao testar o proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "Falha ao resolver o endereço IP do host de proxy configurado {proxyHostName}",
"ProxyPasswordHelpText": "Você só precisa digitar um nome de usuário e senha se for necessário. Caso contrário, deixe-os em branco.",
"ProxyType": "Tipo de Proxy",
"ProxyUsernameHelpText": "Você só precisa digitar um nome de usuário e senha se for necessário. Caso contrário, deixe-os em branco.",
@@ -475,10 +475,10 @@
"UnsavedChanges": "Alterações Não Salvas",
"UnselectAll": "Desmarcar tudo",
"UpdateAutomaticallyHelpText": "Baixe e instale atualizações automaticamente. Você ainda poderá instalar a partir do Sistema: Atualizações",
"UpdateAvailable": "Nova atualização está disponível",
"UpdateCheckStartupNotWritableMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{0}' não pode ser gravada pelo usuário '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{0}' está em uma pasta de translocação de aplicativo.",
"UpdateCheckUINotWritableMessage": "Não é possível instalar a atualização porque a pasta de IU '{0}' não pode ser gravada pelo usuário '{1}'.",
"UpdateAvailableHealthCheckMessage": "Nova atualização está disponível",
"UpdateStartupNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{startupFolder}' não pode ser gravada pelo usuário '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de inicialização '{startupFolder}' está em uma pasta de translocação de aplicativo.",
"UpdateUiNotWritableHealthCheckMessage": "Não é possível instalar a atualização porque a pasta de IU '{uiFolder}' não pode ser gravada pelo usuário '{userName}'.",
"UpdateMechanismHelpText": "Use o atualizador integrado do {appName} ou um script",
"UpdateScriptPathHelpText": "Caminho para um script personalizado que usa um pacote de atualização extraído e lida com o restante do processo de atualização",
"Updates": "Atualizações",
@@ -554,7 +554,7 @@
"SearchQueries": "Consultas de pesquisa",
"minutes": "minutos",
"days": "dias",
"IndexerDownloadClientHealthCheckMessage": "Indexadores com clientes de download inválidos: {0}.",
"IndexerDownloadClientHealthCheckMessage": "Indexadores com clientes de download inválidos: {indexerNames}.",
"DeleteAppProfileMessageText": "Tem certeza de que deseja excluir o perfil do aplicativo '{name}'?",
"AppUpdated": "{appName} atualizado",
"AppUpdatedVersion": "{appName} foi atualizado para a versão `{version}`, para obter as alterações mais recentes, você precisará recarregar {appName}",
@@ -576,7 +576,7 @@
"EditIndexerImplementation": "Editar indexador - {implementationName}",
"EditIndexerProxyImplementation": "Editar Proxy do Indexador - {implementationName}",
"NotificationStatusAllClientHealthCheckMessage": "Todas as notificações estão indisponíveis devido a falhas",
"NotificationStatusSingleClientHealthCheckMessage": "Notificações indisponíveis devido a falhas: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Notificações indisponíveis devido a falhas: {notificationNames}",
"AuthForm": "Formulário (página de login)",
"AuthenticationMethod": "Método de autenticação",
"AuthenticationMethodHelpTextWarning": "Selecione um método de autenticação válido",
@@ -747,5 +747,7 @@
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "se um torrent for bloqueado por hash, ele pode não ser rejeitado corretamente durante o RSS/Pesquisa de alguns indexadores. Ativar isso permitirá que ele seja rejeitado após o torrent ser capturado, mas antes de ser enviado ao cliente.",
"ClickToChangeQueryOptions": "Clique para alterar as opções de consulta",
"IndexerMTeamTpSettingsApiKeyHelpText": "Chave API do Site (Encontrada no Painel de Controle do Usuário => Segurança => Laboratório)",
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Pesquise apenas lançamentos freeleech"
"IndexerMTeamTpSettingsFreeleechOnlyHelpText": "Pesquise apenas lançamentos freeleech",
"NotificationsTelegramSettingsIncludeAppName": "Incluir {appName} no Título",
"NotificationsTelegramSettingsIncludeAppNameHelpText": "Opcionalmente, prefixe o título da mensagem com {appName} para diferenciar notificações de diferentes aplicativos"
}

View File

@@ -19,7 +19,7 @@
"Added": "Adăugat",
"Actions": "Acțiuni",
"About": "Despre",
"IndexerStatusCheckAllClientMessage": "Niciun indexator nu este disponibil datorită erorilor",
"IndexerStatusAllUnavailableHealthCheckMessage": "Niciun indexator nu este disponibil datorită erorilor",
"Indexers": "Indexatori",
"Indexer": "Indexator",
"Host": "Gazdă",
@@ -37,8 +37,8 @@
"EventType": "Tip de eveniment",
"Events": "Evenimente",
"Edit": "Editează",
"DownloadClientStatusCheckSingleClientMessage": "Clienții de descărcare sunt indisponibili datorită erorilor: {0}",
"DownloadClientStatusCheckAllClientMessage": "Toți clienții de descărcare sunt indisponibili datorită erorilor",
"DownloadClientStatusSingleClientHealthCheckMessage": "Clienții de descărcare sunt indisponibili datorită erorilor: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Toți clienții de descărcare sunt indisponibili datorită erorilor",
"Peers": "Parteneri",
"PageSize": "Mărimea Paginii",
"Options": "Opțiuni",
@@ -56,7 +56,7 @@
"Language": "Limbă",
"KeyboardShortcuts": "Scurtături din tastatură",
"Info": "Info",
"IndexerStatusCheckSingleClientMessage": "Indexatoare indisponibile datorită erorilor: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Indexatoare indisponibile datorită erorilor: {indexerNames}",
"HealthNoIssues": "Nicio problemă de configurare",
"Error": "Eroare",
"ConnectionLost": "Conexiune Pierdută",
@@ -66,17 +66,17 @@
"Cancel": "Anulează",
"Apply": "Aplică",
"Age": "Vechime",
"ProxyCheckResolveIpMessage": "Nu am putut găsi adresa IP pentru Hostul Proxy Configurat {0}",
"ProxyCheckFailedToTestMessage": "Nu am putut testa proxy: {0}",
"ProxyCheckBadRequestMessage": "Testul proxy a eșuat. StatusCode: {0}",
"ProxyResolveIpHealthCheckMessage": "Nu am putut găsi adresa IP pentru Hostul Proxy Configurat {proxyHostName}",
"ProxyFailedToTestHealthCheckMessage": "Nu am putut testa proxy: {url}",
"ProxyBadRequestHealthCheckMessage": "Testul proxy a eșuat. StatusCode: {statusCode}",
"Proxy": "Proxy",
"Protocol": "Protocol",
"Warn": "Atenționare",
"View": "Vizualizare",
"Updates": "Actualizări",
"UpdateCheckUINotWritableMessage": "Nu pot instala actualizarea pentru că dosarul UI '{0}' nu poate fi scris de către utilizatorul '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Nu pot instala actualizarea pentru că folderul de pornire '{0}' este într-un folder de App Translocation.",
"UpdateCheckStartupNotWritableMessage": "Nu pot instala actualizarea pentru că dosarul '{0}' nu poate fi scris de către utilizatorul '{1}'.",
"UpdateUiNotWritableHealthCheckMessage": "Nu pot instala actualizarea pentru că dosarul UI '{uiFolder}' nu poate fi scris de către utilizatorul '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Nu pot instala actualizarea pentru că folderul de pornire '{startupFolder}' este într-un folder de App Translocation.",
"UpdateStartupNotWritableHealthCheckMessage": "Nu pot instala actualizarea pentru că dosarul '{startupFolder}' nu poate fi scris de către utilizatorul '{userName}'.",
"UnselectAll": "Deselectează tot",
"UISettingsSummary": "Calendar, dată și setări pentru probleme de vedere",
"UI": "Interfață Grafica",
@@ -239,8 +239,8 @@
"HomePage": "Pagina principală",
"Hostname": "Numele gazdei",
"IgnoredAddresses": "Adrese ignorate",
"IndexerLongTermStatusCheckAllClientMessage": "Toți indexatorii sunt indisponibili datorită erorilor de mai mult de 6 ore",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexatori indisponibili datorită erorilor de mai mult de 6 ore: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Toți indexatorii sunt indisponibili datorită erorilor de mai mult de 6 ore",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexatori indisponibili datorită erorilor de mai mult de 6 ore: {indexerNames}",
"IndexerPriority": "Prioritate indexator",
"Mode": "Mod",
"MovieIndexScrollTop": "Index film: Derulați sus",
@@ -328,7 +328,7 @@
"EnableRssHelpText": "Activați flux RSS pentru indexator",
"IndexerHealthCheckNoIndexers": "Niciun indexator nu este activat, {appName} nu va returna rezultate la căutare.",
"IndexerProxy": "Proxy indexator",
"IndexerVipCheckExpiredClientMessage": "Beneficiile VIP pentru indexator au expirat: {0}",
"IndexerVipExpiredHealthCheckMessage": "Beneficiile VIP pentru indexator au expirat: {indexerNames}",
"IndexerNoDefCheckMessage": "Indexatorii nu au definiție și nu vor funcționa: {0}. Vă rugăm să-i ștergeți și (sau) să-i adăugați din nou în {appName}",
"IndexerRss": "RSS indexator",
"EnabledRedirected": "Activat, Redirecționat",
@@ -363,7 +363,7 @@
"FullSync": "Sincronizare completă",
"IndexerObsoleteCheckMessage": "Indexatorii sunt învechiți sau nu au fost actualizați: {0}. Vă rugăm să-i ștergeți și (sau) să-i adăugați din nou în {appName}",
"IndexerProxies": "Proxiuri indexatoare",
"IndexerVipCheckExpiringClientMessage": "Beneficiile VIP pentru indexator expiră în curând: {0}",
"IndexerVipExpiringHealthCheckMessage": "Beneficiile VIP pentru indexator expiră în curând: {indexerNames}",
"ApplicationLongTermStatusCheckAllClientMessage": "Toate aplicațiile sunt indisponibile din cauza unor eșecuri pentru mai mult de 6 ore",
"ApplicationLongTermStatusCheckSingleClientMessage": "Aplicațiile indisponibile din cauza unor eșecuri pentru mai mult de 6 ore: {0}",
"LastDuration": "Ultima durată",
@@ -438,7 +438,7 @@
"RecentChanges": "Schimbări recente",
"WhatsNew": "Ce mai e nou?",
"DeleteAppProfileMessageText": "Sigur doriți să ștergeți profilul de aplicație '{0}'?",
"NotificationStatusSingleClientHealthCheckMessage": "Notificări indisponibile datorită erorilor: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Notificări indisponibile datorită erorilor: {notificationNames}",
"AuthBasic": "Basic (fereastră pop-up browser)",
"AuthForm": "Formulare (Pagina de autentificare)",
"DisabledForLocalAddresses": "Dezactivat pentru adresele locale",
@@ -464,5 +464,9 @@
"EditApplicationImplementation": "Adăugați aplicație - {implementareName}",
"RestartProwlarr": "Reporniți {appName}",
"AddDownloadClientToProwlarr": "Adăugarea unui client de descărcare permite {appName} să trimită versiuni direct din interfața utilizatorului în timp ce se efectuează o căutare manuală",
"ActiveApps": "Aplicații active"
"ActiveApps": "Aplicații active",
"IndexerHDBitsSettingsMediums": "Mediu",
"IndexerSettingsVipExpiration": "Expirare VIP",
"Directory": "Director",
"CustomFilter": "Filtru personalizat"
}

View File

@@ -48,7 +48,7 @@
"Filename": "Имя файла",
"Files": "Файлы",
"Filter": "Фильтр",
"IndexerStatusCheckAllClientMessage": "Все индексаторы недоступны из-за ошибок",
"IndexerStatusAllUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок",
"LogLevel": "Уровень журнала",
"LogLevelTraceHelpTextWarning": "Отслеживание журнала желательно включать только на короткое время",
"Logs": "Журналы",
@@ -88,7 +88,7 @@
"Ok": "Ok",
"AddDownloadClient": "Добавить программу для скачивания",
"UpdateMechanismHelpText": "Используйте встроенную в {appName} функцию обновления или скрипт",
"IndexerStatusCheckSingleClientMessage": "Индексаторы недоступны из-за ошибок: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Индексаторы недоступны из-за ошибок: {indexerNames}",
"NoTagsHaveBeenAddedYet": "Теги еще не добавлены",
"UnableToLoadTags": "Невозможно загрузить теги",
"AnalyticsEnabledHelpText": "Отправлять в {appName} анонимную информацию об использовании и ошибках. Анонимная статистика включает в себя информацию о браузере, какие страницы веб-интерфейса {appName} загружены, сообщения об ошибках, а также операционной системе. Мы используем эту информацию для выявления ошибок, а также для разработки нового функционала.",
@@ -128,8 +128,8 @@
"Donations": "Пожертвования",
"DownloadClient": "Загрузчик",
"DownloadClientSettings": "Настройки клиента скачиваний",
"DownloadClientStatusCheckAllClientMessage": "Все клиенты для скачивания недоступны из-за ошибок",
"DownloadClientStatusCheckSingleClientMessage": "Клиенты для скачивания недоступны из-за ошибок: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Все клиенты для скачивания недоступны из-за ошибок",
"DownloadClientStatusSingleClientHealthCheckMessage": "Клиенты для скачивания недоступны из-за ошибок: {downloadClientNames}",
"EnableAutomaticSearch": "Включить автоматический поиск",
"EnableAutomaticSearchHelpText": "Будет использовано для автоматических поисков через интерфейс или {appName}",
"Enabled": "Включено",
@@ -153,8 +153,8 @@
"IgnoredAddresses": "Проигнорированные адреса",
"IllRestartLater": "Перезапущу позднее",
"IncludeHealthWarningsHelpText": "Включая предупреждения о здоровье",
"IndexerLongTermStatusCheckAllClientMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов",
"IndexerLongTermStatusCheckSingleClientMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок за последние 6 часов: {indexerNames}",
"IndexerPriority": "Приоритет индексаторов",
"IndexerPriorityHelpText": "Приоритет индексаторов от 1 (наивысший) до 50 (низший). По-умолчанию: 25.",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Все индексаторы недоступны из-за ошибок",
@@ -177,9 +177,9 @@
"Protocol": "Протокол",
"Proxy": "Прокси",
"ProxyBypassFilterHelpText": "Используйте ',' в качестве разделителя и '*.' как подстановочный знак для поддоменов",
"ProxyCheckBadRequestMessage": "Не удалось проверить прокси. Код: {0}",
"ProxyCheckFailedToTestMessage": "Не удалось проверить прокси: {0}",
"ProxyCheckResolveIpMessage": "Не удалось преобразовать IP-адрес для настроенного прокси-хоста {0}",
"ProxyBadRequestHealthCheckMessage": "Не удалось проверить прокси. Код: {statusCode}",
"ProxyFailedToTestHealthCheckMessage": "Не удалось проверить прокси: {url}",
"ProxyResolveIpHealthCheckMessage": "Не удалось преобразовать IP-адрес для настроенного прокси-хоста {proxyHostName}",
"ProxyPasswordHelpText": "Нужно ввести имя пользователя и пароль только если они необходимы. В противном случае оставьте их пустыми.",
"ProxyType": "Тип прокси",
"ProxyUsernameHelpText": "Нужно ввести имя пользователя и пароль только если они необходимы. В противном случае оставьте их пустыми.",
@@ -263,9 +263,9 @@
"UnsavedChanges": "Несохраненные изменения",
"UnselectAll": "Снять все выделения",
"UpdateAutomaticallyHelpText": "Автоматически загружать и устанавливать обновления. Вы так же можете установить в Система: Обновления",
"UpdateCheckStartupNotWritableMessage": "Невозможно установить обновление так как загрузочная папка '{0}' недоступна для записи для пользователя '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Не удается установить обновление, поскольку папка автозагрузки \"{0}\" находится в папке перемещения приложений.",
"UpdateCheckUINotWritableMessage": "Невозможно установить обновление так как UI папка '{0}' недоступна для записи для пользователя '{1}'.",
"UpdateStartupNotWritableHealthCheckMessage": "Невозможно установить обновление так как загрузочная папка '{startupFolder}' недоступна для записи для пользователя '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Не удается установить обновление, поскольку папка автозагрузки \"{startupFolder}\" находится в папке перемещения приложений.",
"UpdateUiNotWritableHealthCheckMessage": "Невозможно установить обновление так как UI папка '{uiFolder}' недоступна для записи для пользователя '{userName}'.",
"UpdateScriptPathHelpText": "Путь к пользовательскому скрипту, который обрабатывает остатки после процесса обновления",
"Uptime": "Время работы",
"URLBase": "Базовый URL",
@@ -363,7 +363,7 @@
"DeleteSelectedIndexersMessageText": "Вы уверены, что хотите удалить {count} выбранных индексатора?",
"DownloadClientPriorityHelpText": "Установите приоритет нескольких клиентов загрузки. Круговой алгоритм используется для клиентов с таким же приоритетом.",
"EditSelectedDownloadClients": "Редактировать выбранные клиенты загрузки",
"ApiKeyValidationHealthCheckMessage": "Пожалуйста, обновите свой ключ API, чтобы он был длиной не менее {0} символов. Вы можете сделать это через настройки или файл конфигурации",
"ApiKeyValidationHealthCheckMessage": "Пожалуйста, обновите свой ключ API, чтобы он был длиной не менее {length} символов. Вы можете сделать это через настройки или файл конфигурации",
"Genre": "Жанры",
"Theme": "Тема",
"Year": "Год",
@@ -372,7 +372,7 @@
"ApplyTagsHelpTextHowToApplyIndexers": "Как применить теги к выбранным индексаторам",
"ApplyTagsHelpTextReplace": "Заменить: заменить теги введенными тегами (оставьте поле пустым, чтобы удалить все теги)",
"Track": "След",
"UpdateAvailable": "Доступно новое обновление",
"UpdateAvailableHealthCheckMessage": "Доступно новое обновление",
"More": "Более",
"Publisher": "Издатель",
"ConnectionLostReconnect": "Radarr попытается соединиться автоматически или нажмите кнопку внизу.",
@@ -393,14 +393,14 @@
"OnHealthRestoredHelpText": "При восстановлении работоспособности",
"Implementation": "Реализация",
"NoDownloadClientsFound": "Клиенты для загрузки не найдены",
"IndexerDownloadClientHealthCheckMessage": "Индексаторы с недопустимыми клиентами загрузки: {0}.",
"IndexerDownloadClientHealthCheckMessage": "Индексаторы с недопустимыми клиентами загрузки: {indexerNames}.",
"StopSelecting": "Прекратить выбор",
"AddDownloadClientImplementation": "Добавить клиент загрузки - {implementationName}",
"AddConnection": "Добавить подключение",
"AddConnectionImplementation": "Добавить подключение - {implementationName}",
"ManageDownloadClients": "Менеджер клиентов загрузки",
"NotificationStatusAllClientHealthCheckMessage": "Все уведомления недоступны из-за сбоев",
"NotificationStatusSingleClientHealthCheckMessage": "Уведомления недоступны из-за сбоев: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Уведомления недоступны из-за сбоев: {notificationNames}",
"AddIndexerImplementation": "Добавить индексатор - {implementationName}",
"AddIndexerProxyImplementation": "Добавить индексатор - {implementationName}",
"EditConnectionImplementation": "Добавить соединение - {implementationName}",
@@ -423,5 +423,9 @@
"AuthenticationRequiredWarning": "Чтобы предотвратить удаленный доступ без авторизации, {appName} теперь требует, чтобы авторизация была включена. При желании вы можете отключить авторизацию с локальных адресов.",
"Id": "ID",
"ManageClients": "Управление клиентами",
"CountApplicationsSelected": "{count} коллекция(ий) выбрано"
"CountApplicationsSelected": "{count} коллекция(ий) выбрано",
"IndexerHDBitsSettingsCodecs": "Кодек",
"IndexerHDBitsSettingsMediums": "Средний",
"Directory": "Каталог",
"CustomFilter": "Настраиваемые фильтры"
}

View File

@@ -1,8 +1,8 @@
{
"About": "Om",
"Language": "Språk",
"IndexerStatusCheckSingleClientMessage": "Indexerare otillgängliga på grund av fel: {0}",
"IndexerStatusCheckAllClientMessage": "Samtliga indexerare otillgängliga på grund av fel",
"IndexerStatusUnavailableHealthCheckMessage": "Indexerare otillgängliga på grund av fel: {indexerNames}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Samtliga indexerare otillgängliga på grund av fel",
"Indexers": "Indexerare",
"Host": "Värd",
"History": "Historik",
@@ -14,8 +14,8 @@
"Files": "Filer",
"Events": "Händelser",
"Edit": "Ändra",
"DownloadClientStatusCheckSingleClientMessage": "Otillgängliga nedladdningsklienter på grund av misslyckade anslutningsförsök: {0}",
"DownloadClientStatusCheckAllClientMessage": "Samtliga nedladdningsklienter är otillgängliga på grund av misslyckade anslutningsförsök",
"DownloadClientStatusSingleClientHealthCheckMessage": "Otillgängliga nedladdningsklienter på grund av misslyckade anslutningsförsök: {downloadClientNames}",
"DownloadClientStatusAllClientHealthCheckMessage": "Samtliga nedladdningsklienter är otillgängliga på grund av misslyckade anslutningsförsök",
"DownloadClients": "Nerladdningsklienter",
"Delete": "Radera",
"Dates": "Datum",
@@ -34,9 +34,9 @@
"LogFiles": "Loggfiler",
"View": "Vy",
"Updates": "Uppdateringar",
"UpdateCheckUINotWritableMessage": "Ej möjligt att installera uppdatering då användargränssnittsmappen '{0}' inte är skrivbar för användaren '{1}'.",
"UpdateCheckStartupTranslocationMessage": "Ej möjligt att installera uppdatering då uppstartsmappen '{0}' är i en \"App translocation\"-mapp.",
"UpdateCheckStartupNotWritableMessage": "Ej möjligt att installera uppdatering då uppstartsmappen '{0}' inte är skrivbar för användaren '{1}'.",
"UpdateUiNotWritableHealthCheckMessage": "Ej möjligt att installera uppdatering då användargränssnittsmappen '{uiFolder}' inte är skrivbar för användaren '{userName}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Ej möjligt att installera uppdatering då uppstartsmappen '{startupFolder}' är i en \"App translocation\"-mapp.",
"UpdateStartupNotWritableHealthCheckMessage": "Ej möjligt att installera uppdatering då uppstartsmappen '{startupFolder}' inte är skrivbar för användaren '{userName}'.",
"UnselectAll": "Avmarkera samtliga",
"UISettingsSummary": "Datum, språk, och färgblindhetsinställningar",
"UI": "Användargränssnitt",
@@ -60,9 +60,9 @@
"ReleaseBranchCheckOfficialBranchMessage": "Gren {0} är inte en giltig gren av {appName}, du kommer ej erhålla uppdateringar",
"Refresh": "Uppdatera",
"Queue": "Kö",
"ProxyCheckResolveIpMessage": "Misslyckades att slå upp IP-adressen till konfigurerad proxyvärd {0}",
"ProxyCheckFailedToTestMessage": "Test av proxy misslyckades: {0}",
"ProxyCheckBadRequestMessage": "Test av proxy misslyckades. Statuskod: {0}",
"ProxyResolveIpHealthCheckMessage": "Misslyckades att slå upp IP-adressen till konfigurerad proxyvärd {proxyHostName}",
"ProxyFailedToTestHealthCheckMessage": "Test av proxy misslyckades: {url}",
"ProxyBadRequestHealthCheckMessage": "Test av proxy misslyckades. Statuskod: {statusCode}",
"Proxy": "Proxy",
"Protocol": "Protokoll",
"LastWriteTime": "Senast skriven tid",
@@ -241,8 +241,8 @@
"Grabs": "Hämta",
"IgnoredAddresses": "Ignorerade adresser",
"IllRestartLater": "Jag startar om senare",
"IndexerLongTermStatusCheckAllClientMessage": "Alla indexerare är inte tillgängliga på grund av fel i mer än 6 timmar",
"IndexerLongTermStatusCheckSingleClientMessage": "Indexatorer är inte tillgängliga på grund av misslyckanden i mer än sex timmar: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Alla indexerare är inte tillgängliga på grund av fel i mer än 6 timmar",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Indexatorer är inte tillgängliga på grund av misslyckanden i mer än sex timmar: {indexerNames}",
"IndexerPriorityHelpText": "Indexeringsprioritet från 1 (högst) till 50 (lägst). Standard: 25.",
"InteractiveSearch": "Interaktiv sökning",
"Interval": "Intervall",
@@ -342,8 +342,8 @@
"NoSearchResultsFound": "Inget sökresultat hittat, försök utföra en ny sökning nedan.",
"NetCore": ".NET",
"MaintenanceRelease": "Underhållsutgåva",
"IndexerVipCheckExpiringClientMessage": "Indexer VIP förmåner utgår snart: {0}",
"IndexerVipCheckExpiredClientMessage": "Indexer VIP förmåner har utgått: {0}",
"IndexerVipExpiringHealthCheckMessage": "Indexer VIP förmåner utgår snart: {indexerNames}",
"IndexerVipExpiredHealthCheckMessage": "Indexer VIP förmåner har utgått: {indexerNames}",
"IndexerTagsHelpText": "Använd taggar för att specificera standardklient, specificera Indexer Proxies, eller bara för att organisera dina indexers.",
"IndexerSettingsSummary": "Konfigurera flera globala Indexerinställningar, includerat Proxies.",
"IndexerRss": "Indexer Rss",
@@ -431,7 +431,7 @@
"RecentChanges": "Senaste ändringar",
"WhatsNew": "Vad är nytt?",
"minutes": "Minuter",
"NotificationStatusSingleClientHealthCheckMessage": "Listor otillgängliga på grund av fel: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Listor otillgängliga på grund av fel: {notificationNames}",
"NotificationStatusAllClientHealthCheckMessage": "Samtliga listor otillgängliga på grund av fel",
"AuthBasic": "Grundläggande (Browser Popup)",
"AuthForm": "Blanketter (inloggningssida)",

View File

@@ -35,7 +35,7 @@
"PendingChangesDiscardChanges": "ยกเลิกการเปลี่ยนแปลงและออก",
"PendingChangesMessage": "คุณยังไม่ได้บันทึกการเปลี่ยนแปลงแน่ใจไหมว่าต้องการออกจากหน้านี้",
"PendingChangesStayReview": "อยู่และตรวจสอบการเปลี่ยนแปลง",
"ProxyCheckFailedToTestMessage": "ไม่สามารถทดสอบพร็อกซี: {0}",
"ProxyFailedToTestHealthCheckMessage": "ไม่สามารถทดสอบพร็อกซี: {url}",
"ProxyPasswordHelpText": "คุณจะต้องป้อนชื่อผู้ใช้และรหัสผ่านหากจำเป็นเท่านั้น เว้นว่างไว้เป็นอย่างอื่น",
"ShowAdvanced": "แสดงขั้นสูง",
"ShowSearch": "แสดงการค้นหา",
@@ -59,7 +59,7 @@
"UnableToAddANewIndexerPleaseTryAgain": "ไม่สามารถเพิ่มตัวสร้างดัชนีใหม่ได้โปรดลองอีกครั้ง",
"UnableToAddANewIndexerProxyPleaseTryAgain": "ไม่สามารถเพิ่มตัวสร้างดัชนีใหม่ได้โปรดลองอีกครั้ง",
"DownloadClientsLoadError": "ไม่สามารถโหลดไคลเอนต์ดาวน์โหลด",
"UpdateCheckUINotWritableMessage": "ไม่สามารถติดตั้งการอัปเดตเนื่องจากโฟลเดอร์ UI \"{0}\" ไม่สามารถเขียนได้โดยผู้ใช้ \"{1}\"",
"UpdateUiNotWritableHealthCheckMessage": "ไม่สามารถติดตั้งการอัปเดตเนื่องจากโฟลเดอร์ UI \"{uiFolder}\" ไม่สามารถเขียนได้โดยผู้ใช้ \"{userName}\"",
"Updates": "อัปเดต",
"UpdateScriptPathHelpText": "พา ธ ไปยังสคริปต์แบบกำหนดเองที่ใช้แพ็กเกจโปรแกรมปรับปรุงที่แยกออกมาและจัดการส่วนที่เหลือของกระบวนการอัพเดต",
"AddDownloadClient": "เพิ่มไคลเอนต์ดาวน์โหลด",
@@ -149,8 +149,8 @@
"DownloadClient": "ดาวน์โหลดไคลเอนต์",
"DownloadClients": "ดาวน์โหลดไคลเอนต์",
"DownloadClientSettings": "ดาวน์โหลด Client Settings",
"DownloadClientStatusCheckAllClientMessage": "ไคลเอนต์ดาวน์โหลดทั้งหมดไม่สามารถใช้งานได้เนื่องจากความล้มเหลว",
"DownloadClientStatusCheckSingleClientMessage": "ดาวน์โหลดไคลเอ็นต์ไม่ได้เนื่องจากความล้มเหลว: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "ไคลเอนต์ดาวน์โหลดทั้งหมดไม่สามารถใช้งานได้เนื่องจากความล้มเหลว",
"DownloadClientStatusSingleClientHealthCheckMessage": "ดาวน์โหลดไคลเอ็นต์ไม่ได้เนื่องจากความล้มเหลว: {downloadClientNames}",
"Edit": "แก้ไข",
"EditIndexer": "แก้ไข Indexer",
"Enable": "เปิดใช้งาน",
@@ -174,12 +174,12 @@
"IllRestartLater": "ฉันจะรีสตาร์ทในภายหลัง",
"Indexer": "Indexer",
"IndexerFlags": "ดัชนีดัชนี",
"IndexerLongTermStatusCheckAllClientMessage": "ตัวจัดทำดัชนีทั้งหมดไม่สามารถใช้งานได้เนื่องจากความล้มเหลวเป็นเวลานานกว่า 6 ชั่วโมง",
"IndexerLongTermStatusCheckSingleClientMessage": "ดัชนีไม่พร้อมใช้งานเนื่องจากความล้มเหลวเป็นเวลานานกว่า 6 ชั่วโมง: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "ตัวจัดทำดัชนีทั้งหมดไม่สามารถใช้งานได้เนื่องจากความล้มเหลวเป็นเวลานานกว่า 6 ชั่วโมง",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "ดัชนีไม่พร้อมใช้งานเนื่องจากความล้มเหลวเป็นเวลานานกว่า 6 ชั่วโมง: {indexerNames}",
"IndexerPriority": "ลำดับความสำคัญของ Indexer",
"IndexerPriorityHelpText": "ลำดับความสำคัญของดัชนีจาก 1 (สูงสุด) ถึง 50 (ต่ำสุด) ค่าเริ่มต้น: 25.",
"IndexerStatusCheckAllClientMessage": "ตัวทำดัชนีทั้งหมดไม่พร้อมใช้งานเนื่องจากความล้มเหลว",
"IndexerStatusCheckSingleClientMessage": "ตัวจัดทำดัชนีไม่พร้อมใช้งานเนื่องจากความล้มเหลว: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "ตัวทำดัชนีทั้งหมดไม่พร้อมใช้งานเนื่องจากความล้มเหลว",
"IndexerStatusUnavailableHealthCheckMessage": "ตัวจัดทำดัชนีไม่พร้อมใช้งานเนื่องจากความล้มเหลว: {indexerNames}",
"MIA": "MIA",
"NoBackupsAreAvailable": "ไม่มีการสำรองข้อมูล",
"NoChange": "ไม่มีการเปลี่ยนแปลง",
@@ -195,7 +195,7 @@
"Protocol": "มาตรการ",
"Proxy": "พร็อกซี",
"ProxyBypassFilterHelpText": "ใช้ \",\" เป็นตัวคั่นและ \"*.\" เป็นสัญลักษณ์แทนสำหรับโดเมนย่อย",
"ProxyCheckBadRequestMessage": "ไม่สามารถทดสอบพร็อกซี StatusCode: {0}",
"ProxyBadRequestHealthCheckMessage": "ไม่สามารถทดสอบพร็อกซี StatusCode: {statusCode}",
"Restore": "คืนค่า",
"RestoreBackup": "คืนค่าการสำรองข้อมูล",
"Retention": "การเก็บรักษา",
@@ -216,8 +216,8 @@
"UnsavedChanges": "การเปลี่ยนแปลงที่ไม่ได้บันทึก",
"UnselectAll": "ไม่เลือกทั้งหมด",
"UpdateAutomaticallyHelpText": "ดาวน์โหลดและติดตั้งการอัปเดตโดยอัตโนมัติ คุณจะยังติดตั้งได้จาก System: Updates",
"UpdateCheckStartupNotWritableMessage": "ไม่สามารถติดตั้งการอัปเดตเนื่องจากโฟลเดอร์เริ่มต้น \"{0}\" ไม่สามารถเขียนได้โดยผู้ใช้ \"{1}\"",
"UpdateCheckStartupTranslocationMessage": "ไม่สามารถติดตั้งการอัปเดตได้เนื่องจากโฟลเดอร์เริ่มต้น \"{0}\" อยู่ในโฟลเดอร์การแปลแอป",
"UpdateStartupNotWritableHealthCheckMessage": "ไม่สามารถติดตั้งการอัปเดตเนื่องจากโฟลเดอร์เริ่มต้น \"{startupFolder}\" ไม่สามารถเขียนได้โดยผู้ใช้ \"{userName}\"",
"UpdateStartupTranslocationHealthCheckMessage": "ไม่สามารถติดตั้งการอัปเดตได้เนื่องจากโฟลเดอร์เริ่มต้น \"{startupFolder}\" อยู่ในโฟลเดอร์การแปลแอป",
"Uptime": "เวลาทำงาน",
"URLBase": "ฐาน URL",
"UrlBaseHelpText": "สำหรับการสนับสนุน reverse proxy ค่าเริ่มต้นจะว่างเปล่า",
@@ -250,7 +250,7 @@
"DeleteNotificationMessageText": "แน่ใจไหมว่าต้องการลบการแจ้งเตือน \"{0}\"",
"DeleteTag": "ลบแท็ก",
"EnableSSL": "เปิดใช้งาน SSL",
"ProxyCheckResolveIpMessage": "ไม่สามารถแก้ไขที่อยู่ IP สำหรับโฮสต์พร็อกซีที่กำหนดค่าไว้ {0}",
"ProxyResolveIpHealthCheckMessage": "ไม่สามารถแก้ไขที่อยู่ IP สำหรับโฮสต์พร็อกซีที่กำหนดค่าไว้ {proxyHostName}",
"ProxyType": "ประเภทพร็อกซี",
"Cancel": "ยกเลิก",
"NoLogFiles": "ไม่มีไฟล์บันทึก",
@@ -350,11 +350,13 @@
"WhatsNew": "มีอะไรใหม่",
"RecentChanges": "การเปลี่ยนแปลงล่าสุด",
"NotificationStatusAllClientHealthCheckMessage": "รายการทั้งหมดไม่พร้อมใช้งานเนื่องจากความล้มเหลว",
"NotificationStatusSingleClientHealthCheckMessage": "รายการไม่พร้อมใช้งานเนื่องจากความล้มเหลว: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "รายการไม่พร้อมใช้งานเนื่องจากความล้มเหลว: {notificationNames}",
"AuthBasic": "พื้นฐาน (เบราว์เซอร์ป๊อปอัพ)",
"AuthForm": "แบบฟอร์ม (หน้าเข้าสู่ระบบ)",
"DisabledForLocalAddresses": "ปิดใช้งานสำหรับที่อยู่ท้องถิ่น",
"None": "ไม่มี",
"ResetAPIKeyMessageText": "แน่ใจไหมว่าต้องการรีเซ็ตคีย์ API",
"RestartProwlarr": "รีสตาร์ท {appName}"
"RestartProwlarr": "รีสตาร์ท {appName}",
"IndexerHDBitsSettingsMediums": "ปานกลาง",
"CustomFilter": "ตัวกรองที่กำหนดเอง"
}

View File

@@ -9,9 +9,9 @@
"Sort": "Çeşitle",
"SetTags": "Etiketleri Ayarla",
"Scheduled": "Tarifeli",
"ProxyCheckResolveIpMessage": "{0} Yapılandırılmış Proxy Ana Bilgisayarının IP Adresi çözülemedi",
"ProxyCheckFailedToTestMessage": "Proxy ile test edilemedi: {0}",
"ProxyCheckBadRequestMessage": "Proxy ile test edilemedi. DurumKodu: {0}",
"ProxyResolveIpHealthCheckMessage": "{proxyHostName} Yapılandırılmış Proxy Ana Bilgisayarının IP Adresi çözülemedi",
"ProxyFailedToTestHealthCheckMessage": "Proxy ile test edilemedi: {url}",
"ProxyBadRequestHealthCheckMessage": "Proxy ile test edilemedi. DurumKodu: {statusCode}",
"Proxy": "Proxy",
"Logging": "Logging",
"LogFiles": "Log dosyaları",
@@ -25,9 +25,9 @@
"About": "Hakkında",
"View": "Görünüm",
"Updates": "Güncellemeler",
"UpdateCheckUINotWritableMessage": "'{0}' UI klasörü '{1}' kullanıcısı tarafından yazılamadığından güncelleme yüklenemiyor.",
"UpdateCheckStartupTranslocationMessage": "Başlangıç klasörü '{0}' bir Uygulama Yer Değiştirme klasöründe olduğu için güncelleme yüklenemiyor.",
"UpdateCheckStartupNotWritableMessage": "'{0}' başlangıç klasörü '{1}' kullanıcısı tarafından yazılamadığından güncelleme yüklenemiyor.",
"UpdateUiNotWritableHealthCheckMessage": "'{uiFolder}' UI klasörü '{userName}' kullanıcısı tarafından yazılamadığından güncelleme yüklenemiyor.",
"UpdateStartupTranslocationHealthCheckMessage": "Başlangıç klasörü '{startupFolder}' bir Uygulama Yer Değiştirme klasöründe olduğu için güncelleme yüklenemiyor.",
"UpdateStartupNotWritableHealthCheckMessage": "'{startupFolder}' başlangıç klasörü '{userName}' kullanıcısı tarafından yazılamadığından güncelleme yüklenemiyor.",
"UnselectAll": "Tüm Seçimleri Kaldır",
"UISettingsSummary": "Takvim, tarih ve renk engelli seçenekler",
"UI": "UI",
@@ -64,7 +64,7 @@
"Edit": "Düzenle",
"CustomFilters": "Özel Filtreler",
"ConnectSettingsSummary": "Bildirimler, medya sunucularına/oynatıcılara bağlantılar ve özel komut kodları",
"Analytics": "Analitik",
"Analytics": "Analiz",
"All": "Herşey",
"Added": "Eklendi",
"Add": "Ekle",
@@ -83,7 +83,7 @@
"UnableToLoadTags": "Etiketler yüklenemiyor",
"UnsavedChanges": "Kaydedilmemiş Değişiklikler",
"Backups": "Yedeklemeler",
"BindAddress": "Bağlama Adresi",
"BindAddress": "Bind Adresi",
"BypassProxyForLocalAddresses": "Yerel Adresler için Proxy'yi Atla",
"DeleteNotificationMessageText": "'{0}' bildirimini silmek istediğinizden emin misiniz?",
"EnableSslHelpText": " Etkili olması için yönetici olarak yeniden çalıştırmayı gerektirir",
@@ -101,7 +101,7 @@
"TestAll": "Tümünü Test Et",
"UnableToAddANewApplicationPleaseTryAgain": "Yeni bir bildirim eklenemiyor, lütfen tekrar deneyin.",
"YesCancel": "Evet İptal",
"ApplicationStatusCheckAllClientMessage": "Hatalar nedeniyle tüm listeler kullanılamıyor",
"ApplicationStatusCheckAllClientMessage": "Hatalar nedeniyle tüm uygulamalar kullanılamıyor",
"CancelPendingTask": "Bu bekleyen görevi iptal etmek istediğinizden emin misiniz?",
"DeleteTag": "Etiketi Sil",
"BindAddressHelpText": "Tüm arayüzler için geçerli IP adresi, localhost veya '*'",
@@ -133,8 +133,8 @@
"RemovedFromTaskQueue": "Görev kuyruğundan kaldırıldı",
"SendAnonymousUsageData": "Anonim Kullanım Verilerini Gönderin",
"Age": "Yaş",
"AllIndexersHiddenDueToFilter": "Uygulanan filtre nedeniyle tüm filmler gizlendi.",
"AnalyticsEnabledHelpText": "Anonim kullanım ve hata bilgilerini {appName} sunucularına gönderin. Bu, tarayıcınızla ilgili bilgileri, kullandığınız {appName} WebUI sayfalarını, hata raporlamasının yanı sıra işletim sistemi ve çalışma zamanı sürümünü içerir. Bu bilgileri, özellikleri ve hata düzeltmelerini önceliklendirmek için kullanacağız.",
"AllIndexersHiddenDueToFilter": "Uygulanan filtre nedeniyle tüm dizin oluşturucular gizlendi.",
"AnalyticsEnabledHelpText": "Anonim kullanım ve hata bilgilerini {appName} sunucularına gönderin. Bu, tarayıcınızla ilgili bilgileri, kullandığınız {appName} Web arayüz sayfalarını, hata raporlamasının yanı sıra işletim sistemi ve çalışma zamanı sürümünü içerir. Bu bilgileri, özellikleri ve hata düzeltmelerini önceliklendirmek için kullanacağız.",
"ApiKey": "API Anahtarı",
"AppDataDirectory": "Uygulama Veri Dizini",
"NoUpdatesAreAvailable": "Güncelleme yok",
@@ -143,7 +143,7 @@
"OnHealthIssueHelpText": "Sağlık Sorunu Hakkında",
"BranchUpdate": "{appName}'ı güncellemek için kullanılacak dal",
"Close": "Kapat",
"ApplicationStatusCheckSingleClientMessage": "Hatalar nedeniyle kullanılamayan listeler: {0}",
"ApplicationStatusCheckSingleClientMessage": "Hatalar nedeniyle kullanılamayan uygulamalar: {0}",
"ApplyTags": "Etiketleri Uygula",
"RssIsNotSupportedWithThisIndexer": "RSS, bu indeksleyici ile desteklenmiyor",
"Interval": "Aralık",
@@ -183,12 +183,12 @@
"IllRestartLater": "Daha sonra yeniden başlayacağım",
"IncludeHealthWarningsHelpText": "Sağlık Uyarılarını Dahil Et",
"IndexerFlags": "Dizin Oluşturucu Bayrakları",
"IndexerLongTermStatusCheckAllClientMessage": "6 saatten uzun süren arızalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerLongTermStatusCheckSingleClientMessage": "6 saatten uzun süredir yaşanan arızalar nedeniyle dizinleyiciler kullanılamıyor: {0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "6 saatten uzun süren arızalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "6 saatten uzun süredir yaşanan arızalar nedeniyle dizinleyiciler kullanılamıyor: {indexerNames}",
"IndexerPriority": "Dizin Oluşturucu Önceliği",
"IndexerPriorityHelpText": "1 (En Yüksek) ila 50 (En Düşük) arasında Dizin Oluşturucu Önceliği. Varsayılan: 25.",
"IndexerStatusCheckAllClientMessage": "Hatalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerStatusCheckSingleClientMessage": "Hatalar nedeniyle dizinleyiciler kullanılamıyor: {0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Hatalar nedeniyle tüm dizinleyiciler kullanılamıyor",
"IndexerStatusUnavailableHealthCheckMessage": "Hatalar nedeniyle dizinleyiciler kullanılamıyor: {indexerNames}",
"Info": "Bilgi",
"InteractiveSearch": "Etkileşimli Arama",
"KeyboardShortcuts": "Klavye kısayolları",
@@ -253,11 +253,11 @@
"AddingTag": "Etiket ekleniyor",
"CouldNotConnectSignalR": "SignalR'ye bağlanılamadı, kullanıcı arayüzü güncellenmeyecek",
"Custom": "Özel",
"DownloadClientStatusCheckSingleClientMessage": "Hatalar nedeniyle indirilemeyen istemciler: {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Hatalar nedeniyle indirilemeyen istemciler: {downloadClientNames}",
"Enabled": "Etkin",
"IgnoredAddresses": "Yoksayılan Adresler",
"Indexer": "Dizin oluşturucu",
"DownloadClientStatusCheckAllClientMessage": "Hatalar nedeniyle tüm indirme istemcileri kullanılamıyor",
"DownloadClientStatusAllClientHealthCheckMessage": "Hatalar nedeniyle tüm indirme istemcileri kullanılamıyor",
"EditIndexer": "Dizinleyiciyi Düzenle",
"Enable": "etkinleştirme",
"EnableInteractiveSearch": "Etkileşimli Aramayı Etkinleştir",
@@ -294,7 +294,7 @@
"Version": "Sürüm",
"Warn": "Uyar",
"Wiki": "Wiki",
"Apply": "Uygulamak",
"Apply": "Uygula",
"BackupFolderHelpText": "Göreli yollar {appName}'ın AppData dizini altında olacaktır",
"Grabbed": "Yakalandı",
"ProxyPasswordHelpText": "Gerekirse yalnızca bir kullanıcı adı ve şifre girmeniz gerekir. Aksi takdirde boş bırakın.",
@@ -305,7 +305,7 @@
"UnableToLoadGeneralSettings": "Genel ayarlar yüklenemiyor",
"Automatic": "Otomatik",
"AutomaticSearch": "Otomatik Arama",
"Backup": "Destek olmak",
"Backup": "Yedek",
"Cancel": "Vazgeç",
"Level": "Seviye",
"Time": "Zaman",
@@ -338,7 +338,7 @@
"ApplyTagsHelpTextRemove": "Kaldır: Girilen etiketleri kaldırın",
"ApplyTagsHelpTextHowToApplyIndexers": "Seçilen indeksleyicilere etiketler nasıl uygulanır?",
"ApplyTagsHelpTextReplace": "Değiştir: Etiketleri girilen etiketlerle değiştirin (tüm etiketleri kaldırmak için etiket girmeyin)",
"DeleteSelectedDownloadClients": "İndirme İstemcisini Sil",
"DeleteSelectedDownloadClients": "İndirme İstemcilerini Sil",
"DownloadClientPriorityHelpText": "Birden çok İndirme İstemcisine öncelik verin. Round-Robin, aynı önceliğe sahip müşteriler için kullanılır.",
"Genre": "Türler",
"Track": "İzleme",
@@ -350,7 +350,7 @@
"WhatsNew": "Ne var ne yok?",
"ConnectionLostReconnect": "{appName} otomatik bağlanmayı deneyecek veya aşağıda yeniden yükle seçeneğini işaretleyebilirsiniz.",
"NotificationStatusAllClientHealthCheckMessage": "Hatalar nedeniyle tüm listeler kullanılamıyor",
"NotificationStatusSingleClientHealthCheckMessage": "Hatalar nedeniyle kullanılamayan listeler: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Hatalar nedeniyle kullanılamayan listeler: {notificationNames}",
"Applications": "Uygulamalar",
"AuthBasic": "Temel (Tarayıcıılır Penceresi)",
"AuthForm": "Formlar (Giriş Sayfası)",
@@ -358,7 +358,7 @@
"None": "Yok",
"ResetAPIKeyMessageText": "API Anahtarınızı sıfırlamak istediğinizden emin misiniz?",
"Categories": "Kategoriler",
"Application": "Uygulamalar",
"Application": "Uygulama",
"Episode": "bölüm",
"AddConnection": "Bağlantı Ekle",
"AddApplicationImplementation": "Uygulama Ekle - {implementationName}",
@@ -398,7 +398,41 @@
"AddDownloadClientToProwlarr": "İndirme istemcisi eklemek, görsel arayüz üzerinde manuel arama yaparak indirilecek içeriği {appName} uygulamasına direkt olarak eklemenize olanak sağlar.",
"AddApplication": "Uygulama Ekle",
"AddCategory": "Kategori Ekle",
"AddNewIndexer": "Yeni İçerik Sağlayıcı Ekle",
"AddNewIndexer": "Yeni Dizin Oluşturucu Ekle",
"ActiveApps": "Aktif Uygulamalar",
"ActiveIndexers": "Aktif İçerik Kaynakları"
"ActiveIndexers": "Aktif Dizin Oluşturucular",
"AdvancedSettingsHiddenClickToShow": "Gelimiş ayarlar gizli, göstermek için tıklayın",
"AddIndexerProxy": "Dizin Oluşturucu Vekili Ekle",
"AddedToDownloadClient": "İçerik istemciye eklendi",
"Album": "Albüm",
"AdvancedSettingsShownClickToHide": "Gelişmiş ayarlar gösteriliyor, gizlemek için tıklayın",
"AddToDownloadClient": "İçeriği indirme istemcisine ekle",
"DownloadClientAriaSettingsDirectoryHelpText": "İndirilenlerin yerleştirileceği isteğe bağlı konum, varsayılan Aria2 konumunu kullanmak için boş bırakın",
"Donate": "Bağış yap",
"Destination": "Hedef",
"Directory": "Rehber",
"DownloadClientDownloadStationSettingsDirectoryHelpText": "İndirilenlerin yerleştirileceği isteğe bağlı paylaşımlı klasör, varsayılan Download Station konumunu kullanmak için boş bırakın",
"DownloadClientFloodSettingsAdditionalTags": "Ek Etiketler",
"DownloadClientDelugeSettingsUrlBaseHelpText": "Deluge json URL'sine bir önek ekler, bkz. {url}",
"DownloadClientFloodSettingsAdditionalTagsHelpText": "Medyanın özelliklerini etiket olarak ekler. İpuçları örnektir.",
"DownloadClientFloodSettingsTagsHelpText": "Bir indirme işleminin başlangıç etiketleri. Bir indirmenin tanınabilmesi için tüm başlangıç etiketlerine sahip olması gerekir. Bu, ilgisiz indirmelerle çakışmaları önler.",
"DownloadClientFloodSettingsUrlBaseHelpText": "Flood API'sine {url} gibi bir önek ekler",
"Database": "Veri tabanı",
"DefaultNameCopiedProfile": "{name} - Kopyala",
"DeleteSelectedDownloadClientsMessageText": "Seçilen {count} indirme istemcisini silmek istediğinizden emin misiniz?",
"DeleteSelectedIndexersMessageText": "Seçilen {count} dizin oluşturucuyu silmek istediğinizden emin misiniz?",
"DownloadClientFreeboxSettingsPortHelpText": "Freebox arayüzüne erişim için kullanılan bağlantı noktası, varsayılan olarak '{port}' şeklindedir",
"ApiKeyValidationHealthCheckMessage": "Lütfen API anahtarınızı en az {length} karakter sayısı kadar güncelleyiniz. Bunu ayarlar veya yapılandırma dosyası üzerinden yapabilirsiniz",
"AppProfileInUse": "Kullanımda Olan Uygulama Profili",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashesHelpText": "Eğer bir torrent hash değeri bazlı engellendi ise bazı dizin oluşturucular RSS/Arama sırasında bu torrenti gerektiği gibi reddedemeyebilir, bunu aktif etmek torrentin çekildikten sonra reddedilebilmesine izin verecektir, ama istemciye gönderilmeden önce.",
"AppProfileSelectHelpText": "Uygulama profilleri, Uygulama eşitlemede RSS, Otomatik Arama ve İnteraktif Arama ayarlarını kontrol etmek için kullanılır",
"ApplicationSettingsSyncRejectBlocklistedTorrentHashes": "İçerik eklenirken eşitleme ret işlemi, Torrent hash değerlerini kara listeye aldı",
"AppSettingsSummary": "{appName} uygulamasının PVR progranlarına müdahele etmek için gerekli konfigürasyonda kullanılan uygulama ve ayarlar",
"DownloadClientFreeboxSettingsApiUrl": "API URL'si",
"DownloadClientFreeboxSettingsApiUrlHelpText": "Freebox API temel URL'sini API sürümüyle tanımlayın, örneğin '{url}', varsayılan olarak '{defaultApiUrl}' olur",
"DownloadClientFreeboxSettingsAppIdHelpText": "Freebox API'sine erişim oluşturulurken verilen uygulama kimliği (ör. 'app_id')",
"DownloadClientFreeboxSettingsAppToken": "Uygulama Token'ı",
"DownloadClientFreeboxSettingsAppTokenHelpText": "Freebox API'sine erişim oluşturulurken alınan uygulama jetonu (ör. 'app_token')",
"DownloadClientFreeboxSettingsAppId": "Uygulama kimliği",
"DownloadClientFreeboxSettingsHostHelpText": "Freebox'un ana bilgisayar adı veya ana bilgisayar IP adresi, varsayılan olarak '{url}' şeklindedir (yalnızca aynı ağdaysa çalışır)"
}

View File

@@ -83,7 +83,7 @@
"URLBase": "URL-адреса",
"DownloadClients": "Клієнти завантажувачів",
"DownloadClientSettings": "Налаштування клієнта завантажувача",
"DownloadClientStatusCheckSingleClientMessage": "Завантаження клієнтів недоступне через помилки: {0}",
"DownloadClientStatusSingleClientHealthCheckMessage": "Завантаження клієнтів недоступне через помилки: {downloadClientNames}",
"Edit": "Редагувати",
"EditIndexer": "Редагувати індексатор",
"Docker": "Docker",
@@ -108,8 +108,8 @@
"PackageVersion": "Версія пакета",
"Protocol": "Протокол",
"Proxy": "Проксі",
"ProxyCheckFailedToTestMessage": "Не вдалося перевірити проксі: {0}",
"ProxyCheckResolveIpMessage": "Не вдалося визначити IP-адресу для налаштованого проксі-сервера {0}",
"ProxyFailedToTestHealthCheckMessage": "Не вдалося перевірити проксі: {url}",
"ProxyResolveIpHealthCheckMessage": "Не вдалося визначити IP-адресу для налаштованого проксі-сервера {proxyHostName}",
"ProxyType": "Тип проксі",
"ProxyUsernameHelpText": "Вам потрібно лише ввести ім’я користувача та пароль, якщо вони потрібні. В іншому випадку залиште їх порожніми.",
"Reset": "Скинути",
@@ -134,7 +134,7 @@
"HomePage": "Домашня сторінка",
"Hostname": "Ім'я хоста",
"DeleteNotification": "Видалити сповіщення",
"IndexerStatusCheckSingleClientMessage": "Індексатори недоступні через помилки: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Індексатори недоступні через помилки: {indexerNames}",
"Info": "Інформація",
"InstanceNameHelpText": "Ім’я екземпляра на вкладці та ім’я програми Syslog",
"InteractiveSearch": "Інтерактивний пошук",
@@ -185,9 +185,9 @@
"UnableToLoadUISettings": "Не вдалося завантажити налаштування інтерфейсу користувача",
"UnsavedChanges": "Незбережені зміни",
"UnselectAll": "Скасувати вибір усіх",
"UpdateCheckStartupNotWritableMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{0}\" не може бути записана користувачем \"{1}\".",
"UpdateCheckStartupTranslocationMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{0}\" знаходиться в папці переміщення програми.",
"UpdateCheckUINotWritableMessage": "Неможливо встановити оновлення, оскільки папка інтерфейсу користувача \"{0}\" не може бути записана користувачем \"{1}\".",
"UpdateStartupNotWritableHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{startupFolder}\" не може бути записана користувачем \"{userName}\".",
"UpdateStartupTranslocationHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка запуску \"{startupFolder}\" знаходиться в папці переміщення програми.",
"UpdateUiNotWritableHealthCheckMessage": "Неможливо встановити оновлення, оскільки папка інтерфейсу користувача \"{uiFolder}\" не може бути записана користувачем \"{userName}\".",
"Updates": "Оновлення",
"UrlBaseHelpText": "Для підтримки зворотного проксі-сервера значення за умовчанням порожнє",
"UseProxy": "Використовуйте проксі",
@@ -230,7 +230,7 @@
"NoBackupsAreAvailable": "Немає резервних копій",
"NoLinks": "Немає посилань",
"OpenThisModal": "Відкрийте цей модальний вікно",
"ProxyCheckBadRequestMessage": "Не вдалося перевірити проксі. Код стану: {0}",
"ProxyBadRequestHealthCheckMessage": "Не вдалося перевірити проксі. Код стану: {statusCode}",
"ReleaseStatus": "Статус випуску",
"Refresh": "Оновити",
"RefreshMovie": "Оновити фільм",
@@ -252,9 +252,9 @@
"Indexers": "Індексатори",
"HealthNoIssues": "Немає проблем із вашою конфігурацією",
"IndexerFlags": "Прапори індексатора",
"IndexerLongTermStatusCheckAllClientMessage": "Усі індексатори недоступні через збої більше 6 годин",
"IndexerLongTermStatusCheckSingleClientMessage": "Індексатори недоступні через збої більше 6 годин: {0}",
"IndexerStatusCheckAllClientMessage": "Усі індексатори недоступні через збої",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Усі індексатори недоступні через збої більше 6 годин",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Індексатори недоступні через збої більше 6 годин: {indexerNames}",
"IndexerStatusAllUnavailableHealthCheckMessage": "Усі індексатори недоступні через збої",
"LastExecution": "Останнє виконання",
"LogFiles": "Файли журналів",
"LogLevelTraceHelpTextWarning": "Журнал трасування слід увімкнути лише тимчасово",
@@ -279,7 +279,7 @@
"Discord": "Discord",
"DownloadClient": "Клієнт завантажувача",
"Donations": "Пожертви",
"DownloadClientStatusCheckAllClientMessage": "Усі клієнти завантаження недоступні через збої",
"DownloadClientStatusAllClientHealthCheckMessage": "Усі клієнти завантаження недоступні через збої",
"Enable": "Увімкнути",
"Filename": "Ім'я файлу",
"Host": "Хост",
@@ -353,16 +353,16 @@
"More": "Більше",
"Track": "Трасувати",
"Year": "Рік",
"UpdateAvailable": "Доступне нове оновлення",
"UpdateAvailableHealthCheckMessage": "Доступне нове оновлення",
"Genre": "Жанри",
"ConnectionLostReconnect": "Radarr спробує підключитися автоматично, або ви можете натиснути перезавантажити нижче.",
"ConnectionLostToBackend": "Radarr втратив зв’язок із бекендом, і його потрібно перезавантажити, щоб відновити функціональність.",
"DeleteAppProfileMessageText": "Ви впевнені, що хочете видалити цей профіль затримки?",
"RecentChanges": "Останні зміни",
"minutes": "Хвилин",
"WhatsNew": "Що нового?",
"WhatsNew": "Що нового ?",
"NotificationStatusAllClientHealthCheckMessage": "Усі списки недоступні через помилки",
"NotificationStatusSingleClientHealthCheckMessage": "Списки недоступні через помилки: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Списки недоступні через помилки: {notificationNames}",
"AuthBasic": "Основний (спливаюче вікно браузера)",
"AuthForm": "Форми (сторінка входу)",
"DisabledForLocalAddresses": "Відключено для локальних адрес",
@@ -388,5 +388,13 @@
"ApplyChanges": "Застосувати зміни",
"AuthenticationMethod": "Метод автентифікації",
"AuthenticationMethodHelpTextWarning": "Виберіть дійсний метод автентифікації",
"AppUpdated": "{appName} Оновлено"
"AppUpdated": "{appName} Оновлено",
"Album": "Альбом",
"AuthenticationRequired": "Потрібна Автентифікація",
"AuthenticationRequiredPasswordHelpTextWarning": "Введіть новий пароль",
"AuthenticationRequiredUsernameHelpTextWarning": "Введіть нове ім'я користувача",
"Artist": "Виконавець",
"Yes": "Так",
"AuthenticationRequiredWarning": "Щоб запобігти віддаленому доступу без автентифікації, {appName} тепер вимагає ввімкнення автентифікації. За бажанням можна вимкнути автентифікацію з локальних адрес.",
"AppUpdatedVersion": "{appName} оновлено до версії `{version}`. Щоб отримати останні зміни, потрібно перезавантажити {appName}"
}

View File

@@ -35,8 +35,8 @@
"Priority": "Sự ưu tiên",
"Protocol": "Giao thức",
"ProxyBypassFilterHelpText": "Sử dụng ',' làm dấu phân tách và '*.' làm ký tự đại diện cho các miền phụ",
"ProxyCheckFailedToTestMessage": "Không thể kiểm tra proxy: {0}",
"ProxyCheckResolveIpMessage": "Không thể phân giải Địa chỉ IP cho Máy chủ Proxy đã Định cấu hình {0}",
"ProxyFailedToTestHealthCheckMessage": "Không thể kiểm tra proxy: {url}",
"ProxyResolveIpHealthCheckMessage": "Không thể phân giải Địa chỉ IP cho Máy chủ Proxy đã Định cấu hình {proxyHostName}",
"ProxyPasswordHelpText": "Bạn chỉ cần nhập tên người dùng và mật khẩu nếu được yêu cầu. Nếu không, hãy để trống chúng.",
"ProxyType": "Loại proxy",
"ProxyUsernameHelpText": "Bạn chỉ cần nhập tên người dùng và mật khẩu nếu được yêu cầu. Nếu không, hãy để trống chúng.",
@@ -78,7 +78,7 @@
"Torrent": "Torrents",
"UnableToAddANewIndexerPleaseTryAgain": "Không thể thêm trình chỉ mục mới, vui lòng thử lại.",
"UpdateAutomaticallyHelpText": "Tự động tải xuống và cài đặt các bản cập nhật. Bạn vẫn có thể cài đặt từ Hệ thống: Cập nhật",
"UpdateCheckStartupNotWritableMessage": "Không thể cài đặt bản cập nhật vì người dùng '{0}' không thể ghi thư mục khởi động '{1}'.",
"UpdateStartupNotWritableHealthCheckMessage": "Không thể cài đặt bản cập nhật vì người dùng '{startupFolder}' không thể ghi thư mục khởi động '{userName}'.",
"Backups": "Sao lưu",
"BeforeUpdate": "Trước khi cập nhật",
"CertificateValidationHelpText": "Thay đổi cách xác thực chứng chỉ HTTPS nghiêm ngặt",
@@ -93,8 +93,8 @@
"Analytics": "phân tích",
"Automatic": "Tự động",
"DownloadClientSettings": "Tải xuống cài đặt ứng dụng khách",
"DownloadClientStatusCheckAllClientMessage": "Tất cả các ứng dụng khách tải xuống không khả dụng do lỗi",
"DownloadClientStatusCheckSingleClientMessage": "Ứng dụng khách tải xuống không khả dụng do lỗi: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "Tất cả các ứng dụng khách tải xuống không khả dụng do lỗi",
"DownloadClientStatusSingleClientHealthCheckMessage": "Ứng dụng khách tải xuống không khả dụng do lỗi: {downloadClientNames}",
"Edit": "Biên tập",
"EditIndexer": "Chỉnh sửa trình lập chỉ mục",
"Enabled": "Đã bật",
@@ -122,7 +122,7 @@
"Authentication": "Xác thực",
"Backup": "Sao lưu",
"DeleteTagMessageText": "Bạn có chắc chắn muốn xóa thẻ '{0}' không?",
"IndexerLongTermStatusCheckSingleClientMessage": "Trình lập chỉ mục không khả dụng do lỗi trong hơn 6 giờ: {0}",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "Trình lập chỉ mục không khả dụng do lỗi trong hơn 6 giờ: {indexerNames}",
"IndexerPriority": "Mức độ ưu tiên của người lập chỉ mục",
"KeyboardShortcuts": "Các phím tắt bàn phím",
"Language": "Ngôn ngữ",
@@ -138,7 +138,7 @@
"Mechanism": "Cơ chế",
"MIA": "MIA",
"New": "Mới",
"ProxyCheckBadRequestMessage": "Không thể kiểm tra proxy. Mã trạng thái: {0}",
"ProxyBadRequestHealthCheckMessage": "Không thể kiểm tra proxy. Mã trạng thái: {statusCode}",
"BackupRetentionHelpText": "Các bản sao lưu tự động cũ hơn khoảng thời gian lưu giữ sẽ tự động được dọn dẹp",
"BindAddress": "Địa chỉ ràng buộc",
"BranchUpdate": "Nhánh sử dụng để cập nhật {appName}",
@@ -185,7 +185,7 @@
"PortNumber": "Số cổng",
"Proxy": "Ủy quyền",
"IndexerProxyStatusAllUnavailableHealthCheckMessage": "Tất cả các trình lập chỉ mục không khả dụng do lỗi",
"IndexerStatusCheckAllClientMessage": "Tất cả các trình lập chỉ mục không khả dụng do lỗi",
"IndexerStatusAllUnavailableHealthCheckMessage": "Tất cả các trình lập chỉ mục không khả dụng do lỗi",
"Info": "Thông tin",
"MoreInfo": "Thêm thông tin",
"MovieIndexScrollBottom": "Mục lục phim: Cuộn dưới cùng",
@@ -223,8 +223,8 @@
"UnableToLoadUISettings": "Không thể tải cài đặt giao diện người dùng",
"UnsavedChanges": "Các thay đổi chưa được lưu",
"UnselectAll": "Bỏ chọn tất cả",
"UpdateCheckStartupTranslocationMessage": "Không thể cài đặt bản cập nhật vì thư mục khởi động '{0}' nằm trong thư mục Chuyển vị ứng dụng.",
"UpdateCheckUINotWritableMessage": "Không thể cài đặt bản cập nhật vì thư mục giao diện người dùng '{0}' không thể ghi bởi người dùng '{1}'.",
"UpdateStartupTranslocationHealthCheckMessage": "Không thể cài đặt bản cập nhật vì thư mục khởi động '{startupFolder}' nằm trong thư mục Chuyển vị ứng dụng.",
"UpdateUiNotWritableHealthCheckMessage": "Không thể cài đặt bản cập nhật vì thư mục giao diện người dùng '{uiFolder}' không thể ghi bởi người dùng '{userName}'.",
"UseProxy": "Sử dụng Proxy",
"Wiki": "Wiki",
"YesCancel": "Có, Hủy bỏ",
@@ -297,9 +297,9 @@
"GeneralSettings": "Cài đặt chung",
"Indexer": "Người lập chỉ mục",
"IndexerFlags": "Cờ chỉ mục",
"IndexerLongTermStatusCheckAllClientMessage": "Tất cả các trình lập chỉ mục không khả dụng do lỗi trong hơn 6 giờ",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "Tất cả các trình lập chỉ mục không khả dụng do lỗi trong hơn 6 giờ",
"IndexerPriorityHelpText": "Mức độ ưu tiên của người lập chỉ mục từ 1 (Cao nhất) đến 50 (Thấp nhất). Mặc định: 25.",
"IndexerStatusCheckSingleClientMessage": "Trình lập chỉ mục không khả dụng do lỗi: {0}",
"IndexerStatusUnavailableHealthCheckMessage": "Trình lập chỉ mục không khả dụng do lỗi: {indexerNames}",
"Interval": "Khoảng thời gian",
"RefreshMovie": "Làm mới phim",
"System": "Hệ thống",
@@ -348,7 +348,7 @@
"ConnectionLostReconnect": "Radarr sẽ cố gắng kết nối tự động hoặc bạn có thể nhấp vào tải lại bên dưới.",
"WhatsNew": "Có gì mới?",
"NotificationStatusAllClientHealthCheckMessage": "Tất cả danh sách không có sẵn do lỗi",
"NotificationStatusSingleClientHealthCheckMessage": "Danh sách không có sẵn do lỗi: {0}",
"NotificationStatusSingleClientHealthCheckMessage": "Danh sách không có sẵn do lỗi: {notificationNames}",
"AuthBasic": "Cơ bản (Cửa sổ bật lên trình duyệt)",
"AuthForm": "Biểu mẫu (Trang đăng nhập)",
"DisabledForLocalAddresses": "Bị vô hiệu hóa đối với địa chỉ địa phương",

View File

@@ -22,7 +22,7 @@
"Analytics": "分析",
"AnalyticsEnabledHelpText": "将匿名使用情况和错误信息发送到{appName}的服务器。这包括有关您的浏览器的信息、您使用的{appName} WebUI页面、错误报告以及操作系统和运行时版本。我们将使用此信息来确定功能和错误修复的优先级。",
"ApiKey": "接口密钥 (API Key)",
"ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少{0}个字符长。您可以通过设置或配置文件执行此操作",
"ApiKeyValidationHealthCheckMessage": "请将API密钥更新为至少{length}个字符长。您可以通过设置或配置文件执行此操作",
"AppDataDirectory": "AppData目录",
"AppDataLocationHealthCheckMessage": "正在更新期间的 AppData 不会被更新删除",
"AppProfileInUse": "正在使用的应用程序配置文件",
@@ -122,8 +122,8 @@
"DownloadClient": "下载客户端",
"DownloadClientCategory": "下载客户端分类",
"DownloadClientSettings": "下载客户端设置",
"DownloadClientStatusCheckAllClientMessage": "所有下载客户端都不可用",
"DownloadClientStatusCheckSingleClientMessage": "所有下载客户端都不可用: {0}",
"DownloadClientStatusAllClientHealthCheckMessage": "所有下载客户端都不可用",
"DownloadClientStatusSingleClientHealthCheckMessage": "所有下载客户端都不可用: {downloadClientNames}",
"DownloadClients": "下载客户端",
"DownloadClientsSettingsSummary": "下载客户端配置以集成到 {appName} UI 搜索中",
"Duration": "时长",
@@ -197,8 +197,8 @@
"IndexerFlags": "搜刮器标记",
"IndexerHealthCheckNoIndexers": "未启用任何搜刮器,{appName}将不会返回搜索结果",
"IndexerInfo": "索引器信息",
"IndexerLongTermStatusCheckAllClientMessage": "由于故障超过6小时所有搜刮器均不可用",
"IndexerLongTermStatusCheckSingleClientMessage": "由于故障6小时下列搜刮器都已不可用{0}",
"IndexerLongTermStatusAllUnavailableHealthCheckMessage": "由于故障超过6小时所有搜刮器均不可用",
"IndexerLongTermStatusUnavailableHealthCheckMessage": "由于故障6小时下列搜刮器都已不可用{indexerNames}",
"IndexerName": "‎索引‎‎名字‎",
"IndexerNoDefCheckMessage": "索引器没有定义,将无法工作: {0}. 请删除或重新添加到{appName}",
"IndexerObsoleteCheckMessage": "搜刮器已过弃用或已更新:{0}。请将其删除和(或)重新添加到 {appName}",
@@ -212,11 +212,11 @@
"IndexerRss": "搜刮器RSS",
"IndexerSettingsSummary": "配置全局索引器设置,包括代理。",
"IndexerSite": "‎索引‎‎网站‎",
"IndexerStatusCheckAllClientMessage": "所有搜刮器都因错误不可用",
"IndexerStatusCheckSingleClientMessage": "搜刮器因错误不可用:{0}",
"IndexerStatusAllUnavailableHealthCheckMessage": "所有搜刮器都因错误不可用",
"IndexerStatusUnavailableHealthCheckMessage": "搜刮器因错误不可用:{indexerNames}",
"IndexerTagsHelpText": "使用标签来指定索引器代理或索引器同步到哪些应用程序。",
"IndexerVipCheckExpiredClientMessage": "索引器VIP特权已过期{0}",
"IndexerVipCheckExpiringClientMessage": "索引器VIP特权即将过期{0}",
"IndexerVipExpiredHealthCheckMessage": "索引器VIP特权已过期{indexerNames}",
"IndexerVipExpiringHealthCheckMessage": "索引器VIP特权即将过期{indexerNames}",
"Indexers": "索引器",
"Info": "信息",
"InitialFailure": "初始化失败",
@@ -308,9 +308,9 @@
"Proxies": "代理",
"Proxy": "代理",
"ProxyBypassFilterHelpText": "使用“ , ”作为分隔符,和“ *. ”作为二级域名的通配符",
"ProxyCheckBadRequestMessage": "测试代理失败。状态码:{0}",
"ProxyCheckFailedToTestMessage": "测试代理失败: {0}",
"ProxyCheckResolveIpMessage": "无法解析已设置的代理服务器主机{0}的IP地址",
"ProxyBadRequestHealthCheckMessage": "测试代理失败。状态码:{statusCode}",
"ProxyFailedToTestHealthCheckMessage": "测试代理失败: {url}",
"ProxyResolveIpHealthCheckMessage": "无法解析已设置的代理服务器主机{proxyHostName}的IP地址",
"ProxyPasswordHelpText": "如果需要,您只需要输入用户名和密码,否则就让它们为空。",
"ProxyType": "代理类型",
"ProxyUsernameHelpText": "如果需要,您只需要输入用户名和密码。否则就让它们为空。",
@@ -464,10 +464,10 @@
"UnsavedChanges": "未保存更改",
"UnselectAll": "取消选择全部",
"UpdateAutomaticallyHelpText": "自动下载并安装更新。你还可以在“系统:更新”中安装",
"UpdateAvailable": "有新的更新可用",
"UpdateCheckStartupNotWritableMessage": "无法安装更新,因为用户“{1}”对于启动文件夹“{0}”没有写入权限。",
"UpdateCheckStartupTranslocationMessage": "无法安装更新,因为启动文件夹“{0}”在一个应用程序迁移文件夹。Cannot install update because startup folder '{0}' is in an App Translocation folder.",
"UpdateCheckUINotWritableMessage": "无法安装升级,因为用户“{1}”不可写入界面文件夹“{0}”。",
"UpdateAvailableHealthCheckMessage": "有新的更新可用",
"UpdateStartupNotWritableHealthCheckMessage": "无法安装更新,因为用户“{userName}”对于启动文件夹“{startupFolder}”没有写入权限。",
"UpdateStartupTranslocationHealthCheckMessage": "无法安装更新,因为启动文件夹“{0}”在一个应用程序迁移文件夹。Cannot install update because startup folder '{startupFolder}' is in an App Translocation folder.",
"UpdateUiNotWritableHealthCheckMessage": "无法安装升级,因为用户“{userName}”不可写入界面文件夹“{uiFolder}”。",
"UpdateMechanismHelpText": "使用 {appName} 内置的更新程序或脚本",
"UpdateScriptPathHelpText": "自定义脚本的路径,该脚本处理获取的更新包并处理更新过程的其余部分",
"Updates": "更新",
@@ -580,7 +580,7 @@
"External": "外部的",
"None": "无",
"ResetAPIKeyMessageText": "您确定要重置您的 API 密钥吗?",
"IndexerDownloadClientHealthCheckMessage": "有无效下载客户端的索引器:{0}。",
"IndexerDownloadClientHealthCheckMessage": "有无效下载客户端的索引器:{indexerNames}。",
"ApplicationTagsHelpTextWarning": "标签应该谨慎使用,它们可能会产生意想不到的效果。带有标签的应用程序只会与具有相同标签的索引器同步。",
"EditCategory": "编辑分类",
"IndexerHistoryLoadError": "加载索引器历史记录出错",

View File

@@ -73,7 +73,7 @@
"Rss": "RSS",
"Season": "季",
"Theme": "主題",
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{0}個字元長。您可以通過設定或配置文件進行此操作。",
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{length}個字元長。您可以通過設定或配置文件進行此操作。",
"AppDataLocationHealthCheckMessage": "為了避免在更新過程中刪除AppData將無法進行更新。",
"AuthenticationMethodHelpText": "需要使用者名稱和密碼來存取Radarr",
"Backup": "備份",

View File

@@ -1,7 +1,6 @@
using System;
using System.Linq;
using System.Net;
using FluentValidation.Results;
using NLog;
using NzbDrone.Common.Extensions;
@@ -112,18 +111,18 @@ namespace NzbDrone.Core.Notifications.Ntfy
{
try
{
requestBuilder.Headers.Add("X-Title", title);
requestBuilder.Headers.Add("X-Message", message);
requestBuilder.Headers.Add("X-Priority", settings.Priority.ToString());
requestBuilder.AddQueryParam("title", title);
requestBuilder.AddQueryParam("message", message);
requestBuilder.AddQueryParam("priority", settings.Priority.ToString());
if (settings.Tags.Any())
{
requestBuilder.Headers.Add("X-Tags", settings.Tags.Join(","));
requestBuilder.AddQueryParam("tags", settings.Tags.Join(","));
}
if (!settings.ClickUrl.IsNullOrWhiteSpace())
{
requestBuilder.Headers.Add("X-Click", settings.ClickUrl);
requestBuilder.AddQueryParam("click", settings.ClickUrl);
}
if (!settings.AccessToken.IsNullOrWhiteSpace())

View File

@@ -18,22 +18,30 @@ namespace NzbDrone.Core.Notifications.Telegram
public override void OnGrab(GrabMessage message)
{
_proxy.SendNotification(RELEASE_GRABBED_TITLE, message.Message, Settings);
var title = Settings.IncludeAppNameInTitle ? RELEASE_GRABBED_TITLE_BRANDED : RELEASE_GRABBED_TITLE;
_proxy.SendNotification(title, message.Message, Settings);
}
public override void OnHealthIssue(HealthCheck.HealthCheck healthCheck)
{
_proxy.SendNotification(HEALTH_ISSUE_TITLE, healthCheck.Message, Settings);
var title = Settings.IncludeAppNameInTitle ? HEALTH_ISSUE_TITLE_BRANDED : HEALTH_ISSUE_TITLE;
_proxy.SendNotification(title, healthCheck.Message, Settings);
}
public override void OnHealthRestored(HealthCheck.HealthCheck previousCheck)
{
_proxy.SendNotification(HEALTH_RESTORED_TITLE, $"The following issue is now resolved: {previousCheck.Message}", Settings);
var title = Settings.IncludeAppNameInTitle ? HEALTH_RESTORED_TITLE_BRANDED : HEALTH_RESTORED_TITLE;
_proxy.SendNotification(title, $"The following issue is now resolved: {previousCheck.Message}", Settings);
}
public override void OnApplicationUpdate(ApplicationUpdateMessage updateMessage)
{
_proxy.SendNotification(APPLICATION_UPDATE_TITLE, updateMessage.Message, Settings);
var title = Settings.IncludeAppNameInTitle ? APPLICATION_UPDATE_TITLE_BRANDED : APPLICATION_UPDATE_TITLE;
_proxy.SendNotification(title, updateMessage.Message, Settings);
}
public override ValidationResult Test()

View File

@@ -49,10 +49,11 @@ namespace NzbDrone.Core.Notifications.Telegram
{
try
{
const string brandedTitle = "Prowlarr - Test Notification";
const string title = "Test Notification";
const string body = "This is a test message from Prowlarr";
SendNotification(title, body, settings);
SendNotification(settings.IncludeAppNameInTitle ? brandedTitle : title, body, settings);
}
catch (Exception ex)
{

View File

@@ -32,6 +32,9 @@ namespace NzbDrone.Core.Notifications.Telegram
[FieldDefinition(3, Label = "Send Silently", Type = FieldType.Checkbox, HelpText = "Sends the message silently. Users will receive a notification with no sound")]
public bool SendSilently { get; set; }
[FieldDefinition(4, Label = "NotificationsTelegramSettingsIncludeAppName", Type = FieldType.Checkbox, HelpText = "NotificationsTelegramSettingsIncludeAppNameHelpText")]
public bool IncludeAppNameInTitle { get; set; }
public NzbDroneValidationResult Validate()
{
return new NzbDroneValidationResult(Validator.Validate(this));

View File

@@ -10,6 +10,7 @@
<PackageReference Include="Microsoft.AspNetCore.WebUtilities" Version="2.2.0" />
<PackageReference Include="NLog.Targets.Syslog" Version="7.0.0" />
<PackageReference Include="Npgsql" Version="7.0.6" />
<PackageReference Include="Polly" Version="8.3.1" />
<PackageReference Include="Servarr.FluentMigrator.Runner" Version="3.3.2.9" />
<PackageReference Include="Servarr.FluentMigrator.Runner.Postgres" Version="3.3.2.9" />
<PackageReference Include="Servarr.FluentMigrator.Runner.SQLite" Version="3.3.2.9" />

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