mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-01-10 08:30:45 -05:00
Compare commits
455 Commits
2.3.0Alpha
...
2.3.2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3c87fd45c3 | ||
|
|
d0a258ce28 | ||
|
|
1cac5799eb | ||
|
|
a56e4f3650 | ||
|
|
9970d2ee6f | ||
|
|
f2695e9305 | ||
|
|
d333f1b56b | ||
|
|
00f5b29caa | ||
|
|
16aa43c120 | ||
|
|
b2179d5b3e | ||
|
|
8e2e9fd5c9 | ||
|
|
2e3181779a | ||
|
|
8a270e49be | ||
|
|
32e26c804b | ||
|
|
5cf87be51e | ||
|
|
781c45bf3b | ||
|
|
df5a85f851 | ||
|
|
8373994be6 | ||
|
|
437ff427f8 | ||
|
|
ea5e4dfee1 | ||
|
|
2e45f4028c | ||
|
|
d7cdce9278 | ||
|
|
38c329ade2 | ||
|
|
933d0c073c | ||
|
|
1f49bba343 | ||
|
|
0ac712dce1 | ||
|
|
f1ae9060c3 | ||
|
|
263231bb62 | ||
|
|
a7b964c153 | ||
|
|
78035eed12 | ||
|
|
0e7ac8ec5e | ||
|
|
00f262c90e | ||
|
|
68df476603 | ||
|
|
5da03f506d | ||
|
|
0c9540e41e | ||
|
|
c6226c6adb | ||
|
|
b8aab5c0f8 | ||
|
|
e29e7a65b5 | ||
|
|
eb46ed80b6 | ||
|
|
50b2d558eb | ||
|
|
3b4b3dcca2 | ||
|
|
e0f8410918 | ||
|
|
581942ca11 | ||
|
|
005fd399d0 | ||
|
|
6ff00bc992 | ||
|
|
ca66eb04ad | ||
|
|
91a2532c95 | ||
|
|
cb49f7bb53 | ||
|
|
0049f14d7f | ||
|
|
e414874910 | ||
|
|
5931beaa5c | ||
|
|
b3d80b7c65 | ||
|
|
9aa90083b2 | ||
|
|
0b939a9519 | ||
|
|
501867137a | ||
|
|
75d4b5deca | ||
|
|
442591f20c | ||
|
|
74b7f383db | ||
|
|
b966707247 | ||
|
|
eada7286d1 | ||
|
|
b9c312961b | ||
|
|
8389b4fedb | ||
|
|
7720cd60ec | ||
|
|
d1d437074a | ||
|
|
30d3d62e09 | ||
|
|
fd1975617b | ||
|
|
1d037dcb62 | ||
|
|
bd5fb3e88f | ||
|
|
5ca66bfeef | ||
|
|
c9fbadd097 | ||
|
|
f4568ad7dd | ||
|
|
74a395f584 | ||
|
|
dd703ace7f | ||
|
|
ddc8396260 | ||
|
|
e6724e347c | ||
|
|
7fa0508ae8 | ||
|
|
06c6f7d38e | ||
|
|
59ef400fec | ||
|
|
0acdf15755 | ||
|
|
40128f59dd | ||
|
|
286914f253 | ||
|
|
f9bd58bb74 | ||
|
|
30cfb9c6fc | ||
|
|
5ca4811689 | ||
|
|
043e5966ff | ||
|
|
f1695ec875 | ||
|
|
a3db910a4d | ||
|
|
80a29c50c9 | ||
|
|
d693e20e1a | ||
|
|
1a36f548df | ||
|
|
a6f6d88ab9 | ||
|
|
aa7fb17b4e | ||
|
|
a99d333272 | ||
|
|
801aadecfc | ||
|
|
124e2b253c | ||
|
|
39cceed580 | ||
|
|
bfcf56ec45 | ||
|
|
01603b24f5 | ||
|
|
d93d2591b7 | ||
|
|
c17fcec499 | ||
|
|
6804ac20da | ||
|
|
4ed7ac3dea | ||
|
|
eae8056366 | ||
|
|
df4680b6d0 | ||
|
|
b8f5861044 | ||
|
|
8e01ceca7a | ||
|
|
0e1cdec78f | ||
|
|
13e5e93953 | ||
|
|
02d08f38eb | ||
|
|
770951bfe6 | ||
|
|
022898bf63 | ||
|
|
4fd2d8505b | ||
|
|
cc72bb743a | ||
|
|
d7869fc3a1 | ||
|
|
4fbf870028 | ||
|
|
306558b52f | ||
|
|
db19875f5d | ||
|
|
f8061dc9c8 | ||
|
|
c73591eb20 | ||
|
|
ec132374a6 | ||
|
|
262964c6c2 | ||
|
|
cdaad3ed90 | ||
|
|
84f54f5c57 | ||
|
|
00436dfb2c | ||
|
|
c3ce87bd10 | ||
|
|
c3a48a61b6 | ||
|
|
0c03476d76 | ||
|
|
6148cd5445 | ||
|
|
7f72e2042c | ||
|
|
638b29819c | ||
|
|
b950820099 | ||
|
|
96adf76ef1 | ||
|
|
556a4db186 | ||
|
|
b9fbd19064 | ||
|
|
167e7f2870 | ||
|
|
4dba5b8caa | ||
|
|
831b64daa8 | ||
|
|
38fd5cde29 | ||
|
|
e39456cca1 | ||
|
|
8e9425855b | ||
|
|
89add6edac | ||
|
|
16b85429ae | ||
|
|
2482c8e70a | ||
|
|
ad2bb6c3a7 | ||
|
|
2c7e725e39 | ||
|
|
123f05f164 | ||
|
|
4ade2e0c60 | ||
|
|
c908a396df | ||
|
|
15f2370bca | ||
|
|
a5e208eb11 | ||
|
|
d59b3b3679 | ||
|
|
476542463a | ||
|
|
52267a9565 | ||
|
|
972e708810 | ||
|
|
a636f7f18e | ||
|
|
9d5b3e9621 | ||
|
|
9e2d8e5e55 | ||
|
|
d9899cc5cd | ||
|
|
650e83e1b8 | ||
|
|
4296e1628b | ||
|
|
5dddc7ab61 | ||
|
|
529ba69584 | ||
|
|
9f35568a24 | ||
|
|
fe40d49c26 | ||
|
|
6c0b32004a | ||
|
|
bda4e102d6 | ||
|
|
5e03204dbc | ||
|
|
b5deda4195 | ||
|
|
5076892d83 | ||
|
|
6c3a3e1694 | ||
|
|
edbbcec272 | ||
|
|
aced381763 | ||
|
|
cdd3f9cc8a | ||
|
|
a2074f06d5 | ||
|
|
39aa3a9c51 | ||
|
|
c6cf3cc45d | ||
|
|
0378f6f8b1 | ||
|
|
d6b48803a6 | ||
|
|
6da23930bf | ||
|
|
d4e1464cc0 | ||
|
|
e8dc3ebd51 | ||
|
|
4009d855c3 | ||
|
|
d69796d351 | ||
|
|
a2d5713477 | ||
|
|
ba7d906bea | ||
|
|
68f78b0e71 | ||
|
|
d5cd0180d8 | ||
|
|
10265bdfb4 | ||
|
|
3d0d67bffc | ||
|
|
11bd16a653 | ||
|
|
248f2da8a6 | ||
|
|
7b7aaaf467 | ||
|
|
0030e4dd36 | ||
|
|
c3013d67b4 | ||
|
|
ddb7f2a40c | ||
|
|
167a94736e | ||
|
|
8b3e30f0a1 | ||
|
|
c383fa88fb | ||
|
|
ee72c1e4d5 | ||
|
|
a80bd826d6 | ||
|
|
63e6d45bb1 | ||
|
|
61300db1fb | ||
|
|
23d005fc36 | ||
|
|
871b351656 | ||
|
|
6b53b9934e | ||
|
|
e038e08a60 | ||
|
|
8300cb7762 | ||
|
|
ec8302717f | ||
|
|
6b872b44db | ||
|
|
6e48ebccc7 | ||
|
|
1cd24d1fd0 | ||
|
|
fa6bb79f53 | ||
|
|
22e9086e09 | ||
|
|
408b84e02d | ||
|
|
16ac4dce21 | ||
|
|
5ce1554a46 | ||
|
|
2d84ed6813 | ||
|
|
06dc5b181e | ||
|
|
37b759fece | ||
|
|
3f8430780d | ||
|
|
9e9bc5f3b0 | ||
|
|
85204105c2 | ||
|
|
f13339d64d | ||
|
|
fa5b44be99 | ||
|
|
08bc7c5b9d | ||
|
|
d9b5dd549a | ||
|
|
8ec53a3bce | ||
|
|
0aac9a5e5c | ||
|
|
11a880d040 | ||
|
|
67b66beb13 | ||
|
|
1da633442b | ||
|
|
13de40881e | ||
|
|
1c6419ea65 | ||
|
|
a2adeffc1a | ||
|
|
71fa3c544a | ||
|
|
b739fb7f07 | ||
|
|
860728beae | ||
|
|
1bdbf1c6a8 | ||
|
|
abbed4cd77 | ||
|
|
d06c11673f | ||
|
|
67d67f5ff6 | ||
|
|
2386d65b84 | ||
|
|
29ec4d9a23 | ||
|
|
22517a7cd7 | ||
|
|
bcc4dd75cf | ||
|
|
97711ca82e | ||
|
|
e782237f27 | ||
|
|
52bb156c08 | ||
|
|
4361d82ddd | ||
|
|
017cf8f285 | ||
|
|
03cdf6ed5d | ||
|
|
cf347a8e90 | ||
|
|
f06afe43e1 | ||
|
|
fb301eb5c8 | ||
|
|
1562c3560b | ||
|
|
9813bc237f | ||
|
|
b39fe059c6 | ||
|
|
a56c770a8b | ||
|
|
e3bf0edad8 | ||
|
|
e35d9e4db3 | ||
|
|
c617d4321a | ||
|
|
0fd3a2881f | ||
|
|
0c1f7633de | ||
|
|
b7d5d49c84 | ||
|
|
9911b93ece | ||
|
|
eeaad00968 | ||
|
|
e1bb8459e3 | ||
|
|
65c3ac0cc0 | ||
|
|
413c02a80f | ||
|
|
80f118f304 | ||
|
|
5c0a10e16b | ||
|
|
d9b32261e7 | ||
|
|
8d8ce52193 | ||
|
|
1cc2e25cda | ||
|
|
4605c3fd30 | ||
|
|
ed7dc3f827 | ||
|
|
e69eeebdd8 | ||
|
|
5da5f1adc1 | ||
|
|
f47e92dec0 | ||
|
|
a894ca5171 | ||
|
|
5abe1140ae | ||
|
|
d34e14370c | ||
|
|
c4f4a3131c | ||
|
|
dcbd9b57f3 | ||
|
|
aad3b54a17 | ||
|
|
cde142a371 | ||
|
|
8bfc98ffc6 | ||
|
|
e46f21d566 | ||
|
|
0e45fdcdfd | ||
|
|
eec7af16d7 | ||
|
|
6532425902 | ||
|
|
44b896522c | ||
|
|
1b16ee44cb | ||
|
|
d5f608c28c | ||
|
|
555d8418e7 | ||
|
|
8c22e35da4 | ||
|
|
95a7924b31 | ||
|
|
5830bebd95 | ||
|
|
d32cf57c75 | ||
|
|
6d9242ebc5 | ||
|
|
cbc4f6a964 | ||
|
|
2a3b2b9556 | ||
|
|
53a219f12b | ||
|
|
48519dcfa0 | ||
|
|
92542c58fe | ||
|
|
7eafe730f9 | ||
|
|
494e72a996 | ||
|
|
84cc86f1d3 | ||
|
|
64479e2e5d | ||
|
|
13b523d9bd | ||
|
|
181881a21b | ||
|
|
86d11095ac | ||
|
|
927ba3cd9d | ||
|
|
6296fc1762 | ||
|
|
60fbe44724 | ||
|
|
29e45da431 | ||
|
|
d82e69eef4 | ||
|
|
8c7d557252 | ||
|
|
a56d6e5517 | ||
|
|
7548d9e975 | ||
|
|
b7e2bd9684 | ||
|
|
f0a243e3d3 | ||
|
|
6e108c9ef2 | ||
|
|
89edcc1924 | ||
|
|
8a6aca47a1 | ||
|
|
d03e5780b8 | ||
|
|
209d8f9b40 | ||
|
|
c257b1be3d | ||
|
|
2c48c8de2e | ||
|
|
a767ef6aed | ||
|
|
ad61d1dd03 | ||
|
|
33c3d187a0 | ||
|
|
4eb486d4e2 | ||
|
|
bfb6c167a4 | ||
|
|
44abf3bdf6 | ||
|
|
c950572592 | ||
|
|
3999cb13fd | ||
|
|
af65075f0c | ||
|
|
de2a2b465b | ||
|
|
cd7a77f02d | ||
|
|
f4a5394b63 | ||
|
|
3fb6a8dedb | ||
|
|
50c8f84eba | ||
|
|
2c7ecdee92 | ||
|
|
72390a793a | ||
|
|
04ad4e5d3e | ||
|
|
5ef9c6a433 | ||
|
|
e6baffc839 | ||
|
|
e361eb25a5 | ||
|
|
9b420e91c9 | ||
|
|
3a4bf971b2 | ||
|
|
1128691c5d | ||
|
|
15043aef3f | ||
|
|
2a3b4afa03 | ||
|
|
00a98efa81 | ||
|
|
f013dd7f0d | ||
|
|
7b91b1c769 | ||
|
|
5583cce322 | ||
|
|
b995c5f992 | ||
|
|
214ac4a53d | ||
|
|
fc7e87f0df | ||
|
|
c0f2f59fc1 | ||
|
|
b90a847a6f | ||
|
|
a58bb385f5 | ||
|
|
9754baeb1c | ||
|
|
ffcd154966 | ||
|
|
97cfe9488c | ||
|
|
374b6f616a | ||
|
|
e2f51595b6 | ||
|
|
04091a16aa | ||
|
|
9d9d2fd9a2 | ||
|
|
5746115331 | ||
|
|
42f1a4926c | ||
|
|
7d87fd461b | ||
|
|
1ba9976979 | ||
|
|
659c199043 | ||
|
|
81a3f53226 | ||
|
|
1cbff28f67 | ||
|
|
8e15acbf30 | ||
|
|
e07be60db6 | ||
|
|
539c9662ff | ||
|
|
b396014f8d | ||
|
|
1db32415b6 | ||
|
|
b24629db6b | ||
|
|
9b5cdcf8fb | ||
|
|
4831415d14 | ||
|
|
a4c51f0b20 | ||
|
|
ec3ba1fb93 | ||
|
|
61966f7036 | ||
|
|
4f69e81841 | ||
|
|
d0d90581df | ||
|
|
8ea5c27633 | ||
|
|
517500fdf3 | ||
|
|
c4c1c9b6ab | ||
|
|
2388889ede | ||
|
|
55cfe878d7 | ||
|
|
a2daaee468 | ||
|
|
2c360e395e | ||
|
|
399cfee594 | ||
|
|
be646ae6ab | ||
|
|
b470253d9f | ||
|
|
b83c493492 | ||
|
|
991277bb01 | ||
|
|
5626013b81 | ||
|
|
2810d37758 | ||
|
|
c2f08f01e0 | ||
|
|
17ff087e06 | ||
|
|
77de565b7c | ||
|
|
54d238aa4d | ||
|
|
379d09f8cc | ||
|
|
00de72b127 | ||
|
|
f9c84fa7dd | ||
|
|
c8e46691bb | ||
|
|
df1bb636e5 | ||
|
|
ff886fad0d | ||
|
|
6dbee7a413 | ||
|
|
3f8fcd7172 | ||
|
|
d94f7388e6 | ||
|
|
ad8b49fea8 | ||
|
|
ce00270c12 | ||
|
|
8c501f8f58 | ||
|
|
ce313ebc65 | ||
|
|
887ad881a2 | ||
|
|
ce40827552 | ||
|
|
2777d89482 | ||
|
|
727b300a0e | ||
|
|
652b021a8e | ||
|
|
fdf33acfbb | ||
|
|
b001bc9b6f | ||
|
|
8802cb1d8c | ||
|
|
e19a2fbae7 | ||
|
|
53e38f98f9 | ||
|
|
e783e227f6 | ||
|
|
f3dfbe4181 | ||
|
|
bcd8ca8bc4 | ||
|
|
816d6a63cd | ||
|
|
88d3f25700 | ||
|
|
80f69b11db | ||
|
|
81a11f20c8 | ||
|
|
9e2a839953 | ||
|
|
3cefcde270 | ||
|
|
87a1eacfe7 | ||
|
|
7cbc1a8419 | ||
|
|
7b5570eb0b | ||
|
|
1a43a4dcf0 | ||
|
|
2c2a6592c7 | ||
|
|
f31de6ee4e | ||
|
|
8fcd1f6b6c | ||
|
|
d7f3a473d7 | ||
|
|
ab2eb0c94e | ||
|
|
e51f4fc45a | ||
|
|
65278120e2 | ||
|
|
2eed355e9c | ||
|
|
018955f4d5 | ||
|
|
12fd63c1cf |
7
.gitignore
vendored
7
.gitignore
vendored
@@ -19,6 +19,10 @@ SABnzbd*.dmg
|
||||
# WingIDE project files
|
||||
*.wp[ru]
|
||||
|
||||
# Testing folders
|
||||
.cache
|
||||
.xprocess
|
||||
|
||||
# General junk
|
||||
*.keep
|
||||
*.bak
|
||||
@@ -27,3 +31,6 @@ SABnzbd*.dmg
|
||||
# Some people use Emacs as an editor
|
||||
\#*
|
||||
.\#*
|
||||
|
||||
.DS_Store
|
||||
/venv
|
||||
|
||||
15
.travis.yml
Normal file
15
.travis.yml
Normal file
@@ -0,0 +1,15 @@
|
||||
language: python
|
||||
python:
|
||||
- "2.7"
|
||||
before_install:
|
||||
- sudo add-apt-repository ppa:jcfp -y
|
||||
- sudo apt-get update -q
|
||||
- sudo apt-get install sabnzbdplus -y
|
||||
install:
|
||||
- pip install --upgrade -r tests/requirements.txt
|
||||
script:
|
||||
- pytest
|
||||
notifications:
|
||||
email:
|
||||
on_success: never
|
||||
on_failure: always
|
||||
@@ -1,5 +1,5 @@
|
||||
*******************************************
|
||||
*** This is SABnzbd 2.2.0 ***
|
||||
*** This is SABnzbd 2.4.0 ***
|
||||
*******************************************
|
||||
SABnzbd is an open-source cross-platform binary newsreader.
|
||||
It simplifies the process of downloading from Usenet dramatically,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
SABnzbd 2.3.0
|
||||
SABnzbd 2.3.1
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0) LICENSE
|
||||
@@ -60,6 +60,7 @@ All platforms
|
||||
|
||||
Windows
|
||||
PyWin32 use "pip install pypiwin32"
|
||||
subprocessww use "pip install subprocessww"
|
||||
|
||||
Essential modules
|
||||
cheetah-2.0.1+ use "pip install cheetah"
|
||||
@@ -71,7 +72,7 @@ Essential modules
|
||||
Optional modules
|
||||
unzip >= 6.00 http://www.info-zip.org/
|
||||
7zip >= 9.20 http://www.7zip.org/
|
||||
sabyenc == 3.0.2 use "pip install sabyenc"
|
||||
sabyenc == 3.3.1 use "pip install sabyenc"
|
||||
More information: https://sabnzbd.org/sabyenc
|
||||
cryptography >= 1.0 use "pip install cryptography"
|
||||
Enables certificate generation and detection of encrypted RAR-files
|
||||
@@ -92,12 +93,11 @@ Start this from a shell terminal (or command prompt):
|
||||
python tools/make_mo.py
|
||||
|
||||
Start this from a shell terminal (or command prompt):
|
||||
python SABnzbd.py
|
||||
python -OO SABnzbd.py
|
||||
|
||||
Within a few seconds your web browser will start and show the user interface.
|
||||
Use the "Help" button in the web-interface to be directed to the Help Wiki.
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
5) TROUBLESHOOTING
|
||||
-------------------------------------------------------------------------------
|
||||
@@ -123,7 +123,6 @@ may help you solve problems easier.
|
||||
Visit our wiki:
|
||||
https://sabnzbd.org/wiki/
|
||||
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
7) CREDITS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
30
ISSUES.txt
30
ISSUES.txt
@@ -9,28 +9,18 @@
|
||||
- When par2 or unrar hang up, never just stop SABnzbd.
|
||||
Instead use your operating system's task manager to stop the par2 or unrar program.
|
||||
Forcing SABnzbd to quit may damage your queues.
|
||||
Windows-only:
|
||||
If you keep having trouble with par2 multicore you can disable it
|
||||
in Config->Switches.
|
||||
This will force the use of the old and tried, but slower par2cmdline program.
|
||||
|
||||
- A bug in Windows 7 may cause severe memory leaks when you use SABnzbd in
|
||||
combination with some virus scanners and firewalls.
|
||||
Install this hotfix:
|
||||
Description: http://support.microsoft.com/kb/979223/en-us
|
||||
Download location: http://support.microsoft.com/hotfix/KBHotfix.aspx?kbnum=979223&kbln=en-us
|
||||
|
||||
- Some Usenet servers have intermittent login (or other) problems.
|
||||
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/2.2/special
|
||||
See: https://sabnzbd.org/wiki/configuration/2.3/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/2.2/special
|
||||
See: https://sabnzbd.org/wiki/configuration/2.3/special
|
||||
|
||||
- On OSX you may encounter downloaded files with foreign characters.
|
||||
The par2 repair may fail when the files were created on a Windows system.
|
||||
@@ -41,7 +31,7 @@
|
||||
You will see this only when downloaded files contain accented characters.
|
||||
You need to fix it yourself by running the convmv utility (available for most Linux platforms).
|
||||
Possible the file system override setting 'fsys_type' might be solve things:
|
||||
See: https://sabnzbd.org/wiki/configuration/2.2/special
|
||||
See: https://sabnzbd.org/wiki/configuration/2.3/special
|
||||
|
||||
- The "Watched Folder" sometimes fails to delete the NZB files it has
|
||||
processed. This happens when other software still accesses these files.
|
||||
@@ -51,6 +41,10 @@
|
||||
|
||||
- Memory usage can sometimes have high peaks. This makes using SABnzbd on very low
|
||||
memory systems (e.g. a NAS device or a router) a challenge.
|
||||
In particular on Synology (SynoCommunity) the device may report that SABnzbd is using
|
||||
a lot of memory even when idle. In this case the memory is usually not actually used by
|
||||
SABnzbd and will be available if required by other apps or the system. More information
|
||||
can be found in the discussion here: https://github.com/SynoCommunity/spksrc/issues/2856
|
||||
|
||||
- SABnzbd is not compatible with some software firewall versions.
|
||||
The Microsoft Windows Firewall works fine, but remember to tell this
|
||||
@@ -72,13 +66,3 @@
|
||||
Config->Special->wait_for_dfolder to 1.
|
||||
SABnzbd will appear to hang until the drive is mounted.
|
||||
|
||||
- On some operating systems it looks like there is a problem with one of the standard Python libraries.
|
||||
It is possible that you get errors about saving admin files and even unexplained crashes.
|
||||
If so, you can enable the option for the alternative library.
|
||||
It has the same functionality, but is slower.
|
||||
We've had reports about this issue on non-mainstream Linux platforms.
|
||||
- OpenElec
|
||||
- Squeeze Linux
|
||||
There is a "special" option that will allow you to select an alternative library.
|
||||
use_pickle = 1
|
||||
See: https://sabnzbd.org/wiki/configuration/2.2/special
|
||||
|
||||
4
PKG-INFO
4
PKG-INFO
@@ -1,7 +1,7 @@
|
||||
Metadata-Version: 1.0
|
||||
Name: SABnzbd
|
||||
Version: 2.3.0Alpha1
|
||||
Summary: SABnzbd-2.3.0Alpha1
|
||||
Version: 2.3.2
|
||||
Summary: SABnzbd-2.3.2
|
||||
Home-page: https://sabnzbd.org
|
||||
Author: The SABnzbd Team
|
||||
Author-email: team@sabnzbd.org
|
||||
|
||||
@@ -13,7 +13,6 @@ SABnzbd has a good deal of dependencies you'll need before you can get running.
|
||||
|
||||
- `python` (only 2.7.x and higher, but not 3.x.x)
|
||||
- `python-cheetah`
|
||||
- `python-support`
|
||||
- `par2` (Multi-threaded par2 installation guide can be found [here](https://sabnzbd.org/wiki/installation/multicore-par2))
|
||||
- `unrar` (Make sure you get the "official" non-free version of unrar)
|
||||
- `sabyenc` (installation guide can be found [here](https://sabnzbd.org/sabyenc))
|
||||
|
||||
61
README.mkd
61
README.mkd
@@ -1,41 +1,46 @@
|
||||
Release Notes - SABnzbd 2.3.0 Alpha 1
|
||||
Release Notes - SABnzbd 2.3.2
|
||||
=========================================================
|
||||
|
||||
## Changes since 2.2.1
|
||||
- Option to limit Servers to specific Categories removed
|
||||
- Improved par2 handling and obfuscated files detection
|
||||
- Duplicate filenames in NZB's no longer rejected by default
|
||||
- Set custom URL instead of /sabnzbd/ (in Config > Specials)
|
||||
- Article-state (which servers are tried) is preserved after restart
|
||||
- Auto disconnect (if enabled) only after verification of last item
|
||||
- Slight performance improvement when fetching RSS-feeds
|
||||
- RSS-feed title is shown for URLs being grabbed
|
||||
- URL grabbing can now be individually paused
|
||||
- Scheduler can pause/unpause jobs in specific category
|
||||
- Series Duplicate Checker can allow PROPER/REAL/REPACK versions
|
||||
- Refresh-icon in Glitter when refresh rate is above 2 seconds
|
||||
- macOS: Bundled new OpenSSL version with support for TLSv1.2
|
||||
- macOS: No longer linked to system certificate store
|
||||
- macOS and Windows: Installers include Mozilla CA certificates
|
||||
## Changes since 2.3.1
|
||||
- SABYenc updated to 3.3.2 to fix rare crash during downloading
|
||||
- Minor updates of SABYenc (such as 3.3.2) are no longer mandatory
|
||||
- Article Cache is automatically set to 25% of system memory, if no
|
||||
custom value was set. Maximum set by auto-detect is 1GB
|
||||
- Simplify Config pages by hiding Advanced Settings
|
||||
- Added option '%dn' to Date Sorting to rename files as job name
|
||||
- Added 'Job Name as Folder Name' as Sorting Preset for de-obfuscation
|
||||
- Server usage graphs are now linked to make comparing servers easier
|
||||
- URLs that fail to fetch due to server errors will only be retried 10x
|
||||
- Delay between URL retries increases when not specified by server
|
||||
- First article of each file is downloaded first to identify filenames
|
||||
- Jobs finished by Direct Unpack will be post-processed first
|
||||
- If available, 7zip will be used instead of unzip
|
||||
- Job password entered by user is always shown in History
|
||||
- Password is also extracted from filename in case of custom job name
|
||||
- Add per-day download-statistics to 'server_stats' API-call
|
||||
- Added Hebrew date-time texts
|
||||
|
||||
## Bugfixes since 2.2.1
|
||||
- Reduce CPU usage with multiple servers
|
||||
- Fix yet another potential stalling issue
|
||||
- Remove Timeout tracebacks
|
||||
- Only warn if number of actual passwords is larger than 30
|
||||
- Unexpected behavior when diskspace becomes critically low
|
||||
- MacOS: Direct Unpack could hang in case of special charters in names
|
||||
- API: Correct listing of downloaded and queued files in get_files
|
||||
- API: Jobs with Force priority should always have status 'Downloading'
|
||||
## Bugfixes since 2.3.1
|
||||
- Dropped connections could result in stalled downloads
|
||||
- Pre-queue scripts would fail to run
|
||||
- Pre-queue script output was not always parsed correctly
|
||||
- Notifications were always sent for 'Default' category
|
||||
- 'History Retention' also checked on start of program
|
||||
- macOS: Restore full compatibility with macOS 10.11
|
||||
- Windows: Unpacking could fail due to paths not being quoted
|
||||
- Windows: All input parameters to scripts are now quoted
|
||||
- Windows: Complete folder in root of drive could crash post-processing
|
||||
- Windows: Automatically correct 'Extra Par2 Parameters' for MultiPar
|
||||
- Windows: Prevent potential pause/unpause loop after tray icon click
|
||||
|
||||
## Upgrading from 2.1.x and older
|
||||
## Upgrading from 2.2.x and older
|
||||
- Finish queue
|
||||
- Stop SABnzbd
|
||||
- Install new version
|
||||
- Start SABnzbd
|
||||
|
||||
## Upgrade notices
|
||||
- When upgrading from 2.1.0 or older the queue will be converted. Job order,
|
||||
- When upgrading from 2.2.0 or older the queue will be converted. Job order,
|
||||
settings and data will be preserved, but all jobs will be unpaused and
|
||||
URL's that did not finish fetching before the upgrade will be lost.
|
||||
- The organization of the download queue is different from 0.7.x releases.
|
||||
|
||||
21
SABnzbd.py
21
SABnzbd.py
@@ -32,6 +32,7 @@ except:
|
||||
|
||||
import logging
|
||||
import logging.handlers
|
||||
import traceback
|
||||
import os
|
||||
import getopt
|
||||
import signal
|
||||
@@ -86,7 +87,7 @@ import sabnzbd.interface
|
||||
from sabnzbd.constants import *
|
||||
import sabnzbd.newsunpack
|
||||
from sabnzbd.misc import real_path, \
|
||||
check_latest_version, exit_sab, \
|
||||
check_latest_version, exit_sab, get_from_url, \
|
||||
split_host, get_ext, create_https_certificates, \
|
||||
windows_variant, ip_extract, set_serv_parms, get_serv_parms, globber_full
|
||||
from sabnzbd.panic import panic_tmpl, panic_port, panic_host, \
|
||||
@@ -150,7 +151,11 @@ class guiHandler(logging.Handler):
|
||||
# Loose the oldest record
|
||||
self.store.pop(0)
|
||||
try:
|
||||
self.store.append(self.format(record))
|
||||
# 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
|
||||
@@ -161,12 +166,6 @@ class guiHandler(logging.Handler):
|
||||
def count(self):
|
||||
return len(self.store)
|
||||
|
||||
def last(self):
|
||||
if self.store:
|
||||
return self.store[len(self.store) - 1]
|
||||
else:
|
||||
return ""
|
||||
|
||||
def content(self):
|
||||
""" Return an array with last records """
|
||||
return self.store
|
||||
@@ -202,11 +201,11 @@ def print_help():
|
||||
print " --repair-all Try to reconstruct the queue from the incomplete folder"
|
||||
print " with full data reconstruction"
|
||||
print " --https <port> Port to use for HTTPS server"
|
||||
print " --ipv6_hosting <0|1> Listen on IPv6 address [::1] [*]"
|
||||
print " --no-login Start with username and password reset"
|
||||
print " --log-all Log all article handling (for developers)"
|
||||
print " --console Force console logging for OSX app"
|
||||
print " --new Run a new instance of SABnzbd"
|
||||
print " --ipv6_hosting <0|1> Listen on IPv6 address [::1]"
|
||||
|
||||
|
||||
def print_version():
|
||||
@@ -402,7 +401,7 @@ def print_modules():
|
||||
""" Log all detected optional or external modules """
|
||||
if sabnzbd.decoder.SABYENC_ENABLED:
|
||||
# Yes, we have SABYenc, and it's the correct version, so it's enabled
|
||||
logging.info("SABYenc module (v%s)... found!", sabnzbd.constants.SABYENC_VERSION_REQUIRED)
|
||||
logging.info("SABYenc module (v%s)... found!", sabnzbd.decoder.SABYENC_VERSION)
|
||||
else:
|
||||
# Something wrong with SABYenc, so let's determine and print what:
|
||||
if sabnzbd.decoder.SABYENC_VERSION:
|
||||
@@ -658,7 +657,7 @@ def is_sabnzbd_running(url):
|
||||
url = '%s&mode=version' % (url)
|
||||
# Do this without certificate verification, few installations will have that
|
||||
prev = sabnzbd.set_https_verification(False)
|
||||
ver = sabnzbd.newsunpack.get_from_url(url)
|
||||
ver = get_from_url(url)
|
||||
sabnzbd.set_https_verification(prev)
|
||||
return (ver and (re.search(r'\d+\.\d+\.', ver) or ver.strip() == sabnzbd.__version__))
|
||||
except:
|
||||
|
||||
6
appveyor.yml
Normal file
6
appveyor.yml
Normal file
@@ -0,0 +1,6 @@
|
||||
install:
|
||||
- pip install --upgrade -r tests/requirements.txt
|
||||
- pip install pypiwin32 subprocessww
|
||||
|
||||
build_script:
|
||||
- pytest
|
||||
@@ -596,7 +596,7 @@ class MemcachedSession(Session):
|
||||
# Wrap all .get and .set operations in a single lock.
|
||||
mc_lock = threading.RLock()
|
||||
|
||||
# This is a seperate set of locks per session id.
|
||||
# This is a separate set of locks per session id.
|
||||
locks = {}
|
||||
|
||||
servers = ['127.0.0.1:11211']
|
||||
|
||||
@@ -1,16 +0,0 @@
|
||||
import six
|
||||
|
||||
import mock
|
||||
|
||||
from cherrypy import wsgiserver
|
||||
|
||||
|
||||
class TestWSGIGateway_u0:
|
||||
@mock.patch('cherrypy.wsgiserver.WSGIGateway_10.get_environ',
|
||||
lambda self: {'foo': 'bar'})
|
||||
def test_decodes_items(self):
|
||||
req = mock.MagicMock(path=b'/', qs=b'')
|
||||
gw = wsgiserver.WSGIGateway_u0(req=req)
|
||||
env = gw.get_environ()
|
||||
assert env['foo'] == 'bar'
|
||||
assert isinstance(env['foo'], six.text_type)
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Config"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/configure"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/configure"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<!--#from locale import getpreferredencoding#-->
|
||||
@@ -81,7 +81,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
<!--#end if#-->
|
||||
<!--#if not $have_unzip #-->
|
||||
<!--#if not $have_unzip and not $have_7zip #-->
|
||||
<tr>
|
||||
<th scope="row">$T('opt-enable_unzip'):</th>
|
||||
<td>
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Categories"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/categories"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/categories"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
<div class="colmask">
|
||||
<div class="section">
|
||||
|
||||
@@ -1,8 +1,13 @@
|
||||
<!--#set global $pane="Folders"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/folders"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/folders"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
<div class="padding alt section">
|
||||
<label for="advanced-settings-button" class="form-control advanced-button ">
|
||||
<input type="checkbox" id="advanced-settings-button" name="advanced-settings-button"> $T('button-advanced')
|
||||
</label>
|
||||
</div>
|
||||
<form action="saveDirectories" method="post" name="fullform" class="fullform" autocomplete="off">
|
||||
<input type="hidden" id="session" name="session" value="$session" />
|
||||
<input type="hidden" id="ajax" name="ajax" value="1" />
|
||||
@@ -21,7 +26,7 @@
|
||||
<input type="text" name="download_dir" id="download_dir" value="$download_dir" data-initialdir="$my_home" />
|
||||
<span class="desc">$T('explain-download_dir')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<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" />
|
||||
<span class="desc">$T('explain-download_free')</span>
|
||||
@@ -32,7 +37,7 @@
|
||||
<span class="desc">$T('explain-complete_dir')</span>
|
||||
</div>
|
||||
<!--#if not $nt#-->
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="permissions">$T('opt-permissions')</label>
|
||||
<input type="text" name="permissions" id="permissions" value="$permissions" class="smaller_input" />
|
||||
<span class="desc">$T('explain-permissions')</span>
|
||||
@@ -43,7 +48,7 @@
|
||||
<input type="text" name="dirscan_dir" id="dirscan_dir" value="$dirscan_dir" data-initialdir="$my_home" />
|
||||
<span class="desc">$T('explain-dirscan_dir')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="dirscan_speed">$T('opt-dirscan_speed')</label>
|
||||
<input type="number" name="dirscan_speed" id="dirscan_speed" value="$dirscan_speed" min="0" max="3600" />
|
||||
<span class="desc">$T('explain-dirscan_speed')</span>
|
||||
@@ -53,12 +58,12 @@
|
||||
<input type="text" name="script_dir" id="script_dir" value="$script_dir" data-initialdir="$my_home" />
|
||||
<span class="desc">$T('explain-script_dir')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="email_dir">$T('opt-email_dir')</label>
|
||||
<input type="text" name="email_dir" id="email_dir" value="$email_dir" data-initialdir="$my_home" />
|
||||
<span class="desc">$T('explain-email_dir')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="password_file">$T('opt-password_file')</label>
|
||||
<input type="text" name="password_file" id="password_file" value="$password_file" />
|
||||
<span class="desc">$T('explain-password_file')</span>
|
||||
@@ -72,7 +77,7 @@
|
||||
</fieldset>
|
||||
</div><!-- /col1 -->
|
||||
</div><!-- /section -->
|
||||
<div class="section">
|
||||
<div class="section advanced-settings">
|
||||
<div class="col2">
|
||||
<h3>$T('systemFolders') <a href="$helpuri$help_uri#toc1" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
<p>$T('explain-folderConfig')</p>
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
<!--#set global $pane="General"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/general"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/general"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
<form action="saveGeneral" method="post" name="fullform" class="fullform" autocomplete="off" novalidate>
|
||||
<div class="padding alt section">
|
||||
<label for="advanced-settings-button" class="form-control advanced-button ">
|
||||
<input type="checkbox" id="advanced-settings-button" name="advanced-settings-button"> $T('button-advanced')
|
||||
</label>
|
||||
</div>
|
||||
<form action="saveGeneral" method="post" name="fullform" class="fullform" autocomplete="off">
|
||||
<input type="hidden" id="session" name="session" value="$session" />
|
||||
<input type="hidden" id="ajax" name="ajax" value=1 />
|
||||
<div class="section">
|
||||
@@ -28,7 +33,7 @@
|
||||
<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>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="web_dir">$T('opt-web_dir')</label>
|
||||
<select name="web_dir" id="web_dir">
|
||||
<!--#for $webline in $web_list#-->
|
||||
@@ -89,7 +94,6 @@
|
||||
<div class="field-pair">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default sabnzbd_restart"><span class="glyphicon glyphicon-refresh"></span> $T('button-restart') SABnzbd</button>
|
||||
<button class="btn btn-default advancedButton enable_https_options"><span class="glyphicon glyphicon-cog"></span> $T('button-advanced')</button>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -173,7 +177,7 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-check_new_rel')</span>
|
||||
</div>
|
||||
<div class="field-pair <!--#if int($have_ssl_context) == 0 then "disabled" else ""#-->">
|
||||
<div class="field-pair advanced-settings <!--#if int($have_ssl_context) == 0 then "disabled" else ""#-->">
|
||||
<label class="config" for="enable_https_verification">$T('opt-enable_https_verification')</label>
|
||||
<input type="checkbox" name="enable_https_verification" id="enable_https_verification" value="1" <!--#if int($enable_https_verification) > 0 then 'checked="checked"' else ""#--> <!--#if int($have_ssl_context) == 0 then "disabled=\"disabled\"" else ""#--> />
|
||||
<span class="desc">$T('explain-enable_https_verification')</span>
|
||||
@@ -200,12 +204,12 @@
|
||||
</select>
|
||||
<input type="hidden" name="bandwidth_max" id="bandwidth_max" value="$bandwidth_max" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="bandwidth_perc">$T('opt-bandwidth_perc')</label>
|
||||
<input type="number" name="bandwidth_perc" id="bandwidth_perc" value="$bandwidth_perc" step="10" min="0" max="100"/>
|
||||
<span class="desc">$T('explain-bandwidth_perc')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="cache_limit">$T('opt-cache_limitstr')</label>
|
||||
<input type="text" name="cache_limit" id="cache_limit" value="$cache_limit" class="smaller_input" />
|
||||
<span class="desc">$T('explain-cache_limitstr').replace("64M", "256M").replace("128M", "512M")</span>
|
||||
@@ -253,6 +257,32 @@
|
||||
})
|
||||
hideOrShowTranslate()
|
||||
|
||||
// Highlight in case user is not safe
|
||||
// So when exposed to internet and no password, no external limit or no username/password
|
||||
var safeCheck = \$('#host, #local_ranges, #inet_exposure, #${pid}_wu, #${pid}_wp')
|
||||
function checkSafety() {
|
||||
if(\$('#host').val() != 'localhost' && \$('#host').val() != '127.0.0.1') {
|
||||
// No limitation on local-network
|
||||
if(!\$('#local_ranges').val() || \$('#inet_exposure').val() > 3) {
|
||||
// And no username and password?
|
||||
if(!\$('#${pid}_wu').val() || !\$('#${pid}_wp').val()) {
|
||||
// Add warning icon if not there already
|
||||
if(!\$('.host-warning').length) {
|
||||
safeCheck.after('<span class="glyphicon glyphicon-alert host-warning"></span>')
|
||||
\$('.host-warning').tooltip({'title': '$T('checkSafety')'})
|
||||
}
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
// Remove warnings
|
||||
\$('.host-warning').remove()
|
||||
safeCheck.removeClass('host-warning-highlight')
|
||||
}
|
||||
checkSafety()
|
||||
safeCheck.on('change', checkSafety)
|
||||
|
||||
// Click functions
|
||||
\$('#apikey, #nzbkey').click(function () { \$(this).select() });
|
||||
|
||||
\$('#generate_new_apikey').click(function () {
|
||||
@@ -330,7 +360,6 @@
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Update the value
|
||||
\$('#bandwidth_max_value, #bandwidth_max_dropdown').on('change', function() {
|
||||
if(\$('#bandwidth_max_value').val()) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Email"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/notifications"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/notifications"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<!--#def show_notify_checkboxes($section_label)#-->
|
||||
@@ -26,7 +26,7 @@
|
||||
<!--#end def#-->
|
||||
|
||||
<div class="colmask">
|
||||
<form action="saveEmail" method="post" name="fullform" class="fullform" autocomplete="off" novalidate>
|
||||
<form action="saveEmail" method="post" name="fullform" class="fullform" autocomplete="off">
|
||||
<input type="hidden" id="session" name="session" value="$session" />
|
||||
<input type="hidden" id="ajax" name="ajax" value="1" />
|
||||
<div class="section" id="email">
|
||||
@@ -91,7 +91,7 @@
|
||||
<input type="text" name="email_pwd" id="email_pwd" value="$email_pwd" />
|
||||
<span class="desc">$T('explain-email_pwd')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_email" rel="$T('askTestEmail')"><span class="glyphicon glyphicon-envelope"></span> $T('link-testEmail')</button>
|
||||
</div>
|
||||
@@ -115,7 +115,7 @@
|
||||
<div class="col1" <!--#if int($ncenter_enable) > 0 then '' else 'style="display:none"'#-->>
|
||||
<fieldset>
|
||||
$show_notify_checkboxes('ncenter')
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_notif"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -141,7 +141,7 @@
|
||||
<div class="col1" <!--#if int($acenter_enable) > 0 then '' else 'style="display:none"'#-->>
|
||||
<fieldset>
|
||||
$show_notify_checkboxes('acenter')
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_windows"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -167,7 +167,7 @@
|
||||
<div class="col1" <!--#if int($ntfosd_enable) > 0 then '' else 'style="display:none"'#-->>
|
||||
<fieldset>
|
||||
$show_notify_checkboxes('ntfosd')
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_osd"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -207,7 +207,7 @@
|
||||
<span class="desc">$T('Optional') - $T('explain-nscript_parameters')</span>
|
||||
</div>
|
||||
$show_notify_checkboxes('nscript')
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_nscript"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -241,7 +241,7 @@
|
||||
<span class="desc">$T('explain-growl_password')</span>
|
||||
</div>
|
||||
$show_notify_checkboxes('growl')
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_growl"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -286,7 +286,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<!--#end for#-->
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_prowl"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -326,6 +326,16 @@
|
||||
<input type="text" name="pushover_device" id="pushover_device" value="$pushover_device" />
|
||||
<span class="desc">$T('explain-pushover_device')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="pushover_emergency_retry">$T('opt-pushover_emergency_retry')</label>
|
||||
<input type="text" name="pushover_emergency_retry" id="pushover_emergency_retry" value="$pushover_emergency_retry" />
|
||||
<span class="desc">$T('explain-pushover_emergency_retry')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="pushover_emergency_expire">$T('opt-pushover_emergency_expire')</label>
|
||||
<input type="text" name="pushover_emergency_expire" id="pushover_emergency_expire" value="$pushover_emergency_expire" />
|
||||
<span class="desc">$T('explain-pushover_emergency_expire')</span>
|
||||
</div>
|
||||
<!--#set $section_label = 'pushover'#-->
|
||||
<!--#for $type in $notify_keys#-->
|
||||
<div class="field-pair">
|
||||
@@ -342,7 +352,7 @@
|
||||
</select>
|
||||
</div>
|
||||
<!--#end for#-->
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_pushover"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -379,7 +389,7 @@
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
$show_notify_checkboxes('pushbullet')
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default" type="button" id="test_pushbullet"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
@@ -407,6 +417,7 @@
|
||||
\$(this).parents('.col2').find('.col2-cats').hide()
|
||||
}
|
||||
\$('form').submit()
|
||||
addRowColor()
|
||||
})
|
||||
\$('#email_endjob').change(function() {
|
||||
if(\$(this).val() > 0) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="RSS"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/rss"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/rss"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
<div class="colmask">
|
||||
<!--#if not $active_feed#-->
|
||||
@@ -7,7 +7,7 @@
|
||||
<div class="padTable">
|
||||
<a class="main-helplink" href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
|
||||
<p>$T('explain-RSS')</p>
|
||||
<form action="add_rss_feed" method="post" autocomplete="off" novalidate>
|
||||
<form action="add_rss_feed" method="post" autocomplete="off">
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<table class="catTable">
|
||||
<tr>
|
||||
@@ -37,7 +37,7 @@
|
||||
<!--#if $rss#-->
|
||||
<div class="section">
|
||||
<div class="padTable">
|
||||
<form action="save_rss_feed" method="post" autocomplete="off" novalidate>
|
||||
<form action="save_rss_feed" method="post" autocomplete="off">
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<table id="subscriptions">
|
||||
<tbody>
|
||||
@@ -73,7 +73,7 @@
|
||||
</form>
|
||||
<!--#if $feeds#-->
|
||||
<br/>
|
||||
<form action="rss_now" method="post" autocomplete="off" novalidate>
|
||||
<form action="rss_now" method="post" autocomplete="off">
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<button type="submit" class="btn btn-default readAll"><span class="glyphicon glyphicon-sort"></span> $T('button-rssNow')</button>
|
||||
</form>
|
||||
@@ -154,7 +154,7 @@
|
||||
<option value=">"> $T('rss-atleast')</option>
|
||||
<option value="<"> $T('rss-atmost')</option>
|
||||
<option value="F"> $T('rss-from')</option>
|
||||
<option value="F"> $T('rss-from-show')</option>
|
||||
<option value="F"> $T('rss-from-show') ($T('rss-accept'))</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@@ -226,8 +226,8 @@
|
||||
<option value="C"> $T('rss-mustcat')</option>
|
||||
<option value=">"> $T('rss-atleast')</option>
|
||||
<option value="<"> $T('rss-atmost')</option>
|
||||
<option value="S"> $T('rss-from-show')</option>
|
||||
<option value="F"> $T('rss-from')</option>
|
||||
<option value="S"> $T('rss-from-show') ($T('rss-accept'))</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@@ -287,7 +287,7 @@
|
||||
<input type="hidden" name="feed" value="$feed" />
|
||||
<table class="catTable">
|
||||
<tbody>
|
||||
<tr class="<!--#if $odd then " alt " else " "#--> <!--#if $filter[3]!="A" then 'disabled_options_rule' else ""#-->">
|
||||
<tr class="<!--#if $odd then " alt " else " "#--> <!--#if $filter[3]!="A" and $filter[3]!="S" then 'disabled_options_rule' else ""#-->">
|
||||
<td>
|
||||
<input type="checkbox" name="enabled" value="1" <!--#if $filter[6]=='1' then 'checked="checked"' else ""#--> />
|
||||
</td>
|
||||
@@ -302,8 +302,8 @@
|
||||
<option value="C" <!--#if $filter[3]=="C" then 'selected="selected"' else ""#-->> $T('rss-mustcat')</option>
|
||||
<option value=">" <!--#if $filter[3]==">" then 'selected="selected"' else ""#-->> $T('rss-atleast')</option>
|
||||
<option value="<" <!--#if $filter[3]=="<" then 'selected="selected"' else ""#-->> $T('rss-atmost')</option>
|
||||
<option value="S" <!--#if $filter[3]=="S" then 'selected="selected"' else ""#-->> $T('rss-from-show')</option>
|
||||
<option value="F" <!--#if $filter[3]=="F" then 'selected="selected"' else ""#-->> $T('rss-from')</option>
|
||||
<option value="S" <!--#if $filter[3]=="S" then 'selected="selected"' else ""#-->> $T('rss-from-show') ($T('rss-accept'))</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@@ -568,7 +568,7 @@ function urlencode(str) {
|
||||
|
||||
// Only the Accept filter needs all the options
|
||||
\$('form[action="upd_rss_filter"]').find('select[name="filter_type"]').change(function() {
|
||||
\$(this).parent().parent().find('select:not([name="filter_type"])').attr('disabled', \$(this).val() != "A")
|
||||
\$(this).parent().parent().find('select:not([name="filter_type"])').attr('disabled', \$(this).val() != "A" && \$(this).val() != "S")
|
||||
})
|
||||
// Trigger on-load for all
|
||||
\$('.disabled_options_rule').find('td select:not([name="filter_type"])').attr('disabled', true)
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Scheduling"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/scheduling"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/scheduling"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<%
|
||||
|
||||
@@ -1,108 +1,299 @@
|
||||
<!--#set global $pane="Servers"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/servers"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/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>
|
||||
|
||||
<div class="colmask">
|
||||
<form action="addServer" method="post" autocomplete="off" onsubmit="removeObfuscation();" novalidate>
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<div id="addServer">
|
||||
<div class="padding alt">
|
||||
<button type="button" class="btn btn-default" id="addServerButton"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
|
||||
<div class="padding alt section">
|
||||
<button type="button" class="btn btn-default" id="addServerButton"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
|
||||
<label for="advanced-settings-button" class="form-control advanced-button ">
|
||||
<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')">
|
||||
<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>
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="section" id="addServerContent" style="display: none;">
|
||||
<div class="col2">
|
||||
<h3>$T('addServer') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
</div><!-- /col2 -->
|
||||
</div>
|
||||
<div class="col1">
|
||||
<fieldset>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="enable">$T('srv-enable')</label>
|
||||
<input type="checkbox" name="enable" id="enable" value="1" checked="checked" />
|
||||
<span class="desc">$T('srv-enable')</span>
|
||||
<form action="addServer" method="post" autocomplete="off" onsubmit="removeObfuscation();">
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<fieldset>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="enable">$T('srv-enable')</label>
|
||||
<input type="checkbox" name="enable" id="enable" value="1" checked="checked" />
|
||||
<span class="desc">$T('srv-enable')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="host">$T('srv-host')</label>
|
||||
<input type="text" name="host" id="host" required />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="port">$T('srv-port')</label>
|
||||
<input type="number" name="port" id="port" size="8" value="119" min="0" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="ssl">$T('srv-ssl')</label>
|
||||
<input type="checkbox" name="ssl" id="ssl" value="1" />
|
||||
<span class="desc">$T('explain-ssl')</span>
|
||||
</div>
|
||||
<!-- Tricks to avoid browser auto-fill, fixed on-submit with javascript -->
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_00">$T('srv-username')</label>
|
||||
<input type="text" name="${pid}_00" id="${pid}_00" data-hide="username" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_01">$T('srv-password')</label>
|
||||
<input type="text" name="${pid}_01" id="${pid}_01" data-hide="password" />
|
||||
</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 />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority">$T('srv-priority')</label>
|
||||
<input type="number" name="priority" id="priority" min="0" max="99" /> <i>$T('explain-svrprio')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="retention">$T('srv-retention')</label>
|
||||
<input type="number" name="retention" id="retention" min="0" /> <i>$T('days')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="timeout">$T('srv-timeout')</label>
|
||||
<input type="number" name="timeout" id="timeout" min="20" max="240" /> <i>$T('seconds')</i>
|
||||
</div>
|
||||
<div class="field-pair <!--#if int($have_ssl_context) == 0 then "disabled" else ""#--> advanced-settings">
|
||||
<label class="config" for="ssl_verify">$T('opt-ssl_verify')</label>
|
||||
<select name="ssl_verify" id="ssl_verify" <!--#if int($have_ssl_context) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" selected>$T('ssl_verify-strict')</option>
|
||||
<option value="1">$T('ssl_verify-normal')</option>
|
||||
<option value="0">$T('ssl_verify-disabled')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group" value="1" />
|
||||
<span class="desc">$T('srv-explain-send_group')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="optional">$T('srv-optional')</label>
|
||||
<input type="checkbox" name="optional" id="optional" value="1" />
|
||||
<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" />
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="notes">$T('srv-notes')</label>
|
||||
<textarea name="notes" id="notes" rows="3" cols="50"></textarea>
|
||||
</div>
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
|
||||
<button class="btn btn-default testServer" type="button"><span class="glyphicon glyphicon-sort"></span> $T('button-testServer')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!--#set $prio_colors = ["#59cc33", "#3366cc","#7f33cc", "#cc33a6", "#cc3333"] #-->
|
||||
<!--#set $cur_prio_color = -1 #-->
|
||||
<!--#set $last_prio = -1 #-->
|
||||
<!--#for $cur, $server in enumerate($servers) #-->
|
||||
<form action="saveServer" method="post" class="fullform" autocomplete="off">
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<input type="hidden" name="server" value="$server['name']" />
|
||||
|
||||
<div class="section <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
|
||||
<div class="col2 <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
|
||||
<h3>$server['displayname'] <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
<!--#if int($server['enable']) != 0 #-->
|
||||
<!--#if $last_prio != $server['priority'] and $cur_prio_color+1 < len($prio_colors) #-->
|
||||
<!--#set $cur_prio_color = $cur_prio_color+1 #-->
|
||||
<!--#set $last_prio = $server['priority'] #-->
|
||||
<!--#end if#-->
|
||||
<span class="label label-primary" style="background-color: $prio_colors[$cur_prio_color]">$server['priority']</span>
|
||||
<span class="label label-primary" style="background-color: $prio_colors[$cur_prio_color]">$T('srv-priority'):</span>
|
||||
<!--#end if#-->
|
||||
<table>
|
||||
<tr>
|
||||
<td><input type="checkbox" class="toggleServerCheckbox" id="enable_$cur" name="$server['name']" value="1" <!--#if int($server['enable']) != 0 then 'checked="checked"' else ""#--> /></td>
|
||||
<td><label for="enable_$cur">$T('enabled')</label></td>
|
||||
</tr>
|
||||
</table>
|
||||
<button type="button" class="btn btn-default showserver"><span class="glyphicon glyphicon-pencil"></span> $T('showDetails')</button>
|
||||
<button type="button" class="btn btn-default clrServer"><span class="glyphicon glyphicon-remove"></span> $T('button-clrServer')</button>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="host">$T('srv-host')</label>
|
||||
<input type="text" name="host" id="host" />
|
||||
<div class="col1" style="display:none;">
|
||||
<input type="hidden" name="enable" id="enable$cur" value="$int($server['enable'])" />
|
||||
<fieldset>
|
||||
<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 />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="port$cur">$T('srv-port')</label>
|
||||
<input type="number" name="port" id="port$cur" value="$server['port']" size="8" min="0" required />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="ssl$cur">$T('srv-ssl')</label>
|
||||
<input type="checkbox" name="ssl" id="ssl$cur" value="1" <!--#if int($server['ssl']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-ssl')</span>
|
||||
</div>
|
||||
<!-- Tricks to avoid browser auto-fill, fixed on-submit with javascript -->
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_${cur}0">$T('srv-username')</label>
|
||||
<input type="text" name="${pid}_${cur}0" id="${pid}_${cur}0" value="$server['username']" data-hide="username" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_${cur}1">$T('srv-password')</label>
|
||||
<input type="text" name="${pid}_${cur}1" id="${pid}_${cur}1" value="$server['password']" data-hide="password" />
|
||||
</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 />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority$cur">$T('srv-priority')</label>
|
||||
<input type="number" name="priority" id="priority$cur" value="$server['priority']" min="0" max="99" required /> <i>$T('explain-svrprio')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="retention$cur">$T('srv-retention')</label>
|
||||
<input type="number" name="retention" id="retention$cur" value="$server['retention']" min="0" required /> <i>$T('days')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="timeout$cur">$T('srv-timeout')</label>
|
||||
<input type="number" name="timeout" id="timeout$cur" value="$server['timeout']" min="20" max="240" required /> <i>$T('seconds')</i>
|
||||
</div>
|
||||
|
||||
<div class="field-pair <!--#if int($have_ssl_context) == 0 then "disabled" else ""#--> advanced-settings">
|
||||
<label class="config" for="ssl_verify$cur">$T('opt-ssl_verify')</label>
|
||||
<select name="ssl_verify" id="ssl_verify$cur" <!--#if int($have_ssl_context) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" <!--#if $server['ssl_verify'] == 2 then 'selected="selected"' else ""#--> >$T('ssl_verify-strict')</option>
|
||||
<option value="1" <!--#if $server['ssl_verify'] == 1 then 'selected="selected"' else ""#--> >$T('ssl_verify-normal')</option>
|
||||
<option value="0" <!--#if $server['ssl_verify'] == 0 then 'selected="selected"' else ""#--> >$T('ssl_verify-disabled')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="optional$cur">$T('srv-optional')</label>
|
||||
<input type="checkbox" name="optional" id="optional$cur" value="1" <!--#if int($server['optional']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-optional')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group$cur">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group$cur" value="1" <!--#if int($server['send_group']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<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']" />
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="notes$cur">$T('srv-notes')</label>
|
||||
<textarea name="notes" id="notes$cur" rows="3" cols="50">$server['notes']</textarea>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default testServer" type="button"><span class="glyphicon glyphicon-sort"></span> $T('button-testServer')</button>
|
||||
<button class="btn btn-default delServer"><span class="glyphicon glyphicon-trash"></span> $T('button-delServer')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="port">$T('srv-port')</label>
|
||||
<input type="number" name="port" id="port" size="8" value="119" />
|
||||
<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>
|
||||
</div>
|
||||
<div class="server-chart" data-serverid="${cur}"s>
|
||||
<div id="server-chart-${cur}" class="ct-chart"></div>
|
||||
</div>
|
||||
<script type="text/javascript">
|
||||
// Server data
|
||||
serverData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
|
||||
</script>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="ssl">$T('srv-ssl')</label>
|
||||
<input type="checkbox" name="ssl" id="ssl" value="1" />
|
||||
<span class="desc">$T('explain-ssl')</span>
|
||||
</div>
|
||||
<!-- Tricks to avoid browser auto-fill, fixed on-submit with javascript -->
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_00">$T('srv-username')</label>
|
||||
<input type="text" name="${pid}_00" id="${pid}_00" data-hide="username" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_01">$T('srv-password')</label>
|
||||
<input type="text" name="${pid}_01" id="${pid}_01" data-hide="password" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="connections">$T('srv-connections')</label>
|
||||
<input type="number" name="connections" id="connections" min="0" max="100" value="8" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority">$T('srv-priority')</label>
|
||||
<input type="number" name="priority" id="priority" min="0" max="100" /> <i>$T('explain-svrprio')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="retention">$T('srv-retention')</label>
|
||||
<input type="number" name="retention" id="retention" min="0" /> <i>$T('days')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="timeout">$T('srv-timeout')</label>
|
||||
<input type="number" name="timeout" id="timeout" min="30" /> <i>$T('seconds')</i>
|
||||
</div>
|
||||
<div class="field-pair <!--#if int($have_ssl_context) == 0 then "disabled" else ""#--> advanced-settings">
|
||||
<label class="config" for="ssl_verify">$T('opt-ssl_verify')</label>
|
||||
<select name="ssl_verify" id="ssl_verify" <!--#if int($have_ssl_context) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" selected>$T('ssl_verify-strict')</option>
|
||||
<option value="1">$T('ssl_verify-normal')</option>
|
||||
<option value="0">$T('ssl_verify-disabled')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group" value="1" />
|
||||
<span class="desc">$T('srv-explain-send_group')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="optional">$T('srv-optional')</label>
|
||||
<input type="checkbox" name="optional" id="optional" value="1" />
|
||||
<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" />
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="notes">$T('srv-notes')</label>
|
||||
<textarea name="notes" id="notes" rows="3" cols="50"></textarea>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<button class="btn btn-default"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
|
||||
<button class="btn btn-default advancedButton"><span class="glyphicon glyphicon-cog"></span> $T('button-advanced')</button>
|
||||
<button class="btn btn-default testServer" type="button"><span class="glyphicon glyphicon-sort"></span> $T('button-testServer')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div><!-- /col1 -->
|
||||
</div><!-- /section -->
|
||||
</form>
|
||||
</div>
|
||||
</form>
|
||||
<!--#end for#-->
|
||||
</div>
|
||||
|
||||
<script type="text/javascript" src="${root}staticcfg/js/chartist.min.js"></script>
|
||||
<script type="text/javascript" src="${root}staticcfg/js/filesize.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
// Define variables needed for the server-plots
|
||||
var serverData = {}
|
||||
// Standardize chart options
|
||||
var chartOptions = {
|
||||
fullWidth: true,
|
||||
showArea: true,
|
||||
@@ -125,246 +316,76 @@
|
||||
right: 20
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<!--
|
||||
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
|
||||
-->
|
||||
|
||||
<!--#import json#-->
|
||||
<!--#import datetime#-->
|
||||
<!--#import sabnzbd.misc#-->
|
||||
|
||||
<!--#def show_date_selector($server, $id)#-->
|
||||
<!--#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()#-->
|
||||
<!--#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))#-->
|
||||
<!--#end for#-->
|
||||
<!--#set months_recorded = list(sabnzbd.misc.monthrange(min_date, datetime.date.today()))#-->
|
||||
<!--#$months_recorded.reverse()#-->
|
||||
<select class="chart-selector" name="chart-selector-${id}" id="chart-selector-${id}" data-id="${id}">
|
||||
<!--#for $cur_date in months_recorded#-->
|
||||
<option value="<!--#echo '%d-%02d' % ($cur_date.year, $cur_date.month)#-->">$month_names[$cur_date.month-1] $cur_date.year</option>
|
||||
<!--#end for#-->
|
||||
</select>
|
||||
<!--#end def#-->
|
||||
|
||||
<!--#set $prio_colors = ["#59cc33", "#3366cc","#7f33cc", "#cc33a6", "#cc3333"] #-->
|
||||
<!--#set $cur_prio_color = -1 #-->
|
||||
<!--#set $last_prio = -1 #-->
|
||||
<!--#for $cur, $server in enumerate($servers) #-->
|
||||
<form action="saveServer" method="post" class="fullform" autocomplete="off" novalidate>
|
||||
<input type="hidden" name="session" value="$session" />
|
||||
<input type="hidden" name="server" value="$server['name']" />
|
||||
|
||||
<div class="section <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
|
||||
<div class="col2 <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
|
||||
<h3>$server['displayname'] <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
|
||||
<!--#if int($server['enable']) != 0 #-->
|
||||
<!--#if $last_prio != $server['priority'] and $cur_prio_color+1 < len($prio_colors) #-->
|
||||
<!--#set $cur_prio_color = $cur_prio_color+1 #-->
|
||||
<!--#set $last_prio = $server['priority'] #-->
|
||||
<!--#end if#-->
|
||||
<span class="label label-primary" style="background-color: $prio_colors[$cur_prio_color]">$server['priority']</span>
|
||||
<span class="label label-primary" style="background-color: $prio_colors[$cur_prio_color]">$T('srv-priority'):</span>
|
||||
<!--#end if#-->
|
||||
<table><tr>
|
||||
<td><input type="checkbox" class="toggleServerCheckbox" id="enable_$cur" name="$server['name']" value="1" <!--#if int($server['enable']) != 0 then 'checked="checked"' else ""#--> /></td>
|
||||
<td><label for="enable_$cur">$T('enabled')</label></td>
|
||||
</tr></table>
|
||||
|
||||
<button type="button" class="btn btn-default showserver"><span class="glyphicon glyphicon-pencil"></span> $T('showDetails')</button>
|
||||
<button type="button" class="btn btn-default clrServer"><span class="glyphicon glyphicon-remove"></span> $T('button-clrServer')</button>
|
||||
</div><!-- /col2 -->
|
||||
<div class="col1" style="display:none;">
|
||||
<input type="hidden" name="enable" id="enable$cur" value="$int($server['enable'])" />
|
||||
<fieldset>
|
||||
<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']" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="port$cur">$T('srv-port')</label>
|
||||
<input type="number" name="port" id="port$cur" value="$server['port']" size="8" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="ssl$cur">$T('srv-ssl')</label>
|
||||
<input type="checkbox" name="ssl" id="ssl$cur" value="1" <!--#if int($server['ssl']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-ssl')</span>
|
||||
</div>
|
||||
<!-- Tricks to avoid browser auto-fill, fixed on-submit with javascript -->
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_${cur}0">$T('srv-username')</label>
|
||||
<input type="text" name="${pid}_${cur}0" id="${pid}_${cur}0" value="$server['username']" data-hide="username" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="${pid}_${cur}1">$T('srv-password')</label>
|
||||
<input type="text" name="${pid}_${cur}1" id="${pid}_${cur}1" value="$server['password']" data-hide="password" />
|
||||
</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="0" max="100" />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority$cur">$T('srv-priority')</label>
|
||||
<input type="number" name="priority" id="priority$cur" value="$server['priority']" min="0" max="100" /> <i>$T('explain-svrprio')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="retention$cur">$T('srv-retention')</label>
|
||||
<input type="number" name="retention" id="retention$cur" value="$server['retention']" min="0" /> <i>$T('days')</i>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="timeout$cur">$T('srv-timeout')</label>
|
||||
<input type="number" name="timeout" id="timeout$cur" value="$server['timeout']" min="30" /> <i>$T('seconds')</i>
|
||||
</div>
|
||||
|
||||
<div class="field-pair <!--#if int($have_ssl_context) == 0 then "disabled" else ""#--> advanced-settings">
|
||||
<label class="config" for="ssl_verify$cur">$T('opt-ssl_verify')</label>
|
||||
<select name="ssl_verify" id="ssl_verify$cur" <!--#if int($have_ssl_context) == 0 then "disabled=\"disabled\"" else ""#-->>
|
||||
<option value="2" <!--#if $server['ssl_verify'] == 2 then 'selected="selected"' else ""#--> >$T('ssl_verify-strict')</option>
|
||||
<option value="1" <!--#if $server['ssl_verify'] == 1 then 'selected="selected"' else ""#--> >$T('ssl_verify-normal')</option>
|
||||
<option value="0" <!--#if $server['ssl_verify'] == 0 then 'selected="selected"' else ""#--> >$T('ssl_verify-disabled')</option>
|
||||
</select>
|
||||
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="optional$cur">$T('srv-optional')</label>
|
||||
<input type="checkbox" name="optional" id="optional$cur" value="1" <!--#if int($server['optional']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-optional')</span>
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="send_group$cur">$T('srv-send_group')</label>
|
||||
<input type="checkbox" name="send_group" id="send_group$cur" value="1" <!--#if int($server['send_group']) != 0 then 'checked="checked"' else ""#--> />
|
||||
<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']" />
|
||||
</div>
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="notes$cur">$T('srv-notes')</label>
|
||||
<textarea name="notes" id="notes$cur" rows="3" cols="50">$server['notes']</textarea>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<button class="btn btn-default saveButton"><span class="glyphicon glyphicon-ok"></span> $T('button-saveChanges')</button>
|
||||
<button class="btn btn-default advancedButton"><span class="glyphicon glyphicon-cog"></span> $T('button-advanced')</button>
|
||||
<button class="btn btn-default testServer" type="button"><span class="glyphicon glyphicon-sort"></span> $T('button-testServer')</button>
|
||||
<button class="btn btn-default delServer"><span class="glyphicon glyphicon-trash"></span> $T('button-delServer')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<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
|
||||
</div>
|
||||
<div class="server-chart">
|
||||
$show_date_selector($server, $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])#-->
|
||||
\$(document).ready(function() {
|
||||
showChart(${cur}, \$('#chart-selector-${cur}').val())
|
||||
})
|
||||
</script>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
<!--#end for#-->
|
||||
|
||||
</div><!-- /colmask -->
|
||||
|
||||
<script type="text/javascript">
|
||||
function showChart(server_id, month) {
|
||||
function showCharts() {
|
||||
// This month
|
||||
var theMonth = \$('#chart-selector').val()
|
||||
var thisDay = new Date()
|
||||
|
||||
// What month are we doing?
|
||||
var inputDate = new Date(month+'-01')
|
||||
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()
|
||||
|
||||
// Fill the data array
|
||||
var data = {
|
||||
labels: [],
|
||||
series: [[]]
|
||||
};
|
||||
var largestVal = 0
|
||||
for(var i = 1; i < maxDaysInMonth+1; i++) {
|
||||
// Add X-label
|
||||
if(i % 3 == 1) {
|
||||
data['labels'].push(i)
|
||||
} else {
|
||||
data['labels'].push(NaN)
|
||||
// Set the new maximum
|
||||
chartOptions.axisY.high = \$('#chart-selector :selected').data('max');
|
||||
chartOptions.axisY.low = 0
|
||||
|
||||
// For each chart
|
||||
\$('.server-chart').each(function(i, elemn) {
|
||||
var server_id = \$(elemn).data('serverid')
|
||||
|
||||
// Fill the data array
|
||||
var data = {
|
||||
labels: [],
|
||||
series: [[]]
|
||||
};
|
||||
var totalThisMonth = 0
|
||||
for(var i = 1; i < maxDaysInMonth+1; i++) {
|
||||
// Add X-label
|
||||
if(i % 3 == 1) {
|
||||
data['labels'].push(i)
|
||||
} else {
|
||||
data['labels'].push(NaN)
|
||||
}
|
||||
|
||||
// Get formatted date
|
||||
baseDate.setDate(i)
|
||||
var dateCheck = toFormattedDate(baseDate)
|
||||
|
||||
// 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)
|
||||
} else {
|
||||
data['series'][0].push(0)
|
||||
}
|
||||
}
|
||||
|
||||
// Get formatted date
|
||||
baseDate.setDate(i)
|
||||
var dateCheck = toFormattedDate(baseDate)
|
||||
// Update the text value
|
||||
\$('#server-data-label-' + server_id).text(\$('#chart-selector :selected').text())
|
||||
\$('#server-data-value-' + server_id).text(filesize(totalThisMonth, {round: 1}))
|
||||
|
||||
// Add data if we have it
|
||||
if(dateCheck in serverData[server_id]) {
|
||||
data['series'][0].push(serverData[server_id][dateCheck])
|
||||
largestVal = Math.max(largestVal, serverData[server_id][dateCheck])
|
||||
} else if(thisDay.getYear() == baseDate.getYear() && thisDay.getMonth() == baseDate.getMonth() && thisDay.getDate() < i) {
|
||||
data['series'][0].push(NaN)
|
||||
} else {
|
||||
data['series'][0].push(0)
|
||||
}
|
||||
}
|
||||
|
||||
// Check if we should shrink the Y-axis values
|
||||
var devideBy = 1024
|
||||
var axisLabel = 'KB'
|
||||
if(largestVal > 1024*1024) {
|
||||
devideBy = 1024*1024
|
||||
axisLabel = 'MB'
|
||||
}
|
||||
if(largestVal > 1024*1024*1024) {
|
||||
devideBy = 1024*1024*1024
|
||||
axisLabel = 'GB'
|
||||
}
|
||||
if(largestVal > 1024*1024*1024*1024) {
|
||||
devideBy = 1024*1024*1024*1024
|
||||
axisLabel = 'TB'
|
||||
}
|
||||
|
||||
// Shrink the value
|
||||
data['series'][0] = data['series'][0].map(function(num) {
|
||||
return num / devideBy;
|
||||
// Show the chart
|
||||
chart = new Chartist.Line('#server-chart-'+server_id, 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', {
|
||||
x: context.chartRect.x1,
|
||||
y: context.chartRect.y2-1,
|
||||
width: context.chartRect.width(),
|
||||
height: context.chartRect.height()+2,
|
||||
fill: 'none',
|
||||
stroke: '#B9B9B9',
|
||||
'stroke-width': '1px'
|
||||
}, '', context.svg, true)
|
||||
\$('#server-chart-'+server_id+' .ct-label.ct-vertical').each(function(index, elmn) {
|
||||
elmn.innerHTML = filesize(elmn.innerHTML, {round: 1}).replace(' ','')
|
||||
})
|
||||
});
|
||||
})
|
||||
|
||||
// Show the chart
|
||||
chart = new Chartist.Line('#server-chart-'+server_id, 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', {
|
||||
x: context.chartRect.x1,
|
||||
y: context.chartRect.y2-1,
|
||||
width: context.chartRect.width(),
|
||||
height: context.chartRect.height()+2,
|
||||
fill: 'none',
|
||||
stroke: '#B9B9B9',
|
||||
'stroke-width': '1px'
|
||||
}, '', context.svg, true)
|
||||
\$('#server-chart-'+server_id+' .ct-label.ct-vertical').each(function(index, elmn) {
|
||||
elmn.innerHTML += axisLabel
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
// Need to mitigate timezone effects!
|
||||
@@ -389,14 +410,17 @@
|
||||
/**
|
||||
Update charts when changed
|
||||
**/
|
||||
\$('.chart-selector').on('change', function(elemn) {
|
||||
showChart(\$(elemn.target).data('id'), \$(elemn.target).val())
|
||||
\$('#chart-selector').on('change', function(elemn) {
|
||||
showCharts()
|
||||
|
||||
// Lets us leave (needs to be called after the change event)
|
||||
setTimeout(function() {
|
||||
formWasSubmitted = true;
|
||||
formHasChanged = false;
|
||||
}, 100)
|
||||
})
|
||||
// And on page-load
|
||||
showCharts()
|
||||
|
||||
/**
|
||||
Click events
|
||||
@@ -407,16 +431,19 @@
|
||||
}
|
||||
\$(this).parent().next().toggle();
|
||||
\$(this).parent().next().next().toggle();
|
||||
if (\$(this).attr("value") == "$T('showDetails')") {
|
||||
\$(this).attr("value", "$T('hideDetails')");
|
||||
if (\$(this).text().indexOf("$T('showDetails')") > 0) {
|
||||
\$(this).html(\$(this).html().replace("$T('showDetails')", "$T('hideDetails')"));
|
||||
} else {
|
||||
\$(this).attr("value", "$T('showDetails')");
|
||||
\$(this).html(\$(this).html().replace("$T('hideDetails')", "$T('showDetails')"));
|
||||
}
|
||||
// Add coloring
|
||||
addRowColor()
|
||||
});
|
||||
|
||||
\$('#addServerButton').click(function(){
|
||||
\$('#addServer').hide();
|
||||
\$('#addServerContent').show();
|
||||
// Add coloring
|
||||
addRowColor()
|
||||
});
|
||||
|
||||
\$('[name="ssl"]').click(function() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Sorting"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/sorting"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/sorting"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
@@ -40,6 +40,8 @@
|
||||
<br/>
|
||||
<input type="button" class="btn btn-default" onclick="tvSet('%sn/%sx%0e - %en/%sn - %sx%0e - %en.%ext')" value="$T('button-Ep1x05')" />
|
||||
<input type="button" class="btn btn-default" onclick="tvSet('%sn/S%0sE%0e - %en/%sn - S%0sE%0e - %en.%ext')" value="$T('button-EpS01E05')" />
|
||||
<br>
|
||||
<input type="button" class="btn btn-default" onclick="tvSet('%dn.%ext')" value="$T('button-FileLikeFolder')" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="previewtv" class="example">
|
||||
@@ -51,7 +53,7 @@
|
||||
<label class="config">$T('sortResult')</label> <span class="desc path" id="previewtv-result"> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<label class="config">$T('sort-legenda')</label>
|
||||
<button type="button" class="btn btn-default patternKey" onclick="jQuery(this).hide(); jQuery('#Key1').show();"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> $T('sort-legenda')</button>
|
||||
<table id="Key1" class="Key">
|
||||
@@ -139,9 +141,9 @@
|
||||
<td>$T("sort-File")</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-right"><b>$T('orgDirname'):</b></td>
|
||||
<td class="align-right"><b>$T('orgJobname'):</b></td>
|
||||
<td>%dn</td>
|
||||
<td>$T("sort-Folder")</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-right"><b>$T('lowercase'):</b></td>
|
||||
@@ -199,6 +201,7 @@
|
||||
<input type="button" class="btn btn-default" onclick="movieSet('%title (%y)/%title (%y).%ext',' CD%1');movieExtraFolder(false)" value="$T('button-inFolders')" />
|
||||
<input type="button" class="btn btn-default" onclick="movieSet('%title (%y).%ext',' CD%1');movieExtraFolder(true)" value="$T('button-noFolders')" />
|
||||
<input type="button" class="btn btn-default" onclick="movieSet('%0decade/%title (%y).%ext',' CD%1');movieExtraFolder(true)" value="$T('decade')" />
|
||||
<input type="button" class="btn btn-default" onclick="movieSet('%dn.%ext')" value="$T('button-FileLikeFolder')" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="previewmovie" class="example">
|
||||
@@ -210,7 +213,7 @@
|
||||
<label class="config">$T('sortResult')</label> <span class="desc path" id="previewmovie-result"> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<label class="config">$T('sort-legenda')</label>
|
||||
<button type="button" class="btn btn-default patternKey" onclick="jQuery(this).hide(); jQuery('#Key2').show();"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> $T('sort-legenda')</button>
|
||||
<table id="Key2" class="Key">
|
||||
@@ -263,9 +266,9 @@
|
||||
<td>$T('sort-File')</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-right"><b>$T('orgDirname'):</b></td>
|
||||
<td class="align-right"><b>$T('orgJobname'):</b></td>
|
||||
<td>%dn</td>
|
||||
<td>$T("sort-Folder")</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-right"><b>$T('lowercase'):</b></td>
|
||||
@@ -328,7 +331,9 @@
|
||||
<div class="presets float-left">
|
||||
<input type="button" class="btn btn-default" onclick="dateSet('%t/%t - %y-%0m-%0d - %desc.%ext')" value="$T('button-ShowNameF')" />
|
||||
<input type="button" class="btn btn-default" onclick="dateSet('%y-%0m/%t - %y-%0m-%0d - %desc.%ext')" value="$T('button-YMF')" />
|
||||
<br>
|
||||
<input type="button" class="btn btn-default" onclick="dateSet('%y-%0m-%0d/%t - %y-%0m-%0d - %desc.%ext')" value="$T('button-DailyF')" />
|
||||
<input type="button" class="btn btn-default" onclick="dateSet('%dn.%ext')" value="$T('button-FileLikeFolder')" />
|
||||
</div>
|
||||
</div>
|
||||
<div id="previewdate" class="example">
|
||||
@@ -340,7 +345,7 @@
|
||||
<label class="config">$T('sortResult')</label> <span class="desc path" id="previewdate-result"> </span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<label class="config">$T('sort-legenda')</label>
|
||||
<button type="button" class="btn btn-default patternKey" onclick="jQuery(this).hide(); jQuery('#Key3').show();"><span class="glyphicon glyphicon-list-alt" aria-hidden="true"></span> $T('sort-legenda')</button>
|
||||
<table id="Key3" class="Key">
|
||||
@@ -407,6 +412,11 @@
|
||||
<td>%fn</td>
|
||||
<td>$T('sort-File')</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-right"><b>$T('orgJobname'):</b></td>
|
||||
<td>%dn</td>
|
||||
<td></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td class="align-right"><b>$T('lowercase'):</b></td>
|
||||
<td>{$T('TEXT')}</td>
|
||||
@@ -487,7 +497,7 @@
|
||||
\$.ajax({
|
||||
type: "GET",
|
||||
url: "../../tapi",
|
||||
data: {mode:'eval_sort', value: 'generic', name: \$('#moviesamplename').val(), title: \$moviesortstring, movieextra: \$('#movieextra').val(), apikey: '$session', output: 'json' },
|
||||
data: {mode:'eval_sort', value: 'movie', name: \$('#moviesamplename').val(), title: \$moviesortstring, movieextra: \$('#movieextra').val(), apikey: '$session', output: 'json' },
|
||||
success: function(data){
|
||||
\$('#previewmovie-result').removeClass("loading failure").html(data.result);
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<!--#set global $pane="Special"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/special"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/special"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
<!--#set global $pane="Switches"#-->
|
||||
<!--#set global $help_uri="configuration/2.2/switches"#-->
|
||||
<!--#set global $help_uri="configuration/2.3/switches"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
<div class="colmask">
|
||||
<div class="padding alt section">
|
||||
<label for="advanced-settings-button" class="form-control advanced-button ">
|
||||
<input type="checkbox" id="advanced-settings-button" name="advanced-settings-button"> $T('button-advanced')
|
||||
</label>
|
||||
</div>
|
||||
<form action="saveSwitches" method="post" name="fullform" class="fullform" autocomplete="off">
|
||||
<input type="hidden" id="session" name="session" value="$session" />
|
||||
<div class="section">
|
||||
<div class="section advanced-settings">
|
||||
<div class="col2">
|
||||
<h3>$T('swtag-server') <a href="$helpuri$help_uri#toc1" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
</div><!-- /col2 -->
|
||||
@@ -67,12 +72,12 @@
|
||||
<input type="number" name="propagation_delay" id="propagation_delay" value="$propagation_delay" /> <i>$T('minutes')</i>
|
||||
<span class="desc">$T('explain-propagation_delay')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="top_only">$T('opt-top_only')</label>
|
||||
<input type="checkbox" name="top_only" id="top_only" value="1" <!--#if int($top_only) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-top_only')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="pre_check">$T('opt-pre_check')</label>
|
||||
<input type="checkbox" name="pre_check" id="pre_check" value="1" <!--#if int($pre_check) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-pre_check')</span>
|
||||
@@ -104,7 +109,7 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-no_series_dupes')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="series_propercheck">$T('opt-series_propercheck')</label>
|
||||
<input type="checkbox" name="series_propercheck" id="series_propercheck" value="1" <!--#if int($series_propercheck) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-series_propercheck')</span>
|
||||
@@ -118,6 +123,11 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-pause_on_pwrar')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="unwanted_extensions">$T('opt-unwanted_extensions')</label>
|
||||
<input type="text" name="unwanted_extensions" id="unwanted_extensions" value="$unwanted_extensions"/>
|
||||
<span class="desc">$T('explain-unwanted_extensions')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="action_on_unwanted_extensions">$T('opt-action_on_unwanted_extensions')</label>
|
||||
<select name="action_on_unwanted_extensions" id="action_on_unwanted_extensions">
|
||||
@@ -127,12 +137,7 @@
|
||||
</select>
|
||||
<span class="desc">$T('explain-action_on_unwanted_extensions')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="unwanted_extensions">$T('opt-unwanted_extensions')</label>
|
||||
<input type="text" name="unwanted_extensions" id="unwanted_extensions" value="$unwanted_extensions"/>
|
||||
<span class="desc">$T('explain-unwanted_extensions')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="auto_sort">$T('opt-auto_sort')</label>
|
||||
<input type="checkbox" name="auto_sort" id="auto_sort" value="1" <!--#if int($auto_sort) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-auto_sort')</span>
|
||||
@@ -160,53 +165,53 @@
|
||||
<input type="checkbox" name="pause_on_post_processing" id="pause_on_post_processing" value="1" <!--#if int($pause_on_post_processing) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-pause_on_post_processing')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="enable_all_par">$T('opt-enable_all_par')</label>
|
||||
<input type="checkbox" name="enable_all_par" id="enable_all_par" value="1" <!--#if int($enable_all_par) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-enable_all_par').replace('. ', '.<br/>')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="par_option">$T('opt-par_option')</label>
|
||||
<input type="text" name="par_option" id="par_option" value="$par_option" />
|
||||
<span class="desc">$T('explain-par_option')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="sfv_check">$T('opt-sfv_check')</label>
|
||||
<input type="checkbox" name="sfv_check" id="sfv_check" value="1" <!--#if int($sfv_check) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-sfv_check')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="safe_postproc">$T('opt-safe_postproc')</label>
|
||||
<input type="checkbox" name="safe_postproc" id="safe_postproc" value="1" <!--#if int($safe_postproc) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-safe_postproc')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="enable_recursive">$T('opt-enable_recursive')</label>
|
||||
<input type="checkbox" name="enable_recursive" id="enable_recursive" value="1" <!--#if int($enable_recursive) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-enable_recursive')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="flat_unpack">$T('opt-flat_unpack')</label>
|
||||
<input type="checkbox" name="flat_unpack" id="flat_unpack" value="1" <!--#if int($flat_unpack) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-flat_unpack')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="script_can_fail">$T('opt-script_can_fail')</label>
|
||||
<input type="checkbox" name="script_can_fail" id="script_can_fail" value="1" <!--#if int($script_can_fail) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-script_can_fail')</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="new_nzb_on_failure">$T('opt-new_nzb_on_failure')</label>
|
||||
<input type="checkbox" name="new_nzb_on_failure" id="new_nzb_on_failure" value="1" <!--#if int($new_nzb_on_failure) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-new_nzb_on_failure')</span>
|
||||
</div>
|
||||
<!--#if not $nt#-->
|
||||
<div class="field-pair <!--#if not $have_nice then "disabled" else "" #-->">
|
||||
<div class="field-pair advanced-settings <!--#if not $have_nice then "disabled" else "" #-->">
|
||||
<label class="config" for="nice">$T('opt-nice')</label>
|
||||
<input type="text" name="nice" id="nice" value="$nice" <!--#if not $have_nice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-nice')</span>
|
||||
</div>
|
||||
<div class="field-pair <!--#if not $have_ionice then "disabled" else "" #-->">
|
||||
<div class="field-pair advanced-settings <!--#if not $have_ionice then "disabled" else "" #-->">
|
||||
<label class="config" for="ionice">$T('opt-ionice')</label>
|
||||
<input type="text" name="ionice" id="ionice" value="$ionice" <!--#if not $have_ionice then 'readonly="readonly" disabled="disabled"' else "" #--> />
|
||||
<span class="desc">$T('explain-ionice')</span>
|
||||
@@ -217,7 +222,7 @@
|
||||
<input type="checkbox" name="ignore_samples" id="ignore_samples" value="1" <!--#if int($ignore_samples) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-ignore_samples') $T('igsam-del').</span>
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<div class="field-pair advanced-settings">
|
||||
<label class="config" for="enable_meta">$T('opt-enable_meta')</label>
|
||||
<input type="checkbox" name="enable_meta" id="enable_meta" value="1" <!--#if int($enable_meta) > 0 then 'checked="checked"' else ""#--> />
|
||||
<span class="desc">$T('explain-enable_meta').replace('. ', '.<br/>')</span>
|
||||
@@ -246,7 +251,7 @@
|
||||
</fieldset>
|
||||
</div><!-- /col1 -->
|
||||
</div><!-- /section -->
|
||||
<div class="section">
|
||||
<div class="section advanced-settings">
|
||||
<div class="col2">
|
||||
<h3>$T('swtag-naming') <a href="$helpuri$help_uri#toc4" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
|
||||
</div><!-- /col2 -->
|
||||
|
||||
@@ -23,16 +23,32 @@ body {
|
||||
overflow: visible;
|
||||
border: 1px solid #dfdede;
|
||||
background-color: #FFF;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
width: 100%
|
||||
}
|
||||
.section, .Servers form, #addFeed, #addFeedContent {
|
||||
.advanced-button {
|
||||
float: right;
|
||||
width: auto;
|
||||
margin: 0 4px 0px 0px;
|
||||
font-size: 13px;
|
||||
color: inherit;
|
||||
height: auto;
|
||||
padding-bottom: 5px;
|
||||
}
|
||||
#advanced-settings-button {
|
||||
float: left;
|
||||
margin: 2px 7px 0px 0px;
|
||||
}
|
||||
.advanced-buttonSeperator {
|
||||
width: 1px;
|
||||
height: 34px;
|
||||
background-color: #dfdede;
|
||||
float: right;
|
||||
margin: 0px 10px;
|
||||
}
|
||||
.section, #addFeed, #addFeedContent {
|
||||
border-bottom: 1px solid #dfdede;
|
||||
overflow: auto;
|
||||
}
|
||||
.section:last-child, .Servers form:last-child {
|
||||
border: 0;
|
||||
}
|
||||
.col2 {
|
||||
z-index: 10;
|
||||
float: left;
|
||||
@@ -150,13 +166,13 @@ input[type="checkbox"]+.desc {
|
||||
overflow: hidden;
|
||||
min-width: 555px;
|
||||
}
|
||||
.field-pair:nth-child(odd),
|
||||
.Key tr:nth-child(odd),
|
||||
.tab-pane tr:nth-child(odd),
|
||||
.even {
|
||||
background-color: #F8F8F8;
|
||||
}
|
||||
.field-pair:last-child {
|
||||
.field-pair:last-child,
|
||||
.no-field-pair-bg {
|
||||
background-color: transparent;
|
||||
}
|
||||
.alt,
|
||||
@@ -298,7 +314,7 @@ tr.separator {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.Categories form.sorting-row:nth-child(even) tr {
|
||||
.Categories form.sorting-row:nth-child(2n-1) tr {
|
||||
background-color: #F8F8F8;
|
||||
}
|
||||
|
||||
@@ -1023,19 +1039,14 @@ input[type="checkbox"] {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.Servers .chart-selector {
|
||||
position: absolute;
|
||||
display: block;
|
||||
top: -7px;
|
||||
left: 50%;
|
||||
width: 120px;
|
||||
margin-left: -40px;
|
||||
min-width: initial;
|
||||
opacity: 0.8;
|
||||
.Servers .chart-selector-container {
|
||||
float: right;
|
||||
}
|
||||
|
||||
.Servers .chart-selector:hover {
|
||||
opacity: 1;
|
||||
.Servers .chart-selector-container .glyphicon {
|
||||
font-size: 1.3em;
|
||||
padding-right: 4px;
|
||||
top: 5px;
|
||||
}
|
||||
|
||||
.Servers .ct-grid.ct-vertical:first-of-type {
|
||||
@@ -1082,6 +1093,13 @@ input[type="checkbox"] {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.host-warning {
|
||||
color: #F0AD4E;
|
||||
margin-left: 13px;
|
||||
top: 5px;
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
.fileBrowser .glyphicon {
|
||||
margin-right: 2px;
|
||||
top: 1px;
|
||||
@@ -1219,7 +1237,9 @@ input[type="checkbox"] {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.Servers .server-chart {
|
||||
.Servers .server-chart,
|
||||
.Servers .chart-selector-container,
|
||||
.Servers .advanced-buttonSeperator {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 1.2 KiB |
@@ -0,0 +1,36 @@
|
||||
<?xml version="1.0" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
|
||||
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
|
||||
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
|
||||
width="608.000000pt" height="608.000000pt" viewBox="0 0 608.000000 608.000000"
|
||||
preserveAspectRatio="xMidYMid meet">
|
||||
<g transform="translate(0.000000,608.000000) scale(0.100000,-0.100000)"
|
||||
fill="#000000" stroke="none">
|
||||
<path d="M1295 5818 c-46 -17 -81 -45 -107 -86 l-23 -37 -5 -1160 -5 -1160
|
||||
-386 -5 -386 -5 -40 -28 c-80 -56 -113 -173 -70 -257 9 -19 91 -113 182 -209
|
||||
91 -96 165 -177 165 -180 -1 -3 -18 -18 -39 -32 -21 -15 -48 -46 -60 -71 -21
|
||||
-43 -21 -54 -21 -514 0 -441 1 -472 19 -507 18 -36 18 -38 0 -74 -17 -33 -19
|
||||
-61 -19 -236 0 -222 6 -245 74 -305 60 -53 76 -54 851 -50 706 3 710 3 751 25
|
||||
26 13 45 18 51 12 5 -5 32 -17 60 -27 46 -15 77 -44 336 -317 157 -165 300
|
||||
-309 319 -320 24 -14 51 -20 98 -20 47 0 74 6 98 20 19 11 162 155 319 320
|
||||
200 211 295 304 321 315 20 8 46 20 56 26 15 9 26 7 55 -10 36 -21 39 -21 781
|
||||
-21 l745 0 45 25 c24 14 58 45 75 68 l30 44 3 746 2 746 -25 51 c-14 29 -40
|
||||
63 -60 77 l-35 25 170 179 c94 98 178 195 188 214 41 84 9 202 -71 257 l-40
|
||||
28 -386 5 -386 5 -5 1162 -5 1161 -30 43 c-16 23 -48 52 -70 63 l-40 21 -1725
|
||||
2 c-1202 1 -1734 -2 -1755 -9z m3215 -1488 l0 -1080 -284 0 -284 0 -53 -28
|
||||
c-39 -20 -62 -41 -84 -77 l-30 -48 -3 -199 -4 -198 -736 0 c-703 0 -739 -1
|
||||
-779 -19 -41 -19 -42 -19 -79 0 -36 18 -64 19 -510 19 l-472 0 -122 128 -122
|
||||
127 239 5 c258 5 269 8 325 67 61 64 58 -6 58 1243 l0 1140 1470 0 1470 0 0
|
||||
-1080z m32 -1562 l3 -273 408 -3 407 -2 0 -690 0 -690 -690 0 -690 0 0 965 0
|
||||
965 280 0 280 0 2 -272z m558 155 c-19 -21 -75 -80 -125 -130 l-90 -93 -67 0
|
||||
-68 0 0 130 0 130 192 0 192 0 -34 -37z m-3010 -573 l0 -140 -410 0 -410 0 0
|
||||
-130 0 -130 408 -2 407 -3 0 -415 0 -415 -692 -3 -693 -2 0 145 0 145 410 0
|
||||
410 0 0 130 0 130 -410 0 -410 0 0 415 0 415 695 0 695 0 0 -140z m1630 -550
|
||||
l0 -690 -690 0 -690 0 0 420 0 420 410 0 410 0 0 130 0 130 -410 0 -410 0 0
|
||||
140 0 140 690 0 690 0 0 -690z m-611 -967 c-35 -38 -66 -68 -69 -68 -3 0 -34
|
||||
30 -69 68 l-63 67 132 0 132 0 -63 -67z"/>
|
||||
<path d="M4547 2203 c-4 -3 -7 -186 -7 -405 l0 -398 130 0 130 0 0 405 0 405
|
||||
-123 0 c-68 0 -127 -3 -130 -7z"/>
|
||||
<path d="M2902 1533 l3 -128 128 -3 127 -3 0 131 0 130 -130 0 -131 0 3 -127z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.3 KiB |
6
interfaces/Config/templates/staticcfg/js/filesize.min.js
vendored
Normal file
6
interfaces/Config/templates/staticcfg/js/filesize.min.js
vendored
Normal file
@@ -0,0 +1,6 @@
|
||||
/*
|
||||
2017 Jason Mulligan <jason.mulligan@avoidwork.com>
|
||||
@version 3.5.11
|
||||
*/
|
||||
"use strict";!function(i){function e(i){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=[],d=0,r=void 0,a=void 0,s=void 0,f=void 0,u=void 0,l=void 0,v=void 0,B=void 0,c=void 0,p=void 0,y=void 0,m=void 0,x=void 0,g=void 0;if(isNaN(i))throw new Error("Invalid arguments");return s=!0===e.bits,y=!0===e.unix,a=e.base||2,p=void 0!==e.round?e.round:y?1:2,m=void 0!==e.spacer?e.spacer:y?"":" ",g=e.symbols||e.suffixes||{},x=2===a?e.standard||"jedec":"jedec",c=e.output||"string",u=!0===e.fullform,l=e.fullforms instanceof Array?e.fullforms:[],r=void 0!==e.exponent?e.exponent:-1,B=Number(i),v=B<0,f=a>2?1e3:1024,v&&(B=-B),(-1===r||isNaN(r))&&(r=Math.floor(Math.log(B)/Math.log(f)))<0&&(r=0),r>8&&(r=8),0===B?(n[0]=0,n[1]=y?"":t[x][s?"bits":"bytes"][r]):(d=B/(2===a?Math.pow(2,10*r):Math.pow(1e3,r)),s&&(d*=8)>=f&&r<8&&(d/=f,r++),n[0]=Number(d.toFixed(r>0?p:0)),n[1]=10===a&&1===r?s?"kb":"kB":t[x][s?"bits":"bytes"][r],y&&(n[1]="jedec"===x?n[1].charAt(0):r>0?n[1].replace(/B$/,""):n[1],o.test(n[1])&&(n[0]=Math.floor(n[0]),n[1]=""))),v&&(n[0]=-n[0]),n[1]=g[n[1]]||n[1],"array"===c?n:"exponent"===c?r:"object"===c?{value:n[0],suffix:n[1],symbol:n[1]}:(u&&(n[1]=l[r]?l[r]:b[x][r]+(s?"bit":"byte")+(1===n[0]?"":"s")),n.join(m))}var o=/^(b|B)$/,t={iec:{bits:["b","Kib","Mib","Gib","Tib","Pib","Eib","Zib","Yib"],bytes:["B","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"]},jedec:{bits:["b","Kb","Mb","Gb","Tb","Pb","Eb","Zb","Yb"],bytes:["B","KB","MB","GB","TB","PB","EB","ZB","YB"]}},b={iec:["","kibi","mebi","gibi","tebi","pebi","exbi","zebi","yobi"],jedec:["","kilo","mega","giga","tera","peta","exa","zetta","yotta"]};e.partial=function(i){return function(o){return e(o,i)}},"undefined"!=typeof exports?module.exports=e:"function"==typeof define&&define.amd?define(function(){return e}):i.filesize=e}("undefined"!=typeof window?window:global);
|
||||
//# sourceMappingURL=filesize.min.js.map
|
||||
File diff suppressed because one or more lines are too long
@@ -170,6 +170,10 @@
|
||||
<div class="col-sm-2">$T('category')</div>
|
||||
<div class="col-sm-10" data-bind="text: historyStatus.category() == '*' ? glitterTranslate.defaultText : historyStatus.category"></div>
|
||||
</div>
|
||||
<div class="row" data-bind="visible: historyStatus.password">
|
||||
<div class="col-sm-2">$T('srv-password')</div>
|
||||
<div class="col-sm-10" data-bind="text: historyStatus.password"></div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-2">$T('msg-path')</div>
|
||||
<div class="col-sm-10" data-bind="text: historyStatus.storage() == '' ? historyStatus.path : historyStatus.storage"></div>
|
||||
|
||||
@@ -18,7 +18,7 @@
|
||||
<tr>
|
||||
<td class="table-messages-label">
|
||||
<span class="label" data-bind="css: 'label-' + css, text: type"></span>
|
||||
<strong data-bind="text: date, attr: { 'data-timestamp': timestamp }"></strong>
|
||||
<strong data-bind="text: displayDateTime(timestamp, \$parent.dateFormat(), 'X'), attr: { 'data-timestamp': timestamp }"></strong>
|
||||
<span class="queue-message-text" data-bind="html: text"></span>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -59,15 +59,9 @@
|
||||
<div id="feedback-slider-inner">
|
||||
<p><strong>If anything is not working as expected, or could be improved, let us know!</strong></p>
|
||||
<p><strong>If you encounter an error, please include the log file (click on <span class="glyphicon glyphicon-wrench"></span> ) when contacting us.</strong></p>
|
||||
<h4>General</h4>
|
||||
<span class="glyphicon glyphicon-home"></span> <a href="https://forums.sabnzbd.org/" target="_blank">SABnzbd Forum</a><br />
|
||||
<span class="glyphicon glyphicon-home"></span> <a href="https://forums.sabnzbd.org/viewforum.php?f=11" target="_blank">SABnzbd Forum</a><br />
|
||||
<span class="glyphicon glyphicon-plane"></span> <a href="https://github.com/sabnzbd/sabnzbd/" target="_blank">SABnzbd on Github</a><br />
|
||||
<span class="glyphicon glyphicon-globe"></span> <a href="https://translations.launchpad.net/sabnzbd" target="_blank">Translations of SABnzbd</a><br />
|
||||
<span class="glyphicon glyphicon-envelope"></span> <a href="mailto:bugs@sabnzbd.org?body=Version:%20$version%20Skin:%20Glitter">Email bugs@sabnzbd.org</a>
|
||||
|
||||
<h4>Interface (Glitter)</h4>
|
||||
<span class="glyphicon glyphicon-home"></span> <a href="https://forums.sabnzbd.org/viewtopic.php?f=5&t=18880" target="_blank">Glitter at SABnzbd Forum</a><br />
|
||||
<span class="glyphicon glyphicon-envelope"></span> <a href="mailto:safihre@sabnzbd.org?body=Version:%20$version">Email safihre@sabnzbd.org</a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -156,7 +150,9 @@
|
||||
</div>
|
||||
<div class="row options-function-box">
|
||||
<div class="col-sm-6">
|
||||
<a href="./status/showlog?session=$session" target="_blank" class="btn btn-default"><span class="glyphicon glyphicon-file"></span> $T('link-showLog')</a>
|
||||
<a href="./status/showlog?session=$session" target="_blank" class="btn btn-default" data-tooltip="true" data-placement="top" title="$T('Glitter-logText')">
|
||||
<span class="glyphicon glyphicon-file"></span> $T('link-showLog')
|
||||
</a>
|
||||
</div>
|
||||
<div class="col-sm-6">
|
||||
<div class="input-group" data-tooltip="true" data-placement="top" title="$T('logging')">
|
||||
@@ -179,7 +175,6 @@
|
||||
</div>
|
||||
<div data-bind="foreach: statusInfo.servers">
|
||||
<div class="options-server-box">
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-6">$T('swtag-server')</div>
|
||||
<div class="col-sm-6">
|
||||
@@ -656,7 +651,6 @@
|
||||
<button type="button" class="btn btn-danger" data-bind="click: history.emptyHistory" data-action="history-purgeremove-failed"><span class="glyphicon glyphicon-floppy-remove"></span> $T('purgeFailed-Files')</button><hr />
|
||||
<button type="button" class="btn btn-danger" data-bind="click: history.emptyHistory" data-action="history-purge-completed"><span class="glyphicon glyphicon-floppy-saved"></span> $T('purgeCompl')</button><hr />
|
||||
<button type="button" class="btn btn-danger" data-bind="click: history.emptyHistory" data-action="history-purge-page"><span class="glyphicon glyphicon-check"></span> $T('purgePage') <span class="label label-default" data-bind="text: history.historyItems().length"></span></button>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -88,25 +88,25 @@
|
||||
<tr class="queue-item">
|
||||
<td>
|
||||
<a href="#" data-bind="click: pauseToggle, attr: { 'title': pausedStatus() ? '$T('link-resume')' : '$T('link-pause')' }">
|
||||
<span class="hover-button glyphicon" data-bind="css: { 'glyphicon-play': pausedStatus(), 'glyphicon-pause': !pausedStatus() }"></span>
|
||||
<span class="hover-button glyphicon" data-bind="css: queueIcon"></span>
|
||||
</a>
|
||||
</td>
|
||||
<td class="name">
|
||||
<div class="row-wrap-text" data-bind="visible: !editingName()">
|
||||
<span data-bind="text: name, attr: { 'title': name() }"></span>
|
||||
<div class="row-wrap-text" data-bind="visible: !editingName(), css: { 'direct-unpack-text': direct_unpack }">
|
||||
<span data-bind="text: name, attr: { 'title': name_title }"></span>
|
||||
<!-- ko if: password() -->
|
||||
<small class="queue-item-password">
|
||||
<span class="glyphicon glyphicon-lock"></span>
|
||||
<span data-bind="text: password"></span>
|
||||
</small>
|
||||
<!-- /ko -->
|
||||
<div class="name-icons direct-unpack hover-button" data-bind="visible: direct_unpack" title="$T('opt-direct_unpack')">
|
||||
<span class="glyphicon glyphicon-compressed"></span> <span data-bind="text: direct_unpack"></span>
|
||||
</div>
|
||||
</div>
|
||||
<form data-bind="submit: editingNameSubmit">
|
||||
<input type="text" data-bind="value: nameForEdit, visible: editingName(), hasfocus: editingName" />
|
||||
</form>
|
||||
<div class="name-icons direct-unpack hover-button" data-bind="visible: direct_unpack">
|
||||
<span class="glyphicon glyphicon-compressed"></span> <span data-bind="text: direct_unpack"></span>
|
||||
</div>
|
||||
<div class="name-options" data-bind="visible: !editingName(), css: { disabled: isGrabbing() }">
|
||||
<a href="#" data-bind="click: \$parent.queue.moveButton" class="hover-button buttonMoveToTop" title="$T('Glitter-top')"><span class="glyphicon glyphicon-chevron-up"></span></a>
|
||||
<a href="#" data-bind="click: \$parent.queue.moveButton" class="hover-button buttonMoveToBottom" title="$T('Glitter-bottom')"><span class="glyphicon glyphicon-chevron-down"></span></a>
|
||||
@@ -121,8 +121,8 @@
|
||||
</td>
|
||||
<td class="progress-indicator">
|
||||
<div class="progress">
|
||||
<div class="progress-bar progress-bar-info" data-bind="attr: { 'style': 'width: ' + percentageRounded() + '; background-color: ' + progressColor() + ';' }">
|
||||
<strong data-bind="text: percentageRounded"></strong>
|
||||
<div class="progress-bar progress-bar-info" data-bind="attr: { 'style': 'width: ' + percentage() + '%; background-color: ' + progressColor() + ';' }">
|
||||
<strong data-bind="text: percentage() + '%'"></strong>
|
||||
<i data-bind="text: missingText"></i>
|
||||
</div>
|
||||
<span data-bind="text: progressText"></span>
|
||||
@@ -133,8 +133,8 @@
|
||||
<label data-bind="visible: parent.isMultiEditing()">
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
</label>
|
||||
<!-- ko if: !isGrabbing() -->
|
||||
<div class="dropdown" data-bind="visible: !isGrabbing() && !parent.isMultiEditing()">
|
||||
<!-- ko if: !isGrabbing() -->
|
||||
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
|
||||
<a href="#" data-toggle="dropdown" data-bind="click: toggleDropdown">
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
@@ -144,7 +144,7 @@
|
||||
<span class="glyphicon glyphicon-tag"></span>
|
||||
<select name="Category" class="form-control" data-bind="options: parent.categoriesList, optionsValue: 'catValue', optionsText: 'catText', value: category, event: { change: changeCat }"></select>
|
||||
</li>
|
||||
<!-- ko if: (status() != 'Fetching') -->
|
||||
<!-- ko if: !isFetchingBlocks -->
|
||||
<li title="$T('priority')" data-tooltip="true" data-placement="left">
|
||||
<span class="glyphicon glyphicon-sort-by-attributes-alt"></span>
|
||||
<select name="Priority" class="form-control" data-bind="options: parent.priorityOptions, optionsValue: 'value', optionsText: 'name', value: priority, event: { change: changePriority }"></select>
|
||||
|
||||
@@ -30,6 +30,7 @@
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="./staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="./staticcfg/ico/android-192x192.png" />
|
||||
<link rel="mask-icon" href="./staticcfg/ico/safari-pinned-tab.svg" color="#383F45">
|
||||
<link rel="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico?v=$version" data-bind="attr: { 'href': SABIcon }" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
@@ -46,7 +47,7 @@
|
||||
var sabSpeedHistory = [$bytespersec_list];
|
||||
var newRelease = "$new_release";
|
||||
var newReleaseUrl = "$new_rel_url";
|
||||
var glitterIsBeta = ("$version".search(/Alpa|Beta|x/)) > 0;
|
||||
var glitterIsBeta = ("$version".search(/[develop|Alpha|Beta|RC]/)) > 0;
|
||||
var glitterPreLoadQueue = $preload_queue;
|
||||
var glitterPreLoadHistory = $preload_history;
|
||||
|
||||
@@ -63,6 +64,7 @@
|
||||
glitterTranslate.removeDown = "$T('Glitter-confirmClearDownloads')";
|
||||
glitterTranslate.removeDow1 = "$T('Glitter-confirmClear1Download')";
|
||||
glitterTranslate.retryAll = "$T('link-retryAll')?";
|
||||
glitterTranslate.fetch = "$T('Glitter-fetch')";
|
||||
glitterTranslate.encrypted = "$T('Glitter-encrypted')";
|
||||
glitterTranslate.duplicate = "$T('Glitter-duplicate')";
|
||||
glitterTranslate.tooLarge = "$T('Glitter-tooLarge')";
|
||||
@@ -85,6 +87,7 @@
|
||||
glitterTranslate.moreText = "$T('Glitter-more')";
|
||||
|
||||
glitterTranslate.status = [];
|
||||
glitterTranslate.status['DirectUnpack'] = "$T('opt-direct_unpack')";
|
||||
glitterTranslate.status['Completed'] = "$T('post-Completed')";
|
||||
glitterTranslate.status['Failed'] = "$T('post-Failed')";
|
||||
glitterTranslate.status['Queued'] = "$T('post-Queued')";
|
||||
|
||||
@@ -128,13 +128,13 @@ function displayDateTime(inDate, outFormat, inFormat) {
|
||||
if(inDate == '') {
|
||||
var theMoment = moment()
|
||||
} else {
|
||||
var theMoment = moment(inDate, inFormat)
|
||||
var theMoment = moment.utc(inDate, inFormat)
|
||||
}
|
||||
// Special format or regular format?
|
||||
if(outFormat == 'fromNow') {
|
||||
return theMoment.fromNow()
|
||||
} else {
|
||||
return theMoment.format(outFormat)
|
||||
return theMoment.local().format(outFormat)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -536,6 +536,7 @@ function ViewModel() {
|
||||
callAPI({
|
||||
mode: 'warnings'
|
||||
}).then(function(response) {
|
||||
|
||||
// Reset it all
|
||||
self.allWarnings.removeAll();
|
||||
if(response) {
|
||||
@@ -544,20 +545,16 @@ function ViewModel() {
|
||||
|
||||
// Go over all warnings and add
|
||||
$.each(response.warnings, function(index, warning) {
|
||||
// Split warning into parts
|
||||
var warningSplit = convertHTMLtoText(warning).split(/\n/);
|
||||
|
||||
// Reformat CSS label and date
|
||||
// Replaces spaces by non-breakable spaces and newlines with br's
|
||||
var warningData = {
|
||||
index: index,
|
||||
type: glitterTranslate.status[warningSplit[1]].slice(0, -1),
|
||||
text: warningSplit.slice(2).join('<br/>').replace(/ /g, '\u00A0'), // Recombine if multiple lines
|
||||
date: displayDateTime(warningSplit[0], self.dateFormat(), 'YYYY-MM-DD HH:mm'),
|
||||
timestamp: moment(warningSplit[0], 'YYYY-MM-DD HH:mm').unix(),
|
||||
css: (warningSplit[1] == "ERROR" ? "danger" : warningSplit[1] == "WARNING" ? "warning" : "info"),
|
||||
type: glitterTranslate.status[warning.type].slice(0, -1),
|
||||
text: convertHTMLtoText(warning.text).replace(/ /g, '\u00A0').replace(/(?:\r\n|\r|\n)/g, '<br />'),
|
||||
timestamp: warning.time,
|
||||
css: (warning.type == "ERROR" ? "danger" : warning.type == "WARNING" ? "warning" : "info"),
|
||||
clear: self.clearWarnings
|
||||
};
|
||||
|
||||
self.allWarnings.push(warningData)
|
||||
})
|
||||
}
|
||||
@@ -788,15 +785,28 @@ function ViewModel() {
|
||||
}
|
||||
|
||||
// Update the servers
|
||||
if(self.statusInfo.servers().length == 0) {
|
||||
if(self.statusInfo.servers().length != data.status.servers.length) {
|
||||
// Only now we can subscribe to the log-level-changes! (only at start)
|
||||
if(self.statusInfo.servers().length == 0) {
|
||||
self.statusInfo.loglevel.subscribe(function(newValue) {
|
||||
// Update log-level
|
||||
callSpecialAPI('./status/change_loglevel/', {
|
||||
loglevel: newValue
|
||||
});
|
||||
})
|
||||
}
|
||||
|
||||
// Empty them, in case of update
|
||||
self.statusInfo.servers([])
|
||||
|
||||
// Initial add
|
||||
$.each(data.status.servers, function() {
|
||||
self.statusInfo.servers.push({
|
||||
'servername': this.servername,
|
||||
'serveroptional': this.serveroptional,
|
||||
'serverpriority': this.serverpriority,
|
||||
'servertotalconn': this.servertotalconn,
|
||||
'serverssl': this.serverssl,
|
||||
'servername': ko.observable(this.servername),
|
||||
'serveroptional': ko.observable(this.serveroptional),
|
||||
'serverpriority': ko.observable(this.serverpriority),
|
||||
'servertotalconn': ko.observable(this.servertotalconn),
|
||||
'serverssl': ko.observable(this.serverssl),
|
||||
'serversslinfo': ko.observable(this.serversslinfo),
|
||||
'serveractiveconn': ko.observable(this.serveractiveconn),
|
||||
'servererror': ko.observable(this.servererror),
|
||||
@@ -804,23 +814,20 @@ function ViewModel() {
|
||||
'serverconnections': ko.observableArray(this.serverconnections)
|
||||
})
|
||||
})
|
||||
|
||||
// Only now we can subscribe to the log-level-changes!
|
||||
self.statusInfo.loglevel.subscribe(function(newValue) {
|
||||
// Update log-level
|
||||
callSpecialAPI('./status/change_loglevel/', {
|
||||
loglevel: newValue
|
||||
});
|
||||
})
|
||||
} else {
|
||||
// Update
|
||||
$.each(data.status.servers, function(index) {
|
||||
var activeServer = self.statusInfo.servers()[index];
|
||||
activeServer.serveractiveconn(this.serveractiveconn)
|
||||
activeServer.servererror(this.servererror)
|
||||
activeServer.serveractive(this.serveractive)
|
||||
activeServer.servername(this.servername),
|
||||
activeServer.serveroptional(this.serveroptional),
|
||||
activeServer.serverpriority(this.serverpriority),
|
||||
activeServer.servertotalconn(this.servertotalconn),
|
||||
activeServer.serverssl(this.serverssl),
|
||||
activeServer.serversslinfo(this.serversslinfo),
|
||||
activeServer.serveractiveconn(this.serveractiveconn),
|
||||
activeServer.servererror(this.servererror),
|
||||
activeServer.serveractive(this.serveractive),
|
||||
activeServer.serverconnections(this.serverconnections)
|
||||
activeServer.serversslinfo(this.serversslinfo)
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
@@ -479,10 +479,12 @@ function QueueModel(parent, data) {
|
||||
self.index = ko.observable(data.index);
|
||||
self.status = ko.observable(data.status);
|
||||
self.isGrabbing = ko.observable(data.status == 'Grabbing' || data.avg_age == '-')
|
||||
self.isFetchingBlocks = data.status == 'Fetching' || data.priority == 'Repair' // No need to update
|
||||
self.totalMB = ko.observable(parseFloat(data.mb));
|
||||
self.remainingMB = ko.observable(parseFloat(data.mbleft));
|
||||
self.remainingMB = ko.observable(parseFloat(data.mbleft))
|
||||
self.missingMB = ko.observable(parseFloat(data.mbmissing))
|
||||
self.percentage = ko.observable(parseInt(data.percentage))
|
||||
self.avg_age = ko.observable(data.avg_age)
|
||||
self.missing = ko.observable(parseFloat(data.mbmissing))
|
||||
self.direct_unpack = ko.observable(data.direct_unpack)
|
||||
self.category = ko.observable(data.cat);
|
||||
self.priority = ko.observable(parent.priorityName[data.priority]);
|
||||
@@ -502,8 +504,8 @@ function QueueModel(parent, data) {
|
||||
if(self.status() == 'Checking') {
|
||||
return '#58A9FA'
|
||||
}
|
||||
// Check for missing data, the value is arbitrary! (3%)
|
||||
if(self.missing()/self.totalMB() > 0.03) {
|
||||
// Check for missing data, the value is arbitrary! (2%)
|
||||
if(self.missingMB()/self.totalMB() > 0.02) {
|
||||
return '#F8A34E'
|
||||
}
|
||||
// Set to grey, only when not Force download
|
||||
@@ -514,22 +516,23 @@ function QueueModel(parent, data) {
|
||||
return '';
|
||||
});
|
||||
|
||||
// MB's and percentages
|
||||
self.downloadedMB = ko.computed(function() {
|
||||
return(self.totalMB() - self.remainingMB()).toFixed(0);
|
||||
});
|
||||
self.percentageRounded = ko.pureComputed(function() {
|
||||
return fixPercentages(((self.downloadedMB() / self.totalMB()) * 100).toFixed(2))
|
||||
})
|
||||
// MB's
|
||||
self.progressText = ko.pureComputed(function() {
|
||||
return self.downloadedMB() + " MB / " + (self.totalMB() * 1).toFixed(0) + " MB";
|
||||
return (self.totalMB() - self.remainingMB()).toFixed(0) + " MB / " + (self.totalMB() * 1).toFixed(0) + " MB";
|
||||
})
|
||||
|
||||
// Texts
|
||||
self.missingText= ko.pureComputed(function() {
|
||||
// Check for missing data, the value is arbitrary! (3%)
|
||||
if(self.missing()/self.totalMB() > 0.03) {
|
||||
return self.missing().toFixed(0) + ' MB ' + glitterTranslate.misingArt
|
||||
self.name_title = ko.pureComputed(function() {
|
||||
// When hovering over the job
|
||||
if(self.direct_unpack()) {
|
||||
return self.name() + ' - ' + glitterTranslate.status['DirectUnpack'] + ': ' + self.direct_unpack()
|
||||
}
|
||||
return self.name()
|
||||
})
|
||||
self.missingText = ko.pureComputed(function() {
|
||||
// Check for missing data, the value is arbitrary! (1%)
|
||||
if(self.missingMB()/self.totalMB() > 0.01) {
|
||||
return self.missingMB().toFixed(0) + ' MB ' + glitterTranslate.misingArt
|
||||
}
|
||||
return;
|
||||
})
|
||||
@@ -538,6 +541,10 @@ function QueueModel(parent, data) {
|
||||
if(self.status() == 'Checking') {
|
||||
return glitterTranslate.checking
|
||||
}
|
||||
// Grabbing
|
||||
if(self.status() == 'Grabbing') {
|
||||
return glitterTranslate.fetch
|
||||
}
|
||||
// Pausing status
|
||||
if((self.parent.parent.downloadsPaused() && self.priority() != 2) || self.pausedStatus()) {
|
||||
return glitterTranslate.paused;
|
||||
@@ -546,6 +553,18 @@ function QueueModel(parent, data) {
|
||||
return rewriteTime(self.timeLeft());
|
||||
});
|
||||
|
||||
// Icon to better show force-priority
|
||||
self.queueIcon = ko.computed(function() {
|
||||
// Force comes first
|
||||
if(self.priority() == 2) {
|
||||
return 'glyphicon-forward'
|
||||
}
|
||||
if(self.pausedStatus()) {
|
||||
return 'glyphicon-play'
|
||||
}
|
||||
return 'glyphicon-pause'
|
||||
})
|
||||
|
||||
// Extra queue column
|
||||
self.extraText = ko.pureComputed(function() {
|
||||
// Picked anything?
|
||||
@@ -581,8 +600,9 @@ function QueueModel(parent, data) {
|
||||
self.isGrabbing(data.status == 'Grabbing' || data.avg_age == '-')
|
||||
self.totalMB(parseFloat(data.mb));
|
||||
self.remainingMB(parseFloat(data.mbleft));
|
||||
self.missingMB(parseFloat(data.mbmissing))
|
||||
self.percentage(parseInt(data.percentage))
|
||||
self.avg_age(data.avg_age)
|
||||
self.missing(parseFloat(data.mbmissing))
|
||||
self.direct_unpack(data.direct_unpack)
|
||||
self.category(data.cat);
|
||||
self.priority(parent.priorityName[data.priority]);
|
||||
@@ -680,7 +700,7 @@ function QueueModel(parent, data) {
|
||||
}
|
||||
self.changePriority = function(item, event) {
|
||||
// Not if we are fetching extra blocks for repair!
|
||||
if(item.status() == 'Fetching') return
|
||||
if(item.isFetchingBlocks) return
|
||||
callAPI({
|
||||
mode: 'queue',
|
||||
name: 'priority',
|
||||
|
||||
8
interfaces/Glitter/templates/static/javascripts/moment.min.js
vendored
Normal file → Executable file
8
interfaces/Glitter/templates/static/javascripts/moment.min.js
vendored
Normal file → Executable file
File diff suppressed because one or more lines are too long
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/da.js
Normal file → Executable file
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/da.js
Normal file → Executable file
@@ -19,7 +19,7 @@ var da = moment.defineLocale('da', {
|
||||
longDateFormat : {
|
||||
LT : 'HH:mm',
|
||||
LTS : 'HH:mm:ss',
|
||||
L : 'DD/MM/YYYY',
|
||||
L : 'DD.MM.YYYY',
|
||||
LL : 'D. MMMM YYYY',
|
||||
LLL : 'D. MMMM YYYY HH:mm',
|
||||
LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
|
||||
|
||||
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/de.js
Normal file → Executable file
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/de.js
Normal file → Executable file
@@ -28,7 +28,7 @@ function processRelativeTime(number, withoutSuffix, key, isFuture) {
|
||||
|
||||
var de = moment.defineLocale('de', {
|
||||
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
|
||||
monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
|
||||
monthsShort : 'Jan._Feb._März_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.'.split('_'),
|
||||
monthsParseExact : true,
|
||||
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
|
||||
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
|
||||
|
||||
11
interfaces/Glitter/templates/static/javascripts/momentjs_locale/es.js
Normal file → Executable file
11
interfaces/Glitter/templates/static/javascripts/momentjs_locale/es.js
Normal file → Executable file
@@ -13,6 +13,9 @@
|
||||
var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
|
||||
var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
|
||||
|
||||
var monthsParse = [/^ene/i, /^feb/i, /^mar/i, /^abr/i, /^may/i, /^jun/i, /^jul/i, /^ago/i, /^sep/i, /^oct/i, /^nov/i, /^dic/i];
|
||||
var monthsRegex = /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;
|
||||
|
||||
var es = moment.defineLocale('es', {
|
||||
months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
|
||||
monthsShort : function (m, format) {
|
||||
@@ -24,7 +27,13 @@ var es = moment.defineLocale('es', {
|
||||
return monthsShortDot[m.month()];
|
||||
}
|
||||
},
|
||||
monthsParseExact : true,
|
||||
monthsRegex : monthsRegex,
|
||||
monthsShortRegex : monthsRegex,
|
||||
monthsStrictRegex : /^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,
|
||||
monthsShortStrictRegex : /^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,
|
||||
monthsParse : monthsParse,
|
||||
longMonthsParse : monthsParse,
|
||||
shortMonthsParse : monthsParse,
|
||||
weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
|
||||
weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
|
||||
weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
|
||||
|
||||
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/fi.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/fi.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/fr.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/fr.js
Normal file → Executable file
99
interfaces/Glitter/templates/static/javascripts/momentjs_locale/he.js
Executable file
99
interfaces/Glitter/templates/static/javascripts/momentjs_locale/he.js
Executable file
@@ -0,0 +1,99 @@
|
||||
//! moment.js locale configuration
|
||||
//! locale : Hebrew [he]
|
||||
//! author : Tomer Cohen : https://github.com/tomer
|
||||
//! author : Moshe Simantov : https://github.com/DevelopmentIL
|
||||
//! author : Tal Ater : https://github.com/TalAter
|
||||
|
||||
;(function (global, factory) {
|
||||
typeof exports === 'object' && typeof module !== 'undefined'
|
||||
&& typeof require === 'function' ? factory(require('../moment')) :
|
||||
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
|
||||
factory(global.moment)
|
||||
}(this, (function (moment) { 'use strict';
|
||||
|
||||
|
||||
var he = moment.defineLocale('he', {
|
||||
months : 'ינואר_פברואר_מרץ_אפריל_מאי_יוני_יולי_אוגוסט_ספטמבר_אוקטובר_נובמבר_דצמבר'.split('_'),
|
||||
monthsShort : 'ינו׳_פבר׳_מרץ_אפר׳_מאי_יוני_יולי_אוג׳_ספט׳_אוק׳_נוב׳_דצמ׳'.split('_'),
|
||||
weekdays : 'ראשון_שני_שלישי_רביעי_חמישי_שישי_שבת'.split('_'),
|
||||
weekdaysShort : 'א׳_ב׳_ג׳_ד׳_ה׳_ו׳_ש׳'.split('_'),
|
||||
weekdaysMin : 'א_ב_ג_ד_ה_ו_ש'.split('_'),
|
||||
longDateFormat : {
|
||||
LT : 'HH:mm',
|
||||
LTS : 'HH:mm:ss',
|
||||
L : 'DD/MM/YYYY',
|
||||
LL : 'D [ב]MMMM YYYY',
|
||||
LLL : 'D [ב]MMMM YYYY HH:mm',
|
||||
LLLL : 'dddd, D [ב]MMMM YYYY HH:mm',
|
||||
l : 'D/M/YYYY',
|
||||
ll : 'D MMM YYYY',
|
||||
lll : 'D MMM YYYY HH:mm',
|
||||
llll : 'ddd, D MMM YYYY HH:mm'
|
||||
},
|
||||
calendar : {
|
||||
sameDay : '[היום ב־]LT',
|
||||
nextDay : '[מחר ב־]LT',
|
||||
nextWeek : 'dddd [בשעה] LT',
|
||||
lastDay : '[אתמול ב־]LT',
|
||||
lastWeek : '[ביום] dddd [האחרון בשעה] LT',
|
||||
sameElse : 'L'
|
||||
},
|
||||
relativeTime : {
|
||||
future : 'בעוד %s',
|
||||
past : 'לפני %s',
|
||||
s : 'מספר שניות',
|
||||
m : 'דקה',
|
||||
mm : '%d דקות',
|
||||
h : 'שעה',
|
||||
hh : function (number) {
|
||||
if (number === 2) {
|
||||
return 'שעתיים';
|
||||
}
|
||||
return number + ' שעות';
|
||||
},
|
||||
d : 'יום',
|
||||
dd : function (number) {
|
||||
if (number === 2) {
|
||||
return 'יומיים';
|
||||
}
|
||||
return number + ' ימים';
|
||||
},
|
||||
M : 'חודש',
|
||||
MM : function (number) {
|
||||
if (number === 2) {
|
||||
return 'חודשיים';
|
||||
}
|
||||
return number + ' חודשים';
|
||||
},
|
||||
y : 'שנה',
|
||||
yy : function (number) {
|
||||
if (number === 2) {
|
||||
return 'שנתיים';
|
||||
} else if (number % 10 === 0 && number !== 10) {
|
||||
return number + ' שנה';
|
||||
}
|
||||
return number + ' שנים';
|
||||
}
|
||||
},
|
||||
meridiemParse: /אחה"צ|לפנה"צ|אחרי הצהריים|לפני הצהריים|לפנות בוקר|בבוקר|בערב/i,
|
||||
isPM : function (input) {
|
||||
return /^(אחה"צ|אחרי הצהריים|בערב)$/.test(input);
|
||||
},
|
||||
meridiem : function (hour, minute, isLower) {
|
||||
if (hour < 5) {
|
||||
return 'לפנות בוקר';
|
||||
} else if (hour < 10) {
|
||||
return 'בבוקר';
|
||||
} else if (hour < 12) {
|
||||
return isLower ? 'לפנה"צ' : 'לפני הצהריים';
|
||||
} else if (hour < 18) {
|
||||
return isLower ? 'אחה"צ' : 'אחרי הצהריים';
|
||||
} else {
|
||||
return 'בערב';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return he;
|
||||
|
||||
})));
|
||||
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/nb.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/nb.js
Normal file → Executable file
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/nl.js
Normal file → Executable file
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/nl.js
Normal file → Executable file
@@ -40,7 +40,7 @@ var nl = moment.defineLocale('nl', {
|
||||
|
||||
weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
|
||||
weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
|
||||
weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
|
||||
weekdaysMin : 'zo_ma_di_wo_do_vr_za'.split('_'),
|
||||
weekdaysParseExact : true,
|
||||
longDateFormat : {
|
||||
LT : 'HH:mm',
|
||||
|
||||
19
interfaces/Glitter/templates/static/javascripts/momentjs_locale/pl.js
Normal file → Executable file
19
interfaces/Glitter/templates/static/javascripts/momentjs_locale/pl.js
Normal file → Executable file
@@ -63,7 +63,24 @@ var pl = moment.defineLocale('pl', {
|
||||
calendar : {
|
||||
sameDay: '[Dziś o] LT',
|
||||
nextDay: '[Jutro o] LT',
|
||||
nextWeek: '[W] dddd [o] LT',
|
||||
nextWeek: function () {
|
||||
switch (this.day()) {
|
||||
case 0:
|
||||
return '[W niedzielę o] LT';
|
||||
|
||||
case 2:
|
||||
return '[We wtorek o] LT';
|
||||
|
||||
case 3:
|
||||
return '[W środę o] LT';
|
||||
|
||||
case 6:
|
||||
return '[W sobotę o] LT';
|
||||
|
||||
default:
|
||||
return '[W] dddd [o] LT';
|
||||
}
|
||||
},
|
||||
lastDay: '[Wczoraj o] LT',
|
||||
lastWeek: function () {
|
||||
switch (this.day()) {
|
||||
|
||||
5
interfaces/Glitter/templates/static/javascripts/momentjs_locale/pt-br.js
Normal file → Executable file
5
interfaces/Glitter/templates/static/javascripts/momentjs_locale/pt-br.js
Normal file → Executable file
@@ -11,8 +11,8 @@
|
||||
|
||||
|
||||
var ptBr = moment.defineLocale('pt-br', {
|
||||
months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
|
||||
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
|
||||
months : 'janeiro_fevereiro_março_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro'.split('_'),
|
||||
monthsShort : 'jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez'.split('_'),
|
||||
weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
|
||||
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
|
||||
weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
|
||||
@@ -41,6 +41,7 @@ var ptBr = moment.defineLocale('pt-br', {
|
||||
future : 'em %s',
|
||||
past : '%s atrás',
|
||||
s : 'poucos segundos',
|
||||
ss : '%d segundos',
|
||||
m : 'um minuto',
|
||||
mm : '%d minutos',
|
||||
h : 'uma hora',
|
||||
|
||||
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/ro.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/ro.js
Normal file → Executable file
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/ru.js
Normal file → Executable file
2
interfaces/Glitter/templates/static/javascripts/momentjs_locale/ru.js
Normal file → Executable file
@@ -174,7 +174,7 @@ var ru = moment.defineLocale('ru', {
|
||||
},
|
||||
week : {
|
||||
dow : 1, // Monday is the first day of the week.
|
||||
doy : 7 // The week that contains Jan 1st is the first week of the year.
|
||||
doy : 4 // The week that contains Jan 4th is the first week of the year.
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/sr.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/sr.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/sv.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/sv.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/zh-cn.js
Normal file → Executable file
0
interfaces/Glitter/templates/static/javascripts/momentjs_locale/zh-cn.js
Normal file → Executable file
@@ -184,6 +184,7 @@ td.name .name-icons span,
|
||||
.navbar-nav .open .dropdown-menu>li>a,
|
||||
.dropdown-header,
|
||||
#modal-help small,
|
||||
.hover-button.glyphicon-forward,
|
||||
pre {
|
||||
color: #EBEBEB !important;
|
||||
opacity: 1 !important;
|
||||
|
||||
@@ -360,7 +360,7 @@ li.dropdown {
|
||||
|
||||
#feedback-slider:hover {
|
||||
left: 0px;
|
||||
height: 340px;
|
||||
height: 200px;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
@@ -404,7 +404,6 @@ thead {
|
||||
|
||||
tr th {
|
||||
border-bottom: none !important;
|
||||
visibility: hidden;
|
||||
padding: 0px !important;
|
||||
height: 0px;
|
||||
}
|
||||
@@ -527,6 +526,7 @@ tbody>tr>td:last-child {
|
||||
}
|
||||
|
||||
.hover-button.glyphicon-play,
|
||||
.hover-button.glyphicon-forward,
|
||||
.hover-button.glyphicon-stop {
|
||||
opacity: 1;
|
||||
color: #474747;
|
||||
@@ -633,9 +633,17 @@ td.name .row-wrap-text {
|
||||
margin-left: 3px;
|
||||
}
|
||||
|
||||
.queue-table td.name .direct-unpack-text {
|
||||
max-width: calc(100% - 75px);
|
||||
}
|
||||
|
||||
.queue-table td.name:hover .row-wrap-text {
|
||||
max-width: calc(100% - 125px);
|
||||
/* Change for each size! */
|
||||
/* Change for each size! */
|
||||
}
|
||||
|
||||
.queue-table td.name:hover .direct-unpack {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.queue-table td.name:hover .name-options {
|
||||
@@ -764,8 +772,8 @@ tr.queue-item>td:first-child>a {
|
||||
line-height: 24px;
|
||||
overflow: visible;
|
||||
margin-bottom: 0;
|
||||
box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.3);
|
||||
-webkit-box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.3);
|
||||
box-shadow: inset 0 0px 2px rgba(0, 0, 0, 0.2);
|
||||
-webkit-box-shadow: inset 0 0px 2px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.progress>span,
|
||||
@@ -1859,7 +1867,6 @@ input[name="nzbURL"] {
|
||||
td.name .name-icons {
|
||||
margin-left: 0px;
|
||||
margin-right: -5px;
|
||||
display: block;
|
||||
}
|
||||
|
||||
td.name .row-wrap-text {
|
||||
@@ -1887,7 +1894,6 @@ input[name="nzbURL"] {
|
||||
.history-queue-swicher .nav-tabs>li>a {
|
||||
border-bottom: inherit;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@media screen and (min-width: 768px) {
|
||||
@@ -1899,7 +1905,6 @@ input[name="nzbURL"] {
|
||||
min-width: 715px;
|
||||
}
|
||||
|
||||
|
||||
.queue .sortable-placeholder td {
|
||||
padding: 9px 0px 8px !important;
|
||||
}
|
||||
|
||||
@@ -141,8 +141,12 @@ tr.queue-item>td:first-child>a {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.queue-table td.name .direct-unpack {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.queue-table td.name .name-options {
|
||||
display: block;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.queue-table td.name .name-options small {
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="${path}staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="${path}staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="${path}staticcfg/ico/android-192x192.png" />
|
||||
<link rel="mask-icon" href="${path}staticcfg/ico/safari-pinned-tab.svg" color="#383F45">
|
||||
|
||||
<script type="text/javascript" src="${path}static/javascripts/lib.js?$version"></script>
|
||||
|
||||
@@ -99,9 +100,8 @@
|
||||
#if $loadavg#$T('ft-sysload'): <span id="loadavg">$loadavg</span>#end if#
|
||||
</div>
|
||||
<div id="nav_text_left">
|
||||
<span id="warning_box"><b><a href="${path}status/#tabs-warnings" id="last_warning" title="#echo $last_warning.replace("\n"," ").replace('"',"'") #"><span id="have_warnings">$have_warnings</span> $T('warnings')</a></b></span>
|
||||
<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"#
|
||||
⋅ <a href="${path}config/general#web_dir">#echo $T('useGlitter').split('.')[0]#.</a>
|
||||
#if $new_release#⋅ <a href="$new_rel_url" id="new_release" target="_blank">$T('Plush-updateAvailable').replace(' ',' ')</a>#end if#
|
||||
#end if#
|
||||
</div>
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
$.plush.queuenoofslots = $noofslots;
|
||||
$.plush.SetQueueSpeedLimit('$speedlimit', '$speedlimit_abs');
|
||||
$.plush.SetQueueFinishAction('$finishaction');
|
||||
$.plush.SetWarnings($have_warnings,"<!--#echo $last_warning.replace("\n"," ").replace('"',"'").replace('\\','\\\\') #-->");
|
||||
$.plush.SetWarnings($have_warnings,"");
|
||||
$.plush.SetQueuePauseInfo(<!--#if $paused#-->true<!--#else#-->false<!--#end if#-->,'$pause_int');
|
||||
$.plush.SetQueueETAStats("<!--#if float($kbpersec) > 1023 #-->$speed<!--#else#--><!--#echo "%.0f" % float($kbpersec)#--> K<!--#end if#-->",<!--#echo "%.0f" % float($kbpersec)#-->,'$timeleft','$T('eta'): $eta');
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
</td>
|
||||
|
||||
<td class="download-title" <!--#if $rating_enable#-->style="width:35%"<!--#end if#-->>
|
||||
<a href="nzb/$slot.nzo_id/" title="$T('status'): $T('post-'+$slot.status)<br/>$T('nzo-age'): $slot.avg_age<br/><!--#if $slot.missing#-->$T('missingArt'): $slot.missing<!--#end if#-->">$slot.filename.replace('.', '.​').replace('_', '_​')<!--#if $slot.password#--> / $slot.password<!--#end if#--></a>
|
||||
<a href="nzb/$slot.nzo_id/" title="$T('status'): $T('post-'+$slot.status)<br/>$T('nzo-age'): $slot.avg_age<br/><!--#if $slot.mbmissing!="0.00"#-->$T('missingArt'): $slot.mbmissing $T('MB')<!--#end if#-->">$slot.filename.replace('.', '.​').replace('_', '_​')<!--#if $slot.password#--> / $slot.password<!--#end if#--></a>
|
||||
</td>
|
||||
|
||||
<!--#if $rating_enable#-->
|
||||
|
||||
@@ -146,7 +146,7 @@ jQuery(function($){
|
||||
$("#plush_options").colorbox({ inline:true, href:"#plush_options_modal", title:$("#plush_options").text(),
|
||||
innerWidth:"375px", innerHeight:"350px", initialWidth:"375px", initialHeight:"350px", speed:0, opacity:0.7
|
||||
});
|
||||
|
||||
|
||||
// Save the type of speedlimit display
|
||||
$('#maxSpeed-label').change(function() {
|
||||
$.plush.speedLimitType = $(this).val();
|
||||
@@ -159,19 +159,19 @@ jQuery(function($){
|
||||
$('#maxSpeed-label').val($.plush.speedLimitType)
|
||||
|
||||
// Max Speed main menu input -- don't change value on refresh when focused
|
||||
$("#maxSpeed-option").focus(function(){
|
||||
$.plush.focusedOnSpeedChanger = true;
|
||||
}).blur(function(){
|
||||
$.plush.focusedOnSpeedChanger = false;
|
||||
$("#maxSpeed-option").focus(function(){
|
||||
$.plush.focusedOnSpeedChanger = true;
|
||||
}).blur(function(){
|
||||
$.plush.focusedOnSpeedChanger = false;
|
||||
}).keyup(function (e) {
|
||||
// Catch the enter
|
||||
if (e.keyCode == 13) {
|
||||
$("#maxSpeed-enable").click()
|
||||
}
|
||||
})
|
||||
|
||||
|
||||
// Submit the new speedlimit
|
||||
$("#maxSpeed-enable, #maxSpeed-disable").click( function(e) {
|
||||
$("#maxSpeed-enable, #maxSpeed-disable").click( function(e) {
|
||||
// Remove
|
||||
if ($(e.target).attr('id')=="maxSpeed-disable") {
|
||||
$('#maxSpeed-option').val('');
|
||||
@@ -496,7 +496,7 @@ jQuery(function($){
|
||||
};
|
||||
|
||||
// static-element tooltips
|
||||
$('body').delegate('#pausefor_title, #last_warning, #time-left, #multi_delete, #explain-blockRefresh, #pause_resume, #hist_purge, #queueTable td.download-title a, #queueTable td.eta span, #queueTable td.options .icon_nzb_remove, #historyTable td.options .icon_nzb_remove, #historyTable td div.icon_history_verbose', 'mouseover mouseout mousemove', function(event) {
|
||||
$('body').delegate('#pausefor_title, #time-left, #multi_delete, #explain-blockRefresh, #pause_resume, #hist_purge, #queueTable td.download-title a, #queueTable td.eta span, #queueTable td.options .icon_nzb_remove, #historyTable td.options .icon_nzb_remove, #historyTable td div.icon_history_verbose', 'mouseover mouseout mousemove', function(event) {
|
||||
var link = this,
|
||||
$link = $(this);
|
||||
|
||||
@@ -1095,7 +1095,7 @@ $("a","#multiops_inputs").click(function(e){
|
||||
title:function(){return $(this).text().replace("&", "&").replace("<", "<").replace(">", ">");},
|
||||
innerWidth:"80%", innerHeight:"300px", initialWidth:"80%", initialHeight:"300px", speed:0, opacity:0.7 });
|
||||
|
||||
// modal for reporting issues
|
||||
// modal for reporting issues
|
||||
$("#historyTable .modal-report").colorbox({ inline:true,
|
||||
href: function(){return "#report-"+$(this).parent().parent().parent().attr('id');},
|
||||
title:function(){return $(this).text();},
|
||||
@@ -1252,7 +1252,7 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
|
||||
$('#queue-pagination span').removeClass('loading'); // Remove spinner graphic from pagination
|
||||
$('#manual_refresh_wrapper').removeClass('refreshing'); // Refresh state notification
|
||||
},
|
||||
error: function(xhr){
|
||||
error: function(xhr){
|
||||
// Only reason for a 404 error could be a login failure -> redirect
|
||||
if(xhr.status == 404) {
|
||||
document.location=document.location;
|
||||
@@ -1320,7 +1320,7 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
|
||||
$('#history .avg_rate').rateit({readonly: true, resetable: false, step: 0.5});
|
||||
$('#history .avg_rate').each(function() { $(this).rateit('value', $(this).attr('value') / 2); });
|
||||
$('#history .user_combo option').filter(function() {
|
||||
return $(this).attr('value') == $(this).parent().parent().find('input.user_combo').attr('value');
|
||||
return $(this).attr('value') == $(this).parent().parent().find('input.user_combo').attr('value');
|
||||
}).attr('selected', true);
|
||||
$('#history-pagination span').removeClass('loading'); // Remove spinner graphic from pagination
|
||||
}
|
||||
@@ -1342,11 +1342,11 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
|
||||
// For switching using the select
|
||||
if(!speedLimit) speedLimit = $.plush.speedLimit;
|
||||
if(speedLimitAbs == undefined) speedLimitAbs = $.plush.speedLimitAbs;
|
||||
|
||||
// Save
|
||||
|
||||
// Save
|
||||
$.plush.speedLimit = speedLimit;
|
||||
$.plush.speedLimitAbs = speedLimitAbs;
|
||||
|
||||
|
||||
// How do we format?
|
||||
switch($.plush.speedLimitType) {
|
||||
case '%':
|
||||
@@ -1360,11 +1360,11 @@ $.plush.histprevslots = $.plush.histnoofslots; // for the next refresh
|
||||
speedlimitDisplay = speedLimitAbs/1024/1024;
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
// In case nothing and we make the displaying of the float more pretty
|
||||
speedlimitDisplay = (isNaN(speedlimitDisplay) || speedlimitDisplay == '0') ? '' : speedlimitDisplay;
|
||||
speedlimitDisplay = Math.round(speedlimitDisplay*10)/10;
|
||||
|
||||
|
||||
// Update
|
||||
if ($("#maxSpeed-option").val() != speedlimitDisplay && !$.plush.focusedOnSpeedChanger)
|
||||
$("#maxSpeed-option").val(speedlimitDisplay);
|
||||
|
||||
@@ -109,6 +109,11 @@ body {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#new_release {
|
||||
color: green;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
#livetip {
|
||||
position: absolute;
|
||||
background-color: #cfc;
|
||||
@@ -338,7 +343,6 @@ body {
|
||||
clear:left;
|
||||
padding: 0 20px 0 25px;
|
||||
font-size:90%;
|
||||
font-weight: bold;
|
||||
}
|
||||
#nav_text_left a, #nav_text_right a {
|
||||
color:#000;
|
||||
@@ -1079,7 +1083,7 @@ tr:hover .history_added { color: black; }
|
||||
color: red;
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
.rating_icon_vision {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 729 B After Width: | Height: | Size: 726 B |
@@ -1,7 +1,7 @@
|
||||
<!--#set global $pane="Status"#-->
|
||||
<!--#set global $help_uri="GUI+Status-0-7"#-->
|
||||
<!--#include $webdir + "/_inc_header.tmpl"#-->
|
||||
|
||||
<!--#import datetime#-->
|
||||
<div class="tabs">
|
||||
<ul>
|
||||
<li><a href="#tabs-warnings">$T('lastWarnings')</a></li>
|
||||
@@ -33,7 +33,11 @@
|
||||
<!--#for $warn in $warnings#-->
|
||||
<!--#set $odd = not $odd#-->
|
||||
<tr class="<!--#if $odd then "odd" else "even"#-->">
|
||||
<td>$warn.replace("\n","</td><td>", 2)</td></tr>
|
||||
<!--#set when = datetime.datetime.fromtimestamp($warn.time) #-->
|
||||
<td>$when</td>
|
||||
<td>$warn.type</td>
|
||||
<td>$warn.text</td>
|
||||
</tr>
|
||||
<!--#end for#-->
|
||||
</table>
|
||||
<!--#else#-->
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
<link rel="apple-touch-icon" sizes="152x152" href="./staticcfg/ico/apple-touch-icon-152x152-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="./staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="./staticcfg/ico/android-192x192.png" />
|
||||
<link rel="mask-icon" href="./staticcfg/ico/safari-pinned-tab.svg" color="#383F45">
|
||||
|
||||
<script type="text/javascript" src="static/MochiKit/MochiKit.js"></script>
|
||||
<script type="text/javascript" src="static/PlotKit/PlotKit.js"></script>
|
||||
@@ -78,7 +79,6 @@
|
||||
input = input.replace(/%0e/g,'05');
|
||||
input = input.replace(/%e/g,'5');
|
||||
input = input.replace(/%fn/g,'$T("sort-File")');
|
||||
input = input.replace(/%dn/g,'$T("sort-Folder")');
|
||||
|
||||
document.getElementById('previewtv').innerHTML = getOutput(input);
|
||||
}
|
||||
|
||||
16146
interfaces/smpl/templates/static/MochiKit/MochiKit.js
vendored
16146
interfaces/smpl/templates/static/MochiKit/MochiKit.js
vendored
File diff suppressed because it is too large
Load Diff
@@ -1,2 +1,2 @@
|
||||
dojo.hostenv.conditionalLoadModule({"common": ["MochiKit.MochiKit"]});
|
||||
dojo.hostenv.moduleLoaded("MochiKit.*");
|
||||
dojo.hostenv.conditionalLoadModule({"common": ["MochiKit.MochiKit"]});
|
||||
dojo.hostenv.moduleLoaded("MochiKit.*");
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!--#import datetime#-->
|
||||
<script type="text/javascript">
|
||||
window.onload = function() {
|
||||
location = "../#/status"
|
||||
@@ -36,7 +37,10 @@ $T('logging'):
|
||||
<!--#if $warnings#-->
|
||||
<h2>$T('lastWarnings') (<a class="config" onClick="lr('status/clearwarnings','', '-1', this.parentNode.id);">$T('clearWarnings')</a>)</h2>
|
||||
<!--#for $warn in $warnings#-->
|
||||
$warn<br/>
|
||||
<!--#set when = datetime.datetime.fromtimestamp($warn.time) #-->
|
||||
$when<br>
|
||||
$warn.type<br>
|
||||
$warn.text<br>
|
||||
<!--#end for#-->
|
||||
<!--#end if#-->
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
<input type="radio" name="lang" id="$l" value="$l" <!--#if $lang == $l then 'checked="checked"' else ''#--> />
|
||||
</label>
|
||||
<!--#end for#-->
|
||||
<!--#if not $languages#-->
|
||||
<hr>
|
||||
No language files detected. Please run <code>python tools/make_mo.py</code> once and restart SABnzbd, or contact your package provider.
|
||||
<!--#end if#-->
|
||||
<div class="spacer"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
The original author of SABnzbd based his work on Pynewsleecher by Freddy@madcowdesease.org.
|
||||
|
||||
Few parts of Pynewsleecher have survived the generations of SABnzbd in a
|
||||
recognizable form.
|
||||
Still, we wish to thank Freddy for his inspiration.
|
||||
|
||||
The home of the Pynewsleecher project:
|
||||
http://www.madcowdisease.org/mcd/pynewsleecher
|
||||
|
||||
The software does not carry any license information.
|
||||
|
||||
The original author of SABnzbd based his work on Pynewsleecher by Freddy@madcowdesease.org.
|
||||
|
||||
Few parts of Pynewsleecher have survived the generations of SABnzbd in a
|
||||
recognizable form.
|
||||
Still, we wish to thank Freddy for his inspiration.
|
||||
|
||||
The home of the Pynewsleecher project:
|
||||
http://www.madcowdisease.org/mcd/pynewsleecher
|
||||
|
||||
The software does not carry any license information.
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
On http://www.brunningonline.net/simon/blog/archives/001835.html,
|
||||
the author licensed SysTrayIcon.py under a variant of the WTFPL:
|
||||
|
||||
> Any road up, help yourself. Consider SysTrayIcon.py to be under an
|
||||
> "Aleister Crowley" style license - "Do what thou wilt shall be the
|
||||
> only law".
|
||||
>
|
||||
> Err, but don't sue me if it doesn't work. ;-)
|
||||
On http://www.brunningonline.net/simon/blog/archives/001835.html,
|
||||
the author licensed SysTrayIcon.py under a variant of the WTFPL:
|
||||
|
||||
> Any road up, help yourself. Consider SysTrayIcon.py to be under an
|
||||
> "Aleister Crowley" style license - "Do what thou wilt shall be the
|
||||
> only law".
|
||||
>
|
||||
> Err, but don't sue me if it doesn't work. ;-)
|
||||
|
||||
@@ -5,14 +5,14 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-2.3.0-develop\n"
|
||||
"Project-Id-Version: SABnzbd-2.4.0-develop\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: shypike@sabnzbd.org\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=ASCII\n"
|
||||
"Content-Transfer-Encoding: 7bit\n"
|
||||
"POT-Creation-Date: 2017-09-02 15:39+W. Europe Daylight Time\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:56+W. Europe Standard Time\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
|
||||
@@ -212,15 +212,6 @@ msgstr ""
|
||||
msgid " Resolving address"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr ""
|
||||
@@ -381,10 +372,6 @@ msgstr ""
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr ""
|
||||
@@ -401,10 +388,6 @@ msgstr ""
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr ""
|
||||
@@ -551,6 +534,12 @@ msgstr ""
|
||||
msgid "Email succeeded"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr ""
|
||||
@@ -621,7 +610,7 @@ msgstr ""
|
||||
msgid "Authentication missing, please enter username/password from Config->General into your 3rd party program:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid "Try our new skin Glitter! Fresh new design that is optimized for desktop and mobile devices. Go to Config -> General to change your skin."
|
||||
msgstr ""
|
||||
|
||||
@@ -685,10 +674,18 @@ msgstr ""
|
||||
msgid "Incorrect parameter"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -709,7 +706,7 @@ msgstr ""
|
||||
msgid "m"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr ""
|
||||
|
||||
@@ -737,6 +734,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -912,6 +913,7 @@ msgstr ""
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -937,10 +939,6 @@ msgstr ""
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
msgstr ""
|
||||
@@ -982,6 +980,10 @@ msgstr ""
|
||||
msgid "Verifying"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1043,11 +1045,6 @@ msgstr ""
|
||||
msgid "Not available"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr ""
|
||||
@@ -1056,7 +1053,7 @@ msgstr ""
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr ""
|
||||
|
||||
@@ -1393,7 +1390,7 @@ msgstr ""
|
||||
msgid "Unable to bind to port %s on %s. Some other software uses the port or SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr ""
|
||||
|
||||
@@ -1413,6 +1410,10 @@ msgstr ""
|
||||
msgid "Completed Download Folder %s is on FAT file system, limiting maximum file size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid "Module subprocessww missing. Expect problems with Unicoded file and directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1441,10 +1442,6 @@ msgstr ""
|
||||
msgid "Failed to move files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr ""
|
||||
@@ -1465,7 +1462,7 @@ msgstr ""
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr ""
|
||||
|
||||
@@ -2597,6 +2594,10 @@ msgstr ""
|
||||
msgid "Optional authentication password."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "If the SABnzbd Host or Port is exposed to the internet, your current settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3245,7 +3246,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr ""
|
||||
|
||||
@@ -3701,6 +3702,22 @@ msgstr ""
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr ""
|
||||
@@ -3841,6 +3858,10 @@ msgstr ""
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr ""
|
||||
@@ -3910,7 +3931,7 @@ msgid "Original Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3929,10 +3950,6 @@ msgstr ""
|
||||
msgid "file"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr ""
|
||||
@@ -4097,6 +4114,14 @@ msgstr ""
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr ""
|
||||
@@ -4261,6 +4286,10 @@ msgstr ""
|
||||
msgid "Refresh"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "All usernames, passwords and API-keys are automatically removed from the log and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr ""
|
||||
@@ -4405,10 +4434,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr ""
|
||||
@@ -4613,16 +4638,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr ""
|
||||
|
||||
|
||||
166
po/main/da.po
166
po/main/da.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:07+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-10-27 21:53+0000\n"
|
||||
"Last-Translator: Søren <Unknown>\n"
|
||||
"Language-Team: Danish <da@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -29,11 +29,14 @@ msgstr "Kan ikke finde webskabeloner: %s, forsøger med standardskabelon"
|
||||
msgid ""
|
||||
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
|
||||
msgstr ""
|
||||
"SABYenc deaktiveret: Der blev ikke fundet nogen korrekt version (Fandt v%s, "
|
||||
"forventede v%s)"
|
||||
|
||||
#: SABnzbd.py [Warning message]
|
||||
msgid ""
|
||||
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
|
||||
msgstr ""
|
||||
"SABYenc modul... IKKE fundet! Forventede v%s - https://sabnzbd.org/sabyenc"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "_yenc module... NOT found!"
|
||||
@@ -45,11 +48,11 @@ msgstr "par2 binær... IKKE fundet!"
|
||||
|
||||
#: SABnzbd.py [Error message] # SABnzbd.py [Error message]
|
||||
msgid "Verification and repair will not be possible."
|
||||
msgstr ""
|
||||
msgstr "Verificering og reperation er ikke muligt."
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "MultiPar binary... NOT found!"
|
||||
msgstr ""
|
||||
msgstr "MultiPar binær... IKKE fundet!"
|
||||
|
||||
#: SABnzbd.py [Warning message]
|
||||
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
|
||||
@@ -57,7 +60,7 @@ msgstr "Din Unrar version er %s, vi anbefaler version %s eller højere.<br />"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Downloads will not unpacked."
|
||||
msgstr ""
|
||||
msgstr "Downloads vil ikke blive udpakket."
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "unrar binary... NOT found"
|
||||
@@ -226,15 +229,6 @@ msgstr "Afprøv notifikation"
|
||||
msgid " Resolving address"
|
||||
msgstr " Server løsning"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEJL:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ADVARSEL:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
@@ -407,10 +401,6 @@ msgstr "Beskadigede historik database, skabte tom udskiftning"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL Kommando mislykkedes, se logg"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL Commit mislykkedes, se logg"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Det lykkedes ikke at lukke databasen, se logg"
|
||||
@@ -427,10 +417,6 @@ msgstr "Afkodning af %s mislykkedes"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr "Dekoder fejl: Ikke mere hukommelse"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC Fejl i %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Forkert udformet yEnc artikel i %s"
|
||||
@@ -581,6 +567,12 @@ msgstr "Det lykkedes ikke at lukke e-mail tilslutning"
|
||||
msgid "Email succeeded"
|
||||
msgstr "E-mail afsendelse mislykkedes"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kan ikke sende, mangler nødvendige data"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Kan ikke finde e-mail skabeloner i %s"
|
||||
@@ -673,7 +665,7 @@ msgstr ""
|
||||
"Brugeroplysninger mangler, indtast brugernavn / password fra Konfiguration-> "
|
||||
"Generelt i dit tredjepartsprogram:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -748,10 +740,19 @@ msgstr "Udefineret server"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Fejl parameter"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Tilbage"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEJL:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -772,7 +773,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Kan ikke oprette mappe %s"
|
||||
|
||||
@@ -802,6 +803,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Det lykkedes ikke at ændre rettigheder på %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Køre script"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -977,6 +982,7 @@ msgstr "Starter reparation"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Par verificering mislykkedes på %s, mens QuickCheck lykkedes"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1005,10 +1011,6 @@ msgstr "[%s] Bekræftelse i %s, alle filer er ok"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Bekræftelse i %s, kræver reparation"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Hovedarkiv mangler..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1051,6 +1053,10 @@ msgstr "Disk fuld"
|
||||
msgid "Verifying"
|
||||
msgstr "Bekræfter"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1114,11 +1120,6 @@ msgstr "Andre beskeder"
|
||||
msgid "Not available"
|
||||
msgstr "Ikke tilgængelig"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kan ikke sende, mangler nødvendige data"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Kunne ikke sende Prowl besked"
|
||||
@@ -1127,7 +1128,7 @@ msgstr "Kunne ikke sende Prowl besked"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Dårlig respons fra pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Det lykkedes ikke at sende pushover besked"
|
||||
|
||||
@@ -1498,7 +1499,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Alvorlig fejl"
|
||||
|
||||
@@ -1520,6 +1521,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "Overførslen kan mislykkes, kun %s af det krævede %s tilgængelig"
|
||||
@@ -1548,10 +1555,6 @@ msgstr "Det lykkedes ikke at omdøbe \"%s\" til \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Kunne ikke flytte filer"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Køre script"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Kør bruger script %s"
|
||||
@@ -1572,7 +1575,7 @@ msgstr "Mere"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Efterbehandling mislykkedes for %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "se logfil"
|
||||
|
||||
@@ -2739,6 +2742,12 @@ msgstr "SABnzbd password"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Valgfrit password."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr "Sikkerhed"
|
||||
@@ -3493,7 +3502,7 @@ msgstr "SSL-chifre"
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr "Øge ydeevnen ved at tvinge en lavere SSL-kryptering styrke."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Maksimalt antal forsøg"
|
||||
|
||||
@@ -3970,6 +3979,22 @@ msgstr "Enhed(er)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Enhed(er) som meddelelse skal sendes til"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4121,6 +4146,10 @@ msgstr "1x05 Episodemappe"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Episodemappe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
@@ -4190,8 +4219,8 @@ msgid "Original Filename"
|
||||
msgstr "Originalfilnavn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Orginal Mappenavn"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4209,10 +4238,6 @@ msgstr "tekst"
|
||||
msgid "file"
|
||||
msgstr "fil"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "mappe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Sorteringsstreng"
|
||||
@@ -4385,6 +4410,14 @@ msgstr "Mistet forbindelsen til SABnzbd.."
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr "I tilfælde af SABnzbd genstart vil denne skærm forsvinde automatisk!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ADVARSEL:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Hent"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Opdateringsfrekvens"
|
||||
@@ -4553,6 +4586,12 @@ msgstr "Pause i..."
|
||||
msgid "Refresh"
|
||||
msgstr "Opdatere"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortere efter alder <small>Ældst→Nyeste</small>"
|
||||
@@ -4701,10 +4740,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Bloker genopfriskninger ved at hænge over"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Hent"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Upload"
|
||||
@@ -4925,16 +4960,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Har du ingen usenet leverandør? Vi anbefaler at prøve %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Det lykkedes ikke at hente TV info (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Det lykkedes ikke at omdøbe: %s til %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Kunne ikke omdøbe lignende fil: %s til %s"
|
||||
|
||||
@@ -4969,6 +5004,12 @@ msgstr "URL hentning mislykkedes; %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Mappen \"%s\" findes ikke"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL Commit mislykkedes, se logg"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC Fejl i %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Error: No secondary interface defined."
|
||||
#~ msgstr "Fejl: Ingen sekundær bruger grænseflade defineret."
|
||||
|
||||
@@ -5024,6 +5065,9 @@ msgstr "URL hentning mislykkedes; %s"
|
||||
#~ msgid "Unpacking failed, an expected file was not unpacked"
|
||||
#~ msgstr "Udpakning mislykkedes, en ventet fil er ikke udpakket"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Hovedarkiv mangler..."
|
||||
|
||||
#~ msgid "Error importing OpenSSL module. Connecting with NON-SSL"
|
||||
#~ msgstr "Mislykkedes med importering af OpenSSL modul. Tilslutter uden SSL"
|
||||
|
||||
@@ -5370,6 +5414,12 @@ msgstr "URL hentning mislykkedes; %s"
|
||||
#~ msgid "Show times in AM/PM notation (does not affect scheduler)."
|
||||
#~ msgstr "Vis tider i AM / PM notation (påvirker ikke skemalægger)."
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "mappe"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Orginal Mappenavn"
|
||||
|
||||
#~ msgid "Groups / Indexer tags"
|
||||
#~ msgstr "Gruppe / Index tags"
|
||||
|
||||
|
||||
165
po/main/de.po
165
po/main/de.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"PO-Revision-Date: 2017-08-24 15:39+0000\n"
|
||||
"Last-Translator: jcfp <Unknown>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-10-10 19:03+0000\n"
|
||||
"Last-Translator: Robin Munkittrick <Unknown>\n"
|
||||
"Language-Team: German <de@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "MultiPar binary... NOT found!"
|
||||
@@ -237,15 +237,6 @@ msgstr "Benachrichtigungen testen"
|
||||
msgid " Resolving address"
|
||||
msgstr " Adresse wird aufgelöst …"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEHLER:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "WARNUNG:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Nichts"
|
||||
@@ -425,10 +416,6 @@ msgstr "Verlaufsdatenbank geschädigt, eine leere neue wurde erstellt"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL-Befehl fehlgeschlagen. Beachten Sie das Nachrichtenprotokoll."
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL-Commit fehlgeschlagen. Beachten Sie das Nachrichtenprotokoll."
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr ""
|
||||
@@ -446,10 +433,6 @@ msgstr "Fehler beim Dekodieren von %s."
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr "Decoder Fehler: Nicht genügend Speicher"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC-Fehler in %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Ungültiger yEnc-Artikel in %s"
|
||||
@@ -603,6 +586,12 @@ msgstr "Schliessen der Mail-Verbindung fehlgeschlagen"
|
||||
msgid "Email succeeded"
|
||||
msgstr "E-Mail erfolgreich versendet"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Absenden nicht möglich, benötigte Daten fehlen"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "In %s konnten keine E-Mail-Vorlagen gefunden werden"
|
||||
@@ -698,7 +687,7 @@ msgstr ""
|
||||
"Authentifizierung fehlt. Bitte Benutzernamen und Passwort aus Einstellungen-"
|
||||
">Allgemein in die externe Anwendung eingeben:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -772,10 +761,19 @@ msgstr "Undefinierter Server!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Fehlerhafter Parameter"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Zurück"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEHLER:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -796,7 +794,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Verzeichnis %s konnte nicht angelegt werden"
|
||||
|
||||
@@ -829,6 +827,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Rechte von %s konnten nicht geändert werden"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Ausführen des Skripts"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -1008,6 +1010,7 @@ msgstr ""
|
||||
"Par-Verifikation für \"%s\" fehlgeschlagen, obwohl der QuickCheck "
|
||||
"erfolgreich war"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1036,10 +1039,6 @@ msgstr "[%s] Überprüft in %s. Alle Dateien fehlerfrei."
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Überprüft in %s. Reparatur wird benötigt."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Hauptpaket nicht gefunden …"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1086,6 +1085,10 @@ msgstr "Festplatte voll"
|
||||
msgid "Verifying"
|
||||
msgstr "Überprüfen"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr "Überprüfe zusätzliche Dateien"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1093,7 +1096,7 @@ msgstr "Wird überprüft"
|
||||
|
||||
#: sabnzbd/newsunpack.py [Error message]
|
||||
msgid "Python script \"%s\" does not have execute (+x) permission set"
|
||||
msgstr "Dem Pythonskript \"%s\" fehlen die Ausführenrechte (+x)"
|
||||
msgstr "Dem Pythonskript \"%s\" fehlen die Ausführungsrechte (+x)"
|
||||
|
||||
#: sabnzbd/newswrapper.py
|
||||
msgid "This server does not allow SSL on this port"
|
||||
@@ -1152,11 +1155,6 @@ msgstr "Andere Nachrichten"
|
||||
msgid "Not available"
|
||||
msgstr "Nicht verfügbar"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Absenden nicht möglich, benötigte Daten fehlen"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Konnte Prowl-Nachricht nicht versenden"
|
||||
@@ -1165,7 +1163,7 @@ msgstr "Konnte Prowl-Nachricht nicht versenden"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Fehlerhafte Antwort von Pushbullet (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Konnte Pushover-Nachricht nicht versenden"
|
||||
|
||||
@@ -1550,7 +1548,7 @@ msgstr ""
|
||||
"Konnte nicht an Port %s auf %s starten. Eine andere Software nutzt diesen "
|
||||
"Port oder SABnzbd läuft bereits."
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Schwerwiegender Fehler"
|
||||
|
||||
@@ -1577,6 +1575,14 @@ msgstr ""
|
||||
"Download-Ordner %s für abgeschlossene Downloads auf FAT Dateisystem, ist "
|
||||
"auf maximale Dateigröße von 4GB begrenzt."
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
"Modul subprocessww fehlt. Fehler mit Unikodierter Datei und Verzeichnisnamen "
|
||||
"in den Downloads sind zu erwarten."
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1606,10 +1612,6 @@ msgstr "Fehler beim Umbenennen von \"%s\" nach \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Dateien verschieben fehlgeschlagen"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Ausführen des Skripts"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Ausführen des Benutzer-Skripts %s"
|
||||
@@ -1630,7 +1632,7 @@ msgstr "Mehr"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Nachbearbeitung von %s fehlgeschlagen (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "Beachten Sie die Protokolldatei"
|
||||
|
||||
@@ -2800,6 +2802,14 @@ msgstr "SABnzbd-Passwort"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Optionale Anmeldung mit Passwort"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
"Wenn der SABnzbd Host oder Port im Netz freigegeben ist, lassen die "
|
||||
"gegenwärtigen Einstellung vollen zugriff auf die SABnzbd Oberfläche zu."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr "Sicherheit"
|
||||
@@ -3590,7 +3600,7 @@ msgstr ""
|
||||
"Die Performanz verbessern, indem eine schwächere SSL-Verschlüsselung "
|
||||
"erzwungen wird."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Maximale Wiederholungen"
|
||||
|
||||
@@ -3871,7 +3881,7 @@ msgstr "Höchstens"
|
||||
|
||||
#: sabnzbd/skintext.py [Config->RSS filter-type selection menu "From Season/Episode"]
|
||||
msgid "From SxxEyy"
|
||||
msgstr "Von SxxExx"
|
||||
msgstr "Von SxxEyy"
|
||||
|
||||
#: sabnzbd/skintext.py [Config->RSS filter-type selection menu "From Show Season/Episode"]
|
||||
msgid "From Show SxxEyy"
|
||||
@@ -4075,6 +4085,22 @@ msgstr "Gerät(e)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Geräte, welche die Nachrichten empfangen sollen"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr "Wie oft die selbe benachrichtigung (in Sekunden) geschickt wird."
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4228,6 +4254,10 @@ msgstr "1x05 Episoden-Ordner"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Episoden-Ordner"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
@@ -4297,8 +4327,8 @@ msgid "Original Filename"
|
||||
msgstr "Ursprünglicher Dateiname"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Ursprünglicher Ordnername"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4316,10 +4346,6 @@ msgstr "text"
|
||||
msgid "file"
|
||||
msgstr "Datei"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "Ordner"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Sortieranweisung"
|
||||
@@ -4493,6 +4519,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"Wenn SABnzbd neustartet, wird diese Anzeige automatisch verschwinden!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "WARNUNG:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Abrufen"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Aktualisierungsrate"
|
||||
@@ -4661,6 +4695,12 @@ msgstr "Anhalten für …"
|
||||
msgid "Refresh"
|
||||
msgstr "Neu laden"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortieren nach Alter <small>Älteste→Neuste</small>"
|
||||
@@ -4809,10 +4849,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Aktualisierung durch Mauszeiger verhindern"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Abrufen"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Hochladen"
|
||||
@@ -5036,16 +5072,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Wenn Sie noch keinen Usenet-Provider haben, empfehlen wir Ihnen %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Fehler beim Abrufen der TV-Informationen: %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Umbenennen von %s nach %s fehlgeschlagen."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Umbenennen der gleichen Datei von %s nach %s fehlgeschlagen."
|
||||
|
||||
@@ -5083,6 +5119,12 @@ msgstr "Abrufen der URL fehlgeschlagen; %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Ordner \"%s\" existiert nicht"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL-Commit fehlgeschlagen. Beachten Sie das Nachrichtenprotokoll."
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC-Fehler in %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Error: No secondary interface defined."
|
||||
#~ msgstr "Fehler: Keine sekundäre Oberfläche angegeben."
|
||||
|
||||
@@ -5523,6 +5565,12 @@ msgstr "Abrufen der URL fehlgeschlagen; %s"
|
||||
#~ msgid "Show times in AM/PM notation (does not affect scheduler)."
|
||||
#~ msgstr "Zeiten in der AM/PM-Notation anzeigen (betrifft die Regeln nicht)."
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "Ordner"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Ursprünglicher Ordnername"
|
||||
|
||||
#~ msgid "Groups / Indexer tags"
|
||||
#~ msgstr "Gruppen/Indexer-Tags"
|
||||
|
||||
@@ -5608,6 +5656,9 @@ msgstr "Abrufen der URL fehlgeschlagen; %s"
|
||||
#~ "Benachrichtigung für Nachrichtengruppen aktivieren (keine, eine oder "
|
||||
#~ "mehrere)"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Hauptpaket nicht gefunden …"
|
||||
|
||||
#~ msgid "Initiating restart...<br />"
|
||||
#~ msgstr "Neustart wird durchgeführt …<br />"
|
||||
|
||||
|
||||
@@ -69,9 +69,6 @@ msgstr "Replace spaces in folder name"
|
||||
msgid "Replace dots in Foldername"
|
||||
msgstr "Replace dots in folder name"
|
||||
|
||||
msgid "Original Foldername"
|
||||
msgstr "Original folder name"
|
||||
|
||||
msgid "How long or untill when do you want to pause? (in English!)"
|
||||
msgstr "How long or until when do you want to pause? (in English!)"
|
||||
|
||||
@@ -117,3 +114,9 @@ msgstr "unrar binary... NOT found!"
|
||||
msgid "Downloads will not unpacked."
|
||||
msgstr "Downloads will not be unpacked."
|
||||
|
||||
msgid "Seperate multiple URLs by a comma"
|
||||
msgstr "Separate multiple URLs with a comma"
|
||||
|
||||
msgid "Advanced"
|
||||
msgstr "Advanced Settings"
|
||||
|
||||
|
||||
153
po/main/es.po
153
po/main/es.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:07+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Spanish <es@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -226,15 +226,6 @@ msgstr "Notificación de prueba"
|
||||
msgid " Resolving address"
|
||||
msgstr " Resolviendo sitio"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ERROR:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "AVISO:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ninguno"
|
||||
@@ -408,10 +399,6 @@ msgstr ""
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "Comando SQL ha fallado, vea el registro"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "Compromiso SQL ha fallado, vea el registro"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "No se pudo cerrar el base de datos, vea el registro"
|
||||
@@ -428,10 +415,6 @@ msgstr "Descodificación %s fallo"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "Error CRC en %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Articulo yEnc corrupto en %s"
|
||||
@@ -583,6 +566,12 @@ msgstr "No se pudo cerrar la conexión de correo"
|
||||
msgid "Email succeeded"
|
||||
msgstr "Email exitoso"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "No se ha podido enviar, faltan datos"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "No se pudo encontrar plantillas de email en %s"
|
||||
@@ -675,7 +664,7 @@ msgstr ""
|
||||
"Faltaron datos de cuenta, favor ingresar usuario/contraseña desde Config-"
|
||||
">General en tu aplicacion externa:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -750,10 +739,19 @@ msgstr "¡Servidor no definido!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Parámetro incorrecto"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Atrás"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ERROR:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -774,7 +772,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "No se pudo crear el directorio %s"
|
||||
|
||||
@@ -804,6 +802,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "No se puede cambiar los permisos de %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Ejecutando script"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -983,6 +985,7 @@ msgstr ""
|
||||
"La verificación PAR ha fallado en %s, ¡aunque el QuickCheck ha sido "
|
||||
"satisfactorio!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1011,10 +1014,6 @@ msgstr "[%s] Verificado en %s, todos los archivos correctos"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Verificado en %s, se necesita reparar"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Paquete principal no encontrado..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1059,6 +1058,10 @@ msgstr "Disco lleno"
|
||||
msgid "Verifying"
|
||||
msgstr "Verificando"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1122,11 +1125,6 @@ msgstr "Otros mensajes"
|
||||
msgid "Not available"
|
||||
msgstr "No disponible"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "No se ha podido enviar, faltan datos"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "No se pudo enviar el mensaje de Prowl"
|
||||
@@ -1135,7 +1133,7 @@ msgstr "No se pudo enviar el mensaje de Prowl"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Mala respuesta de Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "No se pudo enviar el mensaje de Pushover"
|
||||
|
||||
@@ -1514,7 +1512,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Error grave"
|
||||
|
||||
@@ -1537,6 +1535,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "La descarga fallo, solo %s de los %s requeridos estan disponibles"
|
||||
@@ -1565,10 +1569,6 @@ msgstr "Error al renombrar \"%s\" a \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Error al mover ficheros"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Ejecutando script"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Ejecutando script de usuario %s"
|
||||
@@ -1589,7 +1589,7 @@ msgstr "Más"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Error al post-procesar %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "ver fichero de log"
|
||||
|
||||
@@ -2753,6 +2753,12 @@ msgstr "Contraseña de SABnzbd"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Contraseña opcional"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3515,7 +3521,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Reintentos máximos"
|
||||
|
||||
@@ -3997,6 +4003,22 @@ msgstr "Dispositivo(s)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Dispositivo(s) a los que enviar el mensaje"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4144,6 +4166,10 @@ msgstr "1x05 Episodio Directorio"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Episodio Directorio"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
@@ -4213,8 +4239,8 @@ msgid "Original Filename"
|
||||
msgstr "Nombre fichero original"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Nombre directorio original"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4232,10 +4258,6 @@ msgstr "texto"
|
||||
msgid "file"
|
||||
msgstr "archivo"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "carpeta"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Ordenar cadena"
|
||||
@@ -4409,6 +4431,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"Esta ventana desaparecerá automáticamente una vez SABnzbd se haya reiniciado."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "AVISO:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Obtener"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Frecuencia de actualización"
|
||||
@@ -4578,6 +4608,12 @@ msgstr "Pausar durante..."
|
||||
msgid "Refresh"
|
||||
msgstr "Actualizar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Ordenar por Fecha <small>Más viejo→Más nuevo</small>"
|
||||
@@ -4726,10 +4762,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Bloquear actualizaciones al pasar por encima"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Obtener"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Subir"
|
||||
@@ -4951,16 +4983,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "¿No tienes proveedor de Usenet? Nosotros recomendamos probar %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Error al recuperar info de la serie (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Error al renombrar: %s a %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Error al renombrar ficheros similares: %s a %s"
|
||||
|
||||
@@ -5008,9 +5040,15 @@ msgstr "Error al recuperar la URL; %s"
|
||||
#~ msgid "Try again"
|
||||
#~ msgstr "Inténtelo de nuevo"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "Compromiso SQL ha fallado, vea el registro"
|
||||
|
||||
#~ msgid "WARNING: Paused job \"%s\" because of encrypted RAR file"
|
||||
#~ msgstr "NOTICIA: Transferencia \"%s\" pausado por archivo cifrado"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "Error CRC en %s (%s -> %s)"
|
||||
|
||||
#~ msgid "No UNRAR program found, unpacking RAR files is not possible<br />"
|
||||
#~ msgstr ""
|
||||
#~ "Programa Unrar no encontrado, descomprimir de archivos RAR no posible<br />"
|
||||
@@ -5057,6 +5095,9 @@ msgstr "Error al recuperar la URL; %s"
|
||||
#~ msgid "Missing expected file: %s => unrar error?"
|
||||
#~ msgstr "Falta el siguiente archivo: %s => ¿Error al descomprimir?"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Paquete principal no encontrado..."
|
||||
|
||||
#~ msgid "Invalid par2 files, cannot verify or repair"
|
||||
#~ msgstr "Ficheros par2 inválidos, no se puede verificar o reparar"
|
||||
|
||||
@@ -5250,6 +5291,9 @@ msgstr "Error al recuperar la URL; %s"
|
||||
#~ msgid "Email Options"
|
||||
#~ msgstr "Opciones de e-mail"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "carpeta"
|
||||
|
||||
#~ msgid "Are you sure you want to delete"
|
||||
#~ msgstr "¿Está seguro de querer borrar?"
|
||||
|
||||
@@ -5425,6 +5469,9 @@ msgstr "Error al recuperar la URL; %s"
|
||||
#~ msgid "Enable if downloads are not put in their own folders."
|
||||
#~ msgstr "Habilitar si las descargas no quedan en sus propios directorios."
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Nombre directorio original"
|
||||
|
||||
#~ msgid "Enable sorting and renaming of date named files."
|
||||
#~ msgstr "Habilitar ordenación y renombrado de nombres de ficheros con fechas."
|
||||
|
||||
|
||||
153
po/main/fi.po
153
po/main/fi.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:07+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Finnish <fi@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -229,15 +229,6 @@ msgstr "Testaa ilmoitusta"
|
||||
msgid " Resolving address"
|
||||
msgstr " Selvitetään osoitetta"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "VIRHE:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "VAROITUS:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ei mitään"
|
||||
@@ -407,10 +398,6 @@ msgstr ""
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL komento epäonnistui, katso loki"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL muutos epäonnistui, katso loki"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Tietokannan sulkeminen epäonnistui, katso loki"
|
||||
@@ -427,10 +414,6 @@ msgstr "Kohteen %s dekoodaus epäonnistui"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC virhe tiedostossa %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Huonosti muotoiltu yEnc artikkeli %s"
|
||||
@@ -580,6 +563,12 @@ msgstr "Sähköpostiyhteyden sulkeminen epäonnistui"
|
||||
msgid "Email succeeded"
|
||||
msgstr "Sähköpostitus onnistui"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Ei voida lähettää, vaaditut tiedot ovat puutteelliset"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Sähköpostipohjia ei löydy hakemistosta %s"
|
||||
@@ -672,7 +661,7 @@ msgstr ""
|
||||
"Authentikointi puuttuu, ole hyvä ja syötä käyttäjänimi/salasana Asetukset-"
|
||||
">Yleiset kolmannen osapuolen ohjelmaasi:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -746,10 +735,19 @@ msgstr "Määrittämätön palvelin!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Virheellinen parametri"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Takaisin"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "VIRHE:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -770,7 +768,7 @@ msgstr "t"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Ei voi luoda kansiota %s"
|
||||
|
||||
@@ -800,6 +798,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Käyttöoikeuksien muuttaminen epäonnistui kohteelle %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Ajetaan skripti"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -976,6 +978,7 @@ msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr ""
|
||||
"Par varmennus epäonnistui kohteessa %s, mutta Pikatarkistus onnistui!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1003,10 +1006,6 @@ msgstr "[%s] Varmennettiin ajassa %s, kaikki tiedostot kelvollisia"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Varmennetiin ajassa %s, vaatii korjauksen"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Pääpakettia ei löydy..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1049,6 +1048,10 @@ msgstr "Levy täynnä"
|
||||
msgid "Verifying"
|
||||
msgstr "Varmennetaan"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1112,11 +1115,6 @@ msgstr "Muut viestit"
|
||||
msgid "Not available"
|
||||
msgstr "Ei saatavilla"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Ei voida lähettää, vaaditut tiedot ovat puutteelliset"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Prowl viestin lähetys epäonnistui"
|
||||
@@ -1125,7 +1123,7 @@ msgstr "Prowl viestin lähetys epäonnistui"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Virheellinen vastaus Pushoverilta (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Pushover viestin lähetys epäonnistui"
|
||||
|
||||
@@ -1502,7 +1500,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Vakava virhe"
|
||||
|
||||
@@ -1524,6 +1522,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "Lataaminen saattaa epäonnistua, vain %s osaa %s osasta saatavilla"
|
||||
@@ -1552,10 +1556,6 @@ msgstr "Virhe uudelleennimettäessä \"%s\" nimelle \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Tiedostojen siirto epäonnistui"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Ajetaan skripti"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Ajetaan käyttäjän skripti %s"
|
||||
@@ -1576,7 +1576,7 @@ msgstr "Lisää"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Jälkikäsittely epäonnistui kohteelle %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "katso lokitiedosto"
|
||||
|
||||
@@ -2741,6 +2741,12 @@ msgstr "SABnzbd salasana"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Vaihtoehtoinen salasana todennukseen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3504,7 +3510,7 @@ msgstr "SSL-salaus"
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr "Lisää suorituskykyä pakottamalla alhaisempi SSL-suojaustaso."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Enimmäismäärä uudelleenyrityksille"
|
||||
|
||||
@@ -3982,6 +3988,22 @@ msgstr "Laitteet"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Laitteet joihin viesti lähetetään"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4134,6 +4156,10 @@ msgstr "1x05 Jakso kansio"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Jakso kansio"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Nimi"
|
||||
@@ -4203,8 +4229,8 @@ msgid "Original Filename"
|
||||
msgstr "Alkuperäinen tiedostonimi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Alkuperäinen kansionimi"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4222,10 +4248,6 @@ msgstr "teksti"
|
||||
msgid "file"
|
||||
msgstr "tiedosto"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "kansio"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Lajittelumerkkijono"
|
||||
@@ -4400,6 +4422,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"Mikäli SABnzbd käynnistetään uudelleen, tämä ruutu häviää automaattisesti!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "VAROITUS:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Nouda"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Päivitysväli"
|
||||
@@ -4569,6 +4599,12 @@ msgstr "Keskeytä ajaksi..."
|
||||
msgid "Refresh"
|
||||
msgstr "Päivitä"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Järjestä iän mukaan <small>Vanhin→Uusin</small>"
|
||||
@@ -4716,10 +4752,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Estä päivitykset kun hiiri on päällä"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Nouda"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Lähetä"
|
||||
@@ -4941,16 +4973,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Eikö sinulla ole usenet tarjoajaa? Suosittelemme kokeilemaan %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Virhe noudettaessa TV tietoja (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Virhe uudelleennimettäessä: %s %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Samankaltaisen tiedoston uudelleennimeäminen epäonnistui: %s %s"
|
||||
|
||||
@@ -4982,6 +5014,9 @@ msgstr "NZB tiedostoa ei voida käyttää"
|
||||
msgid "URL Fetching failed; %s"
|
||||
msgstr "Osoitteen nouto epäonnistui; %s"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC virhe tiedostossa %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Kansiota \"%s\" ei ole olemassa"
|
||||
|
||||
@@ -5095,6 +5130,12 @@ msgstr "Osoitteen nouto epäonnistui; %s"
|
||||
#~ msgid "Remain/Total"
|
||||
#~ msgstr "Jäljellä/Yhteensä"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL muutos epäonnistui, katso loki"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Pääpakettia ei löydy..."
|
||||
|
||||
#~ msgid "No UNRAR program found, unpacking RAR files is not possible<br />"
|
||||
#~ msgstr ""
|
||||
#~ "UNRAR ohjelmaa ei löydy, RAR-tiedostojen purkaminen ei ole mahdollista<br />"
|
||||
@@ -5360,6 +5401,12 @@ msgstr "Osoitteen nouto epäonnistui; %s"
|
||||
#~ msgstr ""
|
||||
#~ "Kansio jossa ovat käyttäjän skriptit joita käytetään jälkikäsittelyssä."
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Alkuperäinen kansionimi"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "kansio"
|
||||
|
||||
#~ msgid "Hour:Min"
|
||||
#~ msgstr "Tunti:Min"
|
||||
|
||||
|
||||
166
po/main/fr.po
166
po/main/fr.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"PO-Revision-Date: 2017-08-21 19:45+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-12-06 19:46+0000\n"
|
||||
"Last-Translator: Fred <88com88@gmail.com>\n"
|
||||
"Language-Team: French <fr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -38,7 +38,7 @@ msgstr ""
|
||||
msgid ""
|
||||
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
|
||||
msgstr ""
|
||||
"Module SABYenc... NON trouvé! v%s attendue - https://sabnzbd.org/sabyenc"
|
||||
"Module SABYenc... NON trouvé ! v%s attendue - https://sabnzbd.org/sabyenc"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "_yenc module... NOT found!"
|
||||
@@ -238,15 +238,6 @@ msgstr "Test de Notification"
|
||||
msgid " Resolving address"
|
||||
msgstr " Résolution de l'adresse"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ERREUR:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "AVERTISSEMENT :"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Aucun"
|
||||
@@ -428,10 +419,6 @@ msgstr ""
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "Echec de la commande SQL, voir le journal"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "Echec du commit SQL, voir le journal"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Impossible de fermer la base de données, voir le journal"
|
||||
@@ -448,10 +435,6 @@ msgstr "Échec du décodage de %s"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr "Échec du décodeur : mémoire insuffisante"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "Erreur CRC dans %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Article yEnc mal construit dans %s"
|
||||
@@ -607,6 +590,12 @@ msgstr "Échec de la fermeture de la connexion à la messagerie"
|
||||
msgid "Email succeeded"
|
||||
msgstr "L'envoi de l'e-mail a réussi"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Impossible d'envoyer, données requises manquantes"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Impossible de trouver les modèles d'email dans %s"
|
||||
@@ -701,7 +690,7 @@ msgstr ""
|
||||
"Authentification manquante, entrez vos identifiant/mot de passe de la "
|
||||
"configuration générale dans votre application tierce :"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -776,10 +765,21 @@ msgstr "Serveur non défini !"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Paramètre incorrect"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
"Le dossier de catégorie ne peut pas être un sous-dossier du dossier de "
|
||||
"téléchargement temporaire."
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Retour"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ERREUR:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -800,7 +800,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Impossible de créer le dossier %s"
|
||||
|
||||
@@ -833,6 +833,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Impossible de changer les permissions pour %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Exécution du script"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -1015,6 +1019,7 @@ msgstr ""
|
||||
"Echec de la vérification Par sur %s, mais QuickCheck (vérification rapide) "
|
||||
"réussi !"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1044,10 +1049,6 @@ msgstr "[%s] Vérifié dans %s, tous les fichiers sont corrects"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Vérifié dans %s, réparation nécessaire"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Paquet principal introuvable..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1091,6 +1092,10 @@ msgstr "Disque plein"
|
||||
msgid "Verifying"
|
||||
msgstr "Vérification en cours"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr "Vérification des fichiers supplémentaires"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1159,11 +1164,6 @@ msgstr "Autres messages"
|
||||
msgid "Not available"
|
||||
msgstr "Non disponible"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Impossible d'envoyer, données requises manquantes"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Echec d'envoi du message Prowl"
|
||||
@@ -1172,7 +1172,7 @@ msgstr "Echec d'envoi du message Prowl"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Mauvaise réponse de Pushover (%s) : %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Échec de l'envoi du message Pushover"
|
||||
|
||||
@@ -1555,7 +1555,7 @@ msgstr ""
|
||||
"Impossible de lier le port %s sur %s. Un autre logiciel utilise le port ou "
|
||||
"SABnzbd est déjà en cours d'exécution."
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Erreur fatale"
|
||||
|
||||
@@ -1580,6 +1580,14 @@ msgstr ""
|
||||
"Le système de fichiers du dossier de téléchargements terminés %s est au "
|
||||
"format FAT, limitant la taille maximale d'un fichier à 4 Go"
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
"Le module subprocessww est manquant. Attendez-vous à des problèmes avec les "
|
||||
"noms de fichiers et de répertoires Unicode dans les téléchargements."
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1610,10 +1618,6 @@ msgstr "Erreur lors du renommage de \"%s\" en \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Impossible de déplacer les fichiers"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Exécution du script"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Exécution du script utilisateur %s"
|
||||
@@ -1634,7 +1638,7 @@ msgstr "Plus"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Échec du post-traitement pour %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "voir le journal"
|
||||
|
||||
@@ -2808,6 +2812,14 @@ msgstr "Mot de passe SABnzbd"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Mot de passe pour l'authentification (facultatif)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
"Vos paramètres actuels permettent un accès externe complet à l'interface "
|
||||
"SABnzbd si l'hôte ou le port SABnzbd est ouvert vers l'internet."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr "Sécurité"
|
||||
@@ -3597,7 +3609,7 @@ msgstr "Chiffrements SSL"
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr "Augmenter les performances en forçant un cryptage SSL plus faible."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Nombre de tentatives maximum"
|
||||
|
||||
@@ -4086,6 +4098,23 @@ msgstr "Appareil(s)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Appareil(s) auxquels doivent être envoyés les messages"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr "Nouvelle tentative d'urgence"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr "À quelle fréquence la même notification sera envoyée (en secondes)"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr "Expiration d'urgence"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
"Tenter à nouveau votre notification pendant combien de temps (en secondes)"
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4241,6 +4270,10 @@ msgstr "1x05 Dossier Épisode"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Dossier Épisode"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr "Nom de la tâche en tant que nom de fichier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Titre"
|
||||
@@ -4310,8 +4343,8 @@ msgid "Original Filename"
|
||||
msgstr "Nom de fichier originel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Nom du dossier originel"
|
||||
msgid "Original Job Name"
|
||||
msgstr "Nom d'origine de la tâche"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4329,10 +4362,6 @@ msgstr "texte"
|
||||
msgid "file"
|
||||
msgstr "fichier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "dossier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Chaîne de caractères de tri"
|
||||
@@ -4506,6 +4535,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"En cas de redémarrage de SABnzbd cet écran disparaîtra automatiquement!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "AVERTISSEMENT :"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Charger"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Taux de rafraîchissement"
|
||||
@@ -4676,6 +4713,14 @@ msgstr "Mettre en pause pour…"
|
||||
msgid "Refresh"
|
||||
msgstr "Rafraîchir"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
"Tous les noms d'utilisateur, mots de passe et clés API sont automatiquement "
|
||||
"supprimés du journal et de la copie de vos réglages."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Trier par Age <small>Moins récent→Plus récent</small>"
|
||||
@@ -4824,10 +4869,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Bloquer rafraîchissements au survol"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Charger"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Envoyer"
|
||||
@@ -5052,16 +5093,16 @@ msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr ""
|
||||
"Vous n'avez pas de fournisseur usenet? Nous vous recommendons d'essayer %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Erreur lors de l'obtention des information TV (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Échec du renommage : %s en %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Impossible de renommer le fichier similaire : %s en %s"
|
||||
|
||||
@@ -5093,6 +5134,9 @@ msgstr "Fichier NZB inutilisable"
|
||||
msgid "URL Fetching failed; %s"
|
||||
msgstr "Échec de récupération de l'URL ; %s"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "Erreur CRC dans %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Error: No secondary interface defined."
|
||||
#~ msgstr "Erreur : Pas d'interface secondaire définie."
|
||||
|
||||
@@ -5393,6 +5437,9 @@ msgstr "Échec de récupération de l'URL ; %s"
|
||||
#~ msgid "Enable sorting and renaming of date named files."
|
||||
#~ msgstr "Active le tri et le renommage des fichiers par date."
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "dossier"
|
||||
|
||||
#~ msgid "Set Pause Interval"
|
||||
#~ msgstr "Intervalle de pause"
|
||||
|
||||
@@ -5451,6 +5498,9 @@ msgstr "Échec de récupération de l'URL ; %s"
|
||||
#~ msgid "Show files"
|
||||
#~ msgstr "Afficher les fichiers"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "Echec du commit SQL, voir le journal"
|
||||
|
||||
#~ msgid "Downloaded so far"
|
||||
#~ msgstr "Téléchargé jusqu'à présent"
|
||||
|
||||
@@ -5566,6 +5616,9 @@ msgstr "Échec de récupération de l'URL ; %s"
|
||||
#~ msgid "pyopenssl module missing, please install for https access"
|
||||
#~ msgstr "module pyopenssl manquant, veuillez l'installer pour l'accès HTTPS"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Paquet principal introuvable..."
|
||||
|
||||
#~ msgid ""
|
||||
#~ "\n"
|
||||
#~ " SABnzbd needs a free tcp/ip port for its internal web server.<br>\n"
|
||||
@@ -5652,6 +5705,9 @@ msgstr "Échec de récupération de l'URL ; %s"
|
||||
#~ msgid "Groups / Indexer tags"
|
||||
#~ msgstr "balises Groupes / Indexeur"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Nom du dossier originel"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "After SABnzbd has finished restarting you will be able to access it at the "
|
||||
#~ "following location: %s"
|
||||
|
||||
194
po/main/he.po
194
po/main/he.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"PO-Revision-Date: 2017-09-01 23:03+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-12-06 19:50+0000\n"
|
||||
"Last-Translator: ION IL <Unknown>\n"
|
||||
"Language-Team: Hebrew <he@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:30+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -222,15 +222,6 @@ msgstr "בחן התראה"
|
||||
msgid " Resolving address"
|
||||
msgstr " פותר כתובת"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "שגיאה:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "אזהרה:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "ללא"
|
||||
@@ -401,10 +392,6 @@ msgstr "מסד-נתונים היסטוריה פגום, נוצר תחליף רי
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "נכשלה, ראה יומן SQL פקודת"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "נכשל, ראה יומן SQL חיוב"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "נכשל בסגירת מסד-נתונים, ראה יומן"
|
||||
@@ -421,10 +408,6 @@ msgstr "נכשל %s פענוח"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr "כישלון מפענח: אין זיכרון"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "%s (%s -> %s)-ב CRC שגיאת"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "%s-נוצר באופן גרוע ב yEnc מאמר"
|
||||
@@ -453,7 +436,7 @@ msgstr "הושלם"
|
||||
|
||||
#: sabnzbd/directunpacker.py # sabnzbd/newsunpack.py
|
||||
msgid "Unpacked %s files/folders in %s"
|
||||
msgstr "%s-פורקו %s קבצים/תיקיות ב"
|
||||
msgstr "פורקו %s קבצים/תיקיות תוך %s"
|
||||
|
||||
#: sabnzbd/directunpacker.py [Warning message]
|
||||
msgid "Direct Unpack was automatically enabled."
|
||||
@@ -464,7 +447,7 @@ msgid ""
|
||||
"Jobs will start unpacking during the downloading to reduce post-processing "
|
||||
"time. Only works for jobs that do not need repair."
|
||||
msgstr ""
|
||||
".עבודות יתחילו להיפרק במהלך ההורדה כדי להפחית זמן לאחר-עיבוד. עובד רק עבור "
|
||||
".עבודות יתחילו להיפרק במהלך ההורדה כדי להפחית זמן בתר-עיבוד. עובד רק עבור "
|
||||
"עבודות שאינן צריכות תיקון"
|
||||
|
||||
#: sabnzbd/dirscanner.py # sabnzbd/dirscanner.py # sabnzbd/dirscanner.py
|
||||
@@ -575,6 +558,12 @@ msgstr "נכשל בסגירת חיבור דוא\"ל"
|
||||
msgid "Email succeeded"
|
||||
msgstr "דוא\"ל הצליח"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "לא ניתן לשלוח, נתונים דרושים חסרים"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "%s-לא ניתן למצוא תבניות דוא\"ל"
|
||||
@@ -665,7 +654,7 @@ msgstr ""
|
||||
":אימות חסר, אנא הכנס שם משתמש/סיסמה מתוך תצורה->כללי לתוך תכנית הצד השלישי "
|
||||
"שלך"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -738,10 +727,19 @@ msgstr "!שרת בלתי מוגדר"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "משתנה לא נכון"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ".תיקיית מדור אינה יכולה להיות תת-תיקייה של תיקיית ההורדות הזמניות"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "הקודם"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "שגיאה:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -762,7 +760,7 @@ msgstr "ש"
|
||||
msgid "m"
|
||||
msgstr "ד"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "%s לא יכול ליצור את הספרייה"
|
||||
|
||||
@@ -794,11 +792,15 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "%s לא יכול לשנות הרשאות של"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "מריץ תסריט"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "PostProcessing was aborted (%s)"
|
||||
msgstr "(%s) לאחר-עיבוד בוטל"
|
||||
msgstr "(%s) בתר-עיבוד בוטל"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP phase "script"] # sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py [Notification Script settings]
|
||||
@@ -969,6 +971,7 @@ msgstr "מתחיל תיקון"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "!בעוד שבדיקה זריזה הצליחה ,%s-נכשל ב Par וידוא"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -995,10 +998,6 @@ msgstr "כל הקבצים נכונים ,%s-[%s] וודאו ב"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "תיקון דרוש ,%s-[%s] וודאו ב"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "...חפיסה ראשית לא נמצאה"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1042,6 +1041,10 @@ msgstr "דיסק מלא"
|
||||
msgid "Verifying"
|
||||
msgstr "מוודא"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr "בודק קבצי תוספת"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1085,7 +1088,7 @@ msgstr "התווסף NZB"
|
||||
|
||||
#: sabnzbd/notifier.py
|
||||
msgid "Post-processing started"
|
||||
msgstr "לאחר-עיבוד התחיל"
|
||||
msgstr "בתר-עיבוד התחיל"
|
||||
|
||||
#: sabnzbd/notifier.py [Notification]
|
||||
msgid "Job finished"
|
||||
@@ -1107,11 +1110,6 @@ msgstr "הודעות אחרות"
|
||||
msgid "Not available"
|
||||
msgstr "לא זמין"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "לא ניתן לשלוח, נתונים דרושים חסרים"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Prowl נכשל בשליחת הודעת"
|
||||
@@ -1120,7 +1118,7 @@ msgstr "Prowl נכשל בשליחת הודעת"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Pushover (%s): %s-תגובה רעה מ"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "pushover נכשל בשליחת הודעת"
|
||||
|
||||
@@ -1492,7 +1490,7 @@ msgstr ""
|
||||
".כבר רץ SABnzbd איזשהי תוכנה אחרת משתמשת בפתחה או %s לא היה ניתן לקשר את "
|
||||
"פתחה %s על"
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "שגיאה חמורה"
|
||||
|
||||
@@ -1516,6 +1514,13 @@ msgstr ""
|
||||
"המגבילה גודל מרבי של קובץ אל 4 ג\"ב ,FAT היא במערכת קבצים %s תיקיית ההורדות "
|
||||
"השלמות"
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
".של קבצים וספריות בהורדות Unicode חסר. צפה לבעיות עם שמות subprocessww פירקן"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "הורדה עשויה להיכשל, רק %s מתוך %s דרושים זמינים"
|
||||
@@ -1526,7 +1531,7 @@ msgstr "הורדה נכשלה - לא בשרת(ים) שלך"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "No post-processing because of failed verification"
|
||||
msgstr "אין לאחר-עיבוד בגלל וידוא כושל"
|
||||
msgstr "אין בתר-עיבוד בגלל וידוא כושל"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Moving"
|
||||
@@ -1544,10 +1549,6 @@ msgstr "\"%s\" אל \"%s\" שגיאה בשינוי שם"
|
||||
msgid "Failed to move files"
|
||||
msgstr "נכשל בהעברת קבצים"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "מריץ תסריט"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "%s מריץ תסריט משתמש"
|
||||
@@ -1566,9 +1567,9 @@ msgstr "עוד"
|
||||
|
||||
#: sabnzbd/postproc.py [Error message]
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "%s (%s) לאחר-עיבוד נכשל עבור"
|
||||
msgstr "%s (%s) בתר-עיבוד נכשל עבור"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "ראה קובץ יומן"
|
||||
|
||||
@@ -1594,7 +1595,7 @@ msgstr "%s לא יכול ליצור תיקייה סופית"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Post-processing"
|
||||
msgstr "לאחר-עיבוד"
|
||||
msgstr "בתר-עיבוד"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "[%s] No par2 sets"
|
||||
@@ -1830,11 +1831,11 @@ msgstr "השהה הכל"
|
||||
|
||||
#: sabnzbd/skintext.py [#: Config->Scheduler]
|
||||
msgid "Pause post-processing"
|
||||
msgstr "השהה לאחר-עיבוד"
|
||||
msgstr "השהה בתר-עיבוד"
|
||||
|
||||
#: sabnzbd/skintext.py [#: Config->Scheduler]
|
||||
msgid "Resume post-processing"
|
||||
msgstr "המשך לאחר-עיבוד"
|
||||
msgstr "המשך בתר-עיבוד"
|
||||
|
||||
#: sabnzbd/skintext.py [#: Config->Scheduler]
|
||||
msgid "Read RSS feeds"
|
||||
@@ -2727,6 +2728,14 @@ msgstr "SABnzbd סיסמת"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "סיסמת אימות רשותית"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
".SABnzbd חשופים לאינטרנט, ההגדרות הנוכחיות שלך מאפשרות גישה חיצונית מלאה אל "
|
||||
"ממשק SABnzbd אם המארח או הפתחה של"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr "אבטחה"
|
||||
@@ -2960,7 +2969,7 @@ msgid ""
|
||||
"<em>NOTE:</em> Folders will be created automatically when Saving. You may "
|
||||
"use absolute paths to save outside of the default folders."
|
||||
msgstr ""
|
||||
"<em>הערה:</em> .תיקיות יווצרו באופן אוטומטי בעת שמירה. אתה יכול להשתמש "
|
||||
"<em>הערה:</em> תיקיות יווצרו באופן אוטומטי בעת שמירה. אתה יכול להשתמש "
|
||||
"בנתיבים מוחלטים כדי לשמור מחוץ לתיקיות ברירת המחדל"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3146,11 +3155,11 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Post-Process Only Verified Jobs"
|
||||
msgstr "בצע לאחר-עיבוד רק על עבודות שוודאו"
|
||||
msgstr "בצע בתר-עיבוד רק על עבודות שוודאו"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Only perform post-processing on jobs that passed all PAR2 checks."
|
||||
msgstr ".PAR2-בצע לאחר-עיבוד רק בעבודות שעברו את כל בדיקות ה"
|
||||
msgstr ".PAR2-בצע בתר-עיבוד רק בעבודות שעברו את כל בדיקות ה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3277,8 +3286,8 @@ msgid ""
|
||||
"Use temporary names during post processing. Disable when your system doesn't "
|
||||
"handle that properly."
|
||||
msgstr ""
|
||||
".השתמש בשמות זמניים במהלך לאחר-עיבוד. השבת כאשר המערכת שלך אינה מתמודדת עם "
|
||||
"זה כראוי"
|
||||
".השתמש בשמות זמניים במהלך בתר-עיבוד. השבת כאשר המערכת שלך אינה מתמודדת עם זה "
|
||||
"כראוי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Pre-queue user script"
|
||||
@@ -3370,12 +3379,12 @@ msgstr ".SABnzbd הפעל את דפדפן ברירת המחדל בעת התחל
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Pause Downloading During Post-Processing"
|
||||
msgstr "השהה הורדה במהלך לאחר-עיבוד"
|
||||
msgstr "השהה הורדה במהלך בתר-עיבוד"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Pauses downloading at the start of post processing and resumes when finished."
|
||||
msgstr ".משהה הורדה בתחילת לאחר-עיבוד וממשיך בסיום"
|
||||
msgstr ".משהה הורדה בתחילת בתר-עיבוד וממשיך בסיום"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Ignore Samples"
|
||||
@@ -3404,7 +3413,7 @@ msgstr "שרת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Post processing"
|
||||
msgstr "לאחר-עיבוד"
|
||||
msgstr "בתר-עיבוד"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Naming"
|
||||
@@ -3466,7 +3475,7 @@ msgstr "SSL צפני"
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ".חלש יותר SSL הגבר ביצועים ע\"י אילוץ חוזק הצפנת"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "ניסיונות חוזרים מרביים"
|
||||
|
||||
@@ -3944,6 +3953,22 @@ msgstr "התקן(ים)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "התקנים אליהם הודעה תישלח"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr "ניסיון חוזר חרום"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr "באיזו תדירות (בשניות) אותה ההתראה תישלח"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr "תפוגת חרום"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr "כמה שניות ההתראה שלך תמשיך להיות מנוסה שוב"
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4094,6 +4119,10 @@ msgstr "1x05 תיקיית פרק"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 תיקיית פרק"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr "שם עבודה בתור שם קובץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "כותר"
|
||||
@@ -4163,8 +4192,8 @@ msgid "Original Filename"
|
||||
msgstr "שם מקורי של קובץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "שם קובץ מקורי"
|
||||
msgid "Original Job Name"
|
||||
msgstr "שם עבודה מקורי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4182,10 +4211,6 @@ msgstr "text"
|
||||
msgid "file"
|
||||
msgstr "קובץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "תיקייה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "מיין מחרוזת"
|
||||
@@ -4357,6 +4382,14 @@ msgstr "..SABnzbd אבד חיבור אל"
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr "!המסך יעלם באופן אוטומטי SABnzbd במקרה של הפעלה מחדש של"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "אזהרה:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "משוך"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "קצב רענון"
|
||||
@@ -4525,6 +4558,14 @@ msgstr "...השהה למשך"
|
||||
msgid "Refresh"
|
||||
msgstr "רענן"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
".מוסרים באופן אוטומטי מהיומן ומהעותק הכלול של ההגדרות שלך API-כל שמות "
|
||||
"המשתמש, הסיסמאות ומפתחות ה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "מיין לפי גיל <small>החדש ביותר→הישן ביותר</small>"
|
||||
@@ -4671,10 +4712,6 @@ msgstr "זה ימנע רענון תוכן כשסמן העכבר שלך מרחף
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "חסום רענונים בריחוף"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "משוך"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "העלה"
|
||||
@@ -4893,16 +4930,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr ".%s אנו ממליצים לנסות את ?usenet אין לך ספק"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "(%s) שגיאה בהשגת מידע טלוויזיה"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "%s אל %s:נכשל בשינוי שם"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "%s אל %s :נכשל בשינוי שם של קובץ דומה"
|
||||
|
||||
@@ -4946,6 +4983,9 @@ msgstr "%s ;משיכת כתובת נכשלה"
|
||||
#~ msgid "Skip"
|
||||
#~ msgstr "דלג"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "תיקייה"
|
||||
|
||||
#~ msgid "OK"
|
||||
#~ msgstr "אישור"
|
||||
|
||||
@@ -4974,11 +5014,23 @@ msgstr "%s ;משיכת כתובת נכשלה"
|
||||
#~ "Replace illegal characters in folder names by equivalents (otherwise remove)."
|
||||
#~ msgstr ".(החלף תווים בלתי חוקיים בשמות תיקיות בשווי ערך (אחרת יימחקו"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "שם קובץ מקורי"
|
||||
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "אינה קיימת \"%s\" התיקייה"
|
||||
|
||||
#~ msgid "Invalid par2 files, cannot verify or repair"
|
||||
#~ msgstr "בלתי תקפים, לא יכול לוודא או לתקן par2 קבצי"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "%s (%s -> %s)-ב CRC שגיאת"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "...חפיסה ראשית לא נמצאה"
|
||||
|
||||
#~ msgid "It is likely that you are using ZoneAlarm on Vista.<br>"
|
||||
#~ msgstr ".Vista על ZoneAlarm-סביר להניח שאתה משתמש ב<br>"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "נכשל, ראה יומן SQL חיוב"
|
||||
|
||||
163
po/main/nb.po
163
po/main/nb.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"PO-Revision-Date: 2017-05-23 11:46+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-09-03 14:07+0000\n"
|
||||
"Last-Translator: Steffen Bærø <steffen.baro@gmail.com>\n"
|
||||
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -47,11 +47,11 @@ msgstr "par2-binærfil... IKKE funnet!"
|
||||
|
||||
#: SABnzbd.py [Error message] # SABnzbd.py [Error message]
|
||||
msgid "Verification and repair will not be possible."
|
||||
msgstr ""
|
||||
msgstr "Verifikasjon og reparasjon vil ikke være mulig."
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "MultiPar binary... NOT found!"
|
||||
msgstr ""
|
||||
msgstr "MultiPar-binærfil... IKKE funnet!"
|
||||
|
||||
#: SABnzbd.py [Warning message]
|
||||
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
|
||||
@@ -60,7 +60,7 @@ msgstr ""
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Downloads will not unpacked."
|
||||
msgstr ""
|
||||
msgstr "Nedlastinger vil ikke blir pakket ut."
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "unrar binary... NOT found"
|
||||
@@ -228,15 +228,6 @@ msgstr "Test varslingen"
|
||||
msgid " Resolving address"
|
||||
msgstr " Løs adresse"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEIL:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ADVARSEL:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
@@ -403,10 +394,6 @@ msgstr "Skadet historikkdatabase, opprettet ny database"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL-kommando mislyktes, se logg"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL Innsetting mislyktes, se logg"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Kunne ikke stenge databasen, se logg"
|
||||
@@ -423,10 +410,6 @@ msgstr "Dekoding av %s mislyktes"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC-feil i %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Feilaktigt utformet yEnc artikkel i %s"
|
||||
@@ -576,6 +559,12 @@ msgstr "Kunne ikke stenge e-post-tilkobling"
|
||||
msgid "Email succeeded"
|
||||
msgstr "E-post sendning lykkes"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kan ikke sendes, mangler nødvendig data"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Kan ikke finne e-post-maler i %s"
|
||||
@@ -668,7 +657,7 @@ msgstr ""
|
||||
"Autentisering mangler, angi brukernavn/passord fra Konfigurasjon->Generelt i "
|
||||
"ditt tredjepartsprogram:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -742,10 +731,19 @@ msgstr "Udefinert server!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Feil parameter"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Tilbake"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEIL:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -766,7 +764,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Kan ikke opprette mappe %s"
|
||||
|
||||
@@ -796,6 +794,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Kunne ikke endre rettigheter på %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Kjører skript"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -971,6 +973,7 @@ msgstr "Starter reparasjon"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Par verifisering feilet på %s, mens hurtigsjekk var vellykket!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -998,10 +1001,6 @@ msgstr "[%s] Verifiseing tok %s, alle filer er ok"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Verifisering tok %s, krever reparasjon"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Hovedarkiv mangler..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1045,6 +1044,10 @@ msgstr "Harddisken er full"
|
||||
msgid "Verifying"
|
||||
msgstr "Verifiserer"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1108,11 +1111,6 @@ msgstr "Andre meldinger"
|
||||
msgid "Not available"
|
||||
msgstr "Ikke tilgjengelig"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kan ikke sendes, mangler nødvendig data"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Klarte ikke å sende Prowl melding"
|
||||
@@ -1121,7 +1119,7 @@ msgstr "Klarte ikke å sende Prowl melding"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Ukorrekt svar fra Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Klarte ikke å sende pushover-melding"
|
||||
|
||||
@@ -1494,7 +1492,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Kritisk feil"
|
||||
|
||||
@@ -1516,6 +1514,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "Nedlasting kan feile, kun %s av kravet på %s tilgjengelig"
|
||||
@@ -1544,10 +1548,6 @@ msgstr "Kunne ikke endre navn fra \"%s\" til \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Klarte ikke å flytte filer"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Kjører skript"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Kjør brukerskript %s"
|
||||
@@ -1568,7 +1568,7 @@ msgstr "Mer"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Etterbehandling mislyktes for %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "se loggfil"
|
||||
|
||||
@@ -2727,6 +2727,12 @@ msgstr "SABnzbd Passord"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Kan velge autentiserings passord."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3468,7 +3474,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Maksimum antall forsøk"
|
||||
|
||||
@@ -3942,6 +3948,22 @@ msgstr "Enhet(er)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Enhet(er) som meldingen skal sendes til"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4090,6 +4112,10 @@ msgstr "1x05 Episodemappe"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Episodemappe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Tittel"
|
||||
@@ -4159,8 +4185,8 @@ msgid "Original Filename"
|
||||
msgstr "Originalfilnavn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Originalt mappenavn"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4178,10 +4204,6 @@ msgstr "tekst"
|
||||
msgid "file"
|
||||
msgstr "fil"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "mappe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Sorteringsstreng"
|
||||
@@ -4355,6 +4377,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"Hvis SABnzbd skulle starte på nytt vil denne skjermen forsvinne automatisk!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ADVARSEL:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Hent"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Oppdateringsfrekvens"
|
||||
@@ -4521,6 +4551,12 @@ msgstr "Pause i..."
|
||||
msgid "Refresh"
|
||||
msgstr "Oppdatere"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sorter etter alder <small>Eldst→Ny</small>"
|
||||
@@ -4667,10 +4703,6 @@ msgstr "Dette vil hindre oppfrisking av innhold når muspekeren er over køen"
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Blokker oppfrisking når musen svever over"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Hent"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Last Opp"
|
||||
@@ -4893,16 +4925,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Har du ikke noen usenet leverandør? Vi anbefaler å prøve %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Kunne ikke hente TV info (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Kunne ikke endre navn fra: %s til %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Kunne ikke endre navn på lik fil: %s til %s"
|
||||
|
||||
@@ -4937,6 +4969,9 @@ msgstr "URL henting mislyktes; %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Mappen \"%s\" finnes ikke"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL Innsetting mislyktes, se logg"
|
||||
|
||||
#~ msgid "No UNRAR program found, unpacking RAR files is not possible<br />"
|
||||
#~ msgstr "Kunne ikke finne noen UNRAR program, utpakking er ikke mulig<br />"
|
||||
|
||||
@@ -4982,6 +5017,9 @@ msgstr "URL henting mislyktes; %s"
|
||||
#~ msgid "Unpacking failed, an expected file was not unpacked"
|
||||
#~ msgstr "Utpakking mislyktes, en forventet fil er ikke utpakket"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Hovedarkiv mangler..."
|
||||
|
||||
#~ msgid "Error importing OpenSSL module. Connecting with NON-SSL"
|
||||
#~ msgstr "Mislyktes med importering av OpenSSL modul. Kobler til uten SSL"
|
||||
|
||||
@@ -5313,6 +5351,9 @@ msgstr "URL henting mislyktes; %s"
|
||||
#~ msgid "WARNING: Paused job \"%s\" because of encrypted RAR file"
|
||||
#~ msgstr "ADVARSEL: Jobb \"%s\" satt på pause pga. kryptert RAR-fil"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC-feil i %s (%s -> %s)"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Your UNRAR version is not recommended, get it from "
|
||||
#~ "http://www.rarlab.com/rar_add.htm<br />"
|
||||
@@ -5408,6 +5449,9 @@ msgstr "URL henting mislyktes; %s"
|
||||
#~ msgid "Open Source URL"
|
||||
#~ msgstr "Åpen kildekode URL"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Originalt mappenavn"
|
||||
|
||||
#~ msgid "Groups / Indexer tags"
|
||||
#~ msgstr "Grupper / Indeks etiketter"
|
||||
|
||||
@@ -5473,3 +5517,6 @@ msgstr "URL henting mislyktes; %s"
|
||||
#~ msgstr ""
|
||||
#~ "Send automatisk beregnet valideringsresultater for nedlastinger til "
|
||||
#~ "indekserer."
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "mappe"
|
||||
|
||||
170
po/main/nl.po
170
po/main/nl.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"PO-Revision-Date: 2017-09-01 09:37+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-12-08 10:47+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Dutch <nl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-09 05:32+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -233,15 +233,6 @@ msgstr "Test melding"
|
||||
msgid " Resolving address"
|
||||
msgstr " Adres opzoeken"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FOUT:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "WAARSCHUWING:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Geen"
|
||||
@@ -421,10 +412,6 @@ msgstr ""
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL-commando mislukt, zie logbestand"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL-opslagopdracht mislukt, zie logbestand"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Het lukt niet om de database te sluiten, zie log"
|
||||
@@ -441,10 +428,6 @@ msgstr "Decoderen van %s mislukt"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr "Decoder fout: onvoldoende geheugen"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC-fout in %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Slecht opgemaakt yEnc-artikel in %s"
|
||||
@@ -598,6 +581,12 @@ msgstr "Beëindigen e-mailverbinding mislukt"
|
||||
msgid "Email succeeded"
|
||||
msgstr "E-mail verzonden"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Versturen kan niet, vereiste gegevens ontbreken"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Geen e-mailsjablonen te vinden in %s"
|
||||
@@ -690,7 +679,7 @@ msgstr ""
|
||||
"Autenticatie ontbreekt; vul gebruikersnaam en wachtwoord van 'Configuratie' "
|
||||
"=> 'Algemeen' in bij het externe programma:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -765,10 +754,21 @@ msgstr "Onbekende server."
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Incorrecte parameter"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
"Een Categorie specifieke map mag niet een map in de Tijdelijke download map "
|
||||
"zijn."
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Terug"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FOUT:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -789,7 +789,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Niet mogelijk directory %s aan te maken"
|
||||
|
||||
@@ -822,6 +822,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Toegangsrechten van %s niet aan te passen"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Script uitvoeren"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -997,6 +1001,7 @@ msgstr "Reparatie starten"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Par-verificatie van %s misgelukt, maar QuickCheck wel gelukt."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1024,10 +1029,6 @@ msgstr "[%s] %s geverifieerd, alle bestanden zijn goed"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Geverifieerd in %s, reparatie is nodig"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Hoofdpakket niet gevonden..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1037,7 +1038,7 @@ msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Fetching %s blocks..."
|
||||
msgstr "Ophalen van %s blokken..."
|
||||
msgstr "%s herstelblokken downloaden..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Fetching"
|
||||
@@ -1054,7 +1055,7 @@ msgstr "Repareren"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "[%s] Repaired in %s"
|
||||
msgstr "[%s] Reparatie in %s"
|
||||
msgstr "[%s] Gerepareerd in %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py
|
||||
@@ -1072,6 +1073,10 @@ msgstr "Schijf is vol"
|
||||
msgid "Verifying"
|
||||
msgstr "Verifiëren"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr "Controleren van extra bestanden"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1138,11 +1143,6 @@ msgstr "Andere berichten"
|
||||
msgid "Not available"
|
||||
msgstr "Niet beschikbaar"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Versturen kan niet, vereiste gegevens ontbreken"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Verzenden van Prowl-bericht mislukt"
|
||||
@@ -1151,7 +1151,7 @@ msgstr "Verzenden van Prowl-bericht mislukt"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Slecht antwoord van Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Pushover-bericht sturen mislukt"
|
||||
|
||||
@@ -1526,7 +1526,7 @@ msgstr ""
|
||||
"Kan niet binden aan poort %s van %s. Andere software gebruikt deze poort of "
|
||||
"SABnzbd is al actief."
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Fatale fout"
|
||||
|
||||
@@ -1550,6 +1550,14 @@ msgstr ""
|
||||
"De map voor voltooide downloads %s staat op een FAT systeem, de maximale "
|
||||
"file omvang is dan maar 4G"
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
"De module subprocessww ontbreekt. Je kunt problemen krijgen met Unicode "
|
||||
"namen van bestanden en mappen."
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1579,10 +1587,6 @@ msgstr "Fout bij hernoemen van \"%s\" tot \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Verplaatsen van bestanden mislukt"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Script uitvoeren"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Gebruiker script %s loopt"
|
||||
@@ -1603,7 +1607,7 @@ msgstr "Meer"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Nabewerking van %s mislukt (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "zie logbestand"
|
||||
|
||||
@@ -1815,7 +1819,7 @@ msgstr "Script uitvoeren..."
|
||||
|
||||
#: sabnzbd/skintext.py [PP status]
|
||||
msgid "Fetching extra blocks..."
|
||||
msgstr "Extra blokken ophalen..."
|
||||
msgstr "Extra herstelblokken downloaden..."
|
||||
|
||||
#: sabnzbd/skintext.py [PP status]
|
||||
msgid "Quick Check..."
|
||||
@@ -2772,6 +2776,15 @@ msgstr "Wachtwoord"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Wachtwoord voor web login."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
"Als de Host of Poort open is gesteld naar het internet zorgen de huidige "
|
||||
"instellingen ervoor dat de webinterface volledig beschikbaar is voor "
|
||||
"externen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr "Beveiliging"
|
||||
@@ -3542,7 +3555,7 @@ msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
"Verhoog de prestaties door een eenvoudigere SSL versleuteling toe te passen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Maximum aantal pogingen"
|
||||
|
||||
@@ -4032,6 +4045,22 @@ msgstr "Apparaten"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Apparaat of apparaten die het bericht moeten ontvangen"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr "Noodgeval herhaling"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr "Hoevaak moet de notification herhaald worden (in seconden)"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr "Einde van noodgeval"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr "Hoeveel seconden moet de notificatie herhaald worden"
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4185,6 +4214,10 @@ msgstr "1x05 Aflevering-map"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Aflevering-map"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr "Downloadnaam als Bestandsnaam"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
@@ -4254,8 +4287,8 @@ msgid "Original Filename"
|
||||
msgstr "Originele bestandsnaam"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Oorspronkelijke mapnaam"
|
||||
msgid "Original Job Name"
|
||||
msgstr "Originele Downloadnaam"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4273,10 +4306,6 @@ msgstr "tekst"
|
||||
msgid "file"
|
||||
msgstr "bestand"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "map"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Sorteertekst"
|
||||
@@ -4449,6 +4478,14 @@ msgstr "Verbinding met SABnzbd verbroken"
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr "Wanneer SABnzbd opnieuw is gestart, gaat dit venster vanzelf weg!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "WAARSCHUWING:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Ophalen"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Ververssnelheid"
|
||||
@@ -4617,6 +4654,14 @@ msgstr "Pauzeer..."
|
||||
msgid "Refresh"
|
||||
msgstr "Ververs"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
"Alle gebruikersnamen, wachtwoorden en API-sleutels worden automatisch "
|
||||
"verwijderd uit het logbestand en de bijgevoegde kopie van je instellingen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sorteer op Leeftijd <small>Oud→Nieuw</small>"
|
||||
@@ -4764,10 +4809,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Geen verversing bij popups"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Ophalen"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Ophalen"
|
||||
@@ -4988,16 +5029,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Heb je nog geen Usenet provider? Wij bevelen %s aan."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Fout bij ophalen TV info (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Hernoemen van %s tot %s mislukt"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Hernoemen van gelijkaardig bestand %s naar %s mislukt"
|
||||
|
||||
@@ -5075,6 +5116,9 @@ msgstr "URL ophalen mislukt; %s"
|
||||
#~ msgid "pyopenssl module missing, please install for https access"
|
||||
#~ msgstr "Module \"pyopenssl\" ontbreekt, geen HTTPS mogelijk"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Hoofdpakket niet gevonden..."
|
||||
|
||||
#~ msgid "Failed to remove nzo from postproc queue (id)"
|
||||
#~ msgstr "Verwijderen van nzo van nabewerkingswachtrij mislukt"
|
||||
|
||||
@@ -5397,6 +5441,12 @@ msgstr "URL ophalen mislukt; %s"
|
||||
#~ msgid "OK"
|
||||
#~ msgstr "OK"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "map"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Oorspronkelijke mapnaam"
|
||||
|
||||
#~ msgid "Groups / Indexer tags"
|
||||
#~ msgstr "Groepen / Indexer markeringen"
|
||||
|
||||
@@ -5559,6 +5609,12 @@ msgstr "URL ophalen mislukt; %s"
|
||||
#~ msgstr ""
|
||||
#~ "WAARSCHUWING: Taak '%s' is afgebroken vanwege een versleuteld RAR-bestand"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC-fout in %s (%s -> %s)"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL-opslagopdracht mislukt, zie logbestand"
|
||||
|
||||
#~ msgid "No UNRAR program found, unpacking RAR files is not possible<br />"
|
||||
#~ msgstr ""
|
||||
#~ "Geen UNRAR-programma gevonden, uitpakken van RAR-bestanden niet mogelijk<br "
|
||||
|
||||
153
po/main/pl.po
153
po/main/pl.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2015-12-28 10:22+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Polish <pl@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -226,15 +226,6 @@ msgstr "Powiadomienie testowe"
|
||||
msgid " Resolving address"
|
||||
msgstr " Rozwiązywanie adresu"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "BŁĄD:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "UWAGA:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Brak"
|
||||
@@ -403,10 +394,6 @@ msgstr "Uszkodzona baza danych historii, utworzono w jej miejscu nową, pustą"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "Błąd polecenia SQL, sprawdź logi"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "Błąd wykonania polecenia SQL, sprawdź logi"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Błąd zamykania bazy danych, sprawdź logi"
|
||||
@@ -423,10 +410,6 @@ msgstr "Błąd dekodowania %s"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "Błąd CRC w %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Źle zbudowany artykuł yEnc w %s"
|
||||
@@ -578,6 +561,12 @@ msgstr "Nie udało się zamknąć połączenia z serwerem pocztowym"
|
||||
msgid "Email succeeded"
|
||||
msgstr "Wiadomość wysłana"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nie można wysłać wiadomości, brak wymaganych danych"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Brak szablonów wiadomości email w %s"
|
||||
@@ -670,7 +659,7 @@ msgstr ""
|
||||
"Brak danych uwierzytelniających, wprowadź nazwę użytkownika/hasło z sekcji "
|
||||
"Konfiguracja->Ogólne do zewnętrznego programu:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -745,10 +734,19 @@ msgstr "Niezdefiniowany serwer!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Błędny parametr"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Powrót"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "BŁĄD:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -769,7 +767,7 @@ msgstr "g"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Nie można utworzyć katalogu %s"
|
||||
|
||||
@@ -799,6 +797,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Nie można zmienić uprawnień %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Uruchamianie skryptu"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -974,6 +976,7 @@ msgstr "Rozpoczynanie naprawy"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Weryfikacja %s nieudana, choć szybkie sprawdzenie powiodło się!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1002,10 +1005,6 @@ msgstr "[%s] Zweryfikowano w %s, wszystkie pliki prawidłowe"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Zweryfikowano w %s, wymagana naprawa"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Główny pakiet nieznaleziony..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1050,6 +1049,10 @@ msgstr "Dysk pełny"
|
||||
msgid "Verifying"
|
||||
msgstr "Weryfikowanie"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1113,11 +1116,6 @@ msgstr "Inne komunikaty"
|
||||
msgid "Not available"
|
||||
msgstr "Niedostępne"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nie można wysłać wiadomości, brak wymaganych danych"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Błąd wysyłania wiadomości Prowl"
|
||||
@@ -1126,7 +1124,7 @@ msgstr "Błąd wysyłania wiadomości Prowl"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Zła odpowiedź od Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Nie udało się wysłać wiadomości Pushover"
|
||||
|
||||
@@ -1500,7 +1498,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Błąd krytyczny"
|
||||
|
||||
@@ -1523,6 +1521,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "Pobieranie może się nie udać, dostępne jedynie %s z wymaganych %s"
|
||||
@@ -1552,10 +1556,6 @@ msgstr "Błąd zmiany nazwy \"%s\" na \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Nie udało się przenieść plików"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Uruchamianie skryptu"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Uruchamianie skryptu użytkownika %s"
|
||||
@@ -1576,7 +1576,7 @@ msgstr "Więcej"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Przetwarzanie końcowe nie powiodło się dla %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "sprawdź logi"
|
||||
|
||||
@@ -2733,6 +2733,12 @@ msgstr "Hasło SABnzbd"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Opcjonalne hasło"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3485,7 +3491,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Maksymalna ilość prób"
|
||||
|
||||
@@ -3960,6 +3966,22 @@ msgstr "Urządzenie(-a)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Urządzenie(-a), do którego(-ych) mają być wysyłane powiadomienia"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4108,6 +4130,10 @@ msgstr "Katalog odcinka 1x05"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "Katalog odcinka S01E05"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Tytuł"
|
||||
@@ -4177,8 +4203,8 @@ msgid "Original Filename"
|
||||
msgstr "Oryginalna nazwa pliku"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Oryginalna nazwa katalogu"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4196,10 +4222,6 @@ msgstr "tekst"
|
||||
msgid "file"
|
||||
msgstr "plik"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "katalog"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Wzorzec sortowania"
|
||||
@@ -4373,6 +4395,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"W razie ponownego uruchomienia SABnzbd ten ekran zniknie automatycznie!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "UWAGA:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Pobierz"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Częstotliwość odświeżania"
|
||||
@@ -4539,6 +4569,12 @@ msgstr "Wstrzymaj na..."
|
||||
msgid "Refresh"
|
||||
msgstr "Odśwież"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortuj według wieku <small>Najstarsze→Najnowsze</small>"
|
||||
@@ -4685,10 +4721,6 @@ msgstr "Blokuje odświeżanie zawartości po najechaniu kursorem na kolejkę"
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Zablokuj odświeżanie podczas wskazywania"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Pobierz"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Wczytaj"
|
||||
@@ -4909,16 +4941,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Nie masz dostawcy Usenet? Polecamy spróbować %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Błąd pobierania informacji TV (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Nie udało się zmienić nazwy %s na %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Nie udało się zmienić nazwy podobnego pliku %s na %s"
|
||||
|
||||
@@ -4950,6 +4982,9 @@ msgstr "Bezużyteczny plik NZB"
|
||||
msgid "URL Fetching failed; %s"
|
||||
msgstr "Pobieranie URL nie powiodło się; %s"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "Błąd CRC w %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Folder \"%s\" nie istnieje"
|
||||
|
||||
@@ -4966,6 +5001,9 @@ msgstr "Pobieranie URL nie powiodło się; %s"
|
||||
#~ msgid "Downloaded so far"
|
||||
#~ msgstr "Dotychczas pobrano"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "Błąd wykonania polecenia SQL, sprawdź logi"
|
||||
|
||||
#~ msgid "Not matched"
|
||||
#~ msgstr "Nie dopasowano"
|
||||
|
||||
@@ -5165,6 +5203,12 @@ msgstr "Pobieranie URL nie powiodło się; %s"
|
||||
#~ msgid "Generic Sorting"
|
||||
#~ msgstr "Sortowanie standardowe"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "katalog"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Oryginalna nazwa katalogu"
|
||||
|
||||
#~ msgid "Are you sure you want to delete"
|
||||
#~ msgstr "Czy na pewno usunąć?"
|
||||
|
||||
@@ -5245,6 +5289,9 @@ msgstr "Pobieranie URL nie powiodło się; %s"
|
||||
#~ msgid "Missing expected file: %s => unrar error?"
|
||||
#~ msgstr "Brak oczekiwanego pliku: %s => błąd rozpakowywania archiwum RAR?"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Główny pakiet nieznaleziony..."
|
||||
|
||||
#~ msgid "Error importing OpenSSL module. Connecting with NON-SSL"
|
||||
#~ msgstr "Błąd importu modułu OpenSSL. Łączenie bez SSL"
|
||||
|
||||
|
||||
153
po/main/pt_BR.po
153
po/main/pt_BR.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2016-01-01 22:58+0000\n"
|
||||
"Last-Translator: lrrosa <Unknown>\n"
|
||||
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -226,15 +226,6 @@ msgstr "Notificação de teste"
|
||||
msgid " Resolving address"
|
||||
msgstr " Resolvendo endereço"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ERRO:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "AVISO:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Nenhum"
|
||||
@@ -405,10 +396,6 @@ msgstr "Dados de histórico danificados, criado um substituto vazio"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "O comando SQL falhou. Consulte o log"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "O commit do SQL falhou. Consulte o log"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Falha ao fechar o banco de dados. Consulte o log"
|
||||
@@ -425,10 +412,6 @@ msgstr "Falha ao decodificar %s"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "Erro de CRC em %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Artigo yEnc mal formado em %s"
|
||||
@@ -579,6 +562,12 @@ msgstr "Falha ao fechar a conexão de e-mail"
|
||||
msgid "Email succeeded"
|
||||
msgstr "E-mail enviado com sucesso"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Não foi possível enviar, faltam dados obrigatórios"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Não é possível encontrar modelos de e-mail em %s"
|
||||
@@ -671,7 +660,7 @@ msgstr ""
|
||||
"Autenticação faltando. Por favor insira usuário/senha de Configuração->Geral "
|
||||
"em seu programa de terceiros:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -745,10 +734,19 @@ msgstr "Servidor não definido!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Parâmetro incorreto"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Voltar"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ERRO:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -769,7 +767,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Não é possível criar a pasta %s"
|
||||
|
||||
@@ -799,6 +797,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Não é possível alterar permissões de %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Executando script"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -974,6 +976,7 @@ msgstr "Iniciando reparação"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Validação de par falhou em %s, enquanto QuickCheck foi completo!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1001,10 +1004,6 @@ msgstr "[%s] Verificado em %s. Todos os arquivos corretos"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Verificado em %s. É necessário reparar"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Pacote principal não encontrado..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1047,6 +1046,10 @@ msgstr "Disco cheio"
|
||||
msgid "Verifying"
|
||||
msgstr "Verificando"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1110,11 +1113,6 @@ msgstr "Outras Mensagens"
|
||||
msgid "Not available"
|
||||
msgstr "Não disponível"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Não foi possível enviar, faltam dados obrigatórios"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Falha ao enviar mensagem Prowl"
|
||||
@@ -1123,7 +1121,7 @@ msgstr "Falha ao enviar mensagem Prowl"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Resposta incorreta do Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Falha ao enviar mensagem pushover"
|
||||
|
||||
@@ -1499,7 +1497,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Erro fatal"
|
||||
|
||||
@@ -1521,6 +1519,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1550,10 +1554,6 @@ msgstr "Erro ao renomear \"%s\" para \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Falha ao mover arquivos"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Executando script"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Executando script de usuário %s"
|
||||
@@ -1574,7 +1574,7 @@ msgstr "Mais"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "O pós-processamento falhou para %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "veja o arquivo de log"
|
||||
|
||||
@@ -2733,6 +2733,12 @@ msgstr "Senha do SABnzbd"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Senha de autenticação opcional."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3482,7 +3488,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Máximo de tentativas"
|
||||
|
||||
@@ -3958,6 +3964,22 @@ msgstr "Dispositivo(s)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Dispositivo(s) para qual a mensagem deve ser enviada"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4106,6 +4128,10 @@ msgstr "1x05 Pasta Do Episódio"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Pasta Do Episódio"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Título"
|
||||
@@ -4175,8 +4201,8 @@ msgid "Original Filename"
|
||||
msgstr "Nome do arquivo original"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Nome da pasta original"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4194,10 +4220,6 @@ msgstr "texto"
|
||||
msgid "file"
|
||||
msgstr "arquivo"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "pasta"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "String de ordenação"
|
||||
@@ -4371,6 +4393,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"No caso de reinício do SABnzbd, esta janela irá desaparecer automaticamente!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "AVISO:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Obter"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Taxa de atualização"
|
||||
@@ -4537,6 +4567,12 @@ msgstr "Pausar por..."
|
||||
msgid "Refresh"
|
||||
msgstr "Atualizar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Ordenar por Idade <small>Mais antigo→Mais novo</small>"
|
||||
@@ -4685,10 +4721,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Impedir Atualizações no Foco"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Obter"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Enviar"
|
||||
@@ -4910,16 +4942,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Não tem um provedor usenet? Recomendamos testar %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Erro ao obter informações de TV (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Falha ao renomear: %s para %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Falha ao renomear arquivo similar: %s para %s"
|
||||
|
||||
@@ -4955,9 +4987,15 @@ msgstr "A busca da URL falhou; %s"
|
||||
#~ msgstr ""
|
||||
#~ "ATENÇÃO: Tarefa \"%s\" em pausa por causa de arquivo RAR criptografado"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "Erro de CRC em %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "A pasta \"%s\" não existe"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "O commit do SQL falhou. Consulte o log"
|
||||
|
||||
#~ msgid ""
|
||||
#~ "Your UNRAR version is not recommended, get it from "
|
||||
#~ "http://www.rarlab.com/rar_add.htm<br />"
|
||||
@@ -5010,6 +5048,9 @@ msgstr "A busca da URL falhou; %s"
|
||||
#~ msgid "Missing expected file: %s => unrar error?"
|
||||
#~ msgstr "Faltando arquivo esperado: %s => erro no unrar?"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Pacote principal não encontrado..."
|
||||
|
||||
#~ msgid "Invalid par2 files, cannot verify or repair"
|
||||
#~ msgstr "Arquivos PAR2 inválidos. Não é possível verificar ou reparar"
|
||||
|
||||
@@ -5333,6 +5374,12 @@ msgstr "A busca da URL falhou; %s"
|
||||
#~ msgid "Generic Sorting"
|
||||
#~ msgstr "Ordenação genérica"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Nome da pasta original"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "pasta"
|
||||
|
||||
#~ msgid "Enable sorting and renaming of episodes."
|
||||
#~ msgstr "Ativa a ordenação e renomeação de episódios."
|
||||
|
||||
|
||||
153
po/main/ro.po
153
po/main/ro.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2016-07-29 16:20+0000\n"
|
||||
"Last-Translator: nicusor <Unknown>\n"
|
||||
"Language-Team: Romanian <ro@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -229,15 +229,6 @@ msgstr "Notificări Test"
|
||||
msgid " Resolving address"
|
||||
msgstr " Reolvare adresă"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "EROARE:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ATENŢIE:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Niciunul"
|
||||
@@ -407,10 +398,6 @@ msgstr "Bază de date Istoric coruptă, creat un nou fişier gol"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "Comandă SQL Nereuşită, vedeţi jurnal"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "Modificare SQL Nereuşită, vedeţi jurnal"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Închidere bază de date nereuşită, vedeţi jurnal"
|
||||
@@ -427,10 +414,6 @@ msgstr "Decodarea %s nereuşită"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "Eroare CRC în %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Articoul yEnc invalid în %s"
|
||||
@@ -581,6 +564,12 @@ msgstr "Închidere conexiune mail nereuşită"
|
||||
msgid "Email succeeded"
|
||||
msgstr "Email reuşit"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nu pot trimite, informații necesare lipsă"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Nu pot gasi şabloane email în %s"
|
||||
@@ -673,7 +662,7 @@ msgstr ""
|
||||
"Autentificare lipsă, vă rugăm să introduceţi numele de utilizator/parola de "
|
||||
"la Configurare->General în programul dumneavoastră terţ:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -748,10 +737,19 @@ msgstr "Server nedefinit!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Parametru Incorect"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Înapoi"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "EROARE:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -772,7 +770,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Nu pot crea dosarul %s"
|
||||
|
||||
@@ -802,6 +800,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Nu pot schimba permisiunile lui %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Rulare script"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -977,6 +979,7 @@ msgstr "Pornire Reparare"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Verificarea Par eșuată pentru %s, dar VerificareaRapidă reușită!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -1005,10 +1008,6 @@ msgstr "[%s] Verificat în %s, toate fişierele sunt corecte"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Verificat în %s, reparare necesară"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Pachet principal negăsit..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1051,6 +1050,10 @@ msgstr "Disc plin"
|
||||
msgid "Verifying"
|
||||
msgstr "Se verifică"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1114,11 +1117,6 @@ msgstr "Alte Mesaje"
|
||||
msgid "Not available"
|
||||
msgstr "Indisponibil"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nu pot trimite, informații necesare lipsă"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Nu am putu trimite mesajul Prowl"
|
||||
@@ -1127,7 +1125,7 @@ msgstr "Nu am putu trimite mesajul Prowl"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Răspuns greșit de la Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Nu am putut trimite mesajul de pushover"
|
||||
|
||||
@@ -1506,7 +1504,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Eroare fatală"
|
||||
|
||||
@@ -1528,6 +1526,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "Descărcarea ar putea eşua, doar %s din %s disponibil"
|
||||
@@ -1556,10 +1560,6 @@ msgstr "Eroare redenumire \"%s\" în \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Nu am putu muta fişier"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Rulare script"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Rulare script utilizator %s"
|
||||
@@ -1580,7 +1580,7 @@ msgstr "Mai mult"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Post Procesare Nereuşită pentru %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "vezi fişier jurnal"
|
||||
|
||||
@@ -2740,6 +2740,12 @@ msgstr "Parolă SABnzbd"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Parolă autentificare opţională"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3484,7 +3490,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Număr Maxim reîncercări"
|
||||
|
||||
@@ -3963,6 +3969,22 @@ msgstr "Dispozitiv(e)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Dispozitiv(e) la care să se trimită mesajul"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4110,6 +4132,10 @@ msgstr "1x05 Dosar Episod"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Dosar Episod"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Titlu"
|
||||
@@ -4179,8 +4205,8 @@ msgid "Original Filename"
|
||||
msgstr "Nume de Fişier Original"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Nume de Dosar Original"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4198,10 +4224,6 @@ msgstr "text"
|
||||
msgid "file"
|
||||
msgstr "fișier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "dosar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Şir Caractere Sortare"
|
||||
@@ -4374,6 +4396,14 @@ msgstr "Am pierdut conexiunea cu SABnzbd.."
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr "În cazul repornirii SABnzbd acest ecran va dispărea în mod automat!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ATENŢIE:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Descarcă"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Rată actualizare"
|
||||
@@ -4542,6 +4572,12 @@ msgstr "Pauză timp de..."
|
||||
msgid "Refresh"
|
||||
msgstr "Reîmprospătează"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortează după Vârstă <small>Cel mai Vechi→Cel mai Nou</small>"
|
||||
@@ -4690,10 +4726,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Blochează Reîmprospătarea Hover"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Descarcă"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Încarcă"
|
||||
@@ -4915,16 +4947,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Nu aveţi un furnizor usenet? Vă recomandăm să încercaţi %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Eroare obţinere info TV (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Redenumire:%s în %s nereuşită"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Redenumire fişiere similare : %s în %s nereuşită"
|
||||
|
||||
@@ -4960,9 +4992,15 @@ msgstr "Descărcare URL nereuşită; %s"
|
||||
#~ msgstr ""
|
||||
#~ "ATENŢIE: Sarcina \"%s\" întreruptă din cauza fişierelor RAR encriptate"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "Eroare CRC în %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Dosarul \"%s\" nu există"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "Modificare SQL Nereuşită, vedeţi jurnal"
|
||||
|
||||
#~ msgid "No UNRAR program found, unpacking RAR files is not possible<br />"
|
||||
#~ msgstr ""
|
||||
#~ "Nici un program UNRAR găsit, dezarhivarea fişierelor RAR imposibilă<br />"
|
||||
@@ -5044,6 +5082,9 @@ msgstr "Descărcare URL nereuşită; %s"
|
||||
#~ msgid "Missing expected file: %s => unrar error?"
|
||||
#~ msgstr "Fişiere aşteptate lipsă: %s => eroare unrar?"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Pachet principal negăsit..."
|
||||
|
||||
#~ msgid "Error importing OpenSSL module. Connecting with NON-SSL"
|
||||
#~ msgstr "Eroare importare modul OpenSSL . Se conectează folosind NON-SSL"
|
||||
|
||||
@@ -5310,6 +5351,12 @@ msgstr "Descărcare URL nereuşită; %s"
|
||||
#~ msgid "Enable if downloads are not put in their own folders."
|
||||
#~ msgstr "Activează dacă descărcările nu sunt puse în dosarele lor."
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Nume de Dosar Original"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "dosar"
|
||||
|
||||
#~ msgid "Enable sorting and renaming of date named files."
|
||||
#~ msgstr "Activează sortarea şi redenumirea fişierelor denumite după dată."
|
||||
|
||||
|
||||
153
po/main/ru.po
153
po/main/ru.po
@@ -2,15 +2,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-0.7.x\n"
|
||||
"Report-Msgid-Bugs-To: \n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
|
||||
"Last-Translator: Pavel Maryanov <Unknown>\n"
|
||||
"Language-Team: Russian <gmu@mx.ru>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
"Generated-By: pygettext.py 1.5\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
@@ -221,15 +221,6 @@ msgstr "Тестовое уведомление"
|
||||
msgid " Resolving address"
|
||||
msgstr " Разрешение адреса"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ОШИБКА"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ПРЕДУПРЕЖДЕНИЕ"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ничего"
|
||||
@@ -396,10 +387,6 @@ msgstr ""
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "Ошибка команды SQL (см. журнал)"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "Ошибка фиксации SQL (см. журнал)"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Не удалось закрыть базу данных (см. журнал)"
|
||||
@@ -416,10 +403,6 @@ msgstr "Ошибка декодирования %s"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "Ошибка CRC в %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Неверно сформированная статья yEnc в %s"
|
||||
@@ -568,6 +551,12 @@ msgstr "Не удалось разорвать соединение с почт
|
||||
msgid "Email succeeded"
|
||||
msgstr "Электронное письмо успешно отправлено"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Не удаётся найти шаблонны электронных писем в %s"
|
||||
@@ -663,7 +652,7 @@ msgstr ""
|
||||
"Отсутствуют учётные данные. Введите в сторонней программе имя пользователя и "
|
||||
"пароль из раздела «Настройка -> Общие»:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -735,10 +724,19 @@ msgstr ""
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Неправильный параметр"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Назад"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ОШИБКА"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -759,7 +757,7 @@ msgstr "ч"
|
||||
msgid "m"
|
||||
msgstr "м"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Не удаётся создать каталог %s"
|
||||
|
||||
@@ -789,6 +787,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Не удаётся изменить права доступа %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Запуск сценария"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -964,6 +966,7 @@ msgstr "запуск исправления"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -992,10 +995,6 @@ msgstr "[%s] Проверено за %s. Ошибок нет"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Проверено за %s. Требуется исправление"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Главный пакет не найден..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1039,6 +1038,10 @@ msgstr ""
|
||||
msgid "Verifying"
|
||||
msgstr "Проверка"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1102,11 +1105,6 @@ msgstr "Другие сообщения"
|
||||
msgid "Not available"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr ""
|
||||
@@ -1115,7 +1113,7 @@ msgstr ""
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr ""
|
||||
|
||||
@@ -1492,7 +1490,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Критическая ошибка"
|
||||
|
||||
@@ -1514,6 +1512,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1542,10 +1546,6 @@ msgstr "Ошибка переименования «%s» и «%s»"
|
||||
msgid "Failed to move files"
|
||||
msgstr "Не удалось переместить файлы"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Запуск сценария"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Запуск пользовательского сценария %s"
|
||||
@@ -1566,7 +1566,7 @@ msgstr "Подробнее"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Ошибка пост-обработки для %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "см. журнал"
|
||||
|
||||
@@ -2723,6 +2723,12 @@ msgstr "Пароль SABnzbd"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Необязательный пароль для входа."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3461,7 +3467,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Число попыток"
|
||||
|
||||
@@ -3941,6 +3947,22 @@ msgstr ""
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr ""
|
||||
@@ -4088,6 +4110,10 @@ msgstr "1x05 Эпизод Папка"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Эпизод Папка"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Название"
|
||||
@@ -4157,8 +4183,8 @@ msgid "Original Filename"
|
||||
msgstr "Исходное название файла"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Исходное название папки"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4176,10 +4202,6 @@ msgstr "текст"
|
||||
msgid "file"
|
||||
msgstr "файл"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "папка"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Строка сортировки"
|
||||
@@ -4352,6 +4374,14 @@ msgstr ""
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ПРЕДУПРЕЖДЕНИЕ"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Загрузить"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Частота обновления"
|
||||
@@ -4518,6 +4548,12 @@ msgstr "Приостановить на..."
|
||||
msgid "Refresh"
|
||||
msgstr "Обновить"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Сортировать по возрасту <small>от старых к новым</small>"
|
||||
@@ -4666,10 +4702,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Блокировать обновление при наведении мыши"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Загрузить"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Отправить"
|
||||
@@ -4894,16 +4926,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "У вас ещё нет поставщика услуг Usenet? Рекомендуем попробовать %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Не удалось получить сведения о ТВ (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Не удалось переименовать: %s в %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Не удалось переименовать похожий файл: %s в %s"
|
||||
|
||||
@@ -4941,6 +4973,12 @@ msgstr "Не удалось загрузить URL: %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Папка «%s» не существует"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "Ошибка фиксации SQL (см. журнал)"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "Ошибка CRC в %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Error: No secondary interface defined."
|
||||
#~ msgstr "Ошибка: дополнительный интерфейс не определён."
|
||||
|
||||
@@ -4998,6 +5036,9 @@ msgstr "Не удалось загрузить URL: %s"
|
||||
#~ msgid "Unpacking failed, these file(s) are missing:"
|
||||
#~ msgstr "Ошибка распаковки: отсутствуют следующие файлы:"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Главный пакет не найден..."
|
||||
|
||||
#~ msgid "Invalid par2 files, cannot verify or repair"
|
||||
#~ msgstr "Недопустимые PAR2-файлы. Нельзя выполнить проверку или исправление"
|
||||
|
||||
@@ -5343,6 +5384,12 @@ msgstr "Не удалось загрузить URL: %s"
|
||||
#~ msgid "Enable if downloads are not put in their own folders."
|
||||
#~ msgstr "Включите, если загрузки не размещаются в собственных папках."
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Исходное название папки"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "папка"
|
||||
|
||||
#~ msgid "Enable sorting and renaming of date named files."
|
||||
#~ msgstr "Позволяет сортировать и переименовывать файлы с датой в названии."
|
||||
|
||||
|
||||
153
po/main/sr.po
153
po/main/sr.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2015-12-28 10:25+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Serbian <sr@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:49+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -223,15 +223,6 @@ msgstr "Probno obaveštenje"
|
||||
msgid " Resolving address"
|
||||
msgstr " Решавање адресе"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ГРЕШКА:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ПАЖЊА:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ниједно"
|
||||
@@ -400,10 +391,6 @@ msgstr "Baza dnevnika je oštećena, kreirana prazna zamena"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "Neuspešna SQL komanda, videti izveštaj"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "Погрешно SQL извршавање, видети извештај"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Неуспешно затварање базе, видети извештај"
|
||||
@@ -420,10 +407,6 @@ msgstr "Dešifrovanje %s neuspešno"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC грешка у %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Лоше формиран yEnc артикал у %s"
|
||||
@@ -573,6 +556,12 @@ msgstr "Неуспешно затварање везе е-поште"
|
||||
msgid "Email succeeded"
|
||||
msgstr "Упешно слање е-поште"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nemoguće poslati, nedostaju obavezni podaci"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Немогуће наћи модел е-поруке у %s"
|
||||
@@ -663,7 +652,7 @@ msgstr ""
|
||||
"Недостаје аутентификација, унети у спољни програм име/лозинку из Подешавања-"
|
||||
">Опште:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -737,10 +726,19 @@ msgstr "Server nije definisan!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Погрешан параметар"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Назад"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "ГРЕШКА:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -761,7 +759,7 @@ msgstr "с"
|
||||
msgid "m"
|
||||
msgstr "м"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Немогуће креирати фасциклу %s"
|
||||
|
||||
@@ -791,6 +789,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Не може да се промене дозволе од %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Покретање скрипта"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -966,6 +968,7 @@ msgstr "Покретање пооправљања"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Par provera neuspešna na %s, dok je QuickCheck uspešan!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -994,10 +997,6 @@ msgstr "[%s] Проверено за %s, све датотеке су добре
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Проверено за %s, потребна је поправка"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Главни пакет није нађен..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1040,6 +1039,10 @@ msgstr "Диск је пун"
|
||||
msgid "Verifying"
|
||||
msgstr "Проверавање"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1103,11 +1106,6 @@ msgstr "Остале поруке"
|
||||
msgid "Not available"
|
||||
msgstr "Недоступно"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Nemoguće poslati, nedostaju obavezni podaci"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Неуспешно слање Prowl поруке"
|
||||
@@ -1116,7 +1114,7 @@ msgstr "Неуспешно слање Prowl поруке"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Neodgovarajući odgovor od strane Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Neuspešno slanje Pushover poruke"
|
||||
|
||||
@@ -1486,7 +1484,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Фатална грешка"
|
||||
|
||||
@@ -1508,6 +1506,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "Преузимање је можда погрешно. има %s од потребних %s"
|
||||
@@ -1536,10 +1540,6 @@ msgstr "Грешка преименовања \"%s\" у \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Неуспешно премештање датотека"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Покретање скрипта"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Покретање скрипта %s"
|
||||
@@ -1560,7 +1560,7 @@ msgstr "Више"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Грешка пост-процесирања за %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "видети извештај"
|
||||
|
||||
@@ -2715,6 +2715,12 @@ msgstr "Лозинка SABnzbd-а"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Лозинка за аутентификацију (опционо)"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3453,7 +3459,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Макс покушаја"
|
||||
|
||||
@@ -3927,6 +3933,22 @@ msgstr "Uređaj(i)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Uređaj(i) na koje bi poruke trebale biti poslate"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4074,6 +4096,10 @@ msgstr "1x05 Фасцикла епизоде"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Фасцикла епизоде"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Наслов"
|
||||
@@ -4143,8 +4169,8 @@ msgid "Original Filename"
|
||||
msgstr "Оригинално име датотеке"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Оригинално име фасцикле"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4162,10 +4188,6 @@ msgstr "текст"
|
||||
msgid "file"
|
||||
msgstr "датотека"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "фасцикла"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Уреди низ"
|
||||
@@ -4339,6 +4361,14 @@ msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr ""
|
||||
"U slučaju ponovnog pokretanja SABnzbd-a ovaj prozor će nestati automatski!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "ПАЖЊА:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Преузми"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Брзина освежавања"
|
||||
@@ -4505,6 +4535,12 @@ msgstr "Паузирај за..."
|
||||
msgid "Refresh"
|
||||
msgstr "Освежи"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Среди по старост <small>Старије→Новије</small>"
|
||||
@@ -4651,10 +4687,6 @@ msgstr "При прелазу миша преко рада, зауставља
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Блокирати обнове на прелаз миша"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Преузми"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Слање"
|
||||
@@ -4875,16 +4907,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Немате 'usenet' провајдер? Препоручујемо Вам %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Грешка преузимању ТВ инфо (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Неуспешно преименовање : %s у %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Неуспешно преименовање сличне датотеке: %s у %s"
|
||||
|
||||
@@ -4988,6 +5020,12 @@ msgstr "Погрешно учитавање УРЛ-а; %s"
|
||||
#~ msgid "Enable sorting and renaming of date named files."
|
||||
#~ msgstr "Упали сређивање и преименовање датотеке са датумом"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "фасцикла"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Оригинално име фасцикле"
|
||||
|
||||
#~ msgid "Enable generic sorting and renaming of files."
|
||||
#~ msgstr "Упали генерално сортирање/преименовање датотеке."
|
||||
|
||||
@@ -5189,6 +5227,12 @@ msgstr "Погрешно учитавање УРЛ-а; %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "фасцикла \"%s\" не постоји"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "Погрешно SQL извршавање, видети извештај"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC грешка у %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Not matched"
|
||||
#~ msgstr "Не одговара"
|
||||
|
||||
@@ -5238,6 +5282,9 @@ msgstr "Погрешно учитавање УРЛ-а; %s"
|
||||
#~ msgid "Unpacking failed, these file(s) are missing:"
|
||||
#~ msgstr "Неуспешан издвој, ове датотеке недостају:"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Главни пакет није нађен..."
|
||||
|
||||
#~ msgid "KB/s"
|
||||
#~ msgstr "КБ/с"
|
||||
|
||||
|
||||
153
po/main/sv.po
153
po/main/sv.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2016-02-20 20:34+0000\n"
|
||||
"Last-Translator: shypike <Unknown>\n"
|
||||
"Language-Team: Swedish <sv@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -224,15 +224,6 @@ msgstr "Testa notifikation"
|
||||
msgid " Resolving address"
|
||||
msgstr " Lösa adress"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEL:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "VARNING:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "Ingen"
|
||||
@@ -401,10 +392,6 @@ msgstr "Skadad hitsotrikdatabas, skapade en tom ersättare"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL Kommando misslyckades, se logg"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL Commit misslyckades, se logg"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "Det gick inte att stänga databasen, se logg"
|
||||
@@ -421,10 +408,6 @@ msgstr "Avkodning av %s misslyckades"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC Fel i %s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "Felaktigt utformad yEnc artikel i %s"
|
||||
@@ -573,6 +556,12 @@ msgstr "Det gick inte att stänga e-mail anslutning"
|
||||
msgid "Email succeeded"
|
||||
msgstr "E-mail sändning lyckades"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kunde inte skicka, saknar nödvändig data"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "Kan ej finna e-mail mallar i %s"
|
||||
@@ -666,7 +655,7 @@ msgstr ""
|
||||
"Autentisering saknas, ange användarnamn / lösenord från Konfiguration-> "
|
||||
"Allmänt i ditt tredjepartsprogram:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -741,10 +730,19 @@ msgstr "Odefinerad server!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "Fel parameter"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "Bakåt"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "FEL:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -765,7 +763,7 @@ msgstr "h"
|
||||
msgid "m"
|
||||
msgstr "m"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "Kan ej skapa mapp %s"
|
||||
|
||||
@@ -795,6 +793,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "Det gick inte att ändra rättigheter på %s"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Kör skript"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -970,6 +972,7 @@ msgstr "Startar reparation"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Par verifiering misslyckades på %s, medans QuickCheck lyckades!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -998,10 +1001,6 @@ msgstr "[%s] Verifierad i %s, alla filer är ok"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] Verifiering i %s, kräver reparation"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "Huvudarkiv saknas..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1045,6 +1044,10 @@ msgstr "Disken är full"
|
||||
msgid "Verifying"
|
||||
msgstr "Verifierar"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1108,11 +1111,6 @@ msgstr "Andra meddelanden"
|
||||
msgid "Not available"
|
||||
msgstr "Ej tillgänglig"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "Kunde inte skicka, saknar nödvändig data"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "Misslyckades att skicka Prowlmeddelande"
|
||||
@@ -1121,7 +1119,7 @@ msgstr "Misslyckades att skicka Prowlmeddelande"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Dålig respons från Pushover (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "Misslyckades att skicka pushovermeddelande"
|
||||
|
||||
@@ -1496,7 +1494,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "Allvarligt fel"
|
||||
|
||||
@@ -1518,6 +1516,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr ""
|
||||
@@ -1547,10 +1551,6 @@ msgstr "Det gick inte att döpa om \"%s\" till \"%s\""
|
||||
msgid "Failed to move files"
|
||||
msgstr "Misslyckades med att flytta filer"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "Kör skript"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "Kör användarskript %s"
|
||||
@@ -1571,7 +1571,7 @@ msgstr "Mer"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "Efterbehandling misslyckades för %s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "se loggfil"
|
||||
|
||||
@@ -2728,6 +2728,12 @@ msgstr "SABnzbd Lösenord"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "Väljbart autentiserings lösenord."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr ""
|
||||
@@ -3468,7 +3474,7 @@ msgstr ""
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "Max antal omförsök"
|
||||
|
||||
@@ -3942,6 +3948,22 @@ msgstr "Enhet(er)"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "Enhet(er) där medellandet skall skickas"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4089,6 +4111,10 @@ msgstr "1x05 Episodmapp"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 Episodmapp"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "Titel"
|
||||
@@ -4158,8 +4184,8 @@ msgid "Original Filename"
|
||||
msgstr "Originalfilnamn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "Ursprungliga mappnamnet"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4177,10 +4203,6 @@ msgstr "text"
|
||||
msgid "file"
|
||||
msgstr "fil"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "mapp"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "Sorteringssträng"
|
||||
@@ -4353,6 +4375,14 @@ msgstr "Förlorade förbindelse till SABnzbd.."
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr "Om SABnzbd startar om kommer denna skärm att försvinna automatiskt!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "VARNING:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Hämta"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "Uppdateringsfrekvens"
|
||||
@@ -4519,6 +4549,12 @@ msgstr "Pausa i..."
|
||||
msgid "Refresh"
|
||||
msgstr "Uppdatera"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortera efter ålder <small>Äldst→Nyast</small>"
|
||||
@@ -4667,10 +4703,6 @@ msgstr ""
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "Block uppdaterar vid svävande"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "Hämta"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "Ladda upp"
|
||||
@@ -4894,16 +4926,16 @@ msgstr ""
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "Har du inte någon usenet leverantör? Vi rekommenderar att prova %s."
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "Det gick inte att hämta TV info (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "Det gick inte att döpa om: %s till %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "Det gick inte att döpa om liknande fil: %s till %s"
|
||||
|
||||
@@ -4938,6 +4970,12 @@ msgstr "URL hämtning misslyckades; %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "Mappen \"%s\" finns inte"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL Commit misslyckades, se logg"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC Fel i %s (%s -> %s)"
|
||||
|
||||
#~ msgid "Error: No secondary interface defined."
|
||||
#~ msgstr "Fel: Inget andrainterface definierat."
|
||||
|
||||
@@ -4993,6 +5031,9 @@ msgstr "URL hämtning misslyckades; %s"
|
||||
#~ msgid "Unpacking failed, an expected file was not unpacked"
|
||||
#~ msgstr "Uppackning misslyckades, en väntad fil är inte uppackad"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "Huvudarkiv saknas..."
|
||||
|
||||
#~ msgid "Error importing OpenSSL module. Connecting with NON-SSL"
|
||||
#~ msgstr "Misslyckades med importering av OpenSSL modul. Ansluter utan SSL"
|
||||
|
||||
@@ -5427,6 +5468,12 @@ msgstr "URL hämtning misslyckades; %s"
|
||||
#~ msgid "Groups / Indexer tags"
|
||||
#~ msgstr "Grupper/Indexering-tagg"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "mapp"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "Ursprungliga mappnamnet"
|
||||
|
||||
#~ msgid "E.g. 119 or 563 for SSL"
|
||||
#~ msgstr "T.ex. 119 eller 563 för SSL"
|
||||
|
||||
|
||||
153
po/main/zh_CN.po
153
po/main/zh_CN.po
@@ -7,15 +7,15 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: sabnzbd\n"
|
||||
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"POT-Creation-Date: 2017-09-02 13:51+0000\n"
|
||||
"POT-Creation-Date: 2017-12-06 10:30+0000\n"
|
||||
"PO-Revision-Date: 2017-06-22 07:06+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
|
||||
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"X-Launchpad-Export-Date: 2017-09-03 05:50+0000\n"
|
||||
"X-Generator: Launchpad (build 18446)\n"
|
||||
"X-Launchpad-Export-Date: 2017-12-07 05:31+0000\n"
|
||||
"X-Generator: Launchpad (build 18511)\n"
|
||||
|
||||
#: SABnzbd.py [Error message]
|
||||
msgid "Failed to start web-interface"
|
||||
@@ -220,15 +220,6 @@ msgstr "测试通知"
|
||||
msgid " Resolving address"
|
||||
msgstr " 正在解析地址"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/api.py # sabnzbd/interface.py
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "错误:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "警告:"
|
||||
|
||||
#: sabnzbd/api.py # sabnzbd/skintext.py [No value, used in dropdown menus] # sabnzbd/skintext.py [Job details page, select no files]
|
||||
msgid "None"
|
||||
msgstr "无"
|
||||
@@ -395,10 +386,6 @@ msgstr "“历史记录”数据库已损坏,已创建空数据库代替"
|
||||
msgid "SQL Command Failed, see log"
|
||||
msgstr "SQL 命令执行失败,参见日志"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "SQL Commit Failed, see log"
|
||||
msgstr "SQL 保存失败,参见日志"
|
||||
|
||||
#: sabnzbd/database.py [Error message]
|
||||
msgid "Failed to close database, see log"
|
||||
msgstr "无法关闭数据库,参见日志"
|
||||
@@ -415,10 +402,6 @@ msgstr "%s 解码失败"
|
||||
msgid "Decoder failure: Out of memory"
|
||||
msgstr "解码器失败:内存不足"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "CRC Error in %s (%s -> %s)"
|
||||
msgstr "CRC 错误:%s (%s -> %s)"
|
||||
|
||||
#: sabnzbd/decoder.py
|
||||
msgid "Badly formed yEnc article in %s"
|
||||
msgstr "yEnc 文章格式错误:%s"
|
||||
@@ -567,6 +550,12 @@ msgstr "无法关闭邮件连接"
|
||||
msgid "Email succeeded"
|
||||
msgstr "成功发送电子邮件"
|
||||
|
||||
#: sabnzbd/emailer.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/rating.py
|
||||
#: sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "无法发送,缺少必要的数据"
|
||||
|
||||
#: sabnzbd/emailer.py [Error message]
|
||||
msgid "Cannot find email templates in %s"
|
||||
msgstr "无法找到 email 模板:%s"
|
||||
@@ -653,7 +642,7 @@ msgid ""
|
||||
"into your 3rd party program:"
|
||||
msgstr "缺身份认证信息,请在第三方程序中输入“配置”->“常规”中的用户名/密码:"
|
||||
|
||||
#: sabnzbd/interface.py [Warning message] # sabnzbd/skintext.py
|
||||
#: sabnzbd/interface.py [Warning message]
|
||||
msgid ""
|
||||
"Try our new skin Glitter! Fresh new design that is optimized for desktop and "
|
||||
"mobile devices. Go to Config -> General to change your skin."
|
||||
@@ -724,10 +713,19 @@ msgstr "未定义服务器!"
|
||||
msgid "Incorrect parameter"
|
||||
msgstr "参数不正确"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid ""
|
||||
"Category folder cannot be a subfolder of the Temporary Download Folder."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
msgid "Back"
|
||||
msgstr "返回"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/skintext.py
|
||||
msgid "ERROR:"
|
||||
msgstr "错误:"
|
||||
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
#: sabnzbd/interface.py # sabnzbd/interface.py
|
||||
@@ -748,7 +746,7 @@ msgstr "小时"
|
||||
msgid "m"
|
||||
msgstr "分钟"
|
||||
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/misc.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
msgid "Cannot create directory %s"
|
||||
msgstr "无法创建目录 %s"
|
||||
|
||||
@@ -778,6 +776,10 @@ msgstr ""
|
||||
msgid "Cannot change permissions of %s"
|
||||
msgstr "无法更改 %s 的权限"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "正在执行脚本"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/postproc.py
|
||||
@@ -953,6 +955,7 @@ msgstr "正在开始修复"
|
||||
msgid "Par verify failed on %s, while QuickCheck succeeded!"
|
||||
msgstr "Par 验证失败:%s,但快速检查成功!"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Repairing failed, %s"
|
||||
@@ -979,10 +982,6 @@ msgstr "[%s] 验证耗时 %s,所有文件均完好无损"
|
||||
msgid "[%s] Verified in %s, repair is required"
|
||||
msgstr "[%s] 验证耗时 %s,需要修复"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Main packet not found..."
|
||||
msgstr "主数据包未找到..."
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid ""
|
||||
"Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
|
||||
@@ -1025,6 +1024,10 @@ msgstr "磁盘空间已满"
|
||||
msgid "Verifying"
|
||||
msgstr "正在验证"
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
msgid "Checking extra files"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/newsunpack.py
|
||||
#: sabnzbd/newsunpack.py # sabnzbd/skintext.py [PP status]
|
||||
msgid "Checking"
|
||||
@@ -1088,11 +1091,6 @@ msgstr "其他信息"
|
||||
msgid "Not available"
|
||||
msgstr "不可用"
|
||||
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/rating.py # sabnzbd/rating.py
|
||||
msgid "Cannot send, missing required data"
|
||||
msgstr "无法发送,缺少必要的数据"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send Prowl message"
|
||||
msgstr "无法发送 Prowl 消息"
|
||||
@@ -1101,7 +1099,7 @@ msgstr "无法发送 Prowl 消息"
|
||||
msgid "Bad response from Pushover (%s): %s"
|
||||
msgstr "Pushover 响应异常 (%s): %s"
|
||||
|
||||
#: sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
#: sabnzbd/notifier.py # sabnzbd/notifier.py [Warning message] # sabnzbd/notifier.py
|
||||
msgid "Failed to send pushover message"
|
||||
msgstr "无法发送 pushover 信息"
|
||||
|
||||
@@ -1470,7 +1468,7 @@ msgid ""
|
||||
"SABnzbd is already running."
|
||||
msgstr "绑定端口 %s 在 %s 上失败。其它的程序正在使用此端口或者说 SABnzbd 正在运行。"
|
||||
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py
|
||||
#: sabnzbd/panic.py # sabnzbd/panic.py # sabnzbd/panic.py
|
||||
msgid "Fatal error"
|
||||
msgstr "致命错误"
|
||||
|
||||
@@ -1492,6 +1490,12 @@ msgid ""
|
||||
"size to 4GB"
|
||||
msgstr "已完成文件夹 %s 位于 FAT 文件系统上,这样会有最大文件为 4GB 的限制。"
|
||||
|
||||
#: sabnzbd/postproc.py [Warning message]
|
||||
msgid ""
|
||||
"Module subprocessww missing. Expect problems with Unicoded file and "
|
||||
"directory names in downloads."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Download might fail, only %s of required %s available"
|
||||
msgstr "下载可能会失败,只有 %s 块 (需要 %s) 可用"
|
||||
@@ -1520,10 +1524,6 @@ msgstr "将 \"%s\" 重命名为 \"%s\" 出错"
|
||||
msgid "Failed to move files"
|
||||
msgstr "移动文件失败"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running script"
|
||||
msgstr "正在执行脚本"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Running user script %s"
|
||||
msgstr "正在执行用户脚本 %s"
|
||||
@@ -1544,7 +1544,7 @@ msgstr "更多"
|
||||
msgid "Post Processing Failed for %s (%s)"
|
||||
msgstr "后期处理失败:%s (%s)"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
#: sabnzbd/postproc.py [Error message] # sabnzbd/postproc.py
|
||||
msgid "see logfile"
|
||||
msgstr "查看日志文件"
|
||||
|
||||
@@ -2695,6 +2695,12 @@ msgstr "SABnzbd 密码"
|
||||
msgid "Optional authentication password."
|
||||
msgstr "可选身份验证密码。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If the SABnzbd Host or Port is exposed to the internet, your current "
|
||||
"settings allow full external access to the SABnzbd interface."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Security"
|
||||
msgstr "安全"
|
||||
@@ -3398,7 +3404,7 @@ msgstr "SSL 加密算法"
|
||||
msgid "Increase performance by forcing a lower SSL encryption strength."
|
||||
msgstr "降低 SSL 的加密难度以便获得更高的性能。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
#: sabnzbd/skintext.py # sabnzbd/urlgrabber.py
|
||||
msgid "Maximum retries"
|
||||
msgstr "最多重试次数"
|
||||
|
||||
@@ -3869,6 +3875,22 @@ msgstr "设备"
|
||||
msgid "Device(s) to which message should be sent"
|
||||
msgstr "信息发送的目标设备"
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency retry"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How often (in seconds) the same notification will be sent"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "Emergency expire"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Pushover settings]
|
||||
msgid "How many seconds your notification will continue to be retried"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py [Header for Pushbullet notification section]
|
||||
msgid "Pushbullet"
|
||||
msgstr "Pushbullet"
|
||||
@@ -4017,6 +4039,10 @@ msgstr "1x05 剧集文件夹"
|
||||
msgid "S01E05 Episode Folder"
|
||||
msgstr "S01E05 剧集文件夹"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Job Name as Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Title"
|
||||
msgstr "标题"
|
||||
@@ -4086,8 +4112,8 @@ msgid "Original Filename"
|
||||
msgstr "原始文件名"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Original Foldername"
|
||||
msgstr "原始文件夹名"
|
||||
msgid "Original Job Name"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Lower Case"
|
||||
@@ -4105,10 +4131,6 @@ msgstr "text"
|
||||
msgid "file"
|
||||
msgstr "文件"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "folder"
|
||||
msgstr "文件夹"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort String"
|
||||
msgstr "排序字串"
|
||||
@@ -4279,6 +4301,14 @@ msgstr "失去与 SABnzbd 的连接.."
|
||||
msgid "In case of SABnzbd restart this screen will disappear automatically!"
|
||||
msgstr "SABnzbd 重启后本画面将自动消失!"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "WARNING:"
|
||||
msgstr "警告:"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "装取"
|
||||
|
||||
#: sabnzbd/skintext.py # sabnzbd/skintext.py
|
||||
msgid "Refresh rate"
|
||||
msgstr "刷新频率"
|
||||
@@ -4445,6 +4475,12 @@ msgstr "暂停..."
|
||||
msgid "Refresh"
|
||||
msgstr "刷新"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"All usernames, passwords and API-keys are automatically removed from the log "
|
||||
"and the included copy of your settings."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "按发布时间排序 <small>最早→最新</small>"
|
||||
@@ -4591,10 +4627,6 @@ msgstr "这将在您的鼠标指针处于队列上方时阻止内容刷新。"
|
||||
msgid "Block Refreshes on Hover"
|
||||
msgstr "指向时停止刷新"
|
||||
|
||||
#: sabnzbd/skintext.py [Fetch from URL button in "Add NZB" dialog box]
|
||||
msgid "Fetch"
|
||||
msgstr "装取"
|
||||
|
||||
#: sabnzbd/skintext.py [Upload button in "Add NZB" dialog box]
|
||||
msgid "Upload"
|
||||
msgstr "上传"
|
||||
@@ -4809,16 +4841,16 @@ msgstr "要从 usenet 下载您需要有一家提供商的访问权限。您的
|
||||
msgid "Don't have a usenet provider? We recommend trying %s."
|
||||
msgstr "还没有 usenet 提供商r? 我们推荐试试 %s。"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Error getting TV info (%s)"
|
||||
msgstr "获取 TV 信息出错 (%s)"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message] # sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message] # sabnzbd/sorting.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename: %s to %s"
|
||||
msgstr "重命名失败: %s 为 %s"
|
||||
|
||||
#: sabnzbd/tvsort.py [Error message]
|
||||
#: sabnzbd/sorting.py [Error message]
|
||||
msgid "Failed to rename similar file: %s to %s"
|
||||
msgstr "重命名相似文件失败: %s 为 %s"
|
||||
|
||||
@@ -4856,6 +4888,12 @@ msgstr "URL 装取失败; %s"
|
||||
#~ msgid "Folder \"%s\" does not exist"
|
||||
#~ msgstr "文件夹 \"%s\" 不存在"
|
||||
|
||||
#~ msgid "SQL Commit Failed, see log"
|
||||
#~ msgstr "SQL 保存失败,参见日志"
|
||||
|
||||
#~ msgid "CRC Error in %s (%s -> %s)"
|
||||
#~ msgstr "CRC 错误:%s (%s -> %s)"
|
||||
|
||||
#~ msgid "Error: No secondary interface defined."
|
||||
#~ msgstr "错误: 未定义第二界面。"
|
||||
|
||||
@@ -4909,6 +4947,9 @@ msgstr "URL 装取失败; %s"
|
||||
#~ msgid "Unpacking failed, these file(s) are missing:"
|
||||
#~ msgstr "解压失败,缺这些文件:"
|
||||
|
||||
#~ msgid "Main packet not found..."
|
||||
#~ msgstr "主数据包未找到..."
|
||||
|
||||
#~ msgid "Invalid par2 files, cannot verify or repair"
|
||||
#~ msgstr "par2 文件无效,无法验证或修复"
|
||||
|
||||
@@ -5238,6 +5279,12 @@ msgstr "URL 装取失败; %s"
|
||||
#~ msgid "Enable if downloads are not put in their own folders."
|
||||
#~ msgstr "启用可将下载内容存放在各自的文件夹。"
|
||||
|
||||
#~ msgid "Original Foldername"
|
||||
#~ msgstr "原始文件夹名"
|
||||
|
||||
#~ msgid "folder"
|
||||
#~ msgstr "文件夹"
|
||||
|
||||
#~ msgid "Enable sorting and renaming of date named files."
|
||||
#~ msgstr "启用按日期命名的文件的排序与重命名。"
|
||||
|
||||
|
||||
@@ -108,7 +108,7 @@ import sabnzbd.lang as lang
|
||||
import sabnzbd.par2file as par2file
|
||||
import sabnzbd.api
|
||||
import sabnzbd.directunpacker as directunpacker
|
||||
from sabnzbd.decorators import synchronized, notify_downloader
|
||||
from sabnzbd.decorators import synchronized
|
||||
from sabnzbd.constants import NORMAL_PRIORITY, VALID_ARCHIVES, \
|
||||
REPAIR_REQUEST, QUEUE_FILE_NAME, QUEUE_VERSION, QUEUE_FILE_TMPL
|
||||
import sabnzbd.getipaddress as getipaddress
|
||||
@@ -278,7 +278,7 @@ def initialize(pause_downloader=False, clean_up=False, evalSched=False, repair=0
|
||||
sabnzbd.encoding.change_fsys(cfg.fsys_type())
|
||||
|
||||
# Set cache limit
|
||||
if not cfg.cache_limit() or (cfg.cache_limit() == '200M' and (sabnzbd.WIN32 or sabnzbd.DARWIN)):
|
||||
if not cfg.cache_limit() or (cfg.cache_limit() in ('200M', '450M') and (sabnzbd.WIN32 or sabnzbd.DARWIN)):
|
||||
cfg.cache_limit.set(misc.get_cache_limit())
|
||||
ArticleCache.do.new_limit(cfg.cache_limit.get_int())
|
||||
|
||||
@@ -537,7 +537,7 @@ def guard_https_ver():
|
||||
set_https_verification(cfg.enable_https_verification())
|
||||
|
||||
|
||||
def add_url(url, pp=None, script=None, cat=None, priority=None, nzbname=None, feed_name=None):
|
||||
def add_url(url, pp=None, script=None, cat=None, priority=None, nzbname=None):
|
||||
""" Add NZB based on a URL, attributes optional """
|
||||
if 'http' not in url:
|
||||
return
|
||||
@@ -551,8 +551,8 @@ def add_url(url, pp=None, script=None, cat=None, priority=None, nzbname=None, fe
|
||||
|
||||
# Add feed name if it came from RSS
|
||||
msg = T('Trying to fetch NZB from %s') % url
|
||||
if feed_name:
|
||||
msg = '%s - %s' % (feed_name, msg)
|
||||
if nzbname:
|
||||
msg = '%s - %s' % (nzbname, msg)
|
||||
|
||||
# Generate the placeholder
|
||||
future_nzo = NzbQueue.do.generate_future(msg, pp, script, cat, url=url, priority=priority, nzbname=nzbname)
|
||||
@@ -874,7 +874,7 @@ def get_new_id(prefix, folder, check_list=None):
|
||||
def save_data(data, _id, path, do_pickle=True, silent=False):
|
||||
""" Save data to a diskfile """
|
||||
if not silent:
|
||||
logging.debug("Saving data for %s in %s", _id, path)
|
||||
logging.debug('[%s] Saving data for %s in %s', misc.caller_name(), _id, path)
|
||||
path = os.path.join(path, _id)
|
||||
|
||||
# We try 3 times, to avoid any dict or access problems
|
||||
@@ -906,11 +906,11 @@ def load_data(_id, path, remove=True, do_pickle=True, silent=False):
|
||||
path = os.path.join(path, _id)
|
||||
|
||||
if not os.path.exists(path):
|
||||
logging.info("%s missing", path)
|
||||
logging.info("[%s] %s missing", misc.caller_name(), path)
|
||||
return None
|
||||
|
||||
if not silent:
|
||||
logging.debug("Loading data for %s from %s", _id, path)
|
||||
logging.debug("[%s] Loading data for %s from %s", misc.caller_name(), _id, path)
|
||||
|
||||
try:
|
||||
with open(path, 'rb') as data_file:
|
||||
@@ -923,7 +923,7 @@ def load_data(_id, path, remove=True, do_pickle=True, silent=False):
|
||||
data = data_file.read()
|
||||
|
||||
if remove:
|
||||
os.remove(path)
|
||||
misc.remove_file(path)
|
||||
except:
|
||||
logging.error(T('Loading %s failed'), path)
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
@@ -937,8 +937,7 @@ def remove_data(_id, path):
|
||||
path = os.path.join(path, _id)
|
||||
try:
|
||||
if os.path.exists(path):
|
||||
os.remove(path)
|
||||
logging.info("%s removed", path)
|
||||
misc.remove_file(path)
|
||||
except:
|
||||
logging.debug("Failed to remove %s", path)
|
||||
|
||||
@@ -946,7 +945,7 @@ def remove_data(_id, path):
|
||||
def save_admin(data, _id):
|
||||
""" Save data in admin folder in specified format """
|
||||
path = os.path.join(cfg.admin_dir.get_path(), _id)
|
||||
logging.info("Saving data for %s in %s", _id, path)
|
||||
logging.debug("[%s] Saving data for %s in %s", misc.caller_name(), _id, path)
|
||||
|
||||
# We try 3 times, to avoid any dict or access problems
|
||||
for t in xrange(3):
|
||||
@@ -969,10 +968,10 @@ def save_admin(data, _id):
|
||||
def load_admin(_id, remove=False, silent=False):
|
||||
""" Read data in admin folder in specified format """
|
||||
path = os.path.join(cfg.admin_dir.get_path(), _id)
|
||||
logging.info("Loading data for %s from %s", _id, path)
|
||||
logging.debug("[%s] Loading data for %s from %s", misc.caller_name(), _id, path)
|
||||
|
||||
if not os.path.exists(path):
|
||||
logging.info("%s missing", path)
|
||||
logging.info("[%s] %s missing", misc.caller_name(), path)
|
||||
return None
|
||||
|
||||
try:
|
||||
@@ -982,7 +981,7 @@ def load_admin(_id, remove=False, silent=False):
|
||||
else:
|
||||
data = cPickle.load(data_file)
|
||||
if remove:
|
||||
os.remove(path)
|
||||
misc.remove_file(path)
|
||||
except:
|
||||
if not silent:
|
||||
excepterror = str(sys.exc_info()[0])
|
||||
@@ -1036,7 +1035,7 @@ def check_repair_request():
|
||||
path = os.path.join(cfg.admin_dir.get_path(), REPAIR_REQUEST)
|
||||
if os.path.exists(path):
|
||||
try:
|
||||
os.remove(path)
|
||||
misc.remove_file(path)
|
||||
except:
|
||||
pass
|
||||
return True
|
||||
@@ -1107,7 +1106,7 @@ def pid_file(pid_path=None, pid_file=None, port=0):
|
||||
f.write('%d\n' % os.getpid())
|
||||
f.close()
|
||||
else:
|
||||
os.remove(DIR_PID)
|
||||
misc.remove_file(DIR_PID)
|
||||
except:
|
||||
logging.warning('Cannot access PID file %s', DIR_PID)
|
||||
|
||||
|
||||
@@ -681,12 +681,11 @@ def _api_rescan(name, output, kwargs):
|
||||
|
||||
def _api_eval_sort(name, output, kwargs):
|
||||
""" API: evaluate sorting expression """
|
||||
import sabnzbd.tvsort
|
||||
name = kwargs.get('name', '')
|
||||
value = kwargs.get('value', '')
|
||||
title = kwargs.get('title')
|
||||
multipart = kwargs.get('movieextra', '')
|
||||
path = sabnzbd.tvsort.eval_sort(value, title, name, multipart)
|
||||
path = sabnzbd.sorting.eval_sort(value, title, name, multipart)
|
||||
if path is None:
|
||||
return report(output, _MSG_NOT_IMPLEMENTED)
|
||||
else:
|
||||
@@ -903,8 +902,8 @@ def _api_server_stats(name, output, kwargs):
|
||||
|
||||
stats['servers'] = {}
|
||||
for svr in config.get_servers():
|
||||
t, m, w, d, _ = BPSMeter.do.amounts(svr)
|
||||
stats['servers'][svr] = {'total': t or 0, 'month': m or 0, 'week': w or 0, 'day': d or 0}
|
||||
t, m, w, d, daily = BPSMeter.do.amounts(svr)
|
||||
stats['servers'][svr] = {'total': t or 0, 'month': m or 0, 'week': w or 0, 'day': d or 0, 'daily': daily or {} }
|
||||
|
||||
return report(output, keyword='', data=stats)
|
||||
|
||||
@@ -1277,11 +1276,7 @@ def build_status(skip_dashboard=False, output=None):
|
||||
info['servers'].append((server.displayname, '', connected, serverconnections, server.ssl,
|
||||
server.active, server.errormsg, server.priority, server.optional))
|
||||
|
||||
wlist = []
|
||||
for w in sabnzbd.GUIHANDLER.content():
|
||||
w = w.replace('WARNING', T('WARNING:')).replace('ERROR', T('ERROR:'))
|
||||
wlist.insert(0, unicoder(w))
|
||||
info['warnings'] = wlist
|
||||
info['warnings'] = sabnzbd.GUIHANDLER.content()
|
||||
|
||||
return info
|
||||
|
||||
@@ -1342,7 +1337,6 @@ def build_queue(start=0, limit=0, trans=False, output=None, search=None):
|
||||
slot['size'] = format_bytes(bytes)
|
||||
slot['sizeleft'] = format_bytes(bytesleft)
|
||||
slot['percentage'] = "%s" % (int(((mb - mbleft) / mb) * 100)) if mb != mbleft else '0'
|
||||
slot['missing'] = pnfo.missing
|
||||
slot['mbmissing'] = "%.2f" % (pnfo.bytes_missing / MEBI)
|
||||
slot['direct_unpack'] = pnfo.direct_unpack
|
||||
if not output:
|
||||
@@ -1363,7 +1357,7 @@ def build_queue(start=0, limit=0, trans=False, output=None, search=None):
|
||||
slot['status'] = "%s" % (status)
|
||||
|
||||
if (Downloader.do.paused or Downloader.do.postproc or is_propagating or \
|
||||
status not in (Status.DOWNLOADING, Status.QUEUED)) and priority != TOP_PRIORITY:
|
||||
status not in (Status.DOWNLOADING, Status.FETCHING, Status.QUEUED)) and priority != TOP_PRIORITY:
|
||||
slot['timeleft'] = '0:00:00'
|
||||
slot['eta'] = 'unknown'
|
||||
else:
|
||||
@@ -1634,8 +1628,6 @@ def build_header(webdir='', output=None):
|
||||
|
||||
header['restart_req'] = sabnzbd.RESTART_REQ
|
||||
header['pid'] = os.getpid()
|
||||
|
||||
header['last_warning'] = sabnzbd.GUIHANDLER.last().replace('WARNING', ('WARNING:')).replace('ERROR', T('ERROR:'))
|
||||
header['active_lang'] = cfg.language()
|
||||
|
||||
header['my_lcldata'] = sabnzbd.DIR_LCLDATA
|
||||
@@ -1694,7 +1686,7 @@ def build_queue_header(search=None, start=0, limit=0, output=None):
|
||||
bytes = qnfo.bytes
|
||||
|
||||
header['kbpersec'] = "%.2f" % (bytespersec / KIBI)
|
||||
header['speed'] = to_units(bytespersec, spaces=1, dec_limit=1)
|
||||
header['speed'] = to_units(bytespersec, spaces=1)
|
||||
header['mbleft'] = "%.2f" % (bytesleft / MEBI)
|
||||
header['mb'] = "%.2f" % (bytes / MEBI)
|
||||
header['sizeleft'] = format_bytes(bytesleft)
|
||||
|
||||
@@ -22,6 +22,7 @@ sabnzbd.articlecache - Article cache handling
|
||||
import sys
|
||||
import logging
|
||||
import threading
|
||||
import struct
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.decorators import synchronized
|
||||
@@ -40,6 +41,13 @@ class ArticleCache(object):
|
||||
self.__cache_size = 0
|
||||
self.__article_list = [] # List of buffered articles
|
||||
self.__article_table = {} # Dict of buffered articles
|
||||
|
||||
# On 32 bit we only allow the user to set 1GB
|
||||
# For 64 bit we allow up to 4GB, in case somebody wants that
|
||||
self.__cache_upper_limit = GIGI
|
||||
if sabnzbd.DARWIN or sabnzbd.WIN64 or (struct.calcsize("P") * 8) == 64:
|
||||
self.__cache_upper_limit = 4*GIGI
|
||||
|
||||
ArticleCache.do = self
|
||||
|
||||
@synchronized(ARTICLE_LOCK)
|
||||
@@ -51,9 +59,9 @@ class ArticleCache(object):
|
||||
""" Called when cache limit changes """
|
||||
self.__cache_limit_org = limit
|
||||
if limit < 0:
|
||||
self.__cache_limit = GIGI
|
||||
self.__cache_limit = self.__cache_upper_limit
|
||||
else:
|
||||
self.__cache_limit = min(limit, GIGI)
|
||||
self.__cache_limit = min(limit, self.__cache_upper_limit)
|
||||
|
||||
@synchronized(ARTICLE_LOCK)
|
||||
def reserve_space(self, data):
|
||||
@@ -74,23 +82,24 @@ class ArticleCache(object):
|
||||
|
||||
@synchronized(ARTICLE_LOCK)
|
||||
def save_article(self, article, data):
|
||||
nzf = article.nzf
|
||||
nzo = nzf.nzo
|
||||
|
||||
if nzo.is_gone():
|
||||
if article.nzf.nzo.is_gone():
|
||||
# Do not discard this article because the
|
||||
# file might still be processed at this moment!!
|
||||
return
|
||||
|
||||
saved_articles = article.nzf.nzo.saved_articles
|
||||
# Register article
|
||||
if article not in article.nzf.nzo.saved_articles:
|
||||
article.nzf.nzo.saved_articles.append(article)
|
||||
|
||||
if article not in saved_articles:
|
||||
saved_articles.append(article)
|
||||
if article.lowest_partnum and not article.nzf.import_finished:
|
||||
# Write the first-fetched articles to disk
|
||||
# Otherwise the cache could overflow
|
||||
self.__flush_article(article, data)
|
||||
return
|
||||
|
||||
if self.__cache_limit:
|
||||
if self.__cache_limit < 0:
|
||||
self.__add_to_cache(article, data)
|
||||
|
||||
else:
|
||||
data_size = len(data)
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ from sabnzbd.postproc import PostProcessor
|
||||
import sabnzbd.downloader
|
||||
import sabnzbd.par2file as par2file
|
||||
import sabnzbd.utils.rarfile as rarfile
|
||||
from sabnzbd.encoding import unicoder, is_utf8
|
||||
from sabnzbd.encoding import unicoder
|
||||
from sabnzbd.rating import Rating
|
||||
|
||||
|
||||
@@ -76,7 +76,7 @@ class Assembler(Thread):
|
||||
if not sabnzbd.downloader.Downloader.do.paused:
|
||||
logging.warning(T('Too little diskspace forcing PAUSE'))
|
||||
# Pause downloader, but don't save, since the disk is almost full!
|
||||
sabnzbd.downloader.Downloader.do.pause(save=False)
|
||||
sabnzbd.downloader.Downloader.do.pause()
|
||||
sabnzbd.emailer.diskfull()
|
||||
# Abort all direct unpackers, just to be sure
|
||||
sabnzbd.directunpacker.abort_all()
|
||||
@@ -97,15 +97,17 @@ class Assembler(Thread):
|
||||
try:
|
||||
filepath = self.assemble(nzf, filepath)
|
||||
except IOError, (errno, strerror):
|
||||
# If job was deleted, ignore error
|
||||
if not nzo.is_gone():
|
||||
# If job was deleted or in active post-processing, ignore error
|
||||
if not nzo.deleted and not nzo.is_gone() and not nzo.pp_active:
|
||||
# 28 == disk full => pause downloader
|
||||
if errno == 28:
|
||||
logging.error(T('Disk full! Forcing Pause'))
|
||||
else:
|
||||
logging.error(T('Disk error on creating file %s'), clip_path(filepath))
|
||||
# Log traceback
|
||||
logging.info('Traceback: ', exc_info=True)
|
||||
# Pause without saving
|
||||
sabnzbd.downloader.Downloader.do.pause(save=False)
|
||||
sabnzbd.downloader.Downloader.do.pause()
|
||||
continue
|
||||
except:
|
||||
logging.error(T('Fatal error in Assembler'), exc_info=True)
|
||||
@@ -292,6 +294,9 @@ def check_encrypted_and_unwanted_files(nzo, filepath):
|
||||
|
||||
# Did any work?
|
||||
if password_hit:
|
||||
# We always trust the user's input
|
||||
if not nzo.password:
|
||||
nzo.password = password_hit
|
||||
# Don't check other files
|
||||
logging.info('Password "%s" matches for job "%s"', password_hit, nzo.final_name)
|
||||
nzo.encrypted = -1
|
||||
@@ -315,7 +320,8 @@ def check_encrypted_and_unwanted_files(nzo, filepath):
|
||||
zf.close()
|
||||
del zf
|
||||
except:
|
||||
logging.info('Error during inspection of RAR-file %s', filepath, exc_info=True)
|
||||
logging.info('Error during inspection of RAR-file %s', filepath)
|
||||
logging.debug('Traceback: ', exc_info=True)
|
||||
|
||||
return encrypted, unwanted
|
||||
|
||||
@@ -365,5 +371,5 @@ def remove_warning_label(msg):
|
||||
""" Standardize errors by removing obsolete
|
||||
"WARNING:" part in all languages """
|
||||
if ':' in msg:
|
||||
return msg.split(':')[1]
|
||||
return msg.split(':')[1].strip()
|
||||
return msg
|
||||
|
||||
@@ -253,7 +253,7 @@ keep_awake = OptionBool('misc', 'keep_awake', True)
|
||||
win_menu = OptionBool('misc', 'win_menu', True)
|
||||
allow_incomplete_nzb = OptionBool('misc', 'allow_incomplete_nzb', False)
|
||||
enable_bonjour = OptionBool('misc', 'enable_bonjour', True)
|
||||
reject_duplicate_files = OptionBool('misc', 'recject_duplicate_files', False)
|
||||
reject_duplicate_files = OptionBool('misc', 'reject_duplicate_files', False)
|
||||
max_art_opt = OptionBool('misc', 'max_art_opt', False)
|
||||
use_pickle = OptionBool('misc', 'use_pickle', False)
|
||||
ipv6_hosting = OptionBool('misc', 'ipv6_hosting', False)
|
||||
@@ -261,6 +261,7 @@ fixed_ports = OptionBool('misc', 'fixed_ports', False)
|
||||
api_warnings = OptionBool('misc', 'api_warnings', True, protect=True)
|
||||
disable_key = OptionBool('misc', 'disable_api_key', False, protect=True)
|
||||
no_penalties = OptionBool('misc', 'no_penalties', False)
|
||||
debug_log_decoding = OptionBool('misc', 'debug_log_decoding', False)
|
||||
|
||||
# Text values
|
||||
rss_odd_titles = OptionList('misc', 'rss_odd_titles', ['nzbindex.nl/', 'nzbindex.com/', 'nzbclub.com/'])
|
||||
@@ -374,6 +375,8 @@ prowl_prio_other = OptionNumber('prowl', 'prowl_prio_other', -3)
|
||||
pushover_token = OptionStr('pushover', 'pushover_token')
|
||||
pushover_userkey = OptionStr('pushover', 'pushover_userkey')
|
||||
pushover_device = OptionStr('pushover', 'pushover_device')
|
||||
pushover_emergency_expire = OptionNumber('pushover', 'pushover_emergency_expire', 3600)
|
||||
pushover_emergency_retry = OptionNumber('pushover', 'pushover_emergency_retry', 60)
|
||||
pushover_enable = OptionBool('pushover', 'pushover_enable')
|
||||
pushover_cats = OptionList('pushover', 'pushover_cats', ['*'])
|
||||
pushover_prio_startup = OptionNumber('pushover', 'pushover_prio_startup', -3)
|
||||
|
||||
@@ -385,7 +385,7 @@ class ConfigServer(object):
|
||||
self.displayname = OptionStr(name, 'displayname', '', add=False)
|
||||
self.host = OptionStr(name, 'host', '', add=False)
|
||||
self.port = OptionNumber(name, 'port', 119, 0, 2 ** 16 - 1, add=False)
|
||||
self.timeout = OptionNumber(name, 'timeout', 120, 30, 240, add=False)
|
||||
self.timeout = OptionNumber(name, 'timeout', 60, 20, 240, add=False)
|
||||
self.username = OptionStr(name, 'username', '', add=False)
|
||||
self.password = OptionPassword(name, 'password', '', add=False)
|
||||
self.connections = OptionNumber(name, 'connections', 1, 0, 100, add=False)
|
||||
@@ -395,7 +395,7 @@ class ConfigServer(object):
|
||||
self.optional = OptionBool(name, 'optional', False, add=False)
|
||||
self.retention = OptionNumber(name, 'retention', add=False)
|
||||
self.send_group = OptionBool(name, 'send_group', False, add=False)
|
||||
self.priority = OptionNumber(name, 'priority', 0, 0, 100, add=False)
|
||||
self.priority = OptionNumber(name, 'priority', 0, 0, 99, add=False)
|
||||
# 'fillserver' field only here in order to set a proper priority when converting
|
||||
self.fillserver = OptionBool(name, 'fillserver', False, add=False)
|
||||
self.notes = OptionStr(name, 'notes', '', add=False)
|
||||
@@ -859,7 +859,7 @@ def save_config(force=False):
|
||||
logging.error(T('Cannot write to INI file %s'), filename)
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
try:
|
||||
os.remove(filename)
|
||||
sabnzbd.misc.remove_file(filename)
|
||||
except:
|
||||
pass
|
||||
# Restore INI file from backup
|
||||
|
||||
@@ -27,7 +27,7 @@ REC_RAR_VERSION = 500
|
||||
|
||||
PNFO = namedtuple('PNFO', 'repair unpack delete script nzo_id filename password unpackstrht '
|
||||
'msgid category url bytes_left bytes avg_stamp avg_date finished_files '
|
||||
'active_files queued_files status priority missing bytes_missing direct_unpack')
|
||||
'active_files queued_files status priority bytes_missing direct_unpack')
|
||||
|
||||
QNFO = namedtuple('QNFO', 'bytes bytes_left bytes_left_previous_page list q_size_list q_fullsize')
|
||||
|
||||
@@ -51,7 +51,7 @@ RENAMES_FILE = '__renames__'
|
||||
ATTRIB_FILE = 'SABnzbd_attrib'
|
||||
REPAIR_REQUEST = 'repair-all.sab'
|
||||
|
||||
SABYENC_VERSION_REQUIRED = '3.0.2'
|
||||
SABYENC_VERSION_REQUIRED = '3.3.2'
|
||||
|
||||
DB_HISTORY_VERSION = 1
|
||||
DB_HISTORY_NAME = 'history%s.db' % DB_HISTORY_VERSION
|
||||
@@ -74,9 +74,11 @@ DEF_WORKDIR = 'sabnzbd'
|
||||
DEF_LOG_FILE = 'sabnzbd.log'
|
||||
DEF_LOG_ERRFILE = 'sabnzbd.error.log'
|
||||
DEF_LOG_CHERRY = 'cherrypy.log'
|
||||
DEF_CACHE_LIMIT = '450M'
|
||||
DEF_ARTICLE_CACHE_DEFAULT = '500M'
|
||||
DEF_ARTICLE_CACHE_MAX = '1G'
|
||||
DEF_TIMEOUT = 60
|
||||
DEF_SCANRATE = 5
|
||||
MAX_URL_RETRIES = 10
|
||||
MAX_DECODE_QUEUE = 10
|
||||
LIMIT_DECODE_QUEUE = 100
|
||||
MAX_WARNINGS = 20
|
||||
|
||||
@@ -40,7 +40,7 @@ from sabnzbd.constants import DB_HISTORY_NAME, STAGES
|
||||
from sabnzbd.encoding import unicoder
|
||||
from sabnzbd.bpsmeter import this_week, this_month
|
||||
from sabnzbd.decorators import synchronized
|
||||
from sabnzbd.misc import get_all_passwords, int_conv
|
||||
from sabnzbd.misc import get_all_passwords, int_conv, remove_file, caller_name
|
||||
|
||||
DB_LOCK = threading.RLock()
|
||||
|
||||
@@ -126,7 +126,7 @@ class HistoryDB(object):
|
||||
else:
|
||||
self.c.execute(command)
|
||||
if save:
|
||||
self.save()
|
||||
self.con.commit()
|
||||
return True
|
||||
except:
|
||||
error = str(sys.exc_value)
|
||||
@@ -143,7 +143,7 @@ class HistoryDB(object):
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
self.close()
|
||||
try:
|
||||
os.remove(HistoryDB.db_path)
|
||||
remove_file(HistoryDB.db_path)
|
||||
except:
|
||||
pass
|
||||
self.connect()
|
||||
@@ -196,14 +196,6 @@ class HistoryDB(object):
|
||||
""")
|
||||
self.execute('PRAGMA user_version = 2;')
|
||||
|
||||
def save(self):
|
||||
""" Save database to disk """
|
||||
try:
|
||||
self.con.commit()
|
||||
except:
|
||||
logging.error(T('SQL Commit Failed, see log'))
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
|
||||
def close(self):
|
||||
""" Close database connection """
|
||||
try:
|
||||
@@ -243,10 +235,8 @@ class HistoryDB(object):
|
||||
jobs = [jobs]
|
||||
|
||||
for job in jobs:
|
||||
self.execute("""DELETE FROM history WHERE nzo_id=?""", (job,))
|
||||
logging.info('Removing job %s from history', job)
|
||||
|
||||
self.save()
|
||||
self.execute("""DELETE FROM history WHERE nzo_id=?""", (job,), save=True)
|
||||
logging.info('[%s] Removing job %s from history', caller_name(), job)
|
||||
|
||||
def auto_history_purge(self):
|
||||
""" Remove history items based on the configured history-retention """
|
||||
@@ -275,11 +265,10 @@ class HistoryDB(object):
|
||||
""" Add a new job entry to the database """
|
||||
t = build_history_info(nzo, storage, path, postproc_time, script_output, script_line)
|
||||
|
||||
if self.execute("""INSERT INTO history (completed, name, nzb_name, category, pp, script, report,
|
||||
url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log,
|
||||
downloaded, completeness, fail_message, url_info, bytes, series, md5sum, password)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", t):
|
||||
self.save()
|
||||
self.execute("""INSERT INTO history (completed, name, nzb_name, category, pp, script, report,
|
||||
url, status, nzo_id, storage, path, script_log, script_line, download_time, postproc_time, stage_log,
|
||||
downloaded, completeness, fail_message, url_info, bytes, series, md5sum, password)
|
||||
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)""", t, save=True)
|
||||
logging.info('Added job %s to history', nzo.final_name)
|
||||
|
||||
def fetch_history(self, start=None, limit=None, search=None, failed_only=0, categories=None):
|
||||
@@ -504,15 +493,9 @@ def build_history_info(nzo, storage='', downpath='', postproc_time=0, script_out
|
||||
if seriesname and season and episode:
|
||||
series = u'%s/%s/%s' % (seriesname.lower(), season, episode)
|
||||
|
||||
# See whatever the first password was, for the Retry
|
||||
password = ''
|
||||
passwords = get_all_passwords(nzo)
|
||||
if passwords:
|
||||
password = passwords[0]
|
||||
|
||||
return (completed, name, nzb_name, category, pp, script, report, url, status, nzo_id, storage, path,
|
||||
script_log, script_line, download_time, postproc_time, stage_log, downloaded, completeness,
|
||||
fail_message, url_info, bytes, series, nzo.md5sum, password)
|
||||
fail_message, url_info, bytes, series, nzo.md5sum, nzo.password)
|
||||
|
||||
|
||||
def unpack_history_info(item):
|
||||
|
||||
@@ -31,6 +31,7 @@ from sabnzbd.constants import Status, MAX_DECODE_QUEUE, LIMIT_DECODE_QUEUE, SABY
|
||||
import sabnzbd.articlecache
|
||||
import sabnzbd.downloader
|
||||
import sabnzbd.nzbqueue
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.encoding import yenc_name_fixer
|
||||
from sabnzbd.misc import match_str
|
||||
|
||||
@@ -47,8 +48,8 @@ try:
|
||||
import sabyenc
|
||||
SABYENC_ENABLED = True
|
||||
SABYENC_VERSION = sabyenc.__version__
|
||||
# Verify version
|
||||
if SABYENC_VERSION != SABYENC_VERSION_REQUIRED:
|
||||
# Verify version to at least match minor version
|
||||
if SABYENC_VERSION[:3] != SABYENC_VERSION_REQUIRED[:3]:
|
||||
raise ImportError
|
||||
except ImportError:
|
||||
SABYENC_ENABLED = False
|
||||
@@ -79,6 +80,7 @@ class Decoder(Thread):
|
||||
|
||||
self.queue = queue
|
||||
self.servers = servers
|
||||
self.__log_decoding = cfg.debug_log_decoding()
|
||||
|
||||
def stop(self):
|
||||
# Put multiple to stop all decoders
|
||||
@@ -115,7 +117,9 @@ class Decoder(Thread):
|
||||
if nzo.precheck:
|
||||
raise BadYenc
|
||||
register = True
|
||||
logging.debug("Decoding %s", art_id)
|
||||
|
||||
if self.__log_decoding:
|
||||
logging.debug("Decoding %s", art_id)
|
||||
|
||||
data = self.decode(article, lines, raw_data)
|
||||
nzf.article_count += 1
|
||||
@@ -127,8 +131,7 @@ class Decoder(Thread):
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
|
||||
sabnzbd.downloader.Downloader.do.pause()
|
||||
article.fetcher = None
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(nzf, nzo)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article)
|
||||
register = False
|
||||
|
||||
except MemoryError, e:
|
||||
@@ -139,12 +142,11 @@ class Decoder(Thread):
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
|
||||
sabnzbd.downloader.Downloader.do.pause()
|
||||
article.fetcher = None
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(nzf, nzo)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article)
|
||||
register = False
|
||||
|
||||
except CrcError, e:
|
||||
logme = T('CRC Error in %s (%s -> %s)') % (art_id, e.needcrc, e.gotcrc)
|
||||
logme = 'CRC Error in %s' % art_id
|
||||
logging.info(logme)
|
||||
|
||||
data = e.data
|
||||
@@ -312,10 +314,10 @@ class Decoder(Thread):
|
||||
for server in self.servers:
|
||||
if server.active and not article.server_in_try_list(server):
|
||||
if server.priority >= article.fetcher.priority:
|
||||
article.fetcher = None
|
||||
|
||||
article.tries = 0
|
||||
# Allow all servers for this nzo and nzf again (but not for this article)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article.nzf, article.nzf.nzo)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article, article_reset=False)
|
||||
return True
|
||||
|
||||
msg = T('%s => missing from all servers, discarding') % article
|
||||
@@ -333,7 +335,7 @@ class Decoder(Thread):
|
||||
return
|
||||
|
||||
# Set the md5-of-16k if this is the first article
|
||||
if article.partnum == nzf.lowest_partnum:
|
||||
if article.lowest_partnum:
|
||||
nzf.md5of16k = hashlib.md5(decoded_data[:16384]).digest()
|
||||
|
||||
# Try the rename
|
||||
|
||||
@@ -20,22 +20,27 @@
|
||||
##############################################################################
|
||||
from threading import RLock, Condition
|
||||
|
||||
DIR_LOCK = RLock()
|
||||
DOWNLOADER_CV = Condition(RLock())
|
||||
|
||||
# All operations that modify the queue need to happen in a lock
|
||||
# Also used when importing NZBs to prevent IO-race conditions
|
||||
# Names of wrapper-functions should be the same in misc.caller_name
|
||||
# The NzbQueueLocker both locks and notifies the Downloader
|
||||
NZBQUEUE_LOCK = RLock()
|
||||
DOWNLOADER_CV = Condition(NZBQUEUE_LOCK)
|
||||
|
||||
def synchronized(lock):
|
||||
def wrap(f):
|
||||
def newFunction(*args, **kw):
|
||||
def call_func(*args, **kw):
|
||||
lock.acquire()
|
||||
try:
|
||||
return f(*args, **kw)
|
||||
finally:
|
||||
lock.release()
|
||||
return newFunction
|
||||
return call_func
|
||||
return wrap
|
||||
|
||||
|
||||
def notify_downloader(func):
|
||||
def NzbQueueLocker(func):
|
||||
global DOWNLOADER_CV
|
||||
def call_func(*params, **kparams):
|
||||
DOWNLOADER_CV.acquire()
|
||||
|
||||
@@ -28,19 +28,23 @@ import logging
|
||||
|
||||
import sabnzbd
|
||||
import sabnzbd.cfg as cfg
|
||||
from sabnzbd.misc import int_conv, clip_path, remove_all, globber, format_time_string, has_win_device
|
||||
from sabnzbd.misc import int_conv, clip_path, long_path, remove_all, globber, \
|
||||
format_time_string, has_win_device, real_path, remove_file
|
||||
from sabnzbd.encoding import TRANS, unicoder
|
||||
from sabnzbd.newsunpack import build_command, EXTRACTFROM_RE, rar_volumelist
|
||||
from sabnzbd.newsunpack import build_command, EXTRACTFROM_RE, EXTRACTED_RE, rar_volumelist
|
||||
from sabnzbd.postproc import prepare_extraction_path
|
||||
from sabnzbd.utils.rarfile import RarFile
|
||||
from sabnzbd.utils.diskspeed import diskspeedmeasure
|
||||
|
||||
if sabnzbd.WIN32:
|
||||
# Load the POpen from the fixed unicode-subprocess
|
||||
from sabnzbd.utils.subprocess_fix import Popen
|
||||
else:
|
||||
# Load the regular POpen
|
||||
from subprocess import Popen
|
||||
try:
|
||||
# Use patched version of subprocess module for Unicode on Windows
|
||||
import subprocessww
|
||||
except ImportError:
|
||||
pass
|
||||
|
||||
# Load the regular POpen (which is now patched on Windows)
|
||||
from subprocess import Popen
|
||||
|
||||
MAX_ACTIVE_UNPACKERS = 10
|
||||
ACTIVE_UNPACKERS = []
|
||||
@@ -150,6 +154,7 @@ class DirectUnpacker(threading.Thread):
|
||||
last_volume_linebuf = ''
|
||||
unrar_log = []
|
||||
rarfiles = []
|
||||
extracted = []
|
||||
start_time = time.time()
|
||||
|
||||
# Need to read char-by-char because there's no newline after new-disk message
|
||||
@@ -172,10 +177,21 @@ class DirectUnpacker(threading.Thread):
|
||||
logging.info('Error in DirectUnpack of %s', self.cur_setname)
|
||||
self.abort()
|
||||
|
||||
if linebuf.startswith('Extracting from') and linebuf.endswith('\n'):
|
||||
filename = TRANS((re.search(EXTRACTFROM_RE, linebuf.strip()).group(1)))
|
||||
if filename not in rarfiles:
|
||||
rarfiles.append(filename)
|
||||
if linebuf.endswith('\n'):
|
||||
# List files we used
|
||||
if linebuf.startswith('Extracting from'):
|
||||
filename = TRANS((re.search(EXTRACTFROM_RE, linebuf.strip()).group(1)))
|
||||
if filename not in rarfiles:
|
||||
rarfiles.append(filename)
|
||||
|
||||
# List files we extracted
|
||||
m = re.search(EXTRACTED_RE, linebuf)
|
||||
if m:
|
||||
# In case of flat-unpack, UnRar still prints the whole path (?!)
|
||||
unpacked_file = TRANS(m.group(2))
|
||||
if cfg.flat_unpack():
|
||||
unpacked_file = os.path.basename(unpacked_file)
|
||||
extracted.append(real_path(self.unpack_dir_info[0], unpacked_file))
|
||||
|
||||
# Did we reach the end?
|
||||
if linebuf.endswith('All OK'):
|
||||
@@ -185,16 +201,23 @@ class DirectUnpacker(threading.Thread):
|
||||
|
||||
# Add to success
|
||||
rarfile_path = os.path.join(self.nzo.downpath, self.rarfile_nzf.filename)
|
||||
self.success_sets[self.cur_setname] = rar_volumelist(rarfile_path, self.nzo.password, rarfiles)
|
||||
self.success_sets[self.cur_setname] = (rar_volumelist(rarfile_path, self.nzo.password, rarfiles), extracted)
|
||||
logging.info('DirectUnpack completed for %s', self.cur_setname)
|
||||
self.nzo.set_action_line(T('Direct Unpack'), T('Completed'))
|
||||
|
||||
# List success in history-info
|
||||
msg = T('Unpacked %s files/folders in %s') % (len(extracted), format_time_string(self.unpack_time))
|
||||
msg = '%s - %s' % (T('Direct Unpack'), msg)
|
||||
self.nzo.set_unpack_info('Unpack', '[%s] %s' % (unicoder(self.cur_setname), msg))
|
||||
|
||||
# Write current log and clear
|
||||
unrar_log.append(linebuf.strip())
|
||||
linebuf = ''
|
||||
last_volume_linebuf = ''
|
||||
logging.debug('DirectUnpack Unrar output %s', '\n'.join(unrar_log))
|
||||
unrar_log = []
|
||||
rarfiles = []
|
||||
extracted = []
|
||||
|
||||
# Are there more files left?
|
||||
while self.nzo.files and not self.next_sets:
|
||||
@@ -224,10 +247,15 @@ class DirectUnpacker(threading.Thread):
|
||||
|
||||
# Possible that the instance was deleted while locked
|
||||
if not self.killed:
|
||||
# Give unrar some time to do it's thing
|
||||
self.active_instance.stdin.write('\n')
|
||||
start_time = time.time()
|
||||
time.sleep(0.1)
|
||||
# If unrar stopped or is killed somehow, writing will cause a crash
|
||||
try:
|
||||
# Give unrar some time to do it's thing
|
||||
self.active_instance.stdin.write('C\n')
|
||||
start_time = time.time()
|
||||
time.sleep(0.1)
|
||||
except IOError:
|
||||
self.abort()
|
||||
break
|
||||
|
||||
# Did we unpack a new volume? Sometimes UnRar hangs on 1 volume
|
||||
if not last_volume_linebuf or last_volume_linebuf != linebuf:
|
||||
@@ -237,9 +265,12 @@ class DirectUnpacker(threading.Thread):
|
||||
logging.info('DirectUnpacked volume %s for %s', self.cur_volume, self.cur_setname)
|
||||
|
||||
# If lines did not change and we don't have the next volume, this download is missing files!
|
||||
if last_volume_linebuf == linebuf and not self.have_next_volume():
|
||||
logging.info('DirectUnpack failed due to missing files %s', self.cur_setname)
|
||||
self.abort()
|
||||
if last_volume_linebuf == linebuf:
|
||||
if not self.have_next_volume():
|
||||
logging.info('DirectUnpack failed due to missing files %s', self.cur_setname)
|
||||
self.abort()
|
||||
else:
|
||||
logging.debug('Duplicate output line detected: "%s"', last_volume_linebuf)
|
||||
|
||||
last_volume_linebuf = linebuf
|
||||
|
||||
@@ -252,14 +283,6 @@ class DirectUnpacker(threading.Thread):
|
||||
unrar_log.append(linebuf.strip())
|
||||
logging.debug('DirectUnpack Unrar output %s', '\n'.join(unrar_log))
|
||||
|
||||
# Save information if success
|
||||
if self.success_sets:
|
||||
# The number is wrong if one_folder, just leave empty
|
||||
nr_files = '' if self.unpack_dir_info[3] else len(globber(self.unpack_dir_info[0]))
|
||||
msg = T('Unpacked %s files/folders in %s') % (nr_files, format_time_string(self.unpack_time))
|
||||
msg = '%s - %s' % (T('Direct Unpack'), msg)
|
||||
self.nzo.set_unpack_info('Unpack', '[%s] %s' % (unicoder(self.cur_setname), msg))
|
||||
|
||||
# Make more space
|
||||
self.reset_active()
|
||||
if self in ACTIVE_UNPACKERS:
|
||||
@@ -290,7 +313,14 @@ class DirectUnpacker(threading.Thread):
|
||||
""" Start the unrar instance using the user's options """
|
||||
# Generate extraction path and save for post-proc
|
||||
if not self.unpack_dir_info:
|
||||
self.unpack_dir_info = prepare_extraction_path(self.nzo)
|
||||
try:
|
||||
self.unpack_dir_info = prepare_extraction_path(self.nzo)
|
||||
except:
|
||||
# Prevent fatal crash if directory creation fails
|
||||
self.abort()
|
||||
return
|
||||
|
||||
# Get the information
|
||||
extraction_path, _, _, one_folder, _ = self.unpack_dir_info
|
||||
|
||||
# Set options
|
||||
@@ -310,13 +340,11 @@ class DirectUnpacker(threading.Thread):
|
||||
# Generate command
|
||||
rarfile_path = os.path.join(self.nzo.downpath, self.rarfile_nzf.filename)
|
||||
if sabnzbd.WIN32:
|
||||
if not has_win_device(rarfile_path):
|
||||
command = ['%s' % sabnzbd.newsunpack.RAR_COMMAND, action, '-vp', '-idp', '-o+', '-ai', password_command,
|
||||
'%s' % clip_path(rarfile_path), clip_path(extraction_path)]
|
||||
else:
|
||||
# Need long-path notation in case of forbidden-names
|
||||
command = ['%s' % sabnzbd.newsunpack.RAR_COMMAND, action, '-vp', '-idp', '-o+', '-ai', password_command,
|
||||
'%s' % clip_path(rarfile_path), '%s\\' % extraction_path]
|
||||
# For Unrar to support long-path, we need to cricumvent Python's list2cmdline
|
||||
# See: https://github.com/sabnzbd/sabnzbd/issues/1043
|
||||
command = ['%s' % sabnzbd.newsunpack.RAR_COMMAND, action, '-vp', '-idp', '-o+', '-ai', password_command,
|
||||
'%s' % clip_path(rarfile_path), '%s\\' % long_path(extraction_path)]
|
||||
|
||||
else:
|
||||
# Don't use "-ai" (not needed for non-Windows)
|
||||
command = ['%s' % sabnzbd.newsunpack.RAR_COMMAND, action, '-vp', '-idp', '-o+', password_command,
|
||||
@@ -327,9 +355,9 @@ class DirectUnpacker(threading.Thread):
|
||||
|
||||
# Let's start from the first one!
|
||||
self.cur_volume = 1
|
||||
stup, need_shell, command, creationflags = build_command(command)
|
||||
stup, need_shell, command, creationflags = build_command(command, flatten_command=True)
|
||||
logging.debug('Running unrar for DirectUnpack %s', command)
|
||||
self.active_instance = Popen(command, shell=need_shell, stdin=subprocess.PIPE,
|
||||
self.active_instance = Popen(command, shell=False, stdin=subprocess.PIPE,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||
startupinfo=stup, creationflags=creationflags)
|
||||
# Add to runners
|
||||
@@ -372,8 +400,7 @@ class DirectUnpacker(threading.Thread):
|
||||
for rm_file in rar_contents:
|
||||
# Flat-unpack, so remove foldername from RarFile output
|
||||
f = os.path.join(extraction_path, os.path.basename(rm_file))
|
||||
logging.debug('Removing file %s', f)
|
||||
os.remove(f)
|
||||
remove_file(f)
|
||||
except:
|
||||
# The user will have to remove it themselves
|
||||
logging.info('Failed to clean Direct Unpack after aborting %s', rarfile_nzf.filename, exc_info=True)
|
||||
|
||||
@@ -30,8 +30,8 @@ import threading
|
||||
import sabnzbd
|
||||
from sabnzbd.constants import SCAN_FILE_NAME, VALID_ARCHIVES
|
||||
import sabnzbd.utils.rarfile as rarfile
|
||||
from sabnzbd.decorators import synchronized, DIR_LOCK
|
||||
from sabnzbd.encoding import platform_encode
|
||||
from sabnzbd.decorators import NzbQueueLocker
|
||||
from sabnzbd.newsunpack import is_sevenfile, SevenZip
|
||||
import sabnzbd.nzbstuff as nzbstuff
|
||||
import sabnzbd.misc as misc
|
||||
@@ -97,6 +97,7 @@ def is_archive(path):
|
||||
return 1, None, ''
|
||||
|
||||
|
||||
@NzbQueueLocker
|
||||
def ProcessArchiveFile(filename, path, pp=None, script=None, cat=None, catdir=None, keep=False,
|
||||
priority=None, url='', nzbname=None, password=None, nzo_id=None):
|
||||
""" Analyse ZIP file and create job(s).
|
||||
@@ -161,7 +162,7 @@ def ProcessArchiveFile(filename, path, pp=None, script=None, cat=None, catdir=No
|
||||
zf.close()
|
||||
try:
|
||||
if not keep:
|
||||
os.remove(path)
|
||||
misc.remove_file(path)
|
||||
except:
|
||||
logging.error(T('Error removing %s'), misc.clip_path(path))
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
@@ -173,6 +174,7 @@ def ProcessArchiveFile(filename, path, pp=None, script=None, cat=None, catdir=No
|
||||
return status, nzo_ids
|
||||
|
||||
|
||||
@NzbQueueLocker
|
||||
def ProcessSingleFile(filename, path, pp=None, script=None, cat=None, catdir=None, keep=False,
|
||||
priority=None, nzbname=None, reuse=False, nzo_info=None, dup_check=True, url='',
|
||||
password=None, nzo_id=None):
|
||||
@@ -247,7 +249,7 @@ def ProcessSingleFile(filename, path, pp=None, script=None, cat=None, catdir=Non
|
||||
nzo.update_rating()
|
||||
try:
|
||||
if not keep:
|
||||
os.remove(path)
|
||||
misc.remove_file(path)
|
||||
except:
|
||||
logging.error(T('Error removing %s'), misc.clip_path(path))
|
||||
logging.info("Traceback: ", exc_info=True)
|
||||
@@ -341,7 +343,6 @@ class DirScanner(threading.Thread):
|
||||
|
||||
def scan(self):
|
||||
""" Do one scan of the watched folder """
|
||||
@synchronized(DIR_LOCK)
|
||||
def run_dir(folder, catdir):
|
||||
try:
|
||||
files = os.listdir(folder)
|
||||
|
||||
@@ -30,7 +30,7 @@ import sys
|
||||
import Queue
|
||||
|
||||
import sabnzbd
|
||||
from sabnzbd.decorators import synchronized, notify_downloader, DOWNLOADER_CV
|
||||
from sabnzbd.decorators import synchronized, NzbQueueLocker, DOWNLOADER_CV
|
||||
from sabnzbd.constants import MAX_DECODE_QUEUE, LIMIT_DECODE_QUEUE
|
||||
from sabnzbd.decoder import Decoder
|
||||
from sabnzbd.newswrapper import NewsWrapper, request_server_info
|
||||
@@ -256,12 +256,12 @@ class Downloader(Thread):
|
||||
|
||||
return
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
def set_paused_state(self, state):
|
||||
""" Set downloader to specified paused state """
|
||||
self.paused = state
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
def resume(self):
|
||||
# Do not notify when SABnzbd is still starting
|
||||
if self.paused and sabnzbd.WEB_DIR:
|
||||
@@ -269,8 +269,8 @@ class Downloader(Thread):
|
||||
notifier.send_notification("SABnzbd", T('Resuming'), 'download')
|
||||
self.paused = False
|
||||
|
||||
@notify_downloader
|
||||
def pause(self, save=True):
|
||||
@NzbQueueLocker
|
||||
def pause(self):
|
||||
""" Pause the downloader, optionally saving admin """
|
||||
if not self.paused:
|
||||
self.paused = True
|
||||
@@ -280,14 +280,12 @@ class Downloader(Thread):
|
||||
BPSMeter.do.reset()
|
||||
if cfg.autodisconnect():
|
||||
self.disconnect()
|
||||
if save:
|
||||
ArticleCache.do.flush_articles()
|
||||
|
||||
def delay(self):
|
||||
logging.debug("Delaying")
|
||||
self.delayed = True
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
def undelay(self):
|
||||
logging.debug("Undelaying")
|
||||
self.delayed = False
|
||||
@@ -296,7 +294,7 @@ class Downloader(Thread):
|
||||
logging.info("Waiting for post-processing to finish")
|
||||
self.postproc = True
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
def resume_from_postproc(self):
|
||||
logging.info("Post-processing finished, resuming download")
|
||||
self.postproc = False
|
||||
@@ -540,7 +538,7 @@ class Downloader(Thread):
|
||||
# Check 10 seconds after enabling slowdown
|
||||
if self.can_be_slowed_timer and time.time() > self.can_be_slowed_timer + 10:
|
||||
# Now let's check if it was stable in the last 10 seconds
|
||||
self.can_be_slowed = (BPSMeter.do.get_stable_speed(timespan=10) > 0)
|
||||
self.can_be_slowed = BPSMeter.do.get_stable_speed(timespan=10)
|
||||
self.can_be_slowed_timer = 0
|
||||
logging.debug('Downloader-slowdown: %r', self.can_be_slowed)
|
||||
|
||||
@@ -794,11 +792,8 @@ class Downloader(Thread):
|
||||
# Too many tries on this server, consider article missing
|
||||
self.decode(article, None, None)
|
||||
else:
|
||||
# Remove this server from try_list
|
||||
article.fetcher = None
|
||||
|
||||
# Allow all servers to iterate over each nzo/nzf again
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article.nzf, article.nzf.nzo)
|
||||
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article)
|
||||
|
||||
if destroy:
|
||||
nw.terminate(quit=quit)
|
||||
@@ -863,7 +858,7 @@ class Downloader(Thread):
|
||||
del self._timers[server_id]
|
||||
self.init_server(server_id, server_id)
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
@synchronized(TIMER_LOCK)
|
||||
def unblock(self, server_id):
|
||||
# Remove timer
|
||||
@@ -882,7 +877,7 @@ class Downloader(Thread):
|
||||
for server_id in self._timers.keys():
|
||||
self.unblock(server_id)
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
@synchronized(TIMER_LOCK)
|
||||
def check_timers(self):
|
||||
""" Make sure every server without a non-expired timer is active """
|
||||
@@ -905,7 +900,7 @@ class Downloader(Thread):
|
||||
def update_server(self, oldserver, newserver):
|
||||
self.init_server(oldserver, newserver)
|
||||
|
||||
@notify_downloader
|
||||
@NzbQueueLocker
|
||||
def wakeup(self):
|
||||
""" Just rattle the semaphore """
|
||||
pass
|
||||
|
||||
@@ -149,6 +149,8 @@ def send(message, email_to, test=None):
|
||||
else:
|
||||
logging.info("Notification e-mail successfully sent")
|
||||
return T('Email succeeded')
|
||||
else:
|
||||
return T('Cannot send, missing required data')
|
||||
|
||||
|
||||
def get_email_date():
|
||||
@@ -218,7 +220,7 @@ def send_with_template(prefix, parm, test=None):
|
||||
def endjob(filename, cat, status, path, bytes, fail_msg, stages, script, script_output, script_ret, test=None):
|
||||
""" Send end-of-job email """
|
||||
# Is it allowed?
|
||||
if not check_cat('email', cat):
|
||||
if not check_cat('misc', cat, keyword='email') and not test:
|
||||
return None
|
||||
|
||||
# Translate the stage names
|
||||
|
||||
@@ -20,6 +20,7 @@ sabnzbd.encoding - Unicoded filename support
|
||||
"""
|
||||
|
||||
import locale
|
||||
import string
|
||||
from xml.sax.saxutils import escape
|
||||
from Cheetah.Filters import Filter
|
||||
|
||||
@@ -70,19 +71,6 @@ def yenc_name_fixer(p):
|
||||
return p.decode('cp1252', errors='replace').replace('?', '!')
|
||||
|
||||
|
||||
def is_utf8(p):
|
||||
""" Return True when p is UTF-8 or plain ASCII """
|
||||
utf8 = True
|
||||
try:
|
||||
p.decode('ascii')
|
||||
except:
|
||||
try:
|
||||
p.decode('utf-8')
|
||||
except:
|
||||
utf8 = False
|
||||
return utf8
|
||||
|
||||
|
||||
def special_fixer(p):
|
||||
""" Return string appropriate for the platform.
|
||||
Also takes care of the situation where a non-Windows/UTF-8 system
|
||||
@@ -123,7 +111,6 @@ def unicoder(p, force=False):
|
||||
|
||||
def xml_name(p, keep_escape=False, encoding=None):
|
||||
""" Prepare name for use in HTML/XML contect """
|
||||
|
||||
if isinstance(p, unicode):
|
||||
pass
|
||||
elif isinstance(p, str):
|
||||
@@ -184,10 +171,10 @@ class EmailFilter(Filter):
|
||||
################################################################################
|
||||
#
|
||||
# Map CodePage-850 characters to Python's pseudo-Unicode 8bit ASCII
|
||||
#
|
||||
# Use to transform 8-bit console output to plain Python strings
|
||||
# For example for unrar and par2 output
|
||||
#
|
||||
import string
|
||||
|
||||
TAB_850 = \
|
||||
"\x80\x81\x82\x83\x84\x85\x86\x87\x88\x89\x8A\x8B\x8C\x8D\x8E\x8F" \
|
||||
"\x90\x91\x92\x93\x94\x95\x96\x97\x98\x99\x9A\x9B\x9C\x9D\x9E\x9F" \
|
||||
@@ -200,7 +187,7 @@ TAB_850 = \
|
||||
|
||||
TAB_LATIN = \
|
||||
"\xC7\xFC\xE9\xE2\xE4\xE0\xE5\xE7\xEA\xEB\xE8\xEF\xEE\xEC\xC4\xC5" \
|
||||
"\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\x66" \
|
||||
"\xC9\xE6\xC6\xF4\xF6\xF2\xFB\xF9\xFF\xD6\xDC\xF8\xA3\xD8\xD7\x83" \
|
||||
"\xE1\xED\xF3\xFA\xF1\xD1\xAA\xBA\xBF\xAE\xAC\xDB\xBC\xA1\xAB\xBB" \
|
||||
"\x7E\x7E\x7E\x7E\x7E\xC1\xC2\xC0\xA9\x7E\x7E\x7E\x7E\xA2\xA5\x7E" \
|
||||
"\x7E\x7E\x7E\x7E\x7E\x7E\xE3\xc3\x7E\x7E\x7E\x7E\x7E\x7E\x7E\xA4" \
|
||||
@@ -208,32 +195,21 @@ TAB_LATIN = \
|
||||
"\xD3\xDF\xD4\xD2\xF5\xD5\xB5\xFE\xDE\xDA\xDB\xD9\xFD\xDD\xAF\xB4" \
|
||||
"\xAD\xB1\x5F\xBE\xB6\xA7\xF7\xB8\xB0\xA8\xB7\xB9\xB3\xB2\x7E\xA0"
|
||||
|
||||
gTABLE_850_LATIN = string.maketrans(TAB_850, TAB_LATIN)
|
||||
gTABLE_LATIN_850 = string.maketrans(TAB_LATIN, TAB_850)
|
||||
|
||||
|
||||
def TRANS(p):
|
||||
""" For Windows: Translate CP850 to Python's Latin-1 and return in Unicode
|
||||
Others: return original string
|
||||
"""
|
||||
global gTABLE_850_LATIN
|
||||
if sabnzbd.WIN32:
|
||||
return p.translate(gTABLE_850_LATIN).decode('cp1252', 'replace')
|
||||
if p:
|
||||
return p.translate(string.maketrans(TAB_850, TAB_LATIN)).decode('cp1252', 'replace')
|
||||
else:
|
||||
# translate() fails on empty or None strings
|
||||
return ''
|
||||
else:
|
||||
return unicoder(p)
|
||||
|
||||
|
||||
def UNTRANS(p):
|
||||
""" For Windows: Translate Python's Latin-1 to CP850
|
||||
Others: return original string
|
||||
"""
|
||||
global gTABLE_LATIN_850
|
||||
if sabnzbd.WIN32:
|
||||
return p.encode('cp1252', 'replace').translate(gTABLE_LATIN_850)
|
||||
else:
|
||||
return p
|
||||
|
||||
|
||||
def fixup_ff4(p):
|
||||
""" Fix incompatibility between CherryPy and Firefox-4 on OSX,
|
||||
where a filename contains &#xx; encodings
|
||||
@@ -305,7 +281,7 @@ def deunicode(p):
|
||||
except:
|
||||
return p
|
||||
else:
|
||||
return p
|
||||
return str(p)
|
||||
|
||||
|
||||
auto_fsys()
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user