Compare commits

..

2 Commits
3.7.2 ... 3.6.x

203 changed files with 2935 additions and 3557 deletions

37
.github/renovate.json vendored
View File

@@ -1,37 +0,0 @@
{
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
"extends": [
"config:base",
":disableDependencyDashboard"
],
"schedule": [
"before 3am on Monday"
],
"ignorePaths": [
"tests/**",
".github/workflows/**"
],
"pip_requirements": {
"fileMatch": [
"requirements.txt",
"builder/requirements.txt",
"builder/osx/requirements.txt"
]
},
"ignoreDeps": [
"jaraco.text"
],
"packageRules": [
{
"matchPackagePatterns": [
"*"
],
"groupName": "all dependencies",
"groupSlug": "all",
"separateMajorMinor": false,
"automerge": true
}
],
"automergeStrategy": "squash",
"platformAutomerge": true
}

View File

@@ -2,10 +2,8 @@ name: Build binaries and source distribution
on: [push, pull_request]
# Setting PYTHONNODEBUGRANGES reduces binary size
env:
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
PYTHONNODEBUGRANGES: 1
jobs:
build_windows:
@@ -14,13 +12,13 @@ jobs:
timeout-minutes: 30
steps:
- uses: actions/checkout@v3
- name: Set up Python 3.11 (64bit)
uses: actions/setup-python@v4
- name: Set up Python 3.10 (64bit)
uses: actions/setup-python@v3
with:
python-version: "3.11"
python-version: "3.10"
architecture: "x64"
- name: Cache Python virtualenv (64bit)
uses: syphar/restore-virtualenv@v1.3
uses: syphar/restore-virtualenv@v1.2
id: cache-virtualenv-64bit
with:
custom_virtualenv_dir: "venv64"
@@ -48,12 +46,12 @@ jobs:
path: "*-win-setup.exe"
name: Windows installer
- name: Set up Python 3.8 (32bit and legacy)
uses: actions/setup-python@v4
uses: actions/setup-python@v3
with:
python-version: "3.8"
architecture: "x86"
- name: Cache Python virtualenv (32bit and legacy)
uses: syphar/restore-virtualenv@v1.3
uses: syphar/restore-virtualenv@v1.2
id: cache-virtualenv-32bit
with:
custom_virtualenv_dir: "venv32"
@@ -84,14 +82,16 @@ jobs:
runs-on: macos-11
timeout-minutes: 30
env:
SIGNING_AUTH: ${{ secrets.SIGNING_AUTH }}
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_USER }}
NOTARIZATION_PASS: ${{ secrets.NOTARIZATION_PASS }}
# 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.1"
PYTHON_VERSION: "3.10.6"
MACOSX_DEPLOYMENT_TARGET: "10.9"
# We need to force compile for universal2 support
CFLAGS: -arch x86_64 -arch arm64
ARCHFLAGS: -arch x86_64 -arch arm64
CFLAGS: -arch arm64 -arch x86_64
steps:
- uses: actions/checkout@v3
- name: Cache Python download
@@ -99,7 +99,7 @@ jobs:
uses: actions/cache@v3
with:
path: ~/python.pkg
key: cache-macOS-Python-${{ env.PYTHON_VERSION }}
key: macOS-Python-${{ env.PYTHON_VERSION }}
- name: Get Python
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
@@ -109,7 +109,7 @@ jobs:
unlink /usr/local/bin/python
ln -s /usr/local/bin/python3 /usr/local/bin/python
- name: Cache Python virtualenv
uses: syphar/restore-virtualenv@v1.3
uses: syphar/restore-virtualenv@v1.2
id: cache-virtualenv
with:
custom_cache_key_element: "release"
@@ -117,39 +117,34 @@ jobs:
**/requirements.txt
PKG-INFO
- name: Install Python dependencies
# We have to manually take a few steps:
# 1. Because building cryptography is hard, and we cannot force pip to fetch universal2 version we
# We have to manually install a few packages:
# 1. cffi will pick up the single-arch libffi from Homebrew, while Apple provides universal2-version
# of libffi with XCode. So we forcefully have to remove the Homebrew one.
# 2. 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. We need to build the PyInstaller bootloader:
# 3. We need to build the PyInstaller bootloader from sources:
# 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
brew uninstall libffi --ignore-dependencies
ARCHFLAGS="-arch x86_64 -arch arm64" pip3 install --upgrade cffi --no-binary cffi
pip3 install --upgrade -r requirements.txt
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_10_universal2 --only-binary :all: --no-deps --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
- name: Import macOS codesign certificates
# Taken from https://github.com/Apple-Actions/import-codesign-certs/pull/27 (comments)
env:
CERTIFICATES_P12: ${{ secrets.CERTIFICATES_P12 }}
CERTIFICATES_P12_PASSWORD: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
MACOS_KEYCHAIN_TEMP_PASSWORD: ${{ secrets.MACOS_KEYCHAIN_TEMP_PASSWORD }}
if: env.CERTIFICATES_P12
run: |
echo $CERTIFICATES_P12 | base64 --decode > certificate.p12
security create-keychain -p "$MACOS_KEYCHAIN_TEMP_PASSWORD" build.keychain
security default-keychain -s build.keychain
security unlock-keychain -p "$MACOS_KEYCHAIN_TEMP_PASSWORD" build.keychain
security set-keychain-settings -lut 21600 build.keychain
security import certificate.p12 -k build.keychain -P "$CERTIFICATES_P12_PASSWORD" -T /usr/bin/codesign -T /usr/bin/productsign -T /usr/bin/xcrun
security set-key-partition-list -S apple-tool:,apple:,codesign: -s -k "$MACOS_KEYCHAIN_TEMP_PASSWORD" build.keychain
uses: apple-actions/import-codesign-certs@v1
if: env.SIGNING_AUTH
with:
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
- name: Build source distribution
# Run this on macOS so the line endings are correct by default
run: python builder/package.py source
@@ -159,10 +154,6 @@ jobs:
path: "*-src.tar.gz"
name: Source distribution
- name: Build macOS binary
env:
SIGNING_AUTH: ${{ secrets.SIGNING_AUTH }}
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_USER }}
NOTARIZATION_PASS: ${{ secrets.NOTARIZATION_PASS }}
run: |
python3 builder/package.py app
python3 builder/make_dmg.py
@@ -180,14 +171,15 @@ jobs:
runs-on: ubuntu-latest
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }}
SNAP_TOKEN: ${{ secrets.SNAP_TOKEN }}
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
uses: actions/setup-python@v3
with:
python-version: "3.x"
- name: Release latest available Snap
run: |
sudo snap install snapcraft --classic
echo "${SNAP_TOKEN}" | snapcraft login --with -
python3 snap/local/release_snap.py

View File

@@ -31,28 +31,27 @@ jobs:
strategy:
fail-fast: false
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
python-version: ["3.7", "3.8", "3.9", "3.10"]
os: [ubuntu-20.04]
include:
- name: macOS
os: macos-latest
python-version: "3.11"
python-version: "3.10"
- name: Windows
os: windows-latest
python-version: "3.11"
python-version: "3.10"
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v4
uses: actions/setup-python@v3
with:
python-version: ${{ matrix.python-version }}
architecture: "x64"
- name: Install system dependencies
if: runner.os == 'Linux'
run: sudo apt-get install unrar p7zip-full par2
- name: Cache Python virtualenv
uses: syphar/restore-virtualenv@v1.3
uses: syphar/restore-virtualenv@v1.2
id: cache-virtualenv
with:
custom_cache_key_element: "ci"
@@ -63,7 +62,6 @@ jobs:
if: steps.cache-virtualenv.outputs.cache-hit != 'true'
run: |
python --version
pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
pip install --upgrade -r tests/requirements.txt
- name: Test SABnzbd

View File

@@ -13,29 +13,28 @@ jobs:
TX_TOKEN: ${{ secrets.TX_TOKEN }}
steps:
- uses: actions/checkout@v3
with:
token: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
- name: Generate translatable texts
run: |
python3 tools/extract_pot.py
- name: Install Transifex client
if: env.TX_TOKEN
# Sudo is needed to link the "tx"-command
run: |
sudo -H python3 -m pip install setuptools wheel
sudo -H python3 -m pip install transifex-client
- name: Push/pull Transifex translations
if: env.TX_TOKEN
run: |
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
./tx push --translation --source
./tx pull --all --force
tx push --source --parallel
tx pull --all --force --parallel
- name: Compile translations to validate them
run: |
python3 tools/make_mo.py
- name: Push translatable and translated texts back to repo
uses: stefanzweifel/git-auto-commit-action@v4.16.0
uses: stefanzweifel/git-auto-commit-action@v4.14.1
if: env.TX_TOKEN
with:
commit_message: |
Update translatable texts
[skip ci]
commit_message: Update translatable texts
commit_user_name: SABnzbd Automation
commit_user_email: bugs@sabnzbd.org
commit_author: SABnzbd Automation <bugs@sabnzbd.org>
file_pattern: "po/*.pot po/*.po"
push_options: --force

6
.pyup.yml Normal file
View File

@@ -0,0 +1,6 @@
branch: develop
schedule: every week
update: all
pin: False
label_prs: dependencies
branch_prefix: pyup/

View File

@@ -1,21 +1,21 @@
[main]
host = https://www.transifex.com
[o:sabnzbd:p:sabnzbd-translations:r:po-main-sabnzbd-pot--develop]
[sabnzbd-translations.po-main-sabnzbd-pot--develop]
file_filter = po/main/<lang>.po
minimum_perc = 0
source_file = po/main/SABnzbd.pot
source_lang = en
type = PO
[o:sabnzbd:p:sabnzbd-translations:r:po-email-sabemail-pot--develop]
[sabnzbd-translations.po-email-sabemail-pot--develop]
file_filter = po/email/<lang>.po
minimum_perc = 0
source_file = po/email/SABemail.pot
source_lang = en
type = PO
[o:sabnzbd:p:sabnzbd-translations:r:po-nsis-sabnsis-pot--develop]
[sabnzbd-translations.po-nsis-sabnsis-pot--develop]
file_filter = po/nsis/<lang>.po
minimum_perc = 0
source_file = po/nsis/SABnsis.pot

View File

@@ -1,5 +1,5 @@
(c) Copyright 2007-2023 by "The SABnzbd-team" <team@sabnzbd.org>
(c) Copyright 2007-2022 by "The SABnzbd-team" <team@sabnzbd.org>
The SABnzbd-team is:

View File

@@ -4,7 +4,7 @@
0) LICENSE
-------------------------------------------------------------------------------
(c) Copyright 2007-2023 by "The SABnzbd-team" <team@sabnzbd.org>
(c) Copyright 2007-2022 by "The SABnzbd-team" <team@sabnzbd.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License

View File

@@ -16,7 +16,7 @@
no_penalties = 1
See: https://sabnzbd.org/wiki/configuration/3.4/special
- Some third-party utilities try to probe SABnzbd API in such a way that you will
- Some third-party utilties try to probe SABnzbd API in such a way that you will
often see warnings about unauthenticated access.
If you are sure these probes are harmless, you can suppress the warnings by
setting the option "api_warnings" to 0.
@@ -53,6 +53,3 @@
to your servers to a total of 7. There is a CPU-usage reduction feature in SABnzbd that
gets confused by the way some VPN's handle the state of a connection. Below 8 connections
this feature is not active.
- If the queue is paused but one or more jobs have the Force priority, SABnzbd might still
download some data from other jobs in the queue if active servers have unused connections.

View File

@@ -1,4 +1,4 @@
(c) Copyright 2007-2023 by "The SABnzbd-team" <team@sabnzbd.org>
(c) Copyright 2007-2022 by "The SABnzbd-team" <team@sabnzbd.org>
This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License

View File

@@ -1,7 +1,7 @@
Metadata-Version: 1.0
Name: SABnzbd
Version: 3.7.2
Summary: SABnzbd-3.7.2
Version: 3.6.1RC2
Summary: SABnzbd-3.6.1RC2
Home-page: https://sabnzbd.org
Author: The SABnzbd Team
Author-email: team@sabnzbd.org

View File

@@ -1,8 +1,10 @@
SABnzbd - The automated Usenet download tool
============================================
[![License](https://img.shields.io/badge/License-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
[![Join our Discord](https://img.shields.io/discord/976737547558461480?color=7289DA&label=Discord&logo=Discord&logoColor=white)](https://discord.gg/KQzDe7fvNU)
![CI tests](https://github.com/sabnzbd/sabnzbd/workflows/CI%20Tests/badge.svg)
![Build binaries](https://github.com/sabnzbd/sabnzbd/workflows/Build%20binaries%20and%20source%20distribution/badge.svg)
[![License](https://img.shields.io/badge/license-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
SABnzbd is an Open Source Binary Newsreader written in Python.

View File

@@ -1,60 +1,60 @@
Release Notes - SABnzbd 3.7.2
Release Notes - SABnzbd 3.6.1 Release Candidate 2
=========================================================
## Bugfixes and changes since 3.7.1
- Ignore permissions inside archives during unpacking by UnRar.
- Improvements to connection error messages.
- Apply other changes only after updating the `Category` in multi-edit.
- Categories were not sorted correctly in dropdowns.
- Prevent crash when `Automatically sort queue` was enabled.
- Apply `History Retention` setting during startup.
- Tweaks to download performance.
- Linux: Update appstream metadata.
## Bugfixes since 3.6.0
- Downloads in `Checking` status were not displayed correctly.
- Prevent showing crash on Status window during shutdown.
- Prevent scheduler crash if removed event is canceled.
- Updated UnRar to 6.11 (Windows) and 6.12 (macOS).
- macOS/Windows: Updated dependencies and Python versions.
## Bugfixes and changes since 3.7.0
- Minor improvements in download performance.
- Scripts set `On queue finish` are no longer persistent by default.
- Improved `Test Server` to handle more failure cases.
- Priority list in `Add NZB`-window was missing `Paused` priority.
- Keyboard shortcuts did not work if not in Tabbed-mode.
- Keyboard shortcut `S` did not reload status information.
- In `history` API-call the `stage_log` could be empty.
- Using the `-` character broke the queue/history search.
- Improved detection and handling of stuck jobs.
## Changes since 3.5.3
- Significantly increased performance by using the yEnc-decoding
library of @animetosho. Usenet articles are now decoded using
specialized CPU instructions (SIMD) on x86 and ARM systems.
- Create and restore a backup of configuration and database.
- Show source of lower download speed (CPU or disk).
- Added keyboard shortcuts (`P`ause, `A`dd, `S`tatus, `C`onfig).
- Result of the `Deobfuscate` step is listed in History details.
- `Path` of `Default` category will be used if category doesn't have one.
- Disabling `api_warnings` prevents showing `Access Denied`
information to the external client.
- Jobs with `Force` priority will always skip the duplicate check.
- Added `ext_rename_ignore` to add custom extensions that should
be ignored during the `Deobfuscate` step.
- Removed Indexer Feedback Integration.
- Removed included `Deobfuscate.py` as it is outdated.
- Show a warning when there are no valid news servers active.
- Show a warning if the filesystem does not support special characters.
- Allow multiple parameters to be passed to par2cmdline/Multipar.
- Linux: Added AppStream metadata, desktop shortcut and MimeInfo.
- Linux: Added support for bash completion.
- macOS: Application and included tools fully native on M1 systems.
- macOS/Windows: Updated UnRar to 6.10 and 7-Zip to 21.07.
- Windows: Updated MultiPar to v1.3.2.3.
## Changes since 3.6.1
- The queue and history can be filtered using keywords:
`cat` and `priority`. For example: `show name cat:tv`.
- Use shortcut `shift + arrow-key` to navigate the queue/history pages.
- The backup is now created in a local folder for security.
- Recurring backups can be configured using the scheduler.
- Improvements to Deobfuscate Final Filenames.
- RSS overview shows the rule that accepted the job.
- Added option to sort the queue by `% downloaded`.
- Added option to replace underscores with dots in folder names.
- SABnzbd Host input will be validated before being applied.
- Moved system load information from the main page to the Status window.
- Console logging is now written to `stdout` instead of `stderr`.
- Removed Special settings `enable_meta`, `disable_key`,
`replace_illegal`, `osx_speed` and `show_sysload`.
- Merged Special settings `win_menu` and `osx_menu` into `tray_icon`.
- macOS/Windows: Use Python 3.11, slightly boosting overall performance.
- macOS/Windows: Updated UnRar to 6.12.
- Windows: Updated MultiPar to 1.3.2.5.
# API changes since 3.5.3
- Removed several (status) fields from the `queue` API call.
- Remove unused and undocumented API calls: `addid`, `options`, `rescan`,
`osx_icon`, `set_speedlimit`, `get_speedlimit`, `set_colorscheme`.
- Removed undocumented `xcat` parameter.
- `None` values in XML API-output are left empty.
- Adding NZB's would not always return `nzo_ids`.
- Prevent crash in `history` call during post-processing.
# API changes since 3.6.1
- Minor improvements in API performance.
- Removed fields `scripts` and `categories` from `queue` API call.
- Moved `loadavg` from `queue` to `status` API call.
# Bugfixes since 3.6.1
- Free Space Detection was too strict when using Direct Unpack.
- File uploads with special characters would be parsed incorrectly.
- Passwords from NZB meta-data were tried multiple times.
- Passwords were not always supplied to the pre-queue script.
- RSS-feed names were not sanitized when renamed.
- Make sure short-dates are detected as `YY-MM-DD` in Sorting.
- Show the custom job name in History when the NZB could not be fetched.
# Bugfixes since 3.5.3
- Extended timeout when measuring system performance.
- Interface settings were sometimes reset on page reload.
- Par2 sets with duplicate names could skip verification and repair.
- Ignore `.par2` files that could not be parsed.
- Correctly default to `Glitter - Auto` on new installs.
- Download speed was not updated when stalled due to disk performance.
- Prevent traceback when status functions timeout.
- Prevent crash if not enough repair blocks are available.
- Prevent crash when there is an unknown `language` setting.
- Source release had Windows line-endings.
- Windows: If a job password contained a double quote it
would not be picked up by UnRar and unpack would fail.
## Upgrade notices
- The download statistics file `totals10.sab` is updated in 3.2.x
@@ -71,4 +71,4 @@ Release Notes - SABnzbd 3.7.2
that automatically verify, repair, extract and clean up posts downloaded
from Usenet.
(c) Copyright 2007-2023 by "The SABnzbd-team" \<team@sabnzbd.org\>
(c) Copyright 2007-2022 by "The SABnzbd-team" \<team@sabnzbd.org\>

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2007-2023 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2007-2022 The SABnzbd-Team <team@sabnzbd.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -240,7 +240,7 @@ def print_version():
"""
%s-%s
Copyright (C) 2007-2023 The SABnzbd-Team <team@sabnzbd.org>
Copyright (C) 2007-2022 The SABnzbd-Team <team@sabnzbd.org>
SABnzbd comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. It is licensed under the
@@ -1156,7 +1156,7 @@ def main():
daemonize()
else:
if console_logging:
console = logging.StreamHandler(stream=sys.stdout)
console = logging.StreamHandler()
console.setLevel(LOGLEVELS[logging_level + 1])
console.setFormatter(logging.Formatter(logformat))
logger.addHandler(console)
@@ -1192,7 +1192,7 @@ def main():
# Find encoding; relevant for external processing activities
logging.info("Preferred encoding = %s", sabnzbd.encoding.CODEPAGE)
# On Linux/FreeBSD/Unix "UTF-8" is strongly, strongly advised:
# On Linux/FreeBSD/Unix "UTF-8" is strongly, strongly adviced:
if not sabnzbd.WIN32 and not sabnzbd.MACOS and not ("utf-8" in sabnzbd.encoding.CODEPAGE.lower()):
helpful_warning(
T(
@@ -1260,7 +1260,7 @@ def main():
sabnzbd.cfg.web_color.set(sabnzbd.WEB_COLOR)
# Handle the several tray icons
if sabnzbd.cfg.tray_icon() and not sabnzbd.DAEMON and not sabnzbd.WIN_SERVICE:
if sabnzbd.cfg.win_menu() and not sabnzbd.DAEMON and not sabnzbd.WIN_SERVICE:
if sabnzbd.WIN32:
sabnzbd.WINTRAY = sabnzbd.sabtray.SABTrayThread()
elif sabnzbd.LINUX_POWER and os.environ.get("DISPLAY"):
@@ -1271,7 +1271,7 @@ def main():
from gi.repository import Gtk
import sabnzbd.sabtraylinux
sabnzbd.sabtraylinux.StatusIcon()
sabnzbd.LINUXTRAY = sabnzbd.sabtraylinux.StatusIcon()
except:
logging.info("python3-gi not found, no SysTray.")
@@ -1614,20 +1614,15 @@ def main():
# Send our final goodbyes!
notifier.send_notification("SABnzbd", T("SABnzbd shutdown finished"), "startup")
logging.info("Leaving SABnzbd")
sys.stderr.flush()
sys.stdout.flush()
sabnzbd.pid_file()
try:
sys.stderr.flush()
sys.stdout.flush()
except AttributeError:
# Not supported on Windows binaries
pass
if hasattr(sys, "frozen") and sabnzbd.MACOS:
try:
AppHelper.stopEventLoop()
except:
# Failing AppHelper library!
# Failing AppHelper libary!
os._exit(0)
elif sabnzbd.WIN_SERVICE:
# Do nothing, let service handle it

View File

@@ -1,3 +1,3 @@
# Special requirements for macOS universal2 binary release
# This way dependabot can auto-update them
cryptography==39.0.0
cryptography==37.0.2

View File

@@ -16,7 +16,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import glob
import hashlib
import platform
import re
import sys
@@ -64,7 +63,7 @@ extra_folders = [
# Support functions
def safe_remove(path):
"""Remove file without errors if the file doesn't exist
"""Remove file without erros if the file doesn't exist
Can also handle folders
"""
if os.path.exists(path):
@@ -483,16 +482,6 @@ if __name__ == "__main__":
# Remove source folder
safe_remove(src_folder)
# Calculate hashes for Synology release
with open(RELEASE_SRC, "rb") as inp_file:
source_data = inp_file.read()
print("----")
print(RELEASE_SRC, "SHA1", hashlib.sha1(source_data).hexdigest())
print(RELEASE_SRC, "SHA256", hashlib.sha256(source_data).hexdigest())
print(RELEASE_SRC, "MD5", hashlib.md5(source_data).hexdigest())
print("----")
# Release to github
if "release" in sys.argv:
# Check if tagged as release and check for token

View File

@@ -1,23 +1,22 @@
# Basic build requirements
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
pyinstaller==5.7.0
pyinstaller-hooks-contrib==2022.14
altgraph==0.17.3
pyinstaller==5.3
pyinstaller-hooks-contrib==2022.8
altgraph==0.17.2
wrapt==1.14.1
setuptools==65.6.3
pkginfo==1.9.6
PyGithub==1.57
charset-normalizer==3.0.1
setuptools==63.3.0
pkginfo==1.8.3
PyGithub==1.55
charset-normalizer==2.1.0
certifi
# orjson does not support 32bit Windows, exclude it based on Python-version
# This way we also test ujson on Python 3.7 and 3.8 in the CI-tests
# Fixed to 3.8.3 due to issue in 3.8.4: https://github.com/ijl/orjson/issues/331
orjson==3.8.3; python_version > '3.8'
orjson==3.7.11; python_version > '3.8'
# For the macOS build
dmgbuild==1.6.0; sys_platform == 'darwin'
mac-alias==2.2.2; sys_platform == 'darwin'
macholib==1.16.2; sys_platform == 'darwin'
ds-store==1.3.1; sys_platform == 'darwin'
PyNaCl==1.5.0; sys_platform == 'darwin'
dmgbuild==1.5.2; sys_platform == 'darwin'
mac-alias==2.2.0; sys_platform == 'darwin'
macholib==1.16; sys_platform == 'darwin'
ds-store==1.3.0; sys_platform == 'darwin'
PyNaCl==1.5.0; sys_platform == 'darwin'

View File

@@ -56,7 +56,7 @@ Unicode true
CRCCheck on ; (can be off)
AutoCloseWindow false ; (can be true for the window go away automatically at end)
ShowInstDetails hide ; (can be show to have them shown, or nevershow to disable)
SetDateSave off ; (can be on to have files restored to their original date)
SetDateSave off ; (can be on to have files restored to their orginal date)
WindowIcon on
SpaceTexts none
@@ -185,7 +185,7 @@ Section "SABnzbd" SecDummy
liteFirewallW::AddRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
;------------------------------------------------------------------
; Add to registry
; Add to registery
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" "" "$INSTDIR"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" "Installer Language" "$(MsgLangCode)"
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayName" "SABnzbd ${SAB_VERSION}"
@@ -328,7 +328,7 @@ FunctionEnd
UninstallText $(MsgUninstall)
Section "un.$(MsgDelProgram)" Uninstall
;make sure sabnzbd.exe isn't running..if so shut it down
;make sure sabnzbd.exe isnt running..if so shut it down
${nsProcess::KillProcess} "SABnzbd.exe" $R0
${nsProcess::Unload}
DetailPrint "Process Killed"

View File

@@ -15,7 +15,7 @@
<!--#if not $windows#-->
<div class="checkbox">
<label>
<input type="checkbox" id="show_hidden_folders"> <span>$T('hiddenFolders')</span>
<input type="checkbox" id="show_hidden_folders"> <span>$T('systemFolders')</span>
</label>
</div>
<!--#end if#-->

View File

@@ -69,7 +69,7 @@
// Set default functions for the autocomplete everywhere
\$.extend(\$.fn.typeahead.defaults, {
source: function (query, process) {
// If there's no separator, it must be a relative path
// If there's no seperator, it must be a relative path
if(query.split(folderSeperator).length < 2 && this.\$element.data('initialdir')) {
query = this.\$element.data('initialdir') + folderSeperator + query;
}

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Config"#-->
<!--#set global $help_uri="configuration/3.7/configure"#-->
<!--#set global $help_uri="configuration/3.6/configure"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#from sabnzbd.encoding import CODEPAGE#-->
@@ -124,7 +124,7 @@
<div class="colmask">
<div class="padding alt">
<h5 class="copyright">Copyright &copy; 2007-2023 The SABnzbd Team &lt;<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>&gt;</h5>
<h5 class="copyright">Copyright &copy; 2007-2022 The SABnzbd Team &lt;<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>&gt;</h5>
<p class="copyright"><small>$T('yourRights')</small></p>
</div>

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Categories"#-->
<!--#set global $help_uri="configuration/3.7/categories"#-->
<!--#set global $help_uri="configuration/3.6/categories"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
<div class="section">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Folders"#-->
<!--#set global $help_uri="configuration/3.7/folders"#-->
<!--#set global $help_uri="configuration/3.6/folders"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -104,11 +104,6 @@
<span class="desc">$T('explain-admin_dir1')</span>
<span class="desc">$T('explain-admin_dir2')</span>
</div>
<div class="field-pair">
<label class="config" for="backup_dir">$T('opt-backup_dir')</label>
<input type="text" name="backup_dir" id="backup_dir" value="$backup_dir" data-initialdir="$my_home" />
<span class="desc">$T('explain-backup_dir')</span>
</div>
<div class="field-pair">
<label class="config" for="log_dir">$T('opt-log_dir')</label>
<input type="text" name="log_dir" id="log_dir" value="$log_dir" data-initialdir="$my_lcldata" />

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="General"#-->
<!--#set global $help_uri="configuration/3.7/general"#-->
<!--#set global $help_uri="configuration/3.6/general"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -231,18 +231,18 @@
<div class="section">
<div class="col2">
<h3>$T('backup') <a href="$helpuri$help_uri#toc3" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<p><b>$T('restartRequired')</b></p>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
<div class="field-pair">
<label class="config" for="create_backup">$T('create-backup')</label>
<span class="desc"><button class="btn btn-default createBackup" type="button" id="create_backup"><span class="glyphicon glyphicon glyphicon-import"></span> $T('create-backup')</button></span>
<span class="desc">$T('explain-create_backup')</span>
<label class="config" for="download_backup">$T('download-backup')</label>
<span class="desc"><a class="btn btn-default" href="../backup/?apikey=$apikey" target="_blank" id="download_backup"><span class="glyphicon glyphicon-download-alt"></span> $T('download-backup')</a></span>
</div>
<div class="field-pair">
<label class="config" for="config_backup_file">$T('restore-backup')</label>
<input type="file" accept=".zip" name="config_backup_file" id="config_backup_file" />
<span class="desc">$T('restartRequired')</span>
<span class="desc">$T('explain-admin_backup')</span>
</div>
<div class="field-pair">
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-open"></span> $T('restore-backup')</button>
@@ -281,7 +281,7 @@
// Skip the fancy stuff, just submit
this.submit()
})
// No JSON response
// No JSON reponse
\$('#ajax').val('')
})
hideOrShowTranslate()
@@ -399,20 +399,6 @@
}
})
\$('#create_backup').click(function () {
$.ajax({
type: "POST",
url: "../../api",
data: {mode:'config', name:'create_backup', output:'json', apikey: \$('#apikey').val()},
success: function(data) {
if(data.value.result) {
alert("$T('backup'):\n" + data.value.message)
} else {
alert("$T('button-failed')")
}
}
});
});
});
</script>

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Email"#-->
<!--#set global $help_uri="configuration/3.7/notifications"#-->
<!--#set global $help_uri="configuration/3.6/notifications"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#def show_notify_checkboxes($section_label)#-->

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="RSS"#-->
<!--#set global $help_uri="configuration/3.7/rss"#-->
<!--#set global $help_uri="configuration/3.6/rss"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import html#-->
<div class="colmask">
@@ -481,22 +481,18 @@
<thead>
<tr>
<th class="default-sort">$T('rss-added')</th>
<th>$T('rss-filter')</th>
<th>$T('size')</th>
<th width="60%">$T('sort-title')</th>
<th>$T('category')</th>
<th>$T('nzo-age')</th>
<th>$T('source')</th>
</tr>
</thead>
<!--#for $job in $downloaded#-->
<tr class="infoTableSeperator">
<td data-sort-value="$job['time_downloaded_ms']">$job['time_downloaded']</td>
<td>$job['rule'] $job['skip']</td>
<td data-sort-value="$job['size']">$job['size_units']</td>
<td>$job['title']</td>
<td>$job['cat']</td>
<td data-sort-value="$job['age_ms']">$job['age']</td>
<td data-sort-value="$job['baselink']" title="$job['baselink']">
<!--#if not $job['infourl']#-->
<div class="favicon source-icon" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></div>

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Scheduling"#-->
<!--#set global $help_uri="configuration/3.7/scheduling"#-->
<!--#set global $help_uri="configuration/3.6/scheduling"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<%

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Servers"#-->
<!--#set global $help_uri="configuration/3.7/servers"#-->
<!--#set global $help_uri="configuration/3.6/servers"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import json#-->
@@ -49,7 +49,7 @@
<label class="config" for="host">$T('srv-host')</label>
<input type="text" name="host" id="host" required />
</div>
<div class="field-pair advanced-settings">
<div class="field-pair">
<label class="config" for="port">$T('srv-port')</label>
<input type="number" name="port" id="port" size="8" value="119" min="0" />
</div>
@@ -180,7 +180,7 @@
<label class="config" for="host$cur">$T('srv-host')</label>
<input type="text" name="host" id="host$cur" value="$server['host']" required />
</div>
<div class="field-pair advanced-settings">
<div class="field-pair">
<label class="config" for="port$cur">$T('srv-port')</label>
<input type="number" name="port" id="port$cur" value="$server['port']" size="8" min="0" required />
</div>
@@ -259,7 +259,7 @@
<label class="config" for="notes$cur">$T('srv-notes')</label>
<textarea name="notes" id="notes$cur" rows="3" cols="50">$server['notes']</textarea>
</div>
<div class="field-pair no-field-pair-bg">
<div class="field-pair">
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
<button class="btn btn-default testServer" type="button"><span class="glyphicon glyphicon-sort"></span> $T('button-testServer')</button>
<button class="btn btn-default delServer"><span class="glyphicon glyphicon-trash"></span> $T('button-delServer')</button>
@@ -283,8 +283,7 @@
<p title="$T('readwiki')">
<b>$T('srv-article-availability'):</b><br/>
$T('selectedDates'): <span id="server-article-value-${cur}"></span><br/>
<a href="https://sabnzbd.org/not-complete" id="server-article-not-complete-${cur}" target="_blank">https://sabnzbd.org/not-complete</a>
$T('selectedDates'): <span id="server-article-value-${cur}"></span>
</p>
<!--#if $server['expire_date']#-->
<p><b>$T('srv-expire_date'):</b> $(server['expire_date'])</p>
@@ -403,11 +402,8 @@
if(!isNaN(articleRatio)) {
// Use filesize to convert to unit-display
\$('#server-article-value-' + server_id).text('$T("srv-articles-tried")'.replace('%f', articleRatio).replace('%d', filesize(totalArticlesTriedThisRange, {unix: true, round: 0, spacer: "", base: 1})))
// If we have a low value, we link them to the website
if(articleRatio > 60) \$('#server-article-not-complete-' + server_id).hide()
} else {
\$('#server-article-value-' + server_id).text('$T("notAvailable")')
\$('#server-article-not-complete-' + server_id).hide()
}
// Save bandwidth data in a very ugly way, but we need to do this
@@ -549,7 +545,7 @@
theButton.removeAttr("disabled")
theButton.find('span').toggleClass('glyphicon-sort glyphicon-refresh spin-glyphicon')
// Success or not?
// Succes or not?
if(data.value.result) {
resultBox.addClass('alert-success')
resultBox.prepend('<span class="glyphicon glyphicon-ok-sign"></span> ')

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Sorting"#-->
<!--#set global $help_uri="configuration/3.7/sorting"#-->
<!--#set global $help_uri="configuration/3.6/sorting"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Special"#-->
<!--#set global $help_uri="configuration/3.7/special"#-->
<!--#set global $help_uri="configuration/3.6/special"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Switches"#-->
<!--#set global $help_uri="configuration/3.7/switches"#-->
<!--#set global $help_uri="configuration/3.6/switches"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -141,7 +141,6 @@
<label class="config" for="auto_sort">$T('opt-auto_sort')</label>
<select name="auto_sort" id="auto_sort">
<option value="">$T('default')</option>
<option value="remaining asc" <!--#if $auto_sort == "remaining asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortRemaining')</option>
<option value="avg_age desc" <!--#if $auto_sort == "avg_age desc" then 'selected="selected"' else ""#--> >$T('Glitter-sortAgeAsc')</option>
<option value="avg_age asc" <!--#if $auto_sort == "avg_age asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortAgeDesc')</option>
<option value="name asc" <!--#if $auto_sort == "name asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortNameAsc')</option>
@@ -149,7 +148,7 @@
<option value="size asc" <!--#if $auto_sort == "size asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortSizeAsc')</option>
<option value="size desc" <!--#if $auto_sort == "size desc" then 'selected="selected"' else ""#--> >$T('Glitter-sortSizeDesc')</option>
</select>
<span class="desc">$T('explain-auto_sort') $T('explain-auto_sort_remaining')</span>
<span class="desc">$T('explain-auto_sort')</span>
</div>
<div class="field-pair">
<label class="config" for="direct_unpack">$T('opt-direct_unpack')</label>
@@ -248,6 +247,11 @@
<input type="checkbox" name="deobfuscate_final_filenames" id="deobfuscate_final_filenames" value="1" <!--#if int($deobfuscate_final_filenames) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-deobfuscate_final_filenames') $T('explain-deobfuscate_final_filenames-ext')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="enable_meta">$T('opt-enable_meta')</label>
<input type="checkbox" name="enable_meta" id="enable_meta" value="1" <!--#if int($enable_meta) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-enable_meta').replace('. ', '.<br/>')</span>
</div>
<div class="field-pair">
<label class="config" for="cleanup_list">$T('opt-cleanup_list')</label>
<input type="text" name="cleanup_list" id="cleanup_list" value="$cleanup_list"/>
@@ -288,11 +292,6 @@
<input type="checkbox" name="replace_spaces" id="replace_spaces" value="1" <!--#if int($replace_spaces) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-replace_spaces')</span>
</div>
<div class="field-pair">
<label class="config" for="replace_underscores">$T('opt-replace_underscores')</label>
<input type="checkbox" name="replace_underscores" id="replace_underscores" value="1" <!--#if int($replace_underscores) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-replace_underscores')</span>
</div>
<div class="field-pair">
<label class="config" for="replace_dots">$T('opt-replace_dots')</label>
<input type="checkbox" name="replace_dots" id="replace_dots" value="1" <!--#if int($replace_dots) > 0 then 'checked="checked"' else ""#--> />

View File

@@ -9,7 +9,7 @@ BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE TO BE B
1. Definitions
1. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("syncing") will be considered an Adaptation for the purpose of this License.
1. "Adaptation" means a work based upon the Work, or upon the Work and other pre-existing works, such as a translation, adaptation, derivative work, arrangement of music or other alterations of a literary or artistic work, or phonogram or performance and includes cinematographic adaptations or any other form in which the Work may be recast, transformed, or adapted including in any form recognizably derived from the original, except that a work that constitutes a Collection will not be considered an Adaptation for the purpose of this License. For the avoidance of doubt, where the Work is a musical work, performance or phonogram, the synchronization of the Work in timed-relation with a moving image ("synching") will be considered an Adaptation for the purpose of this License.
2. "Collection" means a collection of literary or artistic works, such as encyclopedias and anthologies, or performances, phonograms or broadcasts, or other works or subject matter other than works listed in Section 1(f) below, which, by reason of the selection and arrangement of their contents, constitute intellectual creations, in which the Work is included in its entirety in unmodified form along with one or more other contributions, each constituting separate and independent works in themselves, which together are assembled into a collective whole. A work that constitutes a Collection will not be considered an Adaptation (as defined above) for the purposes of this License.
3. "Distribute" means to make available to the public the original and copies of the Work or Adaptation, as appropriate, through sale or other transfer of ownership.
4. "Licensor" means the individual, individuals, entity or entities that offer(s) the Work under the terms of this License.
@@ -44,7 +44,7 @@ The above rights may be exercised in all media and formats whether now known or
5. Representations, Warranties and Disclaimer
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE, INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY, FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS, WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.
6. Limitation on Liability. EXCEPT TO THE EXTENT REQUIRED BY APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

View File

@@ -86,7 +86,7 @@
<div class="col-sm-2">$T('srv-password')</div>
<div class="col-sm-10" data-bind="text: historyStatus.password"></div>
</div>
<div class="row" data-bind="visible: historyStatus.storage() || historyStatus.path()">
<div class="row">
<div class="col-sm-2">$T('msg-path')</div>
<div class="col-sm-10" data-bind="text: historyStatus.storage() == '' ? historyStatus.path : historyStatus.storage"></div>
</div>

View File

@@ -43,7 +43,7 @@
<button type="button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown" onclick="keepOpen(this)">
<span class="caret"></span>
</button>
<a href="#" class="max-speed-input-clear hover-button" data-bind="click: clearSpeedLimit, visible:(speedLimit() < 100 && speedLimit() > 0)" style="display: none;">
<a href="#" class="max-speed-input-clear hover-button" data-bind="click: clearSpeedLimit, visible:(speedLimit() != 100)" style="display: none;">
<span class="glyphicon glyphicon-link"></span>
</a>
<div class="dropdown-menu max-speed-input">
@@ -81,7 +81,7 @@
<li data-tooltip="true" data-placement="bottom" title="SABnzbd $T('menu-config')">
<a href="./config/"><span class="glyphicon glyphicon-cog"></span></a>
</li>
<li class="dropdown main-menu-link" data-bind="css: { 'active-on-queue-finish-menu': finishaction()}">
<li class="dropdown main-menu-link" data-bind="css: { 'active-on-queue-finish-menu': onQueueFinish()}">
<a href="#" data-toggle="dropdown" onclick="keepOpen(this)">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
@@ -102,8 +102,7 @@
<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">
<select data-bind="value: onQueueFinish, event: { change: setOnQueueFinish }" class="form-control">
<option value=""></option>
<optgroup label="$T('eoq-actions')">
<option value="shutdown_program">$T('shutdownSab')</option>
@@ -115,13 +114,12 @@
</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 if: \$data != glitterTranslate.noneText -->
<option data-bind="text: \$data, attr: { value: 'script_'+\$data } " ></option>
<!-- /ko -->
<!-- /ko -->
</optgroup>
</select>
<!-- /ko -->
</li>
</ul>
</li>

View File

@@ -1,6 +1,6 @@
<!--#from sabnzbd.constants import VALID_ARCHIVES, VALID_NZB_FILES#-->
<!--#set $file_exts = ', '.join(VALID_NZB_FILES + VALID_ARCHIVES)#-->
<!-- Notification box -->
<!-- Notifcation box -->
<div class="main-notification-box" style="display: none">
<div class="main-notification-box-uploading">
<span class="glyphicon glyphicon-open"></span> $T('Glitter-notification-uploading') <span class="main-notification-box-file-count"></span>
@@ -117,12 +117,6 @@
<span data-bind="text: cacheSize"></span> (<span data-bind="text: cacheArticles"></span> $T('Glitter-articles'))
</div>
</div>
<div class="row" data-bind="visible: statusInfo.loadavg()">
<div class="col-sm-6">$T('dashboard-loadavg') &nbsp; </div>
<div class="col-sm-6">
<span data-bind="text: statusInfo.loadavg"></span>
</div>
</div>
<div class="row" data-bind="visible: statusInfo.delayed_decoder() > 5 || statusInfo.delayed_assembler() > 5">
<div class="col-sm-6">$T('dashboard-delayed') &nbsp; </div>
<div class="col-sm-6">
@@ -523,22 +517,14 @@
<div class="form-group">
<label class="col-sm-4 control-label">$T('category')</label>
<div class="col-sm-6">
<select name="Category" class="form-control" data-bind="options: queue.categoriesList, optionsValue: 'catValue', optionsText: 'catText'"></select>
<select name="Category" class="form-control" data-bind="options: queue.categoriesList, optionsValue: 'catValue', optionsText: 'catText',"></select>
<span class="glyphicon glyphicon-tag"></span>
</div>
</div>
<div class="form-group">
<label class="col-sm-4 control-label">$T('priority')</label>
<div class="col-sm-6">
<!-- This list is different from the one during download! -->
<select name="Priority" class="form-control">
<option value="-100">$T('default')</option>
<option value="2">$T('pr-force')</option>
<option value="1">$T('pr-high')</option>
<option value="0">$T('pr-normal')</option>
<option value="-1">$T('pr-low')</option>
<option value="-2" >$T('pr-paused')</option>
</select>
<select name="Priority" class="form-control" data-bind="options: queue.priorityOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: '$T('default')'"></select>
<span class="glyphicon glyphicon-sort-by-attributes-alt"></span>
</div>
</div>
@@ -552,7 +538,7 @@
<div class="form-group">
<label class="col-sm-4 control-label">$T('eoq-scripts')</label>
<div class="col-sm-6">
<select name="Post-processing" class="form-control" data-bind="options: queue.scriptsList, optionsCaption: '$T('default')', optionsValue: 'scriptValue', optionsText: 'scriptText', enable: (queue.scriptsList().length > 1)"></select>
<select name="Post-processing" class="form-control" data-bind="options: queue.scriptsList, optionsCaption: '$T('default')', enable: (queue.scriptsList().length > 1)"></select>
<span class="glyphicon glyphicon-flash"></span>
</div>
</div>

View File

@@ -9,6 +9,12 @@
</a>
</div>
<!-- /ko -->
<!--#if $loadavg#-->
<div class="info-container-box" title="$T('ft-sysload') - $T('menu-config') &#10140; $T('cmenu-special') &#10140; show_sysload">
<span class="glyphicon glyphicon-record"></span>
<span data-bind="text: systemLoad"></span>
</div>
<!--#end if#-->
<!-- ko if: (queueDataLeft() != '') -->
<div class="info-container-box">
<span class="glyphicon glyphicon-save"></span>
@@ -46,7 +52,6 @@
<span class="glyphicon glyphicon-tasks" data-tooltip="true" data-placement="left" title="$T('Glitter-multiOperations')"></span>
</a>
<ul class="dropdown-menu">
<li><a href="#" data-action="sortRemainingAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortRemaining')</a></li>
<li><a href="#" data-action="sortAgeAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortAgeAsc')</a></li>
<li><a href="#" data-action="sortAgeDesc" data-bind="click: queue.queueSorting">$T('Glitter-sortAgeDesc')</a></li>
<li><a href="#" data-action="sortNameAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortNameAsc')</a></li>
@@ -157,7 +162,7 @@
</li>
<li title="$T('eoq-scripts')" data-tooltip="true" data-placement="left">
<span class="glyphicon glyphicon-flash"></span>
<select name="Post-processing" class="form-control" data-bind="options: parent.scriptsList, value: script, optionsValue: 'scriptValue', optionsText: 'scriptText', event: { change: changeScript }, enable: (parent.scriptsList().length > 1)"></select>
<select name="Post-processing" class="form-control" data-bind="options: parent.scriptsList, value: script, event: { change: changeScript }, enable: (parent.scriptsList().length > 1)"></select>
</li>
</ul>
<!-- /ko -->
@@ -204,7 +209,7 @@
</div>
<div class="add-nzb-inputbox" data-tooltip="true" data-placement="top" title="$T('eoq-scripts')">
<span class="glyphicon glyphicon-flash"></span>
<select name="Post-processing" class="form-control" data-bind="options: queue.scriptsList, optionsValue: 'scriptValue', optionsText: 'scriptText', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
<select name="Post-processing" class="form-control" data-bind="options: queue.scriptsList, optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
</div>
<div class="clearfix"></div>
</form>

View File

@@ -65,8 +65,16 @@
glitterTranslate.renameAbort = "$T('Glitter-confirmAbortDirectUnpack')\n$T('confirm')";
glitterTranslate.retryAll = "$T('link-retryAll')?";
glitterTranslate.fetch = "$T('Glitter-fetch')";
glitterTranslate.encrypted = "$T('Glitter-encrypted')";
glitterTranslate.duplicate = "$T('Glitter-duplicate')";
glitterTranslate.tooLarge = "$T('Glitter-tooLarge')";
glitterTranslate.unwanted = "$T('Glitter-unwanted')";
glitterTranslate.incomplete = "$T('Glitter-incomplete')";
glitterTranslate.waitSec = "$T('Glitter-waitSec')";
glitterTranslate.checking = "$T('post-Checking')";
glitterTranslate.misingArt = "$T('missingArt')";
glitterTranslate.noSelect = "$T('Glitter-noSelect')";
glitterTranslate.sendThanks = "$T('Glitter-sendThanks')";
glitterTranslate.chooseFile = "$T('Glitter-chooseFile')";
glitterTranslate.orphanedJobsMsg = "$T('explain-orphans')";
glitterTranslate.useCache = "$T('explain-cache_limitstr').replace("64M", "256M").replace("128M", "512M")";
@@ -116,16 +124,14 @@
glitterTranslate.priority['Stop'] = "$T('pr-stop')";
</script>
<!-- Inclusion is faster than external scripts. We load momentJS locale separately so failure won't break anything -->
<!-- Inclusion is faster than external scripts. We load momentJS locale seperatly so failure won't break anything -->
<script type="text/javascript">
<!--#include raw $webdir + "/static/javascripts/jquery-3.5.1.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/jquery-ui.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/jquery.peity.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/jquery.hotkeys.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/moment-2.26.0.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/knockout-3.5.1.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/knockout-extensions.js"#-->
<!--#include raw $webdir + "/static/javascripts/search-query-parser.js"#-->
<!--#include raw $webdir + "/static/bootstrap/js/bootstrap.min.js"#-->
<!--#include $webdir + "/static/javascripts/glitter.js"#-->
</script>

View File

@@ -294,7 +294,7 @@ function paginationModel(parent) {
self.nrPages(1)
self.currentStart(0);
// Are we on next page? Bad!
// Are we on next page?
if(self.currentPage() > 1) {
// Force full update
parent.parent.refresh(true);
@@ -302,6 +302,9 @@ function paginationModel(parent) {
// Move to current page
self.currentPage(1);
// Force full update
parent.parent.refresh(true);
} else {
// Calculate number of pages needed
var newNrPages = Math.ceil(parent.totalItems() / parent.paginationLimit())

View File

@@ -10,7 +10,7 @@ function HistoryListModel(parent) {
self.historyItems = ko.observableArray([])
self.showFailed = ko.observable(false).extend({ persist: 'historyShowFailed' });
self.isLoading = ko.observable(false).extend({ rateLimit: 100 });
self.searchTerm = ko.observable('').extend({ rateLimit: { timeout: 400, method: "notifyWhenChangesStop" } });
self.searchTerm = ko.observable('').extend({ rateLimit: { timeout: 200, method: "notifyWhenChangesStop" } });
self.paginationLimit = ko.observable(10).extend({ persist: 'historyPaginationLimit' });
self.totalItems = ko.observable(0);
self.pagination = new paginationModel(self);
@@ -139,15 +139,14 @@ function HistoryListModel(parent) {
form.reset()
}
// Searching in history (rate-limited in declaration)
// Searching in history (rate-limited in decleration)
self.searchTerm.subscribe(function() {
// Make sure we refresh
self.lastUpdate = 0
self.parent.refresh();
// Go back to page 1
if(self.pagination.currentPage() != 1) {
// This forces a refresh
self.pagination.moveToPage(1);
} else {
// Make sure we refresh
self.parent.refresh(true);
}
})
@@ -158,6 +157,7 @@ function HistoryListModel(parent) {
// Set the loader so it doesn't flicker and then switch
self.isLoading(true)
self.searchTerm('');
self.parent.refresh()
}
// Was it click and the field is empty? Then we focus on the field
if(event.type == 'mousedown' && self.searchTerm() == '') {

View File

@@ -48,7 +48,7 @@ function ViewModel() {
self.nrWarnings = ko.observable(0);
self.allWarnings = ko.observableArray([]);
self.allMessages = ko.observableArray([]);
self.finishaction = ko.observable();
self.onQueueFinish = ko.observable('');
self.speedHistory = [];
// Statusinfo container
@@ -64,7 +64,6 @@ function ViewModel() {
self.statusInfo.dnslookup = ko.observable();
self.statusInfo.delayed_decoder = ko.observable();
self.statusInfo.delayed_assembler = ko.observable();
self.statusInfo.loadavg = ko.observable();
self.statusInfo.pystone = ko.observable();
self.statusInfo.downloaddir = ko.observable();
self.statusInfo.downloaddirspeed = ko.observable();
@@ -79,7 +78,7 @@ function ViewModel() {
// Make the speedlimit tekst
self.speedLimitText = ko.pureComputed(function() {
// Set?
if (!self.bandwithLimit()) return;
if(!self.bandwithLimit()) return;
// The text
var bandwithLimitText = self.bandwithLimit().replace(/[^a-zA-Z]+/g, '');
@@ -88,10 +87,10 @@ function ViewModel() {
var speedLimitNumberFull = (parseFloat(self.bandwithLimit()) * (self.speedLimit() / 100));
// Trick to only get decimal-point when needed
var speedLimitNumber = Math.round(speedLimitNumberFull * 10) / 10;
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);
}
@@ -107,7 +106,7 @@ function ViewModel() {
// Dynamic icon
self.SABIcon = ko.pureComputed(function() {
if (self.downloadsPaused()) {
if(self.downloadsPaused()) {
return './staticcfg/ico/faviconpaused.ico?v=1.1.0';
} else {
return './staticcfg/ico/favicon.ico?v=1.1.0';
@@ -116,7 +115,7 @@ function ViewModel() {
// Dynamic queue length check
self.hasQueue = ko.pureComputed(function() {
return (self.queue.queueItems().length > 0 || self.queue.searchTerm() || self.queue.isLoading())
return(self.queue.queueItems().length > 0 || self.queue.searchTerm() || self.queue.isLoading())
})
// Dynamic history length check
@@ -126,7 +125,7 @@ function ViewModel() {
})
self.hasWarnings = ko.pureComputed(function() {
return (self.allWarnings().length > 0)
return(self.allWarnings().length > 0)
})
// Check for any warnings/messages
@@ -137,10 +136,10 @@ function ViewModel() {
// Update main queue
self.updateQueue = function(response) {
// Block in case off dragging
if (!self.queue.shouldUpdate()) return;
if(!self.queue.shouldUpdate()) return;
// Make sure we are displaying the interface
if (self.isRestarting() >= 1) {
if(self.isRestarting() >= 1) {
// Decrease the counter by 1
// In case of restart (which takes time to fire) we count down
// In case of re-connect after failure it counts from 1 so emmediate continuation
@@ -151,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;
}
@@ -166,26 +165,29 @@ function ViewModel() {
self.downloadsPaused(response.queue.paused);
// Finish action. Replace null with empty
self.finishaction(response.queue.finishaction ? response.queue.finishaction : '');
self.onQueueFinish(response.queue.finishaction ? response.queue.finishaction : '');
// Disk sizes
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('')
}
// Did we exceed the space?
self.diskSpaceExceeded1(parseInt(response.queue.mbleft) / 1024 > parseFloat(response.queue.diskspace1))
self.diskSpaceExceeded2(parseInt(response.queue.mbleft) / 1024 > parseFloat(response.queue.diskspace2))
self.diskSpaceExceeded1(parseInt(response.queue.mbleft)/1024 > parseFloat(response.queue.diskspace1))
self.diskSpaceExceeded2(parseInt(response.queue.mbleft)/1024 > parseFloat(response.queue.diskspace2))
// Quota
self.quotaLimit(response.queue.quota)
self.quotaLimitLeft(response.queue.left_quota)
// System load
self.systemLoad(response.queue.loadavg)
// Cache
self.cacheSize(response.queue.cache_size)
self.cacheArticles(response.queue.cache_art)
@@ -197,7 +199,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';
}
@@ -208,7 +210,7 @@ function ViewModel() {
self.speedMetric(speedSplit[1]);
// Update sparkline data
if (self.speedHistory.length >= 275) {
if(self.speedHistory.length >= 275) {
// Remove first one
self.speedHistory.shift();
}
@@ -216,12 +218,12 @@ 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()) {
if(!self.useGlobalOptions()) {
sabSpeedHistory = [];
} else {
// Update internally
@@ -252,31 +254,30 @@ function ViewModel() {
/***
Speedlimit
***/
// Nothing or 0 means 100%
if(response.queue.speedlimit == '' || response.queue.speedlimit == '0') {
self.speedLimitInt(100)
} else {
self.speedLimitInt(parseInt(response.queue.speedlimit));
}
// Nothing = 100%
response.queue.speedlimit = (response.queue.speedlimit == '') ? 100.0 : parseFloat(response.queue.speedlimit).toFixed(1);
// Trick to only get decimal-point when needed
response.queue.speedlimit = Math.round(response.queue.speedlimit*10)/10;
self.speedLimitInt(response.queue.speedlimit)
// Only update from external source when user isn't doing input
if (!$('.speedlimit-dropdown .btn-group .btn-group').is('.open')) {
self.speedLimit(self.speedLimitInt())
if(!$('.speedlimit-dropdown .btn-group .btn-group').is('.open')) {
self.speedLimit(response.queue.speedlimit)
}
/***
Download timing and pausing
***/
var timeString = response.queue.timeleft;
if (timeString === '') {
if(timeString === '') {
timeString = '0:00';
} else {
timeString = rewriteTime(response.queue.timeleft)
}
// Paused main queue
if (self.downloadsPaused()) {
if (response.queue.pause_int == '0') {
if(self.downloadsPaused()) {
if(response.queue.pause_int == '0') {
timeString = glitterTranslate.paused;
} else {
var pauseSplit = response.queue.pause_int.split(/:/);
@@ -286,21 +287,21 @@ function ViewModel() {
seconds -= minutes * 60;
// Add leading zeros
if (minutes < 10) minutes = '0' + minutes;
if (seconds < 10) seconds = '0' + seconds;
if(minutes < 10) minutes = '0' + minutes;
if(seconds < 10) seconds = '0' + seconds;
// Final formating
timeString = glitterTranslate.paused + ' (' + rewriteTime(hours + ":" + minutes + ":" + seconds) + ')';
}
// Add info about amount of download (if actually downloading)
if (response.queue.noofslots > 0 && parseInt(self.queueDataLeft()) > 0) {
if(response.queue.noofslots > 0 && parseInt(self.queueDataLeft()) > 0) {
self.title(timeString + ' - ' + self.queueDataLeft() + ' ' + glitterTranslate.left + ' - SABnzbd')
} else {
// Set title with pause information
self.title(timeString + ' - SABnzbd')
}
} else if (response.queue.noofslots > 0 && parseInt(self.queueDataLeft()) > 0) {
} else if(response.queue.noofslots > 0 && parseInt(self.queueDataLeft()) > 0) {
// Set title only if we are actually downloading something..
self.title(self.speedText() + ' - ' + self.queueDataLeft() + ' ' + glitterTranslate.left + ' - SABnzbd')
} else {
@@ -317,7 +318,7 @@ function ViewModel() {
// Update history items
self.updateHistory = function(response) {
if (!response) return;
if(!response) return;
self.history.updateFromData(response.history);
}
@@ -333,46 +334,38 @@ function ViewModel() {
// Do requests for full information
// Catch the fail to display message
var api_call = {
var queueApi = callAPI({
mode: "queue",
search: self.queue.searchTerm(),
start: self.queue.pagination.currentStart(),
limit: parseInt(self.queue.paginationLimit())
}
if (self.queue.searchTerm()) {
parseSearchQuery(api_call, self.queue.searchTerm(), ["cat", "category", "priority"])
}
var queueApi = callAPI(api_call)
.done(self.updateQueue)
.fail(function(response) {
// Catch the failure of authorization error
if (response.status == 401) {
// Stop refresh and reload
clearInterval(self.interval)
location.reload();
}
// Show screen
self.isRestarting(1)
}).always(self.setNextUpdate);
})
.done(self.updateQueue)
.fail(function(response) {
// Catch the failure of authorization error
if(response.status == 401) {
// Stop refresh and reload
clearInterval(self.interval)
location.reload();
}
// Show screen
self.isRestarting(1)
}).always(self.setNextUpdate);
// Force full history update?
if (forceFullHistory) {
if(forceFullHistory) {
self.history.lastUpdate = 0
}
// Build history request and parse search
var history_call = {
// History
callAPI({
mode: "history",
failed_only: self.history.showFailed() * 1,
search: self.history.searchTerm(),
failed_only: self.history.showFailed()*1,
start: self.history.pagination.currentStart(),
limit: parseInt(self.history.paginationLimit()),
last_history_update: self.history.lastUpdate
}
if (self.history.searchTerm()) {
parseSearchQuery(history_call, self.history.searchTerm(), ["cat", "category"])
}
// History
callAPI(history_call).done(self.updateHistory);
}).done(self.updateHistory);
// We are now done with any loading
// But we wait a few ms so Knockout has time to update
@@ -385,25 +378,6 @@ function ViewModel() {
return queueApi;
};
function parseSearchQuery(api_request, search, keywords) {
var parsed_query = search_query_parse(search, { keywords: keywords })
api_request["search"] = parsed_query.text
for (const keyword of keywords) {
if (Array.isArray(parsed_query[keyword])) {
api_request[keyword] = parsed_query[keyword].join(",")
} else {
api_request[keyword] = parsed_query[keyword]
}
// Special case for priority, dirty replace of string by numeric value
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])
}
}
}
}
// Set pause action on click of toggle
self.pauseToggle = function() {
callAPI({
@@ -425,23 +399,23 @@ function ViewModel() {
// Open modal
self.openCustomPauseTime = function() {
// Was it loaded already?
if (!Date.i18n) {
jQuery.getScript('./static/javascripts/date.min.js').then(function() {
if(!Date.i18n) {
jQuery.getScript('./static/javascripts/date.min.js').then(function() {
// After loading we start again
self.openCustomPauseTime()
})
return;
})
return;
}
// Show modal
$('#modal_custom_pause').modal('show')
// Focus on the input field
$('#modal_custom_pause').on('shown.bs.modal', function() {
$('#modal_custom_pause').on('shown.bs.modal', function () {
$('#customPauseInput').focus()
})
// Reset on modal close
$('#modal_custom_pause').on('hide.bs.modal', function() {
$('#modal_custom_pause').on('hide.bs.modal', function () {
self.pauseCustom('');
})
}
@@ -449,13 +423,13 @@ function ViewModel() {
// Update on changes
self.pauseCustom.subscribe(function(newValue) {
// Is it plain numbers?
if (newValue.match(/^\s*\d+\s*$/)) {
if(newValue.match(/^\s*\d+\s*$/)) {
// Treat it as a number of minutes
newValue += "minutes";
}
// At least 3 charaters
if (newValue.length < 3) {
if(newValue.length < 3) {
$('#customPauseOutput').text('').data('time', 0)
$('#modal_custom_pause .btn-default').addClass('disabled')
return;
@@ -471,19 +445,19 @@ function ViewModel() {
var pauseParsed = Date.parse(newValue);
// Did we get it?
if (pauseParsed) {
if(pauseParsed) {
// Is it just now?
if (pauseParsed <= Date.parse('now')) {
if(pauseParsed <= Date.parse('now')) {
// Try again with the '+' in front, the parser doesn't get 100min
pauseParsed = Date.parse('+' + newValue);
}
// Calculate difference in minutes and save
var pauseDuration = Math.round((pauseParsed - Date.parse('now')) / 1000 / 60);
$('#customPauseOutput').html('<span class="glyphicon glyphicon-pause"></span> ' + glitterTranslate.pauseFor + ' ' + pauseDuration + ' ' + glitterTranslate.minutes)
var pauseDuration = Math.round((pauseParsed - Date.parse('now'))/1000/60);
$('#customPauseOutput').html('<span class="glyphicon glyphicon-pause"></span> ' +glitterTranslate.pauseFor + ' ' + pauseDuration + ' ' + glitterTranslate.minutes)
$('#customPauseOutput').data('time', pauseDuration)
$('#modal_custom_pause .btn-default').removeClass('disabled')
} else if (newValue) {
} else if(newValue) {
// No..
$('#customPauseOutput').text(glitterTranslate.pausePromptFail)
$('#modal_custom_pause .btn-default').addClass('disabled')
@@ -496,7 +470,7 @@ function ViewModel() {
var pauseDuration = $('#customPauseOutput').data('time');
// If in the future
if (pauseDuration > 0) {
if(pauseDuration > 0) {
callAPI({
mode: 'config',
name: 'set_pause',
@@ -513,7 +487,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({
@@ -522,7 +496,7 @@ function ViewModel() {
// Reset it all
self.allWarnings.removeAll();
if (response) {
if(response) {
// Newest first
response.warnings.reverse()
@@ -563,10 +537,10 @@ function ViewModel() {
// Update on speed-limit change
self.speedLimit.subscribe(function(newValue) {
// Only on new load
if (!self.speedLimitInt()) return;
if(!self.speedLimitInt()) return;
// Update
if (self.speedLimitInt() != newValue) {
if(self.speedLimitInt() != newValue) {
callAPI({
mode: "config",
name: "speedlimit",
@@ -589,18 +563,24 @@ function ViewModel() {
// Shutdown options
self.setOnQueueFinish = function(model, event) {
// Ignore updates before the page is done
if(!self.hasStatusInfo()) return;
// Something changes
callAPI({
mode: 'queue',
name: 'change_complete_action',
value: $(event.target).val()
})
// Top stop blinking while the API is calling
self.onQueueFinish($(event.target).val())
}
// Use global settings or device-specific?
self.useGlobalOptions.subscribe(function(newValue) {
// Reload in case of enabling global options
if (newValue) document.location = document.location;
if(newValue) document.location = document.location;
})
// Update refreshrate
@@ -609,7 +589,7 @@ function ViewModel() {
self.refresh();
// Save in config if global-settings
if (self.useGlobalOptions()) {
if(self.useGlobalOptions()) {
callAPI({
mode: "set_config",
section: "misc",
@@ -627,24 +607,24 @@ function ViewModel() {
// Get filename
var fileName = $(event.target).val().replace(/\\/g, '/').replace(/.*\//, '');
// Set label
if (fileName) $('.btn-file em').text(fileName)
if(fileName) $('.btn-file em').text(fileName)
}
// Add NZB form
self.addNZB = function(form) {
// Anything?
if (!$(form.nzbFile)[0].files[0] && !$(form.nzbURL).val()) {
if(!$(form.nzbFile)[0].files[0] && !$(form.nzbURL).val()) {
$('.btn-file, input[name="nzbURL"]').attr('style', 'border-color: red !important')
setTimeout(function() { $('.btn-file, input[name="nzbURL"]').css('border-color', '') }, 2000)
return false;
}
// Upload file using the method we also use for drag-and-drop
if ($(form.nzbFile)[0].files[0]) {
if($(form.nzbFile)[0].files[0]) {
self.addNZBFromFile($(form.nzbFile)[0].files);
// Hide modal, upload will reset the form
$("#modal-add-nzb").modal("hide");
} else if ($(form.nzbURL).val()) {
} else if($(form.nzbURL).val()) {
// Or add URL
var theCall = {
mode: "addurl",
@@ -657,8 +637,8 @@ function ViewModel() {
}
// 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()
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) {
@@ -671,22 +651,17 @@ function ViewModel() {
}
}
// default to url input when modal is shown
$('#modal-add-nzb').on('shown.bs.modal', function() {
$('input[name="nzbURL"]').focus();
})
// From the upload or filedrop
self.addNZBFromFile = function(files, fileindex) {
// First file
if (fileindex === undefined) {
if(fileindex === undefined) {
fileindex = 0
}
var file = files[fileindex]
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)
@@ -702,8 +677,8 @@ function ViewModel() {
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());
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({
@@ -715,7 +690,7 @@ function ViewModel() {
data: data
}).then(function(r) {
// Are we done?
if (fileindex < files.length) {
if(fileindex < files.length) {
// Do the next one
self.addNZBFromFile(files, fileindex)
} else {
@@ -741,29 +716,28 @@ function ViewModel() {
// Make it spin if the user requested it otherwise we don't,
// because browsers use a lot of CPU for the animation
if (statusFullRefresh) {
if(statusFullRefresh) {
self.hasStatusInfo(false)
}
// Show loading text for performance measures
if (statusPerformance) {
if(statusPerformance) {
self.hasPerformanceInfo(false)
}
// Load the custom status info, allowing for longer timeouts
callAPI({
mode: 'status',
skip_dashboard: (!statusFullRefresh) * 1,
calculate_performance: statusPerformance * 1,
skip_dashboard: (!statusFullRefresh)*1,
calculate_performance: statusPerformance*1,
}, 30000).then(function(data) {
// Update basic
self.statusInfo.folders(data.status.folders)
self.statusInfo.loadavg(data.status.loadavg)
self.statusInfo.delayed_decoder(data.status.delayed_decoder)
self.statusInfo.delayed_assembler(data.status.delayed_assembler)
// Update the full set if the data is available
if ("dnslookup" in data.status) {
if("dnslookup" in data.status) {
self.statusInfo.pystone(data.status.pystone)
self.statusInfo.downloaddir(data.status.downloaddir)
self.statusInfo.downloaddirspeed(data.status.downloaddirspeed)
@@ -778,7 +752,7 @@ function ViewModel() {
}
// Update the servers
if (self.statusInfo.servers().length != data.status.servers.length) {
if(self.statusInfo.servers().length != data.status.servers.length) {
// Empty them, in case of update
self.statusInfo.servers([])
@@ -803,21 +777,21 @@ function ViewModel() {
$.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)
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)
})
}
// Add tooltips to possible new items
if (!isMobile) $('#modal-options [data-tooltip="true"]').tooltip({ trigger: 'hover', container: 'body' })
if(!isMobile) $('#modal-options [data-tooltip="true"]').tooltip({ trigger: 'hover', container: 'body' })
// Stop it spin
self.hasStatusInfo(true)
@@ -830,7 +804,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')
}
@@ -872,7 +846,7 @@ function ViewModel() {
checkSize()
// Check if still visible
if (!$('#options_connections').is(':visible') && connectionRefresh) {
if(!$('#options_connections').is(':visible') && connectionRefresh) {
// Stop refreshing
clearInterval(connectionRefresh)
return
@@ -891,9 +865,9 @@ function ViewModel() {
// Function that handles the actual sizing of connections tab
function checkSize() {
// Any connections?
if (self.showActiveConnections() && $('#options_connections').is(':visible') && $('.table-server-connections').height() > 1) {
if(self.showActiveConnections() && $('#options_connections').is(':visible') && $('.table-server-connections').height() > 1) {
var mainWidth = $('.main-content').width()
$('#modal-options .modal-dialog').width(mainWidth * 0.85 > 650 ? mainWidth * 0.85 : '')
$('#modal-options .modal-dialog').width(mainWidth*0.85 > 650 ? mainWidth*0.85 : '')
} else {
// Small again
$('#modal-options .modal-dialog').width('')
@@ -901,7 +875,7 @@ function ViewModel() {
}
// Make sure Connections get refreshed also after open->close->open
$('#modal-options').on('show.bs.modal', function() {
$('#modal-options').on('show.bs.modal', function () {
// Trigger
$('.nav-tabs a[href="#options_connections"]').trigger('shown.bs.tab')
})
@@ -912,7 +886,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
@@ -934,8 +908,8 @@ function ViewModel() {
// Orphaned folder deletion of all
self.removeAllOrphaned = function() {
if (!self.confirmDeleteHistory() || confirm(glitterTranslate.clearWarn)) {
// Show notification
if(!self.confirmDeleteHistory() || confirm(glitterTranslate.clearWarn)) {
// Show notification
showNotification('.main-notification-box-removing-multiple', 0, self.statusInfo.folders().length)
// Delete them all
callAPI({
@@ -951,8 +925,8 @@ function ViewModel() {
// Orphaned folder adding of all
self.addAllOrphaned = function() {
if (!self.confirmDeleteHistory() || confirm(glitterTranslate.clearWarn)) {
// Show notification
if(!self.confirmDeleteHistory() || confirm(glitterTranslate.clearWarn)) {
// Show notification
showNotification('.main-notification-box-sendback')
// Delete them all
callAPI({
@@ -982,7 +956,7 @@ function ViewModel() {
})
// Change hash for page-reload
$('.history-queue-swicher .nav-tabs a').on('shown.bs.tab', function(e) {
$('.history-queue-swicher .nav-tabs a').on('shown.bs.tab', function (e) {
window.location.hash = e.target.hash;
})
@@ -991,7 +965,7 @@ function ViewModel() {
**/
// Shutdown
self.shutdownSAB = function() {
if (confirm(glitterTranslate.shutdown)) {
if(confirm(glitterTranslate.shutdown)) {
// Show notification and return true to follow the URL
showNotification('.main-notification-box-shutdown')
return true
@@ -999,14 +973,14 @@ function ViewModel() {
}
// Restart
self.restartSAB = function() {
if (!confirm(glitterTranslate.restart)) return;
if(!confirm(glitterTranslate.restart)) return;
// Call restart function
callAPI({ mode: "restart" })
// Set counter, we need at least 15 seconds
self.isRestarting(Math.max(1, Math.floor(15 / self.refreshRate())));
// Force refresh in case of very long refresh-times
if (self.refreshRate() > 30) {
if(self.refreshRate() > 30) {
setTimeout(self.refresh, 30 * 1000)
}
}
@@ -1015,7 +989,7 @@ function ViewModel() {
// Event
var theAction = $(event.target).data('mode');
// Show notification if available
if (['rss_now', 'watched_now'].indexOf(theAction) > -1) {
if(['rss_now', 'watched_now'].indexOf(theAction) > -1) {
showNotification('.main-notification-box-' + theAction, 2000)
}
// Send to the API
@@ -1023,7 +997,7 @@ function ViewModel() {
}
// Repair queue
self.repairQueue = function() {
if (!confirm(glitterTranslate.repair)) return;
if(!confirm(glitterTranslate.repair)) return;
// Hide the modal and show the notifucation
$("#modal-options").modal("hide");
showNotification('.main-notification-box-queue-repair', 5000)
@@ -1044,18 +1018,18 @@ function ViewModel() {
Retrieve config information and do startup functions
***/
// Force compact mode as fast as possible
if (localStorageGetItem('displayCompact') === 'true') {
if(localStorageGetItem('displayCompact') === 'true') {
// Add extra class
$('body').addClass('container-compact')
}
if (localStorageGetItem('displayFullWidth') === 'true') {
if(localStorageGetItem('displayFullWidth') === 'true') {
// Add extra class
$('body').addClass('container-full-width')
}
// Tabbed layout?
if (localStorageGetItem('displayTabbed') === 'true') {
if(localStorageGetItem('displayTabbed') === 'true') {
$('body').addClass('container-tabbed')
var tab_from_hash = location.hash.replace(/^#/, '');
@@ -1095,9 +1069,9 @@ function ViewModel() {
mode: 'get_config'
}).then(function(response) {
// Do we use global, or local settings?
if (self.useGlobalOptions()) {
if(self.useGlobalOptions()) {
// Set refreshrate (defaults to 1/s)
if (!response.config.misc.refresh_rate) response.config.misc.refresh_rate = 1;
if(!response.config.misc.refresh_rate) response.config.misc.refresh_rate = 1;
self.refreshRate(response.config.misc.refresh_rate.toString());
// Set history and queue limit
@@ -1105,10 +1079,10 @@ function ViewModel() {
self.queue.paginationLimit(response.config.misc.queue_limit.toString())
// Import the rest of the settings
if (response.config.misc.interface_settings) {
if(response.config.misc.interface_settings) {
var interfaceSettings = JSON.parse(response.config.misc.interface_settings);
for (const setting of self.globalInterfaceSettings) {
if (setting in interfaceSettings) {
for (const setting of self.globalInterfaceSettings){
if(setting in interfaceSettings) {
self[setting](interfaceSettings[setting]);
}
}
@@ -1120,37 +1094,14 @@ function ViewModel() {
}
// Set bandwidth limit
if (!response.config.misc.bandwidth_max) response.config.misc.bandwidth_max = false;
if(!response.config.misc.bandwidth_max) response.config.misc.bandwidth_max = false;
self.bandwithLimit(response.config.misc.bandwidth_max);
// Reformat and set categories
self.queue.categoriesList($.map(response.config.categories, function(cat) {
// Default?
if(cat.name == '*') return { catValue: '*', catText: glitterTranslate.defaultText };
return { catValue: cat.name, catText: cat.name };
}))
// Get the scripts, if there are any
if(response.config.misc.script_dir) {
callAPI({
mode: 'get_scripts'
}).then(function(script_response) {
// Reformat script-list
self.queue.scriptsList($.map(script_response.scripts, function(script) {
// None?
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)
}
// Save servers (for reporting functionality)
self.servers = response.config.servers;
// Already set if we are using a proxy
if (response.config.misc.socks5_proxy_url) self.statusInfo.active_socks5_proxy(true)
if(response.config.misc.socks5_proxy_url) self.statusInfo.active_socks5_proxy(true)
// Set logging and only then subscribe to changes
self.loglevel(response.config.logging.log_level);
@@ -1164,28 +1115,28 @@ function ViewModel() {
})
// Update message
if (newRelease) {
if(newRelease) {
self.allMessages.push({
index: 'UpdateMsg',
type: glitterTranslate.status['INFO'],
text: ('<a class="queue-update-sab" href="' + newReleaseUrl + '" target="_blank">' + glitterTranslate.updateAvailable + ' ' + newRelease + ' <span class="glyphicon glyphicon-save"></span></a>'),
text: ('<a class="queue-update-sab" href="'+newReleaseUrl+'" target="_blank">'+glitterTranslate.updateAvailable+' '+newRelease+' <span class="glyphicon glyphicon-save"></span></a>'),
css: 'info'
});
}
// Message about cache - Not for 5 days if user ignored it
if (!response.config.misc.cache_limit && localStorageGetItem('CacheMsg') * 1 + (1000 * 3600 * 24 * 5) < Date.now()) {
if(!response.config.misc.cache_limit && localStorageGetItem('CacheMsg')*1+(1000*3600*24*5) < Date.now()) {
self.allMessages.push({
index: 'CacheMsg',
type: glitterTranslate.status['INFO'],
text: ('<a href="./config/general/#cache_limit">' + glitterTranslate.useCache.replace(/<br \/>/g, " ") + ' <span class="glyphicon glyphicon-cog"></span></a>'),
text: ('<a href="./config/general/#cache_limit">'+glitterTranslate.useCache.replace(/<br \/>/g, " ")+' <span class="glyphicon glyphicon-cog"></span></a>'),
css: 'info',
clear: function() { self.clearMessages('CacheMsg') }
clear: function() { self.clearMessages('CacheMsg')}
});
}
// Message about tips and tricks, only once
if (response.config.misc.notified_new_skin < 2) {
if(response.config.misc.notified_new_skin < 2) {
self.allMessages.push({
index: 'TipsMsgV110',
type: glitterTranslate.status['INFO'],
@@ -1208,109 +1159,71 @@ function ViewModel() {
})
// Orphaned folder check - Not for 5 days if user ignored it
var orphanMsg = localStorageGetItem('OrphanedMsg') * 1 + (1000 * 3600 * 24 * 5) < Date.now();
var orphanMsg = localStorageGetItem('OrphanedMsg')*1+(1000*3600*24*5) < Date.now();
// Delay the check
if (orphanMsg) {
if(orphanMsg) {
setTimeout(self.loadStatusInfo, 200);
}
// On any status load we check Orphaned folders
self.hasStatusInfo.subscribe(function(finishedLoading) {
// Loaded or just starting?
if (!finishedLoading) return;
if(!finishedLoading) return;
// Orphaned folders? If user clicked away we check again in 5 days
if (self.statusInfo.folders().length >= 3 && orphanMsg) {
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'],
text: glitterTranslate.orphanedJobsMsg + ' <a href="#" onclick="showOrphans()"><span class="glyphicon glyphicon-wrench"></span></a>',
css: 'info',
clear: function() { self.clearMessages('OrphanedMsg') }
clear: function() { self.clearMessages('OrphanedMsg')}
});
}
} else {
// Remove any message, if it was there
self.allMessages.remove(function(item) {
return item.index == 'OrphanedMsg';
return item.index == 'OrphanedMsg';
})
}
})
// Message about localStorage not being enabled every 20 days
if (!hasLocalStorage && localStorageGetItem('LocalStorageMsg') * 1 + (1000 * 3600 * 24 * 20) < Date.now()) {
if(!hasLocalStorage && localStorageGetItem('LocalStorageMsg')*1+(1000*3600*24*20) < Date.now()) {
self.allMessages.push({
index: 'LocalStorageMsg',
type: glitterTranslate.status['WARNING'].replace(':', ''),
text: glitterTranslate.noLocalStorage,
css: 'warning',
clear: function() { self.clearMessages('LocalStorageMsg') }
clear: function() { self.clearMessages('LocalStorageMsg')}
});
}
if (self.keyboardShortcuts()) {
$(document).bind('keydown', 'p', function(e) {
self.pauseToggle();
});
$(document).bind('keydown', 'a', function(e) {
// avoid modal clashes
if (!$('.modal-dialog').is(':visible')) {
$('#modal-add-nzb').modal('show');
document.onkeydown = function(e) {
if(self.keyboardShortcuts()) {
// Ignore if the user used a combination
if(e.altKey || e.metaKey || e.ctrlKey) return;
// Do not act if the user is typing something
if($("input:focus, textarea:focus").length === 0) {
if (e.code === 'KeyP') {
self.pauseToggle();
}
if (e.code === 'KeyA') {
$('#modal-add-nzb').modal('show');
}
if (e.code === 'KeyC') {
window.location.href = './config/';
}
if (e.code === 'KeyS') {
self.loadStatusInfo(true, true)
$('#modal-options').modal('show');
}
}
});
$(document).bind('keydown', 'c', function(e) {
window.location.href = './config/';
});
$(document).bind('keydown', 's', function(e) {
// Update the data
self.loadStatusInfo(true, true)
// avoid modal clashes
if (!$('.modal-dialog').is(':visible')) {
$('#modal-options').modal('show');
}
});
$(document).bind('keydown', 'shift+left', function(e) {
if($("body").hasClass("container-tabbed")) {
$('#history-tab.active > ul.pagination li.active').prev().click();
$('#queue-tab.active > ul.pagination li.active').prev().click();
} else {
$('#history-tab > ul.pagination li.active').prev().click();
$('#queue-tab > ul.pagination li.active').prev().click();
}
e.preventDefault();
});
$(document).bind('keydown', 'shift+right', function(e) {
if($("body").hasClass("container-tabbed")) {
$('#history-tab.active > ul.pagination li.active').next().click();
$('#queue-tab.active > ul.pagination li.active').next().click();
} else {
$('#history-tab > ul.pagination li.active').next().click();
$('#queue-tab > ul.pagination li.active').next().click();
}
e.preventDefault();
});
$(document).bind('keydown', 'shift+up', function(e) {
if($("body").hasClass("container-tabbed")) {
$('#history-tab.active > ul.pagination li').first().click();
$('#queue-tab.active > ul.pagination li').first().click();
} else {
$('#history-tab > ul.pagination li').first().click();
$('#queue-tab > ul.pagination li').first().click();
}
e.preventDefault();
});
$(document).bind('keydown', 'shift+down', function(e) {
if($("body").hasClass("container-tabbed")) {
$('#history-tab.active > ul.pagination li').last().click();
$('#queue-tab.active > ul.pagination li').last().click();
} else {
$('#history-tab > ul.pagination li').last().click();
$('#queue-tab > ul.pagination li').last().click();
}
e.preventDefault();
});
}
}
/***
@@ -1328,7 +1241,7 @@ function ViewModel() {
$('[data-timestamp]').each(function() {
$(this).text(displayDateTime($(this).data('timestamp'), self.dateFormat(), 'X'))
})
}, 60 * 1000)
}, 60*1000)
/***
End of main functions, start of the fun!
@@ -1339,12 +1252,6 @@ function ViewModel() {
// And refresh now!
self.refresh()
// Special options for (non) mobile
if (isMobile) {
// Disable accept parameter on file inputs, as it doesn't work on mobile Safari
$("input[accept!=''][accept]").attr("accept","")
} else {
// Activate tooltips
$('[data-tooltip="true"]').tooltip({ trigger: 'hover', container: 'body' })
}
// Activate tooltips
if(!isMobile) $('[data-tooltip="true"]').tooltip({ trigger: 'hover', container: 'body' })
}

View File

@@ -6,6 +6,8 @@ function QueueListModel(parent) {
var self = this;
self.parent = parent;
self.dragging = false;
self.rawCatList = [];
self.rawScriptList = [];
// Because SABNZB returns the name
// But when you want to set Priority you need the number..
@@ -37,8 +39,7 @@ 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.searchTerm = ko.observable('').extend({ rateLimit: { timeout: 200, method: "notifyWhenChangesStop" } });
self.paginationLimit = ko.observable(20).extend({ persist: 'queuePaginationLimit' });
self.pagination = new paginationModel(self);
@@ -65,6 +66,31 @@ function QueueListModel(parent) {
return i.id;
});
// Did the category-list change?
// Otherwise KO will send updates to all <select> for every refresh()
if(self.rawCatList != data.categories.toString()) {
// Reformat categories
self.categoriesList($.map(data.categories, function(cat) {
// Default?
if(cat == '*') return { catValue: '*', catText: glitterTranslate.defaultText };
return { catValue: cat, catText: cat };
}))
// Update
self.rawCatList = data.categories.toString();
}
// Did the script-list change?
if(self.rawScriptList != data.scripts.toString()) {
// Reformat script-list
self.scriptsList($.map(data.scripts, function(script) {
// Default?
if(script == 'None') return glitterTranslate.noneText;
return script;
}))
// Update
self.rawScriptList = data.scripts.toString();
}
// Set limit
self.totalItems(data.noofslots);
@@ -168,13 +194,11 @@ function QueueListModel(parent) {
// Searching in queue (rate-limited in decleration)
self.searchTerm.subscribe(function() {
// Refresh now
self.parent.refresh();
// Go back to page 1
if(self.pagination.currentPage() != 1) {
// This forces a refresh
self.pagination.moveToPage(1);
} else {
// Refresh now
self.parent.refresh();
}
})
@@ -184,6 +208,7 @@ function QueueListModel(parent) {
if(event.type == 'mousedown' || (event.keyCode && event.keyCode == 27)) {
self.isLoading(true)
self.searchTerm('');
self.parent.refresh()
}
// Was it click and the field is empty? Then we focus on the field
if(event.type == 'mousedown' && self.searchTerm() == '') {
@@ -201,10 +226,6 @@ function QueueListModel(parent) {
// What action?
var sort, dir;
switch($(event.currentTarget).data('action')) {
case 'sortRemainingAsc':
sort = 'remaining';
dir = 'asc';
break;
case 'sortAgeAsc':
sort = 'avg_age';
dir = 'desc';
@@ -343,61 +364,54 @@ function QueueListModel(parent) {
var newStatus = $('.multioperations-selector input[name="multiedit-status"]:checked').val()
// List all the ID's
var strIDs = '';
var strIDs = '';
$.each(self.multiEditItems(), function(index) {
strIDs = strIDs + this.id + ',';
})
// All non-category updates need to only happen after a category update
function nonCatUpdates() {
if(newScript != '') {
callAPI({
mode: 'change_script',
value: strIDs,
value2: newScript
})
}
if(newPrior != '') {
callAPI({
mode: 'queue',
name: 'priority',
value: strIDs,
value2: newPrior
})
}
if(newProc != '') {
callAPI({
mode: 'change_opts',
value: strIDs,
value2: newProc
})
}
if(newStatus) {
callAPI({
mode: 'queue',
name: newStatus,
value: strIDs
})
}
// Wat a little and do the refresh
// Only if anything changed!
if(newStatus || newProc != '' || newPrior != '' || newScript != '' || newCat != '') {
setTimeout(parent.refresh, 100)
}
}
// What is changed?
if(newCat != '') {
callAPI({
mode: 'change_cat',
value: strIDs,
value2: newCat
}).then(nonCatUpdates)
} else {
nonCatUpdates()
})
}
if(newScript != '') {
callAPI({
mode: 'change_script',
value: strIDs,
value2: newScript
})
}
if(newPrior != '') {
callAPI({
mode: 'queue',
name: 'priority',
value: strIDs,
value2: newPrior
})
}
if(newProc != '') {
callAPI({
mode: 'change_opts',
value: strIDs,
value2: newProc
})
}
if(newStatus) {
callAPI({
mode: 'queue',
name: newStatus,
value: strIDs
})
}
// Wat a little and do the refresh
// Only if anything changed!
if(newStatus || newProc != '' || newPrior != '' || newScript != '' || newCat != '') {
setTimeout(parent.refresh, 100)
}
}
// Selete all selected
@@ -679,6 +693,8 @@ function QueueModel(parent, data) {
})
}
self.changeScript = function(item) {
// Not on empty handlers
if(!item.script() || parent.scriptsList().length <= 1) return;
callAPI({
mode: 'change_script',
value: item.id,

View File

@@ -1,12 +0,0 @@
/*
* jQuery Hotkeys Plugin
* Copyright 2010, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Based upon the plugin by Tzury Bar Yochay:
* https://github.com/tzuryby/jquery.hotkeys
*
* Original idea by:
* Binny V A, http://www.openjs.com/scripts/events/keyboard_shortcuts/
*/
!function(c){function e(e){var o,f;"string"==typeof e.data&&(e.data={keys:e.data}),e.data&&e.data.keys&&"string"==typeof e.data.keys&&(o=e.handler,f=e.data.keys.toLowerCase().split(" "),e.handler=function(a){if(this===a.target||!(/textarea|select/i.test(a.target.nodeName)||c.hotkeys.options.filterTextInputs&&-1<c.inArray(a.target.type,c.hotkeys.textAcceptingInputTypes))){var s="keypress"!==a.type&&c.hotkeys.specialKeys[a.which],e=String.fromCharCode(a.which).toLowerCase(),r="",t={};c.each(["alt","ctrl","shift"],function(e,t){a[t+"Key"]&&s!==t&&(r+=t+"+")}),a.metaKey&&!a.ctrlKey&&"meta"!==s&&(r+="meta+"),a.metaKey&&"meta"!==s&&-1<r.indexOf("alt+ctrl+shift+")&&(r=r.replace("alt+ctrl+shift+","hyper+")),s?t[r+s]=!0:(t[r+e]=!0,t[r+c.hotkeys.shiftNums[e]]=!0,"shift+"===r&&(t[c.hotkeys.shiftNums[e]]=!0));for(var i=0,n=f.length;i<n;i++)if(t[f[i]])return o.apply(this,arguments)}})}c.hotkeys={version:"0.8",specialKeys:{8:"backspace",9:"tab",10:"return",13:"return",16:"shift",17:"ctrl",18:"alt",19:"pause",20:"capslock",27:"esc",32:"space",33:"pageup",34:"pagedown",35:"end",36:"home",37:"left",38:"up",39:"right",40:"down",45:"insert",46:"del",59:";",61:"=",96:"0",97:"1",98:"2",99:"3",100:"4",101:"5",102:"6",103:"7",104:"8",105:"9",106:"*",107:"+",109:"-",110:".",111:"/",112:"f1",113:"f2",114:"f3",115:"f4",116:"f5",117:"f6",118:"f7",119:"f8",120:"f9",121:"f10",122:"f11",123:"f12",144:"numlock",145:"scroll",173:"-",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'"},shiftNums:{"`":"~",1:"!",2:"@",3:"#",4:"$",5:"%",6:"^",7:"&",8:"*",9:"(",0:")","-":"_","=":"+",";":": ","'":'"',",":"<",".":">","/":"?","\\":"|"},textAcceptingInputTypes:["text","password","number","email","url","range","date","month","week","time","datetime","datetime-local","search","color","tel"],options:{filterTextInputs:!0}},c.each(["keydown","keyup","keypress"],function(){c.event.special[this]={add:e}})}(jQuery||this.jQuery||window.jQuery);

View File

@@ -1,317 +0,0 @@
/*!
* search-search-query-parser.js
* Copyright(c) 2014-2019
* MIT Licensed
*
* Modified for SABnzbd use!
* Adapted to use without NPM.
*/
function search_query_parse(string, options) {
// Set a default options object when none is provided
if (!options) {
options = {offsets: true};
} else {
// If options offsets was't passed, set it to true
options.offsets = (typeof options.offsets === 'undefined' ? true : options.offsets)
}
if (!string) {
string = '';
}
// When no keywords or ranges set, treat as a simple string
else if (!options.keywords && !options.ranges && !options.tokenize) {
return string;
}
// Otherwise parse the advanced query syntax
else {
// Our object to store the query object
var query = {text: []};
// When offsets is true, create their array
if (options.offsets) {
query.offsets = [];
}
var exclusion = {};
var terms = [];
// Get a list of search terms respecting single and double quotes
var regex = /(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|\S+|\S+:\S+/g;
/*
Removed exclusion matching for SABnzbd, original regex:
var regex = /(\S+:'(?:[^'\\]|\\.)*')|(\S+:"(?:[^"\\]|\\.)*")|(-?"(?:[^"\\]|\\.)*")|(-?'(?:[^'\\]|\\.)*')|\S+|\S+:\S+/g;
See: https://github.com/sabnzbd/sabnzbd/issues/2342
*/
var match;
while ((match = regex.exec(string)) !== null) {
var term = match[0];
var sepIndex = term.indexOf(':');
if (sepIndex !== -1) {
var split = term.split(':'),
key = term.slice(0, sepIndex),
val = term.slice(sepIndex + 1);
// Strip surrounding quotes
val = val.replace(/^\"|\"$|^\'|\'$/g, '');
// Strip backslashes respecting escapes
val = (val + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
terms.push({
keyword: key,
value: val,
offsetStart: match.index,
offsetEnd: match.index + term.length
});
} else {
var isExcludedTerm = false;
/*
Removed for SABnzbd
See: https://github.com/sabnzbd/sabnzbd/issues/2342
if (term[0] === '-') {
isExcludedTerm = true;
term = term.slice(1);
}
*/
// Strip surrounding quotes
term = term.replace(/^\"|\"$|^\'|\'$/g, '');
// Strip backslashes respecting escapes
term = (term + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
}
});
if (isExcludedTerm) {
if (exclusion['text']) {
if (exclusion['text'] instanceof Array) {
exclusion['text'].push(term);
} else {
exclusion['text'] = [exclusion['text']];
exclusion['text'].push(term);
}
} else {
// First time seeing an excluded text term
exclusion['text'] = term;
}
} else {
terms.push({
text: term,
offsetStart: match.index,
offsetEnd: match.index + term.length
});
}
}
}
// Reverse to ensure proper order when pop()'ing.
terms.reverse();
// For each search term
var term;
while (term = terms.pop()) {
// When just a simple term
if (term.text) {
// We add it as pure text
query.text.push(term.text);
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push(term);
}
}
// We got an advanced search syntax
else {
var key = term.keyword;
// Check if the key is a registered keyword
options.keywords = options.keywords || [];
var isKeyword = false;
var isExclusion = false;
if (!/^-/.test(key)) {
isKeyword = !(-1 === options.keywords.indexOf(key));
} else if (key[0] === '-') {
var _key = key.slice(1);
isKeyword = !(-1 === options.keywords.indexOf(_key))
if (isKeyword) {
key = _key;
isExclusion = true;
}
}
// Check if the key is a registered range
options.ranges = options.ranges || [];
var isRange = !(-1 === options.ranges.indexOf(key));
// When the key matches a keyword
if (isKeyword) {
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push({
keyword: key,
value: term.value,
offsetStart: isExclusion ? term.offsetStart + 1 : term.offsetStart,
offsetEnd: term.offsetEnd
});
}
var value = term.value;
// When value is a thing
if (value.length) {
// Get an array of values when several are there
var values = value.split(',');
if (isExclusion) {
if (exclusion[key]) {
// ...many times...
if (exclusion[key] instanceof Array) {
// ...and got several values this time...
if (values.length > 1) {
// ... concatenate both arrays.
exclusion[key] = exclusion[key].concat(values);
} else {
// ... append the current single value.
exclusion[key].push(value);
}
}
// We saw that keyword only once before
else {
// Put both the current value and the new
// value in an array
exclusion[key] = [exclusion[key]];
exclusion[key].push(value);
}
}
// First time we see that keyword
else {
// ...and got several values this time...
if (values.length > 1) {
// ...add all values seen.
exclusion[key] = values;
}
// Got only a single value this time
else {
// Record its value as a string
if (options.alwaysArray) {
// ...but we always return an array if option alwaysArray is true
exclusion[key] = [value];
} else {
// Record its value as a string
exclusion[key] = value;
}
}
}
} else {
// If we already have seen that keyword...
if (query[key]) {
// ...many times...
if (query[key] instanceof Array) {
// ...and got several values this time...
if (values.length > 1) {
// ... concatenate both arrays.
query[key] = query[key].concat(values);
} else {
// ... append the current single value.
query[key].push(value);
}
}
// We saw that keyword only once before
else {
// Put both the current value and the new
// value in an array
query[key] = [query[key]];
query[key].push(value);
}
}
// First time we see that keyword
else {
// ...and got several values this time...
if (values.length > 1) {
// ...add all values seen.
query[key] = values;
}
// Got only a single value this time
else {
if (options.alwaysArray) {
// ...but we always return an array if option alwaysArray is true
query[key] = [value];
} else {
// Record its value as a string
query[key] = value;
}
}
}
}
}
}
// The key allows a range
else if (isRange) {
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push(term);
}
var value = term.value;
// Range are separated with a dash
var rangeValues = value.split('-');
// When both end of the range are specified
// keyword:XXXX-YYYY
query[key] = {};
if (2 === rangeValues.length) {
query[key].from = rangeValues[0];
query[key].to = rangeValues[1];
}
// When pairs of ranges are specified
// keyword:XXXX-YYYY,AAAA-BBBB
else if (!rangeValues.length % 2) {
}
// When only getting a single value,
// or an odd number of values
else {
query[key].from = value;
}
} else {
// We add it as pure text
var text = term.keyword + ':' + term.value;
query.text.push(text);
// When offsets is true, push a new offset
if (options.offsets) {
query.offsets.push({
text: text,
offsetStart: term.offsetStart,
offsetEnd: term.offsetEnd
});
}
}
}
}
// Concatenate all text terms if any
if (query.text.length) {
if (!options.tokenize) {
query.text = query.text.join(' ').trim();
}
}
// Just remove the attribute text when it's empty
else {
delete query.text;
}
// Return forged query object
query.exclude = exclusion;
return query;
}
}

View File

@@ -15,8 +15,6 @@
<br /><br />
<input type="hidden" name="server" value="$server" />
<div class="row">
<div class="col-md-7 form-horizontal">
<div class="form-group">

View File

@@ -1,5 +1,5 @@
Kronos.py is written by Irmen de Jong.
Retrieved from:
Retreived from:
http://www.razorvine.net/download/kronos.py
Quote from the module:

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2022-2023 The SABnzbd-Team <team@sabnzbd.org> -->
<!-- Copyright 2022 The SABnzbd-Team <team@sabnzbd.org> -->
<component type="desktop-application">
<id>org.sabnzbd.sabnzbd</id>
<metadata_license>MIT</metadata_license>
@@ -23,26 +23,16 @@
</categories>
<url type="homepage">https://sabnzbd.org</url>
<url type="bugtracker">https://github.com/sabnzbd/sabnzbd/issues</url>
<url type="vcs-browser">https://github.com/sabnzbd/sabnzbd</url>
<url type="translate">https://sabnzbd.org/wiki/translate</url>
<url type="donation">https://sabnzbd.org/donate</url>
<url type="help">https://sabnzbd.org/wiki/</url>
<url type="faq">https://sabnzbd.org/wiki/faq</url>
<url type="contact">https://sabnzbd.org/live-chat.html</url>
<url type="contact">https://forums.sabnzbd.org</url>
<launchable type="desktop-id">sabnzbd.desktop</launchable>
<provides>
<mediatype>application/x-nzb</mediatype>
<mediatype>application/x-compressed-nzb</mediatype>
</provides>
<supports>
<control>pointing</control>
<control>keyboard</control>
<control>touch</control>
</supports>
<recommends>
<display_length compare="ge">small</display_length>
<internet>always</internet>
</recommends>
<project_license>GPL-2.0-or-later</project_license>
<developer_name>The SABnzbd-team</developer_name>
<screenshots>

View File

@@ -1,11 +1,11 @@
#
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.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"

View File

@@ -1,10 +1,10 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Czech (https://www.transifex.com/sabnzbd/teams/111101/cs/)\n"
"MIME-Version: 1.0\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://www.transifex.com/sabnzbd/teams/111101/da/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Spanish (https://www.transifex.com/sabnzbd/teams/111101/es/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://www.transifex.com/sabnzbd/teams/111101/fi/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# ION, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2020\n"
"Language-Team: Hebrew (https://www.transifex.com/sabnzbd/teams/111101/he/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\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://www.transifex.com/sabnzbd/teams/111101/nb/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://www.transifex.com/sabnzbd/teams/111101/pl/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://www.transifex.com/sabnzbd/teams/111101/ru/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://www.transifex.com/sabnzbd/teams/111101/sr/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Swedish (https://www.transifex.com/sabnzbd/teams/111101/sv/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://www.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"

View File

@@ -1,11 +1,11 @@
#
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.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"
@@ -124,6 +124,11 @@ msgstr ""
msgid "Signal %s caught, saving and exiting..."
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "We are planning to remove the '%s' setting, which you have changed from the default value. Could you let us know why you made this change at: https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -259,10 +264,6 @@ msgstr ""
msgid "Server address required"
msgstr ""
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr ""
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -393,6 +394,7 @@ msgstr ""
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr ""
@@ -416,16 +418,19 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgid "Too many connections to server %s"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Login from too many different IP addresses to server %s [%s] - https://sabnzbd.org/multiple-adresses"
msgid "Probable account sharing"
msgstr ""
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgid "Failed login for server %s"
msgstr ""
#. Error message
@@ -598,6 +603,10 @@ msgstr ""
msgid "API Key incorrect, Use the api key from Config->General in your 3rd party program:"
msgstr ""
#: sabnzbd/interface.py
msgid "Authentication missing, please enter username/password from Config->General into your 3rd party program:"
msgstr ""
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr ""
@@ -1130,27 +1139,27 @@ msgstr ""
msgid "Error importing %s"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr ""
@@ -2053,6 +2062,10 @@ msgstr ""
msgid "Download Dir"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr ""
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr ""
@@ -2345,10 +2358,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2593,13 +2602,12 @@ msgstr ""
msgid "Cache articles in memory to reduce disk access.<br /><i>In bytes, optionally follow with K,M,G. For example: \"64M\" or \"128M\"</i>"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid "Create a backup of the configuration file and databases in the Backup Folder.<br>If the Backup Folder is not set, the backup will be created in the Completed Download Folder.<br>Recurring backups can be configured on the Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -2824,10 +2832,6 @@ msgstr ""
msgid "System Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr ""
@@ -2836,14 +2840,6 @@ msgstr ""
msgid "Location for queue admin and history database.<br /><i>Can only be changed when queue is empty.</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3008,6 +3004,14 @@ msgstr ""
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid "When sorting, use tags from indexer for title, season, episode, etc. Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr ""
@@ -3056,10 +3060,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3089,14 +3089,6 @@ msgstr ""
msgid "Replace spaces with underscores in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr ""
@@ -4201,6 +4193,14 @@ msgstr ""
msgid "Submit"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr ""
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr ""
@@ -4285,10 +4285,6 @@ msgstr ""
msgid "All usernames, passwords and API-keys are automatically removed from the log and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr ""
@@ -4494,6 +4490,10 @@ msgstr ""
msgid "Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr ""

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Pavel C <quoing_transifex@mess.cz>, 2021
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Czech (https://www.transifex.com/sabnzbd/teams/111101/cs/)\n"
@@ -142,6 +142,14 @@ msgstr "Vypnutí SABnzbd dokončeno"
msgid "Signal %s caught, saving and exiting..."
msgstr "Zachycen signál %s, ukládám a ukončuji..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -285,10 +293,6 @@ msgstr "%s není validní emailová adresa"
msgid "Server address required"
msgstr "Adresa serveru je vyžadována"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr ""
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s neni validní skript"
@@ -428,6 +432,7 @@ msgstr ""
"Musíte nastavit maximální rychlost linky předtím než začnete nastavovat "
"limity pro přenos"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Nelze se připojit k serveru %s [%s]"
@@ -451,19 +456,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Příliš mnoho spojení k serveru %s [%s]"
msgid "Too many connections to server %s"
msgstr "Příliš mnoho spojení k serveru %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Pravděpodobné sdílení účtu"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Přihlášení k serveru %s se nezdařilo [%s]"
msgid "Failed login for server %s"
msgstr "Přihlášení k serveru %s se nezdařilo"
#. Error message
#: sabnzbd/downloader.py
@@ -645,6 +651,14 @@ msgstr ""
"Nesprávný API klíč, použijte api klíč z Nastavení->Obecné ve vašem programu "
"třetí strany:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Chybějící přihlašovací údaje, prosím zadejte jméno/heslo z Nastavení->Obecné"
" do vašeho programu třetí strany:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Přihlášené selhalo, zkontrolujte jméno a heslo."
@@ -1197,27 +1211,27 @@ msgstr "Zrušeno, nelze dokončit"
msgid "Error importing %s"
msgstr "Chyba při importu %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLIKÁT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "ŠIFROVANÉ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "PŘÍLIŠ VELKÝ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "NEKOMPLETNÍ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "NECHTĚNÝ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "ČEKÁNÍ %s s"
@@ -2128,6 +2142,10 @@ msgstr "Vyhledávání"
msgid "Download Dir"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr ""
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr ""
@@ -2422,10 +2440,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2697,17 +2711,12 @@ msgid ""
" follow with K,M,G. For example: \"64M\" or \"128M\"</i>"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -2955,10 +2964,6 @@ msgstr ""
msgid "System Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr ""
@@ -2969,17 +2974,6 @@ msgid ""
"when queue is empty.</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3162,6 +3156,16 @@ msgstr ""
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr ""
@@ -3212,10 +3216,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3247,14 +3247,6 @@ msgstr ""
msgid "Replace spaces with underscores in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr ""
@@ -4393,6 +4385,14 @@ msgstr ""
msgid "Submit"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr ""
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr ""
@@ -4481,10 +4481,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr ""
@@ -4693,6 +4689,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr ""

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Danish (https://www.transifex.com/sabnzbd/teams/111101/da/)\n"
@@ -142,6 +142,14 @@ msgstr "SABnzbd lukning udført"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s modtaget, gemmer og lukker..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -285,10 +293,6 @@ msgstr "%s er ikke en godkendt e-mail adresse"
msgid "Server address required"
msgstr "Kræver serveradresse"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ugyldig server adresse."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -426,6 +430,7 @@ msgstr ""
"Du skal angive den maksimale båndbredde, før du kan angive en båndbredde "
"begrænsning"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Kan ikke tilslutte til server %s [%s]"
@@ -449,19 +454,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Det lykkedes ikke at initialisere %s@%s med begrundelse %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Alt for mange forbindelser til serveren %s [%s]"
msgid "Too many connections to server %s"
msgstr "Alt for mange forbindelser til serveren %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Sandsynligt delt konto"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Det lykkedes ikke at logge på serveren %s [%s]"
msgid "Failed login for server %s"
msgstr "Det lykkedes ikke at logge på serveren %s"
#. Error message
#: sabnzbd/downloader.py
@@ -653,6 +659,14 @@ msgstr ""
"Forkert API-nøgle, anvend api-nøglen fra Konfiguration->Generelt i dit "
"tredjepartsprogram:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Brugeroplysninger mangler, indtast brugernavn/adgangskode fra "
"Konfiguration->Generelt i dit tredjepartsprogram:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Godkendelse mislykkedes, kontrollere brugernavn/adgangskode."
@@ -1200,27 +1214,27 @@ msgstr "Afbrudt, kan ikke afsluttes"
msgid "Error importing %s"
msgstr "Det lykkedes ikke at importere %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLIKERE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "KRYPTEREDE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "FOR STOR"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "UFULDSTÆNDIG"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "UØNSKET"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "VENT %s sekunder"
@@ -2159,6 +2173,10 @@ msgstr "Søg"
msgid "Download Dir"
msgstr "Download mappe"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Sysload"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Er du sikker på du vil lukke SABnzbd?"
@@ -2453,10 +2471,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2743,17 +2757,12 @@ msgstr ""
"Cache artikler i hukommelsen for at reducere diskadgang.<br /><i>I bytes, "
"efterfulgt af K,M,G. For eksempel: \"64M\" eller \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3018,10 +3027,6 @@ msgstr ""
msgid "System Folders"
msgstr "Systemmapper"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Administrativ mappe"
@@ -3034,17 +3039,6 @@ msgstr ""
"Placering for kø administrativ og historik database.<br /><i>Kan kun ændres,"
" når køen er tom.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr "<i>Data vil <b>ikke</b> blive flyttet. Kræver SABnzbd genstartet!</i>"
@@ -3239,6 +3233,16 @@ msgstr "Ved fejl, prøv alternativ NZB"
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Nogle servere levere en alternativ NZB når et download mislykkes."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr "Brug mærker fra indexer"
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Aktiver mappe omdøbning"
@@ -3291,10 +3295,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Propagation delay"
@@ -3328,14 +3328,6 @@ msgstr "Erstat mellemrum i mappenavn"
msgid "Replace spaces with underscores in folder names."
msgstr "Erstat mellemrum med understreg i mappenavn."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Erstat punktummer i mappenavn"
@@ -4498,6 +4490,14 @@ msgstr "Angiv et valgfrit filnavn"
msgid "Submit"
msgstr "Tilføj"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Tilføjet. Mange tak!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Intet er valgt!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Fjern alle valgte filer"
@@ -4588,10 +4588,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sortere efter alder <small>Ældst&rarr;Nyeste</small>"
@@ -4808,6 +4804,10 @@ msgstr ""
"Ukendt SSL protokol: Prøv at deaktivere SSL eller forbinder på en anden "
"port."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ugyldig server adresse."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Server afslut under login-sekvens."

View File

@@ -1,21 +1,21 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# C E <githubce@eiselt.ch>, 2020
# Nikolai Bohl <n.kay01@gmail.com>, 2020
# reloxx13 <reloxx@interia.pl>, 2021
# Ben Hecht <benjamin.hecht@me.com>, 2021
# Manuel C. Senn, 2021
# Andreas Kames, 2021
# Simon W., 2021
# Nils Briggen, 2022
# reloxx13 <reloxx@interia.pl>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"
@@ -157,6 +157,14 @@ msgstr "SABnzbd wurde beendet"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s erkannt. Wird gespeichert und beendet …"
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -165,7 +173,7 @@ msgstr "Schwerer Fehler beim Speichern des Zustands"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed postprocessor"
msgstr "Neustart aufgrund eines abgestürzten Nachbearbeitungsprozesses"
msgstr "Neustart aufgrund eines abgestürzten Postprocessors"
#. Warning message
#: sabnzbd/__init__.py
@@ -175,7 +183,7 @@ msgstr "Neustart aufgrund eines abgestürzten Downloaders"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "Neustart aufgrund eines abgestürzten Decoders"
msgstr "Neustart aufgrund eines abgestürzten Dekoders"
#. Warning message
#: sabnzbd/__init__.py
@@ -303,10 +311,6 @@ 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
msgid "Invalid server address."
msgstr "Ungültige Server-Adresse."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s ist kein gültiges Script"
@@ -349,7 +353,7 @@ msgstr "Kann keine Sicherungsdatei erstellen für %s"
#. Warning message
#: sabnzbd/config.py
msgid "Could not restore backup"
msgstr "Backup konnte nicht wiederhergestellt werden"
msgstr ""
#. Error message
#: sabnzbd/config.py
@@ -396,15 +400,14 @@ msgstr "Unbekannter Fehler %s beim Dekodieren"
#: sabnzbd/deobfuscate_filenames.py
msgid "Deobfuscate skipped due to DVD/Bluray directories"
msgstr ""
"Entschleiern wird aufgrund von DVD/Blu-ray-Verzeichnissen übersprungen"
#: sabnzbd/deobfuscate_filenames.py
msgid "Deobfuscate corrected the extension of %d file(s)"
msgstr "Entschleiern korrigierte die Erweiterung von %d Datei(en)"
msgstr ""
#: sabnzbd/deobfuscate_filenames.py
msgid "Deobfuscate renamed %d file(s)"
msgstr "Entschleiern hat %dDatei(en) umbenannt"
msgstr ""
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
msgid "Direct Unpack"
@@ -455,6 +458,7 @@ msgstr ""
"Bevor ein Bandbreitenlimit gesetzt werden kann, muss die maximale Bandbreite"
" festgelegt werden"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Verbindung zum Server %s kann nicht hergestellt werden. %s"
@@ -471,26 +475,27 @@ msgstr "Server %s wird für %s Minuten ignoriert"
#. Warning message
#: sabnzbd/downloader.py
msgid "There are no active servers!"
msgstr "Es gibt keine aktiven Server!"
msgstr ""
#. Error message
#: sabnzbd/downloader.py
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Fehler %s@%s zu initialisieren, aus folgendem Grund: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Zu viele Verbindungen zu Server %s [%s]"
msgid "Too many connections to server %s"
msgstr "Zu viele Verbindungen zu Server %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Möglicherweise wird das Konto geteilt"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Anmelden beim Server fehlgeschlagen. %s [%s]"
msgid "Failed login for server %s"
msgstr "Anmelden beim Server fehlgeschlagen. %s"
#. Error message
#: sabnzbd/downloader.py
@@ -514,7 +519,7 @@ msgstr "Server %s läuft in %s Tag(en) ab"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr "Server %s hat das angegebene Kontingent verbraucht"
msgstr "Server %s hat die angegebene Quote verbraucht"
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
@@ -645,13 +650,11 @@ msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
"Dateinamen mit Umlaute können nicht in %s gespeichert werden. Dies kann zu "
"Problemen führen."
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s ist nicht beschreibbar. Downloads sind dadurch blockiert."
msgstr ""
#: sabnzbd/interface.py
msgid "Refused connection from:"
@@ -686,6 +689,14 @@ msgstr ""
"API-Schlüssel ungültig. Bitte API-Schlüssel aus Einstellungen->Allgemein in "
"die externe Anwendung eingeben:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Authentifizierung fehlt. Bitte Benutzernamen und Passwort aus "
"Einstellungen->Allgemein in die externe Anwendung eingeben:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr ""
@@ -706,7 +717,7 @@ msgstr ""
#: sabnzbd/interface.py
msgid "Invalid backup archive"
msgstr "Invalides Backup Archiv"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
@@ -1132,12 +1143,12 @@ msgstr "Senden von macOS Benachrichtigung fehlgeschlagen"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send Prowl message"
msgstr "Prowl-Nachricht konnte nicht versendet werden"
msgstr "Konnte Prowl-Nachricht nicht versenden"
#. Error message
#: sabnzbd/notifier.py
msgid "Bad response from Pushover (%s): %s"
msgstr "Fehlerhafte Antwort von Pushover (%s): %s"
msgstr "Fehlerhafte Antwort von Pushbullet (%s): %s"
#. Error message - Warning message
#: sabnzbd/notifier.py
@@ -1152,7 +1163,7 @@ msgstr "Fehlerhafte Antwort von Pushbullet (%s): %s"
#. Warning message
#: sabnzbd/notifier.py
msgid "Failed to send pushbullet message"
msgstr "Pushbullet-Nachricht konnte nicht versendet werden"
msgstr "Konnte Pushbullet-Nachricht nicht versenden"
#. Error message
#: sabnzbd/notifier.py
@@ -1204,7 +1215,7 @@ msgstr "NZB zur Warteschlange hinzugefügt"
#. Warning message
#: sabnzbd/nzbstuff.py
msgid "Invalid NZB file %s, skipping (error: %s)"
msgstr "Ungültige NZB-Datei %s wird übersprungen (Fehler: %s)"
msgstr "Ungültige NZB-Datei %s wird übersprungen: %s "
#. Warning message
#: sabnzbd/nzbstuff.py, sabnzbd/urlgrabber.py
@@ -1251,27 +1262,27 @@ msgstr "Abgebrochen, kann nicht fertiggestellt werden"
msgid "Error importing %s"
msgstr "Fehler beim Importieren von %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLIKAT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "VERSCHLÜSSELT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "ZU GROSS"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "UNVOLLSTÄNDIG"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "UNERWÜNSCHT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "WARTE %s Sek"
@@ -1805,7 +1816,7 @@ msgstr "Entpacken"
#. PP phase "deobfuscate"
#: sabnzbd/skintext.py
msgid "Deobfuscate"
msgstr "Entschleiern"
msgstr ""
#. PP phase "script" - Notification Script settings
#: sabnzbd/skintext.py
@@ -2223,6 +2234,10 @@ msgstr "Suchen"
msgid "Download Dir"
msgstr "Downloads"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Systemlast"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Möchten Sie SABnzbd wirklich beenden?"
@@ -2265,7 +2280,7 @@ msgstr "Erzwingen"
#. Priority pick list
#: sabnzbd/skintext.py
msgid "Stop"
msgstr "Abbrechen"
msgstr "Anhalten"
#. Add NZB Dialog
#: sabnzbd/skintext.py
@@ -2510,19 +2525,15 @@ msgstr "DNS-Server"
#: sabnzbd/skintext.py
msgid "Download speed limited by"
msgstr "Downloadgeschwindigkeit begrenzt durch"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr "Festplattengeschwindigkeit"
#: sabnzbd/skintext.py
msgid "System load"
msgstr "Systemlast"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
@@ -2744,7 +2755,7 @@ msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
"Moderne Webbrowser und andere Clients akzeptieren keine selbst signierten "
"Moderne Webbrowser und andere Clients akzeptieren keine selbstsignierten "
"Zertifikate und geben eine Warnung aus und/oder stellen gar keine Verbindung"
" her."
@@ -2830,23 +2841,13 @@ msgstr ""
"Festplatte zu reduzieren.<br /><i>In Bytes, gefolgt von einem optionalen K, "
"M oder G. Zum Beispiel: \"64M\" oder \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgstr "Backup erstellen"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
"Erstelle eine Sicherungskopie der Konfigurationsdatei und der Datenbanken im"
" Backup-Ordner.<br>Wenn der Backup-Ordner nicht festgelegt ist, wird die "
"Sicherungskopie im Ordner der abgeschlossenen Downloads "
"erstellt.<br>Wiederkehrende Sicherungen können auf der Seite Planung "
"konfiguriert werden."
#: sabnzbd/skintext.py
msgid "Cleanup List"
@@ -2955,8 +2956,7 @@ msgstr "Externer Internetzugriff"
#: sabnzbd/skintext.py
msgid "You can set access rights for systems outside your local network."
msgstr ""
"Es können Zugriffsrechte für Systeme außerhalb des Netzwerkes gesetzt "
"werden."
"Du kannst Zugriffsrechte für Systeme ausserhalb deines Netzwerkes setzen."
#: sabnzbd/skintext.py
msgid "No access"
@@ -3038,12 +3038,12 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Minimaler freier Speicherplatz des abgeschlossene Downloads-Ordners"
msgstr "Minimaler freier Speicherplatz im Download Ordner"
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
"Funktioniert nicht, wenn sich der Kategorie-Ordner auf einer anderen "
"Funktioniert nicht, wenn sich der Kategorie Ordner auf einer anderen "
"Festplatte befindet."
#. Auto-resume download on the reset day
@@ -3057,10 +3057,9 @@ msgid ""
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
"Das Herunterladen wird automatisch fortgesetzt, wenn der minimale freie "
"Speicherplatz wieder verfügbar ist.<br />Gilt sowohl für den temporären als "
"auch für den abgeschlossene Downloads-Ordner.<br />Dies wird alle paar "
"Minuten überprüft."
"Das Herunterladen wird automatisch fortgesetzt, wenn der minimale freie Speicherplatz wieder verfügbar ist. <br />\n"
"Gilt sowohl für den temporären als auch für den Download Ordner.<br />\n"
"Wird alle paar Minuten überprüft."
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
@@ -3124,10 +3123,6 @@ msgstr ""
msgid "System Folders"
msgstr "System-Ordner"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Administrativer Ordner"
@@ -3141,20 +3136,6 @@ msgstr ""
"Datenbanken enthält.<br /><i>Kann nur geändert werden, wenn die "
"Warteschlange leer ist.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
msgstr "Backup Ordner"
#: 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 ""
"Pfad, an dem die Sicherungen der Konfigurationsdatei und der Datenbanken "
"gespeichert werden.<br />Wenn diese Option leer bleibt, wird die Sicherung "
"im Ordner der abgeschlossenen Downloads erstellt."
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3236,7 +3217,7 @@ msgid ""
"incomplete."
msgstr ""
"Entpacken und starten von Skripten nur bei verifizierten Jobs. Wenn "
"ausgeschaltet, werden alle Jobs als vollständig markiert, selbst wenn sie "
"ausgeschaltet werden alle Jobs als vollständig markiert, selbst wenn sie "
"unvollständig sind."
#: sabnzbd/skintext.py
@@ -3311,7 +3292,7 @@ msgstr "Aktion bei ungewollter Dateienendung"
#: sabnzbd/skintext.py
msgid "Action when an unwanted extension is detected"
msgstr "Aktion bei ungewollter Dateiendung"
msgstr "Aktion bei ungewollter Dateienendung"
#: sabnzbd/skintext.py
msgid "Unwanted extensions"
@@ -3319,11 +3300,11 @@ msgstr "Ungewollte Dateiendungen"
#: sabnzbd/skintext.py
msgid "Blacklist"
msgstr "Sperrliste"
msgstr "Blacklist"
#: sabnzbd/skintext.py
msgid "Whitelist"
msgstr "Erlaubtliste"
msgstr "Whitelist"
#: sabnzbd/skintext.py
msgid ""
@@ -3331,7 +3312,7 @@ msgid ""
" <b>exe, com</b>"
msgstr ""
"Modus auswählen, und alle (nicht-)erwünschten Erweiterungen auflisten. Zum "
"Beispiel: <b>exe</b> oder <b>exe, com</b>"
"Beispiel : <b>exe</b> oder <b>exe, com</b>"
#: sabnzbd/skintext.py
msgid "Enable SFV-based checks"
@@ -3363,6 +3344,18 @@ msgstr ""
"Manche Server stellen ein alternatives NZB zur Verfügung, falls ein Download"
" fehlschlägt."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr "Übernehme Markierungen vom Indexer"
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
"Beim Sortieren, verwende Tags aus Indexer für Titel, Saison, Episode, usw. "
"Andernfalls wird alle Namensgebung aus dem NZB-Namen abgeleitet."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Ordner-Umbenennung aktivieren"
@@ -3419,12 +3412,6 @@ msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
"Warteschlange automatisch sortieren wenn ein neuer Job hinzugefügt wird."
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
"Die Warteschlange wird alle 30 Sekunden neu sortiert, wenn % "
"heruntergeladen, ausgewählt ist."
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Ausbreitungsverzögerung"
@@ -3459,14 +3446,6 @@ msgstr "Leerzeichen in Ordnernamen ersetzen"
msgid "Replace spaces with underscores in folder names."
msgstr "Leerzeichen in Ordnernamen durch Unterstriche ersetzen."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr "Ersetze Unterstriche in Ordnernamen"
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr "Ersetze Unterstriche mit Punkte in Ordnernamen."
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Punkte in Ordner-Namen ersetzen"
@@ -3533,7 +3512,7 @@ msgid ""
"Additionally, attempts to set the correct file extension based on the file "
"signature if the extension is not present or meaningless."
msgstr ""
"Zusätzlich wird versucht, die korrekte Dateierweiterung mithilfe der "
"Zusätzlich wird versucht die korrekte Dateierweiterung mithilfe der "
"Dateisignatur zu ermitteln, falls noch keine Dateierweiterung vorhanden, "
"oder sie sinnlos sein sollte."
@@ -3710,9 +3689,6 @@ msgid ""
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
"Kontingent für dieses Konto, gezählt ab dem Zeitpunkt, an dem es festgelegt "
"wird. In Bytes, optional gefolgt von K, M, G.<br />Warne, wenn es 0 "
"erreicht, wird alle paar Minuten überprüft."
#. Server's retention time in days
#: sabnzbd/skintext.py
@@ -3761,15 +3737,15 @@ msgstr "0 ist die höchste, 99 die niedrigste Priorität"
#. Server required tickbox
#: sabnzbd/skintext.py
msgid "Required"
msgstr "Erforderlich"
msgstr "Benötigt"
#: sabnzbd/skintext.py
msgid ""
"In case of connection failures, the download queue will be paused for a few "
"minutes instead of skipping this server"
msgstr ""
"Im Fall von Verbindungsausfällen wird die Download-Warteschlange für ein "
"paar Minuten pausiert, anstatt diesen Server zu überspringen"
"Im Fall von Verbindungsausfällen wird die Downloadwarteschlange für ein paar"
" Minuten pausiert, statt diesen Server zu überspringen"
#. Server optional tickbox
#: sabnzbd/skintext.py
@@ -3970,7 +3946,7 @@ msgid ""
"If only the <em>Default</em> category is selected, notifications are enabled"
" for jobs in all categories."
msgstr ""
"Wenn nur die <em>Standard</em>-Kategorie ausgewählt ist, werden die "
"Wenn nur die <em>Standart</em> Kategorie ausgewählt ist werden die "
"Benachrichtigungen für Jobs in allen Kategorien aktiviert. "
#: sabnzbd/skintext.py
@@ -4090,7 +4066,7 @@ msgstr "Prowl-Benachrichtigungen aktivieren"
#. Prowl settings
#: sabnzbd/skintext.py
msgid "Requires a Prowl account"
msgstr "Erfordert ein Prowl-Konto"
msgstr "Benötigt einen Prowl-Account"
#. Prowl settings
#: sabnzbd/skintext.py
@@ -4115,17 +4091,17 @@ msgstr "Pushover-Benachrichtungen aktivieren"
#. Pushoversettings
#: sabnzbd/skintext.py
msgid "Requires a Pushover account"
msgstr "Benötigt einen Pushover-Konto"
msgstr "Benötigt einen Pushover-Account"
#. Pushover settings
#: sabnzbd/skintext.py
msgid "Application Token"
msgstr "Anwendungs-Token"
msgstr "Applikationstoken"
#. Pushover settings
#: sabnzbd/skintext.py
msgid "Application token (required)"
msgstr "Anwendungs-Token (erforderlich)"
msgstr "Applikationstoken (benötigt)"
#. Pushover settings
#: sabnzbd/skintext.py
@@ -4135,7 +4111,7 @@ msgstr "Benutzer-Schlüssel"
#. Pushover settings
#: sabnzbd/skintext.py
msgid "User Key (required)"
msgstr "Benutzer-Schlüssel (erforderlich)"
msgstr "Benutzer-Schlüssel (benötigt)"
#. Pushover settings
#: sabnzbd/skintext.py
@@ -4154,8 +4130,7 @@ msgstr "Notfall Wiederanlauf"
#: sabnzbd/skintext.py
msgid "How often (in seconds) the same notification will be sent"
msgstr ""
"Wie oft dieselbe Benachrichtigung (in Sekunden) geschickt werden soll."
msgstr "Wie oft die selbe benachrichtigung (in Sekunden) geschickt wird."
#. Pushover settings
#: sabnzbd/skintext.py
@@ -4165,7 +4140,7 @@ msgstr "Notfall Verfall"
#: sabnzbd/skintext.py
msgid "How many seconds your notification will continue to be retried"
msgstr ""
"Wie viele Sekunden soll versucht werden die Nachricht erneut zu versenden"
"Wieviele Sekunden soll versucht werden deine Nachricht erneut zu versenden"
#. Header for Pushbullet notification section
#: sabnzbd/skintext.py
@@ -4180,17 +4155,17 @@ msgstr "Pushbullet-Benachrichtigungen aktivieren"
#. Pushbulletsettings
#: sabnzbd/skintext.py
msgid "Requires a Pushbullet account"
msgstr "Erfordert ein Pushbullet-Konto"
msgstr "Benötigt einen Pushbullet-Account"
#. Pushbullet settings
#: sabnzbd/skintext.py
msgid "Personal API key"
msgstr "Persönlicher API-Schlüssel"
msgstr "Persönlicher API-Key"
#. Pushbullet settings
#: sabnzbd/skintext.py
msgid "Your personal Pushbullet API key (required)"
msgstr "Dein Pushbullet API-Schlüssel (erforderlich)"
msgstr "Dein Pushbullet API-Key (benötigt)"
#. Pushbullet settings
#: sabnzbd/skintext.py
@@ -4466,23 +4441,23 @@ msgstr "Ergebnis"
#: sabnzbd/skintext.py
msgid "Any property"
msgstr "Jede Eigenschaft"
msgstr ""
#: sabnzbd/skintext.py
msgid "property"
msgstr "Eigenschaft"
msgstr ""
#: sabnzbd/skintext.py
msgid "GuessIt Property"
msgstr "GuessIt Eigenschaft"
msgstr "GuessIt Property"
#: sabnzbd/skintext.py
msgid "GuessIt.Property"
msgstr "GuessIt.Eigenschaft"
msgstr "GuessIt.Property"
#: sabnzbd/skintext.py
msgid "GuessIt_Property"
msgstr "GuessIt_Eigenschaft"
msgstr "GuessIt_Property"
#: sabnzbd/skintext.py
msgid ""
@@ -4589,11 +4564,11 @@ msgstr "Datumsformat"
#: sabnzbd/skintext.py
msgid "Extra queue columns"
msgstr "Weitere Spalten bei der Warteschlange"
msgstr "Weitere Warteschlangen Spalten"
#: sabnzbd/skintext.py
msgid "Extra history columns"
msgstr "Weitere Spalten bei der Verlaufsliste"
msgstr "Weitere Verlaufspalten"
#: sabnzbd/skintext.py
msgid "page"
@@ -4655,6 +4630,14 @@ msgstr "Wahlweise einen Dateinamen angeben:"
msgid "Submit"
msgstr "Senden"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Versendet. Danke!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Nichts ausgewählt!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Alle ausgewählten Dateien entfernen"
@@ -4721,7 +4704,7 @@ msgstr "Löschen von Verlaufeinträgen bestätigen"
#: sabnzbd/skintext.py
msgid "Keyboard shortcuts"
msgstr "Tastaturkürzel"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
@@ -4747,10 +4730,6 @@ msgstr ""
"Alle Benutzernamen, Passwörter und API-Schlüssel werden automatisch aus dem "
"Log und der darin enthaltenen Kopie deiner Einstellungen entfernt."
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr "Sortiere nach % heruntergeladen <small>Viel&rarr;Wenig</small>"
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sortieren nach Alter <small>Älteste&rarr;Neuste</small>"
@@ -4883,7 +4862,7 @@ msgstr "Assistenten starten"
#: sabnzbd/skintext.py
msgid "Restore backup"
msgstr "Backup wiederherstellen"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
@@ -4971,6 +4950,10 @@ msgstr ""
"Unbekanntes SSL-Protokoll: SSL deaktivieren oder alternativen Port "
"versuchen."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ungültige Server-Adresse."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Sever beendet beim Anmeldeverlauf."

View File

@@ -1,17 +1,17 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Ester Molla Aragones <moarages@gmail.com>, 2020
# 1024mb <angelb2203@gmail.com>, 2023
# Safihre <safihre@sabnzbd.org>, 2023
#
# 1024mb <angelb2203@gmail.com>, 2020
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Spanish (https://www.transifex.com/sabnzbd/teams/111101/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -114,8 +114,6 @@ msgid ""
"Current umask (%o) might deny SABnzbd access to the files and folders it "
"creates."
msgstr ""
"La umask actual (%o) podría denegarle acceso a SABnzbd a los archivos y "
"carpetas que este crea."
#. Warning message
#: SABnzbd.py
@@ -152,6 +150,14 @@ msgstr "Cierre de SABnzbd terminado"
msgid "Signal %s caught, saving and exiting..."
msgstr "Señal %s capturado, guardando y saliendo..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -160,22 +166,22 @@ msgstr "Error grave al guardar estado"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed postprocessor"
msgstr "Reiniciando a causa de un posprocesador colgado"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed downloader"
msgstr "Reiniciando debido al cuelgue del descargador"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "Reiniciando a causa de un decodificador colgado"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
msgstr "Reiniciando debido al cuelgue del ensamblador"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
@@ -301,10 +307,6 @@ 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
msgid "Invalid server address."
msgstr "Dirección del servidor no válida."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -448,6 +450,7 @@ msgstr ""
"Debe establecer un ancho de banda máximo antes de poder establecer un límite"
" de ancho de banda"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Error en inicio de conexion a servidor %s [%s]"
@@ -471,19 +474,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Error al inicializar %s@%s con la razón: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Demasiadas conexiones con el servidor %s [%s]"
msgid "Too many connections to server %s"
msgstr "Demasiadas conexiones con el servidor %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Compartiendo de cuenta probable"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Registraccion fallo para servidor %s [%s]"
msgid "Failed login for server %s"
msgstr "Registraccion fallo para servidor %s"
#. Error message
#: sabnzbd/downloader.py
@@ -676,6 +680,14 @@ msgstr ""
"Clave de API erróneo, favor ingresar la clave correcta desde Config->General"
" en tu aplicacion externa:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Faltaron datos de cuenta, favor ingresar usuario/contraseña desde "
"Config->General en tu aplicacion externa:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Autenticación fallida, compruebe el usuario o la contraseña."
@@ -1246,27 +1258,27 @@ msgstr "Abortado, No puede ser completado"
msgid "Error importing %s"
msgstr "Error importando %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLICADO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "ENCRIPTADO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "DEMASIADO GRANDE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "INCOMPLETO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "NO DESEADO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "ESPERAR %s seg"
@@ -2216,6 +2228,10 @@ msgstr "Buscar"
msgid "Download Dir"
msgstr "Dir de Descarga"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Carga del Sistema"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "¿Seguro que deseas detener SABnzbd?"
@@ -2513,10 +2529,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2817,17 +2829,12 @@ msgstr ""
"Cachear artículos en memoria para reducir el acceso a disco.<br /><i>En "
"bytes, opcionalmente seguido de K,M,G. Por ejemplo: \"64M\" o \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3098,10 +3105,6 @@ msgstr ""
msgid "System Folders"
msgstr "Directorios del sistema"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Directorio de administración"
@@ -3114,17 +3117,6 @@ msgstr ""
"Ubicación de la base de datos de historial y administración.<br /><i>Sólo se"
" puede cambiar si la cola está vacía.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3325,6 +3317,19 @@ msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Algunos servidores ofrecen una NZB alternativa cuando falla una descarga ."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr "Utilizar etiquetas del indexer"
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
"Al clasificar, utilice etiquetas del indexer para el título, temporada, "
"episodio, etc. De no hacerlo así, todos los nombres se extraen del nombre "
"NZB."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Habilitar renombrado de directorios"
@@ -3380,10 +3385,6 @@ msgstr ""
"Clasifique tareas de forma automática en la cola cuando se añade una tarea "
"nueva."
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Demora de la propagación"
@@ -3419,14 +3420,6 @@ msgid "Replace spaces with underscores in folder names."
msgstr ""
"Reemplaza los espacios con guiones bajos en los nombres de directorio."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Reemplazar puntos en los directorios"
@@ -4606,6 +4599,14 @@ msgstr "Opcionalmente especificar un nombre de fichero"
msgid "Submit"
msgstr "Enviar"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Enviado. ¡Muchas gracias!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "¡No hay nada seleccionado!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Eliminar todos los ficheros seleccionados"
@@ -4699,10 +4700,6 @@ msgstr ""
"Todos los nombres de usuarios, contraseñas y llaves-API se eliminan "
"automáticamente del registro y se incluye una copia de su configuración."
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Ordenar por Fecha <small>Más viejo&rarr;Más nuevo</small>"
@@ -4919,6 +4916,10 @@ msgstr ""
"Protocolo SSL desconocido: intente desabilitar el SSL o conectarse a un "
"puerto diferente."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Dirección del servidor no válida."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "El servidor se ha cerrado durante el login"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Finnish (https://www.transifex.com/sabnzbd/teams/111101/fi/)\n"
@@ -143,6 +143,14 @@ msgstr "SABnzbd sammutus valmis"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signaali %s kaapattu, tallennetaan ja lopetetaan..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -282,10 +290,6 @@ msgstr "%s ei ole kelvollinen sähköpostiosoite"
msgid "Server address required"
msgstr "Palvelimen osoite vaaditaan"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Virheellinen palvelimen osoite."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -422,6 +426,7 @@ 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."
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Palvelimeen %s ei voida yhdistää [%s]"
@@ -445,19 +450,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Alustaminen epäonnistui kohteessa %s@%s syy: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Liikaa yhteyksiä palvelimelle %s [%s]"
msgid "Too many connections to server %s"
msgstr "Liikaa yhteyksiä palvelimelle %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Mahdollinen tilin jakaminen"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Kirjautuminen palvelimelle %s epäonnistui [%s]"
msgid "Failed login for server %s"
msgstr "Kirjautuminen palvelimelle %s epäonnistui"
#. Error message
#: sabnzbd/downloader.py
@@ -649,6 +655,14 @@ msgstr ""
"API avain virheellinen, käytä Asetukset->Yleiset löytyvää api avainta "
"käyttämääsi kolmannen osapuolen ohjelmaan:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Authentikointi puuttuu, ole hyvä ja syötä käyttäjänimi/salasana "
"Asetukset->Yleiset kolmannen osapuolen ohjelmaasi:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Varmennus epäonnistui, tarkista käyttäjänimi/salasana."
@@ -1193,27 +1207,27 @@ msgstr "Peruutettu, ei voi valmistua"
msgid "Error importing %s"
msgstr "Virhe tuotaessa %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "KAKSOISKAPPALE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "SALATTU"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "LIIAN SUURI"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "KESKENERÄINEN"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "EI TOIVOTTU"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "ODOTA %s sekuntia"
@@ -2152,6 +2166,10 @@ msgstr "Etsi"
msgid "Download Dir"
msgstr "Lataukset-kansio"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Kuorma"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Oletko varma, että haluat sammuttaa SABnzbdn?"
@@ -2446,10 +2464,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2740,17 +2754,12 @@ msgstr ""
"/><i>Tavuina, vaihtoehtoisesti lisää pääte K,M,G. Esimerkiksi: \"64M\" tai "
"\"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3020,10 +3029,6 @@ msgstr ""
msgid "System Folders"
msgstr "Järjestelmäkansio"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Hallinnollinen kansio"
@@ -3036,17 +3041,6 @@ msgstr ""
"Sijainti jonne tallennetaan jonon hallinnan ja historian tietokannat.<br "
"/><i>Voidaan muuttaa vain jonon ollessa tyhjä.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3240,6 +3234,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Jotkin palvelimet tarjoavat vaihtoehtoisen NZB:n kun lataus epäonnistuu."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Kansion uudelleennimeäminen käytössä"
@@ -3294,10 +3298,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Levitysviive"
@@ -3331,14 +3331,6 @@ msgstr "Korvaa välilyönnit kansionimessä"
msgid "Replace spaces with underscores in folder names."
msgstr "Korvaa välilyönnit alaviivoilla kansionimissä."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Korvaa pisteet kansionimessä"
@@ -4501,6 +4493,14 @@ msgstr "Vaihtoehtoisesti anna tiedostonimi"
msgid "Submit"
msgstr "Lähetä"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Lähetetty. Kiitos!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Ei mitään valittuna!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Poista kaikki valitut tiedostot"
@@ -4592,10 +4592,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Järjestä iän mukaan <small>Vanhin&rarr;Uusin</small>"
@@ -4812,6 +4808,10 @@ msgid ""
msgstr ""
"Tuntematon SSL protokolla: Kokeile ottaa SSL käytöstä tai vaihda porttia."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Virheellinen palvelimen osoite."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Palvelin lopetettiin kesken kirjautumisen"

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Fred L <88com88@gmail.com>, 2023
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
# Fred L <88com88@gmail.com>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2022\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"
@@ -153,6 +153,17 @@ msgstr "Arrêt de SABnzbd terminé"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s intercepté, enregistrement et fermeture en cours..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
"Nous envisageons de supprimer le paramètre '%s' que vous avez modifié par "
"rapport à la valeur par défaut. Pourriez-vous nous dire pourquoi vous avez "
"fait ce changement à : https://github.com/sabnzbd/sabnzbd/discussions"
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -302,10 +313,6 @@ 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
msgid "Invalid server address."
msgstr "Adresse du serveur erronée"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s n'est pas un script valide"
@@ -451,6 +458,7 @@ msgstr ""
"Vous devez définir une bande passante maximale avant de pouvoir définir une "
"limite de bande passante"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Impossible de se connecter au serveur %s [%s]"
@@ -474,21 +482,20 @@ msgstr "Il n'y a aucun serveur actif !"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Échec d'initialisation de %s@%s pour la raison suivante : %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Trop de connexions au serveur %s [%s]"
msgid "Too many connections to server %s"
msgstr "Trop de connexions au serveur %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
"Connexion au serveur %s [%s] à partir de trop d'adresses IP différentes - "
"https://sabnzbd.org/multiple-adresses"
msgid "Probable account sharing"
msgstr "Partage de compte probable"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Échec de la connexion au serveur %s [%s]"
msgid "Failed login for server %s"
msgstr "Échec de la connexion au serveur %s"
#. Error message
#: sabnzbd/downloader.py
@@ -684,6 +691,14 @@ msgstr ""
"Clé API incorrecte, utilisez la clé API de la configuration générale dans "
"votre application tierce :"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Authentification manquante, entrez vos identifiant/mot de passe de la "
"configuration générale dans votre application tierce :"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Echec d'authentification, vérifiez les identifiant/mot de passe."
@@ -1246,27 +1261,27 @@ msgstr "Interrompu, ne peut être achevé"
msgid "Error importing %s"
msgstr "Erreur lors de l'importation de %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DOUBLON"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "CHIFFRÉ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "TROP VOLUMINEUX"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "INCOMPLET"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "INDÉSIRABLE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "PATIENTER %s sec"
@@ -1532,7 +1547,7 @@ msgid ""
"Completed Download Folder %s is on FAT file system, limiting maximum file "
"size to 4GB"
msgstr ""
"Le système de fichiers du dossier des téléchargements terminés %s est au "
"Le système de fichiers du dossier de téléchargements terminés %s est au "
"format FAT, limitant la taille maximale d'un fichier à 4 Go"
#: sabnzbd/postproc.py
@@ -2218,6 +2233,10 @@ msgstr "Rechercher"
msgid "Download Dir"
msgstr "Dossier de téléchargement"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Sysload"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Etes-vous sûr de vouloir arrêter SABnzbd ?"
@@ -2515,10 +2534,6 @@ msgstr "processeur"
msgid "Disk speed"
msgstr "Vitesse du disque"
#: sabnzbd/skintext.py
msgid "System load"
msgstr "Charge du système"
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2824,23 +2839,15 @@ msgstr ""
"Mettre les articles en cache pour réduire les accès disque.<br /><i>En "
"Octets, peut être suivi de K,M,G. Par exemple : \"64M\" ou \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgstr "Créer une sauvegarde"
msgid "Download backup"
msgstr "Télécharger la sauvegarde"
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
"Créer une sauvegarde du fichier de configuration et des bases de données "
"dans le Dossier de sauvegarde.<br>Si le Dossier de sauvegarde n'est pas "
"défini, la sauvegarde sera créée dans le Dossier des téléchargements "
"terminés.<br>Les sauvegardes récurrentes peuvent être configurées sur la "
"page Planification."
"Sauvegarder ou restaurer une sauvegarde du fichier de configuration et des "
"bases de données."
#: sabnzbd/skintext.py
msgid "Cleanup List"
@@ -3021,7 +3028,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Completed Download Folder"
msgstr "Dossier des téléchargements terminés"
msgstr "Dossier de téléchargements terminés"
#: sabnzbd/skintext.py
msgid ""
@@ -3053,7 +3060,7 @@ msgid ""
"/>Checked every few minutes."
msgstr ""
"Le téléchargement reprendra automatiquement si l'espace libre minimum est à "
"nouveau disponible.<br />S'applique aux dossiers des téléchargements "
"nouveau disponible.<br />S'applique aux dossiers de téléchargements "
"temporaires et terminés.<br />Vérifié toutes les quelques minutes."
#: sabnzbd/skintext.py
@@ -3120,10 +3127,6 @@ msgstr ""
msgid "System Folders"
msgstr "Dossiers système"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Dossier administrateur"
@@ -3136,20 +3139,6 @@ msgstr ""
"Emplacement de la file d'attente et de la base de données d'historique.<br "
"/><i>Ne peut être changé que lorsque la file d'attente est vide.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
msgstr "Dossier de sauvegarde"
#: 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 ""
"Emplacement où sont stockées les sauvegardes du fichier de configuration et "
"des bases de données.<br />Si laissé vide, la sauvegarde sera créée dans le "
"Dossier des téléchargements terminés."
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3357,6 +3346,19 @@ msgstr ""
"Certains serveurs proposent un NZB alternatif lorsqu'un téléchargement "
"échoue."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr "Utiliser les tags de l'indexeur"
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
"Lors du tri, utiliser les tags de l'indexeur pour le titre, la saison, "
"l'episode, etc. Sinon, toutes les dénominations seront dérivées du fichier "
"NZB."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Activer le renommage du dossier"
@@ -3413,12 +3415,6 @@ msgstr ""
"Trier automatiquement la file d'attente lorsqu'une nouvelle tâche est "
"ajoutée."
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
"La file d'attente sera triée toutes les 30 secondes si le % de "
"téléchargement est sélectionné."
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Délai de propagation"
@@ -3454,14 +3450,6 @@ msgid "Replace spaces with underscores in folder names."
msgstr ""
"Remplace les espaces par des underscores ( _ ) dans les noms de dossiers."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr "Remplacer les underscores dans le nom du dossier"
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr "Remplacer les underscores par des points dans les noms de dossiers"
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Remplacer les points dans les noms de dossier"
@@ -4651,6 +4639,14 @@ msgstr "Vous pouvez également indiquer un nom de fichier"
msgid "Submit"
msgstr "Soumettre"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Soumis. Merci !"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Pas de sélection!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Supprimer tous les fichiers sélectionnés"
@@ -4745,10 +4741,6 @@ msgstr ""
"Tous les noms d'utilisateur, mots de passe et clés API sont automatiquement "
"supprimés du journal et de la copie de vos réglages."
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr "Trier par % téléchargé <small>Most&rarr;Least</small>"
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Trier par Age <small>Moins récent&rarr;Plus récent</small>"
@@ -4969,6 +4961,10 @@ msgstr ""
"Protocole SSL inconnu: essayez de désactiver SSL ou de vous connecter sur un"
" autre port."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Adresse du serveur erronée"
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Le serveur a interrompu l'ouverture de session."

View File

@@ -1,16 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# ION, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Last-Translator: ION, 2022\n"
"Language-Team: Hebrew (https://www.transifex.com/sabnzbd/teams/111101/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -140,6 +140,17 @@ msgstr "כיבוי SABnzbd הסתיים"
msgid "Signal %s caught, saving and exiting..."
msgstr "אות %s נתפס, שומר ויוצא…"
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
"אנחנו מתכננים להסיר את ההגדרה '%s', אשר שינית מערך ברירת המחדל. אתה יכול "
"ליידע אותנו למה עשית את השינוי הזה בכתובת: "
"https://github.com/sabnzbd/sabnzbd/discussions"
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -280,10 +291,6 @@ msgstr "%s אינה כתובת דוא״ל תקפה"
msgid "Server address required"
msgstr "כתובת שרת דרושה"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "כתובת שרת בלתי תקפה."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s הוא לא תסריט תקף"
@@ -422,6 +429,7 @@ msgstr "מושהה"
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
msgstr "אתה חייב לקבוע רוחב פס מרבי לפני שאתה קובע מגבלת רוחב פס"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "לא ניתן להתחבר אל השרת %s [%s]"
@@ -445,19 +453,20 @@ msgstr "אין שרתים פעילים!"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "נכשל באתחול %s@%s עם סיבה: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "יותר מדי חיבורים לשרת %s [%s]"
msgid "Too many connections to server %s"
msgstr "יותר מדי חיבורים לשרת %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "שיתוף סביר של חשבון"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "נכשל בכניסה אל השרת %s [%s]"
msgid "Failed login for server %s"
msgstr "נכשל בכניסה אל השרת %s"
#. Error message
#: sabnzbd/downloader.py
@@ -647,6 +656,14 @@ msgid ""
"program:"
msgstr "מפתח API שגוי, השתמש במפתח ה־API מתצורה->כללי בתוכנית הצד השלישי שלך:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"אימות חסר, אנא הכנס שם משתמש/סיסמה מתוך תצורה->כללי לתוך תוכנית הצד השלישי "
"שלך:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "אימות נכשל, בדוק שם משתמש/סיסמה."
@@ -1196,27 +1213,27 @@ msgstr "בוטל, לא יכול להיות שלם"
msgid "Error importing %s"
msgstr "שגיאה ביבוא %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "כפול"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "מוצפן"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "גדול מדי"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "בלתי שלם"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "בלתי רצוי"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "המתן %s שניות"
@@ -2159,6 +2176,10 @@ msgstr "חיפוש"
msgid "Download Dir"
msgstr "תיקיית הורדות"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "עומס מערכת"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "האם אתה בטוח שאתה רוצה לכבות את SABnzbd?"
@@ -2455,10 +2476,6 @@ msgstr "יע״מ"
msgid "Disk speed"
msgstr "מהירות דיסק"
#: sabnzbd/skintext.py
msgid "System load"
msgstr "טעינת מערכת"
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2747,21 +2764,13 @@ msgstr ""
"הטמן מאמרים בזיכרון כדי להפחית גישת דיסק.<br /><i>בבתים, יכול לבוא עם K,M,G."
" לדוגמה: \"64M\" או \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgstr "צור גיבוי"
msgid "Download backup"
msgstr "הורד גיבוי"
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgstr ""
"צור גיבוי של קובץ התצורה ומסדי הנתונים בתיקיית הגיבויים.<br>אם תיקיית "
"הגיבויים לא הוגדרה, הגיבוי ייווצר בתיקיית ההורדות שהושלמו.<br>גיבויים חוזרים"
" יכולים להיות מתוצרים בדף התזמון."
msgid "Save or restore a backup of the configuration file and databases."
msgstr "שמור או שחזר גיבוי של קובץ התצורה ומסדי נתונים."
#: sabnzbd/skintext.py
msgid "Cleanup List"
@@ -3026,10 +3035,6 @@ msgstr "קובץ שמכיל את כל הסיסמאות שינוסו על קבצ
msgid "System Folders"
msgstr "תיקיות מערכת"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "תיקייה מינהלית"
@@ -3042,19 +3047,6 @@ msgstr ""
"מיקום עבור מנהלן התור ומסד נתוני ההיסטוריה.<br /><i>ניתן לשינוי רק כאשר התור"
" ריק.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
"מיקום שבו הגיבויים של קובץ התצורה ומסדי הנתונים מאוחסנים.<br />אם נשאר ריק, "
"הגיבוי ייווצר בתיקיית ההורדות שהושלמו."
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr "<i>נתונים <b>לא</b> יועברו. דורש הפעלה מחדש של SABnzbd!</i>"
@@ -3245,6 +3237,18 @@ msgstr "בכישלון, נסה NZB חלופי"
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "מספר שרתים מספקים קובץ NZB חלופי כאשר הורדה נכשלת."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr "השתמש בתגים ממדדן"
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
"בעת מיון, השתמש בתגים ממדדן עבור כותרת, עונה, פרק וכדומה. אחרת כל מתן השמות "
"נגזר משם קובץ NZB."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "אפשר שינוי שם תיקייה"
@@ -3297,10 +3301,6 @@ msgstr "מיין תור באופן אוטומטי"
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr "מיין עבודות בתור באופן אוטומטי כאשר עבודה חדשה מתווספת."
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr "התור ימוין כל 30 שניות אם האפשרות % ירד נבחרה."
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "עיכוב רביה"
@@ -3334,14 +3334,6 @@ msgstr "החלף רווחים בשמות תיקיות"
msgid "Replace spaces with underscores in folder names."
msgstr "החלף רווחים בקווים תחתונים בשמות תיקיות."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr "החלף קווים תחתונים בשמות תיקייה"
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr "החלף קווים תחתונים בנקודות בשמות תיקייה"
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "החלף נקודות בשמות תיקיות"
@@ -4504,6 +4496,14 @@ msgstr "ציין באופן רשותי שם קובץ"
msgid "Submit"
msgstr "הגש"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "הוגש. תודה!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "שום דבר לא נבחר!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "הסר את כל הקבצים הנבחרים"
@@ -4596,10 +4596,6 @@ msgstr ""
"כל שמות המשתמש, הסיסמאות ומפתחות API מוסרים באופן אוטומטי מהיומן ומהעותק "
"הכלול של ההגדרות שלך."
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr "מיין לפי % ירד <small>הכי הרבה&rarr;הכי מעט</small>"
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "מיין לפי גיל <small>החדש ביותר&larr;הישן ביותר</small>"
@@ -4814,6 +4810,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr "פרוטוקול SSL בלתי ידוע: נסה להשבית SSL או להתחבר על פתחה שונה."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "כתובת שרת בלתי תקפה."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "שרת יצא במהלך רצף כניסות."

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/sabnzbd/teams/111101/nb/)\n"
@@ -140,6 +140,14 @@ msgstr "SABnzbd er nå avsluttet"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s mottatt, lagrer og avslutter..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -279,10 +287,6 @@ msgstr "%s er ikke en godkjent e-post-adresse"
msgid "Server address required"
msgstr "Krever server-adresse"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ugyldig server-adresse."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -418,6 +422,7 @@ msgstr "Pauset"
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"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Kan ikke koble til server %s [%s]"
@@ -441,19 +446,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Feilet å starte %s@%s grunnet: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "For mange tilkoblinger til server %s [%s]"
msgid "Too many connections to server %s"
msgstr "For mange tilkoblinger til server %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Mistenkt kontodeling"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Kunne ikke logge inn på server %s [%s]"
msgid "Failed login for server %s"
msgstr "Kunne ikke logge inn på server %s"
#. Error message
#: sabnzbd/downloader.py
@@ -645,6 +651,14 @@ msgstr ""
"API-nøkkel er feil, bruk API-nøkkel fra Konfigurasjon->Generelt i ditt "
"tredjepartsprogram:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Autentisering mangler, angi brukernavn/passord fra Konfigurasjon->Generelt i"
" ditt tredjepartsprogram:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Godkjenning mislyktes, kontroller brukernavn og passord."
@@ -1190,27 +1204,27 @@ msgstr "Avbrutt, kan ikke fullføres"
msgid "Error importing %s"
msgstr "Kunne ikke importere %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLIKAT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "KRYPTERT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "FOR STOR"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "UFULLSTENDIG"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "UØNSKET"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "VENT %s sek"
@@ -2149,6 +2163,10 @@ msgstr "Søk"
msgid "Download Dir"
msgstr "Midlertidig nedlastingsmappe"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Systemlast"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Er sikker på at du vil slå av SABnzbd?"
@@ -2443,10 +2461,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2731,17 +2745,12 @@ msgstr ""
"Lagrer artikler i minnet for å redusere diskaktivitet.<br /><i>I bytes, "
"fulgt av K,M,G. For eksempel: \"64M\" eller \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3005,10 +3014,6 @@ msgstr ""
msgid "System Folders"
msgstr "Systemmapper"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Administrativ Mappe"
@@ -3021,17 +3026,6 @@ msgstr ""
"Lokasjon for køadmin og historikkdatabase.<br /><i>Kan bare endres når køen "
"er tom.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr "<i>Data vil <b>ikke</b> bli flyttet. Krever SABnzbd restart!</i>"
@@ -3221,6 +3215,16 @@ msgstr "Når den feiler, prøv alternativ NZB-fil"
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Noen servere vil gi en alternativ NZB når en nedlasting mislykkes."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Aktiver omdøping av mappe"
@@ -3273,10 +3277,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3308,14 +3308,6 @@ msgstr "Erstatt mellomrom i mappenavn"
msgid "Replace spaces with underscores in folder names."
msgstr "Erstatt mellomrom med understrek i mappenavn."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Erstatt punktum i mappenavn"
@@ -4472,6 +4464,14 @@ msgstr "Valgfritt spesifiser filnavn"
msgid "Submit"
msgstr "Send"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Sendt. Takk!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Ingenting er valgt!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Fjern alle valgte filer"
@@ -4560,10 +4560,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sorter etter alder <small>Eldst&rarr;Ny</small>"
@@ -4782,6 +4778,10 @@ msgstr ""
"Ukjent SSL-protokoll: Prøv å deaktivere SSL eller koble til på en annen "
"port."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ugyldig server-adresse."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Server avbrøt undet innloggingssekvens"

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Rik Brouwer, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"
@@ -147,6 +147,14 @@ msgstr "SABnzbd is afgesloten"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signaal %s ontvangen, opslaan en afsluiten..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -294,10 +302,6 @@ msgstr "%s is geen geldig e-mailadres"
msgid "Server address required"
msgstr "Serveradres verplicht"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ongeldige servernaam"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s is geen geldig script."
@@ -445,6 +449,7 @@ msgstr ""
"Je moet eerst een maximumbandbreedte instellen voordat je een limiet kunt "
"instellen"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Verbinding maken met server %s [%s] niet mogelijk"
@@ -468,21 +473,20 @@ msgstr "Er zijn geen actieve servers!"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Initialisatie van %s@%s mislukt, vanwege: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Te veel verbindingen met server %s [%s]"
msgid "Too many connections to server %s"
msgstr "Te veel verbindingen met server %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
"Teveel verschillende IP-adressen probeerde in te loggen op server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgid "Probable account sharing"
msgstr "Mogelijk delen van account"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Aanmelden bij server %s mislukt [%s]"
msgid "Failed login for server %s"
msgstr "Aanmelden bij server %s mislukt"
#. Error message
#: sabnzbd/downloader.py
@@ -635,15 +639,11 @@ msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
"Het is niet mogelijk bestanden met speciale tekens op te slaan in %s. Dit "
"geeft mogelijk problemen bij het verwerken van downloads."
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
"Het is niet mogelijk bestanden te schrijven in %s. Hierdoor kan er niet "
"gedownload worden."
#: sabnzbd/interface.py
msgid "Refused connection from:"
@@ -678,6 +678,14 @@ msgstr ""
"API-sleutel incorrect; vul de API-sleutel van 'Configuratie' => 'Algemeen' "
"in bij het externe programma:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Autenticatie ontbreekt; vul gebruikersnaam en wachtwoord van 'Configuratie' "
"=> 'Algemeen' in bij het externe programma:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Inloggen mislukt, controleer gebruikersnaam en wachtwoord."
@@ -1235,27 +1243,27 @@ msgstr "Afgebroken, kan niet voltooid worden"
msgid "Error importing %s"
msgstr "Fout bij importeren van %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUBBEL"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "VERSLEUTELD"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "TE GROOT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "ONVOLLEDIG"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "ONGEWENST"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "WACHT %s sec"
@@ -2199,6 +2207,10 @@ msgstr "Zoeken"
msgid "Download Dir"
msgstr "Map voor verwerkte downloads"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Sysload"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Weet je zeker dat je SABnzbd wilt afsluiten?"
@@ -2495,10 +2507,6 @@ msgstr "Processor"
msgid "Disk speed"
msgstr "Hardeschijf"
#: sabnzbd/skintext.py
msgid "System load"
msgstr "Systeembelasting"
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2803,22 +2811,13 @@ msgstr ""
"Bewaar de artikelen in het werkgeheugen (verminderd schijf gebruik).<br "
"/><i>In bytes, in K,M,G notatie. Bijvoorbeeld: \"64M\" of \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgstr "Maak backup"
msgid "Download backup"
msgstr "Backup downloaden"
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgstr ""
"Maak een backup van de configuratie en de database in de Backup Map.<br>Als "
"er geen Backup Map is ingesteld wordt de backup aangemaakt in de Map voor "
"verwerkte downloads.<br>Automatische backups kunnen worden ingesteld via de "
"Taakplanner."
msgid "Save or restore a backup of the configuration file and databases."
msgstr "Backup van de configuratie en de database opslaan of herstellen"
#: sabnzbd/skintext.py
msgid "Cleanup List"
@@ -3083,10 +3082,6 @@ msgstr ""
msgid "System Folders"
msgstr "Systeemmappen"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Administratieve map"
@@ -3099,20 +3094,6 @@ msgstr ""
"Map waar de wachtrij en geschiedenisdatabase worden opgeslagen.<br /><i>Kan "
"alleen gewijzigd worden als de wachtrij leeg is.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
msgstr "Backup map"
#: 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 ""
"Map waar de backups van de configuratie en databases worden opgeslagen.<br "
"/>Als deze map niet is ingesteld worden de backups aangemaakt in de Map voor"
" verwerkte downloads."
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3319,6 +3300,19 @@ msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Sommige indexers hebben een alternatieve NZB wanneer een download mislukt"
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr "Gebruik indexer informatie"
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
"Maak tijdens het sorteren gebruik van informatie van de indexer zoals titel,"
" seizoen, aflevering, enz. Anders wordt alle informatie uit de naam van de "
"download gehaald."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Gebruik tijdelijke mapnamen"
@@ -3374,12 +3368,6 @@ msgstr ""
"De wachtrij wordt automatisch gesorteerd wanneer er een nieuwe opdracht "
"wordt toegevoegd"
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
"De wachtrij wordt elke 30 seconden opnieuw gesorteerd als de optie % "
"gedownload is gekozen."
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Verspreidingswachttijd"
@@ -3413,14 +3401,6 @@ msgstr "Vervang spaties in mapnamen"
msgid "Replace spaces with underscores in folder names."
msgstr "Vervang spaties door onderliggende streepjes in namen van mappen."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr "Vervang onderstrepingstekens in mapnamen"
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr "Vervang onderstrepingstekens door punten in mapnamen."
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Vervang punten in mapnamen"
@@ -4607,6 +4587,14 @@ msgstr "Geef eventueel een andere naam"
msgid "Submit"
msgstr "Verstuur"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Ingediend. Bedankt!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Niets geselecteerd!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Verwijder alle geselecteerde bestanden"
@@ -4699,10 +4687,6 @@ msgstr ""
"Alle gebruikersnamen, wachtwoorden en API-sleutels worden automatisch "
"verwijderd uit het logbestand en de bijgevoegde kopie van je instellingen."
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr "Sorteer Op % Gedownload <small>Meest&rarr;Minst</small>"
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sorteer op Leeftijd <small>Oud&rarr;Nieuw</small>"
@@ -4920,6 +4904,10 @@ msgid ""
msgstr ""
"Onbekend SSL protocol: probeer het zonder SSL of probeer een andere poort."
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ongeldige servernaam"
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "De server stopte tijdens de login"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Polish (https://www.transifex.com/sabnzbd/teams/111101/pl/)\n"
@@ -135,6 +135,14 @@ msgstr "SABnzbd został wyłączony"
msgid "Signal %s caught, saving and exiting..."
msgstr "Odebrano sygnał %s, zapisywanie i zamykanie programu..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -274,10 +282,6 @@ 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
msgid "Invalid server address."
msgstr "Nieprawidłowy adres serwera."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -415,6 +419,7 @@ msgstr ""
"Przed ustawieniem limitu przepustowości należy ustawić maksymalną "
"przepustowość"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Nie można połączyć się z serwerem %s [%s]"
@@ -438,19 +443,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Błąd podczas inicjalizacji %s@%s: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Zbyt wiele połączeń do serwera %s [%s]"
msgid "Too many connections to server %s"
msgstr "Zbyt wiele połączeń do serwera %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Prawdopodobne współdzielenie konta"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Błąd logowania do serwera %s [%s]"
msgid "Failed login for server %s"
msgstr "Błąd logowania do serwera %s"
#. Error message
#: sabnzbd/downloader.py
@@ -644,6 +650,14 @@ msgstr ""
"Klucz API jest nieprawidłowy, użyj klucza API z sekcji Konfiguracja->Ogólne "
"w zewnętrznym programie:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Brak danych uwierzytelniających, wprowadź nazwę użytkownika/hasło z sekcji "
"Konfiguracja->Ogólne do zewnętrznego programu:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Błąd połączenia, sprawdź nazwę użytkownika i hasło."
@@ -1191,27 +1205,27 @@ msgstr "Przerwano, nie można ukończyć"
msgid "Error importing %s"
msgstr "Błąd importu %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLIKAT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "ZASZYFROWANY"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "ZA DUŻY"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "NIEKOMPLETNY"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "NIEPOŻĄDANY"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "CZEKAM %s s"
@@ -2154,6 +2168,10 @@ msgstr "Szukaj"
msgid "Download Dir"
msgstr "Katalog pobierania"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Obciążenie"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Czy na pewno wyłączyć SABnzbd?"
@@ -2448,10 +2466,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2738,17 +2752,12 @@ msgstr ""
"dostępu do dysku.<br /><i>W bajtach, opcjonalnie z przyrostkiem K, M, G. "
"Przykład: \"64M\" lub \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3014,10 +3023,6 @@ msgstr ""
msgid "System Folders"
msgstr "Katalogi systemowe"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Katalog administracyjny"
@@ -3030,17 +3035,6 @@ msgstr ""
"Lokalizacja bazy danych administracyjnych i historycznych kolejki.<br "
"/><i>Można zmienić tylko kiedy kolejka jest pusta.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr "<i>Dane <b>nie</b> zostaną przeniesione. Wymaga restartu SABnzbd!</i>"
@@ -3230,6 +3224,16 @@ msgstr ""
"Niektóre serwery udostępniają alternatywne NZB, kiedy pobieranie kończy się "
"niepowodzeniem"
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Włącz zmianę nazw katalogów"
@@ -3282,10 +3286,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3317,14 +3317,6 @@ msgstr "Zastąp spacje w nazwach katalogów"
msgid "Replace spaces with underscores in folder names."
msgstr "Zastąp spacje w nazwach katalogów podkreśleniami"
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Zastąp kropki w nazwach katalogów"
@@ -4482,6 +4474,14 @@ msgstr "Opcjonalnie podaj nazwę pliku"
msgid "Submit"
msgstr "Wyślij"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Wysłano. Dzięki!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Nic nie zaznaczono!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Usuń wszystkie zaznaczone pliki"
@@ -4570,10 +4570,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sortuj według wieku <small>Najstarsze&rarr;Najnowsze</small>"
@@ -4792,6 +4788,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Nieprawidłowy adres serwera."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Serwer przerwał połączenie w trakcie logowania."

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
@@ -139,6 +139,14 @@ msgstr "Encerramento do SABnzbd concluído"
msgid "Signal %s caught, saving and exiting..."
msgstr "Sinal %s encontrado. Salvando e saindo..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -278,10 +286,6 @@ 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
msgid "Invalid server address."
msgstr "Endereço do servidor inválido."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -421,6 +425,7 @@ msgstr ""
"Você deve definir a largura de banda máxima antes de definir um limite de "
"banda"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Não é possível conectar ao servidor %s [%s]"
@@ -444,19 +449,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Falha ao iniciar %s@%s devido as seguintes razões: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Excesso de conexões ao servidor %s [%s]"
msgid "Too many connections to server %s"
msgstr "Excesso de conexões ao servidor %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Provável compartilhamento de conta"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Falha de logon ao servidor %s [%s]"
msgid "Failed login for server %s"
msgstr "Falha de logon ao servidor %s"
#. Error message
#: sabnzbd/downloader.py
@@ -648,6 +654,14 @@ msgstr ""
"Chave de API incorreta. Use a chave de API de Configuração->Geral em seu "
"programa de terceiros:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Autenticação faltando. Por favor insira usuário/senha de Configuração->Geral"
" em seu programa de terceiros:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Falha de autenticação, verifique usuário / senha."
@@ -1192,27 +1206,27 @@ msgstr "Cancelado, não é possível concluir"
msgid "Error importing %s"
msgstr "Erro ao importar %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLICADO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "CRIPTOGRAFADO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "MUITO GRANDE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "INCOMPLETO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "INDESEJADO"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "Espere %s segundo(s)"
@@ -2157,6 +2171,10 @@ msgstr "Busca"
msgid "Download Dir"
msgstr "Pasta de Download"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Carga do sistema"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Tem certeza de que quer encerrar o SABnzbd?"
@@ -2451,10 +2469,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2740,17 +2754,12 @@ msgstr ""
"Manter artigos em memória para reduzir o acesso a disco.<br /><i>Em bytes, "
"opcionalmente seguido de K,M,G. Por exemplo: \"64M\" ou \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3014,10 +3023,6 @@ msgstr ""
msgid "System Folders"
msgstr "Pastas de Sistema"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Pasta Administrativa"
@@ -3030,17 +3035,6 @@ msgstr ""
"Localização do banco de dados de histórico e administrador de fila.<br "
"/><i>Só pode ser alterado quando a fila estiver vazia.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3231,6 +3225,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Alguns servidores fornecem um NZB alternativo quando um download falha."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Habilitar renomeação de pasta"
@@ -3285,10 +3289,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3320,14 +3320,6 @@ msgstr "Substituir espaços no nome da pasta"
msgid "Replace spaces with underscores in folder names."
msgstr "Substituir espaços por sublinhado no nome das pastas."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Substituir pontos no nome da pasta"
@@ -4484,6 +4476,14 @@ msgstr "Opcionalmente, especifique um nome de arquivo"
msgid "Submit"
msgstr "Enviar"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Enviado. Obrigado!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Nada selecionado!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Remover todos os arquivos selecionados"
@@ -4572,10 +4572,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Ordenar por Idade <small>Mais antigo&rarr;Mais novo</small>"
@@ -4791,6 +4787,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Endereço do servidor inválido."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Servidor parou durante a sequência de login."

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Eduard Baniceru <war4peace@gmail.com>, 2021
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"
@@ -145,6 +145,14 @@ msgstr "Închidere SABnzbd terminată"
msgid "Signal %s caught, saving and exiting..."
msgstr "Semnal %s prins, salvez şi ies..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -290,10 +298,6 @@ msgstr "%s nu este o adresă email validă"
msgid "Server address required"
msgstr "Adresă server necesară"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Adresă server invalidă"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -435,6 +439,7 @@ msgstr ""
"Trebuie să seta-ţi lățimea de bandă maximă înainte de a seta o limită de "
"viteză."
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Nu mă pot conecta la serverul %s [%s]"
@@ -458,19 +463,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Nu am putu inițializa %s@%s din cauza următorului motiv: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Prea multe conexiuni la serverul %s [%s]"
msgid "Too many connections to server %s"
msgstr "Prea multe conexiuni la serverul %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Partajare cont probabilă"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Autentificare nereuşită la serverul %s [%s]"
msgid "Failed login for server %s"
msgstr "Autentificare nereuşită la serverul %s"
#. Error message
#: sabnzbd/downloader.py
@@ -662,6 +668,14 @@ msgstr ""
"Cheie API incorectă, Folosiţi cheia api din Configurare->General în "
"programul dumneavoastră terţ:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Autentificare lipsă, vă rugăm să introduceţi numele de utilizator/parola de "
"la Configurare->General în programul dumneavoastră terţ:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Autentificare nereuşită, verifică nume utilizator/parolă."
@@ -1218,27 +1232,27 @@ msgstr "Anulat nu poate fi finalizat"
msgid "Error importing %s"
msgstr "Eroare importare %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUPLICAT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "ENCRIPTAT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "PREA MARE"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "INCOMPLET"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "NEDORIT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "AŞTEAPTĂ %s sec"
@@ -2185,6 +2199,10 @@ msgstr "Caută"
msgid "Download Dir"
msgstr "Dosar Descărcare"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Încărcare sistem"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Sunteţi sigur că doriţi să inchideţi SABnzbd?"
@@ -2479,10 +2497,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2769,17 +2783,12 @@ msgstr ""
"Stochează articolele în memorie pentru a reduce acesul disc.<br /><i>În "
"octeţi, opţional urmaţi de K,M,G. De exemplu : \"64M\" sau\"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3040,10 +3049,6 @@ msgstr "Fişier ce conţine parole pentru fişiere RAR encriptate."
msgid "System Folders"
msgstr "Dosare Sistem"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Dosar Administrativ"
@@ -3056,17 +3061,6 @@ msgstr ""
"Locaţia coadei admin şi istoricul bazei de date.<br /><i>Poate fi folosit "
"doar când coada e goală.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3258,6 +3252,16 @@ msgstr "La eroare, încearcă NZB alternativ"
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Unele server oferă o alternativă dacă un NZB eșuează."
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Activează redenumire dosar"
@@ -3311,10 +3315,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "Întârziere de propagare"
@@ -3348,14 +3348,6 @@ msgstr "Înlocuieşte Spaţiile din Numele Dosarelor"
msgid "Replace spaces with underscores in folder names."
msgstr "Înlocuieşte spaţiile cu _ în numele dosarelor."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Înlocuieşte punctele din Numele Dosarelor"
@@ -4512,6 +4504,14 @@ msgstr "Opţional specifică un nume de fişier"
msgid "Submit"
msgstr "Trimite"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Trimis. Vă mulțumim!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Nimic selectat!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Elimină toate fișierele selectate"
@@ -4602,10 +4602,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sortează după Vârstă <small>Cel mai Vechi&rarr;Cel mai Nou</small>"
@@ -4824,6 +4820,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Adresă server invalidă"
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Serverul a renunţat în timpul logării."

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Russian (https://www.transifex.com/sabnzbd/teams/111101/ru/)\n"
@@ -139,6 +139,14 @@ msgstr "Завершение работы SABnzbd закончено"
msgid "Signal %s caught, saving and exiting..."
msgstr "Получен сигнал %s. Выполняется сохранение и выход..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -278,10 +286,6 @@ msgstr "%s не является допустимым адресом элект
msgid "Server address required"
msgstr "Требуется адрес сервера"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Недопустимый адрес сервера."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -417,6 +421,7 @@ msgstr "Приостановлено"
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Не удаётся подключиться к серверу %s [%s]"
@@ -440,19 +445,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgid "Too many connections to server %s"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Возможно, учётная запись используется где-то ещё"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Ошибка входа на сервер %s [%s]"
msgid "Failed login for server %s"
msgstr "Ошибка входа на сервер %s"
#. Error message
#: sabnzbd/downloader.py
@@ -644,6 +650,14 @@ msgstr ""
"Неправильный ключ API. Используйте в сторонней программе ключ API из раздела"
" «Настройка -> Общие»:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Отсутствуют учётные данные. Введите в сторонней программе имя пользователя и"
" пароль из раздела «Настройка -> Общие»:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Ошибка проверки подлинности. Проверьте имя и пароль."
@@ -1192,27 +1206,27 @@ msgstr ""
msgid "Error importing %s"
msgstr "Ошибка импорта %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "ПОВТОР"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "ЗАШИФРОВАН"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "СЛИШКОМ БОЛЬШОЙ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "НЕПОЛНЫЙ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr ""
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "ОЖИДАНИЕ %s с"
@@ -2153,6 +2167,10 @@ msgstr ""
msgid "Download Dir"
msgstr "Каталог загрузки"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Загрузка системы"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Остановить SABnzbd?"
@@ -2447,10 +2465,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2735,17 +2749,12 @@ msgstr ""
"/><i>В байтах, после числа можно добавить K, M или G. Пример: «64M» или "
"«128M»</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3010,10 +3019,6 @@ msgstr ""
msgid "System Folders"
msgstr "Системные папки"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Административная папка"
@@ -3026,17 +3031,6 @@ msgstr ""
"Место для хранения и базы данных очереди и журнала.<br /><i>Изменить можно "
"только тогда, когда очередь пуста.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3224,6 +3218,16 @@ msgstr ""
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Переименовывать папки"
@@ -3277,10 +3281,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3312,14 +3312,6 @@ msgstr "Заменять пробелы в названиях папок"
msgid "Replace spaces with underscores in folder names."
msgstr "Заменять пробелы на символы подчёркивания в названиях папок."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Заменять точки в названиях папок"
@@ -4480,6 +4472,14 @@ msgstr "Имя файла (необязательно)"
msgid "Submit"
msgstr ""
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr ""
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr ""
@@ -4568,10 +4568,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Сортировать по возрасту <small>от старых к новым</small>"
@@ -4788,6 +4784,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Недопустимый адрес сервера."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Во время входа на сервер был выполнен выход."

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Serbian (https://www.transifex.com/sabnzbd/teams/111101/sr/)\n"
@@ -137,6 +137,14 @@ msgstr "Гашење SABnzbd је завршено"
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s primljen, snimanje i napuštanje..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -276,10 +284,6 @@ msgstr "%s nije ispravna email adresa"
msgid "Server address required"
msgstr "Потребна је адреса сервера"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Погрешна адреса сервера."
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -416,6 +420,7 @@ msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
msgstr ""
"Требате да поставите максимални проток пре него што поставите ограничење"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Neuspešno povezivanje na server %s[%s]"
@@ -439,19 +444,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Neuspešna inicijalizacija %s@%s iz razloga: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Previše konekcija ka serveru %s [%s]"
msgid "Too many connections to server %s"
msgstr "Previše konekcija ka serveru %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Moguće deljenje naloga"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Неуспешно пријављивање на сервер %s [%s]"
msgid "Failed login for server %s"
msgstr "Неуспешно пријављивање на сервер %s"
#. Error message
#: sabnzbd/downloader.py
@@ -641,6 +647,14 @@ msgid ""
msgstr ""
"API кључ је погрешан, унети у спољни програм API кључ из Подешавања->Опште:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Недостаје аутентификација, унети у спољни програм име/лозинку из "
"Подешавања->Опште:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Аутентификација погрешна, проверити име/лозинку."
@@ -1186,27 +1200,27 @@ msgstr "Поништено, не може да се заврши"
msgid "Error importing %s"
msgstr "Грешка увоза %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "ДУПЛИКАТ"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "ШИФРИРАНО"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "ПРЕВЕЛИКО"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "НЕПОТПУНО"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "NEŽELJENI"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "Чекање %s сек"
@@ -2145,6 +2159,10 @@ msgstr "Претрага"
msgid "Download Dir"
msgstr "Фасцикла преузимања"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Sysload"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Da li ste sigurni da želite ugasiti SABnzbd?"
@@ -2439,10 +2457,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2723,17 +2737,12 @@ msgstr ""
"Кеширати артикле у меморији. То смањује приступ диска.<br /><i>У бајтовима, "
"опционо додати K,M,G. Пример: \"64M\" или \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -2995,10 +3004,6 @@ msgstr "Датотека са свим лозинкама за шифрован
msgid "System Folders"
msgstr "Системске фасцикле"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Фасцикла Администратора"
@@ -3011,17 +3016,6 @@ msgstr ""
"Локацију за ред и хронологију базе.<br /><i>Промене су могуће само када је "
"ред празан.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr ""
@@ -3212,6 +3206,16 @@ msgstr "U slučaju neuspeha, pokušaj sa alternativnim NZB-om"
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Neki serveri nude alternativni NZB pri neuspešnom preuzimanju"
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Упали преименовање фасцикле"
@@ -3264,10 +3268,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3299,14 +3299,6 @@ msgstr "Размени размаке у имену фасцикле"
msgid "Replace spaces with underscores in folder names."
msgstr "Размени <b>размаке</b> са <b>_</b> у имену фасцикле."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Размени тачке у имену фасцикле"
@@ -4459,6 +4451,14 @@ msgstr "Опционо специфирати име"
msgid "Submit"
msgstr "Пошаљи"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Poslato. Hvala!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Mišta nije odabrano!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Ukloni sve odabrane fajlove"
@@ -4547,10 +4547,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Среди по старост <small>Старије&rarr;Новије</small>"
@@ -4766,6 +4762,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Погрешна адреса сервера."
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Сервер се затворио при пријављивање"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Swedish (https://www.transifex.com/sabnzbd/teams/111101/sv/)\n"
@@ -137,6 +137,14 @@ msgstr "SABnzbd nedstängning utförd."
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s mottagen, sparar och stänger..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -276,10 +284,6 @@ 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
msgid "Invalid server address."
msgstr "Ogiltig serveradress"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -416,6 +420,7 @@ msgstr "Pausad"
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"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "Kan ej ansluta till server %s [%s]"
@@ -439,19 +444,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Misslyckades att initiera %s@%s med orsak %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "För många anslutningar till servern %s [%s]"
msgid "Too many connections to server %s"
msgstr "För många anslutningar till servern %s"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "Misstänkt kontodelning"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "Det gick inte att logga in på server %s [%s]"
msgid "Failed login for server %s"
msgstr "Det gick inte att logga in på server %s"
#. Error message
#: sabnzbd/downloader.py
@@ -643,6 +649,14 @@ msgstr ""
"API-nyckel felaktig, använd api-nyckeln från Konfiguration-> Allmänt i ditt "
"tredjepartsprogram:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr ""
"Autentisering saknas, ange användarnamn / lösenord från Konfiguration-> "
"Allmänt i ditt tredjepartsprogram:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Autentisering misslyckades, kontrollera användarnamn och lösenord."
@@ -1190,27 +1204,27 @@ msgstr "Avbrutet, kan inte slutföras"
msgid "Error importing %s"
msgstr "Det gick inte att importera %s"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "DUBLETT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "KRYPTERAT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "FÖR STOR"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "INKOMPLETT"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "OÖNSKAD"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "VÄNTA %s SEKUNDER"
@@ -2151,6 +2165,10 @@ msgstr "Sök"
msgid "Download Dir"
msgstr "Temporär nedladdningmapp"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "Systembelastning"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Är du säker på att du vill stänga av SABnzbd?"
@@ -2445,10 +2463,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2732,17 +2746,12 @@ msgstr ""
"Sparar artiklar i minnet för att reducera diskåtkomst.<br /><i>I bytes, "
"följt av K,M,G. Till exempel: \"64M\" eller \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -3006,10 +3015,6 @@ msgstr ""
msgid "System Folders"
msgstr "Systemmappar"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "Administrativ mapp"
@@ -3022,17 +3027,6 @@ msgstr ""
"Plats för köadministration och historiedatabas.<br /><i>Kan bara ändras när "
"kön är tom.</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr "<i>Data kommer <b>inte</b> tas bort. Kräver omstart av SABnzbd!</i>"
@@ -3222,6 +3216,16 @@ msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Vissa servrar kan förse en alternativ NZB när en nerladdning misslyckas"
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Döp om mappar"
@@ -3274,10 +3278,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr ""
@@ -3309,14 +3309,6 @@ msgstr "Ersätt mellanslag i mappnamn"
msgid "Replace spaces with underscores in folder names."
msgstr "Ersätt mellanslag med understreck i mappnamn."
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "Ersätt punkter i mappnamn"
@@ -4471,6 +4463,14 @@ msgstr "Alternativt ange ett filnamn"
msgid "Submit"
msgstr "Skicka"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "Skickat. Tack!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "Inget markerat!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "Ta bort alla markerade filer"
@@ -4559,10 +4559,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Sortera efter ålder <small>Äldst&rarr;Nyast</small>"
@@ -4780,6 +4776,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr ""
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "Ogiltig serveradress"
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "Servern avslutades under inloggning"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2023
#
# Safihre <safihre@sabnzbd.org>, 2022
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Chinese (China) (https://www.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
@@ -135,6 +135,14 @@ msgstr "SABnzbd 关闭完成"
msgid "Signal %s caught, saving and exiting..."
msgstr "捕捉到 %s 信号,正在保存并退出..."
#. Warning message
#: sabnzbd/__init__.py
msgid ""
"We are planning to remove the '%s' setting, which you have changed from the "
"default value. Could you let us know why you made this change at: "
"https://github.com/sabnzbd/sabnzbd/discussions"
msgstr ""
#. Error message
#: sabnzbd/__init__.py
msgid "Fatal error at saving state"
@@ -274,10 +282,6 @@ msgstr "%s 不是有效的电子邮箱地址"
msgid "Server address required"
msgstr "服务器地址必填"
#: sabnzbd/cfg.py, sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "服务器地址无效。"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
@@ -413,6 +417,7 @@ msgstr "已暂停"
msgid "You must set a maximum bandwidth before you can set a bandwidth limit"
msgstr "设置带宽限制前,您必须设置最大带宽值"
#. Warning message
#: sabnzbd/downloader.py
msgid "Cannot connect to server %s [%s]"
msgstr "无法连接到服务器 %s [%s]"
@@ -436,19 +441,20 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "无法初始化 %s@%s原因为: %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "服务器 %s 连接数过多 [%s]"
msgid "Too many connections to server %s"
msgstr "服务器 %s 连接数过多"
#. Warning message
#: sabnzbd/downloader.py
msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
msgid "Probable account sharing"
msgstr "可能存在账号共享"
#. Error message
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
msgstr "无法登录服务器 %s [%s]"
msgid "Failed login for server %s"
msgstr "无法登录服务器 %s"
#. Error message
#: sabnzbd/downloader.py
@@ -636,6 +642,12 @@ msgid ""
"program:"
msgstr "API Key 不正确,请在第三方程序中使用“配置”->“常规”中的 api key:"
#: sabnzbd/interface.py
msgid ""
"Authentication missing, please enter username/password from Config->General "
"into your 3rd party program:"
msgstr "缺身份认证信息,请在第三方程序中输入“配置”->“常规”中的用户名/密码:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "身份认证失败,请检查用户名/密码。"
@@ -1179,27 +1191,27 @@ msgstr "已中止,无法完成"
msgid "Error importing %s"
msgstr "导入 %s 出错"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr "*重复*"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr "*加密*"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
msgstr "*太大*"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "INCOMPLETE"
msgstr "*不完整*"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "UNWANTED"
msgstr "不需要"
#: sabnzbd/nzbstuff.py
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "WAIT %s sec"
msgstr "*等待* %s 秒"
@@ -2138,6 +2150,10 @@ msgstr "搜索"
msgid "Download Dir"
msgstr "下载目录"
#: sabnzbd/skintext.py
msgid "Sysload"
msgstr "系统负载"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "是否确定要关闭 SABnzbd?"
@@ -2432,10 +2448,6 @@ msgstr ""
msgid "Disk speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "System load"
msgstr ""
#. Do not translate Pystone
#: sabnzbd/skintext.py
msgid "System Performance (Pystone)"
@@ -2707,17 +2719,12 @@ msgid ""
" follow with K,M,G. For example: \"64M\" or \"128M\"</i>"
msgstr "在内存中缓存文章,以减轻硬盘访问压力。<br /><i>单位为字节,可以选择加上 K、M、G 后缀。例如: \"64M\" 或 \"128M\"</i>"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Create backup"
msgid "Download backup"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Create a backup of the configuration file and databases in the Backup "
"Folder.<br>If the Backup Folder is not set, the backup will be created in "
"the Completed Download Folder.<br>Recurring backups can be configured on the"
" Scheduling page."
msgid "Save or restore a backup of the configuration file and databases."
msgstr ""
#: sabnzbd/skintext.py
@@ -2964,10 +2971,6 @@ msgstr "包含要对加密 RAR 文件进行尝试的所有密码的文件。"
msgid "System Folders"
msgstr "系统文件夹"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Administrative Folder"
msgstr "管理文件夹"
@@ -2978,17 +2981,6 @@ msgid ""
"when queue is empty.</i>"
msgstr "队列管理及历史数据库的存放位置。<br /><i>仅当队列为空时可以修改。</i>"
#: sabnzbd/skintext.py
msgid "Backup Folder"
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 ""
#: sabnzbd/skintext.py
msgid "<i>Data will <b>not</b> be moved. Requires SABnzbd restart!</i>"
msgstr "<i>数据<b>不会</b>自动移动。需要重启 SABnzbd 才能生效!</i>"
@@ -3171,6 +3163,16 @@ msgstr "失败时,尝试备用 NZB"
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "部分服务器在下载失败时可提供备用 NZB 文件。"
#: sabnzbd/skintext.py
msgid "Use tags from indexer"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"When sorting, use tags from indexer for title, season, episode, etc. "
"Otherwise all naming is derived from the NZB name."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "启用文件夹重命名"
@@ -3221,10 +3223,6 @@ msgstr ""
msgid "Automatically sort jobs in the queue when a new job is added."
msgstr ""
#: sabnzbd/skintext.py
msgid "The queue will resort every 30 seconds if % downloaded is selected."
msgstr ""
#: sabnzbd/skintext.py
msgid "Propagation delay"
msgstr "传播延迟"
@@ -3256,14 +3254,6 @@ msgstr "替换文件夹名称中的空格"
msgid "Replace spaces with underscores in folder names."
msgstr "将文件夹名称中的空格替换成下划线。"
#: sabnzbd/skintext.py
msgid "Replace underscores in folder name"
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace underscores with dots in folder names."
msgstr ""
#: sabnzbd/skintext.py
msgid "Replace dots in Foldername"
msgstr "替换文件夹名称中的点号"
@@ -4408,6 +4398,14 @@ msgstr "可以选择指定文件名"
msgid "Submit"
msgstr "提交"
#: sabnzbd/skintext.py
msgid "Submitted. Thank you!"
msgstr "已提交。感谢!"
#: sabnzbd/skintext.py
msgid "Nothing selected!"
msgstr "未选择任何内容!"
#: sabnzbd/skintext.py
msgid "Remove all selected files"
msgstr "移除已选文件"
@@ -4496,10 +4494,6 @@ msgid ""
" and the included copy of your settings."
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by % downloaded <small>Most&rarr;Least</small>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "按发布时间排序 <small>最早&rarr;最新</small>"
@@ -4712,6 +4706,10 @@ msgid ""
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
msgstr "未知的 SSL 协议:尝试禁用 SSL 或者连接不同的端口。"
#: sabnzbd/utils/servertests.py
msgid "Invalid server address."
msgstr "服务器地址无效。"
#: sabnzbd/utils/servertests.py
msgid "Server quit during login sequence."
msgstr "登录过程中服务器退出。"

View File

@@ -1,11 +1,11 @@
#
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.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"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Pavel C <quoing_transifex@mess.cz>, 2022
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\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://www.transifex.com/sabnzbd/teams/111101/cs/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://www.transifex.com/sabnzbd/teams/111101/da/)\n"

View File

@@ -1,16 +1,16 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# reloxx13 <reloxx@interia.pl>, 2022
#
# Simon W., 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: reloxx13 <reloxx@interia.pl>, 2022\n"
"Last-Translator: Simon W., 2021\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -44,15 +44,15 @@ msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
"Der Installer unterstützt nur Windows 64-Bit. Benutze die Portable Version "
"für Windows 32-Bit."
"Der Installer unterstützt nur Windows 64-bit. Benutze die Standalone Version"
" für Windows 32-bit."
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
"Der Installer unterstützt nur Windows 8.1 und höher. Benutze die Standalone-"
"Der Installer unterstützt nur Windows 8.1 und höher. Benutze die standalone "
"Version für ältere Windows Versionen."
#: builder/win/NSIS_Installer.nsi

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Ester Molla Aragones <moarages@gmail.com>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\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://www.transifex.com/sabnzbd/teams/111101/es/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://www.transifex.com/sabnzbd/teams/111101/fi/)\n"

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Fred L <88com88@gmail.com>, 2021
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"

View File

@@ -1,14 +1,14 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# ION, 2021
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2021\n"
"Language-Team: Hebrew (https://www.transifex.com/sabnzbd/teams/111101/he/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\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://www.transifex.com/sabnzbd/teams/111101/nb/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2021
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://www.transifex.com/sabnzbd/teams/111101/pl/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://www.transifex.com/sabnzbd/teams/111101/ru/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://www.transifex.com/sabnzbd/teams/111101/sr/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Swedish (https://www.transifex.com/sabnzbd/teams/111101/sv/)\n"

View File

@@ -1,13 +1,13 @@
# SABnzbd Translation Template file NSIS
# Copyright 2007-2023 The SABnzbd-Team
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
#
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-3.6.0RC2\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://www.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"

View File

@@ -1,46 +1,46 @@
# Main requirements
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
sabyenc3==5.4.4
cheetah3==3.2.6.post1
sabyenc3==5.4.3
cheetah3==3.2.6 # pyup: ignore
cffi==1.15.1
pycparser==2.21
feedparser==6.0.10
configobj==5.0.6
cheroot==9.0.0
cheroot==8.6.0
six==1.16.0
cherrypy==18.8.0
jaraco.functools==3.5.2
jaraco.collections==3.8.0
jaraco.text==3.8.1 # Newer version introduces irrelevant extra dependencies
jaraco.classes==3.2.3
jaraco.context==4.2.0
more-itertools==9.0.0
jaraco.functools==3.5.1
jaraco.collections==3.5.2
jaraco.text==3.8.1
jaraco.classes==3.2.2
jaraco.context==4.1.2
more-itertools==8.13.0
zc.lockfile==2.0
python-dateutil==2.8.2
tempora==5.2.0
pytz==2022.7
tempora==5.0.2
pytz==2022.1
sgmllib3k==1.0.0
portend==3.1.0
chardet==5.1.0
chardet==5.0.0
PySocks==1.7.1
puremagic==1.14
guessit==3.5.0
guessit==3.4.3
babelfish==0.6.0
rebulk==3.1.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==39.0.0
cryptography==37.0.4
# 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.7.0
ujson==5.4.0
# Windows system integration
pywin32==305; sys_platform == 'win32'
pywin32==304; sys_platform == 'win32'
# macOS system calls
pyobjc==9.0.1; sys_platform == 'darwin'
pyobjc==8.5; sys_platform == 'darwin'
# Linux notifications
notify2==0.3.1; sys_platform != 'win32' and sys_platform != 'darwin'

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2007-2023 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2007-2022 The SABnzbd-Team <team@sabnzbd.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -196,7 +196,6 @@ CMDLINE = " ".join(['"%s"' % arg for arg in sys.argv])
__INITIALIZED__ = False
__SHUTTING_DOWN__ = False
##############################################################################
# Signal Handler
##############################################################################
@@ -513,9 +512,6 @@ def check_all_tasks():
# Check (and terminate) idle jobs
sabnzbd.NzbQueue.stop_idle_jobs()
# Check that the queue is sorted correctly
sabnzbd.NzbQueue.update_sort_order()
return True

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2007-2023 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2007-2022 The SABnzbd-Team <team@sabnzbd.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -258,28 +258,16 @@ def _api_queue_sort(value, kwargs):
def _api_queue_default(value, kwargs):
"""API: accepts sort, dir, start, limit and search terms"""
"""API: accepts sort, dir, start, limit"""
start = int_conv(kwargs.get("start"))
limit = int_conv(kwargs.get("limit"))
search = kwargs.get("search")
categories = kwargs.get("cat") or kwargs.get("category")
priorities = kwargs.get("priority")
nzo_ids = kwargs.get("nzo_ids")
if categories and not isinstance(categories, list):
categories = categories.split(",")
if priorities and not isinstance(priorities, list):
# Make sure it's an integer
priorities = [int_conv(prio) for prio in priorities.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
),
)
return report(keyword="queue", data=build_queue(start=start, limit=limit, search=search, nzo_ids=nzo_ids))
def _api_translate(name, kwargs):
@@ -486,7 +474,7 @@ def _api_history(name, kwargs):
return report(keyword="history", data=False)
if categories and not isinstance(categories, list):
categories = categories.split(",")
categories = [categories]
if nzo_ids and not isinstance(nzo_ids, list):
nzo_ids = nzo_ids.split(",")
@@ -590,7 +578,7 @@ def _api_addurl(name, kwargs):
# Reporting a list of NZO's, for compatibility with other add-methods
return report(keyword="", data={"status": True, "nzo_ids": [nzo_id]})
else:
logging.info("API-call addurl: no URLs received")
logging.info("API-call addurl: no URLs recieved")
return report(_MSG_NO_VALUE)
@@ -680,15 +668,19 @@ def _api_version(name, kwargs):
def _api_auth(name, kwargs):
key = kwargs.get("key", "")
if not key:
auth = "apikey"
else:
auth = "None"
if not cfg.disable_key():
auth = "badkey"
if key == cfg.nzb_key():
auth = "nzbkey"
if key == cfg.api_key():
key = kwargs.get("key", "")
if not key:
auth = "apikey"
else:
if key == cfg.nzb_key():
auth = "nzbkey"
if key == cfg.api_key():
auth = "apikey"
elif cfg.username() and cfg.password():
auth = "login"
return report(keyword="auth", data=auth)
@@ -906,11 +898,6 @@ def _api_config_test_server(kwargs):
return report(data={"result": result, "message": msg})
def _api_config_create_backup(kwargs):
backup_file = config.create_config_backup()
return report(data={"result": bool(backup_file), "message": backup_file})
def _api_config_undefined(kwargs):
return report(_MSG_NOT_IMPLEMENTED)
@@ -1024,7 +1011,6 @@ _api_config_table = {
"set_nzbkey": (_api_config_set_nzbkey, 3),
"regenerate_certs": (_api_config_regenerate_certs, 3),
"test_server": (_api_config_test_server, 3),
"create_backup": (_api_config_create_backup, 3),
}
@@ -1098,6 +1084,9 @@ class XmlOutputFactory:
In Three tiered lists hard-coded name of "slot": <tier1><slot><tier2> </tier2></slot></tier1>
"""
def __init__(self):
self.__text = ""
def _tuple(self, keyw, lst):
text = []
for item in lst:
@@ -1246,8 +1235,7 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
info["delayed_decoder"] = sabnzbd.BPSMeter.delayed_decoder
info["delayed_assembler"] = sabnzbd.BPSMeter.delayed_assembler
# Dashboard: Speed and load of System
info["loadavg"] = loadavg()
# Dashboard: Speed of System
info["pystone"] = sabnzbd.PYSTONE_SCORE
# Dashboard: Speed of Download directory:
@@ -1311,14 +1299,7 @@ def build_status(calculate_performance: bool = False, skip_dashboard: bool = Fal
return info
def build_queue(
start: int = 0,
limit: int = 0,
search: Optional[str] = None,
categories: Optional[List[str]] = None,
priorities: Optional[List[str]] = None,
nzo_ids: Optional[List[str]] = None,
):
def build_queue(start: int = 0, limit: int = 0, search: Optional[str] = None, nzo_ids: Optional[List[str]] = None):
info = build_header(for_template=False)
(
queue_bytes_total,
@@ -1327,9 +1308,7 @@ def build_queue(
nzo_list,
queue_fullsize,
nzos_matched,
) = sabnzbd.NzbQueue.queue_info(
search=search, categories=categories, priorities=priorities, nzo_ids=nzo_ids, start=start, limit=limit
)
) = sabnzbd.NzbQueue.queue_info(search=search, nzo_ids=nzo_ids, start=start, limit=limit)
info["kbpersec"] = "%.2f" % (sabnzbd.BPSMeter.bps / KIBI)
info["speed"] = to_units(sabnzbd.BPSMeter.bps)
@@ -1341,7 +1320,7 @@ def build_queue(
info["noofslots"] = nzos_matched
info["start"] = start
info["limit"] = limit
info["finish"] = start + limit
info["finish"] = info["start"] + info["limit"]
if sabnzbd.Downloader.paused or sabnzbd.Downloader.paused_for_postproc:
status = Status.PAUSED
@@ -1351,6 +1330,8 @@ def build_queue(
status = Status.IDLE
info["status"] = status
info["timeleft"] = calc_timeleft(queue_bytes_left, sabnzbd.BPSMeter.bps)
info["scripts"] = list_scripts()
info["categories"] = list_cats()
n = start
running_bytes = bytes_left_previous_page
@@ -1543,6 +1524,15 @@ def clear_trans_cache():
def build_header(webdir: str = "", for_template: bool = True, trans_functions: bool = True) -> Dict:
"""Build the basic header"""
speed_limit = sabnzbd.Downloader.get_limit()
if speed_limit <= 0:
speed_limit = 100
speed_limit_abs = sabnzbd.Downloader.get_limit_abs()
if speed_limit_abs <= 0:
speed_limit_abs = ""
diskspace_info = diskspace()
header = {}
# We don't output everything for API
@@ -1579,15 +1569,15 @@ def build_header(webdir: str = "", for_template: bool = True, trans_functions: b
header["pause_int"] = sabnzbd.Scheduler.pause_int()
header["paused_all"] = sabnzbd.PAUSED_ALL
diskspace_info = diskspace()
header["diskspace1"] = "%.2f" % diskspace_info["download_dir"][1]
header["diskspace2"] = "%.2f" % diskspace_info["complete_dir"][1]
header["diskspace1_norm"] = to_units(diskspace_info["download_dir"][1] * GIGI)
header["diskspace2_norm"] = to_units(diskspace_info["complete_dir"][1] * GIGI)
header["diskspacetotal1"] = "%.2f" % diskspace_info["download_dir"][0]
header["diskspacetotal2"] = "%.2f" % diskspace_info["complete_dir"][0]
header["speedlimit"] = str(sabnzbd.Downloader.bandwidth_perc)
header["speedlimit_abs"] = str(sabnzbd.Downloader.bandwidth_limit)
header["loadavg"] = loadavg()
header["speedlimit"] = "{1:0.{0}f}".format(int(speed_limit % 1 > 0), speed_limit)
header["speedlimit_abs"] = "%s" % speed_limit_abs
header["have_warnings"] = str(sabnzbd.GUIHANDLER.count())
header["finishaction"] = sabnzbd.QUEUECOMPLETE

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