mirror of
https://github.com/Prowlarr/Prowlarr.git
synced 2026-03-05 13:40:08 -05:00
Compare commits
43 Commits
v1.15.0.43
...
v1.16.2.44
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5fee2c4cd9 | ||
|
|
21d553cf1b | ||
|
|
782b2d3761 | ||
|
|
e1da3eee80 | ||
|
|
09af2da6b9 | ||
|
|
e3e9094d42 | ||
|
|
94634234ff | ||
|
|
a48d6029d9 | ||
|
|
9cc150b105 | ||
|
|
6a97d99876 | ||
|
|
c957168040 | ||
|
|
61bc35b3fa | ||
|
|
a84210c452 | ||
|
|
8af6ea1d8f | ||
|
|
1a894ac583 | ||
|
|
4f6e05414c | ||
|
|
5096a088d4 | ||
|
|
6581bddba3 | ||
|
|
292af28d42 | ||
|
|
37a6d03d52 | ||
|
|
fe35d450f0 | ||
|
|
6a9e27bc06 | ||
|
|
a989bf82ea | ||
|
|
ccc8d8002f | ||
|
|
eaaf8db486 | ||
|
|
c32fa7a84b | ||
|
|
57e21a78ee | ||
|
|
9cdf5d18d8 | ||
|
|
41b0a1211b | ||
|
|
1b8f09f2ce | ||
|
|
2f85de6b69 | ||
|
|
b2ef9d5b0a | ||
|
|
c80262d75b | ||
|
|
2a312d93ec | ||
|
|
e09df2fff3 | ||
|
|
f0c7d13b20 | ||
|
|
4dac60bef9 | ||
|
|
5aefb46790 | ||
|
|
41b043e551 | ||
|
|
5447fad1fc | ||
|
|
6a1e01abbd | ||
|
|
2803ad5ba0 | ||
|
|
8fa8a13036 |
13
.devcontainer/Prowlarr.code-workspace
Normal file
13
.devcontainer/Prowlarr.code-workspace
Normal 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": {}
|
||||
}
|
||||
19
.devcontainer/devcontainer.json
Normal file
19
.devcontainer/devcontainer.json
Normal 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
12
.github/dependabot.yml
vendored
Normal 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
1
.gitignore
vendored
@@ -127,6 +127,7 @@ coverage*.xml
|
||||
coverage*.json
|
||||
setup/Output/
|
||||
*.~is
|
||||
.mono
|
||||
|
||||
# VS outout folders
|
||||
bin
|
||||
|
||||
7
.vscode/extensions.json
vendored
Normal file
7
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"recommendations": [
|
||||
"esbenp.prettier-vscode",
|
||||
"ms-dotnettools.csdevkit",
|
||||
"ms-vscode-remote.remote-containers"
|
||||
]
|
||||
}
|
||||
26
.vscode/launch.json
vendored
Normal file
26
.vscode/launch.json
vendored
Normal 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
44
.vscode/tasks.json
vendored
Normal 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"
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -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)'
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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"))
|
||||
{
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
}
|
||||
|
||||
@@ -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());
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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";
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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);
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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")]
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
|
||||
@@ -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),
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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";
|
||||
|
||||
@@ -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
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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": "متوسط"
|
||||
}
|
||||
|
||||
@@ -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": "Персонализирани филтри"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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 Φιλτρα"
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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\"."
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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": "מוציא לאור",
|
||||
|
||||
@@ -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": "कस्टम फ़िल्टर"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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": "カスタムフィルター"
|
||||
}
|
||||
|
||||
@@ -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": "사용자 지정 필터"
|
||||
}
|
||||
|
||||
@@ -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?",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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)",
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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": "Настраиваемые фильтры"
|
||||
}
|
||||
|
||||
@@ -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)",
|
||||
|
||||
@@ -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": "ตัวกรองที่กำหนดเอง"
|
||||
}
|
||||
|
||||
@@ -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ı Açı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)"
|
||||
}
|
||||
|
||||
@@ -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}"
|
||||
}
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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": "加载索引器历史记录出错",
|
||||
|
||||
@@ -73,7 +73,7 @@
|
||||
"Rss": "RSS",
|
||||
"Season": "季",
|
||||
"Theme": "主題",
|
||||
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{0}個字元長。您可以通過設定或配置文件進行此操作。",
|
||||
"ApiKeyValidationHealthCheckMessage": "請將您的API金鑰更新為至少{length}個字元長。您可以通過設定或配置文件進行此操作。",
|
||||
"AppDataLocationHealthCheckMessage": "為了避免在更新過程中刪除AppData,將無法進行更新。",
|
||||
"AuthenticationMethodHelpText": "需要使用者名稱和密碼來存取Radarr",
|
||||
"Backup": "備份",
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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));
|
||||
|
||||
@@ -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
Reference in New Issue
Block a user