mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-06 06:28:45 -05:00
Compare commits
187 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
742c6fa5dd | ||
|
|
f4cfdc6647 | ||
|
|
43ae566053 | ||
|
|
063a6428f3 | ||
|
|
3e302d7c04 | ||
|
|
436ceabb9e | ||
|
|
186dc6db31 | ||
|
|
af4feba7d7 | ||
|
|
549aac15b7 | ||
|
|
06d8d92dbe | ||
|
|
6a8763d7ba | ||
|
|
521b97b7b7 | ||
|
|
58c8601067 | ||
|
|
36609376e8 | ||
|
|
32a1c8264e | ||
|
|
06754f4ef1 | ||
|
|
99d9b3bf94 | ||
|
|
ec71d20d37 | ||
|
|
2d1e88bb39 | ||
|
|
c9d30bb422 | ||
|
|
cd448082e3 | ||
|
|
46239dddac | ||
|
|
81177fda35 | ||
|
|
983d623d7f | ||
|
|
bdda8f4abf | ||
|
|
94fc804394 | ||
|
|
e00d8c09e7 | ||
|
|
70a40b4bdd | ||
|
|
f806a62f01 | ||
|
|
71a9281b8f | ||
|
|
a34747fbd5 | ||
|
|
6b0380199b | ||
|
|
39d2f90a84 | ||
|
|
7bff7651f3 | ||
|
|
44bd15d519 | ||
|
|
1ca93b03a0 | ||
|
|
3295142d81 | ||
|
|
f12fdc46dc | ||
|
|
fc01254fe6 | ||
|
|
8fb3368601 | ||
|
|
58facc2512 | ||
|
|
b43c2b308b | ||
|
|
1e89a0af56 | ||
|
|
acd3cbbf49 | ||
|
|
a806521745 | ||
|
|
0dddaf26e0 | ||
|
|
cdf63a005b | ||
|
|
ca422a0af3 | ||
|
|
a682371a91 | ||
|
|
26ef146526 | ||
|
|
936ee58abb | ||
|
|
71d8c208bc | ||
|
|
2200ffa88e | ||
|
|
4453316516 | ||
|
|
b947207571 | ||
|
|
25d29deae6 | ||
|
|
9abe6d6d71 | ||
|
|
77dbc0a37f | ||
|
|
659117512b | ||
|
|
b1dbbc6a69 | ||
|
|
424a1c626e | ||
|
|
522666191b | ||
|
|
78055ef794 | ||
|
|
0fe534c202 | ||
|
|
257179de31 | ||
|
|
65b57112b9 | ||
|
|
27f0b1d1f2 | ||
|
|
6e31476c45 | ||
|
|
bc7f0f3fb3 | ||
|
|
13eeb5164f | ||
|
|
fc756ed23d | ||
|
|
c150365462 | ||
|
|
58d209059e | ||
|
|
506179b517 | ||
|
|
f0f4eb75df | ||
|
|
6c1c025668 | ||
|
|
987032b384 | ||
|
|
d516cbf363 | ||
|
|
824274ac5e | ||
|
|
82b1c784f4 | ||
|
|
232512b860 | ||
|
|
223fa421c7 | ||
|
|
2e5e72bfcf | ||
|
|
9bdb986382 | ||
|
|
901ff30e11 | ||
|
|
5e04599212 | ||
|
|
d3c9b7ead3 | ||
|
|
361770c34b | ||
|
|
5168f3fa97 | ||
|
|
94d307e198 | ||
|
|
eba6236ad2 | ||
|
|
d0128bd989 | ||
|
|
fbd7c0ec36 | ||
|
|
55abac97ea | ||
|
|
740b94170e | ||
|
|
c6a1a09213 | ||
|
|
cd84d52398 | ||
|
|
cdbad1b397 | ||
|
|
67e227008a | ||
|
|
23cf43cac5 | ||
|
|
62a057dbfb | ||
|
|
f2ff9ae557 | ||
|
|
9ed4e46919 | ||
|
|
faa71bae40 | ||
|
|
bbd5d2cd6d | ||
|
|
221e135c07 | ||
|
|
956904c0b3 | ||
|
|
8590481022 | ||
|
|
2171d0139e | ||
|
|
71d6aca9f8 | ||
|
|
0125e279c0 | ||
|
|
b8e46ccf10 | ||
|
|
787fef1c03 | ||
|
|
98b7a6171f | ||
|
|
210f254f63 | ||
|
|
ecdccda1ce | ||
|
|
ed66ac91e0 | ||
|
|
e571165c15 | ||
|
|
1513664b5f | ||
|
|
0132d81c43 | ||
|
|
8d32da8b27 | ||
|
|
b5fbc8af86 | ||
|
|
d0166b5a5c | ||
|
|
ada77d6970 | ||
|
|
9f8758b242 | ||
|
|
5ca629ebea | ||
|
|
f9f3820652 | ||
|
|
08e61ecf19 | ||
|
|
d15f0cafce | ||
|
|
1b85253940 | ||
|
|
b329ff007e | ||
|
|
f6918d598a | ||
|
|
0cdfdd82d4 | ||
|
|
de3649dba4 | ||
|
|
9ba975ac44 | ||
|
|
2b0ea92da8 | ||
|
|
b79a1e973d | ||
|
|
1be4cf986d | ||
|
|
18c4226b90 | ||
|
|
07a5ba6857 | ||
|
|
6252d02498 | ||
|
|
11cf8c5397 | ||
|
|
1f3f4a4c85 | ||
|
|
5bfe5967db | ||
|
|
476fa25a12 | ||
|
|
792bd20fa2 | ||
|
|
26f3cd064e | ||
|
|
0556a84cbc | ||
|
|
090871625a | ||
|
|
12dedb7cff | ||
|
|
d4187e93b2 | ||
|
|
1beb1aafd8 | ||
|
|
67c4703bab | ||
|
|
d850c9c6e3 | ||
|
|
38e07b0859 | ||
|
|
ea10785160 | ||
|
|
16803b9f17 | ||
|
|
b9a0cf3f76 | ||
|
|
71ff6b14da | ||
|
|
a98b3c7e85 | ||
|
|
7259c25ece | ||
|
|
5e7154530b | ||
|
|
d501cc0a23 | ||
|
|
45606285ec | ||
|
|
a5e860a60f | ||
|
|
d93333f9ef | ||
|
|
3bd68b630a | ||
|
|
97c93a0858 | ||
|
|
8b15fe0d6a | ||
|
|
2d22a5f5b9 | ||
|
|
be63fbaada | ||
|
|
dc6b338266 | ||
|
|
9e36971151 | ||
|
|
9dc08d16b6 | ||
|
|
182a5412a5 | ||
|
|
cb15c79e4b | ||
|
|
06e6e81779 | ||
|
|
938b833954 | ||
|
|
596f069e46 | ||
|
|
e16a7f06d6 | ||
|
|
2947f2c2ff | ||
|
|
0d33039b72 | ||
|
|
682f8227fd | ||
|
|
dc1675073d | ||
|
|
d71f4eb802 | ||
|
|
e55756469d | ||
|
|
3764b705a8 |
30
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
30
.github/ISSUE_TEMPLATE/bug.yml
vendored
Normal file
@@ -0,0 +1,30 @@
|
||||
name: Bug report
|
||||
description: >
|
||||
Did you discover a bug in SABnzbd? Report it here!
|
||||
If you are not 100% certain this is a bug please go to our forums, Reddit or Discord server first.
|
||||
labels:
|
||||
- Bug
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
label: SABnzbd version
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Operating system
|
||||
validations:
|
||||
required: true
|
||||
- type: dropdown
|
||||
attributes:
|
||||
label: Using Docker image
|
||||
options:
|
||||
- linuxserver
|
||||
- hotio
|
||||
- Other
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
description: Include error logs directly or link to extended logs on https://pastebin.com/
|
||||
validations:
|
||||
required: true
|
||||
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
11
.github/ISSUE_TEMPLATE/config.yml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
blank_issues_enabled: false
|
||||
contact_links:
|
||||
- name: Support forum
|
||||
url: https://forums.sabnzbd.org/
|
||||
about: Support questions can be asked on our forums, Reddit or Discord server.
|
||||
- name: Discord
|
||||
url: https://discord.gg/KQzDe7fvNU
|
||||
about: Support questions can be asked on our forums, Reddit or Discord server.
|
||||
- name: Reddit - r/sabnzbd
|
||||
url: https://www.reddit.com/r/sabnzbd
|
||||
about: Support questions can be asked on our forums, Reddit or Discord server.
|
||||
10
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
10
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
name: Feature request
|
||||
description: What new feature would you like to have added to SABnzbd?
|
||||
labels:
|
||||
- Feature request
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Description
|
||||
validations:
|
||||
required: true
|
||||
5
.github/renovate.json
vendored
5
.github/renovate.json
vendored
@@ -8,12 +8,12 @@
|
||||
"before 8am on Monday"
|
||||
],
|
||||
"ignorePaths": [
|
||||
"tests/**",
|
||||
".github/workflows/**"
|
||||
],
|
||||
"pip_requirements": {
|
||||
"fileMatch": [
|
||||
"requirements.txt",
|
||||
"tests/requirements.txt",
|
||||
"builder/requirements.txt",
|
||||
"builder/release-requirements.txt",
|
||||
"builder/osx/requirements.txt"
|
||||
@@ -21,7 +21,8 @@
|
||||
},
|
||||
"ignoreDeps": [
|
||||
"jaraco.text",
|
||||
"sabctools"
|
||||
"sabctools",
|
||||
"werkzeug"
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
|
||||
26
.github/workflows/build_release.yml
vendored
26
.github/workflows/build_release.yml
vendored
@@ -13,10 +13,10 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up Python 3.11 (64bit)
|
||||
- name: Set up Python 3.12 (64bit)
|
||||
uses: actions/setup-python@v4
|
||||
with:
|
||||
python-version: "3.11"
|
||||
python-version: "3.12"
|
||||
architecture: "x64"
|
||||
- name: Cache Python virtualenv (64bit)
|
||||
uses: syphar/restore-virtualenv@v1.3
|
||||
@@ -63,8 +63,8 @@ jobs:
|
||||
run: |
|
||||
python --version
|
||||
python -m pip install --upgrade pip wheel
|
||||
pip install --upgrade -r requirements.txt
|
||||
pip install --upgrade -r builder/requirements.txt
|
||||
pip install --upgrade -r requirements.txt --no-dependencies
|
||||
pip install --upgrade -r builder/requirements.txt --no-dependencies
|
||||
- name: Build Windows standalone binary (32bit and legacy)
|
||||
run: python builder/package.py binary
|
||||
- name: Upload Windows standalone binary (32bit and legacy)
|
||||
@@ -81,7 +81,7 @@ jobs:
|
||||
# We need the official Python, because the GA ones only support newer macOS versions
|
||||
# The deployment target is picked up by the Python build tools automatically
|
||||
# If updated, make sure to also set LSMinimumSystemVersion in SABnzbd.spec
|
||||
PYTHON_VERSION: "3.11.5"
|
||||
PYTHON_VERSION: "3.12.1"
|
||||
MACOSX_DEPLOYMENT_TARGET: "10.9"
|
||||
# We need to force compile for universal2 support
|
||||
CFLAGS: -arch x86_64 -arch arm64
|
||||
@@ -98,10 +98,7 @@ jobs:
|
||||
if: steps.cache-python-download.outputs.cache-hit != 'true'
|
||||
run: curl https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-macos11.pkg -o ~/python.pkg
|
||||
- name: Install Python
|
||||
run: |
|
||||
sudo installer -pkg ~/python.pkg -target /
|
||||
unlink /usr/local/bin/python
|
||||
ln -s /usr/local/bin/python3 /usr/local/bin/python
|
||||
run: sudo installer -pkg ~/python.pkg -target /
|
||||
- name: Cache Python virtualenv
|
||||
uses: syphar/restore-virtualenv@v1.3
|
||||
id: cache-virtualenv
|
||||
@@ -112,19 +109,18 @@ jobs:
|
||||
# We have to manually take a few steps:
|
||||
# 1. Because building cryptography is hard, and we cannot force pip to fetch universal2 version we
|
||||
# first install the x86 version (and it's dependencies) and then manually fetch the universal2 build
|
||||
# https://github.com/pyca/cryptography/issues/5918
|
||||
# 2. Due to PyObjC we cannot run pip on the main requirements without installing dependencies
|
||||
# 3. We need to build the PyInstaller bootloader:
|
||||
# https://github.com/pypa/pip/issues/5453
|
||||
# 2. We need to build the PyInstaller bootloader:
|
||||
# https://github.com/pyinstaller/pyinstaller/issues/6235
|
||||
if: steps.cache-virtualenv.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
python3 --version
|
||||
pip3 install --upgrade pip wheel
|
||||
|
||||
pip3 install --upgrade -r requirements.txt --no-binary cffi
|
||||
|
||||
pip3 install --upgrade -r requirements.txt --no-binary cffi --no-dependencies
|
||||
|
||||
pip3 uninstall cryptography -y
|
||||
pip3 download -r builder/osx/requirements.txt --platform macosx_10_12_universal2 --only-binary :all: --no-deps --dest .
|
||||
pip3 download -r builder/osx/requirements.txt --platform macosx_10_12_universal2 --only-binary :all: --no-dependencies --dest .
|
||||
pip3 install -r builder/osx/requirements.txt --no-cache-dir --no-index --find-links .
|
||||
|
||||
PYINSTALLER_COMPILE_BOOTLOADER=1 pip3 install --upgrade -r builder/requirements.txt --no-binary pyinstaller --no-dependencies
|
||||
|
||||
6
.github/workflows/integration_testing.yml
vendored
6
.github/workflows/integration_testing.yml
vendored
@@ -31,18 +31,18 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: ["3.8", "3.9", "3.10", "3.11"]
|
||||
python-version: ["3.8", "3.9", "3.10", "3.11", "3.12"]
|
||||
python-architecture: ["x64"]
|
||||
name: ["Linux"]
|
||||
os: [ubuntu-20.04]
|
||||
include:
|
||||
- name: macOS
|
||||
os: macos-latest
|
||||
python-version: "3.11"
|
||||
python-version: "3.12"
|
||||
python-architecture: "x64"
|
||||
- name: Windows
|
||||
os: windows-latest
|
||||
python-version: "3.11"
|
||||
python-version: "3.12"
|
||||
python-architecture: "x64"
|
||||
- name: Windows (32bit)
|
||||
os: windows-latest
|
||||
|
||||
4
.github/workflows/translations.yml
vendored
4
.github/workflows/translations.yml
vendored
@@ -21,10 +21,10 @@ jobs:
|
||||
- name: Push/pull Transifex translations
|
||||
if: env.TX_TOKEN
|
||||
# Add --translation to the push command in order to update Transifex using local translation edits
|
||||
# However, this prevents modifying existing translations in Transifex as they will be overwritten by the push!
|
||||
# However, this prevents modifying existing translations in Transifex as they will be overwritten by the push!
|
||||
run: |
|
||||
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
|
||||
./tx push --source
|
||||
./tx push --source
|
||||
./tx pull --all --force
|
||||
- name: Compile translations to validate them
|
||||
run: |
|
||||
|
||||
89
README.mkd
89
README.mkd
@@ -1,44 +1,61 @@
|
||||
Release Notes - SABnzbd 4.1.0 Release Candidate 2
|
||||
Release Notes - SABnzbd 4.2.0 Release Candidate 3
|
||||
=========================================================
|
||||
|
||||
## Changes since 4.0.3
|
||||
- Added a dark mode for the Config, Login, and Wizard.
|
||||
- Added multi-select to the History.
|
||||
- Show the number of items in post-processing when in Tabbed mode.
|
||||
- Added option `verify_xff_header` to include `X-Forwarded-For` when
|
||||
validating if connections should be accepted when using a proxy.
|
||||
- Added option to purge log files from the Folders Config page.
|
||||
- Moved `Server IP address selection` and `On failure, try
|
||||
alternative NZB` to Special settings.
|
||||
- Special setting `ipv6_servers` changed to on/off.
|
||||
- Only use 7zip to unpack zip files.
|
||||
- Windows: Added option `enable_multipar` to use par2cmdline-turbo
|
||||
instead of Multipar for verification and repair. It is faster,
|
||||
but on Windows it can fail on special (UTF8) filenames.
|
||||
- macOS: Switched to par2cmdline-turbo for verification and repair.
|
||||
- Linux: Detect more recent versions of 7zip.
|
||||
- Windows: Use `All Users` locations during installtion of shortcuts.
|
||||
- Windows/macOS: Updated Python to 3.11.5, 7Zip to 23.01 and
|
||||
UnRar to 6.23. All these updates include security fixes.
|
||||
This is the third pre-release build of SABnzbd 4.2.0, which includes several new features and bug fixes.
|
||||
|
||||
## Bugfixes since 4.0.3
|
||||
- Series duplicate detection did not detect duplicates.
|
||||
- Sorting would append `.1` to some filenames.
|
||||
- Not all API-keys were removed during log-sanitization.
|
||||
- In certain situations, not all data would be written to disk.
|
||||
- Folder names could be sanitized too eagerly.
|
||||
- Some articles would fail to decode.
|
||||
- QuickCheck could wrongly rename files with identical content.
|
||||
- Warning about `Scripts Folder` location was triggered incorrectly.
|
||||
## Key changes since 4.1.0
|
||||
|
||||
* **Duplicate detection workflow was overhauled:**
|
||||
* `Series Duplicate Detection` was replaced by `Smart Duplicate Detection`
|
||||
that can also detect `Movie` and `Daily Show` duplicates.
|
||||
* Additionally, duplicates will also be detected if they are still in the queue.
|
||||
* More information: https://sabnzbd.org/wiki/duplicate-detection
|
||||
|
||||
* **Interface changes:**
|
||||
* Added ability to filter the Queue and History by `status`.
|
||||
* RSS-feed that provided the download is shown in History details.
|
||||
* macOS/Windows 10 & 11: Added `Open Folder` button to `Job/Queue finished` notifications.
|
||||
Clicking any type of notification will now open a browser with SABnzbd.
|
||||
|
||||
* **Performance and usability improvements:**
|
||||
* Numerous smaller performance improvements were made.
|
||||
* Server IP-address selection was optimized.
|
||||
* The `Internet Bandwidth` test was made more reliable.
|
||||
* macOS/Windows: Updated to Python 3.12.
|
||||
|
||||
* **Configuration changes:**
|
||||
* The `On queue finish script` is now set in Switches.
|
||||
* Reduced recursive unpacking to 2 levels, instead of 5.
|
||||
* Duplicate detection related Pre-queue script input parameters were removed.
|
||||
You will need to update your Pre-queue script.
|
||||
More information: https://sabnzbd.org/wiki/configuration/4.2/scripts/pre-queue-scripts
|
||||
* Stricter check if `Complete Folder` is inside `Download Folder`.
|
||||
* Windows: Prevent use of network drive as `Download Folder`.
|
||||
|
||||
## Bug fixes since 4.1.0
|
||||
|
||||
* Fixed an issue where the multi-select option in the queue was not working for some users.
|
||||
* Prevented a crash that would occur during the saving of configuration settings.
|
||||
* Jobs with larger articles could stall the queue for several minutes.
|
||||
* Ensured that server warnings are always displayed to users.
|
||||
* If `weblogging` was enabled, output was also written to regular log.
|
||||
* Fixed an issue where removing a failed download from the History could break active downloads.
|
||||
|
||||
## Upgrade notices
|
||||
|
||||
* You can directly upgrade from version 3.0.0 and newer.
|
||||
* Upgrading from older versions will require performing a `Queue repair`.
|
||||
* Downgrading from version 4.2.0 or newer to 3.7.2 or older will require
|
||||
performing a `Queue repair` due to changes in the internal data format.
|
||||
|
||||
## Known problems and solutions
|
||||
- Read the file "ISSUES.txt"
|
||||
|
||||
* Read `ISSUES.txt` or https://sabnzbd.org/wiki/introduction/known-issues
|
||||
|
||||
## About
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
It simplifies the process of downloading from Usenet dramatically, thanks
|
||||
to its web-based user interface and advanced built-in post-processing options
|
||||
that automatically verify, repair, extract and clean up posts downloaded
|
||||
from Usenet.
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
It simplifies the process of downloading from Usenet dramatically, thanks to its web-based
|
||||
user interface and advanced built-in post-processing options that automatically verify, repair,
|
||||
extract and clean up posts downloaded from Usenet.
|
||||
|
||||
(c) Copyright 2007-2023 by The SABnzbd-Team (sabnzbd.org)
|
||||
(c) Copyright 2007-2023 by The SABnzbd-Team (sabnzbd.org)
|
||||
|
||||
40
SABnzbd.py
40
SABnzbd.py
@@ -752,26 +752,9 @@ def commandline_handler():
|
||||
serv_opts = [os.path.normpath(os.path.abspath(sys.argv[0]))]
|
||||
upload_nzbs = []
|
||||
|
||||
# macOS binary: get rid of the weird -psn_0_123456 parameter
|
||||
for arg in sys.argv:
|
||||
if arg.startswith("-psn_"):
|
||||
sys.argv.remove(arg)
|
||||
break
|
||||
|
||||
# Ugly hack to remove the extra "SABnzbd*" parameter the Windows binary
|
||||
# gets when it's restarted
|
||||
if len(sys.argv) > 1 and "sabnzbd" in sys.argv[1].lower() and not sys.argv[1].startswith("-"):
|
||||
slice_start = 2
|
||||
else:
|
||||
slice_start = 1
|
||||
|
||||
# Prepend options from env-variable to options
|
||||
info = os.environ.get("SABnzbd", "").split()
|
||||
info.extend(sys.argv[slice_start:])
|
||||
|
||||
try:
|
||||
opts, args = getopt.getopt(
|
||||
info,
|
||||
sys.argv[1:],
|
||||
"phdvncwl:s:f:t:b:2:",
|
||||
[
|
||||
"pause",
|
||||
@@ -854,7 +837,7 @@ def main():
|
||||
|
||||
autobrowser = None
|
||||
autorestarted = False
|
||||
sabnzbd.MY_FULLNAME = sys.argv[0]
|
||||
sabnzbd.MY_FULLNAME = __file__
|
||||
sabnzbd.MY_NAME = os.path.basename(sabnzbd.MY_FULLNAME)
|
||||
fork = False
|
||||
pause = False
|
||||
@@ -922,6 +905,7 @@ def main():
|
||||
exit_sab(1)
|
||||
elif opt == "--console":
|
||||
console_logging = True
|
||||
sabnzbd.RESTART_ARGS.append(opt)
|
||||
elif opt in ("-v", "--version"):
|
||||
print_version()
|
||||
exit_sab(0)
|
||||
@@ -966,7 +950,7 @@ def main():
|
||||
org_dir = os.getcwd()
|
||||
|
||||
# Need console logging if requested, for SABnzbd.py and SABnzbd-console.exe
|
||||
console_logging = console_logging or sabnzbd.MY_NAME.lower().find("-console") > 0 or not hasattr(sys, "frozen")
|
||||
console_logging = console_logging or sys.executable.endswith("console.exe") or not hasattr(sys, "frozen")
|
||||
console_logging = console_logging and not sabnzbd.DAEMON
|
||||
|
||||
LOGLEVELS = (logging.FATAL, logging.WARNING, logging.INFO, logging.DEBUG)
|
||||
@@ -1365,7 +1349,6 @@ def main():
|
||||
"server.socket_host": cherryhost,
|
||||
"server.socket_port": cherryport,
|
||||
"server.shutdown_timeout": 0,
|
||||
"log.screen": False,
|
||||
"engine.autoreload.on": False,
|
||||
"tools.encode.on": True,
|
||||
"tools.gzip.on": True,
|
||||
@@ -1377,13 +1360,11 @@ def main():
|
||||
)
|
||||
|
||||
# Do we want CherryPy Logging? Cannot be done via the config
|
||||
cherrypy.log.screen = False
|
||||
cherrypy.log.access_log.propagate = False
|
||||
if cherrypylogging:
|
||||
sabnzbd.WEBLOGFILE = os.path.join(logdir, DEF_LOG_CHERRY)
|
||||
cherrypy.log.screen = True
|
||||
cherrypy.log.access_log.propagate = True
|
||||
cherrypy.log.access_file = str(sabnzbd.WEBLOGFILE)
|
||||
else:
|
||||
cherrypy.log.access_log.propagate = False
|
||||
|
||||
# Force mimetypes (OS might overwrite them)
|
||||
forced_mime_types = {"css": "text/css", "js": "application/javascript"}
|
||||
@@ -1596,9 +1577,8 @@ def main():
|
||||
if hasattr(sys, "frozen"):
|
||||
if sabnzbd.MACOS:
|
||||
# On macOS restart of app instead of embedded python
|
||||
my_name = sabnzbd.MY_FULLNAME.replace("/Contents/MacOS/SABnzbd", "")
|
||||
my_args = " ".join(sys.argv[1:])
|
||||
cmd = 'kill -9 %s && open "%s" --args %s' % (os.getpid(), my_name, my_args)
|
||||
cmd = 'kill -9 %s && open "%s" --args %s' % (os.getpid(), sys.executable, my_args)
|
||||
logging.info("Launching: %s", cmd)
|
||||
os.system(cmd)
|
||||
elif sabnzbd.WIN_SERVICE:
|
||||
@@ -1782,10 +1762,10 @@ if __name__ == "__main__":
|
||||
|
||||
# Initialize the menu
|
||||
shared_app = NSApplication.sharedApplication()
|
||||
sabnzbd_menu = SABnzbdDelegate.alloc().init()
|
||||
shared_app.setDelegate_(sabnzbd_menu)
|
||||
sabnzbd.MACOSTRAY = SABnzbdDelegate.alloc().init()
|
||||
shared_app.setDelegate_(sabnzbd.MACOSTRAY)
|
||||
# Build the menu
|
||||
sabnzbd_menu.awakeFromNib()
|
||||
sabnzbd.MACOSTRAY.awakeFromNib()
|
||||
# Run the main eventloop
|
||||
AppHelper.runEventLoop()
|
||||
else:
|
||||
|
||||
@@ -96,7 +96,7 @@ pyi_analysis = Analysis(
|
||||
["SABnzbd.py"],
|
||||
datas=extra_pyinstaller_files,
|
||||
hiddenimports=extra_hiddenimports,
|
||||
excludes=["ujson", "FixTk", "tcl", "tk", "_tkinter", "tkinter", "Tkinter"],
|
||||
excludes=["ujson", "FixTk", "tcl", "tk", "_tkinter", "tkinter", "Tkinter", "pydoc", "pydoc_data.topics"],
|
||||
)
|
||||
|
||||
pyz = PYZ(pyi_analysis.pure, pyi_analysis.zipped_data)
|
||||
@@ -113,10 +113,10 @@ exe = EXE(
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="SABnzbd",
|
||||
upx=True,
|
||||
console=False,
|
||||
append_pkg=False,
|
||||
icon="icons/sabnzbd.ico",
|
||||
contents_directory=".",
|
||||
version=version_info,
|
||||
target_arch="universal2",
|
||||
entitlements_file="builder/osx/entitlements.plist",
|
||||
@@ -134,9 +134,9 @@ if sys.platform == "win32":
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="SABnzbd-console",
|
||||
upx=True,
|
||||
append_pkg=False,
|
||||
icon="icons/sabnzbd.ico",
|
||||
contents_directory=".",
|
||||
version=version_info,
|
||||
)
|
||||
|
||||
@@ -145,7 +145,6 @@ if sys.platform == "win32":
|
||||
pyi_analysis.binaries,
|
||||
pyi_analysis.zipfiles,
|
||||
pyi_analysis.datas,
|
||||
upx=True,
|
||||
name="SABnzbd-console",
|
||||
)
|
||||
|
||||
|
||||
@@ -1,3 +1,3 @@
|
||||
# Special requirements for macOS universal2 binary release
|
||||
# This way dependabot can auto-update them
|
||||
cryptography==41.0.3
|
||||
cryptography==41.0.7
|
||||
@@ -58,11 +58,16 @@ def safe_remove(path):
|
||||
os.remove(path)
|
||||
|
||||
|
||||
def delete_files_glob(name):
|
||||
"""Delete one file or set of files from wild-card spec"""
|
||||
for f in glob.glob(name):
|
||||
if os.path.exists(f):
|
||||
os.remove(f)
|
||||
def delete_files_glob(glob_pattern: str, allow_no_matches: bool = False):
|
||||
"""Delete one file or set of files from wild-card spec.
|
||||
We expect to match at least 1 file, to force expected behavior"""
|
||||
if files_to_remove := glob.glob(glob_pattern):
|
||||
for path in files_to_remove:
|
||||
if os.path.exists(path):
|
||||
os.remove(path)
|
||||
else:
|
||||
if not allow_no_matches:
|
||||
raise FileNotFoundError(f"No files found that match '{glob_pattern}'")
|
||||
|
||||
|
||||
def run_external_command(command: List[str], print_output: bool = True):
|
||||
@@ -211,8 +216,10 @@ if __name__ == "__main__":
|
||||
|
||||
# Check what architecture we are on
|
||||
RELEASE_BINARY = RELEASE_BINARY_32
|
||||
BUILDING_64BIT = False
|
||||
if platform.architecture()[0] == "64bit":
|
||||
RELEASE_BINARY = RELEASE_BINARY_64
|
||||
BUILDING_64BIT = True
|
||||
|
||||
# Remove any leftovers
|
||||
safe_remove(RELEASE_BINARY)
|
||||
@@ -224,17 +231,20 @@ if __name__ == "__main__":
|
||||
safe_remove("dist/SABnzbd-console")
|
||||
|
||||
# Remove unwanted DLL's
|
||||
delete_files_glob("dist/SABnzbd/api-ms-win*.dll")
|
||||
delete_files_glob("dist/SABnzbd/mfc140u.dll")
|
||||
delete_files_glob("dist/SABnzbd/ucrtbase.dll")
|
||||
shutil.rmtree("dist/SABnzbd/Pythonwin")
|
||||
if BUILDING_64BIT:
|
||||
# These are only present on 64bit (Python 3.9+)
|
||||
delete_files_glob("dist/SABnzbd/api-ms-win*.dll", allow_no_matches=True)
|
||||
delete_files_glob("dist/SABnzbd/ucrtbase.dll", allow_no_matches=True)
|
||||
|
||||
# Remove other files we don't need
|
||||
delete_files_glob("dist/SABnzbd/win32ui.pyd")
|
||||
delete_files_glob("dist/SABnzbd/winxpgui.pyd")
|
||||
# Remove 32bit external executables
|
||||
delete_files_glob("dist/SABnzbd/win/par2/par2.exe")
|
||||
delete_files_glob("dist/SABnzbd/win/multipar/par2j.exe")
|
||||
delete_files_glob("dist/SABnzbd/win/unrar/UnRAR.exe")
|
||||
|
||||
if "installer" in sys.argv:
|
||||
# Needs to be run on 64 bit
|
||||
if RELEASE_BINARY != RELEASE_BINARY_64:
|
||||
if not BUILDING_64BIT:
|
||||
raise RuntimeError("Installer should be created on 64bit Python")
|
||||
|
||||
# Compile NSIS translations
|
||||
@@ -243,11 +253,6 @@ if __name__ == "__main__":
|
||||
shutil.copyfile("builder/win/NSIS_Installer.nsi", "NSIS_Installer.nsi")
|
||||
run_external_command([sys.executable, "tools/make_mo.py", "nsis"])
|
||||
|
||||
# Remove 32bit external executables
|
||||
delete_files_glob("dist/SABnzbd/win/par2/par2.exe")
|
||||
delete_files_glob("dist/SABnzbd/win/multipar/par2j.exe")
|
||||
delete_files_glob("dist/SABnzbd/win/unrar/UnRAR.exe")
|
||||
|
||||
# Run NSIS to build installer
|
||||
run_external_command(
|
||||
[
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
PyGithub==1.59.1
|
||||
PyGithub==2.1.1
|
||||
praw==7.7.1
|
||||
@@ -19,7 +19,6 @@ import hashlib
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import shutil
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
import github
|
||||
@@ -239,19 +238,24 @@ if RELEASE_THIS and gh_token:
|
||||
# Use the header in the readme as title
|
||||
title = readme_lines[0]
|
||||
release_notes_text = "".join(readme_lines[2:])
|
||||
print("Posting release notes to Reddit")
|
||||
|
||||
# Only stable releases to r/usenet
|
||||
if not PRERELEASE:
|
||||
print("Posting release notes to Reddit: r/usenet")
|
||||
submission = subreddit_usenet.submit(title, selftext=release_notes_text)
|
||||
# Get correct flair-id (required by r/usenet)
|
||||
for flair in subreddit_usenet.flair.link_templates.user_selectable():
|
||||
if flair["flair_text"] == "News":
|
||||
print("Posting to r/usenet")
|
||||
submission = subreddit_usenet.submit(
|
||||
title, selftext=release_notes_text, flair_id=flair["flair_template_id"]
|
||||
)
|
||||
break
|
||||
else:
|
||||
raise ValueError("Could not locate flair_text for posting to r/usenet")
|
||||
|
||||
# Cross-post to r/SABnzbd
|
||||
print("Cross-posting release notes to Reddit: r/sabnzbd")
|
||||
submission.crosspost(subreddit_sabnzbd)
|
||||
else:
|
||||
# Post always to r/SABnzbd
|
||||
print("Posting release notes to Reddit: r/sabnzbd")
|
||||
subreddit_sabnzbd.submit(title, selftext=release_notes_text)
|
||||
# Post always to r/SABnzbd
|
||||
print("Posting to r/sabnzbd")
|
||||
subreddit_sabnzbd.submit(title, selftext=release_notes_text)
|
||||
|
||||
else:
|
||||
print("Missing REDDIT_TOKEN")
|
||||
|
||||
@@ -1,15 +1,20 @@
|
||||
# Basic build requirements
|
||||
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
|
||||
pyinstaller==5.13.2
|
||||
pyinstaller-hooks-contrib==2023.8
|
||||
altgraph==0.17.3
|
||||
wrapt==1.15.0
|
||||
setuptools==68.2.2
|
||||
pyinstaller==6.3.0
|
||||
packaging==23.2
|
||||
pyinstaller-hooks-contrib==2023.10
|
||||
altgraph==0.17.4
|
||||
wrapt==1.16.0
|
||||
setuptools==69.0.2
|
||||
certifi
|
||||
|
||||
# orjson does not support 32bit Windows, exclude it based on Python-version
|
||||
# This way we also test ujson on Python 3.8 in the CI-tests
|
||||
orjson==3.9.7; python_version > '3.8'
|
||||
# Required on 32bit Windows, exclude it based on Python-version
|
||||
importlib_metadata==7.0.0; python_version < '3.10'
|
||||
importlib_resources==6.1.1; python_version < '3.10'
|
||||
zipp==3.17.0; python_version < '3.10'
|
||||
|
||||
# orjson does not support 32bit Windows, also exclude based on Python-version
|
||||
orjson==3.9.10; python_version > '3.8'
|
||||
|
||||
# For the Windows build
|
||||
pefile==2023.2.7; sys_platform == 'win32'
|
||||
@@ -18,6 +23,6 @@ pywin32-ctypes==0.2.2; sys_platform == 'win32'
|
||||
# For the macOS build
|
||||
dmgbuild==1.6.1; sys_platform == 'darwin'
|
||||
mac-alias==2.2.2; sys_platform == 'darwin'
|
||||
macholib==1.16.2; sys_platform == 'darwin'
|
||||
macholib==1.16.3; sys_platform == 'darwin'
|
||||
ds-store==1.3.1; sys_platform == 'darwin'
|
||||
PyNaCl==1.5.0; sys_platform == 'darwin'
|
||||
|
||||
@@ -200,9 +200,14 @@ Section "SABnzbd" SecDummy
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLUpdateInfo" 'https://sabnzbd.org/'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Comments" 'The automated Usenet download tool'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayIcon" '$INSTDIR\icons\sabnzbd.ico'
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 25674
|
||||
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 40674
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoRepair" -1
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoModify" -1
|
||||
|
||||
WriteRegStr HKEY_CURRENT_USER "Software\Classes\AppUserModelId\SABnzbd" "DisplayName" "SABnzbd"
|
||||
WriteRegStr HKEY_CURRENT_USER "Software\Classes\AppUserModelId\SABnzbd" "IconUri" '$INSTDIR\icons\sabnzbd16_32.ico'
|
||||
|
||||
; write out uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
@@ -348,6 +353,8 @@ Section "un.$(MsgDelProgram)" Uninstall
|
||||
Delete "$INSTDIR\uninstall.exe"
|
||||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd"
|
||||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd"
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\Classes\AppUserModelId\SABnzbd"
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
|
||||
|
||||
${RemovePrev} "$INSTDIR"
|
||||
|
||||
@@ -383,8 +390,6 @@ Section "un.$(MsgDelProgram)" Uninstall
|
||||
|
||||
Delete "$DESKTOP\SABnzbd.lnk"
|
||||
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
|
||||
|
||||
${unregisterExtension} ".nzb" "NZB File"
|
||||
${RefreshShellIcons}
|
||||
|
||||
|
||||
@@ -88,8 +88,8 @@
|
||||
<td><a href="https://github.com/sabnzbd/sabnzbd" target="_blank">https://github.com/sabnzbd/sabnzbd</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">$T('menu-irc') </th>
|
||||
<td><a href="irc://irc.synirc.net/#sabnzbd"><i>#sabnzbd</i> on <i>irc.synirc.net</i></a> $T('or') (<a href="http://sabnzbd.org/live-chat/" target="_blank">webchat</a>)</td>
|
||||
<th scope="row">$T('menu-live-chat') </th>
|
||||
<td><a href="https://sabnzbd.org/live-chat/" target="_blank">https://sabnzbd.org/live-chat/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">$T('menu-issues') </th>
|
||||
|
||||
@@ -122,7 +122,7 @@
|
||||
update: function(event, ui) {
|
||||
jQuery('.Categories form.sorting-row').each(function(index, elm) {
|
||||
// Update order of all elements
|
||||
if(index != elm.order.value) {
|
||||
if(index !== elm.order.value) {
|
||||
elm.order.value = index
|
||||
// Submit changed order
|
||||
var data = {}
|
||||
|
||||
@@ -267,7 +267,7 @@
|
||||
jQuery(document).ready(function(){
|
||||
// Show the message about translating when it's non-English
|
||||
function hideOrShowTranslate() {
|
||||
if(jQuery('#language').val() == 'en') {
|
||||
if(jQuery('#language').val() === 'en') {
|
||||
jQuery('.alert-translate').hide()
|
||||
} else {
|
||||
jQuery('.alert-translate').show()
|
||||
@@ -290,7 +290,7 @@ jQuery(document).ready(function(){
|
||||
// So when exposed to internet and no password, no external limit or no username/password
|
||||
var safeCheck = jQuery('#host, #inet_exposure, #${pid}_wu, #${pid}_wp')
|
||||
function checkSafety() {
|
||||
if(jQuery('#host').val() != 'localhost' && jQuery('#host').val() != '127.0.0.1') {
|
||||
if(jQuery('#host').val() !== 'localhost' && jQuery('#host').val() !== '127.0.0.1') {
|
||||
// No limitation on local-network
|
||||
if(jQuery('#inet_exposure').val() > 3) {
|
||||
// And no username and password?
|
||||
@@ -375,7 +375,7 @@ jQuery(document).ready(function(){
|
||||
})
|
||||
|
||||
// Only allow re-generate if default certs
|
||||
if(jQuery('#https_cert').val() != '$def_https_cert_file') {
|
||||
if(jQuery('#https_cert').val() !== '$def_https_cert_file') {
|
||||
jQuery('.generate_cert').attr('disabled', 'disabled')
|
||||
}
|
||||
|
||||
|
||||
@@ -202,7 +202,7 @@
|
||||
<div class="field-pair">
|
||||
<label class="config" for="nscript_parameters">$T('opt-nscript_parameters')</label>
|
||||
<input type="text" name="nscript_parameters" id="nscript_parameters" value="$nscript_parameters" />
|
||||
<span class="desc">$T('Optional') - $T('explain-nscript_parameters')</span>
|
||||
<span class="desc">$T('Optional') - $T('readwiki')</span>
|
||||
</div>
|
||||
$show_notify_checkboxes('nscript')
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
|
||||
@@ -616,7 +616,7 @@ jQuery(document).ready(function(){
|
||||
|
||||
// Only the Accept filter needs all the options
|
||||
jQuery('form[action="upd_rss_filter"]').find('select[name="filter_type"]').change(function() {
|
||||
jQuery(this).parent().parent().find('select:not([name="filter_type"])').attr('disabled', jQuery(this).val() != "A" && jQuery(this).val() != "S")
|
||||
jQuery(this).parent().parent().find('select:not([name="filter_type"])').attr('disabled', jQuery(this).val() !== "A" && jQuery(this).val() !== "S")
|
||||
})
|
||||
// Trigger on-load for all
|
||||
jQuery('.disabled_options_rule').find('td select:not([name="filter_type"])').attr('disabled', true)
|
||||
|
||||
@@ -117,7 +117,7 @@ else:
|
||||
jQuery('#arguments').val((jQuery(this).find('option:selected').data('action')))
|
||||
|
||||
// Is it speedlimit?
|
||||
if(jQuery(this).find('option:selected').val() == 'speedlimit') {
|
||||
if(jQuery(this).find('option:selected').val() === 'speedlimit') {
|
||||
jQuery('#hidden_arguments').show()
|
||||
jQuery('#hidden_arguments input').attr('placeholder', 'Bytes/s, "1M" = 1 MB/s, "500K" = 500 KB/s')
|
||||
} else {
|
||||
|
||||
@@ -525,13 +525,13 @@
|
||||
var portBox = jQuery(this).parent().parent().find('[name="port"]')
|
||||
if(this.checked) {
|
||||
// Enabled SSL change port when not already a custom port
|
||||
if(portBox.val() == '119') {
|
||||
if(portBox.val() === '119') {
|
||||
portBox.val('563')
|
||||
portBox.addClass('port-highlight')
|
||||
}
|
||||
} else {
|
||||
// Remove SSL port
|
||||
if(portBox.val() == '563') {
|
||||
if(portBox.val() === '563') {
|
||||
portBox.val('119')
|
||||
portBox.addClass('port-highlight')
|
||||
}
|
||||
@@ -615,14 +615,14 @@
|
||||
function receiveMessage(event) {
|
||||
// Check origin of message for security reasons
|
||||
if(event.origin === 'https://sabnzbd.org') {
|
||||
if(event.data == 'show_server') {
|
||||
if(event.data === 'show_server') {
|
||||
jQuery('.Servers .server-frame').show()
|
||||
jQuery('.Servers .server-frame a').click(function () {
|
||||
localStorage.setItem("server-frame-hide-$version", "hide")
|
||||
jQuery('.Servers .server-frame').hide()
|
||||
})
|
||||
}
|
||||
if(event.data == 'hide_server') {
|
||||
if(event.data === 'hide_server') {
|
||||
// Hide and don't load anymore untill the next release
|
||||
jQuery('.Servers .server-frame').hide()
|
||||
localStorage.setItem("server-frame-hide-$version", "hide")
|
||||
|
||||
@@ -1,12 +1,11 @@
|
||||
<!--#set global $pane="Sorting"#-->
|
||||
<!--#set global $help_uri = $confighelpuri + "sorting"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="padTable section explain-sorting">
|
||||
<a class="main-helplink" href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
|
||||
$T('explain-sorting')
|
||||
</div>
|
||||
<div class="colmask">
|
||||
<div class="padTable section">
|
||||
<a class="main-helplink" href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
|
||||
$T('explain-sorting')
|
||||
</div>
|
||||
<div class="padding alt section">
|
||||
<button type="button" class="btn btn-default addSorter"><span class="glyphicon glyphicon-plus"></span> $T('add-sorter')</button>
|
||||
<label for="advanced-settings-button" class="form-control advanced-button ">
|
||||
@@ -345,7 +344,7 @@
|
||||
</div>
|
||||
|
||||
<!--#if len($slotinfo) == 1 and ("tv" in $categories or "movies" in $categories)#-->
|
||||
<div class="section align-center alt sorting-quick-setup">
|
||||
<div class="section align-center sorting-quick-setup">
|
||||
<h3>$T('sort-quick-add'):</h3>
|
||||
<!--#if "tv" in $categories#-->
|
||||
<form action="save_sorter" method="post" autocomplete="off">
|
||||
@@ -493,7 +492,7 @@
|
||||
update: function(event, ui) {
|
||||
jQuery('.Sorting form.sorting-row').each(function(index, elm) {
|
||||
// Update order of all elements
|
||||
if(index != elm.order.value) {
|
||||
if(index !== elm.order.value) {
|
||||
elm.order.value = index
|
||||
// Submit changed order
|
||||
var data = {}
|
||||
|
||||
@@ -41,7 +41,7 @@
|
||||
</div><!-- /col2 -->
|
||||
<div class="col1">
|
||||
<fieldset>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="pre_script">$T('opt-pre_script')</label>
|
||||
<select name="pre_script" id="pre_script">
|
||||
<!--#for $sc in $scripts#-->
|
||||
@@ -54,6 +54,19 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-pre_script')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="end_queue_script">$T('opt-end_queue_script')</label>
|
||||
<select name="end_queue_script" id="end_queue_script">
|
||||
<!--#for $sc in $scripts#-->
|
||||
<!--#if $sc.lower() == $end_queue_script.lower()#-->
|
||||
<option value="$sc" selected="selected">$Tspec($sc)</option>
|
||||
<!--#else#-->
|
||||
<option value="$sc">$Tspec($sc)</option>
|
||||
<!--#end if#-->
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
<span class="desc">$T('explain-end_queue_script')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="propagation_delay">$T('opt-propagation_delay')</label>
|
||||
<input type="number" name="propagation_delay" id="propagation_delay" value="$propagation_delay" /> <i>$T('minutes')</i>
|
||||
@@ -83,23 +96,29 @@
|
||||
<option value="3" <!--#if int($no_dupes) == 3 then 'selected="selected"' else ""#--> >$T('nodupes-fail')</option>
|
||||
<option value="1" <!--#if int($no_dupes) == 1 then 'selected="selected"' else ""#--> >$T('nodupes-ignore')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-no_dupes')</span>
|
||||
<span class="desc">
|
||||
$T('explain-no_dupes')<br>
|
||||
<a href="https://sabnzbd.org/wiki/duplicate-detection" target="_blank">https://sabnzbd.org/wiki/duplicate-detection</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="no_series_dupes">$T('opt-no_series_dupes')</label>
|
||||
<select name="no_series_dupes" id="no_series_dupes">
|
||||
<option value="0" <!--#if int($no_series_dupes) == 0 then 'selected="selected"' else ""#--> >$T('nodupes-off')</option>
|
||||
<option value="4" <!--#if int($no_series_dupes) == 4 then 'selected="selected"' else ""#--> >$T('nodupes-tag')</option>
|
||||
<option value="2" <!--#if int($no_series_dupes) == 2 then 'selected="selected"' else ""#--> >$T('nodupes-pause')</option>
|
||||
<option value="3" <!--#if int($no_series_dupes) == 3 then 'selected="selected"' else ""#--> >$T('nodupes-fail')</option>
|
||||
<option value="1" <!--#if int($no_series_dupes) == 1 then 'selected="selected"' else ""#--> >$T('nodupes-ignore')</option>
|
||||
<label class="config" for="no_smart_dupes">$T('opt-no_smart_dupes')</label>
|
||||
<select name="no_smart_dupes" id="no_smart_dupes">
|
||||
<option value="0" <!--#if int($no_smart_dupes) == 0 then 'selected="selected"' else ""#--> >$T('nodupes-off')</option>
|
||||
<option value="4" <!--#if int($no_smart_dupes) == 4 then 'selected="selected"' else ""#--> >$T('nodupes-tag')</option>
|
||||
<option value="2" <!--#if int($no_smart_dupes) == 2 then 'selected="selected"' else ""#--> >$T('nodupes-pause')</option>
|
||||
<option value="3" <!--#if int($no_smart_dupes) == 3 then 'selected="selected"' else ""#--> >$T('nodupes-fail')</option>
|
||||
<option value="1" <!--#if int($no_smart_dupes) == 1 then 'selected="selected"' else ""#--> >$T('nodupes-ignore')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-no_series_dupes')</span>
|
||||
<span class="desc">
|
||||
$T('explain-no_smart_dupes')<br>
|
||||
<a href="https://sabnzbd.org/wiki/duplicate-detection" target="_blank">https://sabnzbd.org/wiki/duplicate-detection</a>
|
||||
</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="series_propercheck">$T('opt-series_propercheck')</label>
|
||||
<input type="checkbox" name="series_propercheck" id="series_propercheck" value="1" <!--#if int($series_propercheck) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-series_propercheck')</span>
|
||||
<label class="config" for="dupes_propercheck">$T('opt-dupes_propercheck')</label>
|
||||
<input type="checkbox" name="dupes_propercheck" id="dupes_propercheck" value="1" <!--#if int($dupes_propercheck) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-dupes_propercheck')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="pause_on_pwrar">$T('opt-pause_on_pwrar')</label>
|
||||
@@ -174,12 +193,12 @@
|
||||
<div class="field-pair advanced-settings <!--#if not $have_nice then "disabled" else "" #-->">
|
||||
<label class="config" for="nice">$T('opt-nice')</label>
|
||||
<input type="text" name="nice" id="nice" value="$nice" <!--#if not $have_nice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-nice')</span>
|
||||
<span class="desc">$T('readwiki')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings <!--#if not $have_ionice then "disabled" else "" #-->">
|
||||
<label class="config" for="ionice">$T('opt-ionice')</label>
|
||||
<input type="text" name="ionice" id="ionice" value="$ionice" <!--#if not $have_ionice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-ionice')</span>
|
||||
<span class="desc">$T('readwiki')</span>
|
||||
</div>
|
||||
<!--#else#-->
|
||||
<div class="field-pair advanced-settings">
|
||||
@@ -191,13 +210,13 @@
|
||||
<option value="2" <!--#if int($win_process_prio) == 2 then 'selected="selected"' else ""#-->>$T('win_process_prio-low')</option>
|
||||
<option value="1" <!--#if int($win_process_prio) == 1 then 'selected="selected"' else ""#-->>$T('win_process_prio-idle')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-win_process_prio')</span>
|
||||
<span class="desc">$T('readwiki')</span>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="par_option">$T('opt-par_option')</label>
|
||||
<input type="text" name="par_option" id="par_option" value="$par_option" />
|
||||
<span class="desc">$T('explain-par_option')</span>
|
||||
<span class="desc">$T('readwiki')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="sfv_check">$T('opt-sfv_check')</label>
|
||||
@@ -346,7 +365,7 @@ jQuery(document).ready(function() {
|
||||
var retention_select = jQuery('#history_retention_select').val()
|
||||
var retention_number = jQuery('#history_retention_number')
|
||||
// Keep all or keep none
|
||||
if(retention_select == "0" || retention_select == "-1") {
|
||||
if(retention_select === "0" || retention_select === "-1") {
|
||||
retention_number.hide()
|
||||
retention_number.val('')
|
||||
retention_number.attr('placeholder', '')
|
||||
|
||||
@@ -107,7 +107,6 @@ select.form-control,
|
||||
.navbar-default,
|
||||
.search-box input,
|
||||
.select,
|
||||
.Sorting .explain-sorting,
|
||||
.table-striped>tbody>tr:nth-child(even),
|
||||
.table>tbody>tr:nth-child(even),
|
||||
.tab-pane tr:nth-child(odd),
|
||||
|
||||
@@ -359,10 +359,6 @@ tr.separator {
|
||||
margin: 5px;
|
||||
}
|
||||
|
||||
.Sorting .explain-sorting {
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
}
|
||||
.Sorting .explain-pattern {
|
||||
border: none;
|
||||
width: 100%;
|
||||
|
||||
@@ -109,13 +109,13 @@
|
||||
// Remove start
|
||||
self.currentBrowserPath = self.currentBrowserPath.replace(self.element.data('initialdir')+folderSeperator, '');
|
||||
// If it's identical to the initial dir the replacement won't work
|
||||
if(self.currentBrowserPath == self.element.data('initialdir')) {
|
||||
if(self.currentBrowserPath === self.element.data('initialdir')) {
|
||||
self.currentBrowserPath = '';
|
||||
}
|
||||
}
|
||||
|
||||
// Changed?
|
||||
if(self.element.val() != self.currentBrowserPath) {
|
||||
if(self.element.val() !== self.currentBrowserPath) {
|
||||
self.element.val(self.currentBrowserPath);
|
||||
formHasChanged = true;
|
||||
}
|
||||
@@ -157,7 +157,7 @@
|
||||
var list = $('<div class="list-group">').appendTo(self.fileBrowserDialog);
|
||||
$.each(data.paths, function (i, entry) {
|
||||
// Title for first one
|
||||
if(i == 0) {
|
||||
if(i === 0) {
|
||||
self.fileBrowserDialog.prepend($('<h4>').text(entry.current_path))
|
||||
return
|
||||
}
|
||||
@@ -166,7 +166,7 @@
|
||||
self.browse(entry.path, endpoint); }
|
||||
).text(entry.name);
|
||||
// Back image
|
||||
if(entry.name == '..') {
|
||||
if(entry.name === '..') {
|
||||
$('<span class="glyphicon glyphicon-arrow-left"></span> ').prependTo(link);
|
||||
} else {
|
||||
$('<span class="glyphicon glyphicon-folder-open"></span> ').prependTo(link);
|
||||
@@ -239,8 +239,8 @@ function do_restart() {
|
||||
$('.main-restarting').show()
|
||||
|
||||
// What template
|
||||
var switchedHTTPS = ($('#enable_https').is(':checked') == ($('#enable_https').data('original') === undefined))
|
||||
var portsUnchanged = ($('#port').val() == $('#port').data('original')) && ($('#https_port').val() == $('#https_port').data('original'))
|
||||
var switchedHTTPS = ($('#enable_https').is(':checked') === ($('#enable_https').data('original') === undefined))
|
||||
var portsUnchanged = ($('#port').val() === $('#port').data('original')) && ($('#https_port').val() === $('#https_port').data('original'))
|
||||
|
||||
// Are we on settings page or did nothing change?
|
||||
if(!$('body').hasClass('General') || (!switchedHTTPS && portsUnchanged)) {
|
||||
@@ -248,7 +248,7 @@ function do_restart() {
|
||||
var urlTotal = window.location.origin + urlBase
|
||||
} else {
|
||||
// Protocol and port depend on http(s) setting
|
||||
if($('#enable_https').is(':checked') && (window.location.protocol == 'https:' || !$('#https_port').val())) {
|
||||
if($('#enable_https').is(':checked') && (window.location.protocol === 'https:' || !$('#https_port').val())) {
|
||||
// Https on and we visited this page from HTTPS
|
||||
var urlProtocol = 'https:';
|
||||
var urlPort = $('#https_port').val() ? $('#https_port').val() : $('#port').val();
|
||||
@@ -297,7 +297,7 @@ function do_restart() {
|
||||
|
||||
// Exception if we go from HTTPS to HTTP
|
||||
// (this is not allowed by browsers and all of the above will be ignored)
|
||||
if(window.location.protocol != urlProtocol) {
|
||||
if(window.location.protocol !== urlProtocol) {
|
||||
// Saftey redirect after 20 sec
|
||||
setTimeout(function() {
|
||||
location.href = urlTotal;
|
||||
@@ -429,7 +429,7 @@ $(document).ready(function () {
|
||||
$('.advanced-settings').toggle()
|
||||
addRowColor()
|
||||
})
|
||||
if(localStorage.getItem('advanced-settings') == 'true') {
|
||||
if(localStorage.getItem('advanced-settings') === 'true') {
|
||||
$('.advanced-settings').show()
|
||||
$('#advanced-settings-button').prop('checked', true)
|
||||
addRowColor()
|
||||
|
||||
@@ -61,7 +61,7 @@
|
||||
<td class="history-completedon row-wrap-text" data-bind="text: completedOn(), attr: { 'data-timestamp': completed }" onclick="showDetails(this)"></td>
|
||||
<td class="delete">
|
||||
<label data-bind="visible: parent.isMultiEditing()">
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
</label>
|
||||
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
|
||||
<a href="#" data-toggle="dropdown" data-bind="click: updateAllHistoryInfo">
|
||||
@@ -136,11 +136,11 @@
|
||||
<div data-bind="visible: history.isMultiEditing()">
|
||||
<span class="label label-default" data-bind="text: history.multiEditItems().length">0</span>
|
||||
<label for="multiedit-checkall-history">
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-history" title="$T('Glitter-checkAll')" data-bind="click: checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-history" title="$T('Glitter-checkAll')" data-bind="click: history.checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
</label>
|
||||
</div>
|
||||
|
||||
<a href="#" class="hover-button" data-bind="visible: history.isMultiEditing(), click: doMultiDelete">
|
||||
<a href="#" class="hover-button" data-bind="visible: history.isMultiEditing(), click: history.doMultiDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
<a href="#modal-purge-history" class="hover-button" title="$T('purgeHist')" data-bind="visible: !history.isMultiEditing()" data-toggle="modal" data-tooltip="true" data-placement="left">
|
||||
|
||||
@@ -102,26 +102,15 @@
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header"><span class="glyphicon glyphicon-off"></span> $T('Glitter-onFinish'):</li>
|
||||
<li>
|
||||
<!-- ko if: queue.scriptsListLoaded -->
|
||||
<select data-bind="value: finishaction, event: { change: setOnQueueFinish }" class="form-control">
|
||||
<option value=""></option>
|
||||
<optgroup label="$T('eoq-actions')">
|
||||
<option value="shutdown_program">$T('shutdownSab')</option>
|
||||
<!--#if $power_options#-->
|
||||
<option value="shutdown_pc">$T('shutdownPc')</option>
|
||||
<option value="standby_pc">$T('standbyPc')</option>
|
||||
<option value="hibernate_pc">$T('hibernatePc')</option>
|
||||
<!--#end if#-->
|
||||
</optgroup>
|
||||
<optgroup label="$T('eoq-scripts')" data-bind="visible: queue.scriptsList().length > 1">
|
||||
<!-- ko foreach: queue.scriptsList -->
|
||||
<!-- ko if: \$data.scriptValue != 'None' -->
|
||||
<option data-bind="text: \$data.scriptText, attr: { value: 'script_'+\$data.scriptValue } " ></option>
|
||||
<!-- /ko -->
|
||||
<!-- /ko -->
|
||||
</optgroup>
|
||||
<option value="shutdown_program">$T('shutdownSab')</option>
|
||||
<!--#if $power_options#-->
|
||||
<option value="shutdown_pc">$T('shutdownPc')</option>
|
||||
<option value="standby_pc">$T('standbyPc')</option>
|
||||
<option value="hibernate_pc">$T('hibernatePc')</option>
|
||||
<!--#end if#-->
|
||||
</select>
|
||||
<!-- /ko -->
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
||||
@@ -134,7 +134,7 @@
|
||||
<div class="col-sm-6">$T('dashboard-systemPerformance') </div>
|
||||
<div class="col-sm-6 col-dot-overflow" data-bind="visible: hasPerformanceInfo">
|
||||
<span data-bind="text: statusInfo.pystone"></span>
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest')"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest') (~10 $T('seconds'))"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<small title="$cpumodel $cpusimd" data-tooltip="true">$cpumodel $cpusimd</small>
|
||||
</div>
|
||||
<div class="col-sm-6 col-loading" data-bind="visible: !hasPerformanceInfo()">$T('Glitter-loading')<span class="loader-dot-one">.</span><span class="loader-dot-two">.</span><span class="loader-dot-three">.</span></div>
|
||||
@@ -143,7 +143,7 @@
|
||||
<div class="col-sm-6">$T('dashboard-downloadDirSpeed') </div>
|
||||
<div class="col-sm-6 col-dot-overflow" data-bind="visible: hasPerformanceInfo">
|
||||
<span data-bind="text: statusInfo.downloaddirspeed()"></span> MB/s
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest')"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest') (~10 $T('seconds'))"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<small data-bind="text: statusInfo.downloaddir, attr: { 'data-original-title': statusInfo.downloaddir }" data-tooltip="true"></small>
|
||||
</div>
|
||||
<div class="col-sm-6 col-loading" data-bind="visible: !hasPerformanceInfo()">$T('Glitter-loading')<span class="loader-dot-one">.</span><span class="loader-dot-two">.</span><span class="loader-dot-three">.</span></div>
|
||||
@@ -152,7 +152,7 @@
|
||||
<div class="col-sm-6">$T('dashboard-completeDirSpeed') </div>
|
||||
<div class="col-sm-6 col-dot-overflow" data-bind="visible: hasPerformanceInfo">
|
||||
<span data-bind="text: statusInfo.completedirspeed()"></span> MB/s
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest')"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest') (~10 $T('seconds'))"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<small data-bind="text: statusInfo.completedir, attr: { 'data-original-title': statusInfo.completedir }" data-tooltip="true"></small>
|
||||
</div>
|
||||
<div class="col-sm-6 col-loading" data-bind="visible: !hasPerformanceInfo()">$T('Glitter-loading')<span class="loader-dot-one">.</span><span class="loader-dot-two">.</span><span class="loader-dot-three">.</span></div>
|
||||
@@ -161,7 +161,7 @@
|
||||
<div class="col-sm-6">$T('dashboard-internetBandwidth') </div>
|
||||
<div class="col-sm-6" data-bind="visible: hasPerformanceInfo">
|
||||
<span data-bind="text: statusInfo.internetbandwidth()"></span> MB/s
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest')"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<a href="#" class="diskspeed-button" data-bind="click: loadStatusInfo" data-tooltip="true" data-placement="right" title="$T('dashboard-repeatTest') (~10 $T('seconds'))"><span class="glyphicon glyphicon-repeat"></span></a>
|
||||
<small><span data-bind="text: statusInfo.internetbandwidth()*8"></span> Mbps</small>
|
||||
</div>
|
||||
<div class="col-sm-6 col-loading" data-bind="visible: !hasPerformanceInfo()">$T('Glitter-loading')<span class="loader-dot-one">.</span><span class="loader-dot-two">.</span><span class="loader-dot-three">.</span></div>
|
||||
@@ -225,15 +225,20 @@
|
||||
</div>
|
||||
<div class="row" data-bind="visible: serverssl">
|
||||
<div class="col-sm-6">$T('srv-ssl')</div>
|
||||
<div class="col-sm-6">
|
||||
<span class="glyphicon glyphicon-ok"></span> <span data-bind="text: serversslinfo"></span>
|
||||
<div class="col-sm-6 col-dot-overflow">
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
<span data-bind="text: serversslinfo"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6"># $T('connections')</div>
|
||||
<div class="col-sm-6">
|
||||
<span data-bind="text: serverconnections().length"></span> /
|
||||
<span data-bind="text: servertotalconn"></span>
|
||||
<span data-bind="text: servertotalconn"></span><br>
|
||||
<!-- ko if: serveripaddress() -->
|
||||
<span data-bind="text: servercanonname"></span><br>
|
||||
<span data-bind="text: serveripaddress"></span>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -249,11 +254,11 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row" data-bind="visible: !isFinite(serveractiveconn())">
|
||||
<div class="row" data-bind="visible: serverwarning()">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-warning">
|
||||
<span class="glyphicon glyphicon-info-sign"></span>
|
||||
<span data-bind="text: serveractiveconn()"></span>
|
||||
<span data-bind="text: serverwarning()"></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -707,7 +712,7 @@
|
||||
<td><a href="https://github.com/sabnzbd/sabnzbd" target="_blank">https://github.com/sabnzbd/sabnzbd/</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>$T('menu-irc'):</strong></td>
|
||||
<td><strong>$T('menu-live-chat'):</strong></td>
|
||||
<td><a href="https://sabnzbd.org/live-chat" target="_blank">https://sabnzbd.org/live-chat</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
||||
@@ -132,7 +132,7 @@
|
||||
<td class="timeleft row-wrap-text" data-bind="text: statusText"></td>
|
||||
<td class="delete">
|
||||
<label data-bind="visible: parent.isMultiEditing()">
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
</label>
|
||||
<!-- ko if: !isGrabbing() -->
|
||||
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
|
||||
@@ -172,9 +172,9 @@
|
||||
<form class="multioperations-selector" data-bind="visible: (hasQueue() && queue.isMultiEditing())" style="display: none;">
|
||||
<div class="add-nzb-inputbox add-nzb-inputbox-small add-nzb-inputbox-options">
|
||||
<label for="multiedit-checkall-queue">
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-queue" title="$T('Glitter-checkAll')" data-bind="click: checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-queue" title="$T('Glitter-checkAll')" data-bind="click: queue.checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
</label>
|
||||
<a href="#" class="hover-button" data-bind="click: doMultiDelete">
|
||||
<a href="#" class="hover-button" data-bind="click: queue.doMultiDelete">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -67,6 +67,7 @@
|
||||
glitterTranslate.fetch = "$T('Glitter-fetch')";
|
||||
glitterTranslate.checking = "$T('post-Checking')";
|
||||
glitterTranslate.misingArt = "$T('missingArt')";
|
||||
glitterTranslate.fetchingURL = "$T('Glitter-addFromURL')"
|
||||
glitterTranslate.chooseFile = "$T('Glitter-chooseFile')";
|
||||
glitterTranslate.orphanedJobsMsg = "$T('explain-orphans')";
|
||||
glitterTranslate.useCache = "$T('explain-cache_limitstr').replace("64M", "256M").replace("128M", "512M")";
|
||||
@@ -96,6 +97,7 @@
|
||||
glitterTranslate.status['Unpack'] = "$T('stage-unpack')";
|
||||
glitterTranslate.status['Deobfuscate'] = "$T('stage-deobfuscate')";
|
||||
glitterTranslate.status['Script'] = "$T('stage-script')";
|
||||
glitterTranslate.status['RSS'] = "$T('stage-rss')";
|
||||
glitterTranslate.status['Source'] = "$T('stage-source')";
|
||||
glitterTranslate.status['Servers'] = "$T('stage-servers')";
|
||||
glitterTranslate.status['INFO'] = "$T('log-info')".replace('+', '').toUpperCase();
|
||||
|
||||
@@ -58,11 +58,11 @@ function convertHTMLtoText(htmltxt) {
|
||||
// Function to re-write 0:09:21=>9:21, 0:10:10=>10:10, 0:00:30=>0:30
|
||||
function rewriteTime(timeString) {
|
||||
// Remove "0:0" from start
|
||||
if(timeString.substring(0,3) == '0:0') {
|
||||
if(timeString.substring(0,3) === '0:0') {
|
||||
timeString = timeString.substring(3)
|
||||
}
|
||||
// Remove "0:" from start
|
||||
else if(timeString.substring(0,2) == '0:') {
|
||||
else if(timeString.substring(0,2) === '0:') {
|
||||
timeString = timeString.substring(2)
|
||||
}
|
||||
return timeString
|
||||
@@ -71,13 +71,13 @@ function rewriteTime(timeString) {
|
||||
// How to display the date-time?
|
||||
function displayDateTime(inDate, outFormat, inFormat) {
|
||||
// What input?
|
||||
if(inDate == '') {
|
||||
if(inDate === '') {
|
||||
var theMoment = moment()
|
||||
} else {
|
||||
var theMoment = moment.utc(inDate, inFormat)
|
||||
}
|
||||
// Special format or regular format?
|
||||
if(outFormat == 'fromNow') {
|
||||
if(outFormat === 'fromNow') {
|
||||
return theMoment.fromNow()
|
||||
} else {
|
||||
return theMoment.local().format(outFormat)
|
||||
@@ -155,7 +155,7 @@ function setCheckAllState(checkSelector, rangeSelector) {
|
||||
var nrChecks = allChecks.filter(":checked");
|
||||
if(nrChecks.length === 0) {
|
||||
$(checkSelector).prop({'checked': false, 'indeterminate': false})
|
||||
} else if(nrChecks.length == allChecks.length) {
|
||||
} else if(nrChecks.length === allChecks.length) {
|
||||
$(checkSelector).prop({'checked': true, 'indeterminate': false})
|
||||
} else {
|
||||
$(checkSelector).prop({'checked': false, 'indeterminate': true})
|
||||
|
||||
@@ -57,7 +57,7 @@ function Fileslisting(parent) {
|
||||
$.each(response.files, function(index, slot) {
|
||||
// Existing or updating?
|
||||
var existingItem = ko.utils.arrayFirst(self.fileItems(), function(i) {
|
||||
return i.nzf_id() == slot.nzf_id;
|
||||
return i.nzf_id() === slot.nzf_id;
|
||||
});
|
||||
|
||||
if(existingItem) {
|
||||
@@ -76,7 +76,7 @@ function Fileslisting(parent) {
|
||||
}
|
||||
|
||||
// Check if we show/hide completed
|
||||
if(localStorageGetItem('showCompletedFiles') == 'No') {
|
||||
if(localStorageGetItem('showCompletedFiles') === 'No') {
|
||||
$('.item-files-table tr.files-done').hide();
|
||||
$('#filelist-showcompleted').removeClass('hover-button')
|
||||
}
|
||||
@@ -217,8 +217,8 @@ function FileslistingModel(parent, data) {
|
||||
self.nzf_id = ko.observable(data.nzf_id);
|
||||
self.file_age = ko.observable(data.age);
|
||||
self.mb = ko.observable(data.mb);
|
||||
self.canselect = ko.observable(data.status != "finished" && data.status != "queued");
|
||||
self.isdone = ko.observable(data.status == "finished");
|
||||
self.canselect = ko.observable(data.status !== "finished" && data.status !== "queued");
|
||||
self.isdone = ko.observable(data.status === "finished");
|
||||
self.percentage = ko.observable(self.isdone() ? fixPercentages(100) : fixPercentages((100 - (data.mbleft / data.mb * 100)).toFixed(0)));
|
||||
|
||||
// Update internally
|
||||
@@ -227,8 +227,8 @@ function FileslistingModel(parent, data) {
|
||||
self.nzf_id(data.nzf_id)
|
||||
self.file_age(data.age)
|
||||
self.mb(data.mb)
|
||||
self.canselect(data.status != "finished" && data.status != "queued")
|
||||
self.isdone(data.status == "finished")
|
||||
self.canselect(data.status !== "finished" && data.status !== "queued")
|
||||
self.isdone(data.status === "finished")
|
||||
// Data is given in MB, would always show 0% for small files even if completed
|
||||
self.percentage(self.isdone() ? fixPercentages(100) : fixPercentages((100 - (data.mbleft / data.mb * 100)).toFixed(0)))
|
||||
}
|
||||
@@ -266,7 +266,7 @@ function paginationModel(parent) {
|
||||
// Return object for adding
|
||||
return {
|
||||
page: pageNr,
|
||||
isCurrent: pageNr == self.currentPage(),
|
||||
isCurrent: pageNr === self.currentPage(),
|
||||
isDots: false,
|
||||
onclick: function(data) {
|
||||
self.moveToPage(data.page);
|
||||
@@ -356,7 +356,7 @@ function paginationModel(parent) {
|
||||
}
|
||||
|
||||
// Change of number of pages?
|
||||
if(newNrPages != self.nrPages()) {
|
||||
if(newNrPages !== self.nrPages()) {
|
||||
// Update
|
||||
self.nrPages(newNrPages);
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ function HistoryListModel(parent) {
|
||||
var newItems = [];
|
||||
$.each(data.slots, function(index, slot) {
|
||||
var existingItem = ko.utils.arrayFirst(self.historyItems(), function(i) {
|
||||
return i.historyStatus.nzo_id() == slot.nzo_id;
|
||||
return i.historyStatus.nzo_id() === slot.nzo_id;
|
||||
});
|
||||
// Set index in the results
|
||||
slot.index = index
|
||||
@@ -59,7 +59,7 @@ function HistoryListModel(parent) {
|
||||
});
|
||||
|
||||
// Remove all items
|
||||
if(itemIds.length == self.paginationLimit()) {
|
||||
if(itemIds.length === self.paginationLimit()) {
|
||||
// Replace it, so only 1 Knockout DOM-update!
|
||||
self.historyItems(newItems);
|
||||
newItems = [];
|
||||
@@ -68,7 +68,7 @@ function HistoryListModel(parent) {
|
||||
$.each(itemIds, function() {
|
||||
var id = this.toString();
|
||||
self.historyItems.remove(ko.utils.arrayFirst(self.historyItems(), function(i) {
|
||||
return i.historyStatus.nzo_id() == id;
|
||||
return i.historyStatus.nzo_id() === id;
|
||||
}));
|
||||
});
|
||||
}
|
||||
@@ -82,7 +82,7 @@ function HistoryListModel(parent) {
|
||||
if(self.parent.queue.multiEditItems().length > 0) {
|
||||
$.each(newItems, function() {
|
||||
var currentItem = this;
|
||||
self.parent.queue.multiEditItems.remove(function(inList) { return inList.id == currentItem.id; })
|
||||
self.parent.queue.multiEditItems.remove(function(inList) { return inList.id === currentItem.id; })
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -148,7 +148,7 @@ function HistoryListModel(parent) {
|
||||
// Searching in history (rate-limited in declaration)
|
||||
self.searchTerm.subscribe(function() {
|
||||
// Go back to page 1
|
||||
if(self.pagination.currentPage() != 1) {
|
||||
if(self.pagination.currentPage() !== 1) {
|
||||
// This forces a refresh
|
||||
self.pagination.moveToPage(1);
|
||||
} else {
|
||||
@@ -160,13 +160,13 @@ function HistoryListModel(parent) {
|
||||
// Clear searchterm
|
||||
self.clearSearchTerm = function(data, event) {
|
||||
// Was it escape key or click?
|
||||
if(event.type == 'mousedown' || (event.keyCode && event.keyCode == 27)) {
|
||||
if(event.type === 'mousedown' || (event.keyCode && event.keyCode === 27)) {
|
||||
// Set the loader so it doesn't flicker and then switch
|
||||
self.isLoading(true)
|
||||
self.searchTerm('');
|
||||
}
|
||||
// Was it click and the field is empty? Then we focus on the field
|
||||
if(event.type == 'mousedown' && self.searchTerm() == '') {
|
||||
if(event.type === 'mousedown' && self.searchTerm() === '') {
|
||||
$(event.target).parents('.search-box').find('input[type="text"]').focus()
|
||||
return;
|
||||
}
|
||||
@@ -209,22 +209,22 @@ function HistoryListModel(parent) {
|
||||
var del_files, value;
|
||||
|
||||
// Purge failed
|
||||
if(whatToRemove == 'history-purge-failed') {
|
||||
if(whatToRemove === 'history-purge-failed') {
|
||||
del_files = 0;
|
||||
value = 'failed';
|
||||
}
|
||||
// Also remove files
|
||||
if(whatToRemove == 'history-purgeremove-failed') {
|
||||
if(whatToRemove === 'history-purgeremove-failed') {
|
||||
del_files = 1;
|
||||
value = 'failed';
|
||||
}
|
||||
// Remove completed
|
||||
if(whatToRemove == 'history-purge-completed') {
|
||||
if(whatToRemove === 'history-purge-completed') {
|
||||
del_files = 0;
|
||||
value = 'completed';
|
||||
}
|
||||
// Remove the ones on this page
|
||||
if(whatToRemove == 'history-purge-page') {
|
||||
if(whatToRemove === 'history-purge-page') {
|
||||
// List all the ID's
|
||||
var strIDs = '';
|
||||
$.each(self.historyItems(), function(index) {
|
||||
@@ -264,8 +264,119 @@ function HistoryListModel(parent) {
|
||||
self.showMultiEdit = function() {
|
||||
self.isMultiEditing(!self.isMultiEditing())
|
||||
self.multiEditItems.removeAll();
|
||||
$('.history-table input[name="multiedit"], #history-options #multiedit-checkall').prop({'checked': false, 'indeterminate': false})
|
||||
$('.history-table input[name="multiedit"], #multiedit-checkall-history').prop({'checked': false, 'indeterminate': false})
|
||||
}
|
||||
|
||||
// Add to the list
|
||||
self.addMultiEdit = function(item, event) {
|
||||
// Is it a shift-click?
|
||||
if(event.shiftKey) {
|
||||
checkShiftRange('.history-table input[name="multiedit"]');
|
||||
}
|
||||
|
||||
// Add or remove from the list?
|
||||
if(event.currentTarget.checked) {
|
||||
// Add item
|
||||
self.multiEditItems.push(item);
|
||||
} else {
|
||||
// Go over them all to know which one to remove
|
||||
self.multiEditItems.remove(function(inList) { return inList.id == item.id; })
|
||||
}
|
||||
|
||||
// Update check-all buton state
|
||||
setCheckAllState('#multiedit-checkall-history', '.history-table input[name="multiedit"]')
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check all
|
||||
self.checkAllJobs = function(item, event) {
|
||||
// Get which ones we care about
|
||||
var allChecks = $('.history-table input[name="multiedit"]').filter(':not(:disabled):visible');
|
||||
|
||||
// We need to re-evaltuate the state of this check-all
|
||||
// Otherwise the 'inderterminate' will be overwritten by the click event!
|
||||
setCheckAllState('#multiedit-checkall-history', '.history-table input[name="multiedit"]')
|
||||
|
||||
// Now we can check what happend
|
||||
// For when some are checked, or all are checked (but not partly)
|
||||
if(event.target.indeterminate || (event.target.checked && !event.target.indeterminate)) {
|
||||
var allActive = allChecks.filter(":checked")
|
||||
// First remove the from the list
|
||||
if(allActive.length == self.multiEditItems().length) {
|
||||
// Just remove all
|
||||
self.multiEditItems.removeAll();
|
||||
// Remove the check
|
||||
allActive.prop('checked', false)
|
||||
} else {
|
||||
// Remove them seperate
|
||||
allActive.each(function() {
|
||||
// Go over them all to know which one to remove
|
||||
var item = ko.dataFor(this)
|
||||
self.multiEditItems.remove(function(inList) { return inList.id == item.id; })
|
||||
// Remove the check of this one
|
||||
this.checked = false;
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// None are checked, so check and add them all
|
||||
allChecks.prop('checked', true)
|
||||
allChecks.each(function() { self.multiEditItems.push(ko.dataFor(this)) })
|
||||
event.target.checked = true
|
||||
}
|
||||
// Set state of all the check-all's
|
||||
setCheckAllState('#multiedit-checkall-history', '.history-table input[name="multiedit"]')
|
||||
return true;
|
||||
}
|
||||
|
||||
// Delete all selected
|
||||
self.doMultiDelete = function() {
|
||||
// Anything selected?
|
||||
if(self.multiEditItems().length < 1) return;
|
||||
|
||||
// Need confirm
|
||||
if(!self.parent.confirmDeleteHistory() || confirm(glitterTranslate.removeDown)) {
|
||||
// List all the ID's
|
||||
var strIDs = '';
|
||||
$.each(self.multiEditItems(), function(index) {
|
||||
strIDs = strIDs + this.id + ',';
|
||||
})
|
||||
|
||||
// Show notification
|
||||
showNotification('.main-notification-box-removing-multiple', 0, self.multiEditItems().length)
|
||||
|
||||
// Remove
|
||||
callAPI({
|
||||
mode: 'history',
|
||||
name: 'delete',
|
||||
del_files: 1,
|
||||
value: strIDs
|
||||
}).then(function(response) {
|
||||
if(response.status) {
|
||||
// Make sure the queue doesnt flicker and then fade-out
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.isLoading(self.totalItems() > 1)
|
||||
self.parent.refresh();
|
||||
// Empty it
|
||||
self.multiEditItems.removeAll();
|
||||
// Hide notification
|
||||
hideNotification()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// On change of page we need to check all those that were in the list!
|
||||
self.historyItems.subscribe(function() {
|
||||
// We need to wait until the unit is actually finished rendering
|
||||
setTimeout(function() {
|
||||
$.each(self.multiEditItems(), function(index) {
|
||||
$('#multiedit_' + this.id).prop('checked', true);
|
||||
})
|
||||
|
||||
// Update check-all buton state
|
||||
setCheckAllState('#multiedit-checkall-history', '.history-table input[name="multiedit"]')
|
||||
}, 100)
|
||||
}, null, "arrayChange")
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -316,14 +427,14 @@ function HistoryModel(parent, data) {
|
||||
|
||||
// Waiting?
|
||||
self.processingWaiting = ko.pureComputed(function() {
|
||||
return(self.status() == 'Queued')
|
||||
return(self.status() === 'Queued')
|
||||
})
|
||||
|
||||
// Processing or done?
|
||||
self.processingDownload = ko.pureComputed(function() {
|
||||
var status = self.status();
|
||||
// When we can cancel
|
||||
if (status === 'Extracting' || status === 'Verifying' || status == 'Repairing' || status === 'Running') {
|
||||
if (status === 'Extracting' || status === 'Verifying' || status === 'Repairing' || status === 'Running') {
|
||||
return 2
|
||||
}
|
||||
// These cannot be cancelled
|
||||
@@ -357,7 +468,7 @@ function HistoryModel(parent, data) {
|
||||
try {
|
||||
// Extract the Download section
|
||||
var downloadLog = ko.utils.arrayFirst(self.historyStatus.stage_log(), function(item) {
|
||||
return item.name() == 'Download'
|
||||
return item.name() === 'Download'
|
||||
});
|
||||
// Extract the speed
|
||||
return downloadLog.actions()[0].match(/(\S*\s\S+)(?=<br\/>)/)[0]
|
||||
@@ -366,7 +477,7 @@ function HistoryModel(parent, data) {
|
||||
return;
|
||||
case 'category':
|
||||
// Exception for *
|
||||
if(self.historyStatus.category() == "*")
|
||||
if(self.historyStatus.category() === "*")
|
||||
return glitterTranslate.defaultText
|
||||
return self.historyStatus.category();
|
||||
case 'size':
|
||||
@@ -437,7 +548,7 @@ function HistoryModel(parent, data) {
|
||||
// Confirm?
|
||||
if(!self.parent.parent.confirmDeleteHistory() || confirm(glitterTranslate.deleteMsg + ":\n" + item.historyStatus.name() + "\n\n" + glitterTranslate.removeDow1)) {
|
||||
// Are we still processing and it can be stopped?
|
||||
if(item.processingDownload() == 2) {
|
||||
if(item.processingDownload() === 2) {
|
||||
callAPI({
|
||||
mode: 'cancel_pp',
|
||||
value: self.id
|
||||
@@ -455,6 +566,7 @@ function HistoryModel(parent, data) {
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.parent.isLoading(self.parent.totalItems() > 1)
|
||||
self.parent.historyItems.remove(self);
|
||||
self.parent.multiEditItems.remove(function(inList) { return inList.id === self.id; })
|
||||
self.parent.parent.refresh();
|
||||
}
|
||||
});
|
||||
|
||||
@@ -90,7 +90,7 @@ function ViewModel() {
|
||||
var speedLimitNumber = Math.round(speedLimitNumberFull * 10) / 10;
|
||||
|
||||
// Fix it for lower than 1MB/s
|
||||
if (bandwithLimitText == 'M' && speedLimitNumber < 1) {
|
||||
if (bandwithLimitText === 'M' && speedLimitNumber < 1) {
|
||||
bandwithLimitText = 'K';
|
||||
speedLimitNumber = Math.round(speedLimitNumberFull * 1024);
|
||||
}
|
||||
@@ -133,100 +133,6 @@ function ViewModel() {
|
||||
return parseInt(self.nrWarnings()) + self.allMessages().length;
|
||||
})
|
||||
|
||||
self.updateCheckAllButtonState = function(section) {
|
||||
setCheckAllState(`#multiedit-checkall-${section}`, `.${section}-table input[name="multiedit"]`)
|
||||
}
|
||||
|
||||
// Add queue or history item to multi-edit list
|
||||
self.addMultiEdit = function(item, event) {
|
||||
// The parent model is either the queue or history
|
||||
const model = this.parent;
|
||||
const section = model.queueItems ? 'queue' : 'history';
|
||||
|
||||
if(event.shiftKey) {
|
||||
checkShiftRange(`.${section}-table input[name="multiedit"]`);
|
||||
}
|
||||
|
||||
if(event.currentTarget.checked) {
|
||||
model.multiEditItems.push(item);
|
||||
|
||||
// History is not editable
|
||||
// Only the queue will fire the multi-edit update
|
||||
model.doMultiEditUpdate?.();
|
||||
} else {
|
||||
model.multiEditItems.remove(function(inList) { return inList.id == item.id; })
|
||||
}
|
||||
|
||||
self.updateCheckAllButtonState(section);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check all queue or history items
|
||||
self.checkAllJobs = function(item, event) {
|
||||
const section = event.currentTarget.closest('.multioperations-selector').id === 'history-options' ? 'history' : 'queue';
|
||||
const model = section === 'history' ? self.history : self.queue;
|
||||
|
||||
const allChecks = $(`.${section}-table input[name="multiedit"]`).filter(':not(:disabled):visible');
|
||||
|
||||
self.updateCheckAllButtonState(section);
|
||||
|
||||
if(event.target.indeterminate || (event.target.checked && !event.target.indeterminate)) {
|
||||
const allActive = allChecks.filter(":checked")
|
||||
if(allActive.length === model.multiEditItems().length) {
|
||||
model.multiEditItems.removeAll();
|
||||
allActive.prop('checked', false)
|
||||
} else {
|
||||
allActive.each(function() {
|
||||
var item = ko.dataFor(this)
|
||||
model.multiEditItems.remove(function(inList) { return inList.id === item.id; })
|
||||
this.checked = false;
|
||||
})
|
||||
}
|
||||
} else {
|
||||
allChecks.prop('checked', true)
|
||||
allChecks.each(function() { model.multiEditItems.push(ko.dataFor(this)) })
|
||||
event.target.checked = true
|
||||
|
||||
model.multiEditUpdate?.();
|
||||
}
|
||||
|
||||
self.updateCheckAllButtonState(section);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Delete all selected queue or history items
|
||||
self.doMultiDelete = function(item, event) {
|
||||
const section = event.currentTarget.closest('.multioperations-selector').id === 'history-options' ? 'history' : 'queue';
|
||||
const model = section === 'history' ? self.history : self.queue;
|
||||
|
||||
// Anything selected?
|
||||
if(model.multiEditItems().length < 1) return;
|
||||
|
||||
if(!self.confirmDeleteHistory() || confirm(glitterTranslate.removeDown)) {
|
||||
let strIDs = '';
|
||||
$.each(model.multiEditItems(), function() {
|
||||
strIDs = strIDs + this.id + ',';
|
||||
})
|
||||
|
||||
showNotification('.main-notification-box-removing-multiple', 0, model.multiEditItems().length)
|
||||
|
||||
callAPI({
|
||||
mode: section,
|
||||
name: 'delete',
|
||||
del_files: 1,
|
||||
value: strIDs
|
||||
}).then(function(response) {
|
||||
if(response.status) {
|
||||
// Make sure the history doesnt flicker and then fade-out
|
||||
model.isLoading(true)
|
||||
self.refresh()
|
||||
model.multiEditItems.removeAll();
|
||||
hideNotification()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// Update main queue
|
||||
self.updateQueue = function(response) {
|
||||
// Block in case off dragging
|
||||
@@ -244,7 +150,7 @@ function ViewModel() {
|
||||
/***
|
||||
Possible login failure?
|
||||
***/
|
||||
if (response.hasOwnProperty('error') && response.error == 'Missing authentication') {
|
||||
if (response.hasOwnProperty('error') && response.error === 'Missing authentication') {
|
||||
// Restart
|
||||
document.location = document.location;
|
||||
}
|
||||
@@ -265,7 +171,7 @@ function ViewModel() {
|
||||
self.diskSpaceLeft1(response.queue.diskspace1_norm)
|
||||
|
||||
// Same sizes? Then it's all 1 disk!
|
||||
if (response.queue.diskspace1 != response.queue.diskspace2) {
|
||||
if (response.queue.diskspace1 !== response.queue.diskspace2) {
|
||||
self.diskSpaceLeft2(response.queue.diskspace2_norm)
|
||||
} else {
|
||||
self.diskSpaceLeft2('')
|
||||
@@ -290,7 +196,7 @@ function ViewModel() {
|
||||
Spark line
|
||||
***/
|
||||
// Break the speed if empty queue
|
||||
if (response.queue.sizeleft == '0 B') {
|
||||
if (response.queue.sizeleft === '0 B') {
|
||||
response.queue.kbpersec = 0;
|
||||
response.queue.speed = '0';
|
||||
}
|
||||
@@ -309,9 +215,9 @@ function ViewModel() {
|
||||
self.speedHistory.push(parseInt(response.queue.kbpersec));
|
||||
|
||||
// Is sparkline visible? Not on small mobile devices..
|
||||
if ($('.sparkline-container').css('display') != 'none') {
|
||||
if ($('.sparkline-container').css('display') !== 'none') {
|
||||
// Make sparkline
|
||||
if (self.speedHistory.length == 1) {
|
||||
if (self.speedHistory.length === 1) {
|
||||
// We only use speedhistory from SAB if we use global settings
|
||||
// Otherwise SAB doesn't know the refresh rate
|
||||
if (!self.useGlobalOptions()) {
|
||||
@@ -346,7 +252,7 @@ function ViewModel() {
|
||||
Speedlimit
|
||||
***/
|
||||
// Nothing or 0 means 100%
|
||||
if(response.queue.speedlimit == '' || response.queue.speedlimit == '0') {
|
||||
if(response.queue.speedlimit === '' || response.queue.speedlimit === '0') {
|
||||
self.speedLimitInt(100)
|
||||
} else {
|
||||
self.speedLimitInt(parseInt(response.queue.speedlimit));
|
||||
@@ -369,7 +275,7 @@ function ViewModel() {
|
||||
|
||||
// Paused main queue
|
||||
if (self.downloadsPaused()) {
|
||||
if (response.queue.pause_int == '0') {
|
||||
if (response.queue.pause_int === '0') {
|
||||
timeString = glitterTranslate.paused;
|
||||
} else {
|
||||
var pauseSplit = response.queue.pause_int.split(/:/);
|
||||
@@ -432,13 +338,13 @@ function ViewModel() {
|
||||
limit: parseInt(self.queue.paginationLimit())
|
||||
}
|
||||
if (self.queue.searchTerm()) {
|
||||
parseSearchQuery(api_call, self.queue.searchTerm(), ["cat", "category", "priority"])
|
||||
parseSearchQuery(api_call, self.queue.searchTerm(), ["cat", "category", "priority", "status"])
|
||||
}
|
||||
var queueApi = callAPI(api_call)
|
||||
.done(self.updateQueue)
|
||||
.fail(function(response) {
|
||||
// Catch the failure of authorization error
|
||||
if (response.status == 401) {
|
||||
if (response.status === 401) {
|
||||
// Stop refresh and reload
|
||||
clearInterval(self.interval)
|
||||
location.reload();
|
||||
@@ -461,7 +367,7 @@ function ViewModel() {
|
||||
last_history_update: self.history.lastUpdate
|
||||
}
|
||||
if (self.history.searchTerm()) {
|
||||
parseSearchQuery(history_call, self.history.searchTerm(), ["cat", "category"])
|
||||
parseSearchQuery(history_call, self.history.searchTerm(), ["cat", "category", "status"])
|
||||
}
|
||||
|
||||
// History
|
||||
@@ -488,10 +394,9 @@ function ViewModel() {
|
||||
api_request[keyword] = parsed_query[keyword]
|
||||
}
|
||||
// Special case for priority, dirty replace of string by numeric value
|
||||
if (keyword == "priority" && api_request["priority"]) {
|
||||
if (keyword === "priority" && api_request["priority"]) {
|
||||
for (const prio_name in self.queue.priorityName) {
|
||||
api_request["priority"] = api_request["priority"].replace(prio_name, self.queue.priorityName[prio_name])
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -606,7 +511,7 @@ function ViewModel() {
|
||||
// Update the warnings
|
||||
self.nrWarnings.subscribe(function(newValue) {
|
||||
// Really any change?
|
||||
if (newValue == self.allWarnings().length) return;
|
||||
if (newValue === self.allWarnings().length) return;
|
||||
|
||||
// Get all warnings
|
||||
callAPI({
|
||||
@@ -628,7 +533,7 @@ function ViewModel() {
|
||||
type: glitterTranslate.status[warning.type].slice(0, -1),
|
||||
text: convertHTMLtoText(warning.text).replace(/ /g, '\u00A0').replace(/(?:\r\n|\r|\n)/g, '<br />'),
|
||||
timestamp: warning.time,
|
||||
css: (warning.type == "ERROR" ? "danger" : warning.type == "WARNING" ? "warning" : "info"),
|
||||
css: (warning.type === "ERROR" ? "danger" : warning.type === "WARNING" ? "warning" : "info"),
|
||||
clear: self.clearWarnings
|
||||
};
|
||||
self.allWarnings.push(warningData)
|
||||
@@ -648,7 +553,7 @@ function ViewModel() {
|
||||
// Clear messages
|
||||
self.clearMessages = function(whatToRemove) {
|
||||
// Remove specifc type of messages
|
||||
self.allMessages.remove(function(item) { return item.index == whatToRemove });
|
||||
self.allMessages.remove(function(item) { return item.index === whatToRemove });
|
||||
// Now so we don't show again today
|
||||
localStorageSetItem(whatToRemove, Date.now())
|
||||
}
|
||||
@@ -659,7 +564,7 @@ function ViewModel() {
|
||||
if (!self.speedLimitInt()) return;
|
||||
|
||||
// Update
|
||||
if (self.speedLimitInt() != newValue) {
|
||||
if (self.speedLimitInt() !== newValue) {
|
||||
callAPI({
|
||||
mode: "config",
|
||||
name: "speedlimit",
|
||||
@@ -732,11 +637,17 @@ function ViewModel() {
|
||||
return false;
|
||||
}
|
||||
|
||||
// Disable the buttons to prevent multiple uploads
|
||||
let submit_buttons = $(form).find("input[type='submit']")
|
||||
submit_buttons.attr("disabled", true)
|
||||
|
||||
// Upload file using the method we also use for drag-and-drop
|
||||
if ($(form.nzbFile)[0].files[0]) {
|
||||
self.addNZBFromFile($(form.nzbFile)[0].files);
|
||||
// Hide modal, upload will reset the form
|
||||
$("#modal-add-nzb").modal("hide");
|
||||
// Re-enable the buttons
|
||||
submit_buttons.attr("disabled", false)
|
||||
} else if ($(form.nzbURL).val()) {
|
||||
// Or add URL
|
||||
var theCall = {
|
||||
@@ -744,15 +655,12 @@ function ViewModel() {
|
||||
name: $(form.nzbURL).val(),
|
||||
nzbname: $('#nzbname').val(),
|
||||
password: $('#password').val(),
|
||||
script: $('#modal-add-nzb select[name="Post-processing"]').val(),
|
||||
cat: $('#modal-add-nzb select[name="Category"]').val(),
|
||||
priority: $('#modal-add-nzb select[name="Priority"]').val(),
|
||||
pp: $('#modal-add-nzb select[name="Processing"]').val()
|
||||
pp: $('#modal-add-nzb select[name="Processing"]').val(),
|
||||
script: $('#modal-add-nzb select[name="Post-processing"]').val(),
|
||||
}
|
||||
|
||||
// Optional, otherwise they get mis-labeled if left empty
|
||||
if ($('#modal-add-nzb select[name="Category"]').val() != '*') theCall.cat = $('#modal-add-nzb select[name="Category"]').val()
|
||||
if ($('#modal-add-nzb select[name="Processing"]').val()) theCall.pp = $('#modal-add-nzb select[name="Category"]').val()
|
||||
|
||||
// Add
|
||||
callAPI(theCall).then(function(r) {
|
||||
// Hide and reset/refresh
|
||||
@@ -760,6 +668,7 @@ function ViewModel() {
|
||||
$("#modal-add-nzb").modal("hide");
|
||||
form.reset()
|
||||
$('#nzbname').val('')
|
||||
submit_buttons.attr("disabled", false)
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -779,7 +688,7 @@ function ViewModel() {
|
||||
fileindex++
|
||||
|
||||
// Check if it's maybe a folder, we can't handle those
|
||||
if (!file.type && file.size % 4096 == 0) return;
|
||||
if (!file.type && file.size % 4096 === 0) return;
|
||||
|
||||
// Add notification
|
||||
showNotification('.main-notification-box-uploading', 0, fileindex)
|
||||
@@ -790,14 +699,12 @@ function ViewModel() {
|
||||
data.append("mode", "addfile");
|
||||
data.append("nzbname", $('#nzbname').val());
|
||||
data.append("password", $('#password').val());
|
||||
data.append("script", $('#modal-add-nzb select[name="Post-processing"]').val())
|
||||
data.append("cat", $('#modal-add-nzb select[name="Category"]').val())
|
||||
data.append("priority", $('#modal-add-nzb select[name="Priority"]').val())
|
||||
data.append("pp", $('#modal-add-nzb select[name="Processing"]').val())
|
||||
data.append("script", $('#modal-add-nzb select[name="Post-processing"]').val())
|
||||
data.append("apikey", apiKey);
|
||||
|
||||
// Optional, otherwise they get mis-labeled if left empty
|
||||
if ($('#modal-add-nzb select[name="Category"]').val() != '*') data.append("cat", $('#modal-add-nzb select[name="Category"]').val());
|
||||
if ($('#modal-add-nzb select[name="Processing"]').val()) data.append("pp", $('#modal-add-nzb select[name="Processing"]').val());
|
||||
|
||||
// Add this one
|
||||
$.ajax({
|
||||
url: "./api",
|
||||
@@ -827,10 +734,10 @@ function ViewModel() {
|
||||
// Load status info
|
||||
self.loadStatusInfo = function(item, event) {
|
||||
// Full refresh? Only on click and for the status-screen
|
||||
var statusFullRefresh = (event != undefined) && $('#options-status').hasClass('active');
|
||||
var statusFullRefresh = (event !== undefined) && $('#options-status').hasClass('active');
|
||||
|
||||
// Measure performance? Takes a while
|
||||
var statusPerformance = (event != undefined) && $(event.currentTarget).hasClass('diskspeed-button');
|
||||
var statusPerformance = (event !== undefined) && $(event.currentTarget).hasClass('diskspeed-button');
|
||||
|
||||
// Make it spin if the user requested it otherwise we don't,
|
||||
// because browsers use a lot of CPU for the animation
|
||||
@@ -870,43 +777,7 @@ function ViewModel() {
|
||||
}
|
||||
|
||||
// Update the servers
|
||||
if (self.statusInfo.servers().length != data.status.servers.length) {
|
||||
// Empty them, in case of update
|
||||
self.statusInfo.servers([])
|
||||
|
||||
// Initial add
|
||||
$.each(data.status.servers, function() {
|
||||
self.statusInfo.servers.push({
|
||||
'servername': ko.observable(this.servername),
|
||||
'serveroptional': ko.observable(this.serveroptional),
|
||||
'serverpriority': ko.observable(this.serverpriority),
|
||||
'servertotalconn': ko.observable(this.servertotalconn),
|
||||
'serverssl': ko.observable(this.serverssl),
|
||||
'serversslinfo': ko.observable(this.serversslinfo),
|
||||
'serveractiveconn': ko.observable(this.serveractiveconn),
|
||||
'servererror': ko.observable(this.servererror),
|
||||
'serveractive': ko.observable(this.serveractive),
|
||||
'serverconnections': ko.observableArray(this.serverconnections),
|
||||
'serverbps': ko.observable(this.serverbps)
|
||||
})
|
||||
})
|
||||
} else {
|
||||
// Update
|
||||
$.each(data.status.servers, function(index) {
|
||||
var activeServer = self.statusInfo.servers()[index];
|
||||
activeServer.servername(this.servername),
|
||||
activeServer.serveroptional(this.serveroptional),
|
||||
activeServer.serverpriority(this.serverpriority),
|
||||
activeServer.servertotalconn(this.servertotalconn),
|
||||
activeServer.serverssl(this.serverssl),
|
||||
activeServer.serversslinfo(this.serversslinfo),
|
||||
activeServer.serveractiveconn(this.serveractiveconn),
|
||||
activeServer.servererror(this.servererror),
|
||||
activeServer.serveractive(this.serveractive),
|
||||
activeServer.serverconnections(this.serverconnections),
|
||||
activeServer.serverbps(this.serverbps)
|
||||
})
|
||||
}
|
||||
ko.mapping.fromJS(data.status.servers, {}, self.statusInfo.servers)
|
||||
|
||||
// Add tooltips to possible new items
|
||||
if (!isMobile) $('#modal-options [data-tooltip="true"]').tooltip({ trigger: 'hover', container: 'body' })
|
||||
@@ -922,7 +793,7 @@ function ViewModel() {
|
||||
var nzbSize = $(event.target).data('size')
|
||||
|
||||
// Maybe it was a click on the icon?
|
||||
if (nzbSize == undefined) {
|
||||
if (nzbSize === undefined) {
|
||||
nzbSize = $(event.target.parentElement).data('size')
|
||||
}
|
||||
|
||||
@@ -1004,7 +875,7 @@ function ViewModel() {
|
||||
$('#options-orphans [data-tooltip="true"]').tooltip('hide')
|
||||
|
||||
// Show notification on delete
|
||||
if ($(htmlElement.currentTarget).data('action') == 'delete_orphan') {
|
||||
if ($(htmlElement.currentTarget).data('action') === 'delete_orphan') {
|
||||
showNotification('.main-notification-box-removing', 1000)
|
||||
} else {
|
||||
// Adding back to queue
|
||||
@@ -1218,7 +1089,7 @@ function ViewModel() {
|
||||
// Reformat and set categories
|
||||
self.queue.categoriesList($.map(response.config.categories, function(cat) {
|
||||
// Default?
|
||||
if(cat.name == '*') return { catValue: '*', catText: glitterTranslate.defaultText };
|
||||
if(cat.name === '*') return { catValue: '*', catText: glitterTranslate.defaultText };
|
||||
return { catValue: cat.name, catText: cat.name };
|
||||
}))
|
||||
|
||||
@@ -1230,14 +1101,10 @@ function ViewModel() {
|
||||
// Reformat script-list
|
||||
self.queue.scriptsList($.map(script_response.scripts, function(script) {
|
||||
// None?
|
||||
if(script == 'None') return { scriptValue: 'None', scriptText: glitterTranslate.noneText };
|
||||
if(script === 'None') return { scriptValue: 'None', scriptText: glitterTranslate.noneText };
|
||||
return { scriptValue: script, scriptText: script };
|
||||
}))
|
||||
self.queue.scriptsListLoaded(true)
|
||||
})
|
||||
} else {
|
||||
// We can already continue
|
||||
self.queue.scriptsListLoaded(true)
|
||||
}
|
||||
|
||||
|
||||
@@ -1314,7 +1181,7 @@ function ViewModel() {
|
||||
// Orphaned folders? If user clicked away we check again in 5 days
|
||||
if (self.statusInfo.folders().length >= 3 && orphanMsg) {
|
||||
// Check if not already there
|
||||
if (!ko.utils.arrayFirst(self.allMessages(), function(item) { return item.index == 'OrphanedMsg' })) {
|
||||
if (!ko.utils.arrayFirst(self.allMessages(), function(item) { return item.index === 'OrphanedMsg' })) {
|
||||
self.allMessages.push({
|
||||
index: 'OrphanedMsg',
|
||||
type: glitterTranslate.status['INFO'],
|
||||
@@ -1326,7 +1193,7 @@ function ViewModel() {
|
||||
} else {
|
||||
// Remove any message, if it was there
|
||||
self.allMessages.remove(function(item) {
|
||||
return item.index == 'OrphanedMsg';
|
||||
return item.index === 'OrphanedMsg';
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -37,7 +37,6 @@ function QueueListModel(parent) {
|
||||
self.multiEditItems = ko.observableArray([]);
|
||||
self.categoriesList = ko.observableArray([]);
|
||||
self.scriptsList = ko.observableArray([]);
|
||||
self.scriptsListLoaded = ko.observable(false);
|
||||
self.searchTerm = ko.observable('').extend({ rateLimit: { timeout: 400, method: "notifyWhenChangesStop" } });
|
||||
self.paginationLimit = ko.observable(20).extend({ persist: 'queuePaginationLimit' });
|
||||
self.pagination = new paginationModel(self);
|
||||
@@ -75,7 +74,7 @@ function QueueListModel(parent) {
|
||||
$.each(data.slots, function() {
|
||||
var item = this;
|
||||
var existingItem = ko.utils.arrayFirst(self.queueItems(), function(i) {
|
||||
return i.id == item.nzo_id;
|
||||
return i.id === item.nzo_id;
|
||||
});
|
||||
|
||||
if(existingItem) {
|
||||
@@ -88,7 +87,7 @@ function QueueListModel(parent) {
|
||||
});
|
||||
|
||||
// Remove all items if there's any
|
||||
if(itemIds.length == self.paginationLimit()) {
|
||||
if(itemIds.length === self.paginationLimit()) {
|
||||
// Replace it, so only 1 Knockout DOM-update!
|
||||
self.queueItems(newItems);
|
||||
newItems = [];
|
||||
@@ -97,7 +96,7 @@ function QueueListModel(parent) {
|
||||
$.each(itemIds, function() {
|
||||
var id = this.toString();
|
||||
self.queueItems.remove(ko.utils.arrayFirst(self.queueItems(), function(i) {
|
||||
return i.id == id;
|
||||
return i.id === id;
|
||||
}));
|
||||
});
|
||||
}
|
||||
@@ -171,7 +170,7 @@ function QueueListModel(parent) {
|
||||
// Searching in queue (rate-limited in decleration)
|
||||
self.searchTerm.subscribe(function() {
|
||||
// Go back to page 1
|
||||
if(self.pagination.currentPage() != 1) {
|
||||
if(self.pagination.currentPage() !== 1) {
|
||||
// This forces a refresh
|
||||
self.pagination.moveToPage(1);
|
||||
} else {
|
||||
@@ -183,12 +182,12 @@ function QueueListModel(parent) {
|
||||
// Clear searchterm
|
||||
self.clearSearchTerm = function(data, event) {
|
||||
// Was it escape key or click?
|
||||
if(event.type == 'mousedown' || (event.keyCode && event.keyCode == 27)) {
|
||||
if(event.type === 'mousedown' || (event.keyCode && event.keyCode === 27)) {
|
||||
self.isLoading(true)
|
||||
self.searchTerm('');
|
||||
}
|
||||
// Was it click and the field is empty? Then we focus on the field
|
||||
if(event.type == 'mousedown' && self.searchTerm() == '') {
|
||||
if(event.type === 'mousedown' && self.searchTerm() === '') {
|
||||
$(event.target).parents('.search-box').find('input[type="text"]').focus()
|
||||
return;
|
||||
}
|
||||
@@ -255,7 +254,7 @@ function QueueListModel(parent) {
|
||||
// Reset form and remove all checked ones
|
||||
$form[0].reset();
|
||||
self.multiEditItems.removeAll();
|
||||
$('.queue-table input[name="multiedit"], .queue #multiedit-checkall').prop({'checked': false, 'indeterminate': false})
|
||||
$('.queue-table input[name="multiedit"], #multiedit-checkall-queue').prop({'checked': false, 'indeterminate': false})
|
||||
|
||||
// Is the multi-edit in view?
|
||||
if(($form.offset().top + $form.outerHeight(true)) > ($(window).scrollTop()+$(window).height())) {
|
||||
@@ -266,6 +265,72 @@ function QueueListModel(parent) {
|
||||
}
|
||||
}
|
||||
|
||||
// Add to the list
|
||||
self.addMultiEdit = function(item, event) {
|
||||
// Is it a shift-click?
|
||||
if(event.shiftKey) {
|
||||
checkShiftRange('.queue-table input[name="multiedit"]');
|
||||
}
|
||||
|
||||
// Add or remove from the list?
|
||||
if(event.currentTarget.checked) {
|
||||
// Add item
|
||||
self.multiEditItems.push(item);
|
||||
// Update them all
|
||||
self.doMultiEditUpdate();
|
||||
} else {
|
||||
// Go over them all to know which one to remove
|
||||
self.multiEditItems.remove(function(inList) { return inList.id == item.id; })
|
||||
}
|
||||
|
||||
// Update check-all buton state
|
||||
setCheckAllState('#multiedit-checkall-queue', '.queue-table input[name="multiedit"]')
|
||||
return true;
|
||||
}
|
||||
|
||||
// Check all
|
||||
self.checkAllJobs = function(item, event) {
|
||||
// Get which ones we care about
|
||||
var allChecks = $('.queue-table input[name="multiedit"]').filter(':not(:disabled):visible');
|
||||
|
||||
// We need to re-evaltuate the state of this check-all
|
||||
// Otherwise the 'inderterminate' will be overwritten by the click event!
|
||||
setCheckAllState('#multiedit-checkall-queue', '.queue-table input[name="multiedit"]')
|
||||
|
||||
// Now we can check what happend
|
||||
// For when some are checked, or all are checked (but not partly)
|
||||
if(event.target.indeterminate || (event.target.checked && !event.target.indeterminate)) {
|
||||
var allActive = allChecks.filter(":checked")
|
||||
// First remove the from the list
|
||||
if(allActive.length == self.multiEditItems().length) {
|
||||
// Just remove all
|
||||
self.multiEditItems.removeAll();
|
||||
// Remove the check
|
||||
allActive.prop('checked', false)
|
||||
} else {
|
||||
// Remove them seperate
|
||||
allActive.each(function() {
|
||||
// Go over them all to know which one to remove
|
||||
var item = ko.dataFor(this)
|
||||
self.multiEditItems.remove(function(inList) { return inList.id == item.id; })
|
||||
// Remove the check of this one
|
||||
this.checked = false;
|
||||
})
|
||||
}
|
||||
} else {
|
||||
// None are checked, so check and add them all
|
||||
allChecks.prop('checked', true)
|
||||
allChecks.each(function() { self.multiEditItems.push(ko.dataFor(this)) })
|
||||
event.target.checked = true
|
||||
|
||||
// Now we fire the update
|
||||
self.doMultiEditUpdate()
|
||||
}
|
||||
// Set state of all the check-all's
|
||||
setCheckAllState('#multiedit-checkall-queue', '.queue-table input[name="multiedit"]')
|
||||
return true;
|
||||
}
|
||||
|
||||
// Do the actual multi-update immediatly
|
||||
self.doMultiEditUpdate = function() {
|
||||
// Anything selected?
|
||||
@@ -286,14 +351,14 @@ function QueueListModel(parent) {
|
||||
|
||||
// All non-category updates need to only happen after a category update
|
||||
function nonCatUpdates() {
|
||||
if(newScript != '') {
|
||||
if(newScript !== '') {
|
||||
callAPI({
|
||||
mode: 'change_script',
|
||||
value: strIDs,
|
||||
value2: newScript
|
||||
})
|
||||
}
|
||||
if(newPrior != '') {
|
||||
if(newPrior !== '') {
|
||||
callAPI({
|
||||
mode: 'queue',
|
||||
name: 'priority',
|
||||
@@ -301,7 +366,7 @@ function QueueListModel(parent) {
|
||||
value2: newPrior
|
||||
})
|
||||
}
|
||||
if(newProc != '') {
|
||||
if(newProc !== '') {
|
||||
callAPI({
|
||||
mode: 'change_opts',
|
||||
value: strIDs,
|
||||
@@ -318,13 +383,13 @@ function QueueListModel(parent) {
|
||||
|
||||
// Wat a little and do the refresh
|
||||
// Only if anything changed!
|
||||
if(newStatus || newProc != '' || newPrior != '' || newScript != '' || newCat != '') {
|
||||
if(newStatus || newProc !== '' || newPrior !== '' || newScript !== '' || newCat !== '') {
|
||||
setTimeout(parent.refresh, 100)
|
||||
}
|
||||
}
|
||||
|
||||
// What is changed?
|
||||
if(newCat != '') {
|
||||
if(newCat !== '') {
|
||||
callAPI({
|
||||
mode: 'change_cat',
|
||||
value: strIDs,
|
||||
@@ -336,6 +401,42 @@ function QueueListModel(parent) {
|
||||
|
||||
}
|
||||
|
||||
// Delete all selected
|
||||
self.doMultiDelete = function() {
|
||||
// Anything selected?
|
||||
if(self.multiEditItems().length < 1) return;
|
||||
|
||||
// Need confirm
|
||||
if(!self.parent.confirmDeleteQueue() || confirm(glitterTranslate.removeDown)) {
|
||||
// List all the ID's
|
||||
var strIDs = '';
|
||||
$.each(self.multiEditItems(), function(index) {
|
||||
strIDs = strIDs + this.id + ',';
|
||||
})
|
||||
|
||||
// Show notification
|
||||
showNotification('.main-notification-box-removing-multiple', 0, self.multiEditItems().length)
|
||||
|
||||
// Remove
|
||||
callAPI({
|
||||
mode: 'queue',
|
||||
name: 'delete',
|
||||
del_files: 1,
|
||||
value: strIDs
|
||||
}).then(function(response) {
|
||||
if(response.status) {
|
||||
// Make sure the queue doesnt flicker and then fade-out
|
||||
self.isLoading(true)
|
||||
self.parent.refresh()
|
||||
// Empty it
|
||||
self.multiEditItems.removeAll();
|
||||
// Hide notification
|
||||
hideNotification()
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// On change of page we need to check all those that were in the list!
|
||||
self.queueItems.subscribe(function() {
|
||||
// We need to wait until the unit is actually finished rendering
|
||||
@@ -345,7 +446,7 @@ function QueueListModel(parent) {
|
||||
})
|
||||
|
||||
// Update check-all buton state
|
||||
setCheckAllState('.queue #multiedit-checkall', '.queue-table input[name="multiedit"]')
|
||||
setCheckAllState('#multiedit-checkall-queue', '.queue-table input[name="multiedit"]')
|
||||
}, 100)
|
||||
}, null, "arrayChange")
|
||||
}
|
||||
@@ -365,8 +466,8 @@ function QueueModel(parent, data) {
|
||||
self.index = ko.observable(data.index);
|
||||
self.status = ko.observable(data.status);
|
||||
self.labels = ko.observableArray(data.labels);
|
||||
self.isGrabbing = ko.observable(data.status == 'Grabbing' || data.avg_age == '-')
|
||||
self.isFetchingBlocks = data.status == 'Fetching' || data.priority == 'Repair' // No need to update
|
||||
self.isGrabbing = ko.observable(data.status === 'Grabbing' || data.avg_age === '-')
|
||||
self.isFetchingBlocks = data.status === 'Fetching' || data.priority === 'Repair' // No need to update
|
||||
self.totalMB = ko.observable(parseFloat(data.mb));
|
||||
self.remainingMB = ko.observable(parseFloat(data.mbleft))
|
||||
self.missingMB = ko.observable(parseFloat(data.mbmissing))
|
||||
@@ -377,7 +478,7 @@ function QueueModel(parent, data) {
|
||||
self.priority = ko.observable(parent.priorityName[data.priority]);
|
||||
self.script = ko.observable(data.script);
|
||||
self.unpackopts = ko.observable(parseInt(data.unpackopts)) // UnpackOpts fails if not parseInt'd!
|
||||
self.pausedStatus = ko.observable(data.status == 'Paused');
|
||||
self.pausedStatus = ko.observable(data.status === 'Paused');
|
||||
self.timeLeft = ko.observable(data.timeleft);
|
||||
|
||||
// Initially empty
|
||||
@@ -388,7 +489,7 @@ function QueueModel(parent, data) {
|
||||
// Color of the progress bar
|
||||
self.progressColor = ko.computed(function() {
|
||||
// Checking
|
||||
if(self.status() == 'Checking') {
|
||||
if(self.status() === 'Checking') {
|
||||
return '#58A9FA'
|
||||
}
|
||||
// Check for missing data, the value is arbitrary! (2%)
|
||||
@@ -396,7 +497,7 @@ function QueueModel(parent, data) {
|
||||
return '#F8A34E'
|
||||
}
|
||||
// Set to grey, only when not Force download
|
||||
if((self.parent.parent.downloadsPaused() && self.priority() != 2) || self.pausedStatus()) {
|
||||
if((self.parent.parent.downloadsPaused() && self.priority() !== 2) || self.pausedStatus()) {
|
||||
return '#B7B7B7'
|
||||
}
|
||||
// Nothing
|
||||
@@ -405,6 +506,9 @@ function QueueModel(parent, data) {
|
||||
|
||||
// MB's
|
||||
self.progressText = ko.pureComputed(function() {
|
||||
if(self.isGrabbing()) {
|
||||
return glitterTranslate.fetchingURL
|
||||
}
|
||||
return (self.totalMB() - self.remainingMB()).toFixed(0) + " MB / " + (self.totalMB() * 1).toFixed(0) + " MB";
|
||||
})
|
||||
|
||||
@@ -424,15 +528,15 @@ function QueueModel(parent, data) {
|
||||
})
|
||||
self.statusText = ko.computed(function() {
|
||||
// Checking
|
||||
if(self.status() == 'Checking') {
|
||||
if(self.status() === 'Checking') {
|
||||
return glitterTranslate.checking
|
||||
}
|
||||
// Grabbing
|
||||
if(self.status() == 'Grabbing') {
|
||||
if(self.status() === 'Grabbing') {
|
||||
return glitterTranslate.fetch
|
||||
}
|
||||
// Pausing status
|
||||
if((self.parent.parent.downloadsPaused() && self.priority() != 2) || self.pausedStatus()) {
|
||||
if((self.parent.parent.downloadsPaused() && self.priority() !== 2) || self.pausedStatus()) {
|
||||
return glitterTranslate.paused;
|
||||
}
|
||||
// Just the time
|
||||
@@ -442,7 +546,7 @@ function QueueModel(parent, data) {
|
||||
// Icon to better show force-priority
|
||||
self.queueIcon = ko.computed(function() {
|
||||
// Force comes first
|
||||
if(self.priority() == 2) {
|
||||
if(self.priority() === 2) {
|
||||
return 'glyphicon-forward'
|
||||
}
|
||||
if(self.pausedStatus()) {
|
||||
@@ -456,17 +560,17 @@ function QueueModel(parent, data) {
|
||||
switch(param) {
|
||||
case 'category':
|
||||
// Exception for *
|
||||
if(self.category() == "*")
|
||||
if(self.category() === "*")
|
||||
return glitterTranslate.defaultText
|
||||
return self.category();
|
||||
case 'priority':
|
||||
// Onload-exception
|
||||
if(self.priority() == undefined) return;
|
||||
return ko.utils.arrayFirst(self.parent.priorityOptions(), function(item) { return item.value == self.priority()}).name;
|
||||
if(self.priority() === undefined) return;
|
||||
return ko.utils.arrayFirst(self.parent.priorityOptions(), function(item) { return item.value === self.priority()}).name;
|
||||
case 'processing':
|
||||
// Onload-exception
|
||||
if(self.unpackopts() == undefined) return;
|
||||
return ko.utils.arrayFirst(self.parent.processingOptions(), function(item) { return item.value == self.unpackopts()}).name;
|
||||
if(self.unpackopts() === undefined) return;
|
||||
return ko.utils.arrayFirst(self.parent.processingOptions(), function(item) { return item.value === self.unpackopts()}).name;
|
||||
case 'scripts':
|
||||
return self.script();
|
||||
case 'age':
|
||||
@@ -482,7 +586,7 @@ function QueueModel(parent, data) {
|
||||
self.password(data.password);
|
||||
self.index(data.index);
|
||||
self.status(data.status)
|
||||
self.isGrabbing(data.status == 'Grabbing' || data.avg_age == '-')
|
||||
self.isGrabbing(data.status === 'Grabbing' || data.avg_age === '-')
|
||||
self.totalMB(parseFloat(data.mb));
|
||||
self.remainingMB(parseFloat(data.mbleft));
|
||||
self.missingMB(parseFloat(data.mbmissing))
|
||||
@@ -493,12 +597,12 @@ function QueueModel(parent, data) {
|
||||
self.priority(parent.priorityName[data.priority]);
|
||||
self.script(data.script);
|
||||
self.unpackopts(parseInt(data.unpackopts)) // UnpackOpts fails if not parseInt'd!
|
||||
self.pausedStatus(data.status == 'Paused');
|
||||
self.pausedStatus(data.status === 'Paused');
|
||||
self.timeLeft(data.timeleft);
|
||||
|
||||
// Did the label-list change?
|
||||
// Otherwise KO will send updates to all texts during refresh()
|
||||
if(self.rawLabels != data.labels.toString()) {
|
||||
if(self.rawLabels !== data.labels.toString()) {
|
||||
// Update
|
||||
self.labels(data.labels);
|
||||
self.rawLabels = data.labels.toString();
|
||||
@@ -535,7 +639,7 @@ function QueueModel(parent, data) {
|
||||
// Do on change
|
||||
self.nameForEdit.subscribe(function(newName) {
|
||||
// Anything change or empty?
|
||||
if(!newName || self.name() == newName) return;
|
||||
if(!newName || self.name() === newName) return;
|
||||
|
||||
// Rename would abort Direct Unpack, so ask if user is sure
|
||||
if(self.direct_unpack() && !confirm(glitterTranslate.renameAbort)) return;
|
||||
@@ -625,7 +729,7 @@ function QueueModel(parent, data) {
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.parent.isLoading(self.parent.totalItems() > 1)
|
||||
parent.queueItems.remove(itemToDelete);
|
||||
parent.multiEditItems.remove(function(inList) { return inList.id == itemToDelete.id; })
|
||||
parent.multiEditItems.remove(function(inList) { return inList.id === itemToDelete.id; })
|
||||
self.parent.parent.refresh();
|
||||
// Hide notifcation
|
||||
hideNotification()
|
||||
|
||||
@@ -56,12 +56,12 @@ $(document).ready(function() {
|
||||
$('#ssl').click(function() {
|
||||
if(this.checked) {
|
||||
// Enabled SSL change port when not already a custom port
|
||||
if($('#port').val() == '119') {
|
||||
if($('#port').val() === '119') {
|
||||
$('#port').val('563')
|
||||
}
|
||||
} else {
|
||||
// Remove SSL port
|
||||
if($('#port').val() == '563') {
|
||||
if($('#port').val() === '563') {
|
||||
$('#port').val('119')
|
||||
}
|
||||
}
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
<url type="faq">https://sabnzbd.org/wiki/faq</url>
|
||||
<url type="contact">https://sabnzbd.org/live-chat.html</url>
|
||||
<releases>
|
||||
<release version="4.2.0" date="2023-11-26" type="stable"/>
|
||||
<release version="4.1.0" date="2023-09-26" type="stable"/>
|
||||
<release version="4.0.3" date="2023-06-16" type="stable"/>
|
||||
<release version="4.0.2" date="2023-06-09" type="stable"/>
|
||||
<release version="4.0.1" date="2023-05-01" type="stable"/>
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: ION, 2020\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
@@ -149,7 +149,7 @@ msgid "Test Notification"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgid "Resolving address"
|
||||
msgstr ""
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
@@ -162,11 +162,6 @@ msgstr ""
|
||||
msgid "Default"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -233,10 +228,6 @@ msgstr ""
|
||||
msgid "Incorrect parameter"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr ""
|
||||
@@ -245,7 +236,7 @@ msgstr ""
|
||||
msgid "Server address required"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr ""
|
||||
|
||||
@@ -263,7 +254,15 @@ msgid "Permissions setting of %s might deny SABnzbd access to the files and fold
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "The Completed Download Folder cannot be the same or a subfolder of the Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
@@ -316,7 +315,7 @@ msgstr ""
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr ""
|
||||
@@ -380,7 +379,7 @@ msgid "Paused"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
|
||||
@@ -613,10 +612,6 @@ msgstr ""
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "The Completed Download Folder cannot be the same or a subfolder of the Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -744,7 +739,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr ""
|
||||
@@ -1003,6 +997,16 @@ msgstr ""
|
||||
msgid "Other Messages"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr ""
|
||||
@@ -1083,6 +1087,18 @@ msgstr ""
|
||||
msgid "NZB added to queue"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1097,26 +1113,6 @@ msgstr ""
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1135,6 +1131,10 @@ msgstr ""
|
||||
msgid "DUPLICATE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr ""
|
||||
@@ -1180,6 +1180,10 @@ msgstr ""
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1370,6 +1374,11 @@ msgstr ""
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Completed Download Folder %s is on FAT file system, limiting maximum file size to 4GB"
|
||||
@@ -1552,10 +1561,6 @@ msgstr ""
|
||||
msgid "Show interface"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr ""
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1643,6 +1648,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr ""
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr ""
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -1915,7 +1925,6 @@ msgstr ""
|
||||
msgid "Home page"
|
||||
msgstr ""
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
@@ -1982,7 +1991,7 @@ msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
@@ -2015,11 +2024,6 @@ msgstr ""
|
||||
msgid "Scheduling"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2134,11 +2138,6 @@ msgstr ""
|
||||
msgid "Retry"
|
||||
msgstr ""
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr ""
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2433,7 +2432,6 @@ msgstr ""
|
||||
msgid "Backup"
|
||||
msgstr ""
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr ""
|
||||
@@ -2910,19 +2908,19 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect identical NZB files (based on items in your History or files in .nzb Backup Folder)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect identical episodes in series (based on \"name/season/episode\" of items in your History)"
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2930,7 +2928,7 @@ msgid "Allow proper releases"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Bypass series duplicate detection if PROPER, REAL or REPACK is detected in the download name"
|
||||
msgid "Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3009,6 +3007,14 @@ msgstr ""
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr ""
|
||||
@@ -4463,10 +4469,6 @@ msgstr ""
|
||||
msgid "Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr ""
|
||||
|
||||
158
po/main/cs.po
158
po/main/cs.po
@@ -2,14 +2,14 @@
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
# Pavel C <quoing_transifex@mess.cz>, 2023
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Pavel C <quoing_transifex@mess.cz>, 2023\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -166,7 +166,7 @@ msgid "Test Notification"
|
||||
msgstr "Otestovat notifikace"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgid "Resolving address"
|
||||
msgstr "Překládám adresu"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
@@ -179,11 +179,6 @@ msgstr "Žádný"
|
||||
msgid "Default"
|
||||
msgstr "Výchozí"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Nepodařilo se zkompilovat regex pro hledaný výraz: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -258,10 +253,6 @@ msgstr "Kvóta přesažena, pozastavuji stahování"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Nesprávný parametr"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC cesta \"%s\" zde není povolena"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s není validní emailová adresa"
|
||||
@@ -270,7 +261,7 @@ msgstr "%s není validní emailová adresa"
|
||||
msgid "Server address required"
|
||||
msgstr "Adresa serveru je vyžadována"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr ""
|
||||
|
||||
@@ -290,8 +281,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Chyba: Fronta nené prázdná, nelze změnit složku."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Fronta nené prázdná, nelze změnit složku."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -345,7 +346,7 @@ msgstr "Spustění SQL příkazu selhalo, zkontrolujte log"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Nezdařilo se uzavření databáze, zkontrolujte log"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr ""
|
||||
@@ -414,7 +415,7 @@ msgid "Paused"
|
||||
msgstr "Pozastaveno"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Musíte nastavit maximální rychlost linky předtím než začnete nastavovat "
|
||||
@@ -661,12 +662,6 @@ msgstr "Přihlášené selhalo, zkontrolujte jméno a heslo."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Nezdařený pokus o přihlášení od %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -799,7 +794,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Běžící skript"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr ""
|
||||
@@ -1070,6 +1064,16 @@ msgstr "Fronta dokončena"
|
||||
msgid "Other Messages"
|
||||
msgstr "Ostatní zprávy"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otevřít složku s kompletními soubory"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Nedostupné"
|
||||
@@ -1150,6 +1154,18 @@ msgstr "Nelze nahrát %s, detekován porušený soubor"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB přidáno do fronty"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignoruji duplikátní NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Nezdařilo se duplikovat NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Duplikátní NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1164,26 +1180,6 @@ msgstr "Prázdný NZB soubor %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignoruji duplikátní NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Nezdařilo se duplikovat NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Duplikátní NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pozastavuji duplikátní NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1202,6 +1198,10 @@ msgstr "Chyba při importu %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLIKÁT"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "ŠIFROVANÉ"
|
||||
@@ -1247,6 +1247,10 @@ msgstr ""
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pozastavuji duplikátní NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1442,6 +1446,11 @@ msgstr ""
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Stará fronta nalezena, použijte Status->Repair pro konverzi fronty"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Nepodařilo se zkompilovat regex pro hledaný výraz: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1626,10 +1635,6 @@ msgstr "Prázdný RSS záznam nalezen (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Zobrazit rozhraní"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otevřít složku s kompletními soubory"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1718,6 +1723,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -1990,7 +2000,6 @@ msgstr "Verze pythonu"
|
||||
msgid "Home page"
|
||||
msgstr "Domovská stránka"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "nebo"
|
||||
@@ -2057,8 +2066,8 @@ msgstr "Fórum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2090,11 +2099,6 @@ msgstr "Přepínače"
|
||||
msgid "Scheduling"
|
||||
msgstr "Plánování"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2209,11 +2213,6 @@ msgstr "Jméno"
|
||||
msgid "Retry"
|
||||
msgstr "Opakovat"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Akce"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2528,7 +2527,6 @@ msgstr ""
|
||||
msgid "Backup"
|
||||
msgstr "Záloha"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr ""
|
||||
@@ -3053,23 +3051,19 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Detekovat duplicitní stahování"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3078,8 +3072,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3164,6 +3158,14 @@ msgstr ""
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr ""
|
||||
@@ -4672,10 +4674,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr ""
|
||||
|
||||
166
po/main/da.po
166
po/main/da.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
|
||||
@@ -166,8 +166,8 @@ msgid "Test Notification"
|
||||
msgstr "Afprøv notifikation"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Server løsning"
|
||||
msgid "Resolving address"
|
||||
msgstr "Server løsning"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -179,11 +179,6 @@ msgstr "Ingen"
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Det lykkedes ikke at kompilere regex for søgestreng: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -258,10 +253,6 @@ msgstr "Kvote brugt, pause downloading"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Fejl parameter"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC søgning \"%s\" er ikke tilladt her"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s er ikke en godkendt e-mail adresse"
|
||||
@@ -270,7 +261,7 @@ msgstr "%s er ikke en godkendt e-mail adresse"
|
||||
msgid "Server address required"
|
||||
msgstr "Kræver serveradresse"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Ugyldig server adresse."
|
||||
|
||||
@@ -290,8 +281,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Fejl: Køen er ikke tom, kan ikke skifte mappe."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Køen er ikke tom, kan ikke skifte mappe."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -345,7 +346,7 @@ msgstr "SQL Kommando mislykkedes, se log"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Det lykkedes ikke at lukke databasen, se log"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Forkert logning i historiken av %s"
|
||||
@@ -412,7 +413,7 @@ msgid "Paused"
|
||||
msgstr "Sat på pause"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Du skal angive den maksimale båndbredde, før du kan angive en båndbredde "
|
||||
@@ -669,12 +670,6 @@ msgstr "Godkendelse mislykkedes, kontrollere brugernavn/adgangskode."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Mislykkede login forsøg fra %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -805,7 +800,6 @@ msgstr "Film sortering"
|
||||
msgid "Running script"
|
||||
msgstr "Køre script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Udpakning af nesting for dybt [%s]"
|
||||
@@ -1074,6 +1068,16 @@ msgstr "Kø færdig"
|
||||
msgid "Other Messages"
|
||||
msgstr "Andre beskeder"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Åben færdig mappe"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Ikke tilgængelig"
|
||||
@@ -1154,6 +1158,18 @@ msgstr "Downloadnings fejl %s, ødelagt fil fundet"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB tilføjet i køen"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorerer identiske NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Fejler dublet NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Dublet NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1168,26 +1184,6 @@ msgstr "Tom NZB fil %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr "Før-kø script job markeret som mislykkedet"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorerer identiske NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Fejler dublet NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Dublet NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pause duplikeret NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1206,6 +1202,10 @@ msgstr "Det lykkedes ikke at importere %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLIKERE"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "KRYPTEREDE"
|
||||
@@ -1251,6 +1251,10 @@ msgstr "%s artikler manglede"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artikler havde ikke-matchende dubletter"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pause duplikeret NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1474,6 +1478,11 @@ msgstr "Fejl %s: Du skal angive et gyldigt brugernavn og adgangskode."
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Gamle kø opdaget, brug Status->Reparation for at konvertere kø"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Det lykkedes ikke at kompilere regex for søgestreng: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1658,10 +1667,6 @@ msgstr "Tom RSS post blev fundet (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Vis grænseflade"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Åben færdig mappe"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1750,6 +1755,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2022,7 +2032,6 @@ msgstr "Python-version"
|
||||
msgid "Home page"
|
||||
msgstr "Startside"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "eller"
|
||||
@@ -2089,8 +2098,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2122,11 +2131,6 @@ msgstr "Parameter"
|
||||
msgid "Scheduling"
|
||||
msgstr "Planlægning"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2241,11 +2245,6 @@ msgstr "Navn"
|
||||
msgid "Retry"
|
||||
msgstr "Forsøg igen"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Handlinger"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2569,7 +2568,6 @@ msgstr "Oppetid"
|
||||
msgid "Backup"
|
||||
msgstr "Sikkerhedskopi"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Læs mere om dette på Wiki Help!"
|
||||
@@ -3121,28 +3119,20 @@ msgstr ""
|
||||
"I tilfælde af \"Pause\", skal du angive en adgangskode og genoptage jobbet."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Find identiske downloads"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
"Fundet identiske NZB filer (baseret på elementer i din historik eller filer "
|
||||
"i. nzb Backup mappe)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Opdage identiske episoder i serier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
"Fundet identiske episoder i serie (baseret på \"navn /sæson /episode\" af "
|
||||
"elementer i din historik)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3150,8 +3140,8 @@ msgstr "Tillad reelle udgivelser"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3240,6 +3230,14 @@ msgstr "Før kø bruger script"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Brugt før, en NZB kommer ind i køen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Ekstra PAR2 parameter"
|
||||
@@ -4784,10 +4782,6 @@ msgstr ""
|
||||
"Ukendt SSL protokol: Prøv at deaktivere SSL eller forbinder på en anden "
|
||||
"port."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Server afslut under login-sekvens."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Serveren kræver brugernavn og adgangskode."
|
||||
|
||||
183
po/main/de.po
183
po/main/de.po
@@ -15,7 +15,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
@@ -182,8 +182,8 @@ msgid "Test Notification"
|
||||
msgstr "Benachrichtigungen testen"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Adresse wird aufgelöst …"
|
||||
msgid "Resolving address"
|
||||
msgstr "Adresse wird aufgelöst …"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -195,12 +195,6 @@ msgstr "Nichts"
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr ""
|
||||
"Kompilieren des regulären Ausdrucks für den Suchbegriff %s fehlgeschlagen."
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -277,10 +271,6 @@ msgstr "Kontingent aufgebraucht, Downloads werden angehalten"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Fehlerhafter Parameter"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-Pfad \"%s\" ist hier nicht erlaubt"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s ist keine gültige E-Mail-Adresse"
|
||||
@@ -289,7 +279,7 @@ msgstr "%s ist keine gültige E-Mail-Adresse"
|
||||
msgid "Server address required"
|
||||
msgstr "Server-Adresse wird benötigt"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Ungültige Server-Adresse."
|
||||
|
||||
@@ -311,10 +301,21 @@ msgstr ""
|
||||
"erstellten Dateien und Ordner von SABnzbd verweigern."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "Netzwerkpfad \"%s\" ist hier nicht erlaubt"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr ""
|
||||
"Fehler: Ordner kann nicht geändert werden, da die Warteschlange nicht leer "
|
||||
"ist."
|
||||
"Ordner kann nicht geändert werden, da die Warteschlange nicht leer ist."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Der \"Abgeschlossene Downloads\"-Ordner darf kein Unterordner des "
|
||||
"\"Temporäre Downloads\"-Ordners sein."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -322,6 +323,8 @@ msgid ""
|
||||
"Do not use a folder in the application folder as your Scripts Folder, it "
|
||||
"might be emptied during updates."
|
||||
msgstr ""
|
||||
"Verwenden Sie keinen Ordner im Anwendungsordner als Ihren Skriptordner, er "
|
||||
"könnte während Updates geleert werden."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
@@ -371,7 +374,7 @@ msgid "Failed to close database, see log"
|
||||
msgstr ""
|
||||
"Fehler beim Schliessen der Datenbank. Beachten Sie das Nachrichtenprotokoll."
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Ungültiges Stufen-Protokoll im Verlauf für %s"
|
||||
@@ -442,7 +445,7 @@ msgid "Paused"
|
||||
msgstr "Angehalten"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Bevor ein Bandbreitenlimit gesetzt werden kann, muss die maximale Bandbreite"
|
||||
@@ -474,7 +477,7 @@ msgstr "Fehler %s@%s zu initialisieren, aus folgendem Grund: %s"
|
||||
#. Error message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Fatal error in Downloader"
|
||||
msgstr ""
|
||||
msgstr "Schwerer Fehler im Downloader"
|
||||
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Too many connections to server %s [%s]"
|
||||
@@ -648,11 +651,15 @@ msgstr "%s ist nicht beschreibbar. Downloads sind dadurch blockiert."
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Cannot write a long filename to %s. This can cause problems."
|
||||
msgstr ""
|
||||
"Kann keinen langen Dateinamen in %s schreiben. Dies kann Probleme "
|
||||
"verursachen."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Cannot write a unicode filename to %s. This can cause problems."
|
||||
msgstr ""
|
||||
"Kann keinen Dateinamen in Unicode in %s schreiben. Dies kann Probleme "
|
||||
"verursachen."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
@@ -706,14 +713,6 @@ msgstr ""
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Fehlerhafter Login Versuch von %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Der \"Abgeschlossene Downloads\"-Ordner darf kein Unterordner des "
|
||||
"\"Temporäre Downloads\"-Ordners sein."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr "Invalides Backup Archiv"
|
||||
@@ -849,7 +848,6 @@ msgstr "Film Sortierung"
|
||||
msgid "Running script"
|
||||
msgstr "Ausführen des Skripts"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Entpacken zu tief verschachtelt [%s]"
|
||||
@@ -1125,6 +1123,16 @@ msgstr "Warteschlange abgearbeitet"
|
||||
msgid "Other Messages"
|
||||
msgstr "Andere Nachrichten"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr "Ordner öffnen"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Öffne Zielverzeichnis"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Nicht verfügbar"
|
||||
@@ -1205,6 +1213,18 @@ msgstr "Fehler beim Laden von %s. Beschädigte Datei gefunden."
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB zur Warteschlange hinzugefügt"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Doppelte NZB \"%s\" wird ignoriert"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "kopieren der NZB \"%s\" fehlgeschlagen"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Doppelte NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1221,26 +1241,6 @@ msgstr ""
|
||||
"Das Vorwarteschlangen (pre-queue) Skript hat die Downloadaufgabe als "
|
||||
"gescheitert markiert"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Doppelte NZB \"%s\" wird ignoriert"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "kopieren der NZB \"%s\" fehlgeschlagen"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Doppelte NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Doppelt vorhandene NZB \"%s\" angehalten"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1259,6 +1259,10 @@ msgstr "Fehler beim Importieren von %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLIKAT"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr "ALTERNATIVE"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "VERSCHLÜSSELT"
|
||||
@@ -1305,6 +1309,10 @@ msgstr "%s Artikel fehlten"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s Artikel hatten nicht übereinstimmende Duplikate"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Doppelt vorhandene NZB \"%s\" angehalten"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1537,6 +1545,12 @@ msgstr ""
|
||||
"Alte Warteschlangen-Version erkannt, über Status->Reparieren ins neue Format"
|
||||
" konvertieren"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr ""
|
||||
"Kompilieren des regulären Ausdrucks für den Suchbegriff %s fehlgeschlagen."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1724,10 +1738,6 @@ msgstr "Leerer RSS-Feed gefunden: %s"
|
||||
msgid "Show interface"
|
||||
msgstr "Interface anzeigen"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Öffne Zielverzeichnis"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1816,6 +1826,11 @@ msgstr "Entschleiern"
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2088,7 +2103,6 @@ msgstr "Python Version"
|
||||
msgid "Home page"
|
||||
msgstr "Startseite"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "oder"
|
||||
@@ -2155,8 +2169,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2188,11 +2202,6 @@ msgstr "Schalter"
|
||||
msgid "Scheduling"
|
||||
msgstr "Planung"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2307,11 +2316,6 @@ msgstr "Name"
|
||||
msgid "Retry"
|
||||
msgstr "Erneut versuchen"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Aktionen"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2648,7 +2652,6 @@ msgstr "Zeit seit Start"
|
||||
msgid "Backup"
|
||||
msgstr "Sicherheitskopie"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lesen Sie dazu die Hilfe im Wiki!"
|
||||
@@ -3241,28 +3244,20 @@ msgstr ""
|
||||
"fortsetzen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Doppelte Downloads erkennen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
"Doppelte NZB Datei entdeckt (basierend auf den Eintragungen in der Historie "
|
||||
"oder den .nzb Dateien im NZB-Backup-Ordner)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Doppelte Episoden in Serien erkennen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
"Identische Episoden in den Serien entdeckt (basierend auf "
|
||||
"\"name/season/episode\") der Einträge in der Historie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3270,11 +3265,9 @@ msgstr "Erlaube \"Proper\" Releases"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
"Umgehe Serien Duplikat-Erkennung, wenn PROPER, REAL oder REPACK im Download-"
|
||||
"Namen erkannt wird"
|
||||
|
||||
#. Four way switch for duplicates
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3365,6 +3358,14 @@ msgid "Used before an NZB enters the queue."
|
||||
msgstr ""
|
||||
"Wird verwendet, bevor eine NZB-Datei zur Warteschlange hinzugefügt wird."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Zusätzliche PAR2-Parameter"
|
||||
@@ -4959,10 +4960,6 @@ msgstr ""
|
||||
"Unbekanntes SSL-Protokoll: SSL deaktivieren oder alternativen Port "
|
||||
"versuchen."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Sever beendet beim Anmeldeverlauf."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Server benötigt ein Benutzername und ein Passwort."
|
||||
|
||||
@@ -124,4 +124,7 @@ msgid "0 is highest priority, 100 is the lowest priority"
|
||||
msgstr "0 is highest priority, 99 is the lowest priority"
|
||||
|
||||
msgid "Filter out sample files (e.g. video samples)."
|
||||
msgstr "Filter out sample files (e.g. video samples/proofs)."
|
||||
msgstr "Filter out sample files (e.g. video samples/proofs)."
|
||||
|
||||
msgid "Pre-queue user script"
|
||||
msgstr "Pre-queue script"
|
||||
168
po/main/es.po
168
po/main/es.po
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
|
||||
@@ -175,8 +175,8 @@ msgid "Test Notification"
|
||||
msgstr "Notificación de prueba"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Resolviendo sitio"
|
||||
msgid "Resolving address"
|
||||
msgstr "Resolviendo sitio"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -188,11 +188,6 @@ msgstr "Ninguno"
|
||||
msgid "Default"
|
||||
msgstr "Predeterminado"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Compilación de regex para término fallo: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -273,10 +268,6 @@ msgstr "Quota gastado, pausando cola"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Parámetro incorrecto"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "Ruta de acceso UNC \"%s\" no permitido aqui"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s no es una dirección de correo electrónico válida."
|
||||
@@ -285,7 +276,7 @@ msgstr "%s no es una dirección de correo electrónico válida."
|
||||
msgid "Server address required"
|
||||
msgstr "Se necesita la dirección del servidor"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Dirección del servidor no válida."
|
||||
|
||||
@@ -305,8 +296,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Error: Cola no esta vacía, no se puede cambiar el directorio"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Cola no esta vacía, no se puede cambiar el directorio"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -363,7 +364,7 @@ msgstr "Comando SQL ha fallado, vea el registro"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "No se pudo cerrar el base de datos, vea el registro"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Registro de etapa invalido para transferencia terminada %s"
|
||||
@@ -433,7 +434,7 @@ msgid "Paused"
|
||||
msgstr "En pausa"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Debe establecer un ancho de banda máximo antes de poder establecer un límite"
|
||||
@@ -691,12 +692,6 @@ msgstr "Autenticación fallida, compruebe el usuario o la contraseña."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Intento fallido de inicio de sesión desde %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -834,7 +829,6 @@ msgstr "Clasificación de películas"
|
||||
msgid "Running script"
|
||||
msgstr "Ejecutando script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr ""
|
||||
@@ -1114,6 +1108,16 @@ msgstr "Cola terminada"
|
||||
msgid "Other Messages"
|
||||
msgstr "Otros mensajes"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Abrir todo el folder"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "No disponible"
|
||||
@@ -1197,6 +1201,18 @@ msgstr "Error al cargar %s, archivo corrupto"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB añadido a la cola"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorando NZB Duplicado \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Fallo al duplicar NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Duplicar NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1213,26 +1229,6 @@ msgstr ""
|
||||
"La secuencia de comandos de la cola preestablecida ha marcado la tarea como "
|
||||
"fallida"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorando NZB Duplicado \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Fallo al duplicar NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Duplicar NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausando NZB duplicados \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1251,6 +1247,10 @@ msgstr "Error importando %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLICADO"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "ENCRIPTADO"
|
||||
@@ -1296,6 +1296,10 @@ msgstr "%s artículos no encontrados"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artículos contenían duplicados inconexos"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausando NZB duplicados \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1526,6 +1530,11 @@ msgstr ""
|
||||
"Se ha encontrado una cola antigua, utilice Estado->Reparar para convertir la"
|
||||
" cola"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Compilación de regex para término fallo: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1714,10 +1723,6 @@ msgstr "Entrada RSS vacía (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Mostrar interfaz"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Abrir todo el folder"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1806,6 +1811,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2078,7 +2088,6 @@ msgstr "Version de Python"
|
||||
msgid "Home page"
|
||||
msgstr "Pagina principal"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "o"
|
||||
@@ -2145,8 +2154,8 @@ msgstr "Foro"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2178,11 +2187,6 @@ msgstr "Switches"
|
||||
msgid "Scheduling"
|
||||
msgstr "Planificación"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2297,11 +2301,6 @@ msgstr "Nombre"
|
||||
msgid "Retry"
|
||||
msgstr "Reintentar"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Acciones"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2635,7 +2634,6 @@ msgstr "Tiempo en Activo"
|
||||
msgid "Backup"
|
||||
msgstr "Copia de seguridad"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lee la ayuda en la Wiki (inglés) acerca de esto!"
|
||||
@@ -3203,28 +3201,20 @@ msgstr ""
|
||||
"trabajo."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Detectar descargas duplicadas"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
"Detecta archivos NZB idénticos (basándose en los elementos de su historial o"
|
||||
" los archivos en el directorio de copia de seguridad .nzb)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Detectar episodios duplicadas en serie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
"Detecta episodios idénticos en series (basándose en "
|
||||
"\"nombre/temporada/episodio\" de los elementos de su historial)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3232,11 +3222,9 @@ msgstr "Permitir comunicados adecuados"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
"Evitar detección de duplicado de series si se detecta PROPER, REAL o REPACK "
|
||||
"en el nombre de la descarga"
|
||||
|
||||
#. Four way switch for duplicates
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3324,6 +3312,14 @@ msgstr "Script de usuario Pre-cola"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Se usa precediendo a la entrada de un NZB en la cola del sistema."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Parámetros PAR2 extra"
|
||||
@@ -4892,10 +4888,6 @@ msgstr ""
|
||||
"Protocolo SSL desconocido: intente desabilitar el SSL o conectarse a un "
|
||||
"puerto diferente."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "El servidor se ha cerrado durante el login"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "El servidor necesita usuario y contraseña."
|
||||
|
||||
158
po/main/fi.po
158
po/main/fi.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
|
||||
@@ -168,8 +168,8 @@ msgid "Test Notification"
|
||||
msgstr "Testaa ilmoitusta"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Selvitetään osoitetta"
|
||||
msgid "Resolving address"
|
||||
msgstr "Selvitetään osoitetta"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -181,11 +181,6 @@ msgstr "Ei mitään"
|
||||
msgid "Default"
|
||||
msgstr "Oletus"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Regex käännös epäonnistui hakutermille: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -256,10 +251,6 @@ msgstr "Latausrajoitus saavutettu, keskeytetään lataukset"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Virheellinen parametri"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "TUNT polku \"%s\" ei ole sallittu"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s ei ole kelvollinen sähköpostiosoite"
|
||||
@@ -268,7 +259,7 @@ msgstr "%s ei ole kelvollinen sähköpostiosoite"
|
||||
msgid "Server address required"
|
||||
msgstr "Palvelimen osoite vaaditaan"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Virheellinen palvelimen osoite."
|
||||
|
||||
@@ -288,8 +279,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Virhe: Jono ei ole tyhjä, kansiota ei voida vaihtaa."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Jono ei ole tyhjä, kansiota ei voida vaihtaa."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -343,7 +344,7 @@ msgstr "SQL komento epäonnistui, katso loki"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Tietokannan sulkeminen epäonnistui, katso loki"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Virheellinen tila lokihistoriassa kohteelle %s"
|
||||
@@ -410,7 +411,7 @@ msgid "Paused"
|
||||
msgstr "Keskeytetty"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Sinun täytyy määrittää enimmäiskaista ennen kaistarajoituksen käyttöönottoa."
|
||||
@@ -666,12 +667,6 @@ msgstr "Varmennus epäonnistui, tarkista käyttäjänimi/salasana."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -802,7 +797,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Ajetaan skripti"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Purkaessa havaittiin liikaa pakkauskerroksia [%s]"
|
||||
@@ -1068,6 +1062,16 @@ msgstr "Jono valmistunut"
|
||||
msgid "Other Messages"
|
||||
msgstr "Muut viestit"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Avaa valmistuneet-kansio"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Ei saatavilla"
|
||||
@@ -1148,6 +1152,18 @@ msgstr "Virhe ladattaessa %s, korruptoitunut tiedosto havaittu"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB lisätty jonoon"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ohitetaan kaksoiskappale NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1162,26 +1178,6 @@ msgstr "Tyhjä NZB tiedosto %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ohitetaan kaksoiskappale NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Keskeytetään kaksoiskappale NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1200,6 +1196,10 @@ msgstr "Virhe tuotaessa %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "KAKSOISKAPPALE"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "SALATTU"
|
||||
@@ -1245,6 +1245,10 @@ msgstr "%s artikkelia puuttui"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artikkelissa oli ei-vastaavia kaksoiskappaleita"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Keskeytetään kaksoiskappale NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1468,6 +1472,11 @@ msgstr "Virhe %s: Syötä kelvollinen käyttäjänimi ja salasana."
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Vanhan version jono havaittiin, käytä Tila->Korjaa muuntaaksesi jonon"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Regex käännös epäonnistui hakutermille: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1652,10 +1661,6 @@ msgstr "Tyhjä RSS kohde löytyi (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Näytä käyttöliittymä"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Avaa valmistuneet-kansio"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1744,6 +1749,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Skripti"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2016,7 +2026,6 @@ msgstr "Python versio"
|
||||
msgid "Home page"
|
||||
msgstr "Kotisivu"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "tai"
|
||||
@@ -2083,8 +2092,8 @@ msgstr "Foorumi"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2116,11 +2125,6 @@ msgstr "Muuttujat"
|
||||
msgid "Scheduling"
|
||||
msgstr "Ajastus"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2235,11 +2239,6 @@ msgstr "Nimi"
|
||||
msgid "Retry"
|
||||
msgstr "Yritä uudelleen"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Toiminnot"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2565,7 +2564,6 @@ msgstr "Käynnissäoloaika"
|
||||
msgid "Backup"
|
||||
msgstr "Varmuuskopioi"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lue Wikin ohjeet tähän!"
|
||||
@@ -3128,23 +3126,19 @@ msgstr ""
|
||||
" lataamista."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Tunnista päällekkäiset lataukset"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Tunnista identtiset jaksot sarjassa"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3153,8 +3147,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3243,6 +3237,14 @@ msgstr "Esijonon käyttäjän skripti"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Käytetään ennen NZB lisäämistä jonoon."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Ylimääräiset PAR2 parametrit"
|
||||
@@ -4789,10 +4791,6 @@ msgid ""
|
||||
msgstr ""
|
||||
"Tuntematon SSL protokolla: Kokeile ottaa SSL käytöstä tai vaihda porttia."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Palvelin lopetettiin kesken kirjautumisen"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Palvelin vaatii käyttäjänimen ja salasanan."
|
||||
|
||||
166
po/main/fr.po
166
po/main/fr.po
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2023\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
@@ -177,8 +177,8 @@ msgid "Test Notification"
|
||||
msgstr "Test de Notification"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Résolution de l'adresse"
|
||||
msgid "Resolving address"
|
||||
msgstr "Résolution de l'adresse"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -190,11 +190,6 @@ msgstr "Aucun"
|
||||
msgid "Default"
|
||||
msgstr "Par défaut"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Echec de la compilation de regex pour la recherche du terme : %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -275,10 +270,6 @@ msgstr "Quota atteint, téléchargement mis en pause"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Paramètre incorrect"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "Le chemin UNC \"%s\" n'est pas autorisé ici"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s n'est pas une adresse email valide"
|
||||
@@ -287,7 +278,7 @@ msgstr "%s n'est pas une adresse email valide"
|
||||
msgid "Server address required"
|
||||
msgstr "Adresse du serveur requise"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Adresse du serveur erronée"
|
||||
|
||||
@@ -309,9 +300,20 @@ msgstr ""
|
||||
"fichiers et dossiers qu'il crée."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "Le chemin réseau \"%s\" n'est pas autorisé ici"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "La file d'attente n'est pas vide, impossible de changer de dossier."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Erreur : La file d'attente n'est pas vide, impossible de changer le dossier."
|
||||
"Le dossier des téléchargements terminés ne peut pas être le même dossier que"
|
||||
" les téléchargements temporaires, ni être l'un de ses sous-dossiers"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -369,7 +371,7 @@ msgstr "Echec de la commande SQL, voir le journal"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Impossible de fermer la base de données, voir le journal"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Étape de journalisation invalide dans l'historique pour %s"
|
||||
@@ -439,7 +441,7 @@ msgid "Paused"
|
||||
msgstr "En pause"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Vous devez définir une bande passante maximale avant de pouvoir définir une "
|
||||
@@ -706,14 +708,6 @@ msgstr "Echec d'authentification, vérifiez les identifiant/mot de passe."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Echec de la tentative de connexion de %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Le dossier des téléchargements terminés ne peut pas être le même dossier que"
|
||||
" les téléchargements temporaires, ni être l'un de ses sous-dossiers"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr "Archives de sauvegarde non valides"
|
||||
@@ -851,7 +845,6 @@ msgstr "Tri des films"
|
||||
msgid "Running script"
|
||||
msgstr "Exécution du script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Arborescence trop profonde dans le fichier compressé [%s]"
|
||||
@@ -1125,6 +1118,16 @@ msgstr "File d'attente terminée"
|
||||
msgid "Other Messages"
|
||||
msgstr "Autres messages"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr "Ouvrir le dossier"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Ouvrir le dossier des complets"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Non disponible"
|
||||
@@ -1205,6 +1208,18 @@ msgstr "Erreur lors du chargement de %s, fichier corrompu détecté"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB ajouté à la file d'attente"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Doublon NZB ignoré \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Échec de duplication du NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Dupliquer NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1219,26 +1234,6 @@ msgstr "Fichier NZB %s vide"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr "Le script de pré-file d'attente a marqué la tâche comme échouée"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Doublon NZB ignoré \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Échec de duplication du NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Dupliquer NZB"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Mise en pause du doublon NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1257,6 +1252,10 @@ msgstr "Erreur lors de l'importation de %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DOUBLON"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr "ALTERNATIVE"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "CHIFFRÉ"
|
||||
@@ -1302,6 +1301,10 @@ msgstr "%s articles manquants"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s articles avec doublons sans correspondance"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Mise en pause du doublon NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1533,6 +1536,11 @@ msgstr ""
|
||||
"Ancienne file d'attente détectée, utiliser Statut-> Réparation pour "
|
||||
"convertir la file d'attente"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Echec de la compilation de regex pour la recherche du terme : %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1722,10 +1730,6 @@ msgstr "Entrée vide de flux RSS trouvée (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Afficher l’interface"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Ouvrir le dossier des complets"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1814,6 +1818,11 @@ msgstr "Désobfuscation"
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2086,7 +2095,6 @@ msgstr "Version de Python"
|
||||
msgid "Home page"
|
||||
msgstr "Page d'accueil"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "ou"
|
||||
@@ -2153,8 +2161,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr "Chat en direct"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2186,11 +2194,6 @@ msgstr "Switches"
|
||||
msgid "Scheduling"
|
||||
msgstr "Planification"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2305,11 +2308,6 @@ msgstr "Nom"
|
||||
msgid "Retry"
|
||||
msgstr "Réessayer"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Actions"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2648,7 +2646,6 @@ msgstr "Temps de fonctionnement"
|
||||
msgid "Backup"
|
||||
msgstr "Secours"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Consultez le Wiki pour plus d'info à ce sujet (en anglais) !"
|
||||
@@ -3242,28 +3239,21 @@ msgstr ""
|
||||
"tâche."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Détecter les doublons de téléchargement"
|
||||
msgid "Identical download detection"
|
||||
msgstr "Détection des téléchargements identiques"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
"Détecter les fichiers NZB identiques (en fonction des éléments de votre "
|
||||
"historique ou des fichiers .nzb du dossier de backup)"
|
||||
"Détecter les téléchargements identiques basés sur le nom ou le contenu NZB."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Détecter les doublons d'épisodes de séries"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr "Détection intelligente des doublons"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgstr ""
|
||||
"Détecter les épisodes de série identiques (en fonction du modèle "
|
||||
"\"nom/saison/épisode\" des éléments de votre historique)"
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr "Détecter les doublons basés sur l'analyse du nom de fichier."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3271,11 +3261,11 @@ msgstr "Autoriser les versions corrigées (proper)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
"Contourner la détection des doublons si PROPER, REAL ou REPACK est détecté "
|
||||
"dans l'intitulé du téléchargement"
|
||||
"dans l'intitulé du téléchargement."
|
||||
|
||||
#. Four way switch for duplicates
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3365,6 +3355,14 @@ msgstr "Script utilisateur de pré-file d'attente"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Utilisé avant qu'un NZB n'entre dans la file d'attente."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr "Script de fin de file d'attente"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr "Exécuté après la fin du téléchargement de la file d'attente."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Paramètres PAR2 supplémentaires"
|
||||
@@ -4966,10 +4964,6 @@ msgstr ""
|
||||
"Protocole SSL inconnu: essayez de désactiver SSL ou de vous connecter sur un"
|
||||
" autre port."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Le serveur a interrompu l'ouverture de session."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Le serveur requiert un identifiant et un mot de passe."
|
||||
|
||||
284
po/main/he.po
284
po/main/he.po
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: ION, 2023\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
@@ -30,7 +30,7 @@ msgstr "שגיאה"
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
msgstr "נכשל בהתחלת ממשק רשת"
|
||||
msgstr "כישלון בהתחלת ממשק רשת"
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -116,7 +116,7 @@ msgstr "HTTPS הושבת בגלל קבצים בלתי תקפים של CERT ו־K
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface: "
|
||||
msgstr "נכשל בהתחלת ממשק רשת: "
|
||||
msgstr "כישלון בהתחלת ממשק רשת: "
|
||||
|
||||
#: SABnzbd.py
|
||||
msgid "SABnzbd %s started"
|
||||
@@ -165,8 +165,8 @@ msgid "Test Notification"
|
||||
msgstr "בחן התראה"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " פותר כתובת"
|
||||
msgid "Resolving address"
|
||||
msgstr "פותר כתובת"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -178,11 +178,6 @@ msgstr "אין"
|
||||
msgid "Default"
|
||||
msgstr "ברירת מחדל"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "עבור מונח חיפוש regex נכשל בליקוט: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -254,10 +249,6 @@ msgstr "מכסה נוצלה, משהה הורדה"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "פרמטר שגוי"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "נתיב UNC \"%s\" אינו מותר כאן"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s אינה כתובת דוא״ל תקפה"
|
||||
@@ -266,7 +257,7 @@ msgstr "%s אינה כתובת דוא״ל תקפה"
|
||||
msgid "Server address required"
|
||||
msgstr "כתובת שרת דרושה"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "כתובת שרת בלתי תקפה."
|
||||
|
||||
@@ -287,8 +278,20 @@ msgstr ""
|
||||
"הגדרת הרשאות של %s עשויה לדחות גישה מן SABnzbd אל הקבצים והתיקיות שהוא יוצר."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "שגיאה: התור אינו ריק, לא ניתן לשנות תיקייה."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "נתיב הרשת \"%s\" אינו מותר כאן"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "התור אינו ריק, לא ניתן לשנות תיקייה."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"תיקיית ההורדות השלמות אינה יכולה להיות אותה תיקייה או תת־תיקייה של תיקיית "
|
||||
"ההורדות הזמניות"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -296,6 +299,8 @@ msgid ""
|
||||
"Do not use a folder in the application folder as your Scripts Folder, it "
|
||||
"might be emptied during updates."
|
||||
msgstr ""
|
||||
"אל תשתמש בתיקייה בתוך תיקיית היישום כתיקיית התסריטים שלך, היא עשויה להתרוקן "
|
||||
"במהלך עדכונים."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
@@ -340,9 +345,9 @@ msgstr "פקודת SQL נכשלה, ראה יומן"
|
||||
#. Error message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "נכשל בסגירת מסד נתונים, ראה יומן"
|
||||
msgstr "כישלון בסגירת מסד נתונים, ראה יומן"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "רישום של אירוע בלתי תקף בהיסטוריה עבור %s"
|
||||
@@ -411,7 +416,7 @@ msgid "Paused"
|
||||
msgstr "מושהה"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "אתה חייב לקבוע רוחב פס מרבי לפני שאתה קובע מגבלת רוחב פס"
|
||||
|
||||
@@ -436,12 +441,12 @@ msgstr "אין שרתים פעילים!"
|
||||
#. Error message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Failed to initialize %s@%s with reason: %s"
|
||||
msgstr "נכשל באתחול %s@%s עם סיבה: %s"
|
||||
msgstr "כישלון באתחול %s@%s עם סיבה: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Fatal error in Downloader"
|
||||
msgstr ""
|
||||
msgstr "שגיאה גורלית במורידן"
|
||||
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Too many connections to server %s [%s]"
|
||||
@@ -452,10 +457,12 @@ msgid ""
|
||||
"Login from too many different IP addresses to server %s [%s] - "
|
||||
"https://sabnzbd.org/multiple-adresses"
|
||||
msgstr ""
|
||||
"כניסה מיותר מדי כתובות IP שונות אל שרת %s [%s] - "
|
||||
"https://sabnzbd.org/multiple-adresses"
|
||||
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Failed login for server %s [%s]"
|
||||
msgstr "נכשל בכניסה אל השרת %s [%s]"
|
||||
msgstr "כניסה נכשלה עבור שרת %s [%s]"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/downloader.py
|
||||
@@ -483,11 +490,11 @@ msgstr "השרת %s השתמש במכסה המצויינת"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "נכשל בהתחברות אל שרת דוא״ל"
|
||||
msgstr "כישלון בהתחברות אל שרת דוא״ל"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to initiate TLS connection"
|
||||
msgstr "נכשל ביזימת חיבור TLS"
|
||||
msgstr "כישלון ביזימת חיבור TLS"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "The server didn't reply properly to the helo greeting"
|
||||
@@ -495,7 +502,7 @@ msgstr "השרת לא הגיב כראוי לברכת השלום"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to authenticate to mail server"
|
||||
msgstr "נכשל באימות שרת הדוא״ל"
|
||||
msgstr "כישלון באימות שרת הדוא״ל"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "No suitable authentication method was found"
|
||||
@@ -507,11 +514,11 @@ msgstr "כישלון בלתי ידוע של אימות בשרת דוא״ל"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to send e-mail"
|
||||
msgstr "נכשל בשליחת דוא״ל"
|
||||
msgstr "כישלון בשליחת דוא״ל"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to close mail connection"
|
||||
msgstr "נכשל בסגירת חיבור דוא״ל"
|
||||
msgstr "כישלון בסגירת חיבור דוא״ל"
|
||||
|
||||
#: sabnzbd/emailer.py, sabnzbd/notifier.py
|
||||
msgid "Cannot send, missing required data"
|
||||
@@ -575,12 +582,12 @@ msgstr "לא ניתן לשנות הרשאות של %s"
|
||||
#. Error message
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Failed making (%s)"
|
||||
msgstr "נכשל בעשייה (%s)"
|
||||
msgstr "כישלון בעשייה (%s)"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/filesystem.py, sabnzbd/postproc.py
|
||||
msgid "Failed moving %s to %s"
|
||||
msgstr "נכשל בהעברת %s אל %s"
|
||||
msgstr "כישלון בהעברת %s אל %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/filesystem.py
|
||||
@@ -610,12 +617,12 @@ msgstr "%s אינו בר־כתיבה בכלל. זה חוסם הורדות."
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Cannot write a long filename to %s. This can cause problems."
|
||||
msgstr ""
|
||||
msgstr "בלתי ניתן לכתוב שם ארוך של קובץ אל %s. זה עשוי לגרום לבעיות."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Cannot write a unicode filename to %s. This can cause problems."
|
||||
msgstr ""
|
||||
msgstr "בלתי ניתן לכתוב שם יוניקוד של קובץ אל %s. זה עשוי לגרום לבעיות."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
@@ -664,14 +671,6 @@ msgstr "אימות נכשל, בדוק שם משתמש/סיסמה."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "ניסיון כניסה בלתי מוצלח מן %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"תיקיית ההורדות השלמות אינה יכולה להיות אותה תיקייה או תת־תיקייה של תיקיית "
|
||||
"ההורדות הזמניות"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr "ארכיון בלתי תקף של גיבוי"
|
||||
@@ -757,12 +756,12 @@ msgstr "עדכון זמין!"
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
msgstr "נכשל בהעלאת קובץ: %s"
|
||||
msgstr "כישלון בהעלאת קובץ: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Error creating SSL key and certificate"
|
||||
msgstr "נכשל ביצירה של מפתח ותעודה של SSL"
|
||||
msgstr "כישלון ביצירה של מפתח ותעודה של SSL"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/misc.py
|
||||
@@ -776,7 +775,7 @@ msgstr ""
|
||||
#. Warning message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to read the password file %s"
|
||||
msgstr "נכשל בקריאת קובץ הסיסמה %s"
|
||||
msgstr "כישלון בקריאת קובץ הסיסמה %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
@@ -804,7 +803,6 @@ msgstr "מיון סרטים"
|
||||
msgid "Running script"
|
||||
msgstr "מריץ תסריט"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "פריקת קינון ארוכה מדי [%s]"
|
||||
@@ -1071,18 +1069,28 @@ msgstr "תור הסתיים"
|
||||
msgid "Other Messages"
|
||||
msgstr "הודעות אחרות"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "פתח תיקיית השלמה"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "לא זמין"
|
||||
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Failed to send macOS notification"
|
||||
msgstr "נכשל בשליחת התראת macOS"
|
||||
msgstr "כישלון בשליחת התראת macOS"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "נכשל בשליחת הודעת Prowl"
|
||||
msgstr "כישלון בשליחת הודעת Prowl"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/notifier.py
|
||||
@@ -1092,7 +1100,7 @@ msgstr "תגובה רעה מאת Pushover (%s): %s"
|
||||
#. Error message - Warning message
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "נכשל בשליחת הודעת Pushover"
|
||||
msgstr "כישלון בשליחת הודעת Pushover"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/notifier.py
|
||||
@@ -1102,7 +1110,7 @@ msgstr "תגובה רעה מאת Pushbullet (%s): %s"
|
||||
#. Warning message
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Failed to send pushbullet message"
|
||||
msgstr "Pushbullet נכשל בשליחת הודעת"
|
||||
msgstr "כישלון בשליחת הודעת Pushbullet"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/notifier.py
|
||||
@@ -1115,7 +1123,7 @@ msgstr "תסריט ההתראה \"%s\" אינו קיים"
|
||||
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Failed to send Windows notification"
|
||||
msgstr "נכשל בשליחת התראת Windows"
|
||||
msgstr "כישלון בשליחת התראת Windows"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/nzbparser.py
|
||||
@@ -1135,7 +1143,7 @@ msgstr "שגיאה בהסרת %s"
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbparser.py
|
||||
msgid "Failed to import %s files from %s"
|
||||
msgstr "נכשל ביבוא %s קבצים מן %s"
|
||||
msgstr "כישלון ביבוא %s קבצים מן %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/nzbqueue.py
|
||||
@@ -1151,6 +1159,18 @@ msgstr "שגיאה בטעינת %s, קובץ פגום התגלה"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB התווסף לתור"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "מתעלם מן NZB כפול \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "מכשיל NZB כפול \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "NZB כפול"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1165,26 +1185,6 @@ msgstr "קובץ NZB ריק %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr "תסריט קדם־תור סומן כנכשל"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "מתעלם מן NZB כפול \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "מכשיל NZB כפול \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "NZB כפול"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "משהה NZB כפול \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1203,6 +1203,10 @@ msgstr "שגיאה ביבוא %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "כפול"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr "חלופה"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "מוצפן"
|
||||
@@ -1248,6 +1252,10 @@ msgstr "%s מאמרים היו חסרים"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "אל %s מאמרים יש כפילויות בלתי תואמות"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "משהה NZB כפול \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1473,6 +1481,11 @@ msgstr "שגיאה %s: אתה צריך לספק שם משתמש וסיסמה ת
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "תור ישן התגלה, השתמש במעמד->תיקון כדי להמיר את התור"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "כישלון בליקוט ביטוי רגולרי עבור מונח חיפוש: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1509,7 +1522,7 @@ msgstr "שגיאה בשינוי שם \"%s\" אל \"%s\""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to move files"
|
||||
msgstr "נכשל בהעברת קבצים"
|
||||
msgstr "כישלון בהעברת קבצים"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
@@ -1603,12 +1616,12 @@ msgstr "הסרת %s נכשלה"
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
msgstr "נכשל בחריפת מערכת"
|
||||
msgstr "כישלון בחריפת מערכת"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to standby system"
|
||||
msgstr "נכשל בהיכוננות מערכת"
|
||||
msgstr "כישלון בהיכוננות מערכת"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
@@ -1635,7 +1648,7 @@ msgstr "שגיאת צד שרת (קוד שרת %s); לא היה ניתן להשי
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Failed to retrieve RSS from %s: %s"
|
||||
msgstr "נכשל באחזור RSS מן %s: %s"
|
||||
msgstr "כישלון באחזור RSS מן %s: %s"
|
||||
|
||||
#: sabnzbd/rss.py, sabnzbd/urlgrabber.py
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
@@ -1659,10 +1672,6 @@ msgstr "כניסת RSS ריקה נמצאה (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "הראה ממשק"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "פתח תיקיית השלמה"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1751,6 +1760,11 @@ msgstr "אי־האפלה"
|
||||
msgid "Script"
|
||||
msgstr "תסריט"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2023,7 +2037,6 @@ msgstr "גרסת פייתון"
|
||||
msgid "Home page"
|
||||
msgstr "דף הבית"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "או"
|
||||
@@ -2090,8 +2103,8 @@ msgstr "פורום"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2123,11 +2136,6 @@ msgstr "מתגים"
|
||||
msgid "Scheduling"
|
||||
msgstr "תזמון"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2242,11 +2250,6 @@ msgstr "שם"
|
||||
msgid "Retry"
|
||||
msgstr "נסה שוב"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "פעולות"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2560,6 +2563,7 @@ msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
"platforms."
|
||||
msgstr ""
|
||||
"האץ תיקונים ע״י התקנת par2cmdline-turbo, הוא זמין עבור פלטפורמות רבות."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Version"
|
||||
@@ -2574,7 +2578,6 @@ msgstr "זמן פעולה"
|
||||
msgid "Backup"
|
||||
msgstr "גיבוי"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "קרא את עזרת וויקי על זה!"
|
||||
@@ -2933,7 +2936,7 @@ msgstr ""
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Use Sorting to automatically organize and rename your completed downloads."
|
||||
msgstr ""
|
||||
msgstr "השתמש במיון כדי לארגן ולשנות שם באופן אוטומטי את ההורדות השלמות שלך."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
@@ -3016,7 +3019,7 @@ msgstr "תיקיות מערכת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Hidden Folders"
|
||||
msgstr ""
|
||||
msgstr "תיקיות מוסתרות"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Administrative Folder"
|
||||
@@ -3059,7 +3062,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Purge Logs"
|
||||
msgstr ""
|
||||
msgstr "טהר יומנים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ".nzb Backup Folder"
|
||||
@@ -3132,25 +3135,20 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr "במקרה של \"השהיה\", תצטרך לקבוע סיסמה ולהמשיך את העבודה."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "גלה הורדות כפולות"
|
||||
msgid "Identical download detection"
|
||||
msgstr "גילוי הורדה זהה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgstr ""
|
||||
"גלה קבצי NZB זהים (על סמך פריטים בהיסטוריה שלך או קבצים בתיקיית גיבוי .nzb)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr "גלה הורדות זהות על סמך שם או תכני NZB."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "גלה פרקים כפולים בסדרות"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr "גילוי שכפולים חכם"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgstr "גלה פרקים זהים בסדרות (על סמך \"שם/עונה/פרק\" של פריטים בהיסטוריה שלך)"
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr "גלה שכפולים על סמך ניתוח של שם הקובץ."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3158,9 +3156,9 @@ msgstr "התר שחרורים תקינים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
msgstr "עקוף גילוי כפילויות סדרה אם PROPER, REAL או REPACK מתגלים בשם ההורדה"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr "עקוף גילוי שכפולים חכם אם PROPER, REAL או REPACK מתגלים בשם ההורדה."
|
||||
|
||||
#. Four way switch for duplicates
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3220,14 +3218,13 @@ msgstr "בצע וידוא נוסף שמבוסס על קבצי SFV."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
msgstr "תסריט משתמש יכול לסמן בדגל עבודה כנכשלה"
|
||||
msgstr "תסריט משתמש יכול לדגל עבודה כנכשלה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"When the user script returns a non-zero exit code, the job will be flagged "
|
||||
"as failed."
|
||||
msgstr ""
|
||||
"כאשר תסריט המשתמש מחזיר קוד יציאה בלתי אפסי, העבודה תסומן בדגל כנכשלה."
|
||||
msgstr "כאשר תסריט המשתמש מחזיר קוד יציאה בלתי אפסי, העבודה תדוגל כנכשלה."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Enable folder rename"
|
||||
@@ -3249,6 +3246,14 @@ msgstr "תסריט משתמש של קדם־תור"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "בשימוש לפני ש־NZB נכנס לתור."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr "תסריט בסיום תור"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr "מבוצע לאחר שהתור יסיים להוריד."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "פרמטרי PAR2 נוספים"
|
||||
@@ -4119,7 +4124,7 @@ msgstr "שם_סרט"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Show Name"
|
||||
msgstr "הראה שם"
|
||||
msgstr "שם סדרה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Show.Name"
|
||||
@@ -4127,7 +4132,7 @@ msgstr "שם.סדרה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Show_Name"
|
||||
msgstr "הראה_שם"
|
||||
msgstr "שם_סדרה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Season Number"
|
||||
@@ -4191,15 +4196,15 @@ msgstr "מחרוזת מיון"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-part Label"
|
||||
msgstr ""
|
||||
msgstr "תווית מרובת־חלקים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Show folder"
|
||||
msgstr ""
|
||||
msgstr "תיקיית סדרה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Season folder"
|
||||
msgstr ""
|
||||
msgstr "תיקיית עונה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "In folders"
|
||||
@@ -4215,7 +4220,7 @@ msgstr "שם עבודה בתור שם קובץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Series"
|
||||
msgstr ""
|
||||
msgstr "סדרות"
|
||||
|
||||
#. Note for title expression in Sorting that does case adjustment
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4248,27 +4253,27 @@ msgstr "GuessIt_Property"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Filesize"
|
||||
msgstr ""
|
||||
msgstr "גודל מזערי של קובץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Affected Job Types"
|
||||
msgstr ""
|
||||
msgstr "סוגי עבודה מושפעים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "All"
|
||||
msgstr "הכל"
|
||||
msgstr "הכול"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Series with air dates"
|
||||
msgstr ""
|
||||
msgstr "סדרות עם תאריכי שידור"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Movies"
|
||||
msgstr ""
|
||||
msgstr "סרטים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Other / Unknown"
|
||||
msgstr ""
|
||||
msgstr "אחר / בלתי ידוע"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -4280,34 +4285,39 @@ msgid ""
|
||||
"applied.</p><p>More options are available when Advanced Settings is "
|
||||
"checked.<br/>Detailed information can be found on the Wiki.</p>"
|
||||
msgstr ""
|
||||
"<p>השתמש בממיינים כדי לארגן באופן אוטומטי את ההורדות השלמות שלך. לדוגמה, שים"
|
||||
" את כל הפרקים מסדרה בתיקייה של עונה מסויימת.</p><p>ממיינים מנוסים לפי סדר "
|
||||
"הופעתם ויכולים להסתדר מחדש על ידי גרירה ושחרור.<br/>הממיין הפעיל הראשון "
|
||||
"שתואם אל הקטגוריה המושפעת ואל סוג העבודה הוא זה שמוחל.</p><p>עוד אפשרויות "
|
||||
"זמינות כאשר האפשרות הגדרות מתקדמות מסומנת.<br/>מידע מפורט נמצא בוויקי.</p>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Sorter"
|
||||
msgstr ""
|
||||
msgstr "הוסף ממיין"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Remove Sorter"
|
||||
msgstr ""
|
||||
msgstr "הסר ממיין"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Test Data"
|
||||
msgstr ""
|
||||
msgstr "בחן נתונים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Quick start"
|
||||
msgstr ""
|
||||
msgstr "התחלה זריזה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Move and rename all episodes in the \"tv\" category to a show-specific "
|
||||
"folder"
|
||||
msgstr ""
|
||||
msgstr "העבר ושנה שם את כל הפרקים בקטגוריה \"טלוויזיה\" אל תיקייה של סדרה מסויימת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Move and rename all movies in the \"movies\" category to a movie-specific "
|
||||
"folder"
|
||||
msgstr ""
|
||||
msgstr "העבר ושנה שם את כל הסרטים בקטגוריה \"סרטים\" אל תיקייה של סרט מסויים"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -4549,7 +4559,7 @@ msgstr "קיצורי דרך במקלדת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Shift+Arrow key: Browse Queue and History pages"
|
||||
msgstr ""
|
||||
msgstr "Shift+מקש חץ: עיין בתור ובדפי היסטוריה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "How long or untill when do you want to pause? (in English!)"
|
||||
@@ -4728,12 +4738,12 @@ msgstr ""
|
||||
#. Error message
|
||||
#: sabnzbd/sorting.py
|
||||
msgid "Failed to rename %s to %s"
|
||||
msgstr ""
|
||||
msgstr "כישלון בשינוי שם %s אל %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/sorting.py
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "נכשל בשינוי שם של קובץ דומה: %s אל %s"
|
||||
msgstr "כישלון בשינוי שם של קובץ דומה: %s אל %s"
|
||||
|
||||
#: sabnzbd/urlgrabber.py
|
||||
msgid "Unauthorized access"
|
||||
@@ -4793,10 +4803,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr "פרוטוקול SSL בלתי ידוע: נסה להשבית SSL או להתחבר על פתחה שונה."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "שרת יצא במהלך רצף כניסות."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr ".השרת דורש שם משתמש וסיסמה"
|
||||
|
||||
158
po/main/nb.po
158
po/main/nb.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
|
||||
@@ -164,8 +164,8 @@ msgid "Test Notification"
|
||||
msgstr "Test varslingen"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Løs adresse"
|
||||
msgid "Resolving address"
|
||||
msgstr "Løs adresse"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -177,11 +177,6 @@ msgstr "Ingen"
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Kunne ikke lage regex for søkestreng: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -252,10 +247,6 @@ msgstr "Kvote oppbrukt, setter nedlasting på pause"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Feil parameter"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-sti \"%s\" er ikke tillatt her"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s er ikke en godkjent e-post-adresse"
|
||||
@@ -264,7 +255,7 @@ msgstr "%s er ikke en godkjent e-post-adresse"
|
||||
msgid "Server address required"
|
||||
msgstr "Krever server-adresse"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Ugyldig server-adresse."
|
||||
|
||||
@@ -284,8 +275,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Feil: Køen er ikke tom, kan ikke bytte mappe."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Køen er ikke tom, kan ikke bytte mappe."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -339,7 +340,7 @@ msgstr "SQL-kommando mislyktes, se logg"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Kunne ikke stenge databasen, se logg"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Ugyldig scenen logging i historien for %s"
|
||||
@@ -406,7 +407,7 @@ msgid "Paused"
|
||||
msgstr "Pauset"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "Du må sette maks båndbredde før du kan sette en båndbreddebegrensning"
|
||||
|
||||
@@ -661,12 +662,6 @@ msgstr "Godkjenning mislyktes, kontroller brukernavn og passord."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Mislykket påloggingsforsøk fra %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -797,7 +792,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Kjører skript"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Utpakking nestet for dypt [%s]"
|
||||
@@ -1064,6 +1058,16 @@ msgstr "Køen er ferdig"
|
||||
msgid "Other Messages"
|
||||
msgstr "Andre meldinger"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Åpne fullført mappe"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Ikke tilgjengelig"
|
||||
@@ -1144,6 +1148,18 @@ msgstr "Lastingsfeil %s, feilaktig fil oppdaget"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB er lagt til i køen"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorerer duplikatfil \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1158,26 +1174,6 @@ msgstr "Tom NZB-fil %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorerer duplikatfil \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Stanser duplikatfil \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1196,6 +1192,10 @@ msgstr "Kunne ikke importere %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLIKAT"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "KRYPTERT"
|
||||
@@ -1241,6 +1241,10 @@ msgstr "%s artikler manglet"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artikler hadde ulike duplikater"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Stanser duplikatfil \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1464,6 +1468,11 @@ msgstr "Feil %s: Du må oppgi et gyldig brukernavn og passord."
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Gammel kø oppdaget. Bruk Status -> Reparer for å konvertere køen"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Kunne ikke lage regex for søkestreng: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1648,10 +1657,6 @@ msgstr "Tom RSS post funnet (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Vis grensesnitt"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Åpne fullført mappe"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1740,6 +1745,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2012,7 +2022,6 @@ msgstr "Python-versjon"
|
||||
msgid "Home page"
|
||||
msgstr "Startside"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "eller"
|
||||
@@ -2079,8 +2088,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2112,11 +2121,6 @@ msgstr "Svitsjer"
|
||||
msgid "Scheduling"
|
||||
msgstr "Nedlastingsplan"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2231,11 +2235,6 @@ msgstr "Navn"
|
||||
msgid "Retry"
|
||||
msgstr "Prøv igjen"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Hendelser"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2559,7 +2558,6 @@ msgstr "Oppetid"
|
||||
msgid "Backup"
|
||||
msgstr "Sikkerhetskopi"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Les Wiki Help fer dette!"
|
||||
@@ -3109,23 +3107,19 @@ msgstr ""
|
||||
"I tilfelle \"Pause\", så trenger du å sette et passord og gjenoppta jobben."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Oppdag duplikatnedlastinger"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Oppdag duplikat episoder i serie"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3134,8 +3128,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3224,6 +3218,14 @@ msgstr "Før-kø bruker skript"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Brukes før en NZB blir lagt til kø"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Ekstra PAR2 parametere"
|
||||
@@ -4760,10 +4762,6 @@ msgstr ""
|
||||
"Ukjent SSL-protokoll: Prøv å deaktivere SSL eller koble til på en annen "
|
||||
"port."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Server avbrøt undet innloggingssekvens"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Server krever brukernavn og passord."
|
||||
|
||||
222
po/main/nl.po
222
po/main/nl.po
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
@@ -172,8 +172,8 @@ msgid "Test Notification"
|
||||
msgstr "Test melding"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Adres opzoeken"
|
||||
msgid "Resolving address"
|
||||
msgstr "Adres opzoeken"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -185,11 +185,6 @@ msgstr "Geen"
|
||||
msgid "Default"
|
||||
msgstr "Standaard"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Het compileren van 'regex' voor de zoekterm lukt niet: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -268,10 +263,6 @@ msgstr "Quotum verbruikt, download is gestopt"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Incorrecte parameter"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-pad '%s' hier niet toegestaan."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s is geen geldig e-mailadres"
|
||||
@@ -280,7 +271,7 @@ msgstr "%s is geen geldig e-mailadres"
|
||||
msgid "Server address required"
|
||||
msgstr "Serveradres verplicht"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Ongeldige servernaam"
|
||||
|
||||
@@ -302,8 +293,20 @@ msgstr ""
|
||||
"tot de aangemaakte bestanden en mappen."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Fout: Wachtrij is niet leeg, andere map kiezen niet mogelijk."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr "Netwerk-pad \"%s\" hier niet toegestaan."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Wachtrij is niet leeg, andere map kiezen niet mogelijk."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"De Map voor verwerkte downloads mag niet een map in de Tijdelijke download "
|
||||
"map zijn."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -311,6 +314,9 @@ msgid ""
|
||||
"Do not use a folder in the application folder as your Scripts Folder, it "
|
||||
"might be emptied during updates."
|
||||
msgstr ""
|
||||
"Als de Map voor scripts zich in de SABnzbd installatie-map bevindt kan deze "
|
||||
"automatisch verwijderd worden tijdens updates. We adviseren een andere "
|
||||
"locatie te gebruiken voor je scripts."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
@@ -360,7 +366,7 @@ msgstr "SQL-commando mislukt, zie logbestand"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Het lukt niet om de database te sluiten, zie log"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Ongeldig loggen van fase in geschiedenis voor %s"
|
||||
@@ -432,7 +438,7 @@ msgid "Paused"
|
||||
msgstr "Gepauzeerd"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Je moet eerst een maximumbandbreedte instellen voordat je een limiet kunt "
|
||||
@@ -464,7 +470,7 @@ msgstr "Initialisatie van %s@%s mislukt, vanwege: %s"
|
||||
#. Error message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Fatal error in Downloader"
|
||||
msgstr ""
|
||||
msgstr "Onherstelbare fout in de Downloader"
|
||||
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Too many connections to server %s [%s]"
|
||||
@@ -638,11 +644,15 @@ msgstr ""
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Cannot write a long filename to %s. This can cause problems."
|
||||
msgstr ""
|
||||
"Bestanden met lange bestandsnamen kunnen niet worden opgeslagen in %s. Dit "
|
||||
"kan voor problemen zorgen tijdens het downloaden."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
msgid "Cannot write a unicode filename to %s. This can cause problems."
|
||||
msgstr ""
|
||||
"Bestanden met speciale karakters in de bestandsnaam kunnen niet worden "
|
||||
"opgeslagen in %s. Dit kan voor problemen zorgen tijdens het downloaden."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/filesystem.py
|
||||
@@ -695,14 +705,6 @@ msgstr "Inloggen mislukt, controleer gebruikersnaam en wachtwoord."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Mislukte login poging van %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"De Map voor verwerkte downloads mag niet een map in de Tijdelijke download "
|
||||
"map zijn."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr "Ongeldig backup bestand"
|
||||
@@ -838,7 +840,6 @@ msgstr "Film sorteren"
|
||||
msgid "Running script"
|
||||
msgstr "Script uitvoeren"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Teveel niveaus om uit te pakken [%s]"
|
||||
@@ -1110,6 +1111,16 @@ msgstr "Wachtrij voltooid"
|
||||
msgid "Other Messages"
|
||||
msgstr "Andere berichten"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr "Open map"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Open map met voltooide downloads"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Niet beschikbaar"
|
||||
@@ -1190,6 +1201,18 @@ msgstr "Fout bij inladen van %s, corrupt bestand gevonden"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "Download aan wachtrij toegevoegd"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Dubbele download \"%s\" overgeslagen"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Download '%s' geweigerd omdat het een dubbele is"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Dubbele download"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1204,26 +1227,6 @@ msgstr "NZB-bestand %s is leeg"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr "Wachtrij filter script heeft de download afgekeurd"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Dubbele download \"%s\" overgeslagen"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Download '%s' geweigerd omdat het een dubbele is"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "Dubbele download"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Dubbele download \"%s\" gepauzeerd"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1242,6 +1245,10 @@ msgstr "Fout bij importeren van %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUBBEL"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr "ALTERNATIEF"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "VERSLEUTELD"
|
||||
@@ -1287,6 +1294,10 @@ msgstr "%s artikelen ontbreken"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artikelen hadden afwijkende duplicaten"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Dubbele download \"%s\" gepauzeerd"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1512,6 +1523,11 @@ msgstr "Fout %s: Je moet een geldige gebruikersnaam en wachtwoord invullen."
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Oude wachtrij gevonden, gebruik Status->Reparatie om te converteren"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Het compileren van 'regex' voor de zoekterm lukt niet: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1699,10 +1715,6 @@ msgstr "Lege RSS-feed gevonden (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Toon webinterface"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Open map met voltooide downloads"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1791,6 +1803,11 @@ msgstr "Bestandsnaam verbeteren"
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2063,7 +2080,6 @@ msgstr "Python versie"
|
||||
msgid "Home page"
|
||||
msgstr "Startpagina"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "of"
|
||||
@@ -2130,8 +2146,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2163,11 +2179,6 @@ msgstr "Opties"
|
||||
msgid "Scheduling"
|
||||
msgstr "Taakplanner"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2282,11 +2293,6 @@ msgstr "Naam"
|
||||
msgid "Retry"
|
||||
msgstr "Opnieuw"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Acties"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2606,6 +2612,8 @@ msgid ""
|
||||
"Speed up repairs by installing par2cmdline-turbo, it is available for many "
|
||||
"platforms."
|
||||
msgstr ""
|
||||
"Versnel reparaties door par2cmdline-turbo te installeren. Beschikbaar voor "
|
||||
"veel besturingssystemen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Version"
|
||||
@@ -2620,7 +2628,6 @@ msgstr "Tijd in de lucht"
|
||||
msgid "Backup"
|
||||
msgstr "Reserve"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Lees de Wiki pagina over dit onderwerp"
|
||||
@@ -2988,6 +2995,8 @@ msgstr "(kan aangepast worden door de categorieën)."
|
||||
msgid ""
|
||||
"Use Sorting to automatically organize and rename your completed downloads."
|
||||
msgstr ""
|
||||
"Gebruik Sorteren om automatisch je voltooide downloads te organiseren en "
|
||||
"hernoemen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
@@ -3072,7 +3081,7 @@ msgstr "Systeemmappen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Hidden Folders"
|
||||
msgstr ""
|
||||
msgstr "Verborgen mappen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Administrative Folder"
|
||||
@@ -3119,7 +3128,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Purge Logs"
|
||||
msgstr ""
|
||||
msgstr "Logs wissen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ".nzb Backup Folder"
|
||||
@@ -3198,28 +3207,22 @@ msgstr ""
|
||||
"download vrij te geven"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Detecteer dubbele downloads"
|
||||
msgid "Identical download detection"
|
||||
msgstr "Identieke downloaddetectie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
"Detecteer identieke downloads (op basis van downloads in je Geschiedenis of "
|
||||
"bestanden in je .nzb backup map)."
|
||||
"Detecteer identieke downloads op basis van de naam of de inhoud van de NZB."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Detecteer dubbele afleveringen in series"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr "Slimme detectie van dubbele downloads"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
"Detecteer identieke afleveringen in series (gebaseerd op "
|
||||
"\"naam/seizoen/aflevering\" van downloads in je Geschiedenis)."
|
||||
"Detecteer dubbele downloads op basis van de analyse van de bestandsnaam."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3227,11 +3230,11 @@ msgstr "Sta verbeterde downloads toe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
"Sla dubbele download detectie over als er in de naam van de download PROPER,"
|
||||
" REAL of REPACK bevat"
|
||||
"Sla slimme detectie van dubbele downloads over als de naam van de download "
|
||||
"PROPER, REAL of REPACK bevat."
|
||||
|
||||
#. Four way switch for duplicates
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3321,6 +3324,14 @@ msgstr "Wachtrij-filter script"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Word uitgevoerd vóór een download aan de wachtrij word toegevoegd"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr "Script voor na het afronden van de wachtrij"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr "Script wordt uitgevoerd nadat de wachtrij is gedownload."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Extra PAR2 parameters"
|
||||
@@ -4291,15 +4302,15 @@ msgstr "Sorteertekst"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-part Label"
|
||||
msgstr ""
|
||||
msgstr "Meervoudig label"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Show folder"
|
||||
msgstr ""
|
||||
msgstr "Map per serie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Season folder"
|
||||
msgstr ""
|
||||
msgstr "Map per seizoen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "In folders"
|
||||
@@ -4315,7 +4326,7 @@ msgstr "Downloadnaam als Bestandsnaam"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Series"
|
||||
msgstr ""
|
||||
msgstr "Series"
|
||||
|
||||
#. Note for title expression in Sorting that does case adjustment
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4352,7 +4363,7 @@ msgstr "Minimale bestandsgrootte"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Affected Job Types"
|
||||
msgstr ""
|
||||
msgstr "Type downloads"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "All"
|
||||
@@ -4360,15 +4371,15 @@ msgstr "alles"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Series with air dates"
|
||||
msgstr ""
|
||||
msgstr "Series met datums"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Movies"
|
||||
msgstr ""
|
||||
msgstr "Films"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Other / Unknown"
|
||||
msgstr ""
|
||||
msgstr "Anders / Onbekend"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -4380,34 +4391,43 @@ msgid ""
|
||||
"applied.</p><p>More options are available when Advanced Settings is "
|
||||
"checked.<br/>Detailed information can be found on the Wiki.</p>"
|
||||
msgstr ""
|
||||
"<p>Gebruik Sorteren om automatisch je voltooide downloads te organiseren. Bijvoorbeeld het automatisch verplaatsen van alle afleveringen van een serie in een seizoensspecifieke map. Of plaats films in een map met de naam van de film.</p>\n"
|
||||
"\n"
|
||||
"<p>Sorteringen worden in de getoonde volgorde geprobeerd en kunnen worden herschikt door ze te slepen.<br/> De eerste actieve Sortering die overeenkomt met zowel de betreffende categorie als het type taak wordt toegepast.</p>\n"
|
||||
"\n"
|
||||
"<p>Meer opties zijn beschikbaar wanneer Geavanceerde instellingen zijn aangevinkt.<br/> Gedetailleerde informatie is te vinden op de Wiki.</p>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Sorter"
|
||||
msgstr ""
|
||||
msgstr "Sortering toevoegen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Remove Sorter"
|
||||
msgstr ""
|
||||
msgstr "Sortering verwijderen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Test Data"
|
||||
msgstr ""
|
||||
msgstr "Testgegevens"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Quick start"
|
||||
msgstr ""
|
||||
msgstr "Snel beginnen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Move and rename all episodes in the \"tv\" category to a show-specific "
|
||||
"folder"
|
||||
msgstr ""
|
||||
"Verplaats en hernoem alle afleveringen in de \"tv\" categorie naar een "
|
||||
"specifieke map voor de serie."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Move and rename all movies in the \"movies\" category to a movie-specific "
|
||||
"folder"
|
||||
msgstr ""
|
||||
"Verplaats en hernoem alle films in de categorie \"films\" naar een "
|
||||
"specifieke map voor de film."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -4650,7 +4670,7 @@ msgstr "Sneltoetsen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Shift+Arrow key: Browse Queue and History pages"
|
||||
msgstr ""
|
||||
msgstr "Shift+Pijltoets: Blader door de wachtrij- en geschiedenispagina's"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "How long or untill when do you want to pause? (in English!)"
|
||||
@@ -4829,7 +4849,7 @@ msgstr ""
|
||||
#. Error message
|
||||
#: sabnzbd/sorting.py
|
||||
msgid "Failed to rename %s to %s"
|
||||
msgstr ""
|
||||
msgstr "Hernoemen van %s naar %s mislukt"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/sorting.py
|
||||
@@ -4897,10 +4917,6 @@ msgid ""
|
||||
msgstr ""
|
||||
"Onbekend SSL protocol: probeer het zonder SSL of probeer een andere poort."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "De server stopte tijdens de login"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Server heeft een gebruikersnaam en een wachtwoord nodig."
|
||||
|
||||
158
po/main/pl.po
158
po/main/pl.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
|
||||
@@ -160,8 +160,8 @@ msgid "Test Notification"
|
||||
msgstr "Powiadomienie testowe"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Rozwiązywanie adresu"
|
||||
msgid "Resolving address"
|
||||
msgstr "Rozwiązywanie adresu"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -173,11 +173,6 @@ msgstr "Brak"
|
||||
msgid "Default"
|
||||
msgstr "Domyślne"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Błąd kompilacji wyrażenia regularnego dla wyszukiwania: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -248,10 +243,6 @@ msgstr "Przekroczono limit, wstrzymywanie pobierania"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Błędny parametr"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "Ścieżka UNC \"%s\" niedozwolona"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s nie jest prawidłowym adresem email"
|
||||
@@ -260,7 +251,7 @@ msgstr "%s nie jest prawidłowym adresem email"
|
||||
msgid "Server address required"
|
||||
msgstr "Wymagane jest podanie adresu serwera"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Nieprawidłowy adres serwera."
|
||||
|
||||
@@ -280,8 +271,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Błąd: Kolejka nie jest pusta, nie można zmienić katalogu."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Kolejka nie jest pusta, nie można zmienić katalogu."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -335,7 +336,7 @@ msgstr "Błąd polecenia SQL, sprawdź logi"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Błąd zamykania bazy danych, sprawdź logi"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Nieprawidłowy log etapu w historii dla %s"
|
||||
@@ -402,7 +403,7 @@ msgid "Paused"
|
||||
msgstr "Wstrzymano"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Przed ustawieniem limitu przepustowości należy ustawić maksymalną "
|
||||
@@ -661,12 +662,6 @@ msgstr "Błąd połączenia, sprawdź nazwę użytkownika i hasło."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -797,7 +792,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Uruchamianie skryptu"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Zbyt głęboki poziom zagnieżdżenia podczas rozpakowywania [%s]"
|
||||
@@ -1066,6 +1060,16 @@ msgstr "Kolejka ukończona"
|
||||
msgid "Other Messages"
|
||||
msgstr "Inne komunikaty"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otwórz katalog zakończonych"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Niedostępne"
|
||||
@@ -1146,6 +1150,18 @@ msgstr "Błąd ładowania %s, wykryto uszkodzony plik"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB dodany do kolejki"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignoruję zduplikowany NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1160,26 +1176,6 @@ msgstr "Pusty plik NZB %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignoruję zduplikowany NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Wstrzymuję zduplikowany NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1198,6 +1194,10 @@ msgstr "Błąd importu %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLIKAT"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "ZASZYFROWANY"
|
||||
@@ -1243,6 +1243,10 @@ msgstr "Brakowało %s artykułów"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artykułów posiadało niepasujące duplikaty"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Wstrzymuję zduplikowany NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1470,6 +1474,11 @@ msgstr ""
|
||||
"Wykryto kolejkę w starszej wersji, użyj funkcji Status->Naprawa, aby ją "
|
||||
"przekonwertować"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Błąd kompilacji wyrażenia regularnego dla wyszukiwania: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1654,10 +1663,6 @@ msgstr "Znaleziono pusty wpis RSS (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Pokaż interfejs"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otwórz katalog zakończonych"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1746,6 +1751,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Skrypt"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2018,7 +2028,6 @@ msgstr "Wersja Pythona"
|
||||
msgid "Home page"
|
||||
msgstr "Strona projektu"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "lub"
|
||||
@@ -2085,8 +2094,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2118,11 +2127,6 @@ msgstr "Przełączniki"
|
||||
msgid "Scheduling"
|
||||
msgstr "Harmonogram"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2237,11 +2241,6 @@ msgstr "Nazwa"
|
||||
msgid "Retry"
|
||||
msgstr "Ponów"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Działania"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2564,7 +2563,6 @@ msgstr "Czas działania"
|
||||
msgid "Backup"
|
||||
msgstr "Zapasowy"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Przeczytaj o tym w Wiki!"
|
||||
@@ -3117,23 +3115,19 @@ msgstr ""
|
||||
"Jeśli wybrano \"Wstrzymaj\", będzie trzeba ustawić hasło i wznowić zadanie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Działanie dla duplikatów"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Wykryj zduplikowane odcinki seriali"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3142,8 +3136,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3232,6 +3226,14 @@ msgstr "Skrypt użytkownika przed zakolejkowaniem"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Uruchamiany zanim plik NZB zostanie umieszczony w kolejce"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Dodatkowe parametry PAR2"
|
||||
@@ -4769,10 +4771,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Serwer przerwał połączenie w trakcie logowania."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Serwer wymaga podania nazwy użytkownika i hasła."
|
||||
|
||||
183
po/main/pt_BR.po
183
po/main/pt_BR.po
@@ -2,11 +2,12 @@
|
||||
# Copyright 2007-2023 The SABnzbd-Team
|
||||
#
|
||||
# Translators:
|
||||
# Henrique Moreno, 2023
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
|
||||
@@ -67,7 +68,7 @@ msgstr "aplicativo 7za... NÃO encontrado!"
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Essential modules are missing, downloading cannot start."
|
||||
msgstr ""
|
||||
msgstr "Módulos essenciais estão faltando, não é possível baixar."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -89,6 +90,8 @@ msgid ""
|
||||
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
|
||||
"with Unicoded file and directory names in downloads."
|
||||
msgstr ""
|
||||
"SABnzbd iniciou com codificado %s, deveria ser UFT-8. Esperado problemas com"
|
||||
" arquivos e nomes de diretórios Unicode nos downloades."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -96,11 +99,13 @@ msgid ""
|
||||
"Current umask (%o) might deny SABnzbd access to the files and folders it "
|
||||
"creates."
|
||||
msgstr ""
|
||||
"Mascara atual (%o) pode negar ao SABnzbd acesso aos arquivos e diretórios "
|
||||
"criados."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
msgid "Could not load additional certificates from certifi package"
|
||||
msgstr ""
|
||||
msgstr "Não foi possível carregar certificado do pacote certifi."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -110,7 +115,7 @@ msgstr "HTTPS desabilitado pela falta de arquivos CERT e KEY"
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
msgid "Disabled HTTPS because of invalid CERT and KEY files"
|
||||
msgstr ""
|
||||
msgstr "HTTPs desabilitado por caus de arquivo CERT e KEY invalidos"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
@@ -138,22 +143,22 @@ msgstr "Erro fatal ao salvar estado"
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Restarting because of crashed postprocessor"
|
||||
msgstr ""
|
||||
msgstr "Reiniciado por falha de pós processamento."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Restarting because of crashed downloader"
|
||||
msgstr ""
|
||||
msgstr "Reiniciado por falha de download"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Restarting because of crashed assembler"
|
||||
msgstr ""
|
||||
msgstr "Reiniciado por falha de assembler"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Cannot access PID file %s"
|
||||
msgstr ""
|
||||
msgstr "Não é possível acessar arquivo PID %s"
|
||||
|
||||
#: sabnzbd/api.py, sabnzbd/emailer.py
|
||||
msgid "Email succeeded"
|
||||
@@ -164,8 +169,8 @@ msgid "Test Notification"
|
||||
msgstr "Notificação de teste"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Resolvendo endereço"
|
||||
msgid "Resolving address"
|
||||
msgstr "Resolvendo endereço"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -177,11 +182,6 @@ msgstr "Nenhum"
|
||||
msgid "Default"
|
||||
msgstr "Padrão"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Falha ao compilar a expressão para o termo pesquisado: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -208,6 +208,8 @@ msgid ""
|
||||
"Paused job \"%s\" because of encrypted RAR file (if supplied, all passwords "
|
||||
"were tried)"
|
||||
msgstr ""
|
||||
"Tarefa \"%s\" pausado por causa de arquivo RAR encripitado (se fornecido, "
|
||||
"todos as senhas foram tentadas)"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/assembler.py
|
||||
@@ -215,6 +217,8 @@ msgid ""
|
||||
"Aborted job \"%s\" because of encrypted RAR file (if supplied, all passwords"
|
||||
" were tried)"
|
||||
msgstr ""
|
||||
"Tarefa \"%s\" abortado por causa de arquivo RAR encripitado (se fornecido, "
|
||||
"todos as senhas foram tentadas)"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Aborted, encryption detected"
|
||||
@@ -224,6 +228,8 @@ msgstr "Cancelado, criptografia detectada"
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "In \"%s\" unwanted extension in RAR file. Unwanted file is %s "
|
||||
msgstr ""
|
||||
"Em \"%s\" extensão não necessária em arquivo RAR. Arquivo não necessário é "
|
||||
"%s "
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Unwanted extension is in rar file %s"
|
||||
@@ -252,10 +258,6 @@ msgstr "Quota esgotada, pausando o download"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Parâmetro incorreto"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "O caminho UNC \"%s\" não é permitido aqui"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s não é um endereço de e-mail válido"
|
||||
@@ -264,7 +266,7 @@ msgstr "%s não é um endereço de e-mail válido"
|
||||
msgid "Server address required"
|
||||
msgstr "Endereço do servidor necessário"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Endereço do servidor inválido."
|
||||
|
||||
@@ -284,8 +286,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Erro: A fila não está vazia. Não será possível mudar de pasta."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "A fila não está vazia. Não será possível mudar de pasta."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -341,7 +353,7 @@ msgstr "O comando SQL falhou. Consulte o log"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Falha ao fechar o banco de dados. Consulte o log"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Registro inválido de etapa no histórico para %s"
|
||||
@@ -408,7 +420,7 @@ msgid "Paused"
|
||||
msgstr "Pausado"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Você deve definir a largura de banda máxima antes de definir um limite de "
|
||||
@@ -665,12 +677,6 @@ msgstr "Falha de autenticação, verifique usuário / senha."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -801,7 +807,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Executando script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Aninhamento de descompactação com muitos níveis [%s]"
|
||||
@@ -1067,6 +1072,16 @@ msgstr "Fila concluída"
|
||||
msgid "Other Messages"
|
||||
msgstr "Outras Mensagens"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Abrir pasta de finalizados"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Não disponível"
|
||||
@@ -1147,6 +1162,18 @@ msgstr "Erro ao carregar %s. Arquivo corrompido detectado"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB adicionado à fila"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorando NZB duplicado \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1161,26 +1188,6 @@ msgstr "Arquivo NZB %s vazio"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorando NZB duplicado \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausando NZB duplicado \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1199,6 +1206,10 @@ msgstr "Erro ao importar %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLICADO"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "CRIPTOGRAFADO"
|
||||
@@ -1244,6 +1255,10 @@ msgstr "%s artigos estavam faltando"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artigos tinham duplicatas não-correspondentes"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausando NZB duplicado \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1471,6 +1486,11 @@ msgstr ""
|
||||
"Fila antiga detectada, use \"Situação -> Reparação da fila\" para converter "
|
||||
"a fila"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Falha ao compilar a expressão para o termo pesquisado: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1657,10 +1677,6 @@ msgstr "Entrada RSS vazia encontrada (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Exibir interface"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Abrir pasta de finalizados"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1749,6 +1765,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2021,7 +2042,6 @@ msgstr "Versão do Python"
|
||||
msgid "Home page"
|
||||
msgstr "Página inicial"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "ou"
|
||||
@@ -2088,8 +2108,8 @@ msgstr "Fórum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2121,11 +2141,6 @@ msgstr "Opções"
|
||||
msgid "Scheduling"
|
||||
msgstr "Agendamento"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2240,11 +2255,6 @@ msgstr "Nome"
|
||||
msgid "Retry"
|
||||
msgstr "Repetir"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Ações"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2567,7 +2577,6 @@ msgstr "Tempo ativo"
|
||||
msgid "Backup"
|
||||
msgstr "Backup"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Leia a sessão ajuda no Wiki sobre isso!"
|
||||
@@ -3119,23 +3128,19 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr "Em caso de \"Pausa\", você precisa definir uma senha e retomar a tarefa."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Detectar Downloads Duplicados"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Detecta episódios duplicados em séries"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3144,8 +3149,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3234,6 +3239,14 @@ msgstr "Script de usuário de pré-fila"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Utilizado antes de um NZB entrar na fila."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Parâmetros Extras PAR2"
|
||||
@@ -4769,10 +4782,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Servidor parou durante a sequência de login."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Servidor requer usuário e senha."
|
||||
|
||||
162
po/main/ro.po
162
po/main/ro.po
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
|
||||
@@ -169,8 +169,8 @@ msgid "Test Notification"
|
||||
msgstr "Notificări Test"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Reolvare adresă"
|
||||
msgid "Resolving address"
|
||||
msgstr "Reolvare adresă"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -182,11 +182,6 @@ msgstr "Niciunul"
|
||||
msgid "Default"
|
||||
msgstr "Implicit"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Compilarea unei căutări regex nereuşită: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -263,10 +258,6 @@ msgstr "Cotă epuizată, întrerupem descărcarea"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Parametru Incorect"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "cale UNC \"%s\" nu este premisă aici"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s nu este o adresă email validă"
|
||||
@@ -275,7 +266,7 @@ msgstr "%s nu este o adresă email validă"
|
||||
msgid "Server address required"
|
||||
msgstr "Adresă server necesară"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Adresă server invalidă"
|
||||
|
||||
@@ -295,8 +286,20 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Eroare: Coada nu este goală, nu pot schimba dosar."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Coada nu este goală, nu pot schimba dosar."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Directorul de descărcări finalizate nu poate fi același, sau un subdirector "
|
||||
"al directorului de descărcări temporare"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -351,7 +354,7 @@ msgstr "Comandă SQL Nereuşită, vedeţi jurnal"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Închidere bază de date nereuşită, vedeţi jurnal"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Jurnal istoric stagii invalid pentru %s"
|
||||
@@ -421,7 +424,7 @@ msgid "Paused"
|
||||
msgstr "Întrerupt"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Trebuie să seta-ţi lățimea de bandă maximă înainte de a seta o limită de "
|
||||
@@ -678,14 +681,6 @@ msgstr "Autentificare nereuşită, verifică nume utilizator/parolă."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "Încercare de conectare nereușită de la %s"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Directorul de descărcări finalizate nu poate fi același, sau un subdirector "
|
||||
"al directorului de descărcări temporare"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -820,7 +815,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Rulare script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Numărul de arhive încorporate este prea mare [%s]"
|
||||
@@ -1092,6 +1086,16 @@ msgstr "Coadă finalizată"
|
||||
msgid "Other Messages"
|
||||
msgstr "Alte Mesaje"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Deschide dosar descărcări complete"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Indisponibil"
|
||||
@@ -1172,6 +1176,18 @@ msgstr "Eroare încărcare %s, fişier corupt detectat"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB adăugat în coadă"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorăm duplicat NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Eșuare duplicat NZB „%s”"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "NZB duplicat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1186,26 +1202,6 @@ msgstr "Fişier NZB gol %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr "Scriptul pre-coadă a marcat sarcina ca nereușită"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorăm duplicat NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "Eșuare duplicat NZB „%s”"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "NZB duplicat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Întrerupem duplicat NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1224,6 +1220,10 @@ msgstr "Eroare importare %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUPLICAT"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "ENCRIPTAT"
|
||||
@@ -1269,6 +1269,10 @@ msgstr "%s articolele au fost lipsă"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s articolele au avut duplicate diferite"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Întrerupem duplicat NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1498,6 +1502,11 @@ msgstr ""
|
||||
"Coadă de descărcare veche detectată, utilizează Stare->Reparare pentru a "
|
||||
"converti coada"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Compilarea unei căutări regex nereuşită: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1684,10 +1693,6 @@ msgstr "Valoare RSS gasită a fost goală (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Arată interfața"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Deschide dosar descărcări complete"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1776,6 +1781,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2048,7 +2058,6 @@ msgstr "Versiune Python"
|
||||
msgid "Home page"
|
||||
msgstr "Pagină de pornire"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "sau"
|
||||
@@ -2115,8 +2124,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2148,11 +2157,6 @@ msgstr "Comutatoare"
|
||||
msgid "Scheduling"
|
||||
msgstr "Planificare"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2267,11 +2271,6 @@ msgstr "Nume"
|
||||
msgid "Retry"
|
||||
msgstr "Reîncearcă"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Acțiuni"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2597,7 +2596,6 @@ msgstr "Durata Funcţionării"
|
||||
msgid "Backup"
|
||||
msgstr "Server Secundar"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Citeşte Ajutorul Wiki despre asta !"
|
||||
@@ -3146,23 +3144,19 @@ msgstr ""
|
||||
"reluați sarcina."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Detectează Descărcări Duplicate"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Detectează episoade duplicate în seriale"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3171,8 +3165,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3261,6 +3255,14 @@ msgstr "Script utilizator Pre-Coadă"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Folosit înainte ca un NZB să intre în coadă."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Parametri Extra PAR2"
|
||||
@@ -4802,10 +4804,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Serverul a renunţat în timpul logării."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Serverul necesită nume utilizator şi parolă"
|
||||
|
||||
156
po/main/ru.po
156
po/main/ru.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
|
||||
@@ -164,8 +164,8 @@ msgid "Test Notification"
|
||||
msgstr "Тестовое уведомление"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Разрешение адреса"
|
||||
msgid "Resolving address"
|
||||
msgstr "Разрешение адреса"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -177,11 +177,6 @@ msgstr "Ничего"
|
||||
msgid "Default"
|
||||
msgstr "по умолчанию"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Не удалось составить регулярное выражение поиска: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -252,10 +247,6 @@ msgstr "Квота исчерпана. Загрузка приостановле
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Неправильный параметр"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-путь «%s» здесь не допускается"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s не является допустимым адресом электронной почты"
|
||||
@@ -264,7 +255,7 @@ msgstr "%s не является допустимым адресом элект
|
||||
msgid "Server address required"
|
||||
msgstr "Требуется адрес сервера"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Недопустимый адрес сервера."
|
||||
|
||||
@@ -284,8 +275,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Ошибка: очередь не пустая, папку нельзя изменить."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Очередь не пустая, папку нельзя изменить."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -339,7 +340,7 @@ msgstr "Ошибка команды SQL (см. журнал)"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Не удалось закрыть базу данных (см. журнал)"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Недопустимый этап ведения журнала для %s"
|
||||
@@ -406,7 +407,7 @@ msgid "Paused"
|
||||
msgstr "Приостановлено"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
|
||||
@@ -661,12 +662,6 @@ msgstr "Ошибка проверки подлинности. Проверьте
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -797,7 +792,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Запуск сценария"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr ""
|
||||
@@ -1065,6 +1059,16 @@ msgstr ""
|
||||
msgid "Other Messages"
|
||||
msgstr "Другие сообщения"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr ""
|
||||
@@ -1145,6 +1149,18 @@ msgstr "Ошибка загрузки %s: обнаружен повреждён
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB-файл добавлен в очередь"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Пропущен повторяющийся NZB-файл «%s»"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1159,26 +1175,6 @@ msgstr "Пустой NZB-файл %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Пропущен повторяющийся NZB-файл «%s»"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Приостановлен повторяющийся NZB-файл «%s»"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1197,6 +1193,10 @@ msgstr "Ошибка импорта %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "ПОВТОР"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "ЗАШИФРОВАН"
|
||||
@@ -1242,6 +1242,10 @@ msgstr "%s статей отсутствует"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s статей содержат несовпадающие повторы"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Приостановлен повторяющийся NZB-файл «%s»"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1467,6 +1471,11 @@ msgstr "Ошибка %s: укажите действительное имя по
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Не удалось составить регулярное выражение поиска: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1651,10 +1660,6 @@ msgstr "Обнаружена пустая запись RSS (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Показать интерфейс"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr ""
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1743,6 +1748,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Сценарий"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2015,7 +2025,6 @@ msgstr ""
|
||||
msgid "Home page"
|
||||
msgstr ""
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr ""
|
||||
@@ -2082,8 +2091,8 @@ msgstr "Форум"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2115,11 +2124,6 @@ msgstr "Переключатели"
|
||||
msgid "Scheduling"
|
||||
msgstr "Расписание"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2234,11 +2238,6 @@ msgstr "Название"
|
||||
msgid "Retry"
|
||||
msgstr "Повторить"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Действия"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2561,7 +2560,6 @@ msgstr "Время работы"
|
||||
msgid "Backup"
|
||||
msgstr "Резервный"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Описание см. на вики-странице."
|
||||
@@ -3113,23 +3111,19 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Обнаруживать повторяющиеся загрузки"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3138,8 +3132,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3226,6 +3220,14 @@ msgstr "Пользовательский сценарий до помещени
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Используется до того, как NZB помещается в очередь."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Дополнительные параметры PAR2"
|
||||
@@ -4765,10 +4767,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Во время входа на сервер был выполнен выход."
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Для сервера требуется имя пользователя и пароль."
|
||||
|
||||
158
po/main/sr.po
158
po/main/sr.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
|
||||
@@ -162,8 +162,8 @@ msgid "Test Notification"
|
||||
msgstr "Probno obaveštenje"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Решавање адресе"
|
||||
msgid "Resolving address"
|
||||
msgstr "Решавање адресе"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -175,11 +175,6 @@ msgstr "Ниједно"
|
||||
msgid "Default"
|
||||
msgstr "Подразумевано"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Neuspešna kompilacija regularne ekspresije za termin pretrage: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -250,10 +245,6 @@ msgstr "Kvota utrošena, pauziram preuzimanja"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Погрешан параметар"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC путања \"%s\" није дозвољена"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s nije ispravna email adresa"
|
||||
@@ -262,7 +253,7 @@ msgstr "%s nije ispravna email adresa"
|
||||
msgid "Server address required"
|
||||
msgstr "Потребна је адреса сервера"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Погрешна адреса сервера."
|
||||
|
||||
@@ -282,8 +273,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Грешка: ред није празан, фасцикла се не може променити."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Pед није празан, фасцикла се не може променити."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -337,7 +338,7 @@ msgstr "Neuspešna SQL komanda, videti izveštaj"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Неуспешно затварање базе, видети извештај"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Погрешне етапе извештаја можете наћи у хронологији за %s"
|
||||
@@ -404,7 +405,7 @@ msgid "Paused"
|
||||
msgstr "Паузирано"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr ""
|
||||
"Требате да поставите максимални проток пре него што поставите ограничење"
|
||||
@@ -658,12 +659,6 @@ msgstr "Аутентификација погрешна, проверити им
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -794,7 +789,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Покретање скрипта"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Previše ugnježdenih nivoa pri raspakivanju [%s]"
|
||||
@@ -1061,6 +1055,16 @@ msgstr "Ред завршен"
|
||||
msgid "Other Messages"
|
||||
msgstr "Остале поруке"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otvori fasciklu završenih"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Недоступно"
|
||||
@@ -1141,6 +1145,18 @@ msgstr "Грешка учитавање %s, покварена датотека
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB додат у ред"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Игнорисање дуплог NZB-а \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1155,26 +1171,6 @@ msgstr "Празан NZB %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Игнорисање дуплог NZB-а \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Паузирам због дуплог NZB-а \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1193,6 +1189,10 @@ msgstr "Грешка увоза %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "ДУПЛИКАТ"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "ШИФРИРАНО"
|
||||
@@ -1238,6 +1238,10 @@ msgstr "%s артикла недостају"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s артикла нису дупликате"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Паузирам због дуплог NZB-а \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1461,6 +1465,11 @@ msgstr "Грешка %s: Требате да унесете важеће име/
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Стари ред је нађен, употребити Статус->Поправи за претварање реда"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Neuspešna kompilacija regularne ekspresije za termin pretrage: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1645,10 +1654,6 @@ msgstr "Nađen prazan RSS unos (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Pokaži interfejs"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otvori fasciklu završenih"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1737,6 +1742,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Скрипт"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2009,7 +2019,6 @@ msgstr "Верзија Python-а"
|
||||
msgid "Home page"
|
||||
msgstr "Почетна страница"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "или"
|
||||
@@ -2076,8 +2085,8 @@ msgstr "Форум"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "ИРЦ"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2109,11 +2118,6 @@ msgstr "Прекидачи"
|
||||
msgid "Scheduling"
|
||||
msgstr "Планирање"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2228,11 +2232,6 @@ msgstr "Име"
|
||||
msgid "Retry"
|
||||
msgstr "Покушај опет"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Акције"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2553,7 +2552,6 @@ msgstr "; Ради"
|
||||
msgid "Backup"
|
||||
msgstr "Резервно"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "За више информација, читајте Вики!"
|
||||
@@ -3100,23 +3098,19 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr "Ако је \"Пауза\", требате да поставите лозинку и да наставите рад."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Откриј дупликатна преузимања"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Откриј дупле епизоде у серије"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3125,8 +3119,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3215,6 +3209,14 @@ msgstr "Кориснички скрипт пре-реда"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Коришћено пре него што NZB уђе у ред."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Додатни параметри PAR2"
|
||||
@@ -4744,10 +4746,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Сервер се затворио при пријављивање"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Серверу су потребни име и лозинка."
|
||||
|
||||
158
po/main/sv.po
158
po/main/sv.po
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
|
||||
@@ -162,8 +162,8 @@ msgid "Test Notification"
|
||||
msgstr "Testa notifikation"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " Lösa adress"
|
||||
msgid "Resolving address"
|
||||
msgstr "Lösa adress"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -175,11 +175,6 @@ msgstr "Ingen"
|
||||
msgid "Default"
|
||||
msgstr "Standard"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Det gick inte att kompilera regex för sök-sträng: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -250,10 +245,6 @@ msgstr "Din kvot är uppnådd, pausar nerladdning"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Fel parameter"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC sökväg \"%s\" är inte tillåten här"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s är inte en godkänd e-mail adress"
|
||||
@@ -262,7 +253,7 @@ msgstr "%s är inte en godkänd e-mail adress"
|
||||
msgid "Server address required"
|
||||
msgstr "Kräver serveradress"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "Ogiltig serveradress"
|
||||
|
||||
@@ -282,8 +273,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Fel: Kön är inte tom, kan inte byta mapp."
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "Kön är inte tom, kan inte byta mapp."
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -338,7 +339,7 @@ msgstr "SQL Kommando misslyckades, se logg"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Det gick inte att stänga databasen, se logg"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "Felaktig loggning i historiken av %s"
|
||||
@@ -405,7 +406,7 @@ msgid "Paused"
|
||||
msgstr "Pausad"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "Du måste ange maximal bandbredd innan du kan ange bandbreddsgräns"
|
||||
|
||||
@@ -660,12 +661,6 @@ msgstr "Autentisering misslyckades, kontrollera användarnamn och lösenord."
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -796,7 +791,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Kör skript"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "Nästling för djup [%s]"
|
||||
@@ -1065,6 +1059,16 @@ msgstr "Kön färdig"
|
||||
msgid "Other Messages"
|
||||
msgstr "Andra meddelanden"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Öppna färdig mapp"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "Ej tillgänglig"
|
||||
@@ -1145,6 +1149,18 @@ msgstr "Laddningsfel %s, felaktig fil detekterad"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB tillagd i kön"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorerar dubblett för NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1159,26 +1175,6 @@ msgstr "NZB filen %s är tom"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "Ignorerar dubblett för NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausar dubblett för NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1197,6 +1193,10 @@ msgstr "Det gick inte att importera %s"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "DUBLETT"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "KRYPTERAT"
|
||||
@@ -1242,6 +1242,10 @@ msgstr "%s artiklar saknades"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s artiklar hade icke-matchande dubletter"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "Pausar dubblett för NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1467,6 +1471,11 @@ msgstr "Error %s: Du måste ange ett giltigt användarnamn och lösenord."
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "Gammal kö hittad, använd Status -> Reparera för att konvertera kön"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "Det gick inte att kompilera regex för sök-sträng: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1651,10 +1660,6 @@ msgstr "Tom RSS post hittades (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "Visa gränssnitt"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Öppna färdig mapp"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1743,6 +1748,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2015,7 +2025,6 @@ msgstr "Python-version"
|
||||
msgid "Home page"
|
||||
msgstr "Webbplats"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "eller"
|
||||
@@ -2082,8 +2091,8 @@ msgstr "Forum"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2115,11 +2124,6 @@ msgstr "Switchar"
|
||||
msgid "Scheduling"
|
||||
msgstr "Schemaläggare"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2234,11 +2238,6 @@ msgstr "Namn"
|
||||
msgid "Retry"
|
||||
msgstr "Försök igen"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "Åtgärder"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2561,7 +2560,6 @@ msgstr "Upptid"
|
||||
msgid "Backup"
|
||||
msgstr "Säkerhetskopiera"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "Läs Wiki Help för detta!"
|
||||
@@ -3110,23 +3108,19 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr "Om \"Pausad\", så behöver du ange ett lösenord för att återuppta jobbet."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "Upptäck dubbletter av nedladdningar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "Hitta dublettavsnitt i serier"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3135,8 +3129,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3225,6 +3219,14 @@ msgstr "Kö-specifika användarskript"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "Används innan en NZB tas in i kön."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "Extra PAR2 parametrar"
|
||||
@@ -4758,10 +4760,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "Servern avslutades under inloggning"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Servern kräver användarnamn och lösenord."
|
||||
|
||||
175
po/main/zh_CN.po
175
po/main/zh_CN.po
@@ -3,12 +3,13 @@
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2023
|
||||
# Kangwei Li <lkw20010211@gmail.com>, 2023
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
|
||||
"Last-Translator: Kangwei Li <lkw20010211@gmail.com>, 2023\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -160,8 +161,8 @@ msgid "Test Notification"
|
||||
msgstr "测试通知"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid " Resolving address"
|
||||
msgstr " 正在解析地址"
|
||||
msgid "Resolving address"
|
||||
msgstr "正在解析地址"
|
||||
|
||||
#. No value, used in dropdown menus
|
||||
#: sabnzbd/api.py, sabnzbd/skintext.py
|
||||
@@ -173,11 +174,6 @@ msgstr "无"
|
||||
msgid "Default"
|
||||
msgstr "默认"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "为搜索关键词编译正则表达式失败: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Disk full! Forcing Pause"
|
||||
@@ -248,10 +244,6 @@ msgstr "配额已耗尽,暂停下载"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "参数不正确"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "此处不允许使用 UNC 路径 \"%s\""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid email address"
|
||||
msgstr "%s 不是有效的电子邮箱地址"
|
||||
@@ -260,7 +252,7 @@ msgstr "%s 不是有效的电子邮箱地址"
|
||||
msgid "Server address required"
|
||||
msgstr "服务器地址必填"
|
||||
|
||||
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
|
||||
#: sabnzbd/cfg.py, sabnzbd/newswrapper.py
|
||||
msgid "Invalid server address."
|
||||
msgstr "服务器地址无效。"
|
||||
|
||||
@@ -280,8 +272,18 @@ msgid ""
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "错误: 队列非空,无法变更文件夹。"
|
||||
msgid "Network path \"%s\" is not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "Queue not empty, cannot change folder."
|
||||
msgstr "队列非空,无法变更文件夹。"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/cfg.py
|
||||
@@ -335,7 +337,7 @@ msgstr "SQL 命令执行失败,参见日志"
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "无法关闭数据库,参见日志"
|
||||
|
||||
#. Error message
|
||||
#. Warning message
|
||||
#: sabnzbd/database.py
|
||||
msgid "Invalid stage logging in history for %s"
|
||||
msgstr "%s 历史信息中 stage 日志无效"
|
||||
@@ -402,7 +404,7 @@ msgid "Paused"
|
||||
msgstr "已暂停"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py, sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
|
||||
msgstr "设置带宽限制前,您必须设置最大带宽值"
|
||||
|
||||
@@ -653,12 +655,6 @@ msgstr "身份认证失败,请检查用户名/密码。"
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr "%s 中有失败的登陆请求"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Invalid backup archive"
|
||||
msgstr ""
|
||||
@@ -789,7 +785,6 @@ msgstr "电影排序"
|
||||
msgid "Running script"
|
||||
msgstr "正在执行脚本"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
msgstr "解压嵌套层级过深 [%s]"
|
||||
@@ -1054,6 +1049,16 @@ msgstr "队列已完成"
|
||||
msgid "Other Messages"
|
||||
msgstr "其他信息"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "打开完成文件夹"
|
||||
|
||||
#: sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Not available"
|
||||
msgstr "不可用"
|
||||
@@ -1134,6 +1139,18 @@ msgstr "无法加载 %s,侦测到损坏文件"
|
||||
msgid "NZB added to queue"
|
||||
msgstr "NZB 已添加到队列"
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "正在忽略重复 NZB \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "失败于重复的 NZB 文件 \"%s\""
|
||||
|
||||
#: sabnzbd/nzbqueue.py, sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "重复的 NZB 文件"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Invalid NZB file %s, skipping (error: %s)"
|
||||
@@ -1148,26 +1165,6 @@ msgstr "空 NZB 文件 %s"
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr "预队列脚本将任务标记为失败的"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Ignoring duplicate NZB \"%s\""
|
||||
msgstr "正在忽略重复 NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr "失败于重复的 NZB 文件 \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr "重复的 NZB 文件"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "正在暂停重复 NZB \"%s\""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
@@ -1186,6 +1183,10 @@ msgstr "导入 %s 出错"
|
||||
msgid "DUPLICATE"
|
||||
msgstr "*重复*"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ALTERNATIVE"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "ENCRYPTED"
|
||||
msgstr "*加密*"
|
||||
@@ -1231,6 +1232,10 @@ msgstr "%s 篇文章缺失"
|
||||
msgid "%s articles had non-matching duplicates"
|
||||
msgstr "%s 篇文章存在未匹配的重复"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pausing duplicate NZB \"%s\""
|
||||
msgstr "正在暂停重复 NZB \"%s\""
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
@@ -1454,6 +1459,11 @@ msgstr "错误 %s: 您需要提供有效的用户名与密码。"
|
||||
msgid "Old queue detected, use Status->Repair to convert the queue"
|
||||
msgstr "侦测到旧版队列,请使用“状态”→“修复”转换队列"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Failed to compile regex for search term: %s"
|
||||
msgstr "为搜索关键词编译正则表达式失败: %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid ""
|
||||
@@ -1638,10 +1648,6 @@ msgstr "发现空的 RSS 条目 (%s)"
|
||||
msgid "Show interface"
|
||||
msgstr "显示界面"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "打开完成文件夹"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
@@ -1730,6 +1736,11 @@ msgstr ""
|
||||
msgid "Script"
|
||||
msgstr "脚本"
|
||||
|
||||
#. PP RSS feed of the NZB - Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2002,7 +2013,6 @@ msgstr "Python 版本"
|
||||
msgid "Home page"
|
||||
msgstr "主页"
|
||||
|
||||
#. Used in "IRC or IRC-Webaccess"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "or"
|
||||
msgstr "或"
|
||||
@@ -2069,8 +2079,8 @@ msgstr "论坛"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "IRC"
|
||||
msgstr "IRC"
|
||||
msgid "Live Chat"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2102,11 +2112,6 @@ msgstr "参数"
|
||||
msgid "Scheduling"
|
||||
msgstr "定时任务"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "RSS"
|
||||
msgstr "RSS"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Notifications"
|
||||
@@ -2221,11 +2226,6 @@ msgstr "名称"
|
||||
msgid "Retry"
|
||||
msgstr "重试"
|
||||
|
||||
#. Queue end-of-queue selection box
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Actions"
|
||||
msgstr "操作"
|
||||
|
||||
#. Queue page table, script selection menu
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Scripts"
|
||||
@@ -2540,7 +2540,6 @@ msgstr "启动时间"
|
||||
msgid "Backup"
|
||||
msgstr "备份"
|
||||
|
||||
#. Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Read the Wiki Help on this!"
|
||||
msgstr "关于该项请参阅 Wiki 帮助!"
|
||||
@@ -2881,11 +2880,11 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
msgstr "完成下载文件夹的最小剩余空间"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
msgstr "当某分类的路径位于另一磁盘上时不生效。"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -2969,14 +2968,14 @@ msgstr "队列管理及历史数据库的存放位置。<br /><i>仅当队列为
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Backup Folder"
|
||||
msgstr ""
|
||||
msgstr "备份文件夹"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Location where the backups of the configuration file and databases are "
|
||||
"stored.<br />If left empty, the backup will be created in the Completed "
|
||||
"Download Folder."
|
||||
msgstr ""
|
||||
msgstr "备份配置文件和数据库的位置。<br />如果留空,备份将存放于完成下载文件夹中。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
|
||||
@@ -2993,7 +2992,7 @@ msgstr "SABnzbd 日志文件的位置。<br /><i>需要重启 SABnzbd 才能生
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Purge Logs"
|
||||
msgstr ""
|
||||
msgstr "清除日志"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ".nzb Backup Folder"
|
||||
@@ -3063,24 +3062,20 @@ msgid "In case of \"Pause\", you'll need to set a password and resume the job."
|
||||
msgstr "若选择“暂停”,您将需要设置密码并手动续传对应任务。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect Duplicate Downloads"
|
||||
msgstr "侦测重复下载"
|
||||
msgid "Identical download detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical NZB files (based on items in your History or files in .nzb "
|
||||
"Backup Folder)"
|
||||
msgstr "检测相同的 NZB 文件 (基于您的历史项目或 .nzb 备份文件夹中的文件)"
|
||||
msgid "Detect identical downloads based on name or NZB contents."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Detect duplicate episodes in series"
|
||||
msgstr "侦测同季的重复剧集"
|
||||
msgid "Smart duplicate detection"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Detect identical episodes in series (based on \"name/season/episode\" of "
|
||||
"items in your History)"
|
||||
msgstr "在剧目中检测相同的剧集 (基于您的历史项目,参照 \"name/season/episode\" 的规则)"
|
||||
msgid "Detect duplicates based on analysis of the filename."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Allow proper releases"
|
||||
@@ -3088,8 +3083,8 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Bypass series duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name"
|
||||
"Bypass smart duplicate detection if PROPER, REAL or REPACK is detected in "
|
||||
"the download name."
|
||||
msgstr ""
|
||||
|
||||
#. Four way switch for duplicates
|
||||
@@ -3174,6 +3169,14 @@ msgstr "加入队列前执行的用户脚本"
|
||||
msgid "Used before an NZB enters the queue."
|
||||
msgstr "用于在 NZB 进入队列前执行。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "On queue finish script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Executed after the queue finishes downloading."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra PAR2 Parameters"
|
||||
msgstr "额外的 PAR2 参数"
|
||||
@@ -3438,7 +3441,7 @@ msgstr "超时"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
msgstr "账户到期时间"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
@@ -3618,7 +3621,7 @@ msgstr "应用过滤器"
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
msgstr "编辑"
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4692,10 +4695,6 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr "未知的 SSL 协议:尝试禁用 SSL 或者连接不同的端口。"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server quit during login sequence."
|
||||
msgstr "登录过程中服务器退出。"
|
||||
|
||||
#: sabnzbd/utils/servertests.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "服务器需要用户名与密码。"
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC2\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Pavel C <quoing_transifex@mess.cz>, 2022\n"
|
||||
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: reloxx13 <reloxx@interia.pl>, 2022\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Ester Molla Aragones <moarages@gmail.com>, 2020\n"
|
||||
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: ION, 2021\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0RC2\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0RC1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
|
||||
"Project-Id-Version: SABnzbd-4.2.0Beta1\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
|
||||
|
||||
@@ -1,16 +1,16 @@
|
||||
# Main requirements
|
||||
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
|
||||
sabctools==7.1.2
|
||||
sabctools==8.1.0
|
||||
cheetah3==3.2.6.post1
|
||||
cffi==1.15.1
|
||||
cffi==1.16.0
|
||||
pycparser==2.21
|
||||
feedparser==6.0.10
|
||||
feedparser==6.0.11
|
||||
configobj==5.0.8
|
||||
cheroot==10.0.0
|
||||
six==1.16.0
|
||||
cherrypy==18.8.0
|
||||
jaraco.functools==3.9.0
|
||||
jaraco.collections==4.3.0
|
||||
cherrypy==18.9.0
|
||||
jaraco.functools==4.0.0
|
||||
jaraco.collections==5.0.0
|
||||
jaraco.text==3.8.1 # Newer version introduces irrelevant extra dependencies
|
||||
jaraco.classes==3.3.0
|
||||
jaraco.context==4.3.0
|
||||
@@ -24,23 +24,26 @@ portend==3.2.0
|
||||
chardet==5.2.0
|
||||
PySocks==1.7.1
|
||||
puremagic==1.15
|
||||
guessit==3.7.1
|
||||
guessit==3.8.0
|
||||
babelfish==0.6.0
|
||||
rebulk==3.2.0
|
||||
|
||||
# Recent cryptography versions require Rust. If you run into issues compiling this
|
||||
# SABnzbd will also work with older pre-Rust versions such as cryptography==3.3.2
|
||||
cryptography==41.0.3
|
||||
cryptography==41.0.7
|
||||
|
||||
# We recommend using "orjson" as it is 2x as fast as "ujson". However, it requires
|
||||
# Rust so SABnzbd works just as well with "ujson" or the Python built in "json" module
|
||||
ujson==5.8.0
|
||||
ujson==5.9.0
|
||||
|
||||
# Windows system integration
|
||||
pywin32==306; sys_platform == 'win32'
|
||||
toasts-winrt==1.0.0; sys_platform == 'win32'
|
||||
windows-toasts==1.0.1; sys_platform == 'win32'
|
||||
|
||||
# macOS system calls
|
||||
pyobjc==9.2; sys_platform == 'darwin'
|
||||
pyobjc-core==10.1; sys_platform == 'darwin'
|
||||
pyobjc-framework-Cocoa==10.1; sys_platform == 'darwin'
|
||||
|
||||
# Linux notifications
|
||||
notify2==0.3.1; sys_platform != 'win32' and sys_platform != 'darwin'
|
||||
@@ -54,4 +57,4 @@ notify2==0.3.1; sys_platform != 'win32' and sys_platform != 'darwin'
|
||||
# Optional support for system power management on *nix.
|
||||
# Requires libdbus-1-dev to be installed.
|
||||
# Uncomment line below or manually install after installing requirements.
|
||||
# dbus-python; sys_platform != 'win32' and sys_platform != 'darwin'
|
||||
# dbus-python; sys_platform != 'win32' and sys_platform != 'darwin'
|
||||
@@ -108,12 +108,8 @@ import sabnzbd.articlecache
|
||||
import sabnzbd.bpsmeter
|
||||
import sabnzbd.scheduler as scheduler
|
||||
import sabnzbd.notifier as notifier
|
||||
import sabnzbd.sorting
|
||||
from sabnzbd.decorators import synchronized
|
||||
from sabnzbd.constants import (
|
||||
DEFAULT_PRIORITY,
|
||||
VALID_ARCHIVES,
|
||||
REPAIR_REQUEST,
|
||||
)
|
||||
import sabnzbd.utils.ssdp
|
||||
|
||||
# Storage for the threads, variables are filled during initialization
|
||||
@@ -143,7 +139,6 @@ DIR_PID = None
|
||||
|
||||
QUEUECOMPLETE = None # stores the nice name of the action
|
||||
QUEUECOMPLETEACTION = None # stores the name of the function to be called
|
||||
QUEUECOMPLETEARG = None # stores an extra arguments that need to be passed
|
||||
|
||||
DAEMON = None
|
||||
LINUX_POWER = powersup.HAVE_DBUS
|
||||
@@ -167,6 +162,7 @@ RESTART_REQ = False
|
||||
PAUSED_ALL = False
|
||||
TRIGGER_RESTART = False # To trigger restart for Scheduler, WinService and Mac
|
||||
WINTRAY = None # Thread for the Windows SysTray icon
|
||||
MACOSTRAY = None # Thread for the macOS tray icon
|
||||
WEBUI_READY = False
|
||||
LAST_HISTORY_UPDATE = 1
|
||||
RESTORE_DATA = None
|
||||
@@ -242,11 +238,11 @@ def initialize(pause_downloader=False, clean_up=False, repair=0):
|
||||
if cfg.wait_for_dfolder():
|
||||
filesystem.wait_for_download_folder()
|
||||
|
||||
# Set the folders to be created, then the check_incomplete_vs_complete
|
||||
# check will create them by calling get_path on them
|
||||
# Create the folders, now that we waited for them to be available
|
||||
cfg.download_dir.set_create(True)
|
||||
cfg.download_dir.create_path()
|
||||
cfg.complete_dir.set_create(True)
|
||||
filesystem.check_incomplete_vs_complete()
|
||||
cfg.complete_dir.create_path()
|
||||
|
||||
# Set call backs for Config items
|
||||
cfg.cache_limit.callback(cfg.new_limit)
|
||||
@@ -290,6 +286,11 @@ def initialize(pause_downloader=False, clean_up=False, repair=0):
|
||||
misc.convert_sorter_settings()
|
||||
cfg.sorters_converted.set(True)
|
||||
|
||||
# Convert duplicate settings
|
||||
if cfg.no_series_dupes():
|
||||
cfg.no_smart_dupes.set(cfg.no_series_dupes())
|
||||
cfg.no_series_dupes.set(0)
|
||||
|
||||
# Add hostname to the whitelist
|
||||
if not cfg.host_whitelist():
|
||||
cfg.host_whitelist.set(socket.gethostname())
|
||||
@@ -374,35 +375,35 @@ def halt():
|
||||
logging.debug("Stopping URLGrabber")
|
||||
sabnzbd.URLGrabber.stop()
|
||||
try:
|
||||
sabnzbd.URLGrabber.join()
|
||||
sabnzbd.URLGrabber.join(timeout=3)
|
||||
except:
|
||||
pass
|
||||
|
||||
logging.debug("Stopping dirscanner")
|
||||
sabnzbd.DirScanner.stop()
|
||||
try:
|
||||
sabnzbd.DirScanner.join()
|
||||
sabnzbd.DirScanner.join(timeout=3)
|
||||
except:
|
||||
pass
|
||||
|
||||
logging.debug("Stopping downloader")
|
||||
sabnzbd.Downloader.stop()
|
||||
try:
|
||||
sabnzbd.Downloader.join()
|
||||
sabnzbd.Downloader.join(timeout=3)
|
||||
except:
|
||||
pass
|
||||
|
||||
logging.debug("Stopping assembler")
|
||||
sabnzbd.Assembler.stop()
|
||||
try:
|
||||
sabnzbd.Assembler.join()
|
||||
sabnzbd.Assembler.join(timeout=3)
|
||||
except:
|
||||
pass
|
||||
|
||||
logging.debug("Stopping postprocessor")
|
||||
sabnzbd.PostProcessor.stop()
|
||||
try:
|
||||
sabnzbd.PostProcessor.join()
|
||||
sabnzbd.PostProcessor.join(timeout=3)
|
||||
except:
|
||||
pass
|
||||
|
||||
|
||||
258
sabnzbd/api.py
258
sabnzbd/api.py
@@ -51,12 +51,14 @@ from sabnzbd.constants import (
|
||||
MEBI,
|
||||
GIGI,
|
||||
AddNzbFileResult,
|
||||
PP_LOOKUP,
|
||||
STAGES,
|
||||
)
|
||||
import sabnzbd.config as config
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.skintext import SKIN_TEXT
|
||||
from sabnzbd.utils.diskspeed import diskspeedmeasure
|
||||
from sabnzbd.utils.internetspeed import internetspeed
|
||||
from sabnzbd.internetspeed import internetspeed
|
||||
from sabnzbd.utils.pathbrowser import folders_at_path
|
||||
from sabnzbd.utils.getperformance import getpystone
|
||||
from sabnzbd.misc import (
|
||||
@@ -72,8 +74,9 @@ from sabnzbd.filesystem import diskspace, get_ext, clip_path, remove_all, list_s
|
||||
from sabnzbd.encoding import xml_name, utob
|
||||
from sabnzbd.utils.servertests import test_nntp_server_dict
|
||||
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6, dnslookup, active_socks5_proxy
|
||||
from sabnzbd.database import build_history_info, unpack_history_info, HistoryDB
|
||||
from sabnzbd.database import HistoryDB
|
||||
from sabnzbd.lang import is_rtl
|
||||
from sabnzbd.nzbstuff import NzbObject
|
||||
import sabnzbd.emailer
|
||||
import sabnzbd.sorting
|
||||
|
||||
@@ -267,6 +270,7 @@ def _api_queue_default(value, kwargs):
|
||||
search = kwargs.get("search")
|
||||
categories = kwargs.get("cat") or kwargs.get("category")
|
||||
priorities = kwargs.get("priority")
|
||||
statuses = kwargs.get("status")
|
||||
nzo_ids = kwargs.get("nzo_ids")
|
||||
|
||||
if categories and not isinstance(categories, list):
|
||||
@@ -274,13 +278,21 @@ def _api_queue_default(value, kwargs):
|
||||
if priorities and not isinstance(priorities, list):
|
||||
# Make sure it's an integer
|
||||
priorities = [int_conv(prio) for prio in priorities.split(",")]
|
||||
if statuses and not isinstance(statuses, list):
|
||||
statuses = statuses.split(",")
|
||||
if nzo_ids and not isinstance(nzo_ids, list):
|
||||
nzo_ids = nzo_ids.split(",")
|
||||
|
||||
return report(
|
||||
keyword="queue",
|
||||
data=build_queue(
|
||||
start=start, limit=limit, search=search, categories=categories, priorities=priorities, nzo_ids=nzo_ids
|
||||
start=start,
|
||||
limit=limit,
|
||||
search=search,
|
||||
categories=categories,
|
||||
priorities=priorities,
|
||||
statuses=statuses,
|
||||
nzo_ids=nzo_ids,
|
||||
),
|
||||
)
|
||||
|
||||
@@ -480,8 +492,9 @@ def _api_history(name, kwargs):
|
||||
limit = int_conv(kwargs.get("limit"))
|
||||
last_history_update = int_conv(kwargs.get("last_history_update", 0))
|
||||
search = kwargs.get("search")
|
||||
failed_only = int_conv(kwargs.get("failed_only"))
|
||||
categories = kwargs.get("cat") or kwargs.get("category")
|
||||
statuses = kwargs.get("status")
|
||||
failed_only = int_conv(kwargs.get("failed_only"))
|
||||
nzo_ids = kwargs.get("nzo_ids")
|
||||
|
||||
# Do we need to send anything?
|
||||
@@ -491,6 +504,13 @@ def _api_history(name, kwargs):
|
||||
if categories and not isinstance(categories, list):
|
||||
categories = categories.split(",")
|
||||
|
||||
if statuses and not isinstance(statuses, list):
|
||||
statuses = statuses.split(",")
|
||||
|
||||
if failed_only:
|
||||
# We ignore any other statuses, having both doesn't make sense
|
||||
statuses = [Status.FAILED]
|
||||
|
||||
if nzo_ids and not isinstance(nzo_ids, list):
|
||||
nzo_ids = nzo_ids.split(",")
|
||||
|
||||
@@ -513,12 +533,12 @@ def _api_history(name, kwargs):
|
||||
elif value:
|
||||
jobs = value.split(",")
|
||||
for job in jobs:
|
||||
path = sabnzbd.PostProcessor.get_path(job)
|
||||
if path:
|
||||
if sabnzbd.PostProcessor.get_path(job):
|
||||
sabnzbd.PostProcessor.delete(job, del_files=del_files)
|
||||
else:
|
||||
history_db = sabnzbd.get_db_connection()
|
||||
remove_all(history_db.get_path(job), recursive=True)
|
||||
if del_files:
|
||||
remove_all(history_db.get_incomplete_path(job), recursive=True)
|
||||
history_db.remove_history(job)
|
||||
sabnzbd.misc.history_updated()
|
||||
return report()
|
||||
@@ -534,7 +554,12 @@ def _api_history(name, kwargs):
|
||||
to_units(day),
|
||||
)
|
||||
history["slots"], history["ppslots"], history["noofslots"] = build_history(
|
||||
start=start, limit=limit, search=search, failed_only=failed_only, categories=categories, nzo_ids=nzo_ids
|
||||
start=start,
|
||||
limit=limit,
|
||||
search=search,
|
||||
categories=categories,
|
||||
statuses=statuses,
|
||||
nzo_ids=nzo_ids,
|
||||
)
|
||||
history["last_history_update"] = sabnzbd.LAST_HISTORY_UPDATE
|
||||
history["version"] = sabnzbd.__version__
|
||||
@@ -589,9 +614,9 @@ def _api_addurl(name, kwargs):
|
||||
password = kwargs.get("password", "")
|
||||
|
||||
if name:
|
||||
nzo_id = sabnzbd.urlgrabber.add_url(name, pp, script, cat, priority, nzbname, password)
|
||||
# Reporting a list of NZO's, for compatibility with other add-methods
|
||||
return report(keyword="", data={"status": True, "nzo_ids": [nzo_id]})
|
||||
res, nzo_ids = sabnzbd.urlgrabber.add_url(name, pp, script, cat, priority, nzbname, password)
|
||||
return report(keyword="", data={"status": res is AddNzbFileResult.OK, "nzo_ids": nzo_ids})
|
||||
else:
|
||||
logging.info("API-call addurl: no URLs received")
|
||||
return report(_MSG_NO_VALUE)
|
||||
@@ -1247,9 +1272,6 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
|
||||
|
||||
# Calculate performance measures, if requested
|
||||
if int_conv(calculate_performance):
|
||||
# Perform the internetspeed measure in separate thread
|
||||
internetspeed_future = sabnzbd.THREAD_POOL.submit(internetspeed)
|
||||
|
||||
# PyStone
|
||||
sabnzbd.PYSTONE_SCORE = getpystone()
|
||||
|
||||
@@ -1258,7 +1280,7 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
|
||||
sabnzbd.COMPLETE_DIR_SPEED = round(diskspeedmeasure(sabnzbd.cfg.complete_dir.get_path()), 1)
|
||||
|
||||
# Internet bandwidth
|
||||
sabnzbd.INTERNET_BANDWIDTH = round(internetspeed_future.result(), 1)
|
||||
sabnzbd.INTERNET_BANDWIDTH = round(internetspeed(), 1)
|
||||
|
||||
# How often did we delay?
|
||||
info["delayed_assembler"] = sabnzbd.BPSMeter.delayed_assembler
|
||||
@@ -1289,11 +1311,11 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
|
||||
info["servers"] = []
|
||||
# Servers-list could be modified during iteration, so we need a copy
|
||||
for server in sabnzbd.Downloader.servers[:]:
|
||||
connected = sum(nw.connected for nw in server.idle_threads[:])
|
||||
activeconn = sum(nw.connected for nw in server.idle_threads.copy())
|
||||
serverconnections = []
|
||||
for nw in server.busy_threads[:]:
|
||||
for nw in server.busy_threads.copy():
|
||||
if nw.connected:
|
||||
connected += 1
|
||||
activeconn += 1
|
||||
if nw.article:
|
||||
serverconnections.append(
|
||||
{
|
||||
@@ -1304,25 +1326,31 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
|
||||
}
|
||||
)
|
||||
|
||||
if server.warning and not (connected or server.errormsg):
|
||||
connected = server.warning
|
||||
|
||||
if server.request and not server.info:
|
||||
connected = T(" Resolving address").replace(" ", "")
|
||||
|
||||
server_info = {
|
||||
"servername": server.displayname,
|
||||
"serveractiveconn": connected,
|
||||
"serveractive": server.active,
|
||||
"serveractiveconn": activeconn,
|
||||
"servertotalconn": server.threads,
|
||||
"serverconnections": serverconnections,
|
||||
"serverssl": server.ssl,
|
||||
"serversslinfo": server.ssl_info,
|
||||
"serveractive": server.active,
|
||||
"serveripaddress": None,
|
||||
"servercanonname": None,
|
||||
"serverwarning": server.warning,
|
||||
"servererror": server.errormsg,
|
||||
"serverpriority": server.priority,
|
||||
"serveroptional": server.optional,
|
||||
"serverbps": to_units(sabnzbd.BPSMeter.server_bps.get(server.id, 0)),
|
||||
}
|
||||
|
||||
# Only add this information if we are connected
|
||||
if activeconn and server.addrinfo:
|
||||
server_info["serveripaddress"] = server.addrinfo.ipaddress
|
||||
server_info["servercanonname"] = server.addrinfo.canonname
|
||||
|
||||
if server.request and not server.addrinfo:
|
||||
server_info["serverwarning"] = T("Resolving address")
|
||||
|
||||
info["servers"].append(server_info)
|
||||
|
||||
return info
|
||||
@@ -1334,6 +1362,7 @@ def build_queue(
|
||||
search: Optional[str] = None,
|
||||
categories: Optional[List[str]] = None,
|
||||
priorities: Optional[List[str]] = None,
|
||||
statuses: Optional[List[str]] = None,
|
||||
nzo_ids: Optional[List[str]] = None,
|
||||
):
|
||||
info = build_header(for_template=False)
|
||||
@@ -1345,7 +1374,13 @@ def build_queue(
|
||||
queue_fullsize,
|
||||
nzos_matched,
|
||||
) = sabnzbd.NzbQueue.queue_info(
|
||||
search=search, categories=categories, priorities=priorities, nzo_ids=nzo_ids, start=start, limit=limit
|
||||
search=search,
|
||||
categories=categories,
|
||||
priorities=priorities,
|
||||
statuses=statuses,
|
||||
nzo_ids=nzo_ids,
|
||||
start=start,
|
||||
limit=limit,
|
||||
)
|
||||
|
||||
info["kbpersec"] = "%.2f" % (sabnzbd.BPSMeter.bps / KIBI)
|
||||
@@ -1375,7 +1410,6 @@ def build_queue(
|
||||
for nzo in nzo_list:
|
||||
mbleft = nzo.remaining / MEBI
|
||||
mb = nzo.bytes / MEBI
|
||||
is_propagating = (nzo.avg_stamp + float(cfg.propagation_delay() * 60)) > time.time()
|
||||
|
||||
slot = {}
|
||||
slot["index"] = n
|
||||
@@ -1396,8 +1430,8 @@ def build_queue(
|
||||
slot["direct_unpack"] = nzo.direct_unpack_progress
|
||||
|
||||
if not sabnzbd.Downloader.paused and nzo.status not in (Status.PAUSED, Status.FETCHING, Status.GRABBING):
|
||||
if is_propagating:
|
||||
slot["status"] = Status.PROP
|
||||
if nzo.propagation_delay_left:
|
||||
slot["status"] = Status.PROPAGATING
|
||||
elif nzo.status == Status.CHECKING:
|
||||
slot["status"] = Status.CHECKING
|
||||
else:
|
||||
@@ -1411,7 +1445,7 @@ def build_queue(
|
||||
if (
|
||||
sabnzbd.Downloader.paused
|
||||
or sabnzbd.Downloader.paused_for_postproc
|
||||
or is_propagating
|
||||
or nzo.propagation_delay_left
|
||||
or nzo.status not in (Status.DOWNLOADING, Status.FETCHING, Status.QUEUED)
|
||||
) and nzo.priority != FORCE_PRIORITY:
|
||||
slot["timeleft"] = "0:00:00"
|
||||
@@ -1504,9 +1538,9 @@ def retry_job(job, new_nzb=None, password=None):
|
||||
history_db = sabnzbd.get_db_connection()
|
||||
futuretype, url, pp, script, cat = history_db.get_other(job)
|
||||
if futuretype:
|
||||
nzo_id = sabnzbd.urlgrabber.add_url(url, pp, script, cat)
|
||||
nzo_id = sabnzbd.urlgrabber.add_url(url, pp, script, cat, dup_check=False)
|
||||
else:
|
||||
path = history_db.get_path(job)
|
||||
path = history_db.get_incomplete_path(job)
|
||||
nzo_id = sabnzbd.NzbQueue.repair_job(path, new_nzb, password)
|
||||
if nzo_id:
|
||||
# Only remove from history if we repaired something
|
||||
@@ -1622,36 +1656,20 @@ def build_header(webdir: str = "", for_template: bool = True, trans_functions: b
|
||||
|
||||
def build_history(
|
||||
start: int = 0,
|
||||
limit: int = 0,
|
||||
limit: int = 1000000,
|
||||
search: Optional[str] = None,
|
||||
failed_only: int = 0,
|
||||
categories: Optional[List[str]] = None,
|
||||
statuses: Optional[List[str]] = None,
|
||||
nzo_ids: Optional[List[str]] = None,
|
||||
) -> Tuple[Dict[str, Any], int, int]:
|
||||
) -> Tuple[List[Dict[str, Any]], int, int]:
|
||||
"""Combine the jobs still in post-processing and the database history"""
|
||||
if not limit:
|
||||
limit = 1000000
|
||||
|
||||
# Grab any items that are active or queued in postproc
|
||||
postproc_queue = sabnzbd.PostProcessor.get_queue()
|
||||
|
||||
# Filter out any items that don't match the search term or category
|
||||
if postproc_queue:
|
||||
# It would be more efficient to iterate only once, but we accept the penalty for code clarity
|
||||
if isinstance(categories, list):
|
||||
postproc_queue = [nzo for nzo in postproc_queue if nzo.cat in categories]
|
||||
|
||||
if isinstance(search, str):
|
||||
# Replace * with .* and ' ' with .
|
||||
search_text = search.strip().replace("*", ".*").replace(" ", ".*") + ".*?"
|
||||
try:
|
||||
re_search = re.compile(search_text, re.I)
|
||||
postproc_queue = [nzo for nzo in postproc_queue if re_search.search(nzo.final_name)]
|
||||
except:
|
||||
logging.error(T("Failed to compile regex for search term: %s"), search_text)
|
||||
|
||||
if nzo_ids:
|
||||
postproc_queue = [nzo for nzo in postproc_queue if nzo.nzo_id in nzo_ids]
|
||||
postproc_queue = sabnzbd.PostProcessor.get_queue(
|
||||
search=search,
|
||||
categories=categories,
|
||||
statuses=statuses,
|
||||
nzo_ids=nzo_ids,
|
||||
)
|
||||
|
||||
# Multi-page support for postproc items
|
||||
postproc_queue_size = len(postproc_queue)
|
||||
@@ -1660,13 +1678,10 @@ def build_history(
|
||||
postproc_queue = []
|
||||
database_history_limit = limit
|
||||
else:
|
||||
try:
|
||||
if limit:
|
||||
postproc_queue = postproc_queue[start : start + limit]
|
||||
else:
|
||||
postproc_queue = postproc_queue[start:]
|
||||
except:
|
||||
pass
|
||||
if limit:
|
||||
postproc_queue = postproc_queue[start : start + limit]
|
||||
else:
|
||||
postproc_queue = postproc_queue[start:]
|
||||
# Remove the amount of postproc items from the db request for history items
|
||||
database_history_limit = max(limit - len(postproc_queue), 0)
|
||||
database_history_start = max(start - postproc_queue_size, 0)
|
||||
@@ -1683,36 +1698,30 @@ def build_history(
|
||||
# Fetch history items
|
||||
if not database_history_limit:
|
||||
items, total_items = history_db.fetch_history(
|
||||
database_history_start, 1, search, failed_only, categories, nzo_ids
|
||||
start=database_history_start,
|
||||
limit=1,
|
||||
search=search,
|
||||
categories=categories,
|
||||
statuses=statuses,
|
||||
nzo_ids=nzo_ids,
|
||||
)
|
||||
items = []
|
||||
else:
|
||||
items, total_items = history_db.fetch_history(
|
||||
database_history_start, database_history_limit, search, failed_only, categories, nzo_ids
|
||||
start=database_history_start,
|
||||
limit=database_history_limit,
|
||||
search=search,
|
||||
categories=categories,
|
||||
statuses=statuses,
|
||||
nzo_ids=nzo_ids,
|
||||
)
|
||||
|
||||
# Add the postproc items to the top of the history
|
||||
# Reverse the queue to add items to the top (faster than insert)
|
||||
items.reverse()
|
||||
|
||||
# Add the postproc items to the top of the history
|
||||
items = get_active_history(postproc_queue, items)
|
||||
|
||||
# Un-reverse the queue
|
||||
items.reverse()
|
||||
|
||||
for item in items:
|
||||
item["size"] = to_units(item["bytes"], "B")
|
||||
|
||||
if "loaded" not in item:
|
||||
item["loaded"] = False
|
||||
|
||||
path = item.get("path", "")
|
||||
item["retry"] = int_conv(item.get("status") == Status.FAILED and path and os.path.exists(path))
|
||||
# Retry of failed URL-fetch
|
||||
if item["report"] == "future":
|
||||
item["retry"] = True
|
||||
|
||||
add_active_history(postproc_queue, items)
|
||||
total_items += postproc_queue_size
|
||||
items.reverse()
|
||||
|
||||
if close_db:
|
||||
history_db.close()
|
||||
@@ -1720,48 +1729,49 @@ def build_history(
|
||||
return items, postproc_queue_size, total_items
|
||||
|
||||
|
||||
def get_active_history(queue, items):
|
||||
"""Get the jobs currently in progress and active history queue."""
|
||||
for nzo in queue:
|
||||
item = {}
|
||||
(
|
||||
item["completed"],
|
||||
item["name"],
|
||||
item["nzb_name"],
|
||||
item["category"],
|
||||
item["pp"],
|
||||
item["script"],
|
||||
item["report"],
|
||||
item["url"],
|
||||
item["status"],
|
||||
item["nzo_id"],
|
||||
item["storage"],
|
||||
item["path"],
|
||||
item["script_log"],
|
||||
item["script_line"],
|
||||
item["download_time"],
|
||||
item["postproc_time"],
|
||||
item["stage_log"],
|
||||
item["downloaded"],
|
||||
item["fail_message"],
|
||||
item["url_info"],
|
||||
item["bytes"],
|
||||
_,
|
||||
_,
|
||||
item["password"],
|
||||
) = build_history_info(nzo)
|
||||
item["action_line"] = nzo.action_line
|
||||
item = unpack_history_info(item)
|
||||
def add_active_history(postproc_queue: List[NzbObject], items: List[Dict[str, Any]]):
|
||||
"""Get the active history queue and add it to the existing items list"""
|
||||
for nzo in postproc_queue:
|
||||
# This output has to be the same as fetch_history!
|
||||
item = {
|
||||
"completed": int(time.time()),
|
||||
"name": nzo.final_name,
|
||||
"nzb_name": nzo.filename,
|
||||
"category": nzo.cat,
|
||||
"pp": PP_LOOKUP.get(opts_to_pp(nzo.repair, nzo.unpack, nzo.delete), "X"),
|
||||
"script": nzo.script,
|
||||
"report": "",
|
||||
"url": nzo.url,
|
||||
"status": nzo.status,
|
||||
"nzo_id": nzo.nzo_id,
|
||||
"storage": "",
|
||||
"path": clip_path(nzo.download_path),
|
||||
"script_line": "",
|
||||
"download_time": nzo.nzo_info.get("download_time", 0),
|
||||
"postproc_time": 0,
|
||||
"stage_log": [],
|
||||
"downloaded": nzo.bytes_downloaded,
|
||||
"completeness": None,
|
||||
"fail_message": nzo.fail_msg,
|
||||
"url_info": nzo.nzo_info.get("details", "") or nzo.nzo_info.get("more_info", ""),
|
||||
"bytes": nzo.bytes_downloaded,
|
||||
"size": to_units(nzo.bytes_downloaded, "B"),
|
||||
"meta": None,
|
||||
"series": "",
|
||||
"duplicate_key": nzo.duplicate_key,
|
||||
"md5sum": "",
|
||||
"password": nzo.correct_password,
|
||||
"action_line": nzo.action_line,
|
||||
"loaded": nzo.pp_active,
|
||||
"retry": False,
|
||||
}
|
||||
# Add stage information, in the correct order
|
||||
for stage in STAGES:
|
||||
if stage in nzo.unpack_info:
|
||||
item["stage_log"].append({"name": stage, "actions": nzo.unpack_info[stage]})
|
||||
|
||||
item["loaded"] = nzo.pp_active
|
||||
if item["bytes"]:
|
||||
item["size"] = to_units(item["bytes"], "B")
|
||||
else:
|
||||
item["size"] = ""
|
||||
items.append(item)
|
||||
|
||||
return items
|
||||
|
||||
|
||||
def calc_timeleft(bytesleft, bps):
|
||||
"""Based on bytesleft and bps calculate the time left in the format HH:MM:SS"""
|
||||
|
||||
@@ -22,7 +22,7 @@ sabnzbd.articlecache - Article cache handling
|
||||
import logging
|
||||
import threading
|
||||
import struct
|
||||
from typing import Dict, List
|
||||
from typing import Dict, Collection
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.decorators import synchronized
|
||||
@@ -91,7 +91,7 @@ class ArticleCache:
|
||||
return
|
||||
|
||||
# Register article for bookkeeping in case the job is deleted
|
||||
nzo.add_saved_article(article)
|
||||
nzo.saved_articles.add(article)
|
||||
|
||||
if article.lowest_partnum and not (article.nzf.import_finished or article.nzf.filename_checked):
|
||||
# Write the first-fetched articles to temporary file unless downloading
|
||||
@@ -133,7 +133,7 @@ class ArticleCache:
|
||||
data = sabnzbd.filesystem.load_data(
|
||||
article.art_id, nzo.admin_path, remove=True, do_pickle=False, silent=True
|
||||
)
|
||||
nzo.remove_saved_article(article)
|
||||
nzo.saved_articles.discard(article)
|
||||
return data
|
||||
|
||||
def flush_articles(self):
|
||||
@@ -147,7 +147,7 @@ class ArticleCache:
|
||||
# Could fail if already deleted by purge_articles or load_data
|
||||
logging.debug("Failed to flush item from cache, probably already deleted or written to disk")
|
||||
|
||||
def purge_articles(self, articles: List[Article]):
|
||||
def purge_articles(self, articles: Collection[Article]):
|
||||
"""Remove all saved articles, from memory and disk"""
|
||||
logging.debug("Purging %s articles from the cache/disk", len(articles))
|
||||
for article in articles:
|
||||
|
||||
@@ -36,6 +36,7 @@ from sabnzbd.filesystem import (
|
||||
diskspace,
|
||||
get_filename,
|
||||
has_unwanted_extension,
|
||||
get_basename,
|
||||
)
|
||||
from sabnzbd.constants import Status, GIGI, MAX_ASSEMBLER_QUEUE
|
||||
import sabnzbd.cfg as cfg
|
||||
@@ -156,6 +157,7 @@ class Assembler(Thread):
|
||||
sabnzbd.Downloader.pause()
|
||||
if cfg.fulldisk_autoresume():
|
||||
sabnzbd.Scheduler.plan_diskspace_resume(full_dir, required_space)
|
||||
sabnzbd.notifier.send_notification("SABnzbd", T("Too little diskspace forcing PAUSE"), "disk_full")
|
||||
sabnzbd.emailer.diskfull_mail()
|
||||
|
||||
@staticmethod
|
||||
@@ -249,7 +251,7 @@ SAFE_EXTS = (".mkv", ".mp4", ".avi", ".wmv", ".mpg", ".webm")
|
||||
|
||||
def is_cloaked(nzo: NzbObject, path: str, names: List[str]) -> bool:
|
||||
"""Return True if this is likely to be a cloaked encrypted post"""
|
||||
fname = os.path.splitext(get_filename(path.lower()))[0]
|
||||
fname = get_basename(get_filename(path.lower()))
|
||||
for name in names:
|
||||
name = get_filename(name.lower())
|
||||
name, ext = os.path.splitext(name)
|
||||
|
||||
136
sabnzbd/cfg.py
136
sabnzbd/cfg.py
@@ -25,7 +25,7 @@ import re
|
||||
import argparse
|
||||
import socket
|
||||
import ipaddress
|
||||
from typing import List, Tuple
|
||||
from typing import List, Tuple, Union
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.config import (
|
||||
@@ -51,7 +51,11 @@ from sabnzbd.constants import (
|
||||
DEF_HTTPS_CERT_FILE,
|
||||
DEF_HTTPS_KEY_FILE,
|
||||
)
|
||||
from sabnzbd.filesystem import long_path
|
||||
from sabnzbd.filesystem import same_directory, real_path, is_valid_script, is_network_path
|
||||
|
||||
# Validators currently only are made for string/list-of-strings
|
||||
# and return those on success or an error message.
|
||||
ValidateResult = Union[Tuple[None, str], Tuple[None, List[str]], Tuple[str, None]]
|
||||
|
||||
|
||||
##############################################################################
|
||||
@@ -64,7 +68,7 @@ class ErrorCatchingArgumentParser(argparse.ArgumentParser):
|
||||
raise ValueError
|
||||
|
||||
|
||||
def clean_nice_ionice_parameters(value):
|
||||
def clean_nice_ionice_parameters(value: str) -> ValidateResult:
|
||||
"""Verify that the passed parameters are not exploits"""
|
||||
if value:
|
||||
parser = ErrorCatchingArgumentParser()
|
||||
@@ -87,30 +91,20 @@ def clean_nice_ionice_parameters(value):
|
||||
return None, value
|
||||
|
||||
|
||||
def all_lowercase(value):
|
||||
"""Lowercase everything!"""
|
||||
def all_lowercase(value: Union[str, List]) -> Tuple[None, Union[str, List]]:
|
||||
"""Lowercase and strip everything!"""
|
||||
if isinstance(value, list):
|
||||
# If list, for each item
|
||||
return None, [item.lower() for item in value]
|
||||
return None, value.lower()
|
||||
return None, [item.lower().strip() for item in value]
|
||||
return None, value.lower().strip()
|
||||
|
||||
|
||||
def lower_case_ext(value):
|
||||
def lower_case_ext(value: Union[str, List]) -> Tuple[None, Union[str, List]]:
|
||||
"""Generate lower case extension(s), without dot"""
|
||||
if isinstance(value, list):
|
||||
return None, [item.lower().strip(" .") for item in value]
|
||||
return None, value.lower().strip(" .")
|
||||
|
||||
|
||||
def validate_no_unc(root, value, default):
|
||||
"""Check if path isn't a UNC path"""
|
||||
# Only need to check the 'value' part
|
||||
if value and not value.startswith(r"\\"):
|
||||
return validate_notempty(root, value, default)
|
||||
else:
|
||||
return T('UNC path "%s" not allowed here') % value, None
|
||||
|
||||
|
||||
def validate_single_tag(value: List[str]) -> Tuple[None, List[str]]:
|
||||
"""Don't split single indexer tags like "TV > HD"
|
||||
into ['TV', '>', 'HD']
|
||||
@@ -121,7 +115,7 @@ def validate_single_tag(value: List[str]) -> Tuple[None, List[str]]:
|
||||
return None, value
|
||||
|
||||
|
||||
def validate_strip_right_slash(value):
|
||||
def validate_strip_right_slash(value: str) -> Tuple[None, str]:
|
||||
"""Strips the right slash"""
|
||||
if value:
|
||||
return None, value.rstrip("/")
|
||||
@@ -131,8 +125,7 @@ def validate_strip_right_slash(value):
|
||||
RE_VAL = re.compile(r"[^@ ]+@[^.@ ]+\.[^.@ ]")
|
||||
|
||||
|
||||
def validate_email(value):
|
||||
global email_endjob, email_full, email_rss
|
||||
def validate_email(value: Union[List, str]) -> ValidateResult:
|
||||
if email_endjob() or email_full() or email_rss():
|
||||
if isinstance(value, list):
|
||||
values = value
|
||||
@@ -144,18 +137,16 @@ def validate_email(value):
|
||||
return None, value
|
||||
|
||||
|
||||
def validate_server(value):
|
||||
def validate_server(value: str) -> ValidateResult:
|
||||
"""Check if server non-empty"""
|
||||
global email_endjob, email_full, email_rss
|
||||
if value == "" and (email_endjob() or email_full() or email_rss()):
|
||||
return T("Server address required"), None
|
||||
else:
|
||||
return None, value
|
||||
|
||||
|
||||
def validate_host(value):
|
||||
def validate_host(value: str) -> ValidateResult:
|
||||
"""Check if host is valid: an IP address, or a name/FQDN that resolves to an IP address"""
|
||||
|
||||
# easy: value is a plain IPv4 or IPv6 address:
|
||||
try:
|
||||
ipaddress.ip_address(value)
|
||||
@@ -195,16 +186,16 @@ def validate_host(value):
|
||||
return T("Invalid server address."), None
|
||||
|
||||
|
||||
def validate_script(value):
|
||||
def validate_script(value: str) -> ValidateResult:
|
||||
"""Check if value is a valid script"""
|
||||
if not sabnzbd.__INITIALIZED__ or (value and sabnzbd.filesystem.is_valid_script(value)):
|
||||
if not sabnzbd.__INITIALIZED__ or (value and is_valid_script(value)):
|
||||
return None, value
|
||||
elif (value and value == "None") or not value:
|
||||
return None, "None"
|
||||
return T("%s is not a valid script") % value, None
|
||||
|
||||
|
||||
def validate_permissions(value: str):
|
||||
def validate_permissions(value: str) -> ValidateResult:
|
||||
"""Check the permissions for correct input"""
|
||||
# Octal verification
|
||||
if not value:
|
||||
@@ -225,18 +216,46 @@ def validate_permissions(value: str):
|
||||
return None, value
|
||||
|
||||
|
||||
def validate_safedir(root, value, default):
|
||||
"""Allow only when queues are empty and no UNC"""
|
||||
def validate_safedir(root: str, value: str, default: str) -> ValidateResult:
|
||||
"""Allow only when queues are empty and not a network-path"""
|
||||
if not sabnzbd.__INITIALIZED__ or (sabnzbd.PostProcessor.empty() and sabnzbd.NzbQueue.is_empty()):
|
||||
return validate_no_unc(root, value, default)
|
||||
if is_network_path(real_path(root, value)):
|
||||
return T('Network path "%s" is not allowed here') % value, None
|
||||
else:
|
||||
return validate_default_if_empty(root, value, default)
|
||||
else:
|
||||
return T("Error: Queue not empty, cannot change folder."), None
|
||||
return T("Queue not empty, cannot change folder."), None
|
||||
|
||||
|
||||
def validate_scriptdir_not_appdir(root, value, default):
|
||||
def validate_download_vs_complete_dir(root: str, value: str, default: str):
|
||||
"""Make sure download_dir and complete_dir are not identical
|
||||
or that download_dir is not a subfolder of complete_dir"""
|
||||
# Check what new value we are trying to set
|
||||
if default == DEF_COMPLETE_DIR:
|
||||
check_download_dir = download_dir.get_path()
|
||||
check_complete_dir = real_path(root, value)
|
||||
elif default == DEF_DOWNLOAD_DIR:
|
||||
check_download_dir = real_path(root, value)
|
||||
check_complete_dir = complete_dir.get_path()
|
||||
else:
|
||||
raise ValueError("Validator can only be used for download_dir/complete_dir")
|
||||
|
||||
if same_directory(check_download_dir, check_complete_dir):
|
||||
return (
|
||||
T("The Completed Download Folder cannot be the same or a subfolder of the Temporary Download Folder"),
|
||||
None,
|
||||
)
|
||||
elif default == DEF_COMPLETE_DIR:
|
||||
# The complete_dir allows UNC
|
||||
return validate_default_if_empty(root, value, default)
|
||||
else:
|
||||
return validate_safedir(root, value, default)
|
||||
|
||||
|
||||
def validate_scriptdir_not_appdir(root: str, value: str, default: str) -> Tuple[None, str]:
|
||||
"""Warn users to not use the Program Files folder for their scripts"""
|
||||
# Need to add seperator so /mnt/sabnzbd and /mnt/sabnzbd-data are not detected as equal
|
||||
if value and long_path(os.path.join(root, value)).startswith(long_path(sabnzbd.DIR_PROG) + os.pathsep):
|
||||
if value and same_directory(sabnzbd.DIR_PROG, os.path.join(root, value)):
|
||||
# Warn, but do not block
|
||||
sabnzbd.misc.helpful_warning(
|
||||
T(
|
||||
@@ -246,7 +265,7 @@ def validate_scriptdir_not_appdir(root, value, default):
|
||||
return None, value
|
||||
|
||||
|
||||
def validate_notempty(root, value, default):
|
||||
def validate_default_if_empty(root: str, value: str, default: str) -> Tuple[None, str]:
|
||||
"""If value is empty, return default"""
|
||||
if value:
|
||||
return None, value
|
||||
@@ -257,7 +276,7 @@ def validate_notempty(root, value, default):
|
||||
##############################################################################
|
||||
# Special settings
|
||||
##############################################################################
|
||||
pre_script = OptionStr("misc", "pre_script", "None", validation=validate_script)
|
||||
|
||||
queue_complete = OptionStr("misc", "queue_complete")
|
||||
queue_complete_pers = OptionBool("misc", "queue_complete_pers", False)
|
||||
bandwidth_perc = OptionNumber("misc", "bandwidth_perc", 100, minval=0, maxval=100)
|
||||
@@ -311,11 +330,21 @@ socks5_proxy_url = OptionStr("misc", "socks5_proxy_url")
|
||||
##############################################################################
|
||||
permissions = OptionStr("misc", "permissions", validation=validate_permissions)
|
||||
download_dir = OptionDir(
|
||||
"misc", "download_dir", DEF_DOWNLOAD_DIR, create=False, apply_permissions=True, validation=validate_safedir
|
||||
"misc",
|
||||
"download_dir",
|
||||
DEF_DOWNLOAD_DIR,
|
||||
create=False, # Flag is modified and directory is created during initialize!
|
||||
apply_permissions=True,
|
||||
validation=validate_download_vs_complete_dir,
|
||||
)
|
||||
download_free = OptionStr("misc", "download_free")
|
||||
complete_dir = OptionDir(
|
||||
"misc", "complete_dir", DEF_COMPLETE_DIR, create=False, apply_permissions=True, validation=validate_notempty
|
||||
"misc",
|
||||
"complete_dir",
|
||||
DEF_COMPLETE_DIR,
|
||||
create=False, # Flag is modified and directory is created during initialize!
|
||||
apply_permissions=True,
|
||||
validation=validate_download_vs_complete_dir,
|
||||
)
|
||||
complete_free = OptionStr("misc", "complete_free")
|
||||
fulldisk_autoresume = OptionBool("misc", "fulldisk_autoresume", False)
|
||||
@@ -326,7 +355,7 @@ backup_dir = OptionDir("misc", "backup_dir")
|
||||
dirscan_dir = OptionDir("misc", "dirscan_dir", writable=False)
|
||||
dirscan_speed = OptionNumber("misc", "dirscan_speed", DEF_SCANRATE, minval=0, maxval=3600)
|
||||
password_file = OptionDir("misc", "password_file", "", create=False)
|
||||
log_dir = OptionDir("misc", "log_dir", "logs", validation=validate_notempty)
|
||||
log_dir = OptionDir("misc", "log_dir", "logs", validation=validate_default_if_empty)
|
||||
|
||||
|
||||
##############################################################################
|
||||
@@ -346,15 +375,18 @@ ionice = OptionStr("misc", "ionice", validation=clean_nice_ionice_parameters)
|
||||
fail_hopeless_jobs = OptionBool("misc", "fail_hopeless_jobs", True)
|
||||
fast_fail = OptionBool("misc", "fast_fail", True)
|
||||
autodisconnect = OptionBool("misc", "auto_disconnect", True)
|
||||
pre_script = OptionStr("misc", "pre_script", "None", validation=validate_script)
|
||||
end_queue_script = OptionStr("misc", "end_queue_script", "None", validation=validate_script)
|
||||
no_dupes = OptionNumber("misc", "no_dupes", 0)
|
||||
no_series_dupes = OptionNumber("misc", "no_series_dupes", 0)
|
||||
series_propercheck = OptionBool("misc", "series_propercheck", True)
|
||||
no_series_dupes = OptionNumber("misc", "no_series_dupes", 0) # Kept for converting to no_smart_dupes
|
||||
no_smart_dupes = OptionNumber("misc", "no_smart_dupes", 0)
|
||||
dupes_propercheck = OptionBool("misc", "dupes_propercheck", True)
|
||||
pause_on_pwrar = OptionNumber("misc", "pause_on_pwrar", 1)
|
||||
ignore_samples = OptionBool("misc", "ignore_samples", False)
|
||||
deobfuscate_final_filenames = OptionBool("misc", "deobfuscate_final_filenames", True)
|
||||
auto_sort = OptionStr("misc", "auto_sort")
|
||||
direct_unpack = OptionBool("misc", "direct_unpack", False)
|
||||
propagation_delay = OptionNumber("misc", "propagation_delay", 0)
|
||||
propagation_delay = OptionNumber("misc", "propagation_delay", 0, minval=0)
|
||||
folder_rename = OptionBool("misc", "folder_rename", True)
|
||||
replace_spaces = OptionBool("misc", "replace_spaces", False)
|
||||
replace_underscores = OptionBool("misc", "replace_underscores", False)
|
||||
@@ -419,7 +451,7 @@ wait_for_dfolder = OptionBool("misc", "wait_for_dfolder", False)
|
||||
rss_filenames = OptionBool("misc", "rss_filenames", False)
|
||||
api_logging = OptionBool("misc", "api_logging", True)
|
||||
html_login = OptionBool("misc", "html_login", True)
|
||||
warn_dupl_jobs = OptionBool("misc", "warn_dupl_jobs", True)
|
||||
warn_dupl_jobs = OptionBool("misc", "warn_dupl_jobs", False)
|
||||
helpful_warnings = OptionBool("misc", "helpful_warnings", True)
|
||||
keep_awake = OptionBool("misc", "keep_awake", True)
|
||||
tray_icon = OptionBool("misc", "tray_icon", True)
|
||||
@@ -476,7 +508,7 @@ email_cats = OptionList("misc", "email_cats", ["*"])
|
||||
# [ncenter]
|
||||
ncenter_enable = OptionBool("ncenter", "ncenter_enable", sabnzbd.MACOS)
|
||||
ncenter_cats = OptionList("ncenter", "ncenter_cats", ["*"])
|
||||
ncenter_prio_startup = OptionBool("ncenter", "ncenter_prio_startup", True)
|
||||
ncenter_prio_startup = OptionBool("ncenter", "ncenter_prio_startup", False)
|
||||
ncenter_prio_download = OptionBool("ncenter", "ncenter_prio_download", False)
|
||||
ncenter_prio_pause_resume = OptionBool("ncenter", "ncenter_prio_pause_resume", False)
|
||||
ncenter_prio_pp = OptionBool("ncenter", "ncenter_prio_pp", False)
|
||||
@@ -486,7 +518,7 @@ ncenter_prio_disk_full = OptionBool("ncenter", "ncenter_prio_disk_full", True)
|
||||
ncenter_prio_new_login = OptionBool("ncenter", "ncenter_prio_new_login", False)
|
||||
ncenter_prio_warning = OptionBool("ncenter", "ncenter_prio_warning", False)
|
||||
ncenter_prio_error = OptionBool("ncenter", "ncenter_prio_error", False)
|
||||
ncenter_prio_queue_done = OptionBool("ncenter", "ncenter_prio_queue_done", True)
|
||||
ncenter_prio_queue_done = OptionBool("ncenter", "ncenter_prio_queue_done", False)
|
||||
ncenter_prio_other = OptionBool("ncenter", "ncenter_prio_other", True)
|
||||
|
||||
# [acenter]
|
||||
@@ -502,13 +534,13 @@ acenter_prio_disk_full = OptionBool("acenter", "acenter_prio_disk_full", True)
|
||||
acenter_prio_new_login = OptionBool("acenter", "acenter_prio_new_login", False)
|
||||
acenter_prio_warning = OptionBool("acenter", "acenter_prio_warning", False)
|
||||
acenter_prio_error = OptionBool("acenter", "acenter_prio_error", False)
|
||||
acenter_prio_queue_done = OptionBool("acenter", "acenter_prio_queue_done", True)
|
||||
acenter_prio_queue_done = OptionBool("acenter", "acenter_prio_queue_done", False)
|
||||
acenter_prio_other = OptionBool("acenter", "acenter_prio_other", True)
|
||||
|
||||
# [ntfosd]
|
||||
ntfosd_enable = OptionBool("ntfosd", "ntfosd_enable", not sabnzbd.WIN32 and not sabnzbd.MACOS)
|
||||
ntfosd_cats = OptionList("ntfosd", "ntfosd_cats", ["*"])
|
||||
ntfosd_prio_startup = OptionBool("ntfosd", "ntfosd_prio_startup", True)
|
||||
ntfosd_prio_startup = OptionBool("ntfosd", "ntfosd_prio_startup", False)
|
||||
ntfosd_prio_download = OptionBool("ntfosd", "ntfosd_prio_download", False)
|
||||
ntfosd_prio_pause_resume = OptionBool("ntfosd", "ntfosd_prio_pause_resume", False)
|
||||
ntfosd_prio_pp = OptionBool("ntfosd", "ntfosd_prio_pp", False)
|
||||
@@ -518,7 +550,7 @@ ntfosd_prio_disk_full = OptionBool("ntfosd", "ntfosd_prio_disk_full", True)
|
||||
ntfosd_prio_new_login = OptionBool("ntfosd", "ntfosd_prio_new_login", False)
|
||||
ntfosd_prio_warning = OptionBool("ntfosd", "ntfosd_prio_warning", False)
|
||||
ntfosd_prio_error = OptionBool("ntfosd", "ntfosd_prio_error", False)
|
||||
ntfosd_prio_queue_done = OptionBool("ntfosd", "ntfosd_prio_queue_done", True)
|
||||
ntfosd_prio_queue_done = OptionBool("ntfosd", "ntfosd_prio_queue_done", False)
|
||||
ntfosd_prio_other = OptionBool("ntfosd", "ntfosd_prio_other", True)
|
||||
|
||||
# [prowl]
|
||||
@@ -535,7 +567,7 @@ prowl_prio_disk_full = OptionNumber("prowl", "prowl_prio_disk_full", 1)
|
||||
prowl_prio_new_login = OptionNumber("prowl", "prowl_prio_new_login", -3)
|
||||
prowl_prio_warning = OptionNumber("prowl", "prowl_prio_warning", -3)
|
||||
prowl_prio_error = OptionNumber("prowl", "prowl_prio_error", -3)
|
||||
prowl_prio_queue_done = OptionNumber("prowl", "prowl_prio_queue_done", 0)
|
||||
prowl_prio_queue_done = OptionNumber("prowl", "prowl_prio_queue_done", -3)
|
||||
prowl_prio_other = OptionNumber("prowl", "prowl_prio_other", 0)
|
||||
|
||||
# [pushover]
|
||||
@@ -556,7 +588,7 @@ pushover_prio_disk_full = OptionNumber("pushover", "pushover_prio_disk_full", 1)
|
||||
pushover_prio_new_login = OptionNumber("pushover", "pushover_prio_new_login", -3)
|
||||
pushover_prio_warning = OptionNumber("pushover", "pushover_prio_warning", 1)
|
||||
pushover_prio_error = OptionNumber("pushover", "pushover_prio_error", 1)
|
||||
pushover_prio_queue_done = OptionNumber("pushover", "pushover_prio_queue_done", -1)
|
||||
pushover_prio_queue_done = OptionNumber("pushover", "pushover_prio_queue_done", -3)
|
||||
pushover_prio_other = OptionNumber("pushover", "pushover_prio_other", -1)
|
||||
|
||||
# [pushbullet]
|
||||
@@ -582,7 +614,7 @@ nscript_enable = OptionBool("nscript", "nscript_enable")
|
||||
nscript_cats = OptionList("nscript", "nscript_cats", ["*"])
|
||||
nscript_script = OptionStr("nscript", "nscript_script", validation=validate_script)
|
||||
nscript_parameters = OptionStr("nscript", "nscript_parameters")
|
||||
nscript_prio_startup = OptionBool("nscript", "nscript_prio_startup", True)
|
||||
nscript_prio_startup = OptionBool("nscript", "nscript_prio_startup", False)
|
||||
nscript_prio_download = OptionBool("nscript", "nscript_prio_download", False)
|
||||
nscript_prio_pause_resume = OptionBool("nscript", "nscript_prio_pause_resume", False)
|
||||
nscript_prio_pp = OptionBool("nscript", "nscript_prio_pp", False)
|
||||
@@ -592,7 +624,7 @@ nscript_prio_disk_full = OptionBool("nscript", "nscript_prio_disk_full", True)
|
||||
nscript_prio_new_login = OptionBool("nscript", "nscript_prio_new_login", False)
|
||||
nscript_prio_warning = OptionBool("nscript", "nscript_prio_warning", False)
|
||||
nscript_prio_error = OptionBool("nscript", "nscript_prio_error", False)
|
||||
nscript_prio_queue_done = OptionBool("nscript", "nscript_prio_queue_done", True)
|
||||
nscript_prio_queue_done = OptionBool("nscript", "nscript_prio_queue_done", False)
|
||||
nscript_prio_other = OptionBool("nscript", "nscript_prio_other", True)
|
||||
|
||||
|
||||
|
||||
@@ -46,8 +46,7 @@ from sabnzbd.constants import (
|
||||
from sabnzbd.decorators import synchronized
|
||||
from sabnzbd.filesystem import clip_path, real_path, create_real_path, renamer, remove_file, is_writable
|
||||
|
||||
CONFIG_LOCK = threading.Lock()
|
||||
SAVE_CONFIG_LOCK = threading.Lock()
|
||||
CONFIG_LOCK = threading.RLock()
|
||||
|
||||
|
||||
CFG_OBJ: configobj.ConfigObj # Holds INI structure
|
||||
@@ -57,7 +56,7 @@ CFG_OBJ: configobj.ConfigObj # Holds INI structure
|
||||
CFG_MODIFIED = False # Signals a change in option dictionary
|
||||
# Should be reset after saving to settings file
|
||||
|
||||
RE_PARAMFINDER = re.compile(r"""(?:'.*?')|(?:".*?")|(?:[^'",\s][^,]*)""")
|
||||
RE_PARAMFINDER = re.compile(r"""'.*?'|".*?"|[^'",\s][^,]*""")
|
||||
|
||||
|
||||
class Option:
|
||||
@@ -236,6 +235,11 @@ class OptionDir(Option):
|
||||
self.__writable: bool = writable
|
||||
super().__init__(section, keyword, default_val, add=add, public=public, protect=protect)
|
||||
|
||||
def create_path(self, path: Optional[str] = None):
|
||||
if not path:
|
||||
path = self.get()
|
||||
return create_real_path(self.keyword, self.__root, path, self.__apply_permissions, self.__writable)
|
||||
|
||||
def get(self) -> str:
|
||||
"""Return value, corrected for platform"""
|
||||
p = super().get()
|
||||
@@ -245,15 +249,12 @@ class OptionDir(Option):
|
||||
return p.replace("\\", "/") if "\\" in p else p
|
||||
|
||||
def get_path(self) -> str:
|
||||
"""Return full absolute path"""
|
||||
value = self.get()
|
||||
"""Return full absolute path, create it if necessary"""
|
||||
path = ""
|
||||
if value:
|
||||
if value := self.get():
|
||||
path = real_path(self.__root, value)
|
||||
if self.__create and not os.path.exists(path):
|
||||
_, path, _ = create_real_path(
|
||||
self.keyword, self.__root, value, self.__apply_permissions, self.__writable
|
||||
)
|
||||
_, path, _ = self.create_path(value)
|
||||
return path
|
||||
|
||||
def get_clipped_path(self) -> str:
|
||||
@@ -262,8 +263,7 @@ class OptionDir(Option):
|
||||
|
||||
def test_path(self) -> bool:
|
||||
"""Return True if path exists"""
|
||||
value = self.get()
|
||||
if value:
|
||||
if value := self.get():
|
||||
return os.path.exists(real_path(self.__root, value))
|
||||
else:
|
||||
return False
|
||||
@@ -285,9 +285,7 @@ class OptionDir(Option):
|
||||
error, value = self.__validation(self.__root, value, super().default)
|
||||
if not error:
|
||||
if value and (self.__create or create):
|
||||
res, path, error = create_real_path(
|
||||
self.keyword, self.__root, value, self.__apply_permissions, self.__writable
|
||||
)
|
||||
_, path, error = self.create_path(value)
|
||||
if not error:
|
||||
super().set(value)
|
||||
return error
|
||||
@@ -432,7 +430,7 @@ class ConfigServer:
|
||||
name = "servers," + self.__name
|
||||
|
||||
self.displayname = OptionStr(name, "displayname", add=False)
|
||||
self.host = OptionStr(name, "host", add=False)
|
||||
self.host = OptionStr(name, "host", validation=sabnzbd.cfg.all_lowercase, add=False)
|
||||
self.port = OptionNumber(name, "port", 119, 0, 2**16 - 1, add=False)
|
||||
self.timeout = OptionNumber(name, "timeout", 60, 20, 240, add=False)
|
||||
self.username = OptionStr(name, "username", add=False)
|
||||
@@ -783,6 +781,7 @@ def delete_from_database(section, keyword):
|
||||
CFG_MODIFIED = True
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def get_dconfig(section, keyword, nested=False):
|
||||
"""Return a config values dictionary,
|
||||
Single item or slices based on 'section', 'keyword'
|
||||
@@ -829,6 +828,7 @@ def get_dconfig(section, keyword, nested=False):
|
||||
return True, data
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def get_config(section: str, keyword: str) -> Optional[AllConfigTypes]:
|
||||
"""Return a config object, based on 'section', 'keyword'"""
|
||||
try:
|
||||
@@ -838,6 +838,7 @@ def get_config(section: str, keyword: str) -> Optional[AllConfigTypes]:
|
||||
return None
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def set_config(kwargs):
|
||||
"""Set a config item, using values in dictionary"""
|
||||
try:
|
||||
@@ -848,6 +849,7 @@ def set_config(kwargs):
|
||||
return True
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def delete(section: str, keyword: str):
|
||||
"""Delete specific config item"""
|
||||
try:
|
||||
@@ -862,7 +864,7 @@ def delete(section: str, keyword: str):
|
||||
# This does input and output of configuration to an INI file.
|
||||
# It translates this data structure to the config database.
|
||||
##############################################################################
|
||||
@synchronized(SAVE_CONFIG_LOCK)
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def read_config(path):
|
||||
"""Read the complete INI file and check its version number
|
||||
if OK, pass values to config-database
|
||||
@@ -947,7 +949,7 @@ def _read_config(path, try_backup=False):
|
||||
return True, ""
|
||||
|
||||
|
||||
@synchronized(SAVE_CONFIG_LOCK)
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def save_config(force=False):
|
||||
"""Update Setup file with current option values"""
|
||||
global CFG_OBJ, CFG_DATABASE, CFG_MODIFIED
|
||||
@@ -1102,6 +1104,7 @@ def restore_config_backup(config_backup_data: bytes):
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def get_servers() -> Dict[str, ConfigServer]:
|
||||
global CFG_DATABASE
|
||||
try:
|
||||
@@ -1110,6 +1113,7 @@ def get_servers() -> Dict[str, ConfigServer]:
|
||||
return {}
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def get_sorters() -> Dict[str, ConfigSorter]:
|
||||
global CFG_DATABASE
|
||||
try:
|
||||
@@ -1128,6 +1132,7 @@ def get_ordered_sorters() -> List[Dict]:
|
||||
return sorters
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def get_categories() -> Dict[str, ConfigCat]:
|
||||
"""Return link to categories section.
|
||||
This section will always contain special category '*'
|
||||
@@ -1179,6 +1184,7 @@ def get_ordered_categories() -> List[Dict]:
|
||||
return categories
|
||||
|
||||
|
||||
@synchronized(CONFIG_LOCK)
|
||||
def get_rss() -> Dict[str, ConfigRSS]:
|
||||
global CFG_DATABASE
|
||||
try:
|
||||
|
||||
@@ -49,7 +49,7 @@ RENAMES_FILE = "__renames__"
|
||||
ATTRIB_FILE = "SABnzbd_attrib"
|
||||
REPAIR_REQUEST = "repair-all.sab"
|
||||
|
||||
SABCTOOLS_VERSION_REQUIRED = "7.1.2"
|
||||
SABCTOOLS_VERSION_REQUIRED = "8.1.0"
|
||||
|
||||
DB_HISTORY_VERSION = 1
|
||||
DB_HISTORY_NAME = "history%s.db" % DB_HISTORY_VERSION
|
||||
@@ -107,9 +107,10 @@ NORMAL_PRIORITY = 0
|
||||
LOW_PRIORITY = -1
|
||||
DEFAULT_PRIORITY = -100
|
||||
PAUSED_PRIORITY = -2
|
||||
DUP_PRIORITY = -3
|
||||
STOP_PRIORITY = -4
|
||||
|
||||
PP_LOOKUP = {0: "", 1: "R", 2: "U", 3: "D"}
|
||||
|
||||
INTERFACE_PRIORITIES = {
|
||||
FORCE_PRIORITY: "Force",
|
||||
REPAIR_PRIORITY: "Repair",
|
||||
@@ -119,14 +120,15 @@ INTERFACE_PRIORITIES = {
|
||||
}
|
||||
|
||||
STAGES = {
|
||||
"Source": 0,
|
||||
"Download": 1,
|
||||
"Servers": 2,
|
||||
"Repair": 3,
|
||||
"Filejoin": 4,
|
||||
"Unpack": 5,
|
||||
"Deobfuscate": 6,
|
||||
"Script": 7,
|
||||
"RSS": 0,
|
||||
"Source": 1,
|
||||
"Download": 2,
|
||||
"Servers": 3,
|
||||
"Repair": 4,
|
||||
"Filejoin": 5,
|
||||
"Unpack": 6,
|
||||
"Deobfuscate": 7,
|
||||
"Script": 8,
|
||||
}
|
||||
|
||||
VALID_ARCHIVES = (".zip", ".rar", ".7z")
|
||||
@@ -161,7 +163,14 @@ class Status:
|
||||
RUNNING = "Running" # PP: User's post processing script is running
|
||||
VERIFYING = "Verifying" # PP: Job is being verified (by par2)
|
||||
DELETED = "Deleted" # Q: Job has been deleted (and is almost gone)
|
||||
PROP = "Propagating" # Q: Delayed download
|
||||
PROPAGATING = "Propagating" # Q: Delayed download
|
||||
|
||||
|
||||
class DuplicateStatus:
|
||||
DUPLICATE = "Duplicate" # Simple duplicate
|
||||
DUPLICATE_ALTERNATIVE = "Duplicate Alternative" # Alternative duplicate for a queued job
|
||||
SMART_DUPLICATE = "Smart Duplicate" # Simple Series duplicate
|
||||
SMART_DUPLICATE_ALTERNATIVE = "Smart Duplicate Alternative" # Alternative duplicate for a queued job
|
||||
|
||||
|
||||
class AddNzbFileResult:
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user