mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-05 14:09:22 -05:00
Compare commits
323 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
16618b3af2 | ||
|
|
0e5c0f664f | ||
|
|
7be9281431 | ||
|
|
ee0327fac1 | ||
|
|
9930de3e7f | ||
|
|
e8503e89c6 | ||
|
|
1d9ed419eb | ||
|
|
0207652e3e | ||
|
|
0f1e99c5cb | ||
|
|
f134bc7efb | ||
|
|
dcd7c7180e | ||
|
|
fbbfcd075b | ||
|
|
f42d2e4140 | ||
|
|
88882cebbc | ||
|
|
17a979675c | ||
|
|
4642850c79 | ||
|
|
65278c4489 | ||
|
|
3a4a925ab0 | ||
|
|
6ef5d41c25 | ||
|
|
b9b9f46fbe | ||
|
|
8d014e579d | ||
|
|
f2fc9f10f9 | ||
|
|
f131155fd8 | ||
|
|
691e24a1d8 | ||
|
|
794a6f4454 | ||
|
|
41bf8525cf | ||
|
|
6ebf486c09 | ||
|
|
899ae94fcf | ||
|
|
d3cd5019d9 | ||
|
|
1e4719558f | ||
|
|
29ab83b9c0 | ||
|
|
4b4d170ce1 | ||
|
|
8b0a12e0ba | ||
|
|
430318ead7 | ||
|
|
32f6ec63f2 | ||
|
|
a3181c8f76 | ||
|
|
412d169f58 | ||
|
|
d1c2e6e0dd | ||
|
|
4f9ac56de0 | ||
|
|
9641dc82f9 | ||
|
|
e68413b73c | ||
|
|
a7386a25bd | ||
|
|
53f512e864 | ||
|
|
283e643606 | ||
|
|
fc1aa2db83 | ||
|
|
0fc1e02519 | ||
|
|
67581bf3f6 | ||
|
|
b7e4ca4d87 | ||
|
|
0594fc60c0 | ||
|
|
5a6c51219c | ||
|
|
815542bf25 | ||
|
|
0c5bd817a9 | ||
|
|
9b8a317351 | ||
|
|
7a9d8e021a | ||
|
|
297ec1b8a1 | ||
|
|
f04f6684e0 | ||
|
|
91870c6712 | ||
|
|
9c48fcf5f8 | ||
|
|
ee41cfc618 | ||
|
|
ae30f89a2d | ||
|
|
dfcce3a974 | ||
|
|
59423df0cb | ||
|
|
ee08c486bc | ||
|
|
a56c522068 | ||
|
|
6d40eba496 | ||
|
|
c772df9d65 | ||
|
|
2a73f26f2a | ||
|
|
a750ade5a4 | ||
|
|
06b37c02f1 | ||
|
|
d129607d5c | ||
|
|
e6d812bbd8 | ||
|
|
9cc921098e | ||
|
|
38213c1a91 | ||
|
|
44d74924e6 | ||
|
|
5eaf0c12d3 | ||
|
|
7c2b433f7b | ||
|
|
30e692cefe | ||
|
|
396fb42b11 | ||
|
|
c8d882712e | ||
|
|
9667aad1cb | ||
|
|
4471303aae | ||
|
|
fe2ec8cc94 | ||
|
|
25440c6fec | ||
|
|
8c2d7243cc | ||
|
|
49e67a0bef | ||
|
|
1dfa937bff | ||
|
|
a3c6bbc1b5 | ||
|
|
241e8b6842 | ||
|
|
8660faaeb7 | ||
|
|
687deab6bc | ||
|
|
17ec3cbf4b | ||
|
|
f75609c98c | ||
|
|
5bd65cc06a | ||
|
|
e2177577be | ||
|
|
a695744c7c | ||
|
|
c2a89731c9 | ||
|
|
f0bfb08c2e | ||
|
|
764f7df6a7 | ||
|
|
c310822945 | ||
|
|
4cedd051b6 | ||
|
|
d36fe1ab12 | ||
|
|
9a14125c6b | ||
|
|
1a4ba51dec | ||
|
|
826fb3f110 | ||
|
|
9f42eb3ad7 | ||
|
|
fbbc333221 | ||
|
|
e62792b0da | ||
|
|
dbc435c4e1 | ||
|
|
ada2f2498e | ||
|
|
c736446872 | ||
|
|
a1e7d5b36f | ||
|
|
24fd5a5e0b | ||
|
|
bc4557432a | ||
|
|
5df4a76367 | ||
|
|
48d566fd98 | ||
|
|
f9cd328b3a | ||
|
|
a24c13d8ce | ||
|
|
8b5494d0a6 | ||
|
|
7f0e8f5591 | ||
|
|
14f4e09676 | ||
|
|
c5aa61e191 | ||
|
|
c50efd7efd | ||
|
|
c23c239ce9 | ||
|
|
5a1b92f060 | ||
|
|
b7375b5a8e | ||
|
|
c42b5b2bb6 | ||
|
|
809783cd53 | ||
|
|
b5c5a18216 | ||
|
|
49b4dca12c | ||
|
|
37b03e6e37 | ||
|
|
70b92b5961 | ||
|
|
f31da2a8e6 | ||
|
|
c68ff15f38 | ||
|
|
bd1fe2b1cd | ||
|
|
a1f3914054 | ||
|
|
2d9dc48076 | ||
|
|
c80c120153 | ||
|
|
b75c23772e | ||
|
|
d9a94bc59c | ||
|
|
e446ab4762 | ||
|
|
2a656d437e | ||
|
|
7473cd2264 | ||
|
|
9fb1c0fbbb | ||
|
|
4ae0e75dc9 | ||
|
|
2632ce537a | ||
|
|
4d79261851 | ||
|
|
fadae5e33e | ||
|
|
7f702b7025 | ||
|
|
db255a8b7e | ||
|
|
47b8d1de39 | ||
|
|
01ea1d2910 | ||
|
|
f5f8aa985e | ||
|
|
1a848cf5fe | ||
|
|
b748b05fbd | ||
|
|
9f2a9c32c0 | ||
|
|
92d0b0163a | ||
|
|
c50e2a4026 | ||
|
|
69ffa159c7 | ||
|
|
81089fc20a | ||
|
|
3d09f72c90 | ||
|
|
ef7d84b24d | ||
|
|
9b71f8ca4b | ||
|
|
04c3fc77cb | ||
|
|
c6cc6f4537 | ||
|
|
f31a4440f1 | ||
|
|
84b1e60803 | ||
|
|
a434a5f25d | ||
|
|
09e844a63f | ||
|
|
c55e114131 | ||
|
|
575fbc06aa | ||
|
|
19376805de | ||
|
|
e8d6eebb04 | ||
|
|
864c5160c0 | ||
|
|
99b5a00c12 | ||
|
|
5ea6a31bc2 | ||
|
|
2714ffe04d | ||
|
|
85ee1f07d7 | ||
|
|
e58b4394e0 | ||
|
|
c38eac0e46 | ||
|
|
fccc57fd52 | ||
|
|
1e91a57bf1 | ||
|
|
39cee52a7e | ||
|
|
72068f939d | ||
|
|
fea309da11 | ||
|
|
d867881162 | ||
|
|
096d0d3cad | ||
|
|
af9a7d2fb3 | ||
|
|
259584b24f | ||
|
|
38f61f64c7 | ||
|
|
3e9bfba4d6 | ||
|
|
be26c7f080 | ||
|
|
2472ab0121 | ||
|
|
6b8befdc67 | ||
|
|
423e4e429b | ||
|
|
00421717b8 | ||
|
|
53aba47915 | ||
|
|
87f90b004f | ||
|
|
0b96afb055 | ||
|
|
8e99ebe5ef | ||
|
|
6e06d954fe | ||
|
|
497abb83da | ||
|
|
7ffebd97b9 | ||
|
|
55a5855720 | ||
|
|
adc828dc8a | ||
|
|
ae96d93f94 | ||
|
|
8522c40c8f | ||
|
|
23f86e95f1 | ||
|
|
eed2045189 | ||
|
|
6c5c9e0147 | ||
|
|
baa9ffb948 | ||
|
|
217785bf0f | ||
|
|
92541fec23 | ||
|
|
b1f6448ae0 | ||
|
|
fc72cf0451 | ||
|
|
c76d931b01 | ||
|
|
02ef37d381 | ||
|
|
329b420c0d | ||
|
|
10049d0c1f | ||
|
|
1e602d86bd | ||
|
|
f22ab0068e | ||
|
|
3700e45e7f | ||
|
|
36196a176e | ||
|
|
72907de5ef | ||
|
|
9a7385789e | ||
|
|
d13893d1c7 | ||
|
|
1a8031c75d | ||
|
|
9d10261a9f | ||
|
|
d0a7ff00fc | ||
|
|
b80d0ee458 | ||
|
|
53069492b1 | ||
|
|
3e2dad4a7e | ||
|
|
fca1e5355e | ||
|
|
47c0fd706f | ||
|
|
4c4ffb2f54 | ||
|
|
6aef50dc5d | ||
|
|
ade477c6e5 | ||
|
|
719b966709 | ||
|
|
2085c04717 | ||
|
|
12a4e34075 | ||
|
|
13dd81ebbd | ||
|
|
a9492eb25f | ||
|
|
4dabbb7590 | ||
|
|
64b78bddd6 | ||
|
|
5a02554380 | ||
|
|
c312f3917f | ||
|
|
30654af261 | ||
|
|
29aa329038 | ||
|
|
16b6e3caa7 | ||
|
|
3de4c99a8a | ||
|
|
cfbb0d3bf6 | ||
|
|
980aa19a75 | ||
|
|
388f77ea52 | ||
|
|
139c2f3c14 | ||
|
|
dab544bc93 | ||
|
|
0070fce88d | ||
|
|
c27ecfe339 | ||
|
|
746de90700 | ||
|
|
c580f1aff7 | ||
|
|
93b429af8b | ||
|
|
f0e2e783a8 | ||
|
|
fb4b57e056 | ||
|
|
03638365ea | ||
|
|
157cb1c83d | ||
|
|
e51f11c2b1 | ||
|
|
1ad0961dd8 | ||
|
|
46ff7dd4e2 | ||
|
|
8b067df914 | ||
|
|
ef43b13272 | ||
|
|
e8e9974224 | ||
|
|
feebbb9f04 | ||
|
|
bc4f06dd1d | ||
|
|
971e4fc909 | ||
|
|
51cc765949 | ||
|
|
19c6a4fffa | ||
|
|
105ac32d2f | ||
|
|
57550675d2 | ||
|
|
e674abc5c0 | ||
|
|
f965c96f51 | ||
|
|
c76b8ed9e0 | ||
|
|
4fbd0d8a7b | ||
|
|
2186c0fff6 | ||
|
|
1adca9a9c1 | ||
|
|
9408353f2b | ||
|
|
84f4d453d2 | ||
|
|
d10209f2a1 | ||
|
|
3ae149c72f | ||
|
|
47385acc3b | ||
|
|
814eeaa900 | ||
|
|
5f2ea13aad | ||
|
|
41ca217931 | ||
|
|
b57d36e8dd | ||
|
|
9a4be70734 | ||
|
|
a8443595a6 | ||
|
|
fd0a70ac58 | ||
|
|
8a8685c968 | ||
|
|
9e6cb8da8e | ||
|
|
054ec54d51 | ||
|
|
272ce773cb | ||
|
|
050b925f7b | ||
|
|
0087940898 | ||
|
|
e323c014f9 | ||
|
|
cc465c7554 | ||
|
|
14cb37564f | ||
|
|
094db56c3b | ||
|
|
aabb709b8b | ||
|
|
0833dd2db9 | ||
|
|
cd3f912be4 | ||
|
|
665c516db6 | ||
|
|
b670da9fa0 | ||
|
|
80bee9bffe | ||
|
|
d85a70e8ad | ||
|
|
8f21533e76 | ||
|
|
89996482a1 | ||
|
|
03c10dce91 | ||
|
|
bd5331be05 | ||
|
|
46e1645289 | ||
|
|
4ce3965747 | ||
|
|
9d4af19db3 | ||
|
|
48e034f4be | ||
|
|
f8959baa2f | ||
|
|
8ed5997eae | ||
|
|
daf9f50ac8 | ||
|
|
6b11013c1a |
3
.github/workflows/black.yml
vendored
3
.github/workflows/black.yml
vendored
@@ -7,13 +7,14 @@ jobs:
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Black Code Formatter
|
||||
uses: lgeiger/black-action@v1.0.1
|
||||
uses: lgeiger/black-action@master
|
||||
with:
|
||||
args: >
|
||||
SABnzbd.py
|
||||
sabnzbd
|
||||
scripts
|
||||
tools
|
||||
builder
|
||||
tests
|
||||
--line-length=120
|
||||
--target-version=py36
|
||||
|
||||
114
.github/workflows/build_release.yml
vendored
Normal file
114
.github/workflows/build_release.yml
vendored
Normal file
@@ -0,0 +1,114 @@
|
||||
name: Build binaries and source distribution
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
build_windows:
|
||||
name: Build Windows binary
|
||||
runs-on: windows-latest
|
||||
env:
|
||||
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python 3.9 (64bit)
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.9
|
||||
architecture: x64
|
||||
- name: Install Python dependencies (64bit)
|
||||
run: |
|
||||
python --version
|
||||
pip install --upgrade pip wheel
|
||||
pip install --upgrade -r requirements.txt
|
||||
pip install --upgrade -r builder/requirements.txt
|
||||
- name: Build source distribution
|
||||
run: python builder/package.py source
|
||||
- name: Upload source distribution
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
path: "*-src.tar.gz"
|
||||
name: Source distribution
|
||||
- name: Build Windows standalone binary and installer (64bit)
|
||||
run: python builder/package.py installer
|
||||
- name: Upload Windows standalone binary (64bit)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
path: "*-win64-bin.zip"
|
||||
name: Windows Windows standalone binary (64bit)
|
||||
- name: Upload Windows installer (64bit)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
path: "*-win-setup.exe"
|
||||
name: Windows installer
|
||||
- name: Set up Python 3.8 (32bit and legacy)
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: 3.8
|
||||
architecture: x86
|
||||
- name: Install Python dependencies (32bit and legacy)
|
||||
run: |
|
||||
python --version
|
||||
pip install --upgrade pip wheel
|
||||
pip install --upgrade -r requirements.txt
|
||||
pip install --upgrade -r builder/requirements.txt
|
||||
- name: Build Windows standalone binary (32bit and legacy)
|
||||
run: python builder/package.py binary
|
||||
- name: Upload Windows standalone binary (32bit and legacy)
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
path: "*-win32-bin.zip"
|
||||
name: Windows Windows standalone binary (32bit and legacy)
|
||||
- name: Prepare official release
|
||||
if: env.AUTOMATION_GITHUB_TOKEN && !startsWith(github.ref, 'refs/tags/')
|
||||
run: python builder/package.py release
|
||||
|
||||
build_macos:
|
||||
name: Build macOS binary
|
||||
runs-on: macos-latest
|
||||
env:
|
||||
SIGNING_AUTH: ${{ secrets.SIGNING_AUTH }}
|
||||
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_USER }}
|
||||
NOTARIZATION_PASS: ${{ secrets.NOTARIZATION_PASS }}
|
||||
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
|
||||
# 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.9.2
|
||||
MACOSX_DEPLOYMENT_TARGET: 10.9
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Cache Python download
|
||||
id: cache-python-download
|
||||
uses: actions/cache@v2
|
||||
with:
|
||||
path: ~/python.pkg
|
||||
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}-macosx10.9.pkg -o ~/python.pkg
|
||||
- name: Install Python
|
||||
run: sudo installer -pkg ~/python.pkg -target /
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
python3 --version
|
||||
pip3 install --upgrade pip wheel
|
||||
pip3 install --upgrade -r requirements.txt
|
||||
pip3 install --upgrade -r builder/requirements.txt
|
||||
- name: Import macOS codesign certificates
|
||||
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 macOS binary
|
||||
run: |
|
||||
python3 builder/package.py app
|
||||
python3 builder/make_dmg.py
|
||||
- name: Upload macOS binary
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
path: "*-osx.dmg"
|
||||
name: macOS binary (not notarized)
|
||||
- name: Prepare official release
|
||||
if: env.AUTOMATION_GITHUB_TOKEN && !startsWith(github.ref, 'refs/tags/')
|
||||
run: python3 builder/package.py release
|
||||
39
.github/workflows/integration_testing.yml
vendored
Normal file
39
.github/workflows/integration_testing.yml
vendored
Normal file
@@ -0,0 +1,39 @@
|
||||
name: CI Tests
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
jobs:
|
||||
test:
|
||||
name: Test ${{ matrix.name }} - Python ${{ matrix.python-version }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
matrix:
|
||||
python-version: [3.6, 3.7, 3.8, 3.9]
|
||||
os: [ubuntu-20.04]
|
||||
include:
|
||||
- name: macOS
|
||||
os: macos-latest
|
||||
python-version: 3.9
|
||||
- name: Windows
|
||||
os: windows-latest
|
||||
python-version: 3.9
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v2
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v2
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
- name: Install system dependencies
|
||||
if: runner.os == 'Linux'
|
||||
run: sudo apt-get install unrar p7zip-full par2 chromium-chromedriver
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
python --version
|
||||
pip install --upgrade pip
|
||||
pip install --upgrade -r requirements.txt
|
||||
pip install --upgrade -r tests/requirements.txt
|
||||
- name: Test SABnzbd
|
||||
run: pytest -s
|
||||
|
||||
|
||||
4
.github/workflows/translations.yml
vendored
4
.github/workflows/translations.yml
vendored
@@ -9,7 +9,7 @@ jobs:
|
||||
translations:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@master
|
||||
- uses: actions/checkout@v2
|
||||
- name: Generate translatable texts
|
||||
run: |
|
||||
python3 tools/extract_pot.py
|
||||
@@ -25,7 +25,7 @@ jobs:
|
||||
env:
|
||||
TX_TOKEN: ${{ secrets.TX_TOKEN }}
|
||||
- name: Push translatable and translated texts back to repo
|
||||
uses: stefanzweifel/git-auto-commit-action@master
|
||||
uses: stefanzweifel/git-auto-commit-action@v4.5.1
|
||||
with:
|
||||
commit_message: Update translatable texts
|
||||
commit_user_name: SABnzbd Automation
|
||||
|
||||
@@ -1,7 +0,0 @@
|
||||
path_classifiers:
|
||||
oldinterfaces:
|
||||
- interfaces/smpl
|
||||
- interfaces/Plush
|
||||
library:
|
||||
- "*knockout*"
|
||||
- "**/*min*"
|
||||
45
.travis.yml
45
.travis.yml
@@ -1,45 +0,0 @@
|
||||
matrix:
|
||||
include:
|
||||
# On Linux we test all supported Python versions
|
||||
# On macOS we only test the semi-recent version that is included
|
||||
- os: linux
|
||||
language: python
|
||||
python: "3.6"
|
||||
- os: linux
|
||||
language: python
|
||||
python: "3.7"
|
||||
- os: linux
|
||||
language: python
|
||||
python: "3.8"
|
||||
- os: linux
|
||||
language: python
|
||||
python: "3.9-dev"
|
||||
- os: osx
|
||||
addons:
|
||||
chrome: stable
|
||||
env:
|
||||
- HOMEBREW_NO_AUTO_UPDATE=1
|
||||
|
||||
install:
|
||||
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
|
||||
LATEST_CHROMEDRIVER=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE) &&
|
||||
wget --no-verbose -O /tmp/chromedriver.zip https://chromedriver.storage.googleapis.com/$LATEST_CHROMEDRIVER/chromedriver_mac64.zip &&
|
||||
sudo unzip /tmp/chromedriver.zip chromedriver -d /usr/local/bin/;
|
||||
else
|
||||
sudo add-apt-repository ppa:jcfp -y;
|
||||
sudo apt-get update -q;
|
||||
sudo apt-get install unrar p7zip-full par2 chromium-chromedriver -y;
|
||||
ln -s /usr/lib/chromium-browser/chromedriver ~/bin/chromedriver;
|
||||
fi;
|
||||
- python3 --version
|
||||
- python3 -m pip install --upgrade pip wheel
|
||||
- python3 -m pip install --upgrade -r requirements.txt
|
||||
- python3 -m pip install --upgrade -r tests/requirements.txt
|
||||
|
||||
script:
|
||||
- python3 -m pytest -s
|
||||
|
||||
notifications:
|
||||
email:
|
||||
on_success: never
|
||||
on_failure: change
|
||||
@@ -1,5 +1,5 @@
|
||||
|
||||
(c) Copyright 2007-2020 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2021 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
|
||||
The SABnzbd-team is:
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
0) LICENSE
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
(c) Copyright 2007-2020 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2021 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
|
||||
|
||||
@@ -14,13 +14,13 @@
|
||||
For these the server blocking method is not very favourable.
|
||||
There is an INI-only option that will limit blocks to 1 minute.
|
||||
no_penalties = 1
|
||||
See: https://sabnzbd.org/wiki/configuration/3.1/special
|
||||
See: https://sabnzbd.org/wiki/configuration/3.2/special
|
||||
|
||||
- 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.
|
||||
See: https://sabnzbd.org/wiki/configuration/3.1/special
|
||||
See: https://sabnzbd.org/wiki/configuration/3.2/special
|
||||
|
||||
- On macOS you may encounter downloaded files with foreign characters.
|
||||
The par2 repair may fail when the files were created on a Windows system.
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
(c) Copyright 2007-2020 by "The SABnzbd-team" <team@sabnzbd.org>
|
||||
(c) Copyright 2007-2021 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
|
||||
|
||||
4
PKG-INFO
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 3.2.0-develop
|
||||
Summary: SABnzbd-3.2.0-develop
|
||||
Version: 3.2.0
|
||||
Summary: SABnzbd-3.2.0
|
||||
Home-page: https://sabnzbd.org
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
SABnzbd - The automated Usenet download tool
|
||||
============================================
|
||||
|
||||
[](https://travis-ci.org/sabnzbd/sabnzbd)
|
||||
[](https://ci.appveyor.com/project/Safihre/sabnzbd)
|
||||
[](https://snapcraft.io/sabnzbd)
|
||||

|
||||

|
||||
[](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
|
||||
|
||||
|
||||
SABnzbd is an Open Source Binary Newsreader written in Python.
|
||||
|
||||
It's totally free, easy to use, and works practically everywhere.
|
||||
|
||||
95
README.mkd
95
README.mkd
@@ -1,38 +1,69 @@
|
||||
Release Notes - SABnzbd 3.1.0 Release Candidate 1
|
||||
Release Notes - SABnzbd 3.2.0
|
||||
=========================================================
|
||||
|
||||
## Changes and bugfixes since 3.1.0 Beta 2
|
||||
- Deobfuscate final filenames can now be used when job folders are disabled.
|
||||
- Deobfuscate final filenames will ignore blu-ray disc files.
|
||||
- Clear error if Complete Folder is set as a subfolder of the Temporary Folder.
|
||||
- Filtering of history by category would not filter jobs in post-processing.
|
||||
## Changes since 3.1.1
|
||||
- Python 3.6 is the minimum required version.
|
||||
- The Windows installer can only be used on 64bit Windows 8.1 and
|
||||
above. For 32bit systems or older Windows versions, the
|
||||
standalone 32bit legacy version can be used.
|
||||
- Post-processing can be aborted at any stage, including scripts.
|
||||
- Improvements in the downloader to reduce CPU-load.
|
||||
- Increased garbage collection rate to reduce memory usage.
|
||||
- Custom date ranges for server graphs can be selected.
|
||||
- Keep track of article fetching success-rate of each server.
|
||||
- Added option to add download quota warning for each server.
|
||||
- Added option to add expiration warning for each server.
|
||||
- Added `Minimum Free Space for Completed Download Folder` option.
|
||||
- Added option to `Auto resume` for both `Minimum Free Space` settings.
|
||||
- Added `Auto` option for Glitter that enables `Night` style
|
||||
based on system settings. Default for new installations.
|
||||
- Multiple additional Queue and History columns can be added.
|
||||
- Added option to always use full-screen width.
|
||||
- Additional interface settings can be stored server-side.
|
||||
- Right-to-Left support (Hebrew) for Glitter and Config.
|
||||
- Using SSDP, SABnzbd instances are now listed in `Network` on Windows.
|
||||
- Improvements to parsing of job name and filenames listed in the NZB.
|
||||
- RSS titles can be edited.
|
||||
- Prospective par2 will add blocks from all sets in a job.
|
||||
- Sanitize all filenames to a maximum of 245 characters.
|
||||
- Show commit hash when running from `git` sources.
|
||||
- Notify through Notifications if a new version is available.
|
||||
- Program shutdown time reduced to almost instant.
|
||||
- Added `10 GB` test download.
|
||||
- IPv6 is no longer preferred in HappyEyeballs address selection.
|
||||
- API-calls `queue` and `history` can now be filtered by `nzo_id`.
|
||||
- Windows: `Temporary Download` job folders no longer have a maximum length.
|
||||
- Windows/macOS: Update UnRar to 6.0.0 and MultiPar to 1.3.1.3.
|
||||
|
||||
## Changes since 3.0.2
|
||||
- Added option to automatically deobfuscate final filenames: after unpacking,
|
||||
detect and rename obfuscated or meaningless filenames to the job name,
|
||||
similar to the Deobfuscate.py post-processing script.
|
||||
- Switched to Transifex as our translations platform:
|
||||
Help us translate SABnzbd in your language! Add untranslated texts or
|
||||
improved existing translations here: https://sabnzbd.org/wiki/translate
|
||||
- Redesigned job availability-check to be more efficient and reliable.
|
||||
- Skip repair on Retry if all sets were previously successfully verified.
|
||||
- Passwords included in the filename no longer have to be at the end.
|
||||
- Restore limit on length of foldernames (`max_foldername_length`).
|
||||
- Added password input box on the Add NZB screen.
|
||||
- Show warning that Pyton 3.5 support will be dropped after 3.1.0.
|
||||
- Windows/macOS: update UnRar to 5.91 and MultiPar to 1.3.1.0.
|
||||
- Windows: retry `Access Denied` when renaming files on Windows.
|
||||
## Bugfixes since 3.1.1
|
||||
- Memory could leak after jobs were removed from the queue.
|
||||
- The active browser URL is used during the wizard.
|
||||
- Repairing or Retrying jobs could result in a crash.
|
||||
- API-call `reset_quota` returned nothing.
|
||||
- New categories were not always forced to lowercase.
|
||||
- Broken downloads could result in a crash during RAR-renaming
|
||||
- Improved obfuscation detection for `Deobfuscate final filenames`.
|
||||
- Keep original priority of duplicate jobs.
|
||||
- Increase the maximum number of connections per server to `1000`.
|
||||
- Update encryption check to handle partially assembled files.
|
||||
- Don't activate Windows notifications when running as a service.
|
||||
- Command-line option `--console` did not work.
|
||||
- Crash in API-call to delete history items for nonexistent `nzo_id`.
|
||||
- Prevent repetition of unwanted extension warnings.
|
||||
- Correct notification category for failed URL fetches.
|
||||
- Improvements to the `Add NZB` modal window.
|
||||
- Sort script drop-down list alphabetically.
|
||||
- Default Bandwidth percentage was not set to `100`.
|
||||
- Direct Unpack stability fixes.
|
||||
- macOS: Program shutdown could fail.
|
||||
- macOS: Tray text was misaligned on macOS 11 (Big Sur).
|
||||
- Windows: Improved handling of some MultiPar output.
|
||||
- Windows: Program restart failed.
|
||||
|
||||
## Bugfixes since 3.0.2
|
||||
- Assembler crashes could occur due to race condition in `ArticleCache`.
|
||||
- On HTTP-redirects the scheme/hostname/port were ignored when behind a proxy.
|
||||
- Strip slash of the end of `url_base` as it could break other code.
|
||||
- Unpacking with a relative folder set for a category could fail.
|
||||
- Paused priority of pre-queue script was ignored.
|
||||
- Duplicate Detection did not check filenames in History.
|
||||
- Downloaded bytes could show as exceeding the total bytes of a job.
|
||||
- Windows: non-Latin languages were displayed incorrectly in the installer.
|
||||
- Windows: could fail to create folders on some network shares.
|
||||
## Upgrade notices
|
||||
- The download statistics file `totals10.sab` is updated in this
|
||||
version. If you downgrade to 3.1.x or lower, detailed download
|
||||
statistics will be lost.
|
||||
|
||||
## Known problems and solutions
|
||||
- Read the file "ISSUES.txt"
|
||||
@@ -44,4 +75,4 @@ Release Notes - SABnzbd 3.1.0 Release Candidate 1
|
||||
that automatically verify, repair, extract and clean up posts downloaded
|
||||
from Usenet.
|
||||
|
||||
(c) Copyright 2007-2020 by "The SABnzbd-team" \<team@sabnzbd.org\>
|
||||
(c) Copyright 2007-2021 by "The SABnzbd-team" \<team@sabnzbd.org\>
|
||||
|
||||
218
SABnzbd.py
218
SABnzbd.py
@@ -1,5 +1,5 @@
|
||||
#!/usr/bin/python3 -OO
|
||||
# Copyright 2007-2020 The SABnzbd-Team <team@sabnzbd.org>
|
||||
# Copyright 2007-2021 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
|
||||
@@ -34,6 +34,8 @@ import subprocess
|
||||
import ssl
|
||||
import time
|
||||
import re
|
||||
import gc
|
||||
from typing import List, Dict, Any
|
||||
|
||||
try:
|
||||
import Cheetah
|
||||
@@ -66,15 +68,19 @@ from sabnzbd.misc import (
|
||||
get_serv_parms,
|
||||
get_from_url,
|
||||
upload_file_to_sabnzbd,
|
||||
is_ipv4_addr,
|
||||
is_localhost,
|
||||
is_lan_addr,
|
||||
)
|
||||
from sabnzbd.filesystem import get_ext, real_path, long_path, globber_full, remove_file
|
||||
from sabnzbd.panic import panic_tmpl, panic_port, panic_host, panic, launch_a_browser
|
||||
import sabnzbd.scheduler as scheduler
|
||||
import sabnzbd.config as config
|
||||
import sabnzbd.cfg
|
||||
import sabnzbd.downloader
|
||||
import sabnzbd.notifier as notifier
|
||||
import sabnzbd.zconfig
|
||||
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6
|
||||
import sabnzbd.utils.ssdp as ssdp
|
||||
|
||||
try:
|
||||
import win32api
|
||||
@@ -120,28 +126,31 @@ class GUIHandler(logging.Handler):
|
||||
def __init__(self, size):
|
||||
""" Initializes the handler """
|
||||
logging.Handler.__init__(self)
|
||||
self.size = size
|
||||
self.store = []
|
||||
self._size: int = size
|
||||
self.store: List[Dict[str, Any]] = []
|
||||
|
||||
def emit(self, record):
|
||||
def emit(self, record: logging.LogRecord):
|
||||
""" Emit a record by adding it to our private queue """
|
||||
if record.levelname == "WARNING":
|
||||
sabnzbd.LAST_WARNING = record.msg % record.args
|
||||
else:
|
||||
sabnzbd.LAST_ERROR = record.msg % record.args
|
||||
|
||||
if len(self.store) >= self.size:
|
||||
# Loose the oldest record
|
||||
self.store.pop(0)
|
||||
# If % is part of the msg, this could fail
|
||||
try:
|
||||
# Append traceback, if available
|
||||
warning = {"type": record.levelname, "text": record.msg % record.args, "time": int(time.time())}
|
||||
if record.exc_info:
|
||||
warning["text"] = "%s\n%s" % (warning["text"], traceback.format_exc())
|
||||
self.store.append(warning)
|
||||
except UnicodeDecodeError:
|
||||
# Catch elusive Unicode conversion problems
|
||||
pass
|
||||
parsed_msg = record.msg % record.args
|
||||
except TypeError:
|
||||
parsed_msg = record.msg + str(record.args)
|
||||
|
||||
if record.levelno == logging.WARNING:
|
||||
sabnzbd.notifier.send_notification(T("Warning"), parsed_msg, "warning")
|
||||
else:
|
||||
sabnzbd.notifier.send_notification(T("Error"), parsed_msg, "error")
|
||||
|
||||
# Append traceback, if available
|
||||
warning = {"type": record.levelname, "text": parsed_msg, "time": int(time.time())}
|
||||
if record.exc_info:
|
||||
warning["text"] = "%s\n%s" % (warning["text"], traceback.format_exc())
|
||||
|
||||
# Loose the oldest record
|
||||
if len(self.store) >= self._size:
|
||||
self.store.pop(0)
|
||||
self.store.append(warning)
|
||||
|
||||
def clear(self):
|
||||
self.store = []
|
||||
@@ -188,6 +197,7 @@ def print_help():
|
||||
print(" --no-login Start with username and password reset")
|
||||
print(" --log-all Log all article handling (for developers)")
|
||||
print(" --disable-file-log Logging is only written to console")
|
||||
print(" --console Force logging to console")
|
||||
print(" --new Run a new instance of SABnzbd")
|
||||
print()
|
||||
print("NZB (or related) file:")
|
||||
@@ -201,7 +211,7 @@ def print_version():
|
||||
"""
|
||||
%s-%s
|
||||
|
||||
Copyright (C) 2007-2020 The SABnzbd-Team <team@sabnzbd.org>
|
||||
Copyright (C) 2007-2021 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
|
||||
@@ -243,7 +253,7 @@ def daemonize():
|
||||
|
||||
# Get log file path and remove the log file if it got too large
|
||||
log_path = os.path.join(sabnzbd.cfg.log_dir.get_path(), DEF_LOG_ERRFILE)
|
||||
if os.path.exists(log_path) and os.path.getsize(log_path) > sabnzbd.cfg.log_size.get_int():
|
||||
if os.path.exists(log_path) and os.path.getsize(log_path) > sabnzbd.cfg.log_size():
|
||||
remove_file(log_path)
|
||||
|
||||
# Replace file descriptors for stdin, stdout, and stderr
|
||||
@@ -330,7 +340,6 @@ def get_user_profile_paths(vista_plus):
|
||||
if sabnzbd.DAEMON:
|
||||
# In daemon mode, do not try to access the user profile
|
||||
# just assume that everything defaults to the program dir
|
||||
sabnzbd.DIR_APPDATA = sabnzbd.DIR_PROG
|
||||
sabnzbd.DIR_LCLDATA = sabnzbd.DIR_PROG
|
||||
sabnzbd.DIR_HOME = sabnzbd.DIR_PROG
|
||||
if sabnzbd.WIN32:
|
||||
@@ -344,8 +353,6 @@ def get_user_profile_paths(vista_plus):
|
||||
try:
|
||||
from win32com.shell import shell, shellcon
|
||||
|
||||
path = shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, None, 0)
|
||||
sabnzbd.DIR_APPDATA = os.path.join(path, DEF_WORKDIR)
|
||||
path = shell.SHGetFolderPath(0, shellcon.CSIDL_LOCAL_APPDATA, None, 0)
|
||||
sabnzbd.DIR_LCLDATA = os.path.join(path, DEF_WORKDIR)
|
||||
sabnzbd.DIR_HOME = os.environ["USERPROFILE"]
|
||||
@@ -354,18 +361,16 @@ def get_user_profile_paths(vista_plus):
|
||||
if vista_plus:
|
||||
root = os.environ["AppData"]
|
||||
user = os.environ["USERPROFILE"]
|
||||
sabnzbd.DIR_APPDATA = "%s\\%s" % (root.replace("\\Roaming", "\\Local"), DEF_WORKDIR)
|
||||
sabnzbd.DIR_LCLDATA = "%s\\%s" % (root.replace("\\Roaming", "\\Local"), DEF_WORKDIR)
|
||||
sabnzbd.DIR_HOME = user
|
||||
else:
|
||||
root = os.environ["USERPROFILE"]
|
||||
sabnzbd.DIR_APPDATA = "%s\\%s" % (root, DEF_WORKDIR)
|
||||
sabnzbd.DIR_LCLDATA = "%s\\%s" % (root, DEF_WORKDIR)
|
||||
sabnzbd.DIR_HOME = root
|
||||
sabnzbd.DIR_LCLDATA = sabnzbd.DIR_APPDATA
|
||||
except:
|
||||
pass
|
||||
|
||||
# Long-path everything
|
||||
sabnzbd.DIR_APPDATA = long_path(sabnzbd.DIR_APPDATA)
|
||||
sabnzbd.DIR_LCLDATA = long_path(sabnzbd.DIR_LCLDATA)
|
||||
sabnzbd.DIR_HOME = long_path(sabnzbd.DIR_HOME)
|
||||
return
|
||||
@@ -373,16 +378,14 @@ def get_user_profile_paths(vista_plus):
|
||||
elif sabnzbd.DARWIN:
|
||||
home = os.environ.get("HOME")
|
||||
if home:
|
||||
sabnzbd.DIR_APPDATA = "%s/Library/Application Support/SABnzbd" % home
|
||||
sabnzbd.DIR_LCLDATA = sabnzbd.DIR_APPDATA
|
||||
sabnzbd.DIR_LCLDATA = "%s/Library/Application Support/SABnzbd" % home
|
||||
sabnzbd.DIR_HOME = home
|
||||
return
|
||||
else:
|
||||
# Unix/Linux
|
||||
home = os.environ.get("HOME")
|
||||
if home:
|
||||
sabnzbd.DIR_APPDATA = "%s/.%s" % (home, DEF_WORKDIR)
|
||||
sabnzbd.DIR_LCLDATA = sabnzbd.DIR_APPDATA
|
||||
sabnzbd.DIR_LCLDATA = "%s/.%s" % (home, DEF_WORKDIR)
|
||||
sabnzbd.DIR_HOME = home
|
||||
return
|
||||
|
||||
@@ -532,7 +535,7 @@ def get_webhost(cherryhost, cherryport, https_port):
|
||||
# Valid user defined name?
|
||||
info = socket.getaddrinfo(cherryhost, None)
|
||||
except socket.error:
|
||||
if cherryhost not in ("localhost", "127.0.0.1", "::1"):
|
||||
if not is_localhost(cherryhost):
|
||||
cherryhost = "0.0.0.0"
|
||||
try:
|
||||
info = socket.getaddrinfo(localhost, None)
|
||||
@@ -599,7 +602,7 @@ def get_webhost(cherryhost, cherryport, https_port):
|
||||
except socket.error:
|
||||
cherryhost = cherryhost.strip("[]")
|
||||
|
||||
if ipv6 and ipv4 and (browserhost not in ("localhost", "127.0.0.1", "[::1]", "::1")):
|
||||
if ipv6 and ipv4 and not is_localhost(browserhost):
|
||||
sabnzbd.AMBI_LOCALHOST = True
|
||||
logging.info("IPV6 has priority on this system, potential Firefox issue")
|
||||
|
||||
@@ -845,6 +848,7 @@ def main():
|
||||
cherrypylogging = None
|
||||
clean_up = False
|
||||
logging_level = None
|
||||
console_logging = False
|
||||
no_file_log = False
|
||||
web_dir = None
|
||||
vista_plus = False
|
||||
@@ -900,6 +904,8 @@ def main():
|
||||
if logging_level < -1 or logging_level > 2:
|
||||
print_help()
|
||||
exit_sab(1)
|
||||
elif opt == "--console":
|
||||
console_logging = True
|
||||
elif opt in ("-v", "--version"):
|
||||
print_version()
|
||||
exit_sab(0)
|
||||
@@ -941,8 +947,8 @@ def main():
|
||||
sabnzbd.DIR_LANGUAGE = real_path(sabnzbd.DIR_PROG, DEF_LANGUAGE)
|
||||
org_dir = os.getcwd()
|
||||
|
||||
# Need console logging for SABnzbd.py and SABnzbd-console.exe
|
||||
console_logging = (not hasattr(sys, "frozen")) or (sabnzbd.MY_NAME.lower().find("-console") > 0)
|
||||
# Need console logging if requested, for SABnzbd.py and SABnzbd-console.exe
|
||||
console_logging = console_logging or sabnzbd.MY_NAME.lower().find("-console") > 0 or not hasattr(sys, "frozen")
|
||||
console_logging = console_logging and not sabnzbd.DAEMON
|
||||
|
||||
LOGLEVELS = (logging.FATAL, logging.WARNING, logging.INFO, logging.DEBUG)
|
||||
@@ -1117,7 +1123,7 @@ def main():
|
||||
try:
|
||||
if not no_file_log:
|
||||
rollover_log = logging.handlers.RotatingFileHandler(
|
||||
sabnzbd.LOGFILE, "a+", sabnzbd.cfg.log_size.get_int(), sabnzbd.cfg.log_backups()
|
||||
sabnzbd.LOGFILE, "a+", sabnzbd.cfg.log_size(), sabnzbd.cfg.log_backups()
|
||||
)
|
||||
rollover_log.setFormatter(logging.Formatter(logformat))
|
||||
logger.addHandler(rollover_log)
|
||||
@@ -1139,8 +1145,19 @@ def main():
|
||||
if no_file_log:
|
||||
logging.info("Console logging only")
|
||||
|
||||
# Start SABnzbd
|
||||
logging.info("--------------------------------")
|
||||
logging.info("%s-%s (rev=%s)", sabnzbd.MY_NAME, sabnzbd.__version__, sabnzbd.__baseline__)
|
||||
logging.info("%s-%s", sabnzbd.MY_NAME, sabnzbd.__version__)
|
||||
|
||||
# See if we can get version from git when running an unknown revision
|
||||
if sabnzbd.__baseline__ == "unknown":
|
||||
try:
|
||||
sabnzbd.__baseline__ = sabnzbd.misc.run_command(
|
||||
["git", "rev-parse", "--short", "HEAD"], cwd=sabnzbd.DIR_PROG
|
||||
).strip()
|
||||
except:
|
||||
pass
|
||||
logging.info("Commit: %s", sabnzbd.__baseline__)
|
||||
logging.info("Full executable path = %s", sabnzbd.MY_FULLNAME)
|
||||
if sabnzbd.WIN32:
|
||||
suffix = ""
|
||||
@@ -1194,9 +1211,6 @@ def main():
|
||||
ctx = ssl.create_default_context()
|
||||
logging.debug("Available certificates: %s", repr(ctx.cert_store_stats()))
|
||||
|
||||
# Show IPv4/IPv6 address
|
||||
from sabnzbd.getipaddress import localipv4, publicipv4, ipv6
|
||||
|
||||
mylocalipv4 = localipv4()
|
||||
if mylocalipv4:
|
||||
logging.debug("My local IPv4 address = %s", mylocalipv4)
|
||||
@@ -1232,7 +1246,7 @@ def main():
|
||||
if autobrowser is not None:
|
||||
sabnzbd.cfg.autobrowser.set(autobrowser)
|
||||
|
||||
sabnzbd.initialize(pause, clean_up, evaluate_schedules=True, repair=repair)
|
||||
sabnzbd.initialize(pause, clean_up, repair=repair)
|
||||
|
||||
os.chdir(sabnzbd.DIR_PROG)
|
||||
|
||||
@@ -1244,7 +1258,7 @@ def main():
|
||||
sabnzbd.cfg.web_color.set(sabnzbd.WEB_COLOR)
|
||||
|
||||
# Handle the several tray icons
|
||||
if sabnzbd.cfg.win_menu() and not sabnzbd.DAEMON:
|
||||
if sabnzbd.cfg.win_menu() and not sabnzbd.DAEMON and not sabnzbd.WIN_SERVICE:
|
||||
if sabnzbd.WIN32:
|
||||
import sabnzbd.sabtray
|
||||
|
||||
@@ -1477,26 +1491,45 @@ def main():
|
||||
check_latest_version()
|
||||
autorestarted = False
|
||||
|
||||
# ZeroConfig/Bonjour needs a ip. Lets try to find it.
|
||||
try:
|
||||
z_host = socket.gethostbyname(socket.gethostname())
|
||||
except socket.gaierror:
|
||||
z_host = cherryhost
|
||||
sabnzbd.zconfig.set_bonjour(z_host, cherryport)
|
||||
# Start SSDP and Bonjour if SABnzbd isn't listening on localhost only
|
||||
if sabnzbd.cfg.enable_broadcast() and not is_localhost(cherryhost):
|
||||
# Try to find a LAN IP address for SSDP/Bonjour
|
||||
if is_lan_addr(cherryhost):
|
||||
# A specific listening address was configured, use that
|
||||
external_host = cherryhost
|
||||
else:
|
||||
# Fall back to the IPv4 address of the LAN interface
|
||||
external_host = localipv4()
|
||||
logging.debug("Using %s as host address for Bonjour and SSDP", external_host)
|
||||
|
||||
if is_lan_addr(external_host):
|
||||
sabnzbd.zconfig.set_bonjour(external_host, cherryport)
|
||||
|
||||
# Set URL for browser for external hosts
|
||||
ssdp_url = "%s://%s:%s%s" % (
|
||||
("https" if enable_https else "http"),
|
||||
external_host,
|
||||
cherryport,
|
||||
sabnzbd.cfg.url_base(),
|
||||
)
|
||||
ssdp.start_ssdp(
|
||||
external_host,
|
||||
"SABnzbd",
|
||||
ssdp_url,
|
||||
"SABnzbd %s" % sabnzbd.__version__,
|
||||
"SABnzbd Team",
|
||||
"https://sabnzbd.org/",
|
||||
"SABnzbd %s" % sabnzbd.__version__,
|
||||
ssdp_broadcast_interval=sabnzbd.cfg.ssdp_broadcast_interval(),
|
||||
)
|
||||
|
||||
# Have to keep this running, otherwise logging will terminate
|
||||
timer = 0
|
||||
while not sabnzbd.SABSTOP:
|
||||
if sabnzbd.LAST_WARNING:
|
||||
msg = sabnzbd.LAST_WARNING
|
||||
sabnzbd.LAST_WARNING = None
|
||||
sabnzbd.notifier.send_notification(T("Warning"), msg, "warning")
|
||||
if sabnzbd.LAST_ERROR:
|
||||
msg = sabnzbd.LAST_ERROR
|
||||
sabnzbd.LAST_ERROR = None
|
||||
sabnzbd.notifier.send_notification(T("Error"), msg, "error")
|
||||
|
||||
time.sleep(3)
|
||||
# Wait to be awoken or every 3 seconds
|
||||
with sabnzbd.SABSTOP_CONDITION:
|
||||
sabnzbd.SABSTOP_CONDITION.wait(3)
|
||||
timer += 1
|
||||
|
||||
# Check for loglevel changes
|
||||
if LOG_FLAG:
|
||||
@@ -1506,60 +1539,61 @@ def main():
|
||||
if console_logging:
|
||||
console.setLevel(level)
|
||||
|
||||
# 30 sec polling tasks
|
||||
if timer > 9:
|
||||
# 300 sec polling tasks
|
||||
if not timer % 100:
|
||||
if sabnzbd.LOG_ALL:
|
||||
logging.debug("Triggering Python garbage collection")
|
||||
gc.collect()
|
||||
timer = 0
|
||||
|
||||
# 30 sec polling tasks
|
||||
if not timer % 10:
|
||||
# Keep OS awake (if needed)
|
||||
sabnzbd.keep_awake()
|
||||
# Restart scheduler (if needed)
|
||||
scheduler.restart()
|
||||
sabnzbd.Scheduler.restart(plan_restart=False)
|
||||
# Save config (if needed)
|
||||
config.save_config()
|
||||
# Check the threads
|
||||
if not sabnzbd.check_all_tasks():
|
||||
autorestarted = True
|
||||
sabnzbd.TRIGGER_RESTART = True
|
||||
else:
|
||||
timer += 1
|
||||
|
||||
# 3 sec polling tasks
|
||||
# Check for auto-restart request
|
||||
# Or special restart cases like Mac and WindowsService
|
||||
if sabnzbd.TRIGGER_RESTART:
|
||||
# Shutdown
|
||||
logging.info("Performing triggered restart")
|
||||
sabnzbd.shutdown_program()
|
||||
|
||||
# Add arguments and make sure we are in the right directory
|
||||
if sabnzbd.Downloader.paused:
|
||||
sabnzbd.RESTART_ARGS.append("-p")
|
||||
if autorestarted:
|
||||
sabnzbd.RESTART_ARGS.append("--autorestarted")
|
||||
sys.argv = sabnzbd.RESTART_ARGS
|
||||
|
||||
os.chdir(org_dir)
|
||||
# If macOS frozen restart of app instead of embedded python
|
||||
if hasattr(sys, "frozen") and sabnzbd.DARWIN:
|
||||
# [[NSProcessInfo processInfo] processIdentifier]]
|
||||
# logging.info("%s" % (NSProcessInfo.processInfo().processIdentifier()))
|
||||
my_pid = os.getpid()
|
||||
my_name = sabnzbd.MY_FULLNAME.replace("/Contents/MacOS/SABnzbd", "")
|
||||
my_args = " ".join(sys.argv[1:])
|
||||
cmd = 'kill -9 %s && open "%s" --args %s' % (my_pid, my_name, my_args)
|
||||
logging.info("Launching: ", cmd)
|
||||
os.system(cmd)
|
||||
elif sabnzbd.WIN_SERVICE:
|
||||
# Use external service handler to do the restart
|
||||
# Wait 5 seconds to clean up
|
||||
subprocess.Popen("timeout 5 & sc start SABnzbd", shell=True)
|
||||
|
||||
# Binaries require special restart
|
||||
if hasattr(sys, "frozen"):
|
||||
if sabnzbd.DARWIN:
|
||||
# On macOS restart of app instead of embedded python
|
||||
my_name = sabnzbd.MY_FULLNAME.replace("/Contents/MacOS/SABnzbd", "")
|
||||
my_args = " ".join(sys.argv[1:])
|
||||
cmd = 'kill -9 %s && open "%s" --args %s' % (os.getpid(), my_name, my_args)
|
||||
logging.info("Launching: %s", cmd)
|
||||
os.system(cmd)
|
||||
elif sabnzbd.WIN_SERVICE:
|
||||
# Use external service handler to do the restart
|
||||
# Wait 5 seconds to clean up
|
||||
subprocess.Popen("timeout 5 & sc start SABnzbd", shell=True)
|
||||
elif sabnzbd.WIN32:
|
||||
# Just a simple restart of the exe
|
||||
os.execv(sys.executable, ['"%s"' % arg for arg in sys.argv])
|
||||
else:
|
||||
# CherryPy has special logic to include interpreter options such as "-OO"
|
||||
cherrypy.engine._do_execv()
|
||||
|
||||
config.save_config()
|
||||
|
||||
if sabnzbd.WINTRAY:
|
||||
sabnzbd.WINTRAY.terminate = True
|
||||
if sabnzbd.WIN32:
|
||||
del_connection_info()
|
||||
|
||||
# Send our final goodbyes!
|
||||
notifier.send_notification("SABnzbd", T("SABnzbd shutdown finished"), "startup")
|
||||
logging.info("Leaving SABnzbd")
|
||||
@@ -1655,7 +1689,8 @@ def handle_windows_service():
|
||||
"""
|
||||
# Detect if running as Windows Service (only Vista and above!)
|
||||
# Adapted from https://stackoverflow.com/a/55248281/5235502
|
||||
if win32ts.ProcessIdToSessionId(win32api.GetCurrentProcessId()) == 0:
|
||||
# Only works when run from the exe-files
|
||||
if hasattr(sys, "frozen") and win32ts.ProcessIdToSessionId(win32api.GetCurrentProcessId()) == 0:
|
||||
servicemanager.Initialize()
|
||||
servicemanager.PrepareToHostSingle(SABnzbd)
|
||||
servicemanager.StartServiceCtrlDispatcher()
|
||||
@@ -1703,7 +1738,6 @@ if __name__ == "__main__":
|
||||
main()
|
||||
|
||||
elif sabnzbd.DARWIN and sabnzbd.FOUNDATION:
|
||||
|
||||
# macOS binary runner
|
||||
from threading import Thread
|
||||
from PyObjCTools import AppHelper
|
||||
@@ -1712,7 +1746,7 @@ if __name__ == "__main__":
|
||||
|
||||
# Need to run the main application in separate thread because the eventLoop
|
||||
# has to be in the main thread. The eventLoop is required for the menu.
|
||||
# This code is made with trial-and-error, please improve!
|
||||
# This code is made with trial-and-error, please feel free to improve!
|
||||
class startApp(Thread):
|
||||
def run(self):
|
||||
main()
|
||||
|
||||
14
appveyor.yml
14
appveyor.yml
@@ -1,14 +0,0 @@
|
||||
environment:
|
||||
# We only test the latest Python version
|
||||
matrix:
|
||||
- PYTHON: "C:\\Python38-x64"
|
||||
|
||||
install:
|
||||
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
|
||||
- python --version
|
||||
- python -m pip install --upgrade pip wheel
|
||||
- python -m pip install --upgrade -r requirements.txt
|
||||
- python -m pip install --upgrade -r tests/requirements.txt
|
||||
|
||||
build_script:
|
||||
- python -m pytest -s
|
||||
184
builder/SABnzbd.spec
Normal file
184
builder/SABnzbd.spec
Normal file
@@ -0,0 +1,184 @@
|
||||
# -*- mode: python -*-
|
||||
import re
|
||||
import sys
|
||||
import pkginfo
|
||||
|
||||
from PyInstaller.building.api import EXE, COLLECT, PYZ
|
||||
from PyInstaller.building.build_main import Analysis
|
||||
from PyInstaller.building.osx import BUNDLE
|
||||
|
||||
# Add extra files in the PyInstaller-spec
|
||||
extra_pyinstaller_files = []
|
||||
|
||||
# Also modify these in "package.py"!
|
||||
extra_files = [
|
||||
"README.txt",
|
||||
"INSTALL.txt",
|
||||
"LICENSE.txt",
|
||||
"GPL2.txt",
|
||||
"GPL3.txt",
|
||||
"COPYRIGHT.txt",
|
||||
"ISSUES.txt",
|
||||
"PKG-INFO",
|
||||
]
|
||||
|
||||
extra_folders = [
|
||||
"scripts/",
|
||||
"licenses/",
|
||||
"locale/",
|
||||
"email/",
|
||||
"interfaces/Plush/",
|
||||
"interfaces/Glitter/",
|
||||
"interfaces/wizard/",
|
||||
"interfaces/Config/",
|
||||
"scripts/",
|
||||
"icons/",
|
||||
]
|
||||
|
||||
# Get the version
|
||||
RELEASE_VERSION = pkginfo.Develop(".").version
|
||||
|
||||
# Add hidden imports
|
||||
extra_hiddenimports = ["Cheetah.DummyTransaction", "cheroot.ssl.builtin", "certifi"]
|
||||
|
||||
# Add platform specific stuff
|
||||
if sys.platform == "darwin":
|
||||
extra_hiddenimports.extend(["pyobjc", "objc", "PyObjCTools"])
|
||||
# macOS folders
|
||||
extra_folders += ["osx/par2/", "osx/unrar/", "osx/7zip/"]
|
||||
# Add NZB-icon file
|
||||
extra_pyinstaller_files.append(("builder/osx/image/nzbfile.icns", "."))
|
||||
# Version information is set differently on macOS
|
||||
version_info = None
|
||||
else:
|
||||
# Build would fail on non-Windows
|
||||
from PyInstaller.utils.win32.versioninfo import (
|
||||
VSVersionInfo,
|
||||
FixedFileInfo,
|
||||
StringFileInfo,
|
||||
StringTable,
|
||||
StringStruct,
|
||||
VarFileInfo,
|
||||
VarStruct,
|
||||
)
|
||||
|
||||
# Windows
|
||||
extra_hiddenimports.append("win32timezone")
|
||||
extra_folders += ["win/multipar/", "win/unrar/", "win/7zip/"]
|
||||
|
||||
# Parse the version info
|
||||
version_regexed = re.search(r"(\d+)\.(\d+)\.(\d+)([a-zA-Z]*)(\d*)", RELEASE_VERSION)
|
||||
version_tuple = (int(version_regexed.group(1)), int(version_regexed.group(2)), int(version_regexed.group(3)), 0)
|
||||
|
||||
# Detailed instructions are in the PyInstaller documentation
|
||||
# We don't include the alpha/beta/rc in the counters
|
||||
version_info = VSVersionInfo(
|
||||
ffi=FixedFileInfo(
|
||||
filevers=version_tuple,
|
||||
prodvers=version_tuple,
|
||||
mask=0x3F,
|
||||
flags=0x0,
|
||||
OS=0x40004,
|
||||
fileType=0x1,
|
||||
subtype=0x0,
|
||||
date=(0, 0),
|
||||
),
|
||||
kids=[
|
||||
StringFileInfo(
|
||||
[
|
||||
StringTable(
|
||||
"040904B0",
|
||||
[
|
||||
StringStruct("Comments", f"SABnzbd {RELEASE_VERSION}"),
|
||||
StringStruct("CompanyName", "The SABnzbd-Team"),
|
||||
StringStruct("FileDescription", f"SABnzbd {RELEASE_VERSION}"),
|
||||
StringStruct("FileVersion", RELEASE_VERSION),
|
||||
StringStruct("LegalCopyright", "The SABnzbd-Team"),
|
||||
StringStruct("ProductName", f"SABnzbd {RELEASE_VERSION}"),
|
||||
StringStruct("ProductVersion", RELEASE_VERSION),
|
||||
],
|
||||
)
|
||||
]
|
||||
),
|
||||
VarFileInfo([VarStruct("Translation", [1033, 1200])]),
|
||||
],
|
||||
)
|
||||
|
||||
# Process the extra-files and folders
|
||||
for file_item in extra_files:
|
||||
extra_pyinstaller_files.append((file_item, "."))
|
||||
for folder_item in extra_folders:
|
||||
extra_pyinstaller_files.append((folder_item, folder_item))
|
||||
|
||||
pyi_analysis = Analysis(
|
||||
["SABnzbd.py"],
|
||||
datas=extra_pyinstaller_files,
|
||||
hiddenimports=extra_hiddenimports,
|
||||
excludes=["FixTk", "tcl", "tk", "_tkinter", "tkinter", "Tkinter"],
|
||||
)
|
||||
|
||||
pyz = PYZ(pyi_analysis.pure, pyi_analysis.zipped_data)
|
||||
|
||||
exe = EXE(
|
||||
pyz,
|
||||
pyi_analysis.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="SABnzbd",
|
||||
upx=True,
|
||||
console=False,
|
||||
append_pkg=False,
|
||||
icon="icons/sabnzbd.ico",
|
||||
version=version_info,
|
||||
)
|
||||
|
||||
coll = COLLECT(exe, pyi_analysis.binaries, pyi_analysis.zipfiles, pyi_analysis.datas, name="SABnzbd")
|
||||
|
||||
# We need to run again for the console-app
|
||||
if sys.platform == "win32":
|
||||
# Enable console=True for this one
|
||||
console_exe = EXE(
|
||||
pyz,
|
||||
pyi_analysis.scripts,
|
||||
[],
|
||||
exclude_binaries=True,
|
||||
name="SABnzbd-console",
|
||||
upx=True,
|
||||
append_pkg=False,
|
||||
icon="icons/sabnzbd.ico",
|
||||
version=version_info,
|
||||
)
|
||||
|
||||
console_coll = COLLECT(
|
||||
console_exe,
|
||||
pyi_analysis.binaries,
|
||||
pyi_analysis.zipfiles,
|
||||
pyi_analysis.datas,
|
||||
upx=True,
|
||||
name="SABnzbd-console",
|
||||
)
|
||||
|
||||
# Build the APP on macOS
|
||||
if sys.platform == "darwin":
|
||||
info_plist = {
|
||||
"NSUIElement": 1,
|
||||
"NSPrincipalClass": "NSApplication",
|
||||
"CFBundleShortVersionString": RELEASE_VERSION,
|
||||
"NSHumanReadableCopyright": "The SABnzbd-Team",
|
||||
"CFBundleIdentifier": "org.sabnzbd.sabnzbd",
|
||||
"CFBundleDocumentTypes": [
|
||||
{
|
||||
"CFBundleTypeExtensions": ["nzb"],
|
||||
"CFBundleTypeIconFile": "nzbfile.icns",
|
||||
"CFBundleTypeMIMETypes": ["text/nzb"],
|
||||
"CFBundleTypeName": "NZB File",
|
||||
"CFBundleTypeRole": "Viewer",
|
||||
"LSTypeIsPackage": 0,
|
||||
"NSPersistentStoreTypeKey": "Binary",
|
||||
}
|
||||
],
|
||||
"LSMinimumSystemVersion": "10.9",
|
||||
"LSEnvironment": {"LANG": "en_US.UTF-8", "LC_ALL": "en_US.UTF-8"},
|
||||
}
|
||||
|
||||
app = BUNDLE(coll, name="SABnzbd.app", icon="builder/osx/image/sabnzbdplus.icns", info_plist=info_plist)
|
||||
206
builder/make_dmg.py
Normal file
206
builder/make_dmg.py
Normal file
@@ -0,0 +1,206 @@
|
||||
#!/usr/bin/python3 -OO
|
||||
# Copyright 2008-2017 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
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import os
|
||||
import pkginfo
|
||||
|
||||
|
||||
# We need to call dmgbuild from command-line, so here we can setup how
|
||||
if __name__ == "__main__":
|
||||
# Check for DMGBuild
|
||||
try:
|
||||
import dmgbuild
|
||||
except:
|
||||
print("Requires dmgbuild-module, use pip install dmgbuild")
|
||||
exit()
|
||||
|
||||
# Make sure we are in the src folder
|
||||
if not os.path.exists("builder"):
|
||||
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
|
||||
|
||||
# Check if signing is possible
|
||||
authority = os.environ.get("SIGNING_AUTH")
|
||||
|
||||
# Extract version info and set DMG path
|
||||
# Create sub-folder to upload later
|
||||
release = pkginfo.Develop(".").version
|
||||
prod = "SABnzbd-" + release
|
||||
fileDmg = prod + "-osx.dmg"
|
||||
|
||||
# Path to app file
|
||||
apppath = "dist/SABnzbd.app"
|
||||
|
||||
# Copy Readme
|
||||
readmepath = os.path.join(apppath, "Contents/Resources/README.txt")
|
||||
|
||||
# Path to background and the icon
|
||||
backgroundpath = "builder/osx/image/sabnzbd_new_bg.png"
|
||||
iconpath = "builder/osx/image/sabnzbdplus.icns"
|
||||
|
||||
# Make DMG
|
||||
print("Building DMG")
|
||||
dmgbuild.build_dmg(
|
||||
filename=fileDmg,
|
||||
volume_name=prod,
|
||||
settings_file="builder/make_dmg.py",
|
||||
defines={"app": apppath, "readme": readmepath, "background": backgroundpath, "iconpath": iconpath},
|
||||
)
|
||||
|
||||
# Resign APP
|
||||
if authority:
|
||||
print("Siging DMG")
|
||||
os.system('codesign --deep -f -i "org.sabnzbd.SABnzbd" -s "%s" "%s"' % (authority, fileDmg))
|
||||
print("Signed!")
|
||||
else:
|
||||
print("Signing skipped, missing SIGNING_AUTH.")
|
||||
exit()
|
||||
|
||||
|
||||
### START OF DMGBUILD SETTINGS
|
||||
### COPIED AND MODIFIED FROM THE EXAMPLE ONLINE
|
||||
application = defines.get("app", "AppName.app")
|
||||
readme = defines.get("readme", "ReadMe.rtf")
|
||||
appname = os.path.basename(application)
|
||||
|
||||
# .. Basics ....................................................................
|
||||
|
||||
# Volume format (see hdiutil create -help)
|
||||
format = defines.get("format", "UDBZ")
|
||||
|
||||
# Volume size (must be large enough for your files)
|
||||
size = defines.get("size", "100M")
|
||||
|
||||
# Files to include
|
||||
files = [application, readme]
|
||||
|
||||
# Symlinks to create
|
||||
symlinks = {"Applications": "/Applications"}
|
||||
|
||||
# Volume icon
|
||||
#
|
||||
# You can either define icon, in which case that icon file will be copied to the
|
||||
# image, *or* you can define badge_icon, in which case the icon file you specify
|
||||
# will be used to badge the system's Removable Disk icon
|
||||
#
|
||||
badge_icon = defines.get("iconpath", "")
|
||||
|
||||
# Where to put the icons
|
||||
icon_locations = {readme: (70, 160), appname: (295, 220), "Applications": (510, 220)}
|
||||
|
||||
# .. Window configuration ......................................................
|
||||
|
||||
# Window position in ((x, y), (w, h)) format
|
||||
window_rect = ((100, 100), (660, 360))
|
||||
|
||||
# Background
|
||||
#
|
||||
# This is a STRING containing any of the following:
|
||||
#
|
||||
# #3344ff - web-style RGB color
|
||||
# #34f - web-style RGB color, short form (#34f == #3344ff)
|
||||
# rgb(1,0,0) - RGB color, each value is between 0 and 1
|
||||
# hsl(120,1,.5) - HSL (hue saturation lightness) color
|
||||
# hwb(300,0,0) - HWB (hue whiteness blackness) color
|
||||
# cmyk(0,1,0,0) - CMYK color
|
||||
# goldenrod - X11/SVG named color
|
||||
# builtin-arrow - A simple built-in background with a blue arrow
|
||||
# /foo/bar/baz.png - The path to an image file
|
||||
#
|
||||
# Other color components may be expressed either in the range 0 to 1, or
|
||||
# as percentages (e.g. 60% is equivalent to 0.6).
|
||||
background = defines.get("background", "builtin-arrow")
|
||||
|
||||
show_status_bar = False
|
||||
show_tab_view = False
|
||||
show_toolbar = False
|
||||
show_pathbar = False
|
||||
show_sidebar = False
|
||||
sidebar_width = 0
|
||||
|
||||
# Select the default view; must be one of
|
||||
#
|
||||
# 'icon-view'
|
||||
# 'list-view'
|
||||
# 'column-view'
|
||||
# 'coverflow'
|
||||
#
|
||||
default_view = "icon-view"
|
||||
|
||||
# General view configuration
|
||||
show_icon_preview = False
|
||||
|
||||
# Set these to True to force inclusion of icon/list view settings (otherwise
|
||||
# we only include settings for the default view)
|
||||
include_icon_view_settings = "auto"
|
||||
include_list_view_settings = "auto"
|
||||
|
||||
# .. Icon view configuration ...................................................
|
||||
|
||||
arrange_by = None
|
||||
grid_offset = (0, 0)
|
||||
grid_spacing = 50
|
||||
scroll_position = (0, 0)
|
||||
label_pos = "bottom" # or 'right'
|
||||
text_size = 16
|
||||
icon_size = 64
|
||||
|
||||
# .. List view configuration ...................................................
|
||||
|
||||
# Column names are as follows:
|
||||
#
|
||||
# name
|
||||
# date-modified
|
||||
# date-created
|
||||
# date-added
|
||||
# date-last-opened
|
||||
# size
|
||||
# kind
|
||||
# label
|
||||
# version
|
||||
# comments
|
||||
#
|
||||
list_icon_size = 16
|
||||
list_text_size = 12
|
||||
list_scroll_position = (0, 0)
|
||||
list_sort_by = "name"
|
||||
list_use_relative_dates = True
|
||||
list_calculate_all_sizes = (False,)
|
||||
list_columns = ("name", "date-modified", "size", "kind", "date-added")
|
||||
list_column_widths = {
|
||||
"name": 300,
|
||||
"date-modified": 181,
|
||||
"date-created": 181,
|
||||
"date-added": 181,
|
||||
"date-last-opened": 181,
|
||||
"size": 97,
|
||||
"kind": 115,
|
||||
"label": 100,
|
||||
"version": 75,
|
||||
"comments": 300,
|
||||
}
|
||||
list_column_sort_directions = {
|
||||
"name": "ascending",
|
||||
"date-modified": "descending",
|
||||
"date-created": "descending",
|
||||
"date-added": "descending",
|
||||
"date-last-opened": "descending",
|
||||
"size": "descending",
|
||||
"kind": "ascending",
|
||||
"label": "ascending",
|
||||
"version": "ascending",
|
||||
"comments": "ascending",
|
||||
}
|
||||
8
builder/osx/entitlements.plist
Normal file
8
builder/osx/entitlements.plist
Normal file
@@ -0,0 +1,8 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
BIN
builder/osx/image/nzbfile.icns
Normal file
BIN
builder/osx/image/nzbfile.icns
Normal file
Binary file not shown.
BIN
builder/osx/image/sabnzbd_new_bg.png
Normal file
BIN
builder/osx/image/sabnzbd_new_bg.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 39 KiB |
BIN
builder/osx/image/sabnzbd_new_bg.psd
Normal file
BIN
builder/osx/image/sabnzbd_new_bg.psd
Normal file
Binary file not shown.
BIN
builder/osx/image/sabnzbdplus.icns
Normal file
BIN
builder/osx/image/sabnzbdplus.icns
Normal file
Binary file not shown.
550
builder/package.py
Normal file
550
builder/package.py
Normal file
@@ -0,0 +1,550 @@
|
||||
#!/usr/bin/python3 -OO
|
||||
# Copyright 2008-2017 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
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import glob
|
||||
import platform
|
||||
import re
|
||||
import sys
|
||||
import os
|
||||
import time
|
||||
import shutil
|
||||
import subprocess
|
||||
import tarfile
|
||||
import pkginfo
|
||||
import github
|
||||
from distutils.dir_util import copy_tree
|
||||
|
||||
|
||||
VERSION_FILE = "sabnzbd/version.py"
|
||||
SPEC_FILE = "SABnzbd.spec"
|
||||
|
||||
# Also modify these in "SABnzbd.spec"!
|
||||
extra_files = [
|
||||
"README.mkd",
|
||||
"INSTALL.txt",
|
||||
"LICENSE.txt",
|
||||
"GPL2.txt",
|
||||
"GPL3.txt",
|
||||
"COPYRIGHT.txt",
|
||||
"ISSUES.txt",
|
||||
"PKG-INFO",
|
||||
]
|
||||
|
||||
extra_folders = [
|
||||
"scripts/",
|
||||
"licenses/",
|
||||
"locale/",
|
||||
"email/",
|
||||
"interfaces/Plush/",
|
||||
"interfaces/Glitter/",
|
||||
"interfaces/wizard/",
|
||||
"interfaces/Config/",
|
||||
"scripts/",
|
||||
"icons/",
|
||||
]
|
||||
|
||||
|
||||
# Support functions
|
||||
def safe_remove(path):
|
||||
"""Remove file without erros if the file doesn't exist
|
||||
Can also handle folders
|
||||
"""
|
||||
if os.path.exists(path):
|
||||
if os.path.isdir(path):
|
||||
shutil.rmtree(path)
|
||||
else:
|
||||
os.remove(path)
|
||||
|
||||
|
||||
def delete_files_glob(name):
|
||||
""" Delete one file or set of files from wild-card spec """
|
||||
for f in glob.glob(name):
|
||||
if os.path.exists(f):
|
||||
os.remove(f)
|
||||
|
||||
|
||||
def run_external_command(command):
|
||||
""" Wrapper to ease the use of calling external programs """
|
||||
process = subprocess.Popen(command, text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
||||
output, _ = process.communicate()
|
||||
ret = process.wait()
|
||||
if output:
|
||||
print(output)
|
||||
if ret != 0:
|
||||
raise RuntimeError("Command returned non-zero exit code %s!" % ret)
|
||||
return output
|
||||
|
||||
|
||||
def run_git_command(parms):
|
||||
""" Run git command, raise error if it failed """
|
||||
return run_external_command(["git"] + parms)
|
||||
|
||||
|
||||
def patch_version_file(release_name):
|
||||
"""Patch in the Git commit hash, but only when this is
|
||||
an unmodified checkout
|
||||
"""
|
||||
git_output = run_git_command(["log", "-1"])
|
||||
for line in git_output.split("\n"):
|
||||
if "commit " in line:
|
||||
commit = line.split(" ")[1].strip()
|
||||
break
|
||||
else:
|
||||
raise TypeError("Commit hash not found")
|
||||
|
||||
with open(VERSION_FILE, "r") as ver:
|
||||
version_file = ver.read()
|
||||
|
||||
version_file = re.sub(r'__baseline__\s*=\s*"[^"]*"', '__baseline__ = "%s"' % commit, version_file)
|
||||
version_file = re.sub(r'__version__\s*=\s*"[^"]*"', '__version__ = "%s"' % release_name, version_file)
|
||||
|
||||
with open(VERSION_FILE, "w") as ver:
|
||||
ver.write(version_file)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Was any option supplied?
|
||||
if len(sys.argv) < 2:
|
||||
raise TypeError("Please specify what to do")
|
||||
|
||||
# Make sure we are in the src folder
|
||||
if not os.path.exists("builder"):
|
||||
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
|
||||
|
||||
# Extract version info
|
||||
RELEASE_VERSION = pkginfo.Develop(".").version
|
||||
|
||||
# Check if we have the needed certificates
|
||||
try:
|
||||
import certifi
|
||||
except ImportError:
|
||||
raise FileNotFoundError("Need certifi module")
|
||||
|
||||
# Define release name
|
||||
RELEASE_NAME = "SABnzbd-%s" % RELEASE_VERSION
|
||||
RELEASE_TITLE = "SABnzbd %s" % RELEASE_VERSION
|
||||
RELEASE_SRC = RELEASE_NAME + "-src.tar.gz"
|
||||
RELEASE_BINARY_32 = RELEASE_NAME + "-win32-bin.zip"
|
||||
RELEASE_BINARY_64 = RELEASE_NAME + "-win64-bin.zip"
|
||||
RELEASE_INSTALLER = RELEASE_NAME + "-win-setup.exe"
|
||||
RELEASE_MACOS = RELEASE_NAME + "-osx.dmg"
|
||||
RELEASE_README = "README.mkd"
|
||||
|
||||
# Patch release file
|
||||
patch_version_file(RELEASE_VERSION)
|
||||
|
||||
# To draft a release or not to draft a release?
|
||||
RELEASE_THIS = "draft release" in run_git_command(["log", "-1", "--pretty=format:%b"])
|
||||
|
||||
# Rename release notes file
|
||||
safe_remove("README.txt")
|
||||
shutil.copyfile(RELEASE_README, "README.txt")
|
||||
|
||||
# Compile translations
|
||||
if not os.path.exists("locale"):
|
||||
run_external_command([sys.executable, "tools/make_mo.py"])
|
||||
|
||||
# Check again if translations exist, fail otherwise
|
||||
if not os.path.exists("locale"):
|
||||
raise FileNotFoundError("Failed to compile language files")
|
||||
|
||||
# Make sure we remove any existing build-folders
|
||||
safe_remove("build")
|
||||
safe_remove("dist")
|
||||
safe_remove(RELEASE_NAME)
|
||||
|
||||
# Copy the specification
|
||||
shutil.copyfile("builder/%s" % SPEC_FILE, SPEC_FILE)
|
||||
|
||||
if "binary" in sys.argv or "installer" in sys.argv:
|
||||
# Must be run on Windows
|
||||
if sys.platform != "win32":
|
||||
raise RuntimeError("Binary should be created on Windows")
|
||||
|
||||
# Check what architecture we are on
|
||||
RELEASE_BINARY = RELEASE_BINARY_32
|
||||
if platform.architecture()[0] == "64bit":
|
||||
RELEASE_BINARY = RELEASE_BINARY_64
|
||||
|
||||
# Remove any leftovers
|
||||
safe_remove(RELEASE_BINARY)
|
||||
|
||||
# Run PyInstaller and check output
|
||||
run_external_command([sys.executable, "-O", "-m", "PyInstaller", "SABnzbd.spec"])
|
||||
|
||||
# Use special distutils function to merge the main and console directories
|
||||
copy_tree("dist/SABnzbd-console", "dist/SABnzbd")
|
||||
safe_remove("dist/SABnzbd-console")
|
||||
|
||||
# Remove unwanted DLL's
|
||||
delete_files_glob("dist/SABnzbd/api-ms-win*.dll")
|
||||
delete_files_glob("dist/SABnzbd/mfc140u.dll")
|
||||
delete_files_glob("dist/SABnzbd/ucrtbase.dll")
|
||||
|
||||
# Remove other files we don't need
|
||||
delete_files_glob("dist/SABnzbd/PKG-INFO")
|
||||
delete_files_glob("dist/SABnzbd/win32ui.pyd")
|
||||
delete_files_glob("dist/SABnzbd/winxpgui.pyd")
|
||||
|
||||
if "installer" in sys.argv:
|
||||
# Needs to be run on 64 bit
|
||||
if RELEASE_BINARY != RELEASE_BINARY_64:
|
||||
raise RuntimeError("Installer should be created on 64bit Python")
|
||||
|
||||
# Compile NSIS translations
|
||||
safe_remove("NSIS_Installer.nsi")
|
||||
safe_remove("NSIS_Installer.nsi.tmp")
|
||||
shutil.copyfile("builder/win/NSIS_Installer.nsi", "NSIS_Installer.nsi")
|
||||
run_external_command([sys.executable, "tools/make_mo.py", "nsis"])
|
||||
|
||||
# Remove 32bit external executables
|
||||
delete_files_glob("dist/SABnzbd/win/par2/multipar/par2j.exe")
|
||||
delete_files_glob("dist/SABnzbd/win/unrar/UnRAR.exe")
|
||||
|
||||
# Run NSIS to build installer
|
||||
run_external_command(
|
||||
[
|
||||
"makensis.exe",
|
||||
"/V3",
|
||||
"/DSAB_PRODUCT=%s" % RELEASE_NAME,
|
||||
"/DSAB_VERSION=%s" % RELEASE_VERSION,
|
||||
"/DSAB_FILE=%s" % RELEASE_INSTALLER,
|
||||
"NSIS_Installer.nsi.tmp",
|
||||
]
|
||||
)
|
||||
|
||||
# Rename the folder
|
||||
os.rename("dist/SABnzbd", RELEASE_NAME)
|
||||
|
||||
# Create the archive
|
||||
run_external_command(["win/7zip/7za.exe", "a", RELEASE_BINARY, RELEASE_NAME])
|
||||
|
||||
if "app" in sys.argv:
|
||||
# Must be run on macOS
|
||||
if sys.platform != "darwin":
|
||||
raise RuntimeError("App should be created on macOS")
|
||||
|
||||
# Who will sign and notarize this?
|
||||
authority = os.environ.get("SIGNING_AUTH")
|
||||
notarization_user = os.environ.get("NOTARIZATION_USER")
|
||||
notarization_pass = os.environ.get("NOTARIZATION_PASS")
|
||||
|
||||
# Run PyInstaller and check output
|
||||
run_external_command([sys.executable, "-O", "-m", "PyInstaller", "SABnzbd.spec"])
|
||||
|
||||
# Only continue if we can sign
|
||||
if authority:
|
||||
files_to_sign = [
|
||||
"dist/SABnzbd.app/Contents/MacOS/osx/par2/par2-sl64",
|
||||
"dist/SABnzbd.app/Contents/MacOS/osx/7zip/7za",
|
||||
"dist/SABnzbd.app/Contents/MacOS/osx/unrar/unrar",
|
||||
"dist/SABnzbd.app/Contents/MacOS/SABnzbd",
|
||||
"dist/SABnzbd.app",
|
||||
]
|
||||
|
||||
for file_to_sign in files_to_sign:
|
||||
print("Signing %s with hardended runtime" % file_to_sign)
|
||||
run_external_command(
|
||||
[
|
||||
"codesign",
|
||||
"--deep",
|
||||
"--force",
|
||||
"--timestamp",
|
||||
"--options",
|
||||
"runtime",
|
||||
"--entitlements",
|
||||
"builder/osx/entitlements.plist",
|
||||
"-i",
|
||||
"org.sabnzbd.sabnzbd",
|
||||
"-s",
|
||||
authority,
|
||||
file_to_sign,
|
||||
],
|
||||
)
|
||||
print("Signed %s!" % file_to_sign)
|
||||
|
||||
# Only notarize for real builds that we want to deploy
|
||||
if notarization_user and notarization_pass and RELEASE_THIS:
|
||||
# Prepare zip to upload to notarization service
|
||||
print("Creating zip to send to Apple notarization service")
|
||||
# We need to use ditto, otherwise the signature gets lost!
|
||||
notarization_zip = RELEASE_NAME + ".zip"
|
||||
run_external_command(
|
||||
["ditto", "-c", "-k", "--sequesterRsrc", "--keepParent", "dist/SABnzbd.app", notarization_zip]
|
||||
)
|
||||
|
||||
# Upload to Apple
|
||||
print("Sending zip to Apple notarization service")
|
||||
upload_process = run_external_command(
|
||||
[
|
||||
"xcrun",
|
||||
"altool",
|
||||
"--notarize-app",
|
||||
"-t",
|
||||
"osx",
|
||||
"-f",
|
||||
notarization_zip,
|
||||
"--primary-bundle-id",
|
||||
"org.sabnzbd.sabnzbd",
|
||||
"-u",
|
||||
notarization_user,
|
||||
"-p",
|
||||
notarization_pass,
|
||||
],
|
||||
)
|
||||
|
||||
# Extract the notarization ID
|
||||
m = re.match(".*RequestUUID = (.*?)\n", upload_process, re.S)
|
||||
if not m:
|
||||
raise RuntimeError("No UUID created")
|
||||
uuid = m.group(1)
|
||||
|
||||
print("Checking notarization of UUID: %s (every 30 seconds)" % uuid)
|
||||
notarization_in_progress = True
|
||||
while notarization_in_progress:
|
||||
time.sleep(30)
|
||||
check_status = run_external_command(
|
||||
[
|
||||
"xcrun",
|
||||
"altool",
|
||||
"--notarization-info",
|
||||
uuid,
|
||||
"-u",
|
||||
notarization_user,
|
||||
"-p",
|
||||
notarization_pass,
|
||||
],
|
||||
)
|
||||
notarization_in_progress = "Status: in progress" in check_status
|
||||
|
||||
# Check if success
|
||||
if "Status: success" not in check_status:
|
||||
raise RuntimeError("Failed to notarize..")
|
||||
|
||||
# Staple the notarization!
|
||||
print("Approved! Stapling the result to the app")
|
||||
run_external_command(["xcrun", "stapler", "staple", "dist/SABnzbd.app"])
|
||||
elif notarization_user and notarization_pass:
|
||||
print("Notarization skipped, add 'draft release' to the commit message trigger notarization!")
|
||||
else:
|
||||
print("Notarization skipped, NOTARIZATION_USER or NOTARIZATION_PASS missing.")
|
||||
else:
|
||||
print("Signing skipped, missing SIGNING_AUTH.")
|
||||
|
||||
if "source" in sys.argv:
|
||||
# Prepare Source distribution package.
|
||||
# We assume the sources are freshly cloned from the repo
|
||||
# Make sure all source files are Unix format
|
||||
src_folder = "srcdist"
|
||||
safe_remove(src_folder)
|
||||
os.mkdir(src_folder)
|
||||
|
||||
# Remove any leftovers
|
||||
safe_remove(RELEASE_SRC)
|
||||
|
||||
# Add extra files and folders need for source dist
|
||||
extra_folders.extend(["sabnzbd/", "po/", "linux/", "tools/", "tests/"])
|
||||
extra_files.extend(["SABnzbd.py", "requirements.txt"])
|
||||
|
||||
# Copy all folders and files to the new folder
|
||||
for source_folder in extra_folders:
|
||||
copy_tree(source_folder, os.path.join(src_folder, source_folder))
|
||||
|
||||
# Copy all files
|
||||
for source_file in extra_files:
|
||||
shutil.copyfile(source_file, os.path.join(src_folder, source_file))
|
||||
|
||||
# Make sure all line-endings are correct
|
||||
for input_filename in glob.glob("%s/**/*.*" % src_folder, recursive=True):
|
||||
base, ext = os.path.splitext(input_filename)
|
||||
if ext.lower() not in (".py", ".txt", ".css", ".js", ".tmpl", ".sh", ".cmd"):
|
||||
continue
|
||||
print(input_filename)
|
||||
|
||||
with open(input_filename, "rb") as input_data:
|
||||
data = input_data.read()
|
||||
data = data.replace(b"\r", b"")
|
||||
with open(input_filename, "wb") as output_data:
|
||||
output_data.write(data)
|
||||
|
||||
# Create tar.gz file for source distro
|
||||
with tarfile.open(RELEASE_SRC, "w:gz") as tar_output:
|
||||
for root, dirs, files in os.walk(src_folder):
|
||||
for _file in files:
|
||||
input_path = os.path.join(root, _file)
|
||||
if sys.platform == "win32":
|
||||
tar_path = input_path.replace("srcdist\\", RELEASE_NAME + "/").replace("\\", "/")
|
||||
else:
|
||||
tar_path = input_path.replace("srcdist/", RELEASE_NAME + "/")
|
||||
tarinfo = tar_output.gettarinfo(input_path, tar_path)
|
||||
tarinfo.uid = 0
|
||||
tarinfo.gid = 0
|
||||
if _file in ("SABnzbd.py", "Sample-PostProc.sh", "make_mo.py", "msgfmt.py"):
|
||||
# Force Linux/OSX scripts as executable
|
||||
tarinfo.mode = 0o755
|
||||
else:
|
||||
tarinfo.mode = 0o644
|
||||
|
||||
with open(input_path, "rb") as f:
|
||||
tar_output.addfile(tarinfo, f)
|
||||
|
||||
# Remove source folder
|
||||
safe_remove(src_folder)
|
||||
|
||||
# Release to github
|
||||
if "release" in sys.argv:
|
||||
# Check if tagged as release and check for token
|
||||
gh_token = os.environ.get("AUTOMATION_GITHUB_TOKEN", "")
|
||||
if RELEASE_THIS and gh_token:
|
||||
gh_obj = github.Github(gh_token)
|
||||
gh_repo = gh_obj.get_repo("sabnzbd/sabnzbd")
|
||||
|
||||
# Read the release notes
|
||||
with open(RELEASE_README, "r") as readme_file:
|
||||
readme_data = readme_file.read()
|
||||
|
||||
# Pre-releases are longer than 6 characters (e.g. 3.1.0Beta1 vs 3.1.0, but also 3.0.11)
|
||||
prerelease = len(RELEASE_VERSION) > 5
|
||||
|
||||
# We have to manually check if we already created this release
|
||||
for release in gh_repo.get_releases():
|
||||
if release.tag_name == RELEASE_VERSION:
|
||||
gh_release = release
|
||||
print("Found existing release %s" % gh_release.title)
|
||||
break
|
||||
else:
|
||||
# Did not find it, so create the release, use the GitHub tag we got as input
|
||||
print("Creating GitHub release SABnzbd %s" % RELEASE_VERSION)
|
||||
gh_release = gh_repo.create_git_release(
|
||||
tag=RELEASE_VERSION,
|
||||
name=RELEASE_TITLE,
|
||||
message=readme_data,
|
||||
draft=True,
|
||||
prerelease=prerelease,
|
||||
)
|
||||
|
||||
# Fetch existing assets, as overwriting is not allowed by GitHub
|
||||
gh_assets = gh_release.get_assets()
|
||||
|
||||
# Upload the assets
|
||||
files_to_check = (
|
||||
RELEASE_SRC,
|
||||
RELEASE_BINARY_32,
|
||||
RELEASE_BINARY_64,
|
||||
RELEASE_INSTALLER,
|
||||
RELEASE_MACOS,
|
||||
RELEASE_README,
|
||||
)
|
||||
for file_to_check in files_to_check:
|
||||
if os.path.exists(file_to_check):
|
||||
# Check if this file was previously uploaded
|
||||
if gh_assets.totalCount:
|
||||
for gh_asset in gh_assets:
|
||||
if gh_asset.name == file_to_check:
|
||||
print("Removing existing asset %s " % gh_asset.name)
|
||||
gh_asset.delete_asset()
|
||||
# Upload the new one
|
||||
print("Uploading %s to release %s" % (file_to_check, gh_release.title))
|
||||
gh_release.upload_asset(file_to_check)
|
||||
|
||||
# Update the website
|
||||
gh_repo_web = gh_obj.get_repo("sabnzbd/sabnzbd.github.io")
|
||||
# Check if the branch already exists, only create one if it doesn't
|
||||
skip_website_update = False
|
||||
try:
|
||||
gh_repo_web.get_branch(RELEASE_VERSION)
|
||||
print("Branch %s on sabnzbd/sabnzbd.github.io already exists, skipping update" % RELEASE_VERSION)
|
||||
skip_website_update = True
|
||||
except github.GithubException:
|
||||
# Create a new branch to have the changes
|
||||
sb = gh_repo_web.get_branch("master")
|
||||
print("Creating branch %s on sabnzbd/sabnzbd.github.io" % RELEASE_VERSION)
|
||||
new_branch = gh_repo_web.create_git_ref(ref="refs/heads/" + RELEASE_VERSION, sha=sb.commit.sha)
|
||||
|
||||
# Update the files
|
||||
if not skip_website_update:
|
||||
# We need bytes version to interact with GitHub
|
||||
RELEASE_VERSION_BYTES = RELEASE_VERSION.encode()
|
||||
|
||||
# Get all the version files
|
||||
latest_txt = gh_repo_web.get_contents("latest.txt")
|
||||
latest_txt_items = latest_txt.decoded_content.split()
|
||||
new_latest_txt_items = latest_txt_items[:2]
|
||||
config_yml = gh_repo_web.get_contents("_config.yml")
|
||||
if prerelease:
|
||||
# If it's a pre-release, we append to current version in latest.txt
|
||||
new_latest_txt_items.extend([RELEASE_VERSION_BYTES, latest_txt_items[1]])
|
||||
# And replace in _config.yml
|
||||
new_config_yml = re.sub(
|
||||
b"latest_testing: '[^']*'",
|
||||
b"latest_testing: '%s'" % RELEASE_VERSION_BYTES,
|
||||
config_yml.decoded_content,
|
||||
)
|
||||
else:
|
||||
# New stable release, replace the version
|
||||
new_latest_txt_items[0] = RELEASE_VERSION_BYTES
|
||||
# And replace in _config.yml
|
||||
new_config_yml = re.sub(
|
||||
b"latest_testing: '[^']*'",
|
||||
b"latest_testing: ''",
|
||||
config_yml.decoded_content,
|
||||
)
|
||||
new_config_yml = re.sub(
|
||||
b"latest_stable: '[^']*'",
|
||||
b"latest_stable: '%s'" % RELEASE_VERSION_BYTES,
|
||||
new_config_yml,
|
||||
)
|
||||
# Also update the wiki-settings, these only use x.x notation
|
||||
new_config_yml = re.sub(
|
||||
b"wiki_version: '[^']*'",
|
||||
b"wiki_version: '%s'" % RELEASE_VERSION_BYTES[:3],
|
||||
new_config_yml,
|
||||
)
|
||||
|
||||
# Update the files
|
||||
print("Updating latest.txt")
|
||||
gh_repo_web.update_file(
|
||||
"latest.txt",
|
||||
"Release %s: latest.txt" % RELEASE_VERSION,
|
||||
b"\n".join(new_latest_txt_items),
|
||||
latest_txt.sha,
|
||||
RELEASE_VERSION,
|
||||
)
|
||||
print("Updating _config.yml")
|
||||
gh_repo_web.update_file(
|
||||
"_config.yml",
|
||||
"Release %s: _config.yml" % RELEASE_VERSION,
|
||||
new_config_yml,
|
||||
config_yml.sha,
|
||||
RELEASE_VERSION,
|
||||
)
|
||||
|
||||
# Create pull-request
|
||||
print("Creating pull request in sabnzbd/sabnzbd.github.io for the update")
|
||||
gh_repo_web.create_pull(
|
||||
title=RELEASE_VERSION,
|
||||
base="master",
|
||||
body="Automated update of release files",
|
||||
head=RELEASE_VERSION,
|
||||
)
|
||||
else:
|
||||
print("To push release to GitHub, add 'draft release' to the commit message.")
|
||||
print("Or missing the AUTOMATION_GITHUB_TOKEN, cannot push to GitHub without it.")
|
||||
|
||||
# Reset!
|
||||
run_git_command(["reset", "--hard"])
|
||||
run_git_command(["clean", "-f"])
|
||||
9
builder/requirements.txt
Normal file
9
builder/requirements.txt
Normal file
@@ -0,0 +1,9 @@
|
||||
# Basic build requirements
|
||||
pyinstaller
|
||||
setuptools
|
||||
pkginfo
|
||||
certifi
|
||||
pygithub
|
||||
|
||||
# For the OSX build specific
|
||||
dmgbuild; sys_platform == 'darwin'
|
||||
405
builder/win/NSIS_Installer.nsi
Normal file
405
builder/win/NSIS_Installer.nsi
Normal file
@@ -0,0 +1,405 @@
|
||||
; -*- coding: utf-8 -*-
|
||||
;
|
||||
; Copyright 2008-2015 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
|
||||
; as published by the Free Software Foundation; either version 2
|
||||
; of the License, or (at your option) any later version.
|
||||
;
|
||||
; This program is distributed in the hope that it will be useful,
|
||||
; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
; GNU General Public License for more details.
|
||||
;
|
||||
; You should have received a copy of the GNU General Public License
|
||||
; along with this program; if not, write to the Free Software
|
||||
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
Unicode true
|
||||
|
||||
!addplugindir builder\win\nsis\Plugins
|
||||
!addincludedir builder\win\nsis\Include
|
||||
|
||||
!include "MUI2.nsh"
|
||||
!include "registerExtension.nsh"
|
||||
!include "FileFunc.nsh"
|
||||
!include "LogicLib.nsh"
|
||||
!include "WinVer.nsh"
|
||||
!include "nsProcess.nsh"
|
||||
!include "x64.nsh"
|
||||
!include "servicelib.nsh"
|
||||
|
||||
;------------------------------------------------------------------
|
||||
;
|
||||
; Marco for removing existing and the current installation
|
||||
; It shared by the installer and the uninstaller.
|
||||
;
|
||||
!define RemovePrev "!insertmacro RemovePrev"
|
||||
!macro RemovePrev idir
|
||||
; Remove the whole dir
|
||||
; Users should not be putting stuff here!
|
||||
RMDir /r "${idir}"
|
||||
!macroend
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Define names of the product
|
||||
Name "${SAB_PRODUCT}"
|
||||
OutFile "${SAB_FILE}"
|
||||
InstallDir "$PROGRAMFILES\SABnzbd"
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Some default compiler settings (uncomment and change at will):
|
||||
SetCompress auto ; (can be off or force)
|
||||
SetDatablockOptimize on ; (can be off)
|
||||
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 orginal date)
|
||||
WindowIcon on
|
||||
SpaceTexts none
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Vista/Win7 redirects $SMPROGRAMS to all users without this
|
||||
RequestExecutionLevel admin
|
||||
FileErrorText "If you have no admin rights, try to install into a user directory."
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
;Variables
|
||||
Var MUI_TEMP
|
||||
Var STARTMENU_FOLDER
|
||||
Var PREV_INST_DIR
|
||||
|
||||
;------------------------------------------------------------------
|
||||
;Interface Settings
|
||||
|
||||
!define MUI_ABORTWARNING
|
||||
|
||||
;Show all languages, despite user's codepage
|
||||
!define MUI_LANGDLL_ALLLANGUAGES
|
||||
|
||||
!define MUI_ICON "dist\SABnzbd\icons\sabnzbd.ico"
|
||||
|
||||
|
||||
;--------------------------------
|
||||
;Pages
|
||||
|
||||
!insertmacro MUI_PAGE_LICENSE "dist\SABnzbd\LICENSE.txt"
|
||||
!define MUI_COMPONENTSPAGE_NODESC
|
||||
!insertmacro MUI_PAGE_COMPONENTS
|
||||
|
||||
!insertmacro MUI_PAGE_DIRECTORY
|
||||
|
||||
;Start Menu Folder Page Configuration
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\SABnzbd"
|
||||
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
|
||||
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "SABnzbd"
|
||||
;Remember the installer language
|
||||
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
|
||||
!define MUI_LANGDLL_REGISTRY_KEY "Software\SABnzbd"
|
||||
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
|
||||
|
||||
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
|
||||
|
||||
!insertmacro MUI_PAGE_INSTFILES
|
||||
; !define MUI_FINISHPAGE_RUN
|
||||
; !define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
|
||||
; !define MUI_FINISHPAGE_RUN_TEXT $(MsgRunSAB)
|
||||
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
|
||||
!define MUI_FINISHPAGE_SHOWREADME_TEXT $(MsgShowRelNote)
|
||||
!define MUI_FINISHPAGE_LINK $(MsgSupportUs)
|
||||
!define MUI_FINISHPAGE_LINK_LOCATION "https://sabnzbd.org/donate"
|
||||
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!define MUI_UNPAGE_COMPONENTSPAGE_NODESC
|
||||
!insertmacro MUI_UNPAGE_COMPONENTS
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Run as user-level at end of install
|
||||
; DOES NOT WORK
|
||||
; Function PageFinishRun
|
||||
; !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\SABnzbd.exe" "" "" ""
|
||||
; FunctionEnd
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Set supported languages
|
||||
;
|
||||
; If you edit this list you also need to edit apireg.py in SABnzbd!
|
||||
;
|
||||
!insertmacro MUI_LANGUAGE "English" ;first language is the default language
|
||||
!insertmacro MUI_LANGUAGE "French"
|
||||
!insertmacro MUI_LANGUAGE "German"
|
||||
!insertmacro MUI_LANGUAGE "Dutch"
|
||||
!insertmacro MUI_LANGUAGE "Finnish"
|
||||
!insertmacro MUI_LANGUAGE "Polish"
|
||||
!insertmacro MUI_LANGUAGE "Swedish"
|
||||
!insertmacro MUI_LANGUAGE "Danish"
|
||||
!insertmacro MUI_LANGUAGE "Norwegian"
|
||||
!insertmacro MUI_LANGUAGE "Romanian"
|
||||
!insertmacro MUI_LANGUAGE "Spanish"
|
||||
!insertmacro MUI_LANGUAGE "PortugueseBR"
|
||||
!insertmacro MUI_LANGUAGE "Serbian"
|
||||
!insertmacro MUI_LANGUAGE "Hebrew"
|
||||
!insertmacro MUI_LANGUAGE "Russian"
|
||||
!insertmacro MUI_LANGUAGE "Czech"
|
||||
!insertmacro MUI_LANGUAGE "SimpChinese"
|
||||
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
;Reserve Files
|
||||
;If you are using solid compression, files that are required before
|
||||
;the actual installation should be stored first in the data block,
|
||||
;because this will make your installer start faster.
|
||||
|
||||
!insertmacro MUI_RESERVEFILE_LANGDLL
|
||||
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; SECTION main program
|
||||
;
|
||||
Section "SABnzbd" SecDummy
|
||||
|
||||
SetOutPath "$INSTDIR"
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Make sure old versions are gone (reg-key already read in onInt)
|
||||
StrCmp $PREV_INST_DIR "" noPrevInstallRemove
|
||||
${RemovePrev} "$PREV_INST_DIR"
|
||||
noPrevInstallRemove:
|
||||
|
||||
; add files / whatever that need to be installed here.
|
||||
File /r "dist\SABnzbd\*"
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Add firewall rules
|
||||
liteFirewallW::AddRule "$INSTDIR\SABnzbd.exe" "SABnzbd"
|
||||
liteFirewallW::AddRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; 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}"
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "UninstallString" '"$INSTDIR\uninstall.exe"'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayVersion" '${SAB_VERSION}'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Publisher" 'The SABnzbd Team'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "HelpLink" 'https://forums.sabnzbd.org/'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLInfoAbout" 'https://sabnzbd.org/wiki/'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLUpdateInfo" 'https://sabnzbd.org/'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Comments" 'The automated Usenet download tool'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayIcon" '$INSTDIR\icons\sabnzbd.ico'
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 25674
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoRepair" -1
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoModify" -1
|
||||
; write out uninstaller
|
||||
WriteUninstaller "$INSTDIR\Uninstall.exe"
|
||||
|
||||
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
|
||||
;Create shortcuts
|
||||
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
|
||||
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\SABnzbd.lnk" "$INSTDIR\SABnzbd.exe"
|
||||
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\SABnzbd - SafeMode.lnk" "$INSTDIR\SABnzbd.exe" "--server 127.0.0.1:8080 -b1 --no-login"
|
||||
WriteINIStr "$SMPROGRAMS\$STARTMENU_FOLDER\SABnzbd - Documentation.url" "InternetShortcut" "URL" "https://sabnzbd.org/wiki/"
|
||||
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
||||
!insertmacro MUI_STARTMENU_WRITE_END
|
||||
SectionEnd ; end of default section
|
||||
|
||||
Section $(MsgIcon) desktop
|
||||
CreateShortCut "$DESKTOP\SABnzbd.lnk" "$INSTDIR\SABnzbd.exe"
|
||||
SectionEnd ; end of desktop icon section
|
||||
|
||||
Section $(MsgAssoc) assoc
|
||||
${registerExtension} "$INSTDIR\icons\nzb.ico" "$INSTDIR\SABnzbd.exe" ".nzb" "NZB File"
|
||||
${RefreshShellIcons}
|
||||
SectionEnd ; end of file association section
|
||||
|
||||
Section /o $(MsgRunAtStart) startup
|
||||
CreateShortCut "$SMPROGRAMS\Startup\SABnzbd.lnk" "$INSTDIR\SABnzbd.exe" "-b0"
|
||||
SectionEnd ;
|
||||
|
||||
;------------------------------------------------------------------
|
||||
Function .onInit
|
||||
; We need to modify the dir here for X64
|
||||
${If} ${RunningX64}
|
||||
StrCpy $INSTDIR "$PROGRAMFILES64\SABnzbd"
|
||||
${Else}
|
||||
MessageBox MB_OK $(MsgOnly64bit)
|
||||
ExecShell "open" "https://sabnzbd.org/downloads"
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
; Python 3.9 no longer supports Windows 7
|
||||
${If} ${AtMostWin8}
|
||||
MessageBox MB_OK $(MsgNoWin7)
|
||||
ExecShell "open" "https://sabnzbd.org/downloads"
|
||||
Abort
|
||||
${EndIf}
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Change settings based on if SAB was already installed
|
||||
ReadRegStr $PREV_INST_DIR HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" ""
|
||||
StrCmp $PREV_INST_DIR "" noPrevInstall
|
||||
; We want to use the user's costom dir if he used one
|
||||
StrCmp $PREV_INST_DIR "$PROGRAMFILES\SABnzbd" noSpecialDir
|
||||
StrCmp $PREV_INST_DIR "$PROGRAMFILES64\SABnzbd" noSpecialDir
|
||||
; Set what the user had before
|
||||
StrCpy $INSTDIR "$PREV_INST_DIR"
|
||||
noSpecialDir:
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Check what the user has currently set for install options
|
||||
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartup
|
||||
SectionSetFlags ${startup} 1
|
||||
endCheckStartup:
|
||||
|
||||
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
|
||||
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
|
||||
endCheckDesktop:
|
||||
|
||||
Push $1
|
||||
ReadRegStr $1 HKCR ".nzb" "" ; read current file association
|
||||
StrCmp "$1" "NZB File" noPrevInstall 0
|
||||
SectionSetFlags ${assoc} 0 ; Uncheck it when it wasn't checked before
|
||||
noPrevInstall:
|
||||
|
||||
;--------------------------------
|
||||
; Display language chooser
|
||||
!insertmacro MUI_LANGDLL_DISPLAY
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; make sure user terminates sabnzbd.exe or else abort
|
||||
;
|
||||
loop:
|
||||
${nsProcess::FindProcess} "SABnzbd.exe" $R0
|
||||
StrCmp $R0 0 0 endcheck
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
|
||||
exitinstall:
|
||||
${nsProcess::Unload}
|
||||
Abort
|
||||
endcheck:
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; make sure both services aren't running
|
||||
;
|
||||
!insertmacro SERVICE "running" "SABnzbd" ""
|
||||
Pop $0 ;response
|
||||
!insertmacro SERVICE "running" "SABHelper" ""
|
||||
Pop $1
|
||||
${If} $0 == true
|
||||
${OrIf} $1 == true
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
|
||||
; exitinstall already defined above
|
||||
${EndIf}
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Tell users about the service change
|
||||
;
|
||||
!insertmacro SERVICE "installed" "SABHelper" ""
|
||||
Pop $0 ;response
|
||||
${If} $0 == true
|
||||
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgServChange) IDOK removeservices IDCANCEL exitinstall
|
||||
; exitinstall already defined above
|
||||
removeservices:
|
||||
!insertmacro SERVICE "delete" "SABHelper" ""
|
||||
!insertmacro SERVICE "delete" "SABnzbd" ""
|
||||
${EndIf}
|
||||
|
||||
FunctionEnd
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Show the shortcuts at end of install so user can start SABnzbd
|
||||
; This is instead of us trying to run SAB from the installer
|
||||
;
|
||||
Function .onInstSuccess
|
||||
ExecShell "open" "$SMPROGRAMS\$STARTMENU_FOLDER"
|
||||
FunctionEnd
|
||||
|
||||
;--------------------------------
|
||||
; begin uninstall settings/section
|
||||
UninstallText $(MsgUninstall)
|
||||
|
||||
Section "un.$(MsgDelProgram)" Uninstall
|
||||
;make sure sabnzbd.exe isnt running..if so shut it down
|
||||
${nsProcess::KillProcess} "SABnzbd.exe" $R0
|
||||
${nsProcess::Unload}
|
||||
DetailPrint "Process Killed"
|
||||
|
||||
|
||||
; add delete commands to delete whatever files/registry keys/etc you installed here.
|
||||
Delete "$INSTDIR\uninstall.exe"
|
||||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd"
|
||||
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd"
|
||||
|
||||
${RemovePrev} "$INSTDIR"
|
||||
|
||||
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
|
||||
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
|
||||
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
|
||||
RMDir "$SMPROGRAMS\$MUI_TEMP"
|
||||
|
||||
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
|
||||
|
||||
Delete "$DESKTOP\SABnzbd.lnk"
|
||||
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
|
||||
|
||||
${unregisterExtension} ".nzb" "NZB File"
|
||||
${RefreshShellIcons}
|
||||
|
||||
SectionEnd ; end of uninstall section
|
||||
|
||||
Section /o "un.$(MsgDelSettings)" DelSettings
|
||||
DetailPrint "Uninstall settings $LOCALAPPDATA"
|
||||
Delete "$LOCALAPPDATA\sabnzbd\sabnzbd.ini"
|
||||
RMDir /r "$LOCALAPPDATA\sabnzbd"
|
||||
SectionEnd
|
||||
|
||||
; eof
|
||||
|
||||
;--------------------------------
|
||||
;Language strings
|
||||
LangString MsgShowRelNote ${LANG_ENGLISH} "Show Release Notes"
|
||||
|
||||
LangString MsgSupportUs ${LANG_ENGLISH} "Support the project, Donate!"
|
||||
|
||||
LangString MsgCloseSab ${LANG_ENGLISH} "Please close $\"SABnzbd.exe$\" first"
|
||||
|
||||
LangString MsgServChange ${LANG_ENGLISH} "The SABnzbd Windows Service changed in SABnzbd 3.0.0. $\nYou will need to reinstall the SABnzbd service. $\n$\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
|
||||
|
||||
LangString MsgOnly64bit ${LANG_ENGLISH} "The installer only supports 64-bit Windows, use the standalone version to run on 32-bit Windows."
|
||||
|
||||
LangString MsgNoWin7 ${LANG_ENGLISH} "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
|
||||
|
||||
LangString MsgUninstall ${LANG_ENGLISH} "This will uninstall SABnzbd from your system"
|
||||
|
||||
LangString MsgRunAtStart ${LANG_ENGLISH} "Run at startup"
|
||||
|
||||
LangString MsgIcon ${LANG_ENGLISH} "Desktop Icon"
|
||||
|
||||
LangString MsgAssoc ${LANG_ENGLISH} "NZB File association"
|
||||
|
||||
LangString MsgDelProgram ${LANG_ENGLISH} "Delete Program"
|
||||
|
||||
LangString MsgDelSettings ${LANG_ENGLISH} "Delete Settings"
|
||||
|
||||
LangString MsgRemoveOld ${LANG_ENGLISH} "You cannot overwrite an existing installation. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
|
||||
LangString MsgRemoveOld2 ${LANG_ENGLISH} "Your settings and data will be preserved."
|
||||
|
||||
LangString MsgLangCode ${LANG_ENGLISH} "en"
|
||||
|
||||
Function un.onInit
|
||||
!insertmacro MUI_UNGETLANGUAGE
|
||||
FunctionEnd
|
||||
28
builder/win/nsis/Include/nsProcess.nsh
Normal file
28
builder/win/nsis/Include/nsProcess.nsh
Normal file
@@ -0,0 +1,28 @@
|
||||
!define nsProcess::FindProcess `!insertmacro nsProcess::FindProcess`
|
||||
|
||||
!macro nsProcess::FindProcess _FILE _ERR
|
||||
nsProcess::_FindProcess /NOUNLOAD `${_FILE}`
|
||||
Pop ${_ERR}
|
||||
!macroend
|
||||
|
||||
|
||||
!define nsProcess::KillProcess `!insertmacro nsProcess::KillProcess`
|
||||
|
||||
!macro nsProcess::KillProcess _FILE _ERR
|
||||
nsProcess::_KillProcess /NOUNLOAD `${_FILE}`
|
||||
Pop ${_ERR}
|
||||
!macroend
|
||||
|
||||
!define nsProcess::CloseProcess `!insertmacro nsProcess::CloseProcess`
|
||||
|
||||
!macro nsProcess::CloseProcess _FILE _ERR
|
||||
nsProcess::_CloseProcess /NOUNLOAD `${_FILE}`
|
||||
Pop ${_ERR}
|
||||
!macroend
|
||||
|
||||
|
||||
!define nsProcess::Unload `!insertmacro nsProcess::Unload`
|
||||
|
||||
!macro nsProcess::Unload
|
||||
nsProcess::_Unload
|
||||
!macroend
|
||||
53
builder/win/nsis/Include/registerExtension.nsh
Normal file
53
builder/win/nsis/Include/registerExtension.nsh
Normal file
@@ -0,0 +1,53 @@
|
||||
!define registerExtension "!insertmacro registerExtension"
|
||||
!define unregisterExtension "!insertmacro unregisterExtension"
|
||||
!define SHCNE_ASSOCCHANGED 0x8000000
|
||||
!define SHCNF_IDLIST 0
|
||||
|
||||
; Source = http://nsis.sourceforge.net/File_Association
|
||||
; Patched for SABnzbd by swi-tch
|
||||
|
||||
!macro registerExtension icon executable extension description
|
||||
Push "${icon}" ; "full path to icon.ico"
|
||||
Push "${executable}" ; "full path to my.exe"
|
||||
Push "${extension}" ; ".mkv"
|
||||
Push "${description}" ; "MKV File"
|
||||
Call registerExtension
|
||||
!macroend
|
||||
|
||||
; back up old value of .opt
|
||||
Function registerExtension
|
||||
!define Index "Line${__LINE__}"
|
||||
pop $R0 ; ext name
|
||||
pop $R1
|
||||
pop $R2
|
||||
pop $R3
|
||||
push $1
|
||||
push $0
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\$R1"
|
||||
WriteRegStr HKCR $R1 "" $R0
|
||||
WriteRegStr HKCR $R0 "" $R0
|
||||
WriteRegStr HKCR "$R0\shell" "" "open"
|
||||
WriteRegStr HKCR "$R0\DefaultIcon" "" "$R3,0"
|
||||
WriteRegStr HKCR "$R0\shell\open\command" "" '"$R2" "%1"'
|
||||
WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0"
|
||||
WriteRegStr HKCR "$R0\shell\edit\command" "" '"$R2" "%1"'
|
||||
pop $0
|
||||
pop $1
|
||||
!undef Index
|
||||
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||
FunctionEnd
|
||||
|
||||
!macro unregisterExtension extension description
|
||||
Push "${extension}" ; ".mkv"
|
||||
Push "${description}" ; "MKV File"
|
||||
Call un.unregisterExtension
|
||||
!macroend
|
||||
|
||||
Function un.unregisterExtension
|
||||
pop $R1 ; description
|
||||
pop $R0 ; extension
|
||||
!define Index "Line${__LINE__}"
|
||||
DeleteRegKey HKCR $R0
|
||||
!undef Index
|
||||
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
|
||||
FunctionEnd
|
||||
411
builder/win/nsis/Include/servicelib.nsh
Normal file
411
builder/win/nsis/Include/servicelib.nsh
Normal file
@@ -0,0 +1,411 @@
|
||||
; NSIS SERVICE LIBRARY - servicelib.nsh
|
||||
; Version 1.8.1 - Jun 21th, 2013
|
||||
; Questions/Comments - dselkirk@hotmail.com
|
||||
;
|
||||
; Description:
|
||||
; Provides an interface to window services
|
||||
;
|
||||
; Inputs:
|
||||
; action - systemlib action ie. create, delete, start, stop, pause,
|
||||
; continue, installed, running, status
|
||||
; name - name of service to manipulate
|
||||
; param - action parameters; usage: var1=value1;var2=value2;...etc.
|
||||
; (don't forget to add a ';' after the last value!)
|
||||
;
|
||||
; Actions:
|
||||
; create - creates a new windows service
|
||||
; Parameters:
|
||||
; path - path to service executable
|
||||
; autostart - automatically start with system ie. 1|0
|
||||
; interact - interact with the desktop ie. 1|0
|
||||
; depend - service dependencies
|
||||
; user - user that runs the service
|
||||
; password - password of the above user
|
||||
; display - display name in service's console
|
||||
; description - Description of service
|
||||
; starttype - start type (supersedes autostart)
|
||||
; servicetype - service type (supersedes interact)
|
||||
;
|
||||
; delete - deletes a windows service
|
||||
; start - start a stopped windows service
|
||||
; stop - stops a running windows service
|
||||
; pause - pauses a running windows service
|
||||
; continue - continues a paused windows service
|
||||
; installed - is the provided service installed
|
||||
; Parameters:
|
||||
; action - if true then invokes the specified action
|
||||
; running - is the provided service running
|
||||
; Parameters:
|
||||
; action - if true then invokes the specified action
|
||||
; status - check the status of the provided service
|
||||
;
|
||||
; Usage:
|
||||
; Method 1:
|
||||
; Push "action"
|
||||
; Push "name"
|
||||
; Push "param"
|
||||
; Call Service
|
||||
; Pop $0 ;response
|
||||
;
|
||||
; Method 2:
|
||||
; !insertmacro SERVICE "action" "name" "param"
|
||||
;
|
||||
; History:
|
||||
; 1.0 - 09/15/2003 - Initial release
|
||||
; 1.1 - 09/16/2003 - Changed &l to i, thx brainsucker
|
||||
; 1.2 - 02/29/2004 - Fixed documentation.
|
||||
; 1.3 - 01/05/2006 - Fixed interactive flag and pop order (Kichik)
|
||||
; 1.4 - 12/07/2006 - Added display and depend, fixed datatypes (Vitoco)
|
||||
; 1.5 - 06/25/2008 - Added description of service.(DeSafe.com/liuqixing#gmail.com)
|
||||
; 1.5.1 - 06/12/2009 - Added use of __UNINSTALL__
|
||||
; 1.6 - 08/02/2010 - Fixed description implementation (Anders)
|
||||
; 1.7 - 04/11/2010 - Added get running service process id (Nico)
|
||||
; 1.8 - 24/03/2011 - Added starttype and servicetype (Sergius)
|
||||
; 1.8.1 - 21/06/2013 - Added dynamic ASCII & Unicode support (Zinthose)
|
||||
|
||||
!ifndef SERVICELIB
|
||||
!define SERVICELIB
|
||||
|
||||
!define SC_MANAGER_ALL_ACCESS 0x3F
|
||||
!define SC_STATUS_PROCESS_INFO 0x0
|
||||
!define SERVICE_ALL_ACCESS 0xF01FF
|
||||
|
||||
!define SERVICE_CONTROL_STOP 1
|
||||
!define SERVICE_CONTROL_PAUSE 2
|
||||
!define SERVICE_CONTROL_CONTINUE 3
|
||||
|
||||
!define SERVICE_STOPPED 0x1
|
||||
!define SERVICE_START_PENDING 0x2
|
||||
!define SERVICE_STOP_PENDING 0x3
|
||||
!define SERVICE_RUNNING 0x4
|
||||
!define SERVICE_CONTINUE_PENDING 0x5
|
||||
!define SERVICE_PAUSE_PENDING 0x6
|
||||
!define SERVICE_PAUSED 0x7
|
||||
|
||||
!define SERVICE_KERNEL_DRIVER 0x00000001
|
||||
!define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
|
||||
!define SERVICE_WIN32_OWN_PROCESS 0x00000010
|
||||
!define SERVICE_WIN32_SHARE_PROCESS 0x00000020
|
||||
!define SERVICE_INTERACTIVE_PROCESS 0x00000100
|
||||
|
||||
|
||||
!define SERVICE_BOOT_START 0x00000000
|
||||
!define SERVICE_SYSTEM_START 0x00000001
|
||||
!define SERVICE_AUTO_START 0x00000002
|
||||
!define SERVICE_DEMAND_START 0x00000003
|
||||
!define SERVICE_DISABLED 0x00000004
|
||||
|
||||
## Added by Zinthose for Native Unicode Support
|
||||
!ifdef NSIS_UNICODE
|
||||
!define APITAG "W"
|
||||
!else
|
||||
!define APITAG "A"
|
||||
!endif
|
||||
|
||||
!macro SERVICE ACTION NAME PARAM
|
||||
Push '${ACTION}'
|
||||
Push '${NAME}'
|
||||
Push '${PARAM}'
|
||||
!ifdef __UNINSTALL__
|
||||
Call un.Service
|
||||
!else
|
||||
Call Service
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
!macro FUNC_GETPARAM
|
||||
Push $0
|
||||
Push $1
|
||||
Push $2
|
||||
Push $3
|
||||
Push $4
|
||||
Push $5
|
||||
Push $6
|
||||
Push $7
|
||||
Exch 8
|
||||
Pop $1 ;name
|
||||
Exch 8
|
||||
Pop $2 ;source
|
||||
StrCpy $0 ""
|
||||
StrLen $7 $2
|
||||
StrCpy $3 0
|
||||
lbl_loop:
|
||||
IntCmp $3 $7 0 0 lbl_done
|
||||
StrLen $4 "$1="
|
||||
StrCpy $5 $2 $4 $3
|
||||
StrCmp $5 "$1=" 0 lbl_next
|
||||
IntOp $5 $3 + $4
|
||||
StrCpy $3 $5
|
||||
lbl_loop2:
|
||||
IntCmp $3 $7 0 0 lbl_done
|
||||
StrCpy $6 $2 1 $3
|
||||
StrCmp $6 ";" 0 lbl_next2
|
||||
IntOp $6 $3 - $5
|
||||
StrCpy $0 $2 $6 $5
|
||||
Goto lbl_done
|
||||
lbl_next2:
|
||||
IntOp $3 $3 + 1
|
||||
Goto lbl_loop2
|
||||
lbl_next:
|
||||
IntOp $3 $3 + 1
|
||||
Goto lbl_loop
|
||||
lbl_done:
|
||||
Pop $5
|
||||
Pop $4
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Exch 2
|
||||
Pop $6
|
||||
Pop $7
|
||||
Exch $0
|
||||
!macroend
|
||||
|
||||
!macro CALL_GETPARAM VAR NAME DEFAULT LABEL
|
||||
Push $1
|
||||
Push ${NAME}
|
||||
Call ${UN}GETPARAM
|
||||
Pop $6
|
||||
StrCpy ${VAR} "${DEFAULT}"
|
||||
StrCmp $6 "" "${LABEL}" 0
|
||||
StrCpy ${VAR} $6
|
||||
!macroend
|
||||
|
||||
!macro FUNC_SERVICE UN
|
||||
Push $0
|
||||
Push $1
|
||||
Push $2
|
||||
Push $3
|
||||
Push $4
|
||||
Push $5
|
||||
Push $6
|
||||
Push $7
|
||||
Exch 8
|
||||
Pop $1 ;param
|
||||
Exch 8
|
||||
Pop $2 ;name
|
||||
Exch 8
|
||||
Pop $3 ;action
|
||||
;$0 return
|
||||
;$4 OpenSCManager
|
||||
;$5 OpenService
|
||||
|
||||
StrCpy $0 "false"
|
||||
System::Call 'advapi32::OpenSCManager${APITAG}(n, n, i ${SC_MANAGER_ALL_ACCESS}) i.r4'
|
||||
IntCmp $4 0 lbl_done
|
||||
StrCmp $3 "create" lbl_create
|
||||
System::Call 'advapi32::OpenService${APITAG}(i r4, t r2, i ${SERVICE_ALL_ACCESS}) i.r5'
|
||||
IntCmp $5 0 lbl_done
|
||||
|
||||
lbl_select:
|
||||
StrCmp $3 "delete" lbl_delete
|
||||
StrCmp $3 "start" lbl_start
|
||||
StrCmp $3 "stop" lbl_stop
|
||||
StrCmp $3 "pause" lbl_pause
|
||||
StrCmp $3 "continue" lbl_continue
|
||||
StrCmp $3 "installed" lbl_installed
|
||||
StrCmp $3 "running" lbl_running
|
||||
StrCmp $3 "status" lbl_status
|
||||
StrCmp $3 "processid" lbl_processid
|
||||
Goto lbl_done
|
||||
|
||||
; create service
|
||||
lbl_create:
|
||||
Push $R1 ;depend
|
||||
Push $R2 ;user
|
||||
Push $R3 ;password
|
||||
Push $R4 ;servicetype/interact
|
||||
Push $R5 ;starttype/autostart
|
||||
Push $R6 ;path
|
||||
Push $R7 ;display
|
||||
Push $R8 ;description
|
||||
|
||||
!insertmacro CALL_GETPARAM $R1 "depend" "n" "lbl_depend"
|
||||
StrCpy $R1 't "$R1"'
|
||||
lbl_depend:
|
||||
StrCmp $R1 "n" 0 lbl_machine ;old name of depend param
|
||||
!insertmacro CALL_GETPARAM $R1 "machine" "n" "lbl_machine"
|
||||
StrCpy $R1 't "$R1"'
|
||||
lbl_machine:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R2 "user" "n" "lbl_user"
|
||||
StrCpy $R2 't "$R2"'
|
||||
lbl_user:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R3 "password" "n" "lbl_password"
|
||||
StrCpy $R3 't "$R3"'
|
||||
lbl_password:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R4 "interact" "${SERVICE_WIN32_OWN_PROCESS}" "lbl_interact"
|
||||
StrCpy $6 ${SERVICE_WIN32_OWN_PROCESS}
|
||||
IntCmp $R4 0 +2
|
||||
IntOp $6 $6 | ${SERVICE_INTERACTIVE_PROCESS}
|
||||
StrCpy $R4 $6
|
||||
lbl_interact:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R4 "servicetype" "$R4" "lbl_servicetype"
|
||||
lbl_servicetype:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R5 "autostart" "${SERVICE_DEMAND_START}" "lbl_autostart"
|
||||
StrCpy $6 ${SERVICE_DEMAND_START}
|
||||
IntCmp $R5 0 +2
|
||||
StrCpy $6 ${SERVICE_AUTO_START}
|
||||
StrCpy $R5 $6
|
||||
lbl_autostart:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R5 "starttype" "$R5" "lbl_starttype"
|
||||
lbl_starttype:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R6 "path" "n" "lbl_path"
|
||||
lbl_path:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R7 "display" "$2" "lbl_display"
|
||||
lbl_display:
|
||||
|
||||
!insertmacro CALL_GETPARAM $R8 "description" "$2" "lbl_description"
|
||||
lbl_description:
|
||||
|
||||
System::Call 'advapi32::CreateService${APITAG}(i r4, t r2, t R7, i ${SERVICE_ALL_ACCESS}, \
|
||||
i R4, i R5, i 0, t R6, n, n, $R1, $R2, $R3) i.r6'
|
||||
|
||||
; write description of service (SERVICE_CONFIG_DESCRIPTION)
|
||||
System::Call 'advapi32::ChangeServiceConfig2${APITAG}(ir6,i1,*t "$R8")i.R7'
|
||||
strcmp $R7 "error" 0 lbl_descriptioncomplete
|
||||
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\$2" "Description" $R8
|
||||
lbl_descriptioncomplete:
|
||||
|
||||
Pop $R8
|
||||
Pop $R7
|
||||
Pop $R6
|
||||
Pop $R5
|
||||
Pop $R4
|
||||
Pop $R3
|
||||
Pop $R2
|
||||
Pop $R1
|
||||
StrCmp $6 0 lbl_done lbl_good
|
||||
|
||||
; delete service
|
||||
lbl_delete:
|
||||
System::Call 'advapi32::DeleteService(i r5) i.r6'
|
||||
StrCmp $6 0 lbl_done lbl_good
|
||||
|
||||
; start service
|
||||
lbl_start:
|
||||
System::Call 'advapi32::StartService${APITAG}(i r5, i 0, i 0) i.r6'
|
||||
StrCmp $6 0 lbl_done lbl_good
|
||||
|
||||
; stop service
|
||||
lbl_stop:
|
||||
Push $R1
|
||||
System::Call '*(i,i,i,i,i,i,i) i.R1'
|
||||
System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_STOP}, i $R1) i'
|
||||
System::Free $R1
|
||||
Pop $R1
|
||||
StrCmp $6 0 lbl_done lbl_good
|
||||
|
||||
; pause service
|
||||
lbl_pause:
|
||||
Push $R1
|
||||
System::Call '*(i,i,i,i,i,i,i) i.R1'
|
||||
System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_PAUSE}, i $R1) i'
|
||||
System::Free $R1
|
||||
Pop $R1
|
||||
StrCmp $6 0 lbl_done lbl_good
|
||||
|
||||
; continue service
|
||||
lbl_continue:
|
||||
Push $R1
|
||||
System::Call '*(i,i,i,i,i,i,i) i.R1'
|
||||
System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_CONTINUE}, i $R1) i'
|
||||
System::Free $R1
|
||||
Pop $R1
|
||||
StrCmp $6 0 lbl_done lbl_good
|
||||
|
||||
; is installed
|
||||
lbl_installed:
|
||||
!insertmacro CALL_GETPARAM $7 "action" "" "lbl_good"
|
||||
StrCpy $3 $7
|
||||
Goto lbl_select
|
||||
|
||||
; is service running
|
||||
lbl_running:
|
||||
Push $R1
|
||||
System::Call '*(i,i,i,i,i,i,i) i.R1'
|
||||
System::Call 'advapi32::QueryServiceStatus(i r5, i $R1) i'
|
||||
System::Call '*$R1(i, i.r6)'
|
||||
System::Free $R1
|
||||
Pop $R1
|
||||
IntFmt $6 "0x%X" $6
|
||||
StrCmp $6 ${SERVICE_RUNNING} 0 lbl_done
|
||||
!insertmacro CALL_GETPARAM $7 "action" "" "lbl_good"
|
||||
StrCpy $3 $7
|
||||
Goto lbl_select
|
||||
|
||||
lbl_status:
|
||||
Push $R1
|
||||
System::Call '*(i,i,i,i,i,i,i) i.R1'
|
||||
System::Call 'advapi32::QueryServiceStatus(i r5, i $R1) i'
|
||||
System::Call '*$R1(i, i .r6)'
|
||||
System::Free $R1
|
||||
Pop $R1
|
||||
IntFmt $6 "0x%X" $6
|
||||
StrCpy $0 "running"
|
||||
IntCmp $6 ${SERVICE_RUNNING} lbl_done
|
||||
StrCpy $0 "stopped"
|
||||
IntCmp $6 ${SERVICE_STOPPED} lbl_done
|
||||
StrCpy $0 "start_pending"
|
||||
IntCmp $6 ${SERVICE_START_PENDING} lbl_done
|
||||
StrCpy $0 "stop_pending"
|
||||
IntCmp $6 ${SERVICE_STOP_PENDING} lbl_done
|
||||
StrCpy $0 "running"
|
||||
IntCmp $6 ${SERVICE_RUNNING} lbl_done
|
||||
StrCpy $0 "continue_pending"
|
||||
IntCmp $6 ${SERVICE_CONTINUE_PENDING} lbl_done
|
||||
StrCpy $0 "pause_pending"
|
||||
IntCmp $6 ${SERVICE_PAUSE_PENDING} lbl_done
|
||||
StrCpy $0 "paused"
|
||||
IntCmp $6 ${SERVICE_PAUSED} lbl_done
|
||||
StrCpy $0 "unknown"
|
||||
Goto lbl_done
|
||||
|
||||
lbl_processid:
|
||||
Push $R1
|
||||
Push $R2
|
||||
System::Call '*(i,i,i,i,i,i,i,i,i) i.R1'
|
||||
System::Call '*(i 0) i.R2'
|
||||
System::Call "advapi32::QueryServiceStatusEx(i r5, i ${SC_STATUS_PROCESS_INFO}, i $R1, i 36, i $R2) i"
|
||||
System::Call "*$R1(i,i,i,i,i,i,i, i .r0)"
|
||||
System::Free $R2
|
||||
System::Free $R1
|
||||
Pop $R2
|
||||
Pop $R1
|
||||
Goto lbl_done
|
||||
|
||||
lbl_good:
|
||||
StrCpy $0 "true"
|
||||
lbl_done:
|
||||
IntCmp $5 0 +2
|
||||
System::Call 'advapi32::CloseServiceHandle(i r5) n'
|
||||
IntCmp $4 0 +2
|
||||
System::Call 'advapi32::CloseServiceHandle(i r4) n'
|
||||
Pop $4
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Exch 3
|
||||
Pop $5
|
||||
Pop $7
|
||||
Pop $6
|
||||
Exch $0
|
||||
!macroend
|
||||
|
||||
Function Service
|
||||
!insertmacro FUNC_SERVICE ""
|
||||
FunctionEnd
|
||||
|
||||
Function GetParam
|
||||
!insertmacro FUNC_GETPARAM
|
||||
FunctionEnd
|
||||
|
||||
!undef APITAG
|
||||
!endif
|
||||
BIN
builder/win/nsis/Plugins/liteFirewallW.dll
Normal file
BIN
builder/win/nsis/Plugins/liteFirewallW.dll
Normal file
Binary file not shown.
BIN
builder/win/nsis/Plugins/nsProcess.dll
Normal file
BIN
builder/win/nsis/Plugins/nsProcess.dll
Normal file
Binary file not shown.
@@ -4,7 +4,7 @@
|
||||
#set global $root = '../../'#
|
||||
#end if#
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="$active_lang">
|
||||
<html lang="$active_lang" #if $rtl#dir="rtl"#end if#>
|
||||
<head>
|
||||
<title>
|
||||
SABnzbd $T('menu-config')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Config"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/configure"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/configure"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<!--#from sabnzbd.encoding import CODEPAGE#-->
|
||||
@@ -9,7 +9,7 @@
|
||||
<tbody>
|
||||
<tr>
|
||||
<th scope="row">$T('version'): </th>
|
||||
<td>$version [$build]</td>
|
||||
<td>$version [<a href="https://github.com/sabnzbd/sabnzbd/commit/$build" target="_blank">$build</a>]</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th scope="row">$T('uptime'): </th>
|
||||
@@ -124,7 +124,7 @@
|
||||
|
||||
<div class="colmask">
|
||||
<div class="padding alt">
|
||||
<h5 class="copyright">Copyright © 2007-2020 The SABnzbd Team <<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>></h5>
|
||||
<h5 class="copyright">Copyright © 2007-2021 The SABnzbd Team <<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>></h5>
|
||||
<p class="copyright"><small>$T('yourRights')</small></p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Categories"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/categories"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/categories"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
<div class="colmask">
|
||||
<div class="section">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Folders"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/folders"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/folders"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
@@ -28,7 +28,7 @@
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="download_free">$T('opt-download_free')</label>
|
||||
<input type="text" name="download_free" id="download_free" value="$download_free" class="smaller_input" />
|
||||
<input type="text" name="download_free" id="download_free" value="$download_free" class="smaller_input" />
|
||||
<span class="desc">$T('explain-download_free')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
@@ -36,6 +36,16 @@
|
||||
<input type="text" name="complete_dir" id="complete_dir" value="$complete_dir" data-initialdir="$my_home" />
|
||||
<span class="desc">$T('explain-complete_dir')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="complete_free">$T('opt-complete_free')</label>
|
||||
<input type="text" name="complete_free" id="complete_free" value="$complete_free" class="smaller_input" />
|
||||
<span class="desc">$T('explain-download_free') <br>$T('explain-complete_free')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="fulldisk_autoresume">$T('opt-fulldisk_autoresume')</label>
|
||||
<input type="checkbox" name="fulldisk_autoresume" id="fulldisk_autoresume" value="1" <!--#if int($fulldisk_autoresume) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-fulldisk_autoresume')</span>
|
||||
</div>
|
||||
<!--#if not $nt#-->
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="permissions">$T('opt-permissions')</label>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="General"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/general"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/general"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
@@ -32,6 +32,7 @@
|
||||
<label class="config" for="enable_https">$T('opt-enable_https')</label>
|
||||
<input type="checkbox" name="enable_https" id="enable_https" value="1" <!--#if int($enable_https) > 0 then 'checked="checked" data-original="1"' else ""#-->/>
|
||||
<span class="desc">$T('explain-enable_https')</span>
|
||||
<span class="desc"><span class="label label-warning">$T('warning').upper()</span> $T('explain-enable_https_warning')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="web_dir">$T('opt-web_dir')</label>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Email"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/notifications"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/notifications"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<!--#def show_notify_checkboxes($section_label)#-->
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!--#set global $pane="RSS"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/rss"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/rss"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
<!--#import html#-->
|
||||
<div class="colmask">
|
||||
<!--#if not $active_feed#-->
|
||||
<div class="section">
|
||||
@@ -13,7 +14,7 @@
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>$T('name')</th>
|
||||
<th>$T('feed') URL</th>
|
||||
<th>$T('feed') URLs</th>
|
||||
<th> </th>
|
||||
</tr>
|
||||
<tr class="even">
|
||||
@@ -45,9 +46,10 @@
|
||||
<!--#set $odd = False#-->
|
||||
<!--#for $feed_item in $feeds#-->
|
||||
<!--#set $odd = not $odd#-->
|
||||
<!--#set $feed_item_html = html.escape($feed_item)#-->
|
||||
<tr class="data-row <!--#if $odd then " alt " else " "#-->">
|
||||
<td class="chk">
|
||||
<input type="checkbox" class="toggleFeedCheckbox" name="enable" value="1" <!--#if int($rss[$feed_item]['enable']) !=0 then 'checked="checked"' else ""#--> rel="$feed_item" />
|
||||
<input type="checkbox" class="toggleFeedCheckbox" name="enable" value="1" <!--#if int($rss[$feed_item]['enable']) !=0 then 'checked="checked"' else ""#--> rel="$feed_item_html" />
|
||||
</td>
|
||||
<td class="title">
|
||||
<a href="?feed=$rss[$feed_item]['link']" class="subscription-title path feed <!--#if int($rss[$feed_item]['enable']) != 0 then 'feed_enabled' else 'feed_disabled'#-->">
|
||||
@@ -55,10 +57,10 @@
|
||||
</a>
|
||||
</td>
|
||||
<td class="controls">
|
||||
<button type="button" class="btn btn-default testFeed" rel="$feed_item"><span class="glyphicon glyphicon-sort"></span> $T('button-preFeed')</button>
|
||||
<button type="button" class="btn btn-default testFeed" rel="$feed_item_html"><span class="glyphicon glyphicon-sort"></span> $T('button-preFeed')</button>
|
||||
<input type="hidden" name="uri" value="$rss[$feed_item]['uris']" />
|
||||
<button type="button" class="btn btn-default editFeed" rel="$feed_item"><span class="glyphicon glyphicon-pencil"></span> $T('Edit')</button>
|
||||
<button type="button" class="btn btn-default delFeed" rel="$feed_item"><span class="glyphicon glyphicon-trash"></span></button>
|
||||
<button type="button" class="btn btn-default editFeed" rel="$feed_item_html"><span class="glyphicon glyphicon-pencil"></span> $T('rss-edit')</button>
|
||||
<button type="button" class="btn btn-default delFeed" rel="$feed_item_html"><span class="glyphicon glyphicon-trash"></span></button>
|
||||
</td>
|
||||
</tr>
|
||||
<!--#for $uri_index, $uri in enumerate($rss[$feed_item]['uri'])#-->
|
||||
@@ -90,7 +92,7 @@
|
||||
<label class="config narrow" for="rss_rate">$T('opt-rss_rate')</label>
|
||||
<input type="number" name="rss_rate" id="rss_rate" value="$rss_rate" min="15" max="1440" />
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> $T('button-save')</button>
|
||||
<span class="config narrow"> $T('Next scan at:') $rss_next</span>
|
||||
<span class="config narrow"> $T('rss-nextscan'): $rss_next</span>
|
||||
<span class="desc narrow">$T('explain-rss_rate')</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
@@ -106,12 +108,12 @@
|
||||
<a class="main-helplink" href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
|
||||
<h2 class="nomargin activeRSS">
|
||||
<a href="${root}config/rss/">$T('cmenu-rss')</a> »
|
||||
<a href="$rss[$active_feed]['uri']" onclick="window.open(this.href); return false;">$active_feed</a>
|
||||
$active_feed
|
||||
</h2>
|
||||
<!--#if $error#-->
|
||||
<div class="alert alert-danger">
|
||||
<span class="glyphicon glyphicon-exclamation-sign"></span>
|
||||
$error
|
||||
<!--#echo html.escape($error)#-->
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
<form action="upd_rss_feed" method="post">
|
||||
@@ -508,9 +510,37 @@
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<!-- /colmask -->
|
||||
|
||||
<form method="post" action="save_rss_feed" class="modal fade" id="rss_edit_modal">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">$T('Edit') <span id="feed_edit_name_label"></span></h4>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="form-group">
|
||||
<label for="feed_edit_new_name">$T('name')</label>
|
||||
<input type="text" class="form-control" name="feed_new_name" id="feed_edit_new_name" placeholder="$T('name')" size="">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="feed_edit_url">$T('feed') URLs</label>
|
||||
<input type="text" class="form-control" name="uri" id="feed_edit_url" placeholder="$T('feed') URLs" size="">
|
||||
<span class="help-block">$T('addMultipleFeeds')</span>
|
||||
</div>
|
||||
<input type="hidden" name="feed" id="feed_edit_old_name" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> $T('cancel')</button>
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> $T('rss-accept')</button>
|
||||
</div>
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
||||
</form><!-- /.modal -->
|
||||
|
||||
<script type="text/javascript" src="${root}staticcfg/js/jquery.tablesort.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
function urlencode(str) {
|
||||
@@ -537,20 +567,16 @@ function urlencode(str) {
|
||||
|
||||
\$('.editFeed').click(function(){
|
||||
var oldURI = \$(this).prev().val();
|
||||
var newURI = prompt("$T('feed') URL. \n$T('addMultipleFeeds').", oldURI );
|
||||
if(newURI != "" && newURI !== null) {
|
||||
var whichFeed = \$(this).attr("rel");
|
||||
var isEnabled = \$('.toggleFeedCheckbox[rel="'+whichFeed+'"]').attr('checked') == "checked"? 1 : 0;
|
||||
\$.ajax({
|
||||
type: "POST",
|
||||
url: "save_rss_feed",
|
||||
data: {feed: whichFeed, uri: newURI, enable: isEnabled, apikey: "$apikey" }
|
||||
}).done(function( msg ) {
|
||||
location.reload();
|
||||
});
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
var whichFeed = \$(this).attr("rel");
|
||||
|
||||
// Fill the values
|
||||
\$('#feed_edit_name_label').text(whichFeed)
|
||||
\$('#feed_edit_old_name').val(whichFeed)
|
||||
\$('#feed_edit_new_name').val(whichFeed)
|
||||
\$('#feed_edit_url').val(oldURI)
|
||||
|
||||
// Show the modal
|
||||
\$('#rss_edit_modal').modal('show');
|
||||
});
|
||||
|
||||
\$('.delFeed').click(function(e){
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Scheduling"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/scheduling"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/scheduling"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<%
|
||||
@@ -50,7 +50,7 @@ else:
|
||||
<select name="action" id="action">
|
||||
<optgroup label="$T('sch-action')">
|
||||
<!--#for $action in $actions#-->
|
||||
<option value="$action" data-action="" data-noarg="<!--#if $action is 'speedlimit' then 0 else 1#-->">$actions_lng[$action]</option>
|
||||
<option value="$action" data-action="" data-noarg="<!--#if $action == 'speedlimit' then 0 else 1#-->">$actions_lng[$action]</option>
|
||||
<!--#end for#-->
|
||||
</optgroup>
|
||||
<optgroup label="$T('cmenu-servers')">
|
||||
|
||||
@@ -1,49 +1,15 @@
|
||||
<!--#set global $pane="Servers"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/servers"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/servers"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<!--
|
||||
We need to find how many months we have recorded so far, so we
|
||||
loop over all the dates to find the lowest value and then use
|
||||
this to calculate the date-selector and maximum value per month.
|
||||
-->
|
||||
<!--#import json#-->
|
||||
<!--#import datetime#-->
|
||||
<!--#import sabnzbd.misc#-->
|
||||
|
||||
<!--#set month_names = [$T('January'), $T('February'), $T('March'), $T('April'), $T('May'), $T('June'), $T('July'), $T('August'), $T('September'), $T('October'), $T('November'), $T('December')] #-->
|
||||
<!--#set min_date = datetime.date.today()#-->
|
||||
<!--#set max_data_all = {}#-->
|
||||
|
||||
<!--#for $server in $servers #-->
|
||||
<!--#if 'amounts' in $server#-->
|
||||
<!--#set max_data_server = {}#-->
|
||||
<!--#for date in $server['amounts'][4]#-->
|
||||
<!--#set split_date = $date.split('-')#-->
|
||||
<!--#set min_date = min(min_date, datetime.date(int(split_date[0]), int(split_date[1]), 1))#-->
|
||||
|
||||
<!--#set month_date = $date[:7]#-->
|
||||
<!--#if $month_date not in $max_data_server#-->
|
||||
<!--#set max_data_server[$month_date] = 0#-->
|
||||
<!--#end if#-->
|
||||
<!--#set max_data_server[$month_date] = max(max_data_server[$month_date], $server['amounts'][4][$date])#-->
|
||||
<!--#end for#-->
|
||||
|
||||
<!--#for month_date in max_data_server#-->
|
||||
<!--#if $month_date not in $max_data_all#-->
|
||||
<!--#set max_data_all[$month_date] = 0#-->
|
||||
<!--#end if#-->
|
||||
<!--#set max_data_all[$month_date] = max(max_data_all[$month_date], max_data_server[$month_date])#-->
|
||||
<!--#end for#-->
|
||||
<!--#end if#-->
|
||||
<!--#end for#-->
|
||||
|
||||
<!--#set months_recorded = list(sabnzbd.misc.monthrange(min_date, datetime.date.today()))#-->
|
||||
<!--#$months_recorded.reverse()#-->
|
||||
|
||||
<script type="text/javascript">
|
||||
// Define variable needed for the server-plots
|
||||
var serverData = {}
|
||||
<script type="text/javascript" xmlns="http://www.w3.org/1999/html">
|
||||
// Define variable needed for the server-statistics
|
||||
var serverBandwithData = {}
|
||||
var serverArticleTries = {}
|
||||
var serverArticleFailed = {}
|
||||
</script>
|
||||
|
||||
<div class="colmask">
|
||||
@@ -53,21 +19,13 @@
|
||||
<input type="checkbox" id="advanced-settings-button" name="advanced-settings-button"> $T('button-advanced')
|
||||
</label>
|
||||
|
||||
<!--#if $months_recorded#-->
|
||||
<div class="advanced-buttonSeperator"></div>
|
||||
<div class="chart-selector-container" title="$T('srv-bandwidth')">
|
||||
<div class="chart-selector-container" title="$T('selectedDates')">
|
||||
<span class="glyphicon glyphicon-signal"></span>
|
||||
<select name="chart-selector" id="chart-selector">
|
||||
<!--#for $cur_date in months_recorded#-->
|
||||
<!--#set month_date = '%d-%02d' % ($cur_date.year, $cur_date.month)#-->
|
||||
<!--#if $month_date not in $max_data_all#-->
|
||||
<!--#set max_data_all[$month_date] = 0#-->
|
||||
<!--#end if#-->
|
||||
<option value="$month_date" data-max="$max_data_all[$month_date]">$month_names[$cur_date.month-1] $cur_date.year</option>
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
<!--#set today = datetime.date.today()#-->
|
||||
<input type="date" name="chart-start" id="chart-start" value="<!--#echo (today-datetime.timedelta(days=30)).strftime('%Y-%m-%d')#-->"> -
|
||||
<input type="date" name="chart-end" id="chart-end" value="<!--#echo today.strftime('%Y-%m-%d')#-->">
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="section" id="addServerContent" style="display: none;">
|
||||
<div class="col2">
|
||||
@@ -82,6 +40,10 @@
|
||||
<input type="checkbox" name="enable" id="enable" value="1" checked="checked" />
|
||||
<span class="desc">$T('srv-enable')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="displayname">$T('srv-displayname')</label>
|
||||
<input type="text" name="displayname" id="displayname" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="host">$T('srv-host')</label>
|
||||
<input type="text" name="host" id="host" required />
|
||||
@@ -106,7 +68,7 @@
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="connections">$T('srv-connections')</label>
|
||||
<input type="number" name="connections" id="connections" min="1" max="100" value="8" required />
|
||||
<input type="number" name="connections" id="connections" min="1" max="1000" value="8" required />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority">$T('srv-priority')</label>
|
||||
@@ -146,8 +108,14 @@
|
||||
<span class="desc">$T('explain-optional')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="displayname">$T('srv-displayname')</label>
|
||||
<input type="text" name="displayname" id="displayname" />
|
||||
<label class="config" for="expire_date">$T('srv-expire_date')</label>
|
||||
<input type="date" name="expire_date" id="expire_date" />
|
||||
<span class="desc">$T('srv-explain-expire_date')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="quota">$T('swtag-quota')</label>
|
||||
<input type="text" name="quota" id="quota" class="smaller_input" />
|
||||
<span class="desc">$T('srv-explain-quota')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="notes">$T('srv-notes')</label>
|
||||
@@ -197,6 +165,10 @@
|
||||
<div class="col1" style="display:none;">
|
||||
<input type="hidden" name="enable" id="enable$cur" value="$int($server['enable'])" />
|
||||
<fieldset>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="displayname$cur">$T('srv-displayname')</label>
|
||||
<input type="text" name="displayname" id="displayname$cur" value="$server['displayname']" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="host$cur">$T('srv-host')</label>
|
||||
<input type="text" name="host" id="host$cur" value="$server['host']" required />
|
||||
@@ -221,7 +193,7 @@
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="connections$cur">$T('srv-connections')</label>
|
||||
<input type="number" name="connections" id="connections$cur" value="$server['connections']" min="1" max="100" required />
|
||||
<input type="number" name="connections" id="connections$cur" value="$server['connections']" min="1" max="1000" required />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority$cur">$T('srv-priority')</label>
|
||||
@@ -262,8 +234,14 @@
|
||||
<span class="desc">$T('srv-explain-send_group')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="displayname$cur">$T('srv-displayname')</label>
|
||||
<input type="text" name="displayname" id="displayname$cur" value="$server['displayname']" />
|
||||
<label class="config" for="expire_date$cur">$T('srv-expire_date')</label>
|
||||
<input type="date" name="expire_date" id="expire_date$cur" value="$server['expire_date']" />
|
||||
<span class="desc">$T('srv-explain-expire_date')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="quota$cur">$T('swtag-quota')</label>
|
||||
<input type="text" name="quota" id="quota$cur" value="$server['quota']" class="smaller_input" />
|
||||
<span class="desc">$T('srv-explain-quota')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="notes$cur">$T('srv-notes')</label>
|
||||
@@ -282,19 +260,31 @@
|
||||
<div class="col1" style="display:block;">
|
||||
<!--#if 'amounts' in $server#-->
|
||||
<div class="server-amounts-text">
|
||||
<b>$T('srv-bandwidth'):</b><br/>
|
||||
$T('total'): $(server['amounts'][0])B<br/>
|
||||
$T('today'): $(server['amounts'][3])B<br/>
|
||||
$T('thisWeek'): $(server['amounts'][2])B<br/>
|
||||
$T('thisMonth'): $(server['amounts'][1])B<br/>
|
||||
<span id="server-data-label-${cur}"></span>: <span id="server-data-value-${cur}"></span>
|
||||
<p>
|
||||
<b>$T('srv-bandwidth'):</b><br/>
|
||||
$T('total'): $(server['amounts'][0])B<br/>
|
||||
$T('today'): $(server['amounts'][3])B<br/>
|
||||
$T('thisWeek'): $(server['amounts'][2])B<br/>
|
||||
$T('thisMonth'): $(server['amounts'][1])B<br/>
|
||||
$T('selectedDates'): <span id="server-bandwith-value-${cur}"></span>
|
||||
</p>
|
||||
|
||||
<p title="$T('readwiki')">
|
||||
<b>$T('srv-article-availability'):</b><br/>
|
||||
$T('selectedDates'): <span id="server-article-value-${cur}"></span>
|
||||
</p>
|
||||
<!--#if $server['quota']#-->
|
||||
<p><b>$T('quota-left'):</b> $(server['quota_left'])B</p>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="server-chart" data-serverid="${cur}"s>
|
||||
<div class="server-chart" data-serverid="${cur}">
|
||||
<div id="server-chart-${cur}" class="ct-chart"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
// Server data
|
||||
serverData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
|
||||
serverBandwithData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
|
||||
serverArticleTries[${cur}] = <!--#echo json.dumps($server['amounts'][5])#-->
|
||||
serverArticleFailed[${cur}] = <!--#echo json.dumps($server['amounts'][6])#-->
|
||||
</script>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
@@ -331,58 +321,90 @@
|
||||
}
|
||||
|
||||
function showCharts() {
|
||||
// This month
|
||||
var theMonth = \$('#chart-selector').val()
|
||||
var thisDay = new Date()
|
||||
// Get the constants
|
||||
const startDate = new Date(\$('#chart-start').val())
|
||||
const endDate = new Date(\$('#chart-end').val())
|
||||
const oneDay = 24 * 60 * 60 * 1000
|
||||
const nrDays = Math.round((endDate-startDate)/oneDay)
|
||||
|
||||
// What month are we doing?
|
||||
var inputDate = new Date(theMonth+'-01')
|
||||
var baseDate = new Date(inputDate.getUTCFullYear(), inputDate.getUTCMonth(), 1)
|
||||
var maxDaysInMonth = new Date(baseDate.getFullYear(), baseDate.getMonth()+1, 0).getDate()
|
||||
// Show only maximum 10 labels to avoid cluttering
|
||||
const labelStep = Math.round(nrDays/10)
|
||||
|
||||
// Set the new maximum
|
||||
chartOptions.axisY.high = \$('#chart-selector :selected').data('max');
|
||||
chartOptions.axisY.low = 0
|
||||
// Save largest value
|
||||
var maxBandwith = 0
|
||||
|
||||
// For each chart
|
||||
\$('.server-chart').each(function(i, elemn) {
|
||||
var server_id = \$(elemn).data('serverid')
|
||||
\$('.server-chart').each(function(j, elemn) {
|
||||
const server_id = \$(elemn).data('serverid')
|
||||
var totalBandwithThisRange = 0
|
||||
var totalArticlesTriedThisRange = 0
|
||||
var totalArticlesFailedThisRange = 0
|
||||
|
||||
// Fill the data array
|
||||
var data = {
|
||||
labels: [],
|
||||
series: [[]]
|
||||
};
|
||||
var totalThisMonth = 0
|
||||
for(var i = 1; i < maxDaysInMonth+1; i++) {
|
||||
|
||||
for(var i = 0; i < nrDays+1; i++) {
|
||||
// Update the date
|
||||
const checkDate = new Date(startDate)
|
||||
checkDate.setDate(checkDate.getDate() + i);
|
||||
|
||||
// Add X-label
|
||||
if(i % 3 == 1) {
|
||||
data['labels'].push(i)
|
||||
if(i % labelStep === 0) {
|
||||
data['labels'].push(checkDate.getDate())
|
||||
} else {
|
||||
data['labels'].push(NaN)
|
||||
}
|
||||
|
||||
// Get formatted date
|
||||
baseDate.setDate(i)
|
||||
var dateCheck = toFormattedDate(baseDate)
|
||||
// Date we can check in the array
|
||||
const dateCheck = toFormattedDate(checkDate)
|
||||
|
||||
// Add data if we have it
|
||||
if(dateCheck in serverData[server_id]) {
|
||||
data['series'][0].push(serverData[server_id][dateCheck])
|
||||
totalThisMonth += serverData[server_id][dateCheck]
|
||||
} else if(thisDay.getYear() == baseDate.getYear() && thisDay.getMonth() == baseDate.getMonth() && thisDay.getDate() < i) {
|
||||
data['series'][0].push(NaN)
|
||||
if(dateCheck in serverBandwithData[server_id]) {
|
||||
data['series'][0].push(serverBandwithData[server_id][dateCheck])
|
||||
totalBandwithThisRange += serverBandwithData[server_id][dateCheck]
|
||||
maxBandwith = Math.max(maxBandwith, serverBandwithData[server_id][dateCheck])
|
||||
} else {
|
||||
data['series'][0].push(0)
|
||||
}
|
||||
|
||||
// Article stats
|
||||
if(dateCheck in serverArticleTries[server_id]) {
|
||||
totalArticlesTriedThisRange += serverArticleTries[server_id][dateCheck]
|
||||
totalArticlesFailedThisRange += serverArticleFailed[server_id][dateCheck]
|
||||
}
|
||||
}
|
||||
|
||||
// Update the text value
|
||||
\$('#server-data-label-' + server_id).text(\$('#chart-selector :selected').text())
|
||||
\$('#server-data-value-' + server_id).text(filesize(totalThisMonth, {round: 1}))
|
||||
\$('#server-bandwith-value-' + server_id).text(filesize(totalBandwithThisRange, {round: 1}))
|
||||
|
||||
// Calculate article success ratio, if available
|
||||
var articleRatio = Math.round(100 * (1 - totalArticlesFailedThisRange/totalArticlesTriedThisRange))
|
||||
|
||||
// If values were missing
|
||||
if(!isNaN(articleRatio)) {
|
||||
\$('#server-article-value-' + server_id).text('$T("srv-articles-tried")'.replace('%f', articleRatio).replace('%d', totalArticlesTriedThisRange))
|
||||
} else {
|
||||
\$('#server-article-value-' + server_id).text('$T("notAvailable")')
|
||||
}
|
||||
|
||||
// Save bandwidth data in a very ugly way, but we need to do this
|
||||
// so we can calculate the maximum Y-axis for all graphs
|
||||
\$(elemn).data("chart-data", data)
|
||||
})
|
||||
|
||||
// Set the maximum
|
||||
chartOptions.axisY.high = maxBandwith
|
||||
chartOptions.axisY.low = 0
|
||||
|
||||
// Update all the axis with the largest value and draw the graph
|
||||
\$('.server-chart').each(function(j, elemn) {
|
||||
const server_id = \$(elemn).data('serverid')
|
||||
|
||||
// Show the chart
|
||||
chart = new Chartist.Line('#server-chart-'+server_id, data, chartOptions);
|
||||
chart = new Chartist.Line('#server-chart-'+server_id, \$(elemn).data("chart-data"), chartOptions)
|
||||
chart.on('created', function(context) {
|
||||
// Make sure to add this as the first child so it's at the bottom
|
||||
context.svg.elem('rect', {
|
||||
@@ -391,7 +413,7 @@
|
||||
width: context.chartRect.width(),
|
||||
height: context.chartRect.height()+2,
|
||||
fill: 'none',
|
||||
stroke: '#B9B9B9',
|
||||
stroke: '#b9b9b9',
|
||||
'stroke-width': '1px'
|
||||
}, '', context.svg, true)
|
||||
\$('#server-chart-'+server_id+' .ct-label.ct-vertical').each(function(index, elmn) {
|
||||
@@ -399,6 +421,10 @@
|
||||
})
|
||||
});
|
||||
})
|
||||
|
||||
// Limit input to sensible values
|
||||
\$('#chart-start').attr("max", \$('#chart-end').val())
|
||||
\$('#chart-end').attr("min", \$('#chart-start').val())
|
||||
}
|
||||
|
||||
// Need to mitigate timezone effects!
|
||||
@@ -425,7 +451,7 @@
|
||||
/**
|
||||
Update charts when changed
|
||||
**/
|
||||
\$('#chart-selector').on('change', function(elemn) {
|
||||
\$('#chart-start, #chart-end').on('change', function(elemn) {
|
||||
showCharts()
|
||||
|
||||
// Lets us leave (needs to be called after the change event)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Sorting"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/sorting"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/sorting"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Special"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/special"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/special"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Switches"#-->
|
||||
<!--#set global $help_uri="configuration/3.1/switches"#-->
|
||||
<!--#set global $help_uri="configuration/3.2/switches"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
|
||||
@@ -162,6 +162,7 @@ input[type="checkbox"]+.desc {
|
||||
float: none;
|
||||
overflow: hidden;
|
||||
min-width: 555px;
|
||||
position: relative;
|
||||
}
|
||||
.Key tr:nth-child(odd),
|
||||
.tab-pane tr:nth-child(odd),
|
||||
@@ -553,15 +554,10 @@ tr.separator {
|
||||
h2.activeRSS {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.activeRSS a, .activeRSS a:visited {
|
||||
text-decoration: none;
|
||||
.activeRSS a,
|
||||
.activeRSS a:visited {
|
||||
color: #000;
|
||||
}
|
||||
.activeRSS a:hover {
|
||||
color: #4b4742;
|
||||
}
|
||||
.activeRSS a:first-of-type {
|
||||
text-decoration: underline!important;
|
||||
text-decoration: underline !important;
|
||||
}
|
||||
.favicon {
|
||||
background-position: center center!important;
|
||||
@@ -795,6 +791,7 @@ input[type="submit"]:hover {
|
||||
input[type="text"],
|
||||
input[type="email"],
|
||||
input[type="url"],
|
||||
input[type="date"],
|
||||
input[type="number"],
|
||||
input[type="password"],
|
||||
textarea,
|
||||
@@ -1172,6 +1169,27 @@ input[type="checkbox"] {
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
/***
|
||||
RTL Fixes
|
||||
***/
|
||||
html[dir="rtl"] .col1 input[type='checkbox'],
|
||||
html[dir="rtl"] .col2 h3 a {
|
||||
left: 5px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .modal-header .close {
|
||||
float: left;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .Sorting .presets.float-left,
|
||||
html[dir="rtl"] .checkbox-days {
|
||||
float: none;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .Scheduling form[action="addSchedule"] input[type="checkbox"] {
|
||||
right: 5px;
|
||||
}
|
||||
|
||||
@media screen and (min-width: 1200px) {
|
||||
.Categories input[name="dir"] {
|
||||
max-width: 240px !important;
|
||||
|
||||
@@ -5,8 +5,10 @@
|
||||
<tr>
|
||||
<th style="width: 25px;"></th>
|
||||
<th></th>
|
||||
<th class="table-status-header" data-bind="css: { 'table-header-status-smaller' : extraHistoryColumn }"></th>
|
||||
<th class="table-header-extra" data-bind="css: { 'table-extra-header-visible' : extraHistoryColumn }"></th>
|
||||
<th class="table-status-header" data-bind="css: { 'table-header-status-smaller' : extraHistoryColumns().length }"></th>
|
||||
<!-- ko foreach: extraHistoryColumns -->
|
||||
<th class="table-header-extra"></th>
|
||||
<!-- /ko -->
|
||||
<th style="width: 130px;"></th>
|
||||
<th style="width: 60px;"></th>
|
||||
</tr>
|
||||
@@ -137,10 +139,11 @@
|
||||
<!-- /ko -->
|
||||
</td>
|
||||
<td class="status row-wrap-text" data-bind="text: statusText()" onclick="showDetails(this)"></td>
|
||||
<!-- ko foreach: parent.parent.extraHistoryColumns -->
|
||||
<td class="row-extra-text" onclick="showDetails(this)">
|
||||
<div class="row-wrap-text" data-bind="text: extraText">
|
||||
</div>
|
||||
<div class="row-wrap-text" data-bind="text: \$parent.showColumn(\$data)"></div>
|
||||
</td>
|
||||
<!-- /ko -->
|
||||
<td class="history-completedon row-wrap-text" data-bind="text: completedOn(), attr: { 'data-timestamp': completed }" onclick="showDetails(this)"></td>
|
||||
<td class="delete">
|
||||
<div class="dropdown">
|
||||
|
||||
@@ -26,13 +26,15 @@
|
||||
<!-- /ko -->
|
||||
<!-- ko foreach: allMessages -->
|
||||
<tr>
|
||||
<td class="table-messages-label">
|
||||
<td class="table-messages-label" data-bind="attr: { 'colspan': 1 + !\$data.hasOwnProperty('clear') }">
|
||||
<span class="label" data-bind="css: 'label-' + css, text: type"></span>
|
||||
<span class="queue-message-text" data-bind="html: text"></span>
|
||||
</td>
|
||||
<!-- ko if: \$data.hasOwnProperty("clear") -->
|
||||
<td class="table-messages-remove">
|
||||
<!-- ko if: \$data.hasOwnProperty("clear") --><a href="#" data-bind="click: clear" class="hover-button"><span class="glyphicon glyphicon-remove"></span></a><!-- /ko -->
|
||||
<a href="#" data-bind="click: clear" class="hover-button"><span class="glyphicon glyphicon-remove"></span></a>
|
||||
</td>
|
||||
<!-- /ko -->
|
||||
</tr>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: !hasMessages() && displayTabbed() -->
|
||||
|
||||
@@ -152,7 +152,9 @@
|
||||
<div class="col-sm-6">$T('dashboard-testDownload')</div>
|
||||
<div class="col-sm-6">
|
||||
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="100MB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 100 MB</a>
|
||||
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="1000MB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 1000 MB</a>
|
||||
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="1000MB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 1 GB</a>
|
||||
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="10GB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 10 GB</a>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
<hr />
|
||||
@@ -217,6 +219,10 @@
|
||||
<span data-bind="text: servertotalconn"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-6">$T('Glitter-speed')</div>
|
||||
<div class="col-sm-6"><span data-bind="text: serverbps"></span>B/s</div>
|
||||
</div>
|
||||
<div class="row" data-bind="visible: servererror()">
|
||||
<div class="col-sm-12">
|
||||
<div class="alert alert-danger">
|
||||
@@ -367,8 +373,7 @@
|
||||
<span class="label label-warning">> 1200 pixels</span>
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="general-extra-column" class="form-control" data-bind="value: extraQueueColumn">
|
||||
<option value="">$T('none')</option>
|
||||
<select name="general-extra-column" class="form-control-multiselect form-control" data-bind="selectedOptions: extraQueueColumns" multiple="true">
|
||||
<option value="category">$T('category')</option>
|
||||
<option value="priority">$T('priority')</option>
|
||||
<option value="processing">$T('swtag-pp')</option>
|
||||
@@ -383,8 +388,7 @@
|
||||
<span class="label label-warning">> 1200 pixels</span>
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="general-extra-column" class="form-control" data-bind="value: extraHistoryColumn">
|
||||
<option value="">$T('none')</option>
|
||||
<select name="general-extra-column" class="form-control-multiselect form-control" data-bind="selectedOptions: extraHistoryColumns" multiple="true">
|
||||
<option value="category">$T('category')</option>
|
||||
<option value="size">$T('size')</option>
|
||||
<option value="speed">$T('Glitter-speed')</option>
|
||||
@@ -399,6 +403,14 @@
|
||||
<input type="checkbox" name="displayCompact" value="true" data-bind="checked: displayCompact" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
$T("Glitter-displayFullWidth")
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="displayFullWidth" value="true" data-bind="checked: displayFullWidth" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
$T("Glitter-displayTabbed")
|
||||
@@ -434,14 +446,14 @@
|
||||
|
||||
<div id="modal-add-nzb" class="modal fade" tabindex="-1">
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<form class="modal-content" data-bind="submit: addNZB">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal">×</button>
|
||||
<h4 class="modal-title">$T('Glitter-addNZB')</h4>
|
||||
</div>
|
||||
<div class="modal-body form-horizontal">
|
||||
<div class="row">
|
||||
<form data-bind="submit: addNZBFromURL" class="col-sm-6">
|
||||
<div class="col-sm-6">
|
||||
<fieldset>
|
||||
<legend class="row-wrap-text">$T('Glitter-addFromURL')</legend>
|
||||
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$file_exts">
|
||||
@@ -451,8 +463,8 @@
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form data-bind="submit: addNZBFromFileForm" class="col-sm-6">
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<fieldset>
|
||||
<legend class="row-wrap-text">$T('Glitter-addFromFile')</legend>
|
||||
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$file_exts">
|
||||
@@ -466,7 +478,7 @@
|
||||
</span>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
<hr />
|
||||
@@ -512,7 +524,7 @@
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -667,7 +679,7 @@
|
||||
</tbody>
|
||||
</table>
|
||||
<hr/>
|
||||
<p><small>Copyright (C) 2007-2020 The SABnzbd Team <team@sabnzbd.org><br/>$T('yourRights') </small></p>
|
||||
<p><small>Copyright (C) 2007-2021 The SABnzbd Team <team@sabnzbd.org><br/>$T('yourRights') </small></p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -67,8 +67,10 @@
|
||||
<tr>
|
||||
<th style="width: 25px;"></th>
|
||||
<th></th>
|
||||
<th class="table-header-extra" data-bind="css: { 'table-extra-header-visible' : extraQueueColumn }"></th>
|
||||
<th class="table-header-progress" data-bind="css: { 'table-header-progress-smaller' : extraQueueColumn }"></th>
|
||||
<!-- ko foreach: extraQueueColumns -->
|
||||
<th class="table-header-extra"></th>
|
||||
<!-- /ko -->
|
||||
<th class="table-header-progress" data-bind="css: { 'table-header-progress-smaller' : extraQueueColumns().length }"></th>
|
||||
<th style="width: 85px;"></th>
|
||||
<th style="width: 60px;"></th>
|
||||
</tr>
|
||||
@@ -76,7 +78,7 @@
|
||||
<!-- ko if: !hasQueue() -->
|
||||
<tbody class="no-downloads">
|
||||
<tr>
|
||||
<td colspan="6">
|
||||
<td colspan="6" data-bind="attr: { 'colspan': 5 + extraQueueColumns().length }">
|
||||
<a href="#modal-add-nzb" class="hover-button" data-toggle="modal">
|
||||
<span title="$T('Glitter-dragAndDrop')" data-tooltip="true"><span class="glyphicon glyphicon-plus-sign"></span> $T('Glitter-addNZB')</span>
|
||||
</a>
|
||||
@@ -118,10 +120,11 @@
|
||||
<small data-bind="text: avg_age"></small>
|
||||
</div>
|
||||
</td>
|
||||
<!-- ko foreach: parent.parent.extraQueueColumns -->
|
||||
<td class="row-extra-text">
|
||||
<div class="row-wrap-text" data-bind="text: extraText">
|
||||
</div>
|
||||
<div class="row-wrap-text" data-bind="text: \$parent.showColumn(\$data)"></div>
|
||||
</td>
|
||||
<!-- /ko -->
|
||||
<td class="progress-indicator">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-info" data-bind="attr: { 'style': 'width: ' + percentage() + '%; background-color: ' + progressColor() + ';' }">
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!DOCTYPE html>
|
||||
<!--#set $active_lang=$active_lang.replace('_', '-').lower()#-->
|
||||
<html lang="$active_lang" id="sabnzbd" data-bind="filedrop: { overlaySelector: '.main-filedrop', onFileDrop: addNZBFromFile }">
|
||||
<html lang="$active_lang" <!--#if $rtl#-->dir="rtl"<!--#end if#--> id="sabnzbd" data-bind="filedrop: { overlaySelector: '.main-filedrop', onFileDrop: addNZBFromFile }">
|
||||
<head>
|
||||
<!--
|
||||
Glitter V2
|
||||
@@ -36,7 +36,7 @@
|
||||
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.mobile.css?v=$version" media="all and (max-width: 768px)" />
|
||||
<!--#if $color_scheme not in ('Default', '') #-->
|
||||
<!--#if $color_scheme not in ('Light', '') #-->
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/colorschemes/${color_scheme}.css?v=$version"/>
|
||||
<!--#end if#-->
|
||||
|
||||
|
||||
@@ -152,11 +152,8 @@ function Fileslisting(parent) {
|
||||
|
||||
// Activate with this weird URL "API"
|
||||
callSpecialAPI("./nzb/" + self.currentItem.id + "/bulk_operation/", dataToSend).then(function() {
|
||||
// Fade it out
|
||||
$('.item-files-table input:checked:not(:disabled)').parents('tr').fadeOut(fadeOnDeleteDuration, function() {
|
||||
// Set state of the check-all
|
||||
setCheckAllState('#modal-item-files .multioperations-selector input[type="checkbox"]', '#modal-item-files .files-sortable input')
|
||||
})
|
||||
// Set state of the check-all
|
||||
setCheckAllState('#modal-item-files .multioperations-selector input[type="checkbox"]', '#modal-item-files .files-sortable input')
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -333,10 +333,10 @@ function HistoryModel(parent, data) {
|
||||
return self.script_line();
|
||||
});
|
||||
|
||||
// Extra history column
|
||||
self.extraText = ko.pureComputed(function() {
|
||||
// Extra history columns
|
||||
self.showColumn = function(param) {
|
||||
// Picked anything?
|
||||
switch(self.parent.parent.extraHistoryColumn()) {
|
||||
switch(param) {
|
||||
case 'speed':
|
||||
// Anything to calculate?
|
||||
if(self.historyStatus.bytes() > 0 && self.historyStatus.download_time() > 0) {
|
||||
@@ -359,7 +359,7 @@ function HistoryModel(parent, data) {
|
||||
return self.historyStatus.size();
|
||||
}
|
||||
return;
|
||||
})
|
||||
};
|
||||
|
||||
// Format completion time
|
||||
self.completedOn = ko.pureComputed(function() {
|
||||
@@ -438,13 +438,10 @@ function HistoryModel(parent, data) {
|
||||
value: self.nzo_id
|
||||
}).then(function(response) {
|
||||
if(response.status) {
|
||||
// Fade and remove
|
||||
$(event.currentTarget).parent().parent().fadeOut(fadeOnDeleteDuration, function() {
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.parent.isLoading(self.parent.totalItems() > 1)
|
||||
self.parent.historyItems.remove(self);
|
||||
self.parent.parent.refresh();
|
||||
})
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.parent.isLoading(self.parent.totalItems() > 1)
|
||||
self.parent.historyItems.remove(self);
|
||||
self.parent.parent.refresh();
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
@@ -15,10 +15,11 @@ function ViewModel() {
|
||||
self.dateFormat = ko.observable('fromNow').extend({ persist: 'pageDateFormat' });
|
||||
self.displayTabbed = ko.observable().extend({ persist: 'displayTabbed' });
|
||||
self.displayCompact = ko.observable(false).extend({ persist: 'displayCompact' });
|
||||
self.displayFullWidth = ko.observable(false).extend({ persist: 'displayFullWidth' });
|
||||
self.confirmDeleteQueue = ko.observable(true).extend({ persist: 'confirmDeleteQueue' });
|
||||
self.confirmDeleteHistory = ko.observable(true).extend({ persist: 'confirmDeleteHistory' });
|
||||
self.extraQueueColumn = ko.observable('').extend({ persist: 'extraColumn' });
|
||||
self.extraHistoryColumn = ko.observable('').extend({ persist: 'extraHistoryColumn' });
|
||||
self.extraQueueColumns = ko.observableArray([]).extend({ persist: 'extraColumns' });
|
||||
self.extraHistoryColumns = ko.observableArray([]).extend({ persist: 'extraHistoryColumns' });
|
||||
self.showActiveConnections = ko.observable(false).extend({ persist: 'showActiveConnections' });
|
||||
self.speedMetrics = { K: "KB/s", M: "MB/s", G: "GB/s" };
|
||||
|
||||
@@ -628,6 +629,37 @@ function ViewModel() {
|
||||
}
|
||||
})
|
||||
|
||||
// Save the rest in config if global-settings
|
||||
var saveInterfaceSettings = function(newValue) {
|
||||
if(self.useGlobalOptions()) {
|
||||
var interfaceSettings = {
|
||||
"dateFormat": self.dateFormat,
|
||||
"extraQueueColumns": self.extraQueueColumns,
|
||||
"extraHistoryColumns": self.extraHistoryColumns,
|
||||
"displayCompact": self.displayCompact,
|
||||
"displayFullWidth": self.displayFullWidth,
|
||||
"displayTabbed": self.displayTabbed,
|
||||
"confirmDeleteQueue": self.confirmDeleteQueue,
|
||||
"confirmDeleteHistory": self.confirmDeleteHistory
|
||||
};
|
||||
callAPI({
|
||||
mode: "set_config",
|
||||
section: "misc",
|
||||
keyword: "interface_settings",
|
||||
value: ko.toJSON(interfaceSettings)
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
self.dateFormat.subscribe(saveInterfaceSettings);
|
||||
self.extraQueueColumns.subscribe(saveInterfaceSettings);
|
||||
self.extraHistoryColumns.subscribe(saveInterfaceSettings);
|
||||
self.displayCompact.subscribe(saveInterfaceSettings);
|
||||
self.displayFullWidth.subscribe(saveInterfaceSettings);
|
||||
self.displayTabbed.subscribe(saveInterfaceSettings);
|
||||
self.confirmDeleteQueue.subscribe(saveInterfaceSettings);
|
||||
self.confirmDeleteHistory.subscribe(saveInterfaceSettings);
|
||||
|
||||
/***
|
||||
Add NZB's
|
||||
***/
|
||||
@@ -639,55 +671,47 @@ function ViewModel() {
|
||||
if(fileName) $('.btn-file em').text(fileName)
|
||||
}
|
||||
|
||||
// From the upload
|
||||
self.addNZBFromFileForm = function(form) {
|
||||
// Add NZB form
|
||||
self.addNZB = function(form) {
|
||||
// Anything?
|
||||
if(!$(form.nzbFile)[0].files[0]) {
|
||||
$('.btn-file').attr('style', 'border-color: red !important')
|
||||
setTimeout(function() { $('.btn-file').css('border-color', '') }, 2000)
|
||||
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
|
||||
self.addNZBFromFile($(form.nzbFile)[0].files);
|
||||
|
||||
// Hide modal, upload will reset the form
|
||||
$("#modal-add-nzb").modal("hide");
|
||||
}
|
||||
// From URL
|
||||
self.addNZBFromURL = function(form) {
|
||||
// Anything?
|
||||
if(!$(form.nzbURL).val()) {
|
||||
$(form.nzbURL).attr('style', 'border-color: red !important')
|
||||
setTimeout(function() { $(form.nzbURL).css('border-color', '') }, 2000)
|
||||
return false;
|
||||
}
|
||||
|
||||
// Build request
|
||||
var theCall = {
|
||||
mode: "addurl",
|
||||
name: $(form.nzbURL).val(),
|
||||
nzbname: $('#nzbname').val(),
|
||||
password: $('#password').val(),
|
||||
script: $('#modal-add-nzb select[name="Post-processing"]').val(),
|
||||
priority: $('#modal-add-nzb select[name="Priority"]').val(),
|
||||
pp: $('#modal-add-nzb select[name="Processing"]').val()
|
||||
}
|
||||
|
||||
// Optional, otherwise they get mis-labeled if left empty
|
||||
if($('#modal-add-nzb select[name="Category"]').val() != '*') theCall.cat = $('#modal-add-nzb select[name="Category"]').val()
|
||||
if($('#modal-add-nzb select[name="Processing"]').val()) theCall.pp = $('#modal-add-nzb select[name="Category"]').val()
|
||||
|
||||
// Add
|
||||
callAPI(theCall).then(function(r) {
|
||||
// Hide and reset/refresh
|
||||
self.refresh()
|
||||
// Upload file using the method we also use for drag-and-drop
|
||||
if($(form.nzbFile)[0].files[0]) {
|
||||
self.addNZBFromFile($(form.nzbFile)[0].files);
|
||||
// Hide modal, upload will reset the form
|
||||
$("#modal-add-nzb").modal("hide");
|
||||
form.reset()
|
||||
$('#nzbname').val('')
|
||||
});
|
||||
} else if($(form.nzbURL).val()) {
|
||||
// Or add URL
|
||||
var theCall = {
|
||||
mode: "addurl",
|
||||
name: $(form.nzbURL).val(),
|
||||
nzbname: $('#nzbname').val(),
|
||||
password: $('#password').val(),
|
||||
script: $('#modal-add-nzb select[name="Post-processing"]').val(),
|
||||
priority: $('#modal-add-nzb select[name="Priority"]').val(),
|
||||
pp: $('#modal-add-nzb select[name="Processing"]').val()
|
||||
}
|
||||
|
||||
// Optional, otherwise they get mis-labeled if left empty
|
||||
if($('#modal-add-nzb select[name="Category"]').val() != '*') theCall.cat = $('#modal-add-nzb select[name="Category"]').val()
|
||||
if($('#modal-add-nzb select[name="Processing"]').val()) theCall.pp = $('#modal-add-nzb select[name="Category"]').val()
|
||||
|
||||
// Add
|
||||
callAPI(theCall).then(function(r) {
|
||||
// Hide and reset/refresh
|
||||
self.refresh()
|
||||
$("#modal-add-nzb").modal("hide");
|
||||
form.reset()
|
||||
$('#nzbname').val('')
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// From the upload or filedrop
|
||||
self.addNZBFromFile = function(files, fileindex) {
|
||||
// First file
|
||||
@@ -734,14 +758,13 @@ function ViewModel() {
|
||||
// Refresh
|
||||
self.refresh();
|
||||
// Hide notification
|
||||
hideNotification('.main-notification-box-uploading')
|
||||
hideNotification(true)
|
||||
// Reset the form
|
||||
$('#modal-add-nzb form').trigger('reset');
|
||||
$('#nzbname').val('')
|
||||
$('.btn-file em').html(glitterTranslate.chooseFile + '…')
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
// Load status info
|
||||
@@ -749,8 +772,11 @@ function ViewModel() {
|
||||
// Full refresh? Only on click and for the status-screen
|
||||
var statusFullRefresh = (event != undefined) && $('#options-status').hasClass('active');
|
||||
|
||||
// Make it spin
|
||||
self.hasStatusInfo(false)
|
||||
// Make it spin if the user requested it otherwise we don't,
|
||||
// because browsers use a lot of CPU for the animation
|
||||
if(statusFullRefresh) {
|
||||
self.hasStatusInfo(false)
|
||||
}
|
||||
|
||||
// Load the custom status info
|
||||
callAPI({ mode: 'fullstatus', skip_dashboard: (!statusFullRefresh)*1 }).then(function(data) {
|
||||
@@ -802,7 +828,8 @@ function ViewModel() {
|
||||
'serveractiveconn': ko.observable(this.serveractiveconn),
|
||||
'servererror': ko.observable(this.servererror),
|
||||
'serveractive': ko.observable(this.serveractive),
|
||||
'serverconnections': ko.observableArray(this.serverconnections)
|
||||
'serverconnections': ko.observableArray(this.serverconnections),
|
||||
'serverbps': ko.observable(this.serverbps)
|
||||
})
|
||||
})
|
||||
} else {
|
||||
@@ -818,7 +845,8 @@ function ViewModel() {
|
||||
activeServer.serveractiveconn(this.serveractiveconn),
|
||||
activeServer.servererror(this.servererror),
|
||||
activeServer.serveractive(this.serveractive),
|
||||
activeServer.serverconnections(this.serverconnections)
|
||||
activeServer.serverconnections(this.serverconnections),
|
||||
activeServer.serverbps(this.serverbps)
|
||||
})
|
||||
}
|
||||
|
||||
@@ -890,10 +918,9 @@ function ViewModel() {
|
||||
clearInterval(connectionRefresh)
|
||||
return
|
||||
}
|
||||
// Only when we show them
|
||||
if(self.showActiveConnections()) {
|
||||
self.loadStatusInfo()
|
||||
}
|
||||
// Update the server stats (speed/connections)
|
||||
self.loadStatusInfo()
|
||||
|
||||
}, self.refreshRate() * 1000)
|
||||
})
|
||||
|
||||
@@ -937,8 +964,6 @@ function ViewModel() {
|
||||
callSpecialAPI("./status/" + $(htmlElement.currentTarget).data('action'), {
|
||||
name: $("<div/>").html(folder).text()
|
||||
}).then(function() {
|
||||
// Remove item and load status data
|
||||
$(htmlElement.currentTarget).parent().parent().fadeOut(fadeOnDeleteDuration)
|
||||
// Refresh
|
||||
self.loadStatusInfo(true, true)
|
||||
// Hide notification
|
||||
@@ -979,6 +1004,11 @@ function ViewModel() {
|
||||
$('body').toggleClass('container-compact')
|
||||
})
|
||||
|
||||
// Toggle full width
|
||||
self.displayFullWidth.subscribe(function() {
|
||||
$('body').toggleClass('container-full-width')
|
||||
})
|
||||
|
||||
// Toggle Glitter's tabbed modus
|
||||
self.displayTabbed.subscribe(function() {
|
||||
$('body').toggleClass('container-tabbed')
|
||||
@@ -1049,6 +1079,11 @@ function ViewModel() {
|
||||
$('body').addClass('container-compact')
|
||||
}
|
||||
|
||||
if(localStorageGetItem('displayFullWidth') === 'true') {
|
||||
// Add extra class
|
||||
$('body').addClass('container-full-width')
|
||||
}
|
||||
|
||||
// Tabbed layout?
|
||||
if(localStorageGetItem('displayTabbed') === 'true') {
|
||||
$('body').addClass('container-tabbed')
|
||||
@@ -1069,6 +1104,19 @@ function ViewModel() {
|
||||
|
||||
// Set queue limit
|
||||
self.queue.paginationLimit(response.config.misc.queue_limit.toString())
|
||||
|
||||
// Import the rest of the settings
|
||||
if(response.config.misc.interface_settings) {
|
||||
var interfaceSettings = JSON.parse(response.config.misc.interface_settings);
|
||||
self.dateFormat(interfaceSettings['dateFormat']);
|
||||
self.extraQueueColumns(interfaceSettings['extraQueueColumns']);
|
||||
self.extraHistoryColumns(interfaceSettings['extraHistoryColumns']);
|
||||
self.displayCompact(interfaceSettings['displayCompact']);
|
||||
self.displayFullWidth(interfaceSettings['displayFullWidth']);
|
||||
self.displayTabbed(interfaceSettings['displayTabbed']);
|
||||
self.confirmDeleteQueue(interfaceSettings['confirmDeleteQueue']);
|
||||
self.confirmDeleteHistory(interfaceSettings['confirmDeleteHistory']);
|
||||
}
|
||||
}
|
||||
|
||||
// Set bandwidth limit
|
||||
|
||||
@@ -228,11 +228,11 @@ function QueueListModel(parent) {
|
||||
switch($(event.currentTarget).data('action')) {
|
||||
case 'sortAgeAsc':
|
||||
sort = 'avg_age';
|
||||
dir = 'asc';
|
||||
dir = 'desc';
|
||||
break;
|
||||
case 'sortAgeDesc':
|
||||
sort = 'avg_age';
|
||||
dir = 'desc';
|
||||
dir = 'asc';
|
||||
break;
|
||||
case 'sortNameAsc':
|
||||
sort = 'name';
|
||||
@@ -440,7 +440,6 @@ function QueueListModel(parent) {
|
||||
if(response.status) {
|
||||
// Make sure the queue doesnt flicker and then fade-out
|
||||
self.isLoading(true)
|
||||
$('.delete input:checked').parents('tr').fadeOut(fadeOnDeleteDuration)
|
||||
self.parent.refresh()
|
||||
// Empty it
|
||||
self.multiEditItems.removeAll();
|
||||
@@ -567,10 +566,9 @@ function QueueModel(parent, data) {
|
||||
return 'glyphicon-pause'
|
||||
})
|
||||
|
||||
// Extra queue column
|
||||
self.extraText = ko.pureComputed(function() {
|
||||
// Picked anything?
|
||||
switch(self.parent.parent.extraQueueColumn()) {
|
||||
// Extra queue columns
|
||||
self.showColumn = function(param) {
|
||||
switch(param) {
|
||||
case 'category':
|
||||
// Exception for *
|
||||
if(self.category() == "*")
|
||||
@@ -590,7 +588,7 @@ function QueueModel(parent, data) {
|
||||
return self.avg_age();
|
||||
}
|
||||
return;
|
||||
})
|
||||
};
|
||||
|
||||
// Every update
|
||||
self.updateFromData = function(data) {
|
||||
@@ -738,17 +736,14 @@ function QueueModel(parent, data) {
|
||||
del_files: 1,
|
||||
value: item.id
|
||||
}).then(function(response) {
|
||||
// Fade and remove
|
||||
$(event.currentTarget).parent().parent().fadeOut(fadeOnDeleteDuration, function() {
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.parent.isLoading(self.parent.totalItems() > 1)
|
||||
parent.queueItems.remove(itemToDelete);
|
||||
parent.multiEditItems.remove(function(inList) { return inList.id == itemToDelete.id; })
|
||||
self.parent.parent.refresh();
|
||||
// Hide notifcation
|
||||
hideNotification(true)
|
||||
})
|
||||
// Make sure no flickering (if there are more items left) and then remove
|
||||
self.parent.isLoading(self.parent.totalItems() > 1)
|
||||
parent.queueItems.remove(itemToDelete);
|
||||
parent.multiEditItems.remove(function(inList) { return inList.id == itemToDelete.id; })
|
||||
self.parent.parent.refresh();
|
||||
// Hide notifcation
|
||||
hideNotification(true)
|
||||
});
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
@import url('Night.css') screen and (prefers-color-scheme: dark);
|
||||
@@ -248,6 +248,13 @@ hr {
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.form-control:focus,
|
||||
input[type="submit"]:focus,
|
||||
button:focus {
|
||||
box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.3) !important;
|
||||
outline: initial;
|
||||
}
|
||||
|
||||
/* Placeholders - Will not work if grouped! */
|
||||
::-webkit-input-placeholder {
|
||||
color: #EBEBEB !important;
|
||||
|
||||
@@ -1735,7 +1735,6 @@ input[name="nzbURL"] {
|
||||
.container-compact .search-box .form-control {
|
||||
height: 28px;
|
||||
}
|
||||
|
||||
.container-compact,
|
||||
.container-compact .dropdown-menu,
|
||||
.container-compact .btn,
|
||||
@@ -1761,6 +1760,9 @@ input[name="nzbURL"] {
|
||||
.container-compact .form-control {
|
||||
height: 29px;
|
||||
}
|
||||
.container-compact .form-control-multiselect {
|
||||
height: 60px;
|
||||
}
|
||||
.container-compact .modal-header {
|
||||
padding: 5px 12px;
|
||||
}
|
||||
@@ -1840,18 +1842,22 @@ input[name="nzbURL"] {
|
||||
padding-top: 5px;
|
||||
}
|
||||
|
||||
.container-full-width .container {
|
||||
width: calc(100% - 60px);
|
||||
}
|
||||
|
||||
/***
|
||||
Dynamic sizing
|
||||
***/
|
||||
@media screen and (min-width: 1200px) {
|
||||
.queue-table .table-extra-header-visible,
|
||||
.history-table .table-extra-header-visible {
|
||||
width: 10%;
|
||||
.queue-table .table-header-extra,
|
||||
.history-table .table-header-extra {
|
||||
width: 6%;
|
||||
}
|
||||
|
||||
.queue-table .table-header-progress-smaller,
|
||||
.history-table .table-header-progress-smaller {
|
||||
width: 35%;
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
#options-interface .label {
|
||||
@@ -1973,6 +1979,45 @@ input[name="nzbURL"] {
|
||||
}
|
||||
}
|
||||
|
||||
/***
|
||||
RTL Fixes
|
||||
***/
|
||||
|
||||
html[dir="rtl"] .navbar-nav {
|
||||
padding-right: 0;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .queue h2,
|
||||
html[dir="rtl"] .history h2 {
|
||||
float: right;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .dropdown-menu {
|
||||
text-align: right;
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .speedlimit-dropdown,
|
||||
html[dir="rtl"] .progress-indicator,
|
||||
html[dir="rtl"] #modal-item-filelist,
|
||||
html[dir="rtl"] #modal-item-files .modal-title,
|
||||
html[dir="rtl"] .info-container-box,
|
||||
html[dir="rtl"] .queue-table,
|
||||
html[dir="rtl"] .history-table {
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .search-box a {
|
||||
right: initial;
|
||||
left: 8px;
|
||||
}
|
||||
|
||||
html[dir="rtl"] .navbar-logo,
|
||||
html[dir="rtl"] .info-container,
|
||||
html[dir="rtl"] .modal-header .close,
|
||||
html[dir="rtl"] #modal-options .modal-header a {
|
||||
float: left;
|
||||
}
|
||||
|
||||
/***
|
||||
Bootstrap overwrites
|
||||
|
||||
@@ -103,6 +103,7 @@
|
||||
<span id="warning_box"><b><a href="${path}status/#tabs-warnings" id="last_warning"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
|
||||
#if $pane=="Main"#
|
||||
#if $new_release#⋅ <a href="$new_rel_url" id="new_release" target="_blank">$T('Plush-updateAvailable').replace(' ',' ')</a>#end if#
|
||||
This skin is no longer actively maintained! <a href="${path}config/general/#web_dir"><strong>We recommend using the Glitter skin.</strong></a>
|
||||
#end if#
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
</table>
|
||||
<div class="sabnzbd_logo main_sprite_container sprite_sabnzbdplus_logo"></div>
|
||||
<p><strong>SABnzbd $T('version'):</strong> $version</p>
|
||||
<p><small>Copyright (C) 2008-2020 The SABnzbd Team <team@sabnzbd.org></small></p>
|
||||
<p><small>Copyright (C) 2008-2021 The SABnzbd Team <team@sabnzbd.org></small></p>
|
||||
<p><small>$T('yourRights')</small></p>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -306,8 +306,8 @@ jQuery(function($){
|
||||
$('#queue_sort_list .queue_sort').click(function(event) {
|
||||
var sort, dir;
|
||||
switch ($(this).attr('id')) {
|
||||
case 'sortAgeAsc': sort='avg_age'; dir='asc'; break;
|
||||
case 'sortAgeDesc': sort='avg_age'; dir='desc'; break;
|
||||
case 'sortAgeAsc': sort='avg_age'; dir='desc'; break;
|
||||
case 'sortAgeDesc': sort='avg_age'; dir='asc'; break;
|
||||
case 'sortNameAsc': sort='name'; dir='asc'; break;
|
||||
case 'sortNameDesc': sort='name'; dir='desc'; break;
|
||||
case 'sortSizeAsc': sort='size'; dir='asc'; break;
|
||||
|
||||
BIN
osx/unrar/unrar
BIN
osx/unrar/unrar
Binary file not shown.
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
@@ -13,6 +13,16 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -100,16 +110,6 @@ msgstr ""
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr ""
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr ""
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr ""
|
||||
@@ -297,6 +297,10 @@ msgstr ""
|
||||
msgid "Server address required"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -329,10 +333,6 @@ msgstr ""
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr ""
|
||||
@@ -465,6 +465,16 @@ msgstr ""
|
||||
msgid "Shutting down"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr ""
|
||||
@@ -684,6 +694,10 @@ msgstr ""
|
||||
msgid "m"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -718,15 +732,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr ""
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -788,11 +793,6 @@ msgstr ""
|
||||
msgid "Unpacking"
|
||||
msgstr ""
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr ""
|
||||
@@ -1228,10 +1228,6 @@ msgstr ""
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr ""
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1256,8 +1252,9 @@ msgstr ""
|
||||
msgid "Limit Speed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr ""
|
||||
|
||||
#. #: Config->Scheduler
|
||||
@@ -1306,10 +1303,6 @@ msgstr ""
|
||||
msgid "History Last 10 Items"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr ""
|
||||
@@ -1476,6 +1469,10 @@ msgstr ""
|
||||
msgid "see logfile"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr ""
|
||||
@@ -1526,6 +1523,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1683,6 +1684,16 @@ msgstr ""
|
||||
msgid "Join files"
|
||||
msgstr ""
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr ""
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr ""
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -1907,11 +1918,6 @@ msgstr ""
|
||||
msgid "hours"
|
||||
msgstr ""
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr ""
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2007,6 +2013,10 @@ msgstr ""
|
||||
msgid "This month"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr ""
|
||||
@@ -2015,6 +2025,14 @@ msgstr ""
|
||||
msgid "Total"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr ""
|
||||
@@ -2813,6 +2831,10 @@ msgstr ""
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr ""
|
||||
@@ -3042,6 +3064,23 @@ msgstr ""
|
||||
msgid "Location to store finished, fully processed downloads.<br /><i>Can be overruled by user-defined categories.</i>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Downloading will automatically resume if the minimum free space is available again.<br />Applies to both the Temporary and Complete Download Folder.<br />Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr ""
|
||||
@@ -3163,7 +3202,7 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid "Only unpack and run scripts on jobs that passed the verification stage. If turned off, all jobs will be marked as Completed even if they are incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3432,11 +3471,6 @@ msgstr ""
|
||||
msgid "On which day of the month or week (1=Monday) does your ISP reset the quota? (Optionally with hh:mm)"
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr ""
|
||||
@@ -3584,6 +3618,18 @@ msgstr ""
|
||||
msgid "Timeout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Quota for this account, counted from the time it is set. In bytes, optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3673,6 +3719,14 @@ msgstr ""
|
||||
msgid "Personal notes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3717,6 +3771,16 @@ msgstr ""
|
||||
msgid "Force Download"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4398,11 +4462,11 @@ msgid "Date format"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4485,10 +4549,6 @@ msgstr ""
|
||||
msgid "View Script Log"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "LocalStorage (cookies) are disabled in your browser, interface settings will be lost after you close the browser!"
|
||||
msgstr ""
|
||||
@@ -4497,20 +4557,16 @@ msgstr ""
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
|
||||
589
po/main/cs.po
589
po/main/cs.po
File diff suppressed because it is too large
Load Diff
203
po/main/da.po
203
po/main/da.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Advarsel"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -116,16 +126,6 @@ msgstr "Kunne ikke starte web-grænseflade: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s startet"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Advarsel"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fejl"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd lukning udført"
|
||||
@@ -321,6 +321,10 @@ msgstr "%s er ikke en godkendt e-mail adresse"
|
||||
msgid "Server address required"
|
||||
msgstr "Kræver serveradresse"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -353,10 +357,6 @@ msgstr "%s er ikke et korrekt ciffer værdi"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC søgning \"%s\" er ikke tilladt her"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Fejl: Sti længde bør være under %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Fejl: Køen er ikke tom, kan ikke skifte mappe."
|
||||
@@ -494,6 +494,16 @@ msgstr "Suspect fejl i downloader"
|
||||
msgid "Shutting down"
|
||||
msgstr "Påbegynder lukning af SABnzbd"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Det lykkedes ikke at tilslutte mailserver"
|
||||
@@ -745,6 +755,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Opdatering tilgængelig!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -781,15 +795,6 @@ msgstr "Python script \"%s\" har ikke udfør (+x) tilladelsessæt"
|
||||
msgid "Running script"
|
||||
msgstr "Køre script"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Efterbehandling blev afbrudt (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -851,11 +856,6 @@ msgstr "Udpakning mislykkedes, arkivet kræver adgangskode"
|
||||
msgid "Unpacking"
|
||||
msgstr "Udpakker"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Udpak"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Udpakning mislykkedes, kunne ikke finde %s"
|
||||
@@ -1302,10 +1302,6 @@ msgstr "Advarsler"
|
||||
msgid "Idle"
|
||||
msgstr "Inaktiv"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Opsætning"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1330,9 +1326,10 @@ msgstr "Tøm historik"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Hastighedsbegrænsning"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minut"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1381,10 +1378,6 @@ msgstr "Tom"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Historik (de 10 seneste poster)"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Ny version tilgængelig"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Gå til guiden"
|
||||
@@ -1584,6 +1577,10 @@ msgstr "Efterbehandling mislykkedes for %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "se logfil"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Download mislykkedes"
|
||||
@@ -1634,6 +1631,10 @@ msgstr "RAR filer kontrolleres med succes"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "RAR filer kunne ikke bekræfte"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1796,6 +1797,16 @@ msgstr "Downloader"
|
||||
msgid "Join files"
|
||||
msgstr "Sammenlægger filer"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Udpak"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2020,11 +2031,6 @@ msgstr "time"
|
||||
msgid "hours"
|
||||
msgstr "timer"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minut"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2120,6 +2126,10 @@ msgstr "Denne uge"
|
||||
msgid "This month"
|
||||
msgstr "Denne måned"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "I dag"
|
||||
@@ -2128,6 +2138,14 @@ msgstr "I dag"
|
||||
msgid "Total"
|
||||
msgstr "Totalt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Tilpasse"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Hastighed"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "på"
|
||||
@@ -2960,6 +2978,12 @@ msgstr "ikke installeret"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Aktiver adgang til interface fra en HTTPS-adresse."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS Port"
|
||||
@@ -3232,6 +3256,26 @@ msgstr ""
|
||||
"Sted at opbevare færdige, fuldt forarbejdede downloads.<br /><i>Kan "
|
||||
"tilsidesættes af bruger-definerede kategorier.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatisk genoptag"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Tilladelser til fuldførte overførsler"
|
||||
@@ -3377,8 +3421,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Efterbehandling kun verificerede jobs"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgstr "Kun udføre efterbehandling af jobs som har bestået PAR2 kontrollen."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3686,11 +3733,6 @@ msgstr ""
|
||||
"På hvilken dag i måneden eller ugen (1 = mandag) nulstiller din "
|
||||
"internetudbyder kvota? (Valgfrit med tt: mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatisk genoptag"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Skal download genoptages efter kvotaen er nulstillet?"
|
||||
@@ -3845,6 +3887,21 @@ msgstr "Adgangskode"
|
||||
msgid "Timeout"
|
||||
msgstr "Tidsudløb"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3937,6 +3994,14 @@ msgstr "Send gruppe kommandoen, før du anmoder om artikler."
|
||||
msgid "Personal notes"
|
||||
msgstr "Personlige notater"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3989,6 +4054,16 @@ msgstr "Læs Feed"
|
||||
msgid "Force Download"
|
||||
msgstr "Gennemtving download"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4690,12 +4765,12 @@ msgid "Date format"
|
||||
msgstr "Datoformat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Ekstra kø kolonne"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Ekstra kolonne historie"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4777,10 +4852,6 @@ msgstr "Skjul/vis komplette filer"
|
||||
msgid "View Script Log"
|
||||
msgstr "Vis scriptlog"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Opdatering tilgængelig!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4793,21 +4864,17 @@ msgstr ""
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr "Glitter har nogle (nye) egenskaber, du kan lide!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Tilpasse"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Kompakt layout"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Tabbed layout <br/>(separat kø og historie)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Hastighed"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Tabbed layout <br/>(separat kø og historie)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
238
po/main/de.po
238
po/main/de.po
@@ -1,16 +1,18 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
# N S <reloxx@interia.pl>, 2020
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# C E <githubce@eiselt.ch>, 2020
|
||||
# Nikolai Bohl <n.kay01@gmail.com>, 2020
|
||||
# reloxx13 <reloxx@interia.pl>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Last-Translator: reloxx13 <reloxx@interia.pl>, 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"
|
||||
@@ -18,6 +20,16 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Achtung"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -100,7 +112,7 @@ msgstr ""
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
msgid "Could not load additional certificates from certifi package"
|
||||
msgstr ""
|
||||
msgstr "Konnte weitere Zertifikate vom Paket certifi nicht laden."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -122,16 +134,6 @@ msgstr "Fehler beim Starten der Web-Oberfläche: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s gestartet"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Achtung"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fehler"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd wurde beendet"
|
||||
@@ -178,7 +180,7 @@ msgstr "Fehler beim Laden von %s"
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Cannot access PID file %s"
|
||||
msgstr ""
|
||||
msgstr "Zugriff auf PID Datei %s nicht möglich"
|
||||
|
||||
#: sabnzbd/api.py, sabnzbd/emailer.py
|
||||
msgid "Email succeeded"
|
||||
@@ -330,6 +332,10 @@ msgstr "%s ist keine gültige E-Mail-Adresse"
|
||||
msgid "Server address required"
|
||||
msgstr "Server-Adresse wird benötigt"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -363,10 +369,6 @@ msgstr "%s ist kein gültiger Oktal-Wert"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-Pfad \"%s\" ist hier nicht erlaubt"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Fehler: Dateipfadlänge sollte kürzer als %s sein."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr ""
|
||||
@@ -511,6 +513,16 @@ msgstr "Vermute Fehler im Downloader"
|
||||
msgid "Shutting down"
|
||||
msgstr "Wird beendet …"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Verbindung zum Mail-Server konnte nicht hergestellt werden"
|
||||
@@ -682,6 +694,8 @@ msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Der \"Abgeschlossene Downloads\"-Ordner darf kein Unterordner des "
|
||||
"\"Temporäre Downloads\"-Ordners sein."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
|
||||
@@ -768,10 +782,14 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Neue Version verfügbar!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
msgstr ""
|
||||
msgstr "Hochladen fehlgeschlagen: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
@@ -791,7 +809,7 @@ msgstr ""
|
||||
#. Warning message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to read the password file %s"
|
||||
msgstr ""
|
||||
msgstr "Die Passwortdatei %s konnte nicht gelesen werden"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
@@ -807,15 +825,6 @@ msgstr "Dem Pythonskript \"%s\" fehlen die Ausführungsrechte (+x)"
|
||||
msgid "Running script"
|
||||
msgstr "Ausführen des Skripts"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Nachbearbeitung wurde abgebrochen (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -877,11 +886,6 @@ msgstr "Entpacken fehlgeschlagen. Archiv benötigt ein Passwort."
|
||||
msgid "Unpacking"
|
||||
msgstr "Entpacken"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Entpacken"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Entpacken fehlgeschlagen. Konnte %s nicht finden."
|
||||
@@ -1338,10 +1342,6 @@ msgstr "Warnungen"
|
||||
msgid "Idle"
|
||||
msgstr "Leerlauf"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Einstellungen"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1366,9 +1366,10 @@ msgstr "Verlauf leeren"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Geschwindigkeit begrenzen"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "Min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "Minuten"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1417,10 +1418,6 @@ msgstr "Leer"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Verlauf mit den letzten 10 Einträgen"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Neue Version verfügbar"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Assistent öffnen"
|
||||
@@ -1632,6 +1629,10 @@ msgstr "Nachbearbeitung von %s fehlgeschlagen (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "Beachten Sie die Protokolldatei"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr "Nachbearbeitung wurde abgebrochen"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Download Fehlgeschlagen"
|
||||
@@ -1682,10 +1683,14 @@ msgstr "RAR-Datei erfolgreich überprüft"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "RAR-Datei konnten nicht überprüft werden"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
msgstr ""
|
||||
msgstr "Keine zugehörige frühere RAR-Datei für %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -1710,7 +1715,7 @@ msgstr "Fehler beim Herunterfahren des Systems"
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Received a DBus exception %s"
|
||||
msgstr ""
|
||||
msgstr "DBus-Ausnahmefehler empfangen %s "
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rating.py
|
||||
@@ -1844,6 +1849,16 @@ msgstr "Herunterladen"
|
||||
msgid "Join files"
|
||||
msgstr "Dateien zusammenfügen"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Entpacken"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2068,11 +2083,6 @@ msgstr "Stunde"
|
||||
msgid "hours"
|
||||
msgstr "Stunden"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "Minuten"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2168,6 +2178,10 @@ msgstr "Diese Woche"
|
||||
msgid "This month"
|
||||
msgstr "Dieser Monat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr "Ausgewählter Datumsbereich"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Heute"
|
||||
@@ -2176,6 +2190,14 @@ msgstr "Heute"
|
||||
msgid "Total"
|
||||
msgstr "Gesamt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Benutzerdefiniert"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Geschwindigkeit"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "An"
|
||||
@@ -3023,6 +3045,15 @@ msgstr "nicht installiert"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Zugriff auf die Oberfläche über HTTPS-Adressen erlauben"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 selbstsignierten "
|
||||
"Zertifikate und geben eine Warnung aus und/oder stellen gar keine Verbindung"
|
||||
" her."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS-Port"
|
||||
@@ -3306,6 +3337,31 @@ msgstr ""
|
||||
"Hier werden fertige, verarbeitete Downloads abgelegt.<br /><i>Kann von "
|
||||
"benutzerdefinierten Kategorien ausser Kraft gesetzt werden.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
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 "
|
||||
"Festplatte befindet."
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatisch fortsetzen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" 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 />\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"
|
||||
msgstr "Rechte für fertige Downloads"
|
||||
@@ -3456,10 +3512,14 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Nur überprüfte Aufträge nachbearbeiten"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Die Nachbearbeitung nur für Aufträge durchführen,<br />die alle "
|
||||
"PAR2-Überprüfungen bestanden haben."
|
||||
"Entpacken und starten von Skripten nur bei verifizierten Jobs. Wenn "
|
||||
"ausgeschaltet werden alle Jobs als vollständig markiert, selbst wenn sie "
|
||||
"unvollständig sind."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3725,13 +3785,15 @@ msgstr "Nach dem Download löschen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Deobfuscate final filenames"
|
||||
msgstr ""
|
||||
msgstr "Entschleiere finale Dateinamen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If filenames of (large) files in the final folder look obfuscated or "
|
||||
"meaningless they will be renamed to the job name."
|
||||
msgstr ""
|
||||
"Dateinamen von (großen) Dateien im Zielordner werden in den Auftragsnamen "
|
||||
"umbenannt, wenn sie verschleiert oder bedeutungslos aussehen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS certificate verification"
|
||||
@@ -3781,11 +3843,6 @@ msgstr ""
|
||||
"An welchem Tag des Monats oder der Woche (1=Montag) setzt Ihr ISP das "
|
||||
"Kontingent zurück (optional mit hh:mm)?"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatisch fortsetzen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr ""
|
||||
@@ -3949,6 +4006,21 @@ msgstr "Passwort"
|
||||
msgid "Timeout"
|
||||
msgstr "Zeitüberschreitung"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -4042,6 +4114,14 @@ msgstr "Gruppen-Befehl senden, bevor Artikeln angefordert werden."
|
||||
msgid "Personal notes"
|
||||
msgstr "Persönliche Notizen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr "Verfügbarkeit der Artikel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr "%f vorhanden von %d angefragten Artikeln"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -4094,6 +4174,16 @@ msgstr "Feed lesen"
|
||||
msgid "Force Download"
|
||||
msgstr "Download erzwingen"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4799,12 +4889,12 @@ msgid "Date format"
|
||||
msgstr "Datumsformat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Extra Warteschlangen-Spalte"
|
||||
msgid "Extra queue columns"
|
||||
msgstr "Weitere Warteschlangen Spalten"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Extra Verlauf-Spalte"
|
||||
msgid "Extra history columns"
|
||||
msgstr "Weitere Verlauf Spalten"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4886,10 +4976,6 @@ msgstr "Vollendete Dateien anzeigen/verstecken"
|
||||
msgid "View Script Log"
|
||||
msgstr "Skript-Protokoll anzeigen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Neue Version verfügbar!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4902,21 +4988,17 @@ msgstr ""
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr "Glitter hat ein paar (neue) Feature die du bestimmt magst!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Benutzerdefiniert"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Kompaktes Layout"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Tab Layout <br/>(separate Warteschlange und Verlauf)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr "Benutze die volle Fensterbreite"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Geschwindigkeit"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Tab Layout <br/>(separate Warteschlange und Verlauf)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
211
po/main/es.po
211
po/main/es.po
@@ -1,16 +1,17 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
# Ester Molla Aragones <moarages@gmail.com>, 2020
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# 1024mb <angelb2203@gmail.com>, 2020
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Last-Translator: 1024mb <angelb2203@gmail.com>, 2020\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"
|
||||
@@ -18,6 +19,16 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Advertencia"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Se ha producido un error"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -35,14 +46,15 @@ msgstr ""
|
||||
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
|
||||
msgstr ""
|
||||
"SABYenc deshabilitado: ¡no se ha encontrado la versión correcta! (Se ha "
|
||||
"encontrado v%s, se anticipaba v%s)"
|
||||
"encontrado la v%s, se esperaba la v%s)"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid ""
|
||||
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
|
||||
msgstr ""
|
||||
"Módulo SABYenc... NO encontrado. Se exige v%s - https://sabnzbd.org/sabyenc"
|
||||
"Módulo SABYenc... ¡NO encontrado! Se esperaba la v%s - "
|
||||
"https://sabnzbd.org/sabyenc"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
@@ -122,16 +134,6 @@ msgstr "Error al iniciar la interfaz web: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s comenzó"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Advertencia"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Se ha producido un error"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Cierre de SABnzbd terminado"
|
||||
@@ -333,6 +335,10 @@ 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
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -365,10 +371,6 @@ msgstr "%s no es un valor octal correcto"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "Ruta de acceso UNC \"%s\" no permitido aqui"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Error: La longitud de ruta debería ser menor que %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Error: Cola no esta vacía, no se puede cambiar el directorio"
|
||||
@@ -512,6 +514,16 @@ msgstr "Error sospechoso en downloader"
|
||||
msgid "Shutting down"
|
||||
msgstr "Apagando"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "No se pudo conectar al servidor de correo"
|
||||
@@ -766,6 +778,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "¡Actualización Disponible!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -807,15 +823,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Ejecutando script"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Se ha abortado el PostProcesamiento (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -878,11 +885,6 @@ msgstr "Error al descomprimir; El archivo está protegido por contraseña"
|
||||
msgid "Unpacking"
|
||||
msgstr "Descomprimiendo"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Descomprimir"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Error al descomprimir; Imposible encontrar %s"
|
||||
@@ -1345,10 +1347,6 @@ msgstr "Advertencias"
|
||||
msgid "Idle"
|
||||
msgstr "Inactivo"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Configuración"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1373,9 +1371,10 @@ msgstr "Purgar historial"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Limitar Velocidad"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "mín."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "mín"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1424,10 +1423,6 @@ msgstr "Vacía"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Histórico últimos 10 elementos"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Nueva versión disponible"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Ir al Asistente"
|
||||
@@ -1636,6 +1631,10 @@ msgstr "Error al post-procesar %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "ver fichero de log"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "La descarga falló"
|
||||
@@ -1686,6 +1685,10 @@ msgstr "Los archivos RAR se han verificado con éxito"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "No se han podido verificar los archivos RAR"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1852,6 +1855,16 @@ msgstr "Descargar"
|
||||
msgid "Join files"
|
||||
msgstr "Unir ficheros"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Descomprimir"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2076,11 +2089,6 @@ msgstr "hora"
|
||||
msgid "hours"
|
||||
msgstr "horas"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "mín"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2176,6 +2184,10 @@ msgstr "Esta semana"
|
||||
msgid "This month"
|
||||
msgstr "Este mes"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Hoy"
|
||||
@@ -2184,6 +2196,14 @@ msgstr "Hoy"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personalizar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Velocidad"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "activado"
|
||||
@@ -3031,6 +3051,12 @@ msgstr "no instalado"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Habilia el acceso a la interfaz con una dirección HTTPS"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "Puerto HTTPS"
|
||||
@@ -3313,6 +3339,26 @@ msgstr ""
|
||||
"Ubicación donde guardar descargas finalizadas, totalmente procesaddas.<br "
|
||||
"/><i>Puede ser obviado debido a categorías definidas por el usuario.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Auto reanudar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Permisos para descargas completadas"
|
||||
@@ -3460,10 +3506,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Post-procesar sólo trabajos verificados"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Sólo realiza el post-procesado en trabajos que han pasado todos los chequeos"
|
||||
" PAR2."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3788,11 +3835,6 @@ msgstr ""
|
||||
"En qué día del mes o semana (1=Lunes) resetea tu proveedor la cuota mensual?"
|
||||
" (Opcional con hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Auto reanudar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "¿Deberían las descargas resumirse tras reiniciarse la cuota?"
|
||||
@@ -3953,6 +3995,21 @@ msgstr "Contraseña"
|
||||
msgid "Timeout"
|
||||
msgstr "Expiración del plazo (Timeout)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -4049,6 +4106,14 @@ msgstr "Enviar comando group antes de solicitar los artículos."
|
||||
msgid "Personal notes"
|
||||
msgstr "Notas personales"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -4101,6 +4166,16 @@ msgstr "Leer Fuente"
|
||||
msgid "Force Download"
|
||||
msgstr "Forzar Descarga"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4808,12 +4883,12 @@ msgid "Date format"
|
||||
msgstr "Formato de fecha"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Columna de cola extra"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Columna de historia adicional"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4895,10 +4970,6 @@ msgstr "Ocultar/Mostrar ficheros completados"
|
||||
msgid "View Script Log"
|
||||
msgstr "Ver bitacora de Scripts"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "¡Actualización Disponible!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4911,21 +4982,17 @@ msgstr ""
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr "¡Glitter tiene alguna nueva funcionalidad que puede gustarte!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personalizar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Diseño compacto"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Diseño de pestañas<br/>(separa la cola de espera y la historia)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Velocidad"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Diseño de pestañas<br/>(separa la cola de espera y la historia)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
203
po/main/fi.po
203
po/main/fi.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: fi\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Varoitus"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Virhe"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -117,16 +127,6 @@ msgstr "Web-käyttöliittymän käynnistys epäonnistui : "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s käynnistetty"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Varoitus"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Virhe"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd sammutus valmis"
|
||||
@@ -318,6 +318,10 @@ msgstr "%s ei ole kelvollinen sähköpostiosoite"
|
||||
msgid "Server address required"
|
||||
msgstr "Palvelimen osoite vaaditaan"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -350,10 +354,6 @@ msgstr "%s ei ole oikea oktaalinen arvo"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "TUNT polku \"%s\" ei ole sallittu"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Virhe: Polun pituus täytyy olla alle %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Virhe: Jono ei ole tyhjä, kansiota ei voida vaihtaa."
|
||||
@@ -490,6 +490,16 @@ msgstr "Mahdollinen virhe lataajassa"
|
||||
msgid "Shutting down"
|
||||
msgstr "Sammutetaan"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Postipalvelimeen yhdistäminen epäonnistui"
|
||||
@@ -741,6 +751,10 @@ msgstr "t"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Päivitys saatavilla!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -777,15 +791,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Ajetaan skripti"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Jälkikäsittely peruutettiin (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skripti"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -847,11 +852,6 @@ msgstr "Purkaminen epäonnistui, arkisto vaatii salasanan"
|
||||
msgid "Unpacking"
|
||||
msgstr "Puretaan"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Pura"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Purkaminen epäonnistui, %s ei löydy"
|
||||
@@ -1295,10 +1295,6 @@ msgstr "Varoitukset"
|
||||
msgid "Idle"
|
||||
msgstr "Toimeton"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Asetukset"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1323,9 +1319,10 @@ msgstr "Tyhjennä historia"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Nopeusrajoitus"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minuutti"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1374,10 +1371,6 @@ msgstr "Tyhjä"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Vie viimeiset 10 kohdetta historiaan"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Uusi versio saatavilla"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Mene velhoon"
|
||||
@@ -1577,6 +1570,10 @@ msgstr "Jälkikäsittely epäonnistui kohteelle %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "katso lokitiedosto"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Lataus epäonnistui"
|
||||
@@ -1627,6 +1624,10 @@ msgstr "RAR arkistot varmennettiin onnistuneesti"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "RAR arkistoja ei voitu varmentaa"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1787,6 +1788,16 @@ msgstr "Lataa"
|
||||
msgid "Join files"
|
||||
msgstr "Yhdistä tiedostot"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Pura"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skripti"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2011,11 +2022,6 @@ msgstr "tunti"
|
||||
msgid "hours"
|
||||
msgstr "tuntia"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minuutti"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2111,6 +2117,10 @@ msgstr "Tällä viikolla"
|
||||
msgid "This month"
|
||||
msgstr "Tässä kuussa"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Tänään"
|
||||
@@ -2119,6 +2129,14 @@ msgstr "Tänään"
|
||||
msgid "Total"
|
||||
msgstr "Yhteensä"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Mukautettu"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Nopeus"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "käytössä"
|
||||
@@ -2952,6 +2970,12 @@ msgstr "ei asennettu"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Ota käyttöön käyttöliittymän käyttäminen HTTPS-osoitteesta."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS portti"
|
||||
@@ -3231,6 +3255,26 @@ msgstr ""
|
||||
"Sijainti jonne tallennetaan valmistuneet ja täysin käsitellyt ladatut "
|
||||
"kohteet.<br /><i>Käyttäjän asettamat kategoriat voivat kumota tämän.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Jatka automaattisesti"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Käyttöoikeudet valmistuneille latauksille"
|
||||
@@ -3377,10 +3421,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Jälkikäsittele vain onnistuneet lataukset"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Suorittaa jälkikäsittelyn vain niille latauksille jotka läpäisevät kaikki "
|
||||
"PAR2 tarkistukset."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3689,11 +3734,6 @@ msgstr ""
|
||||
"Minä päivänä kuusta tai viikosta (1=Maanantai) palveluntarjoajasi resetoi "
|
||||
"rajoituksen? (Voit syöttää kellonajan perään hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Jatka automaattisesti"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Pitäisikö latauksia jatkaa kun latausrajoitus on resetoitu?"
|
||||
@@ -3847,6 +3887,21 @@ msgstr "Salasana"
|
||||
msgid "Timeout"
|
||||
msgstr "Aikakatkaisu"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3938,6 +3993,14 @@ msgstr "Lähettää ryhmäkomennon ennen artikkeleiden pyytämistä."
|
||||
msgid "Personal notes"
|
||||
msgstr "Henkilökohtaiset huomautukset"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3990,6 +4053,16 @@ msgstr "Lue syöte"
|
||||
msgid "Force Download"
|
||||
msgstr "Pakota lataus"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4693,12 +4766,12 @@ msgid "Date format"
|
||||
msgstr "Päivämäärän muoto"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Ylimääräisen jonon sarake"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Ylimääräinen historiasarake"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4780,10 +4853,6 @@ msgstr "Piilota/näytä valmistuneet tiedostot"
|
||||
msgid "View Script Log"
|
||||
msgstr "Näytä skriptien loki"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Päivitys saatavilla!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4797,21 +4866,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
"Glitter-teemassa on muutamia (uusia) ominaisuuksia joista saatat pitää!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Mukautettu"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Tiivis käyttöliittymä"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Välilehditetty käyttöliittymä <br/>(erillinen jono ja historia)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Nopeus"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Välilehditetty käyttöliittymä <br/>(erillinen jono ja historia)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
221
po/main/fr.po
221
po/main/fr.po
@@ -1,16 +1,16 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# Fred L <88com88@gmail.com>, 2020
|
||||
# Fred L <88com88@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2020\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
|
||||
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -18,6 +18,16 @@ msgstr ""
|
||||
"Language: fr\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -125,16 +135,6 @@ msgstr "Impossible de démarrer l'interface web : "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s démarré"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Avertissement"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Erreur"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Arrêt de SABnzbd terminé"
|
||||
@@ -336,6 +336,10 @@ msgstr "%s n'est pas une adresse email valide"
|
||||
msgid "Server address required"
|
||||
msgstr "Adresse du serveur requise"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr "%s n'est pas un script valide"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -368,10 +372,6 @@ msgstr "%s n'est pas une valeur octale correcte"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "Le chemin UNC \"%s\" n'est pas autorisé ici"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Erreur : la longueur du chemin doit être inférieure à %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr ""
|
||||
@@ -515,6 +515,16 @@ msgstr "Erreur suspecte dans le téléchargeur"
|
||||
msgid "Shutting down"
|
||||
msgstr "Arrêt en cours..."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr "Le serveur %s expirera dans %s jour(s)"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr "Le serveur %s a utilisé le quota spécifié"
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Échec de connexion au serveur de messagerie"
|
||||
@@ -773,6 +783,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Mise à Jour disponible!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -814,15 +828,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Exécution du script"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Post-traitement interrompu (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -884,11 +889,6 @@ msgstr "Échec de l'extraction, l'archive nécessite un mot de passe"
|
||||
msgid "Unpacking"
|
||||
msgstr "Extraction"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Décompresser"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Échec de l'extraction, %s n'a pas été trouvé"
|
||||
@@ -1342,10 +1342,6 @@ msgstr "Avertissements"
|
||||
msgid "Idle"
|
||||
msgstr "A l'arrêt"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Configuration"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1370,9 +1366,10 @@ msgstr "Vider l'historique"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Limiter la vitesse"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1421,10 +1418,6 @@ msgstr "Vide"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Historique des 10 derniers articles"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Nouvelle version disponible"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Aller à l'assistant"
|
||||
@@ -1636,6 +1629,10 @@ msgstr "Échec du post-traitement pour %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "voir le journal"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr "Le post-traitement a été interrompu"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Échec du téléchargement"
|
||||
@@ -1686,6 +1683,10 @@ msgstr "Fichiers RAR vérifiés avec succès"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "Echec lors de la vérification des fichiers RAR"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr "Essai avec le renommeur RAR"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1849,6 +1850,16 @@ msgstr "Télécharger"
|
||||
msgid "Join files"
|
||||
msgstr "Concaténer"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Décompresser"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2073,11 +2084,6 @@ msgstr "heure"
|
||||
msgid "hours"
|
||||
msgstr "heures"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2173,6 +2179,10 @@ msgstr "Cette semaine"
|
||||
msgid "This month"
|
||||
msgstr "Ce mois"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr "Plage de dates sélectionnée"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Aujourd'hui"
|
||||
@@ -2181,6 +2191,14 @@ msgstr "Aujourd'hui"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personnalisé"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Vitesse"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "oui"
|
||||
@@ -3029,6 +3047,15 @@ msgstr "non installé"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Active l'accès à l'interface via une adresse HTTPS."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
"Les navigateurs web modernes et les autres clients n'accepteront pas les "
|
||||
"certificats auto-signés et donneront un avertissement et / ou ne se "
|
||||
"connecteront pas du tout."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "Port HTTPS"
|
||||
@@ -3312,6 +3339,31 @@ msgstr ""
|
||||
"Emplacement des téléchargements terminés et post-traités.<br /><i>Peut être "
|
||||
"outrepassé par les catégories définies par l'utilisateur.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr "Espace libre minimum pour le dossier des téléchargements terminés"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
"Ne fonctionnera pas si un dossier de catégorie se trouve sur un autre "
|
||||
"disque."
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Reprise auto"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
"Le téléchargement reprendra automatiquement si l'espace libre minimum est à "
|
||||
"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
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Permissions pour le dossier de téléchargements terminés"
|
||||
@@ -3462,10 +3514,14 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Ne post-traiter que les tâches vérifiées"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Limite le post-traitement aux tâches qui ont passé avec succès toutes les "
|
||||
"vérifications PAR2."
|
||||
"Décompresser et lancer les scripts uniquement sur les tâches qui ont passé "
|
||||
"l'étape de vérification. Si désactivé, toutes les tâches seront marquées "
|
||||
"comme Terminées même si elles sont incomplètes."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3792,11 +3848,6 @@ msgstr ""
|
||||
"A quel jour du mois ou de la semaine (1=lundi) votre fournisseur "
|
||||
"réinitialise le quota ? (Optionnel avec hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Reprise auto"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr ""
|
||||
@@ -3957,6 +4008,24 @@ msgstr "Mot de passe"
|
||||
msgid "Timeout"
|
||||
msgstr "Délai d'expiration"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr "Date d'expiration du compte"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr "Avertir 5 jours avant la date d'expiration du compte."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
"Quota pour ce compte calculé à partir du moment où il est défini. En octets,"
|
||||
" éventuellement suivi de K,M,G.<br />Avertir quand il atteint 0, vérifié "
|
||||
"toutes les quelques minutes."
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -4052,6 +4121,14 @@ msgstr "Envoyer la commande 'group' avant la demande des articles."
|
||||
msgid "Personal notes"
|
||||
msgstr "Notes personnelles"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr "Disponibilité de l'article"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr "%f% disponibles sur %d articles demandés"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -4105,6 +4182,16 @@ msgstr "Lire le flux RSS"
|
||||
msgid "Force Download"
|
||||
msgstr "Forcer le téléchargement"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4814,12 +4901,12 @@ msgid "Date format"
|
||||
msgstr "Format de la date"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Colonne de file d'attente supplémentaire"
|
||||
msgid "Extra queue columns"
|
||||
msgstr "Colonnes de file d'attente supplémentaires"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Colonne d'historique additionnelle"
|
||||
msgid "Extra history columns"
|
||||
msgstr "Colonnes d'historique supplémentaires"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4901,10 +4988,6 @@ msgstr "Afficher/masquer les fichiers terminés"
|
||||
msgid "View Script Log"
|
||||
msgstr "Afficher le journal des scripts"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Mise à Jour disponible!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4919,21 +5002,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
"Glitter a des (nouvelles) fonctionnalités que vous devriez apprécier !"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personnalisé"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Affichage compact"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Mise en page par onglets <br/>(file d'attente et historique séparés)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr "Toujours utiliser la largeur totale de l'écran"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Vitesse"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Mise en page par onglets <br/>(file d'attente et historique séparés)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
1383
po/main/he.po
1383
po/main/he.po
File diff suppressed because it is too large
Load Diff
199
po/main/nb.po
199
po/main/nb.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: nb\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Advarsel"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Feil"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -114,16 +124,6 @@ msgstr "Kunne ikke starte webgrensesnittet: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s startet"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Advarsel"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Feil"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd er nå avsluttet"
|
||||
@@ -315,6 +315,10 @@ msgstr "%s er ikke en godkjent e-post-adresse"
|
||||
msgid "Server address required"
|
||||
msgstr "Krever server-adresse"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -347,10 +351,6 @@ msgstr "%s er ikke en korrekt oktal verdi"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-sti \"%s\" er ikke tillatt her"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Feil: Fillengde bør være kortere enn %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Feil: Køen er ikke tom, kan ikke bytte mappe."
|
||||
@@ -486,6 +486,16 @@ msgstr "Mistenker feil i nedlaster"
|
||||
msgid "Shutting down"
|
||||
msgstr "Starter avslutning av SABnzbd.."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Kunne ikke koble til mailserver"
|
||||
@@ -737,6 +747,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Oppdatering tilgjengelig"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -773,15 +787,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Kjører skript"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Etterbehandling ble avbrutt (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -843,11 +848,6 @@ msgstr "Utpakking mislyktes, arkivet krever passord"
|
||||
msgid "Unpacking"
|
||||
msgstr "Utpakker"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Utpakking"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Utpakking mislyktes, kunne ikke finne %s"
|
||||
@@ -1292,10 +1292,6 @@ msgstr "Advarsler"
|
||||
msgid "Idle"
|
||||
msgstr "Ledig"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Konfigurasjon"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1320,9 +1316,10 @@ msgstr "Slett historikk"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Hastighetsbegrensning"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minutt"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1371,10 +1368,6 @@ msgstr "Tom"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Historikk (10 siste)"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Ny utgave er tilgjengelig"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Gå til guiden"
|
||||
@@ -1574,6 +1567,10 @@ msgstr "Etterbehandling mislyktes for %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "se loggfil"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Nedlasting mislyktes"
|
||||
@@ -1624,6 +1621,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1784,6 +1785,16 @@ msgstr "Nedlastning"
|
||||
msgid "Join files"
|
||||
msgstr "Slå sammen filer"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Utpakking"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2008,11 +2019,6 @@ msgstr "time"
|
||||
msgid "hours"
|
||||
msgstr "timer"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minutt"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2108,6 +2114,10 @@ msgstr "Denne uken"
|
||||
msgid "This month"
|
||||
msgstr "Denne måneden"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "I dag"
|
||||
@@ -2116,6 +2126,14 @@ msgstr "I dag"
|
||||
msgid "Total"
|
||||
msgstr "Totalt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Tilpasse"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Hastighet"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "på"
|
||||
@@ -2948,6 +2966,12 @@ msgstr "(ikke installert)"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Aktiverer tilgangen til webgrensesnittet med HTTPS adresse."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS-port"
|
||||
@@ -3217,6 +3241,26 @@ msgstr ""
|
||||
"Plass for å lagre bearbeidede og ferdige nedlastinger.<br /><i>Kan "
|
||||
"overstyres av brukerdefinerte kategorier.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Gjenoppta automatisk"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Rettigheter for ferdige nedlastinger"
|
||||
@@ -3360,8 +3404,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Etterbehandle kun verifiserte nedlastinger"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgstr "Etterbehandle kun nedlastinger som har passert PAR2 kontrollen."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3662,11 +3709,6 @@ msgstr ""
|
||||
"På hvilken dag i måneden eller uken (1=mandag) resetter til nettilbyder "
|
||||
"kvoten? (Valgfritt med tt:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Gjenoppta automatisk"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Skal nedlasting starte på nytt etter at kvoten er resatt?"
|
||||
@@ -3821,6 +3863,21 @@ msgstr "Passord"
|
||||
msgid "Timeout"
|
||||
msgstr "Tidsavbrudd"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3912,6 +3969,14 @@ msgstr "Send gruppekommando før du ber om artikler."
|
||||
msgid "Personal notes"
|
||||
msgstr "Persolige notater"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3964,6 +4029,16 @@ msgstr "Les kilde"
|
||||
msgid "Force Download"
|
||||
msgstr "Tving nedlasting"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4662,11 +4737,11 @@ msgid "Date format"
|
||||
msgstr "Datoformat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Ekstra kø-kolonne"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4749,10 +4824,6 @@ msgstr "Skjul/vis fullførte filer"
|
||||
msgid "View Script Log"
|
||||
msgstr "Se skriptlogg"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Oppdatering tilgjengelig"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4764,21 +4835,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Tilpasse"
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Hastighet"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
msgstr "Bekreft Sletting av Kø"
|
||||
|
||||
222
po/main/nl.po
222
po/main/nl.po
@@ -1,15 +1,15 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# Safihre <safihre@sabnzbd.org>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
|
||||
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: nl\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -118,16 +128,6 @@ msgstr "Webinterface kon niet gestart worden: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s is gestart"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Waarschuwing"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fout"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd is afgesloten"
|
||||
@@ -327,6 +327,10 @@ msgstr "%s is geen geldig e-mailadres"
|
||||
msgid "Server address required"
|
||||
msgstr "Serveradres verplicht"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr "%s is geen geldig script."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -359,10 +363,6 @@ msgstr "%s is geen correct octaal getal"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-pad '%s' hier niet toegestaan."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Fout: het opgegeven pad mag niet langer zijn dan %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Fout: Wachtrij is niet leeg, andere map kiezen niet mogelijk."
|
||||
@@ -506,6 +506,16 @@ msgstr "Vedachte fout in downloader"
|
||||
msgid "Shutting down"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr "Server %s verloopt over %s dag(en)."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr "Het beschikbare quotum voor server %s is verbruikt. "
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Verbinding met e-mailserver mislukt"
|
||||
@@ -674,6 +684,8 @@ msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"De Map voor verwerkte downloads mag niet een map in de Tijdelijke download "
|
||||
"map zijn."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
|
||||
@@ -759,6 +771,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Update beschikbaar!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -798,15 +814,6 @@ msgstr "Python-script '%s' heeft geen uitvoerpermissie (+x)"
|
||||
msgid "Running script"
|
||||
msgstr "Script uitvoeren"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Nabewerking is afgebroken (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -868,11 +875,6 @@ msgstr "Uitpakken mislukt, archief vereist wachtwoord"
|
||||
msgid "Unpacking"
|
||||
msgstr "Uitpakken"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Uitpakken"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Uitpakken mislukt, kan %s niet vinden"
|
||||
@@ -1322,10 +1324,6 @@ msgstr "Meldingen"
|
||||
msgid "Idle"
|
||||
msgstr "Rust"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Instellingen"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1350,9 +1348,10 @@ msgstr "Wis de volledige geschiedenis"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Beperk snelheid"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1401,10 +1400,6 @@ msgstr "Leeg"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Geschiedenis Laaste 10 Items"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Nieuwe versie beschikbaar"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Ga naar Wizard"
|
||||
@@ -1609,6 +1604,10 @@ msgstr "Nabewerking van %s mislukt (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "zie logbestand"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr "Nabewerking is afgebroken"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Download mislukt"
|
||||
@@ -1659,6 +1658,10 @@ msgstr "RAR bestanden zijn succesvol geverifieerd"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "RAR bestanden zijn niet verifieerbaar"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr "RAR-hernoeming wordt geprobeerd"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1821,6 +1824,16 @@ msgstr "Download"
|
||||
msgid "Join files"
|
||||
msgstr "Samenvoegen"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Uitpakken"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2045,11 +2058,6 @@ msgstr "uur"
|
||||
msgid "hours"
|
||||
msgstr "uren"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2145,6 +2153,10 @@ msgstr "Deze Week"
|
||||
msgid "This month"
|
||||
msgstr "Deze Maand"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr "Datumbereik"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Vandaag"
|
||||
@@ -2153,6 +2165,14 @@ msgstr "Vandaag"
|
||||
msgid "Total"
|
||||
msgstr "Totaal"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Aangepast"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Snelheid"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "aan"
|
||||
@@ -2998,6 +3018,15 @@ msgstr "niet geinstalleerd"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Webinterface beschikbaar via HTTPS"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
"Self-signed (onofficiële) certificaten worden door moderne webbrowsers en "
|
||||
"andere programma's meestal niet geaccepteerd waardoor deze een foutmelding "
|
||||
"geven of helemaal niet kunnen verbinden."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS Poort"
|
||||
@@ -3272,6 +3301,29 @@ msgid ""
|
||||
"overruled by user-defined categories.</i>"
|
||||
msgstr "(kan aangepast worden door de categorieën)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr "Minimale vrije ruimte voor verwerkte downloads map"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr "Werkt niet als een categorie-pad naar een andere schijf verwijst."
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatisch doorgaan"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
"Het downloaden zal automatisch hervat worden als de minimale vrije ruimte "
|
||||
"weer beschikbaar is.<br />Is van toepassing op zowel de tijdelijke als "
|
||||
"verwerkte download map.<br />Wordt elke paar minuten gecontroleerd."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Toegangsrechten voor verwerkte downloads"
|
||||
@@ -3419,10 +3471,14 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Verwerk alleen correct geverifieerde downloads"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Voer de nabewerking alleen uit op downloads die de PAR2 controles hebben "
|
||||
"doorlopen."
|
||||
"Uitpakken en scripts worden alleen uitgevoerd op opdrachten die succesvol "
|
||||
"geverifieerd zijn. Als deze optie uitgeschakeld is zullen alle opdrachten "
|
||||
"gemarkeerd worden als succesvol, zelfs als dat niet zo is."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3743,11 +3799,6 @@ msgstr ""
|
||||
"Op welke dag van de maand of week (1=maandag) wordt het quotum gereset? "
|
||||
"(Eventueel met hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatisch doorgaan"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr ""
|
||||
@@ -3909,6 +3960,25 @@ msgstr "Wachtwoord"
|
||||
msgid "Timeout"
|
||||
msgstr "Tijdslimiet"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr "Verloopdatum"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr "Ontvang 5 dagen voor de verloopdatum een waarschuwing."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
"Quotum voor dit account, wordt geteld vanaf het moment dat het voor het "
|
||||
"eerst ingesteld wordt. In bytes, in K,M,G notatie.<br />Er wordt een "
|
||||
"waarschuwing gegeven als het quotum bereikt is, dit wordt elke paar minuten "
|
||||
"gecontroleerd."
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -4005,6 +4075,14 @@ msgstr "Verzend de groepsnaam naar de server."
|
||||
msgid "Personal notes"
|
||||
msgstr "Persoonlijke aantekeningen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr "Beschikbaarheid van artikelen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr "%f% van %d opgevraagde artikelen"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -4057,6 +4135,16 @@ msgstr "Uitlezen"
|
||||
msgid "Force Download"
|
||||
msgstr "Forceer download"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4762,12 +4850,12 @@ msgid "Date format"
|
||||
msgstr "Datumnotatie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Extra kolom aan wachtrij toevoegen"
|
||||
msgid "Extra queue columns"
|
||||
msgstr "Extra kolommen aan wachtrij toevoegen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Extra kolom aan geschiedenis toevoegen"
|
||||
msgid "Extra history columns"
|
||||
msgstr "Extra kolommen aan geschiedenis toevoegen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4849,10 +4937,6 @@ msgstr "Toon/verberg voltooide bestanden"
|
||||
msgid "View Script Log"
|
||||
msgstr "Toon Script resultaat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Update beschikbaar!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4865,21 +4949,17 @@ msgstr ""
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr "Glitter heeft enkele (nieuwe) functies die je mogelijk aanspreken!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Aangepast"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Compacte weergave"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Weergave in tabs <br/>(wachtrij en geschiedenis apart weergeven)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr "Gebruik de volledige schermbreedte"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Snelheid"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Weergave in tabs <br/>(wachtrij en geschiedenis apart weergeven)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
199
po/main/pl.po
199
po/main/pl.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: pl\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Ostrzeżenie"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -109,16 +119,6 @@ msgstr "Nie udało się uruchomić interfejsu WWW: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "Uruchomiono SABnzbd %s"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Ostrzeżenie"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Błąd"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd został wyłączony"
|
||||
@@ -310,6 +310,10 @@ msgstr "%s nie jest prawidłowym adresem email"
|
||||
msgid "Server address required"
|
||||
msgstr "Wymagane jest podanie adresu serwera"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -342,10 +346,6 @@ msgstr "%s nie jest prawidłową wartością w systemie ósemkowym"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "Ścieżka UNC \"%s\" niedozwolona"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Błąd: Długość ścieżki powinna być mniejsza niż %s"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Błąd: Kolejka nie jest pusta, nie można zmienić katalogu."
|
||||
@@ -483,6 +483,16 @@ msgstr "Nieobsługiwany błąd w module pobierania"
|
||||
msgid "Shutting down"
|
||||
msgstr "Wyłączanie"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Błąd połączenia z serwerem pocztowym"
|
||||
@@ -736,6 +746,10 @@ msgstr "g"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Dostępna aktualizacja!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -772,15 +786,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Uruchamianie skryptu"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Przetwarzanie końcowe zostało przerwane (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skrypt"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -842,11 +847,6 @@ msgstr "Rozpakowywanie nie powiodło się, archiwum wymaga podania hasła"
|
||||
msgid "Unpacking"
|
||||
msgstr "Rozpakowywanie"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Rozpakuj"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Rozpakowywanie nie powiodło się, nie można znaleźć %s"
|
||||
@@ -1293,10 +1293,6 @@ msgstr "Ostrzeżenia"
|
||||
msgid "Idle"
|
||||
msgstr "Bezczynny"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguracja"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1321,9 +1317,10 @@ msgstr "Wyczyść historię"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Ogranicz prędkość"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minuta"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1372,10 +1369,6 @@ msgstr "Brak"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "10 ostatnich"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Dostępne jest nowe wydanie"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Uruchom kreatora konfiguracji"
|
||||
@@ -1579,6 +1572,10 @@ msgstr "Przetwarzanie końcowe nie powiodło się dla %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "sprawdź logi"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Pobieranie nie powiodło się"
|
||||
@@ -1629,6 +1626,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1789,6 +1790,16 @@ msgstr "Pobierz"
|
||||
msgid "Join files"
|
||||
msgstr "Połącz pliki"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Rozpakuj"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skrypt"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2013,11 +2024,6 @@ msgstr "godzina"
|
||||
msgid "hours"
|
||||
msgstr "godziny"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "minuta"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2113,6 +2119,10 @@ msgstr "Ten tydzień"
|
||||
msgid "This month"
|
||||
msgstr "Ten miesiąc"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Dzisiaj"
|
||||
@@ -2121,6 +2131,14 @@ msgstr "Dzisiaj"
|
||||
msgid "Total"
|
||||
msgstr "Razem"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Własny"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Prędkość"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "włączone"
|
||||
@@ -2950,6 +2968,12 @@ msgstr "nie zainstalowane"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Włącz dostęp do interfejsu przez HTTPS"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "Port HTTPS"
|
||||
@@ -3222,6 +3246,26 @@ msgstr ""
|
||||
"Miejsce przechowywania ukończonych, przetworzonych plików. <br /><i>Może "
|
||||
"zostać zmienione przez ustawienia kategorii.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatyczne wznawianie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Uprawnienia dla ukończonych plików"
|
||||
@@ -3366,10 +3410,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Przetwarzanie końcowe tylko dla zweryfikowanych zadań"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Uruchom przetwarzanie końcowe tylko dla zadań, które zostały sprawdzone przy"
|
||||
" użyciu PAR2"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3673,11 +3718,6 @@ msgstr ""
|
||||
"W którym dniu miesiąca lub tygodnia (1=poniedziałek) twój dostawca resetuje "
|
||||
"limit pobierania (opcjonalnie z gg:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatyczne wznawianie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Czy pobieranie powinno zostać automatycznie wznowione w dniu resetu"
|
||||
@@ -3833,6 +3873,21 @@ msgstr "Hasło"
|
||||
msgid "Timeout"
|
||||
msgstr "Limit czasu odpowiedzi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3924,6 +3979,14 @@ msgstr "Wyślij polecenie GROUP przed żądaniem artykułu"
|
||||
msgid "Personal notes"
|
||||
msgstr "Notatki osobiste"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3976,6 +4039,16 @@ msgstr "Pobierz kanał"
|
||||
msgid "Force Download"
|
||||
msgstr "Wymuś pobranie"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4674,11 +4747,11 @@ msgid "Date format"
|
||||
msgstr "Format daty"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Dodatkowa kolumna kolejki"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4761,10 +4834,6 @@ msgstr "Pokaż/ukryj ukończone pliki"
|
||||
msgid "View Script Log"
|
||||
msgstr "Zobacz log skryptu"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Dostępna aktualizacja!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4776,21 +4845,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Własny"
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Prędkość"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
msgstr "Potwierdzaj usuwanie z kolejki"
|
||||
|
||||
199
po/main/pt_BR.po
199
po/main/pt_BR.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: pt_BR\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Alerta"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -113,16 +123,6 @@ msgstr "Falha ao iniciar a interface web "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s iniciado"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Alerta"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Erro"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Encerramento do SABnzbd concluído"
|
||||
@@ -314,6 +314,10 @@ 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
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -346,10 +350,6 @@ msgstr "%s não é um valor octal correto"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "O caminho UNC \"%s\" não é permitido aqui"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Erro: Tamanho do caminho deve ser menor que %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Erro: A fila não está vazia. Não será possível mudar de pasta."
|
||||
@@ -489,6 +489,16 @@ msgstr "Erro suspeito no downloader"
|
||||
msgid "Shutting down"
|
||||
msgstr "Encerrando"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Falha ao conectar ao servidor de e-mail"
|
||||
@@ -740,6 +750,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Atualização Disponível!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -776,15 +790,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Executando script"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "O pós-processamento foi cancelado (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -846,11 +851,6 @@ msgstr "A descompactação falhou. O arquivo exige uma senha"
|
||||
msgid "Unpacking"
|
||||
msgstr "Descompactando"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Descompactar"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "A descompactação falhou. Não foi possível encontrar %s"
|
||||
@@ -1294,10 +1294,6 @@ msgstr "Alertas"
|
||||
msgid "Idle"
|
||||
msgstr "Inativo"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Configuração"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1322,9 +1318,10 @@ msgstr "Limpar Histórico"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Limitar Velocidade"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1373,10 +1370,6 @@ msgstr "Esvaziar"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Histórico dos últimos 10 items"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Nova versão disponível"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Ir para o assistente"
|
||||
@@ -1581,6 +1574,10 @@ msgstr "O pós-processamento falhou para %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "veja o arquivo de log"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "O download falhou"
|
||||
@@ -1631,6 +1628,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1792,6 +1793,16 @@ msgstr "Download"
|
||||
msgid "Join files"
|
||||
msgstr "Unir arquivos"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Descompactar"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2016,11 +2027,6 @@ msgstr "hora"
|
||||
msgid "hours"
|
||||
msgstr "horas"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2116,6 +2122,10 @@ msgstr "Esta semana"
|
||||
msgid "This month"
|
||||
msgstr "Este mês"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Hoje"
|
||||
@@ -2124,6 +2134,14 @@ msgstr "Hoje"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personalizado"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Velocidade"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "ligado"
|
||||
@@ -2955,6 +2973,12 @@ msgstr "não instalado"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Ativar acesso à interface por um endereço HTTPS."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "Porta HTTPS"
|
||||
@@ -3226,6 +3250,26 @@ msgstr ""
|
||||
"Local para armazenar downloads concluídos, totalmente processados.<br "
|
||||
"/><i>Pode ser anulado por categorias definidas pelo usuário.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Retomar automaticamente"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Permissões para downloads concluídos"
|
||||
@@ -3371,10 +3415,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Pós-processar apenas os trabalhos verificados"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Realizar pós-processamento apenas em trabalhos que passaram todas as "
|
||||
"verificações PAR2."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3677,11 +3722,6 @@ msgstr ""
|
||||
"Em que dia do mês ou da semana (1 = segunda-feira) seu provedor de Internet "
|
||||
"redefine sua quota? (Opcionalmente com hh: mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Retomar automaticamente"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "O download deve retomar quando a quota for restabelecida?"
|
||||
@@ -3836,6 +3876,21 @@ msgstr "Senha"
|
||||
msgid "Timeout"
|
||||
msgstr "Tempo limite"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3927,6 +3982,14 @@ msgstr "Enviar comando do grupo antes de solicitar artigos."
|
||||
msgid "Personal notes"
|
||||
msgstr "Notas pessoais"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3979,6 +4042,16 @@ msgstr "Ler Feed"
|
||||
msgid "Force Download"
|
||||
msgstr "Forçar Download"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4677,11 +4750,11 @@ msgid "Date format"
|
||||
msgstr "Formato da data"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Coluna extra da fila"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4764,10 +4837,6 @@ msgstr "Esconder/Exibir arquivos completos"
|
||||
msgid "View Script Log"
|
||||
msgstr "Exibir Log do Script"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Atualização Disponível!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4779,21 +4848,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personalizado"
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Velocidade"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
msgstr "Confirmar Exclusões da Fila"
|
||||
|
||||
302
po/main/ro.po
302
po/main/ro.po
@@ -1,15 +1,16 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
# Safihre <safihre@sabnzbd.org>, 2020
|
||||
# Eduard Baniceru <war4peace@gmail.com>, 2021
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
|
||||
"Last-Translator: Eduard Baniceru <war4peace@gmail.com>, 2021\n"
|
||||
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -17,6 +18,16 @@ msgstr ""
|
||||
"Language: ro\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Avertisment"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Eroare"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -31,12 +42,15 @@ msgstr "Nu se poate găsi şablon web:%s, se încearcă şablon standard"
|
||||
#: SABnzbd.py
|
||||
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
|
||||
msgstr ""
|
||||
"SABYenc dezactivat: nu s-a găsit o versiune corectă! (Găsită v%s, se "
|
||||
"așteaptă v%s)"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid ""
|
||||
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
|
||||
msgstr ""
|
||||
"Modul SABYenc... NEgăsit! Se așteaptă v%s - https://sabnzbd.org/sabyenc"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
@@ -66,7 +80,7 @@ msgstr "binar unzip... Negăsit!"
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Essential modules are missing, downloading cannot start."
|
||||
msgstr ""
|
||||
msgstr "Lipsesc module esențiale, descărcarea nu poate începe."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -88,11 +102,13 @@ msgid ""
|
||||
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
|
||||
"with Unicoded file and directory names in downloads."
|
||||
msgstr ""
|
||||
"SABnzbd a fost pornit cu encodarea %s, aceasta trebuie să fie UTF-8. Pot "
|
||||
"apărea probleme cu denumiri de fișiere și directoare Unicode în descărcări."
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
msgid "Could not load additional certificates from certifi package"
|
||||
msgstr ""
|
||||
msgstr "Nu pot încărca certificate adiționale din pachetul certifi"
|
||||
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
@@ -102,7 +118,7 @@ msgstr "Dezactivează HTTPS din cauza lipsei fişierelor CERT şi KEY"
|
||||
#. Warning message
|
||||
#: SABnzbd.py
|
||||
msgid "Disabled HTTPS because of invalid CERT and KEY files"
|
||||
msgstr ""
|
||||
msgstr "HTTPS dezactivat din cauza fișierelor invalide CERT și KEY"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
@@ -113,16 +129,6 @@ msgstr "Nu am putu porni interfața web: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s pornit"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Avertisment"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Eroare"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Închidere SABnzbd terminată"
|
||||
@@ -169,7 +175,7 @@ msgstr "Încărcarea %s nereuşită"
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Cannot access PID file %s"
|
||||
msgstr ""
|
||||
msgstr "Nu pot accesa fișierul PID %s"
|
||||
|
||||
#: sabnzbd/api.py, sabnzbd/emailer.py
|
||||
msgid "Email succeeded"
|
||||
@@ -228,6 +234,8 @@ msgid ""
|
||||
"Paused job \"%s\" because of encrypted RAR file (if supplied, all passwords "
|
||||
"were tried)"
|
||||
msgstr ""
|
||||
"Sarcina „%s” a fost întreruptă din cauza fișierului RAR criptat (toate "
|
||||
"parolele oferite au fost încercate)"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/assembler.py
|
||||
@@ -235,6 +243,8 @@ msgid ""
|
||||
"Aborted job \"%s\" because of encrypted RAR file (if supplied, all passwords"
|
||||
" were tried)"
|
||||
msgstr ""
|
||||
"Sarcina „%s” a fost anulată din cauza fișierului RAR criptat (toate parolele"
|
||||
" oferite au fost încercate)"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Aborted, encryption detected"
|
||||
@@ -243,7 +253,7 @@ msgstr "Terminat, encriptare detectată"
|
||||
#. Warning message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "In \"%s\" unwanted extension in RAR file. Unwanted file is %s "
|
||||
msgstr ""
|
||||
msgstr "Extensie nedorită în fișierul RAR al „%s”. Fișierul nedorit este %s"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Unwanted extension is in rar file %s"
|
||||
@@ -256,12 +266,12 @@ msgstr "Oprit, extensii nedorite detectate"
|
||||
#. Warning message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Paused job \"%s\" because of rating (%s)"
|
||||
msgstr ""
|
||||
msgstr "Sarcina \"%s\" întreruptă datorită ratingului (%s)"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Aborted job \"%s\" because of rating (%s)"
|
||||
msgstr ""
|
||||
msgstr "Sarcina \"%s\" anulată datorită ratingului (%s)"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Aborted, rating filter matched (%s)"
|
||||
@@ -271,11 +281,13 @@ msgstr "Abandonat, filtru de rating potrivit (%s)"
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Job \"%s\" is probably encrypted due to RAR with same name inside this RAR"
|
||||
msgstr ""
|
||||
"Sarcina „%s” este probabil criptată din cauza unui RAR cu același nume în "
|
||||
"acest RAR"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "Job \"%s\" is probably encrypted: \"password\" in filename \"%s\""
|
||||
msgstr ""
|
||||
msgstr "Sarcina „%s” este probabil criptată: „parolă” în fișierul „%s”"
|
||||
|
||||
#: sabnzbd/assembler.py
|
||||
msgid "video"
|
||||
@@ -314,10 +326,14 @@ msgstr "%s nu este o adresă email validă"
|
||||
msgid "Server address required"
|
||||
msgstr "Adresă server necesară"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
msgstr ""
|
||||
msgstr "Configurație blocată, nu pot salva setările"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/config.py
|
||||
@@ -346,10 +362,6 @@ msgstr "%s nu este o valoare octală corectă"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "cale UNC \"%s\" nu este premisă aici"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Eroare: Lungimea cale ar trebuie să fie sub %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Eroare: Coada nu este goală, nu pot schimba dosar."
|
||||
@@ -383,11 +395,11 @@ msgstr "Jurnal istoric stagii invalid pentru %s"
|
||||
#. Warning message
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
msgstr "Eroare decodare: lipsă memorie"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "UUencode detected, only yEnc encoding is supported [%s]"
|
||||
msgstr ""
|
||||
msgstr "UUencode detectat, este suportată doar codarea yEnc [%s]"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/decoder.py
|
||||
@@ -396,7 +408,7 @@ msgstr "Eroare Necunoscută în timpul decodării %s"
|
||||
|
||||
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
|
||||
msgid "Direct Unpack"
|
||||
msgstr ""
|
||||
msgstr "Dezarhivare directă"
|
||||
|
||||
#. PP status - History: job status
|
||||
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
|
||||
@@ -410,13 +422,16 @@ msgstr "Dezarhivat %s fişierele/dosarele în %s"
|
||||
#. Warning message
|
||||
#: sabnzbd/directunpacker.py
|
||||
msgid "Direct Unpack was automatically enabled."
|
||||
msgstr ""
|
||||
msgstr "Dezarhivarea directă a fost activată automat."
|
||||
|
||||
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Jobs will start unpacking during the downloading to reduce post-processing "
|
||||
"time. Only works for jobs that do not need repair."
|
||||
msgstr ""
|
||||
"Sarcinile vor începe dezarhivarea pe parcursul descărcării pentru a reduce "
|
||||
"timpul de postprocesare, Funcționează doar pentru sarcinile care nu necesită"
|
||||
" reparare."
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/dirscanner.py
|
||||
@@ -488,6 +503,16 @@ msgstr "Eroare suspectă în sistemul de descprcare"
|
||||
msgid "Shutting down"
|
||||
msgstr "Închidere"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Conectare server mail nereuşită"
|
||||
@@ -593,7 +618,7 @@ msgstr "Mutare %s în %s nereuşită"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection with hostname \"%s\" from:"
|
||||
msgstr ""
|
||||
msgstr "Conectare refuzată cu gazda „%s” de la:"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "User logged in to the web interface"
|
||||
@@ -634,7 +659,7 @@ msgstr "Autentificare nereuşită, verifică nume utilizator/parolă."
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Unsuccessful login attempt from %s"
|
||||
msgstr ""
|
||||
msgstr "Încercare de conectare nereușită de la %s"
|
||||
|
||||
#. Bytes (used as postfix, as in "GB", "TB")
|
||||
#: sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
@@ -656,6 +681,8 @@ msgid ""
|
||||
"The Completed Download Folder cannot be the same or a subfolder of the "
|
||||
"Temporary Download Folder"
|
||||
msgstr ""
|
||||
"Directorul de descărcări finalizate nu poate fi același, sau un subdirector "
|
||||
"al directorului de descărcări temporare"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
|
||||
@@ -714,6 +741,8 @@ msgstr "Server nedefinit!"
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
"Directorul de categorii nu poate fi un subdirector al directorului de "
|
||||
"descărcări temporare."
|
||||
|
||||
#: sabnzbd/interface.py, sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
@@ -739,10 +768,14 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Actualizare Disponibilă!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
msgstr ""
|
||||
msgstr "Eșuare la încărcarea fișierului: %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
@@ -755,35 +788,28 @@ msgid ""
|
||||
"Your password file contains more than 30 passwords, testing all these "
|
||||
"passwords takes a lot of time. Try to only list useful passwords."
|
||||
msgstr ""
|
||||
"Fișierul tău cu parole conține peste 30 de parole, verificarea tuturor "
|
||||
"necesită mult timp. Listează doar parolele utile."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to read the password file %s"
|
||||
msgstr ""
|
||||
msgstr "Eșuare la citirea fișierului cu parole %s"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "[%s] The command in build_command is undefined."
|
||||
msgstr ""
|
||||
msgstr "[%s] Comanda din build_command este nedefinită."
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr ""
|
||||
msgstr "Scriptul Python „%s” nu are permisiuni de executare (+x)"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Rulare script"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Post-Procesarea a fost abandonată (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -845,11 +871,6 @@ msgstr "Dezarhivare nereuşită, arhiva necesită o parolă"
|
||||
msgid "Unpacking"
|
||||
msgstr "Dezarhivare"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Dezarhivează"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Dezarhivare nereuşită, nu pot găsi %s"
|
||||
@@ -871,11 +892,12 @@ msgstr "EROARE: CRC nereuşit în \"%s\""
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, file too large for filesystem (FAT?)"
|
||||
msgstr ""
|
||||
"Dezarhivare eșuată, fișier prea mare pentru sistemul de fișiere (FAT?)"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "ERROR: File too large for filesystem (%s)"
|
||||
msgstr ""
|
||||
msgstr "EROARE: fișier prea mare pentru sistemul de fișiere (%s)"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/newsunpack.py
|
||||
@@ -906,7 +928,7 @@ msgstr "Fișier RAR ce poate fi folosit"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Corrupt RAR file"
|
||||
msgstr ""
|
||||
msgstr "Fișier RAR corupt"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "%s files in %s"
|
||||
@@ -919,7 +941,7 @@ msgstr "Eroare \"%s\" în timpul rulării unzip() pe %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "No 7za binary found, cannot unpack \"%s\""
|
||||
msgstr ""
|
||||
msgstr "Nu s-a găsit binar 7za, nu pot dezarhiva „%s”"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Trying 7zip with password \"%s\""
|
||||
@@ -982,6 +1004,8 @@ msgstr "[%s] Verificat în %s, reparare necesară"
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
msgstr ""
|
||||
"Fișiere par2 invalide sau parametri PAR2 invalizi, nu pot verifica sau "
|
||||
"repara"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Fetching %s blocks..."
|
||||
@@ -1005,7 +1029,7 @@ msgstr "[%s] Reparat în %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Verifying repair"
|
||||
msgstr ""
|
||||
msgstr "Se verifică repararea"
|
||||
|
||||
#. Notification
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/notifier.py
|
||||
@@ -1018,7 +1042,7 @@ msgstr "Se verifică"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
msgstr "Se verifică fișierele extra"
|
||||
|
||||
#. PP status
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
@@ -1038,14 +1062,16 @@ msgid ""
|
||||
"Certificate hostname mismatch: the server hostname is not listed in the "
|
||||
"certificate. This is a server issue."
|
||||
msgstr ""
|
||||
"Neportivire certificat: denumirea serverului nu este listată în certificat. "
|
||||
"Aceasta este o problemă de server."
|
||||
|
||||
#: sabnzbd/newswrapper.py
|
||||
msgid "Certificate not valid. This is most probably a server issue."
|
||||
msgstr ""
|
||||
msgstr "Certificat invalid. Este cel mai probabil o problemă de server."
|
||||
|
||||
#: sabnzbd/newswrapper.py
|
||||
msgid "Server %s uses an untrusted certificate [%s]"
|
||||
msgstr ""
|
||||
msgstr "Serverul %s utilizează un certificat nesigur [%s]"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/newswrapper.py, sabnzbd/skintext.py
|
||||
@@ -1105,7 +1131,7 @@ msgstr "Indisponibil"
|
||||
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Failed to send macOS notification"
|
||||
msgstr ""
|
||||
msgstr "Eșuare la trimiterea notificării macOS"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/notifier.py
|
||||
@@ -1195,7 +1221,7 @@ msgstr "Fişier NZB gol %s"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Pre-queue script marked job as failed"
|
||||
msgstr ""
|
||||
msgstr "Scriptul pre-coadă a marcat sarcina ca nereușită"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
@@ -1205,12 +1231,12 @@ msgstr "Ignorăm duplicat NZB \"%s\""
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Failing duplicate NZB \"%s\""
|
||||
msgstr ""
|
||||
msgstr "Eșuare duplicat NZB „%s”"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Duplicate NZB"
|
||||
msgstr ""
|
||||
msgstr "NZB duplicat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
@@ -1220,7 +1246,7 @@ msgstr "Întrerupem duplicat NZB \"%s\""
|
||||
#. Warning message
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Unwanted Extension in file %s (%s)"
|
||||
msgstr ""
|
||||
msgstr "Extensie nedorită în fișierul %s (%s)"
|
||||
|
||||
#: sabnzbd/nzbstuff.py
|
||||
msgid "Aborted, cannot be completed"
|
||||
@@ -1294,10 +1320,6 @@ msgstr "Atenționări"
|
||||
msgid "Idle"
|
||||
msgstr "Inactiv"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Configurare"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1322,9 +1344,10 @@ msgstr "Şterge Istoricul"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Limitare de Viteză"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1373,10 +1396,6 @@ msgstr "Gol"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Istoric Ultimele 10 Obiecte"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Versiune nouă disponibilă"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Dute la vrăjitor"
|
||||
@@ -1497,6 +1516,8 @@ msgid ""
|
||||
"Unable to bind to port %s on %s. Some other software uses the port or "
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
"Nu pot rezerva portul %s pe %s. Alt software utilizează portul sau SABnzbs "
|
||||
"rulează deja."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/panic.py
|
||||
@@ -1524,6 +1545,8 @@ msgid ""
|
||||
"Completed Download Folder %s is on FAT file system, limiting maximum file "
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
"Directorul de descărcări finalizate %s se află pe sistem de fișiere FAT, "
|
||||
"limitând dimensiunea maximă a fișierului la 4GB"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
@@ -1580,6 +1603,10 @@ msgstr "Post Procesare Nereuşită pentru %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "vezi fişier jurnal"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr "Post-procesarea a fost întreruptă"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Descărcarea a eșuat"
|
||||
@@ -1612,11 +1639,11 @@ msgstr "Verificare reuşită cu fişierele SFV"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR-based verification"
|
||||
msgstr ""
|
||||
msgstr "Încerc verificare RAR"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "[%s] RAR-based verification failed: %s"
|
||||
msgstr ""
|
||||
msgstr "[%s] verificarea RAR a eșuat: %s"
|
||||
|
||||
#: sabnzbd/postproc.py, sabnzbd/skintext.py
|
||||
msgid "Passworded"
|
||||
@@ -1624,10 +1651,14 @@ msgstr "Parolat"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "RAR files verified successfully"
|
||||
msgstr ""
|
||||
msgstr "Fișierele RAR verificate cu succes"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "Verificarea fișierelor RAR a eșuat"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
@@ -1790,6 +1821,16 @@ msgstr "Descarcă"
|
||||
msgid "Join files"
|
||||
msgstr "Uneşte fişierele"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Dezarhivează"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Script"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2014,11 +2055,6 @@ msgstr "oră"
|
||||
msgid "hours"
|
||||
msgstr "ore"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2114,6 +2150,10 @@ msgstr "Săptămâna aceasta"
|
||||
msgid "This month"
|
||||
msgstr "Luna aceasta"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Azi"
|
||||
@@ -2122,6 +2162,14 @@ msgstr "Azi"
|
||||
msgid "Total"
|
||||
msgstr "Total"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personalizat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Viteză"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "activat"
|
||||
@@ -2954,6 +3002,12 @@ msgstr "neinstalat"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Permite acesarea interfeţei de la o adresă HTTPS."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "Port HTTPS"
|
||||
@@ -3220,6 +3274,26 @@ msgstr ""
|
||||
"Locație pentru stocare , a descărcărilor procesate complet.<br /><i>Poate fi"
|
||||
" suprascris de categoriile definite de utilizator.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Auto repornire"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Permisiuni pentru descărcări finalizate"
|
||||
@@ -3363,9 +3437,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Post-Procesează Doar Sarcinile Verificate"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Execută post-procesarea doar dacă sarcina a trecut toate verificările PAR2."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3670,11 +3746,6 @@ msgstr ""
|
||||
"În ce zi a lunii sau săptămână (1=Luni) ISP dumneavoastră resetează cota? "
|
||||
"(Opțional cu hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Auto repornire"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Se reia descărcarea după resetarea cotei?"
|
||||
@@ -3830,6 +3901,21 @@ msgstr "Parolă"
|
||||
msgid "Timeout"
|
||||
msgstr "Timp Expirare"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3922,6 +4008,14 @@ msgstr "Trimite comanda group înainte de a cere articole."
|
||||
msgid "Personal notes"
|
||||
msgstr "Note personale"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3974,6 +4068,16 @@ msgstr "Citeşte Flux"
|
||||
msgid "Force Download"
|
||||
msgstr "Descărcare Forţată"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4670,12 +4774,12 @@ msgid "Date format"
|
||||
msgstr "Format dată"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Coloană extra la Coadă"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "Coloană extra de istoric"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4757,10 +4861,6 @@ msgstr "Ascunde/arată fișierele finalizate"
|
||||
msgid "View Script Log"
|
||||
msgstr "Vezi Jurnal Script"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Actualizare Disponibilă!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4773,21 +4873,17 @@ msgstr ""
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Personalizat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "Aspect compact"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Interfață tabelară <br/>(coadă și istoric separate)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Viteză"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "Interfață tabelară <br/>(coadă și istoric separate)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
197
po/main/ru.po
197
po/main/ru.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: ru\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -113,16 +123,6 @@ msgstr ""
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr ""
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Предупреждение"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr ""
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Завершение работы SABnzbd закончено"
|
||||
@@ -314,6 +314,10 @@ msgstr "%s не является допустимым адресом элект
|
||||
msgid "Server address required"
|
||||
msgstr "Требуется адрес сервера"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -346,10 +350,6 @@ msgstr "%s не является правильным восьмеричным
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC-путь «%s» здесь не допускается"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Ошибка: очередь не пустая, папку нельзя изменить."
|
||||
@@ -485,6 +485,16 @@ msgstr ""
|
||||
msgid "Shutting down"
|
||||
msgstr "Завершение работы"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Не удалось подключиться к почтовому серверу"
|
||||
@@ -738,6 +748,10 @@ msgstr "ч"
|
||||
msgid "m"
|
||||
msgstr "м"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Доступно обновление!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -774,15 +788,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Запуск сценария"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Пост-обработка была прервана (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Сценарий"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -844,11 +849,6 @@ msgstr "Ошибка распаковки: архив защищён парол
|
||||
msgid "Unpacking"
|
||||
msgstr "Распаковка"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Распаковать"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Ошибка распаковки: не удаётся найти %s"
|
||||
@@ -1294,10 +1294,6 @@ msgstr "предупреждений"
|
||||
msgid "Idle"
|
||||
msgstr "Бездействие"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Конфигурация"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1322,9 +1318,10 @@ msgstr "Очистить историю"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Ограничение скорости"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "мин."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "мин"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1373,10 +1370,6 @@ msgstr "Пусто"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Последние 10 элементов истории"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Доступна новая версия"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Запустить мастер"
|
||||
@@ -1578,6 +1571,10 @@ msgstr "Ошибка пост-обработки для %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "см. журнал"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Не удалось загрузить"
|
||||
@@ -1628,6 +1625,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1788,6 +1789,16 @@ msgstr "Загрузить"
|
||||
msgid "Join files"
|
||||
msgstr "Объединить файлы"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Распаковать"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Сценарий"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2012,11 +2023,6 @@ msgstr "час"
|
||||
msgid "hours"
|
||||
msgstr "часов"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "мин"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2112,6 +2118,10 @@ msgstr "за эту неделю"
|
||||
msgid "This month"
|
||||
msgstr "за этот месяц"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "за сегодня"
|
||||
@@ -2120,6 +2130,14 @@ msgstr "за сегодня"
|
||||
msgid "Total"
|
||||
msgstr "всего"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Другой"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Скорость"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "на"
|
||||
@@ -2949,6 +2967,12 @@ msgstr "не установлено"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Доступ к интерфейсу по протоколу HTTPS."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "Порт HTTPS"
|
||||
@@ -3218,6 +3242,26 @@ msgstr ""
|
||||
"Место для сохранения готовых, полностью обработанных загрузок.<br /><i>Можно"
|
||||
" переопределить в пользовательских категориях.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Автоматически возобновлять"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Права доступа для завершённых загрузок"
|
||||
@@ -3363,8 +3407,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Обрабатывать только проверенные задания"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgstr "Обрабатывать только задания, успешно прошедшие все проверки PAR2."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3661,11 +3708,6 @@ msgstr ""
|
||||
"День месяца или недели (1 — понедельник), когда провайдер сбрасывает квоту. "
|
||||
"(дополнительно можно указать чч:мм)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Автоматически возобновлять"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Возобновлять загрузку после сброса квоты?"
|
||||
@@ -3819,6 +3861,21 @@ msgstr "Пароль"
|
||||
msgid "Timeout"
|
||||
msgstr "Время ожидания"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3910,6 +3967,14 @@ msgstr "Отправлять команду группы перед запрос
|
||||
msgid "Personal notes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3962,6 +4027,16 @@ msgstr "Прочитать ленту"
|
||||
msgid "Force Download"
|
||||
msgstr "Загрузить принудительно"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4665,11 +4740,11 @@ msgid "Date format"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4752,10 +4827,6 @@ msgstr ""
|
||||
msgid "View Script Log"
|
||||
msgstr "Просмотреть журнал сценария"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Доступно обновление!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4767,21 +4838,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Другой"
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Скорость"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
msgstr "Подтвердите удаление очереди"
|
||||
|
||||
196
po/main/sr.po
196
po/main/sr.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: sr\n"
|
||||
"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Упозорење"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Грeшкa"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -111,16 +121,6 @@ msgstr "Neuspešno pokretanje web interfejsa: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s покренут"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Упозорење"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Грeшкa"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Гашење SABnzbd је завршено"
|
||||
@@ -312,6 +312,10 @@ msgstr "%s nije ispravna email adresa"
|
||||
msgid "Server address required"
|
||||
msgstr "Потребна је адреса сервера"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -344,10 +348,6 @@ msgstr "%s nije ispravna oktalna vrednost"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC путања \"%s\" није дозвољена"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Greška: Dužina putanje bi trebala biti ispod %s"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Грешка: ред није празан, фасцикла се не може променити."
|
||||
@@ -484,6 +484,16 @@ msgstr "Sumnja u grešku u programu za download"
|
||||
msgid "Shutting down"
|
||||
msgstr "Гашење"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Неуспешно привезивање на сервер е-поште"
|
||||
@@ -733,6 +743,10 @@ msgstr "с"
|
||||
msgid "m"
|
||||
msgstr "м"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Нова верзија доступна!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -769,15 +783,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Покретање скрипта"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Пост-процесирање је заустављено (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Скрипт"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -839,11 +844,6 @@ msgstr "Neuspešno raspakivanje, arhiva zahteva lozinku"
|
||||
msgid "Unpacking"
|
||||
msgstr "Распакивање"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Распакуј"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Погрешно распакивање, не може да се нађе %s"
|
||||
@@ -1288,10 +1288,6 @@ msgstr "Упозорења"
|
||||
msgid "Idle"
|
||||
msgstr "Мирoвање"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Поставке"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1316,8 +1312,9 @@ msgstr "Очисти хронологију"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Ограничење брзине"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "мин."
|
||||
|
||||
#. #: Config->Scheduler
|
||||
@@ -1367,10 +1364,6 @@ msgstr "Празно"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Хронологија задњих 10 ставка"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Ново издање је доступно"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Покрени асистент"
|
||||
@@ -1570,6 +1563,10 @@ msgstr "Грешка пост-процесирања за %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "видети извештај"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Неуспешно преузимање"
|
||||
@@ -1620,6 +1617,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1780,6 +1781,16 @@ msgstr "Преузми"
|
||||
msgid "Join files"
|
||||
msgstr "Прилепити датотеке"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Распакуј"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Скрипт"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2004,11 +2015,6 @@ msgstr "сат"
|
||||
msgid "hours"
|
||||
msgstr "сата(и)"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "мин."
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2104,6 +2110,10 @@ msgstr "Ове седмице"
|
||||
msgid "This month"
|
||||
msgstr "Овог месеца"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "Данас"
|
||||
@@ -2112,6 +2122,14 @@ msgstr "Данас"
|
||||
msgid "Total"
|
||||
msgstr "Укупно"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Прилагођено"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Брзина"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "укљ."
|
||||
@@ -2939,6 +2957,12 @@ msgstr "никје инсталирано"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Приступ интерфејсу преко HTTPS адресе."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS порт"
|
||||
@@ -3206,6 +3230,26 @@ msgstr ""
|
||||
"Смештај завршених, процесираних преузимања.<br /><i>Може се заобићи у "
|
||||
"дефинисаним категоријама.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatski nastavi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Дозволе за фасциклу завршених преузимања"
|
||||
@@ -3351,9 +3395,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Пост-процесирај само проверени послови"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
"Огранићи пост-процесирање само за радове који су прешли све PAR2 провере."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3650,11 +3696,6 @@ msgstr ""
|
||||
"Који дан месеца или недеље (1=понедељак) Ваш провајдер ресетује квоту? "
|
||||
"(опционо са hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Automatski nastavi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Да се настави преузимање после ресета квоте?"
|
||||
@@ -3809,6 +3850,21 @@ msgstr "Лозинка"
|
||||
msgid "Timeout"
|
||||
msgstr "Време истекло"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3900,6 +3956,14 @@ msgstr "Послати команду 'group' пре тражења артикл
|
||||
msgid "Personal notes"
|
||||
msgstr "Lične zabeleške"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3951,6 +4015,16 @@ msgstr "Читај фид"
|
||||
msgid "Force Download"
|
||||
msgstr "Натерај преузимање"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4648,11 +4722,11 @@ msgid "Date format"
|
||||
msgstr "Формат датума"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Ekstra kolona reda"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4735,10 +4809,6 @@ msgstr "Sakrij/prikaži sve završene datoteke"
|
||||
msgid "View Script Log"
|
||||
msgstr "Види извештај скрипта"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Нова верзија доступна!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4750,21 +4820,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Прилагођено"
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Брзина"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
msgstr "Потврда брисања реда"
|
||||
|
||||
199
po/main/sv.po
199
po/main/sv.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: sv\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Varning"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fel"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -111,16 +121,6 @@ msgstr "Misslyckades att starta webbgränsnitt: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s startad"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "Varning"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "Fel"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd nedstängning utförd."
|
||||
@@ -312,6 +312,10 @@ msgstr "%s är inte en godkänd e-mail adress"
|
||||
msgid "Server address required"
|
||||
msgstr "Kräver serveradress"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -344,10 +348,6 @@ msgstr "%s är inte rätt siffervärde"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "UNC sökväg \"%s\" är inte tillåten här"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "Fel: Sökvägen skall vara under %s."
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "Fel: Kön är inte tom, kan inte byta mapp."
|
||||
@@ -484,6 +484,16 @@ msgstr "Misstänker fel i nedladdare"
|
||||
msgid "Shutting down"
|
||||
msgstr "Påbörjar nedstängning av SABnzbd.."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "Det gick inte att ansluta till mailserver"
|
||||
@@ -735,6 +745,10 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Uppdatering tillgänglig"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -771,15 +785,6 @@ msgstr ""
|
||||
msgid "Running script"
|
||||
msgstr "Kör skript"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "Efterbehandling avbröts (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -841,11 +846,6 @@ msgstr "Uppackning misslyckades, arkivet kräver lösenord"
|
||||
msgid "Unpacking"
|
||||
msgstr "Packar upp"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Packa upp"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "Uppackning misslyckades, gick inte att hitta %s"
|
||||
@@ -1292,10 +1292,6 @@ msgstr "Varningar"
|
||||
msgid "Idle"
|
||||
msgstr "Inaktiv"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "Konfiguration"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1320,9 +1316,10 @@ msgstr "Töm historik"
|
||||
msgid "Limit Speed"
|
||||
msgstr "Hastighetsbegränsning"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
msgstr "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
@@ -1371,10 +1368,6 @@ msgstr "Tom"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "Historik (10 senaste sakerna)"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "Ny utgåva tillgänglig"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "Gå till guiden"
|
||||
@@ -1576,6 +1569,10 @@ msgstr "Efterbehandling misslyckades för %s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "se loggfil"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "Hämtning misslyckades"
|
||||
@@ -1626,6 +1623,10 @@ msgstr ""
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1786,6 +1787,16 @@ msgstr "Nedladdning"
|
||||
msgid "Join files"
|
||||
msgstr "Slår ihop filer"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "Packa upp"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "Skript"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -2010,11 +2021,6 @@ msgstr "timme"
|
||||
msgid "hours"
|
||||
msgstr "timmar"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2110,6 +2116,10 @@ msgstr "Denna vecka"
|
||||
msgid "This month"
|
||||
msgstr "Denna månad"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "I dag"
|
||||
@@ -2118,6 +2128,14 @@ msgstr "I dag"
|
||||
msgid "Total"
|
||||
msgstr "Totalt"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Anpassa"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Hastighet"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "den"
|
||||
@@ -2947,6 +2965,12 @@ msgstr "inte installerad"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "Aktivera åtkomst till webbkontrollen med HTTPS adress."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS-port"
|
||||
@@ -3217,6 +3241,26 @@ msgstr ""
|
||||
"Plats för att lagra bearbetade och färdiga nedladdningar.<br /><i>Kan "
|
||||
"åsidosättas av användar-definierade kategorier.</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Autoåterupptagning"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "Rättigheter för färdiga nedladdningar"
|
||||
@@ -3360,8 +3404,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "Efterbehandla endast verifierade jobb"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgstr "Efterbehandla enbart jobb som passerat PAR2 kontrollen."
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3661,11 +3708,6 @@ msgstr ""
|
||||
"På vilken dag i månaden eller veckan (1=Måndag) nollställer din ISP din "
|
||||
"kvot? (Alternativt med hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "Autoåterupptagning"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "Skall nerladdning återupptas efter att kvot är nollställd?"
|
||||
@@ -3820,6 +3862,21 @@ msgstr "Lösenord"
|
||||
msgid "Timeout"
|
||||
msgstr "Tidsgräns"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3911,6 +3968,14 @@ msgstr "Skicka gruppkommando innan du begär artiklar."
|
||||
msgid "Personal notes"
|
||||
msgstr "Personliga noteringar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3963,6 +4028,16 @@ msgstr "Läs flöde"
|
||||
msgid "Force Download"
|
||||
msgstr "Tvinga nedladdning"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4659,11 +4734,11 @@ msgid "Date format"
|
||||
msgstr "Datumformat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "Extra kökolumn"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4746,10 +4821,6 @@ msgstr "Visa/göm färdiga filer"
|
||||
msgid "View Script Log"
|
||||
msgstr "Visa skriptlogg"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "Uppdatering tillgänglig"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4761,21 +4832,17 @@ msgid "Glitter has some (new) features you might like!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "Anpassa"
|
||||
msgid "Compact layout"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "Hastighet"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
msgstr "Bekräfta Kö-borttagningar"
|
||||
|
||||
201
po/main/zh_CN.po
201
po/main/zh_CN.po
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file MAIN
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -17,6 +17,16 @@ msgstr ""
|
||||
"Language: zh_CN\n"
|
||||
"Plural-Forms: nplurals=1; plural=0;\n"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "警告"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
#. Error message
|
||||
#: SABnzbd.py
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -109,16 +119,6 @@ msgstr "无法启动 web 界面: "
|
||||
msgid "SABnzbd %s started"
|
||||
msgstr "SABnzbd %s 已启动"
|
||||
|
||||
#. Notification - Status page, table column header, actual message
|
||||
#: SABnzbd.py, sabnzbd/notifier.py, sabnzbd/skintext.py
|
||||
msgid "Warning"
|
||||
msgstr "警告"
|
||||
|
||||
#. Notification
|
||||
#: SABnzbd.py, sabnzbd/notifier.py
|
||||
msgid "Error"
|
||||
msgstr "错误"
|
||||
|
||||
#: SABnzbd.py, sabnzbd/interface.py
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd 关闭完成"
|
||||
@@ -310,6 +310,10 @@ msgstr "%s 不是有效的电子邮箱地址"
|
||||
msgid "Server address required"
|
||||
msgstr "服务器地址必填"
|
||||
|
||||
#: sabnzbd/cfg.py
|
||||
msgid "%s is not a valid script"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/config.py
|
||||
msgid "Configuration locked, cannot save settings"
|
||||
@@ -342,10 +346,6 @@ msgstr "%s 不是有效的八进制值"
|
||||
msgid "UNC path \"%s\" not allowed here"
|
||||
msgstr "此处不允许使用 UNC 路径 \"%s\""
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Path length should be below %s."
|
||||
msgstr "错误: 路径长度应不超过 %s。"
|
||||
|
||||
#: sabnzbd/config.py
|
||||
msgid "Error: Queue not empty, cannot change folder."
|
||||
msgstr "错误: 队列非空,无法变更文件夹。"
|
||||
@@ -481,6 +481,16 @@ msgstr "下载器疑似错误"
|
||||
msgid "Shutting down"
|
||||
msgstr "正在关闭"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s is expiring in %s day(s)"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Server %s has used the specified quota"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py
|
||||
msgid "Failed to connect to mail server"
|
||||
msgstr "无法连接到邮件服务器"
|
||||
@@ -725,6 +735,10 @@ msgstr "小时"
|
||||
msgid "m"
|
||||
msgstr "分钟"
|
||||
|
||||
#: sabnzbd/misc.py, sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "有更新可用!"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/misc.py
|
||||
msgid "Failed to upload file: %s"
|
||||
@@ -761,15 +775,6 @@ msgstr "Python 脚本 \"%s\" 不具有执行 (+x) 权限"
|
||||
msgid "Running script"
|
||||
msgstr "正在执行脚本"
|
||||
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "后期处理已中止 (%s)"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "脚本"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpack nesting too deep [%s]"
|
||||
@@ -831,11 +836,6 @@ msgstr "解压失败,压缩文件需要密码"
|
||||
msgid "Unpacking"
|
||||
msgstr "正在解压"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "解压"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking failed, unable to find %s"
|
||||
msgstr "解压失败,找不到 %s"
|
||||
@@ -1278,10 +1278,6 @@ msgstr "警告信息"
|
||||
msgid "Idle"
|
||||
msgstr "空闲"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Configuration"
|
||||
msgstr "配置"
|
||||
|
||||
#. Main menu item
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "Queue"
|
||||
@@ -1306,8 +1302,9 @@ msgstr "清空历史"
|
||||
msgid "Limit Speed"
|
||||
msgstr "限速"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "min."
|
||||
#. One minute
|
||||
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "分钟"
|
||||
|
||||
#. #: Config->Scheduler
|
||||
@@ -1357,10 +1354,6 @@ msgstr "清空"
|
||||
msgid "History Last 10 Items"
|
||||
msgstr "最近十条历史记录"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "New release available"
|
||||
msgstr "新版本可用"
|
||||
|
||||
#: sabnzbd/osxmenu.py
|
||||
msgid "Go to wizard"
|
||||
msgstr "转到向导"
|
||||
@@ -1560,6 +1553,10 @@ msgstr "后期处理失败:%s (%s)"
|
||||
msgid "see logfile"
|
||||
msgstr "查看日志文件"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing was aborted"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download Failed"
|
||||
msgstr "下载失败"
|
||||
@@ -1610,6 +1607,10 @@ msgstr "RAR 文件验证成功"
|
||||
msgid "RAR files failed to verify"
|
||||
msgstr "RAR 文件验证失败"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Trying RAR renamer"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No matching earlier rar file for %s"
|
||||
@@ -1770,6 +1771,16 @@ msgstr "下载"
|
||||
msgid "Join files"
|
||||
msgstr "合并文件"
|
||||
|
||||
#. PP phase "unpack"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Unpack"
|
||||
msgstr "解压"
|
||||
|
||||
#. PP phase "script" - Notification Script settings
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Script"
|
||||
msgstr "脚本"
|
||||
|
||||
#. PP Source of the NZB (path or URL) - Where to find the SABnzbd sourcecode
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Source"
|
||||
@@ -1994,11 +2005,6 @@ msgstr "小时"
|
||||
msgid "hours"
|
||||
msgstr "小时"
|
||||
|
||||
#. One minute
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "min"
|
||||
msgstr "分钟"
|
||||
|
||||
#. Multiple minutes
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "mins"
|
||||
@@ -2094,6 +2100,10 @@ msgstr "本周"
|
||||
msgid "This month"
|
||||
msgstr "本月"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Selected date range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Today"
|
||||
msgstr "今天"
|
||||
@@ -2102,6 +2112,14 @@ msgstr "今天"
|
||||
msgid "Total"
|
||||
msgstr "总计"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "自定义"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "速度"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "on"
|
||||
msgstr "开"
|
||||
@@ -2923,6 +2941,12 @@ msgstr "未安装"
|
||||
msgid "Enable accessing the interface from a HTTPS address."
|
||||
msgstr "启用 HTTPS 地址访问界面。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
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 ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "HTTPS Port"
|
||||
msgstr "HTTPS 端口"
|
||||
@@ -3174,6 +3198,26 @@ msgid ""
|
||||
"overruled by user-defined categories.</i>"
|
||||
msgstr "存储完成且已完全处理的下载数据的位置。<br /><i>可以通过用户定义分类额外调整。</i>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Minimum Free Space for Completed Download Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Will not work if a category folder is on a different disk."
|
||||
msgstr ""
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "自动续传"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Downloading will automatically resume if the minimum free space is available"
|
||||
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
|
||||
"/>Checked every few minutes."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Permissions for completed downloads"
|
||||
msgstr "完成下载权限"
|
||||
@@ -3307,8 +3351,11 @@ msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "仅对经验证的任务进行后期处理"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgstr "仅对通过全部 PAR2 检查的任务执行后期处理。"
|
||||
msgid ""
|
||||
"Only unpack and run scripts on jobs that passed the verification stage. If "
|
||||
"turned off, all jobs will be marked as Completed even if they are "
|
||||
"incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3598,11 +3645,6 @@ msgid ""
|
||||
"(Optionally with hh:mm)"
|
||||
msgstr "您的 ISP 会在每月或每周的哪天 (1=星期一) 重置配额? (可选加上 hh:mm)"
|
||||
|
||||
#. Auto-resume download on the reset day
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Auto resume"
|
||||
msgstr "自动续传"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Should downloading resume after the quota is reset?"
|
||||
msgstr "配额重置后是否自动续传下载?"
|
||||
@@ -3754,6 +3796,21 @@ msgstr "密码"
|
||||
msgid "Timeout"
|
||||
msgstr "超时"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Account expiration date"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Warn 5 days in advance of account expiration date."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Quota for this account, counted from the time it is set. In bytes, "
|
||||
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
|
||||
" minutes."
|
||||
msgstr ""
|
||||
|
||||
#. Server's retention time in days
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Retention time"
|
||||
@@ -3845,6 +3902,14 @@ msgstr "请求文章之前发送 group 命令。"
|
||||
msgid "Personal notes"
|
||||
msgstr "注释"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Article availability"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "%f% available of %d requested articles"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Add Schedule"
|
||||
@@ -3895,6 +3960,16 @@ msgstr "读取 Feed"
|
||||
msgid "Force Download"
|
||||
msgstr "强制下载"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS when will be the next RSS scan
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Next scan at"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS table column header
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Filter"
|
||||
@@ -4590,12 +4665,12 @@ msgid "Date format"
|
||||
msgstr "日期格式"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra queue column"
|
||||
msgstr "队列显示更多列"
|
||||
msgid "Extra queue columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Extra history column"
|
||||
msgstr "额外的历史记录列"
|
||||
msgid "Extra history columns"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "page"
|
||||
@@ -4677,10 +4752,6 @@ msgstr "隐藏/显示已完成文件"
|
||||
msgid "View Script Log"
|
||||
msgstr "查看脚本日志"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Update Available!"
|
||||
msgstr "有更新可用!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"LocalStorage (cookies) are disabled in your browser, interface settings will"
|
||||
@@ -4691,21 +4762,17 @@ msgstr "您的浏览器已禁用 LocalStorage (cookies)。界面设置将在您
|
||||
msgid "Glitter has some (new) features you might like!"
|
||||
msgstr "你可能会喜欢一些 Glitter 的(新)功能!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Custom"
|
||||
msgstr "自定义"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Compact layout"
|
||||
msgstr "精简外观"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "标签化外观 <br/>(分别显示队列与历史记录)"
|
||||
msgid "Always use full screen width"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Speed"
|
||||
msgstr "速度"
|
||||
msgid "Tabbed layout <br/>(separate queue and history)"
|
||||
msgstr "标签化外观 <br/>(分别显示队列与历史记录)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Confirm Queue Deletions"
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
#
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
@@ -13,55 +13,59 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "The installer only supports 64-bit Windows, use the standalone version to run on 32-bit Windows."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: 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 ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Run at startup"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Desktop Icon"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "NZB File association"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Program"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Settings"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "You cannot overwrite an existing installation. \\n\\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr ""
|
||||
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\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"
|
||||
@@ -13,61 +13,67 @@ msgstr ""
|
||||
"Language: cs\n"
|
||||
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
|
||||
"services or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports 64-bit Windows, use the standalone version to "
|
||||
"run on 32-bit Windows."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: 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 ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Run at startup"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Desktop Icon"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "NZB File association"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Program"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Settings"
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
|
||||
"the previous version or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr ""
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\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"
|
||||
@@ -17,56 +17,62 @@ msgstr ""
|
||||
"Language: da\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Vis udgivelsesbemærkninger"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Støt projektet, donér!"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Luk venligst \"SABnzbd.exe\" først"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
|
||||
"services or `Cancel` to cancel this upgrade."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports 64-bit Windows, use the standalone version to "
|
||||
"run on 32-bit Windows."
|
||||
msgstr ""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: 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 ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dette vil afinstallere SABnzbd fra dit system"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Run at startup"
|
||||
msgstr "Kør ved opstart"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Skrivebordsikon"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "NZB File association"
|
||||
msgstr "NZB-filtilknytning"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Program"
|
||||
msgstr "Slet program"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Settings"
|
||||
msgstr "Slet indstillinger"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
|
||||
"the previous version or `Cancel` to cancel this upgrade."
|
||||
@@ -75,6 +81,6 @@ msgstr ""
|
||||
"fjerne den tidligere version eller `Annuller` for at annullere "
|
||||
"opgraderingen."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr "Dine indstillinger og data vil blive bevaret."
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\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"
|
||||
@@ -17,19 +17,19 @@ msgstr ""
|
||||
"Language: de\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Versionshinweise anzeigen"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "Bitte unterstützen Sie das Projekt durch eine Spende!"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Schliessen Sie bitte zuerst \"SABnzbd.exe\"."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
|
||||
@@ -38,7 +38,7 @@ msgstr ""
|
||||
"Aufgrund von Änderungen am SABnzbd Windows Service ab Version 3.0.0 ist es nötig,\\nden Windows Service neu zu installieren.\\n\\n\r\n"
|
||||
"Drücke `OK` um den existierenden Service zu löschen oder `Abbrechen` um dieses Upgrade abzubrechen."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports 64-bit Windows, use the standalone version to "
|
||||
"run on 32-bit Windows."
|
||||
@@ -46,31 +46,37 @@ msgstr ""
|
||||
"Der Installer unterstützt nur Windows 64-bit. Benutze die Standalone Version"
|
||||
" für Windows 32-bit."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: 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 ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Dies entfernt SABnzbd von Ihrem System"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Run at startup"
|
||||
msgstr "Beim Systemstart ausführen"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Desktop-Symbol"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "NZB File association"
|
||||
msgstr "Mit NZB-Dateien verknüpfen"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Program"
|
||||
msgstr "Programm löschen"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Settings"
|
||||
msgstr "Einstellungen löschen"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
|
||||
"the previous version or `Cancel` to cancel this upgrade."
|
||||
@@ -79,6 +85,6 @@ msgstr ""
|
||||
"Sie 'OK', um die vorherige Version zu entfernen oder 'Abbrechen' um die "
|
||||
"Aktualisierung abzubrechen."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr "Ihre Einstellungen und Daten bleiben erhalten."
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# SABnzbd Translation Template file NSIS
|
||||
# Copyright 2011-2020 The SABnzbd-Team
|
||||
# Copyright 2011-2021 The SABnzbd-Team
|
||||
# team@sabnzbd.org
|
||||
#
|
||||
# Translators:
|
||||
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
|
||||
"Project-Id-Version: SABnzbd-3.2.0-develop\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"
|
||||
@@ -18,19 +18,19 @@ msgstr ""
|
||||
"Language: es\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Show Release Notes"
|
||||
msgstr "Mostrar notas de la versión"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Support the project, Donate!"
|
||||
msgstr "¡Apoye el proyecto, haga una donación!"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Please close \"SABnzbd.exe\" first"
|
||||
msgstr "Por favor cierre primero \"SABnzbd.exe\""
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
|
||||
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
|
||||
@@ -41,7 +41,7 @@ msgstr ""
|
||||
"en \"OK\" para eliminar los servicios existentes o \"Cancelar\" para "
|
||||
"cancelar la actualización."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"The installer only supports 64-bit Windows, use the standalone version to "
|
||||
"run on 32-bit Windows."
|
||||
@@ -49,31 +49,37 @@ msgstr ""
|
||||
"El instalador solo admite Windows 64-bit, utilice la versión independiente "
|
||||
"para ejecutar Windows 32-bit."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: 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 ""
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "This will uninstall SABnzbd from your system"
|
||||
msgstr "Esto desinstalará SABnzbd de su sistema"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Run at startup"
|
||||
msgstr "Ejecutar al inicio"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Desktop Icon"
|
||||
msgstr "Icono del escritorio"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "NZB File association"
|
||||
msgstr "Asociación de archivos NZB"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Program"
|
||||
msgstr "Eliminar programa"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Delete Settings"
|
||||
msgstr "Eliminar Ajustes"
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid ""
|
||||
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
|
||||
"the previous version or `Cancel` to cancel this upgrade."
|
||||
@@ -81,6 +87,6 @@ msgstr ""
|
||||
"No es posible sobrescribir una instalación existente. \\n\\nPresione `OK' "
|
||||
"para quitar la versión anterior o 'Cancelar' para cancelar la actualización."
|
||||
|
||||
#: NSIS_Installer.nsi
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Your settings and data will be preserved."
|
||||
msgstr "Tus ajustes y datos se mantendrán intactos."
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user