mirror of
https://github.com/sabnzbd/sabnzbd.git
synced 2026-09-11 05:02:30 -04:00
Compare commits
750
Commits
feature/alt
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a647f73426 | ||
|
|
8a29314f24 | ||
|
|
888ee46b40 | ||
|
|
737d61759b | ||
|
|
c62391e983 | ||
|
|
19e53229e0 | ||
|
|
d224d72814 | ||
|
|
c4803e1c3a | ||
|
|
bc09facc17 | ||
|
|
86e989509f | ||
|
|
02a748a807 | ||
|
|
7bf6958d1d | ||
|
|
f39f99c827 | ||
|
|
febc1287bd | ||
|
|
d1839d8c40 | ||
|
|
e3b62e0474 | ||
|
|
8b8342a378 | ||
|
|
2112dfbb23 | ||
|
|
0fe4b31a5e | ||
|
|
c49644f4e2 | ||
|
|
10609644c8 | ||
|
|
b53a60f92d | ||
|
|
919bcbf5a3 | ||
|
|
6525703a94 | ||
|
|
a0e2408933 | ||
|
|
79e37e6b73 | ||
|
|
c57af32131 | ||
|
|
6ddabb5a45 | ||
|
|
ab90c4c36a | ||
|
|
57abc3215c | ||
|
|
8848e5b2fb | ||
|
|
9a12300877 | ||
|
|
31e052796d | ||
|
|
9ae6b71d2b | ||
|
|
944816e765 | ||
|
|
3e75a76602 | ||
|
|
ab16e1359c | ||
|
|
442522c2ff | ||
|
|
54e868dd72 | ||
|
|
40860c68ca | ||
|
|
3213cd74cf | ||
|
|
b8838c4728 | ||
|
|
047ed77dd4 | ||
|
|
78cb553b14 | ||
|
|
c5ebea7bbd | ||
|
|
7b02c74386 | ||
|
|
0c3464e6a2 | ||
|
|
d889d4fd30 | ||
|
|
70f89e98e8 | ||
|
|
2cb12a07c9 | ||
|
|
3d7f5d4289 | ||
|
|
3abf4c7bdb | ||
|
|
947b2b815c | ||
|
|
d167fb0fe7 | ||
|
|
b7da5b6684 | ||
|
|
df9c57f539 | ||
|
|
d5a7f8631c | ||
|
|
dcb618ce99 | ||
|
|
dc5620a52c | ||
|
|
40a3941b9e | ||
|
|
eb9229d326 | ||
|
|
0411e8acc1 | ||
|
|
f405b8927a | ||
|
|
47a507f5a6 | ||
|
|
bdca9715b2 | ||
|
|
0954ac143d | ||
|
|
9122633907 | ||
|
|
1b6aea3afb | ||
|
|
af10190e0b | ||
|
|
1acfc5139c | ||
|
|
404060373b | ||
|
|
a84544bef8 | ||
|
|
f38b602924 | ||
|
|
db57321cb8 | ||
|
|
b825636d3f | ||
|
|
fa3f8735ea | ||
|
|
c359b21d89 | ||
|
|
3ab1782dc2 | ||
|
|
91c228353b | ||
|
|
1336d66f78 | ||
|
|
1f7bec651d | ||
|
|
8f02e59c31 | ||
|
|
efb16cc69b | ||
|
|
f6020aa9f7 | ||
|
|
2d2b88e771 | ||
|
|
6731da2d68 | ||
|
|
cf8ab5a8d5 | ||
|
|
636aa91e21 | ||
|
|
a1c9a8aab1 | ||
|
|
73e7dd8084 | ||
|
|
6eb257388b | ||
|
|
ba2099d006 | ||
|
|
8f044bb19e | ||
|
|
889fbf688d | ||
|
|
ab879cc7d0 | ||
|
|
5b7a89ffb8 | ||
|
|
1eed5c7866 | ||
|
|
44777dc3cf | ||
|
|
c91b53d290 | ||
|
|
ef2ee17c13 | ||
|
|
a2aec15a38 | ||
|
|
73af985e60 | ||
|
|
988955374c | ||
|
|
28eaa6c20d | ||
|
|
5c247e008c | ||
|
|
bf02e9da44 | ||
|
|
fb9dbcf824 | ||
|
|
6a85b2daea | ||
|
|
a2ac2b0435 | ||
|
|
8a92f4ac71 | ||
|
|
2556ef10c2 | ||
|
|
661b4ae535 | ||
|
|
0bcb28d576 | ||
|
|
02ced74783 | ||
|
|
8afb8a91e2 | ||
|
|
dc421047d3 | ||
|
|
7fd2848278 | ||
|
|
ef8df5b578 | ||
|
|
1b4525656f | ||
|
|
fd6d8c71c7 | ||
|
|
2e202eca23 | ||
|
|
6b76603c60 | ||
|
|
e929a0c6b6 | ||
|
|
ee8d9bdcf9 | ||
|
|
d9cd7a72b1 | ||
|
|
6112ded96b | ||
|
|
dbe7cb336d | ||
|
|
376fc8a1bf | ||
|
|
9e09817722 | ||
|
|
6db37d9883 | ||
|
|
2a9e9954a8 | ||
|
|
e3e7fcf361 | ||
|
|
b057bc6afc | ||
|
|
1b368a4278 | ||
|
|
a55251f698 | ||
|
|
196241d2cc | ||
|
|
5b3cf86f68 | ||
|
|
6289b74470 | ||
|
|
e9ff8a1595 | ||
|
|
972f4832c1 | ||
|
|
560e342460 | ||
|
|
7b90868007 | ||
|
|
e21798b163 | ||
|
|
9b33f4ce85 | ||
|
|
7daa0159ec | ||
|
|
f0d3e6b8b9 | ||
|
|
82aa38c087 | ||
|
|
228e7e650e | ||
|
|
89e8788b03 | ||
|
|
3e1812280e | ||
|
|
5d3286654e | ||
|
|
cdb87866ae | ||
|
|
8919aa7ec0 | ||
|
|
4d6df7dd22 | ||
|
|
6f342dade5 | ||
|
|
957d0fcd01 | ||
|
|
662dfb7f21 | ||
|
|
7c08959460 | ||
|
|
fee562d57f | ||
|
|
643e5182f7 | ||
|
|
129aae79a1 | ||
|
|
ca93b63ca8 | ||
|
|
83ac44eabc | ||
|
|
3c922ee087 | ||
|
|
dcfe8b076f | ||
|
|
f1486e2d4b | ||
|
|
aee1cd8e41 | ||
|
|
1ee9f56041 | ||
|
|
777db20158 | ||
|
|
e969276828 | ||
|
|
e3acbdc8c2 | ||
|
|
128e0d03d7 | ||
|
|
d6ccb620be | ||
|
|
a498a98336 | ||
|
|
cc5c0037a5 | ||
|
|
45aafe0774 | ||
|
|
afae687b6a | ||
|
|
740eb442a8 | ||
|
|
a141dc942b | ||
|
|
83d167415a | ||
|
|
5c4d2f1d9f | ||
|
|
09c338dd5b | ||
|
|
bff7d559f9 | ||
|
|
51985d3bf6 | ||
|
|
1f3cd7adbd | ||
|
|
1f9a87e64f | ||
|
|
508ae12c8f | ||
|
|
92489bb624 | ||
|
|
e39d1e323a | ||
|
|
091b9cfafd | ||
|
|
fa982d4f69 | ||
|
|
08aaca09df | ||
|
|
f99fb0202f | ||
|
|
5636283f31 | ||
|
|
0ccb23b9d3 | ||
|
|
ee9a6c0b6c | ||
|
|
e3308e61b2 | ||
|
|
53e6ae479d | ||
|
|
64f55c0834 | ||
|
|
babd8517e9 | ||
|
|
0950393b82 | ||
|
|
08bcddf8d2 | ||
|
|
eae5f164e6 | ||
|
|
d5700bf8a3 | ||
|
|
d969d3df1a | ||
|
|
5e3126cd14 | ||
|
|
f3ef46e5c2 | ||
|
|
ca5e02f2f1 | ||
|
|
dc870495c5 | ||
|
|
a6491750f7 | ||
|
|
6dacc71cb4 | ||
|
|
23c00b571c | ||
|
|
cc61dc974b | ||
|
|
7f421a3c0b | ||
|
|
2740ad20b6 | ||
|
|
57e371aba5 | ||
|
|
c1096dc0ab | ||
|
|
08bdd12298 | ||
|
|
7b2e139e45 | ||
|
|
1ce1440df8 | ||
|
|
a7c897f2ad | ||
|
|
a344726c68 | ||
|
|
b0c31c7e10 | ||
|
|
2c530fee47 | ||
|
|
25d20f0f08 | ||
|
|
3aaebed274 | ||
|
|
f12725eea5 | ||
|
|
dbf8ef15ef | ||
|
|
de5abc95f5 | ||
|
|
04379e3faa | ||
|
|
fec57377db | ||
|
|
2f4750f77d | ||
|
|
820442bdbd | ||
|
|
e63648c9c4 | ||
|
|
a8751c5e77 | ||
|
|
196a92550c | ||
|
|
526fcd3544 | ||
|
|
f817e4f0fb | ||
|
|
d7ca91e395 | ||
|
|
e3c8d79dae | ||
|
|
2cb472f690 | ||
|
|
caee1d3bfe | ||
|
|
8069361faa | ||
|
|
02c567fd8c | ||
|
|
60f555117c | ||
|
|
7549f23956 | ||
|
|
2f92c2b3e9 | ||
|
|
a2b3ed3de1 | ||
|
|
f259e47110 | ||
|
|
10ffcb2c82 | ||
|
|
1564ee3ccf | ||
|
|
fb8b181205 | ||
|
|
b6b992e521 | ||
|
|
290f85ca1c | ||
|
|
bc73f7de05 | ||
|
|
1355f40a60 | ||
|
|
45873d4cbb | ||
|
|
f32847229a | ||
|
|
80840ce743 | ||
|
|
0434dca45f | ||
|
|
81bc2a384f | ||
|
|
2184964d78 | ||
|
|
b942e06297 | ||
|
|
5598db0d9e | ||
|
|
f7ad95f298 | ||
|
|
61e30ab419 | ||
|
|
90798e5e4d | ||
|
|
8be8af018f | ||
|
|
7abb39d02d | ||
|
|
72630c30ae | ||
|
|
990dce2232 | ||
|
|
2668f1cd26 | ||
|
|
2a28a00c19 | ||
|
|
9d7ab53685 | ||
|
|
95f3b9fcc1 | ||
|
|
ae170c6879 | ||
|
|
0831f0c202 | ||
|
|
fc214a7ef9 | ||
|
|
cb0bb885c4 | ||
|
|
053c51bb58 | ||
|
|
c1860aa4c4 | ||
|
|
4d14d663b3 | ||
|
|
ee3cd747b9 | ||
|
|
5f933ddc21 | ||
|
|
98dc183881 | ||
|
|
791650960b | ||
|
|
e8fef31a3e | ||
|
|
d48a2f89c6 | ||
|
|
c56f974ee4 | ||
|
|
6d8fd5853a | ||
|
|
99447d7a62 | ||
|
|
6455a44ed4 | ||
|
|
d8e572f091 | ||
|
|
cb05869e0c | ||
|
|
56ced93868 | ||
|
|
50dad36028 | ||
|
|
936b2db7df | ||
|
|
51ea306d9f | ||
|
|
4ded1e242e | ||
|
|
7bdfb54bee | ||
|
|
96975050b5 | ||
|
|
b84fd1526a | ||
|
|
0ec9194d78 | ||
|
|
2cb598309d | ||
|
|
1d91b9acf3 | ||
|
|
c776f086cd | ||
|
|
8d83240b1a | ||
|
|
f1f9be77d7 | ||
|
|
e5eb66bc7b | ||
|
|
5ef63fd414 | ||
|
|
29c3513cd4 | ||
|
|
d45295e4ee | ||
|
|
395f8dc4c5 | ||
|
|
375cc4955d | ||
|
|
6ff8aa7cef | ||
|
|
0117941422 | ||
|
|
004e4e68eb | ||
|
|
a72bb62a9d | ||
|
|
db17c69cd0 | ||
|
|
c6d3b1ebf3 | ||
|
|
a0feeb66c1 | ||
|
|
dbd71a3786 | ||
|
|
71b6550661 | ||
|
|
41755e1219 | ||
|
|
c9486e0939 | ||
|
|
2d6880cff3 | ||
|
|
6dda8125f7 | ||
|
|
11ba9ae12a | ||
|
|
a61a5539a7 | ||
|
|
77f7490aea | ||
|
|
a7198b6a81 | ||
|
|
977dbc805f | ||
|
|
abcca19820 | ||
|
|
52a7b5dcff | ||
|
|
9518714885 | ||
|
|
4a89fcf8ea | ||
|
|
d11e757c6e | ||
|
|
4f9ed7803f | ||
|
|
95bc069af9 | ||
|
|
d1d9bab65a | ||
|
|
e2560bf214 | ||
|
|
825322baa4 | ||
|
|
7a5ca5b226 | ||
|
|
cb4f022d17 | ||
|
|
913e4ea02e | ||
|
|
aa0d44a60b | ||
|
|
8b5f29df8f | ||
|
|
82954f5930 | ||
|
|
67f1858315 | ||
|
|
55bb81ceef | ||
|
|
6864810ace | ||
|
|
bae55636a8 | ||
|
|
f4778abd1f | ||
|
|
2cb716ce26 | ||
|
|
3246e9c6d4 | ||
|
|
ae6d5f54bd | ||
|
|
bd95c29866 | ||
|
|
074eed16e1 | ||
|
|
3b72a005fd | ||
|
|
afb9a4758f | ||
|
|
35c180216b | ||
|
|
f0c6fe5786 | ||
|
|
bd8c245b83 | ||
|
|
effc7265d4 | ||
|
|
bd9a8e5c33 | ||
|
|
c55d662e1f | ||
|
|
dbfabc1d80 | ||
|
|
d897936da5 | ||
|
|
f81a8c97c4 | ||
|
|
e93e01dd59 | ||
|
|
79b504ff93 | ||
|
|
52dafd4ab8 | ||
|
|
0cc538ac5a | ||
|
|
4b99d04454 | ||
|
|
708fad33f3 | ||
|
|
c6dc25c9c2 | ||
|
|
07be38cd01 | ||
|
|
0121e0ae16 | ||
|
|
f24b3ced28 | ||
|
|
157dfc928d | ||
|
|
d10639542d | ||
|
|
c0f0b7eb31 | ||
|
|
d6d70325db | ||
|
|
46954165d2 | ||
|
|
58e7d520bf | ||
|
|
a4f8040324 | ||
|
|
8d5cc9a3e6 | ||
|
|
4592ce4d55 | ||
|
|
b62b38b5af | ||
|
|
14b1d4630c | ||
|
|
8a42abd1e7 | ||
|
|
41e5dfdf18 | ||
|
|
41de13388c | ||
|
|
1f16f13169 | ||
|
|
ef23d40972 | ||
|
|
b07b43496c | ||
|
|
2ba04f1a6a | ||
|
|
e7e06dea41 | ||
|
|
ce32504a81 | ||
|
|
7cd6c94482 | ||
|
|
fcb3d01194 | ||
|
|
af0b53990c | ||
|
|
e3861954ba | ||
|
|
006dd8dc77 | ||
|
|
dbff203c62 | ||
|
|
f45eb891cd | ||
|
|
77b58240cf | ||
|
|
97ae1ff10e | ||
|
|
8734a4f24b | ||
|
|
480fce55a8 | ||
|
|
d4136fadd2 | ||
|
|
308bc375bd | ||
|
|
3bbcf6a41e | ||
|
|
3d5d10a4c1 | ||
|
|
0e979c14f0 | ||
|
|
70f49114ac | ||
|
|
f730607414 | ||
|
|
0172ee25c9 | ||
|
|
699d75bb9f | ||
|
|
95822704c8 | ||
|
|
76e5f69e67 | ||
|
|
abd31d0249 | ||
|
|
9ae7ee6e2d | ||
|
|
18f4cc25f3 | ||
|
|
b755192600 | ||
|
|
045140cfbc | ||
|
|
4e7e44e25f | ||
|
|
5c4dfa4cc6 | ||
|
|
b7e3401e8e | ||
|
|
90cee7fb31 | ||
|
|
8e0e3cf35e | ||
|
|
7f72584537 | ||
|
|
8f0d606892 | ||
|
|
9fafe64cff | ||
|
|
94b42e0597 | ||
|
|
b2c1960d93 | ||
|
|
9d24b4cc35 | ||
|
|
3d675b033c | ||
|
|
0d2d9be8b3 | ||
|
|
6e9b6dab97 | ||
|
|
44a1717f6d | ||
|
|
4f51c74297 | ||
|
|
87c64a8c5d | ||
|
|
b6c6635f22 | ||
|
|
5a7abcb07c | ||
|
|
65232d134b | ||
|
|
d7b4bdefe5 | ||
|
|
6d9174bea1 | ||
|
|
921edfd4c5 | ||
|
|
786d5b0667 | ||
|
|
e846c71f20 | ||
|
|
0108e2ef5a | ||
|
|
9a81277ff6 | ||
|
|
06cc2ff316 | ||
|
|
7cdf4cb48c | ||
|
|
c34c547f1f | ||
|
|
9507294db7 | ||
|
|
ae7dd62d9f | ||
|
|
52e309cb09 | ||
|
|
b580373982 | ||
|
|
ec7bde5bb2 | ||
|
|
3516eeec5b | ||
|
|
52351192e6 | ||
|
|
3a6f04496d | ||
|
|
47f2df2112 | ||
|
|
363a26b8a1 | ||
|
|
7e50a00f55 | ||
|
|
a7d6a80e82 | ||
|
|
e7da95b2ac | ||
|
|
74fca23d59 | ||
|
|
0a12fa1253 | ||
|
|
1263068140 | ||
|
|
916c191b18 | ||
|
|
d8c0220353 | ||
|
|
4ab425d15c | ||
|
|
74e5633d1c | ||
|
|
89d36bbc61 | ||
|
|
1877ac18a5 | ||
|
|
5e42e25617 | ||
|
|
c27c9564cf | ||
|
|
c4b0da335d | ||
|
|
fab36ec008 | ||
|
|
8a2b875779 | ||
|
|
efaffb8298 | ||
|
|
e004eb3f00 | ||
|
|
43e8f6dc81 | ||
|
|
f5bff8fe7c | ||
|
|
fad8484b93 | ||
|
|
7664b54f89 | ||
|
|
21cbc353dd | ||
|
|
8d66306ec4 | ||
|
|
479daf0e76 | ||
|
|
bf0fbb7b10 | ||
|
|
d3c91f1585 | ||
|
|
ca165b328a | ||
|
|
fa2ffeea92 | ||
|
|
0d00965ac3 | ||
|
|
7d7bec1f80 | ||
|
|
b6fd915365 | ||
|
|
fecae72267 | ||
|
|
7bffd91e3f | ||
|
|
f859521a7e | ||
|
|
a869386fac | ||
|
|
8bc7885b7a | ||
|
|
78be46738d | ||
|
|
6fce73855c | ||
|
|
fa844a6223 | ||
|
|
906379dd09 | ||
|
|
37cded612f | ||
|
|
73e8fade61 | ||
|
|
758cc7afab | ||
|
|
d74b7b06d2 | ||
|
|
39009f2f71 | ||
|
|
9fdc1c6813 | ||
|
|
c5568fe830 | ||
|
|
bad81f84b9 | ||
|
|
2ac08dd0e6 | ||
|
|
408ffc4539 | ||
|
|
eb958327c5 | ||
|
|
e157d77a1e | ||
|
|
e961c9ea8f | ||
|
|
258c4f769d | ||
|
|
b31fedd857 | ||
|
|
eafe69500b | ||
|
|
ae09990c43 | ||
|
|
cf54b65c32 | ||
|
|
7974421fa1 | ||
|
|
847a098d4e | ||
|
|
eb4de0ae0f | ||
|
|
bca9f3b753 | ||
|
|
cad8a9a5d3 | ||
|
|
f5f36d21e8 | ||
|
|
c51435c114 | ||
|
|
2a7f1780b4 | ||
|
|
98a44e40fb | ||
|
|
65cf6fa9a1 | ||
|
|
b2e32d1720 | ||
|
|
f0bfedbe8e | ||
|
|
fd4e059c13 | ||
|
|
a53575e154 | ||
|
|
4a73484603 | ||
|
|
03b380f90b | ||
|
|
a2bd3b2dfe | ||
|
|
56fe140ebf | ||
|
|
4fafcce740 | ||
|
|
02352c4ae6 | ||
|
|
4b74aab335 | ||
|
|
2d67ac189d | ||
|
|
8ece62e23d | ||
|
|
56c2bdd77d | ||
|
|
1f555f1930 | ||
|
|
8496432c14 | ||
|
|
1672ffa670 | ||
|
|
6aab199f12 | ||
|
|
46d0c379a4 | ||
|
|
99240f145a | ||
|
|
3c9079d73c | ||
|
|
0eb98b9a6c | ||
|
|
76bfd98b77 | ||
|
|
3348640c88 | ||
|
|
d81c64fd2b | ||
|
|
8b4c919617 | ||
|
|
76c58953df | ||
|
|
4ddc5caa49 | ||
|
|
694663bd95 | ||
|
|
62aba5844e | ||
|
|
d0d60cef05 | ||
|
|
3d293fdcb0 | ||
|
|
96e9528046 | ||
|
|
4ea24b3203 | ||
|
|
a756eea25a | ||
|
|
210020e489 | ||
|
|
e586ead024 | ||
|
|
14c80bf1dc | ||
|
|
bdd56e794a | ||
|
|
a544548934 | ||
|
|
e06c1d61fb | ||
|
|
600c5209c6 | ||
|
|
bee90366ee | ||
|
|
e9bc4e9417 | ||
|
|
f01ff15761 | ||
|
|
356ada159d | ||
|
|
cc831e16d8 | ||
|
|
b8dc46ad01 | ||
|
|
d8ab19087d | ||
|
|
ec8a79eedd | ||
|
|
f1e2a8e9d8 | ||
|
|
4042a5fe5d | ||
|
|
a4752751ed | ||
|
|
e23ecf46d1 | ||
|
|
70a8c597a6 | ||
|
|
fa639bdb53 | ||
|
|
233bdd5b1d | ||
|
|
a0ab6d35c7 | ||
|
|
bd29680ce7 | ||
|
|
7139e92554 | ||
|
|
897df53466 | ||
|
|
58281711f6 | ||
|
|
b524383aa3 | ||
|
|
75a16e3588 | ||
|
|
1453032ad6 | ||
|
|
824ab4afad | ||
|
|
73dd41c67f | ||
|
|
59ee77355d | ||
|
|
5c758773ad | ||
|
|
46de49df06 | ||
|
|
d1c54a9a74 | ||
|
|
e7527c45cd | ||
|
|
7d5207aa67 | ||
|
|
654302e691 | ||
|
|
ee673b57fd | ||
|
|
2be374b841 | ||
|
|
906e1eda89 | ||
|
|
ece02cc4fa | ||
|
|
876ad60ddf | ||
|
|
862da354ac | ||
|
|
8fd477b979 | ||
|
|
2d7005655c | ||
|
|
7322f8348a | ||
|
|
e3e3a12e73 | ||
|
|
77cdd057a4 | ||
|
|
e8206fbdd9 | ||
|
|
589f15a77b | ||
|
|
7bb443678a | ||
|
|
6390415101 | ||
|
|
4abf192e11 | ||
|
|
1fed37f9da | ||
|
|
a9d86a7447 | ||
|
|
2abe4c3cef | ||
|
|
0542c25003 | ||
|
|
1b8ee4e290 | ||
|
|
51128cba55 | ||
|
|
3612432581 | ||
|
|
deca000a1b | ||
|
|
39cccb5653 | ||
|
|
f6838dc985 | ||
|
|
8cd4d92395 | ||
|
|
3bf9906f45 | ||
|
|
9f7daf96ef | ||
|
|
67de4df155 | ||
|
|
bc51a4bd1c | ||
|
|
bb54616018 | ||
|
|
6bcff5e014 | ||
|
|
8970a03a9a | ||
|
|
3ad717ca35 | ||
|
|
b14f72c67a | ||
|
|
45d036804f | ||
|
|
8f606db233 | ||
|
|
3766ba5402 | ||
|
|
e851813cef | ||
|
|
4d49ad9141 | ||
|
|
16618b3af2 | ||
|
|
0e5c0f664f | ||
|
|
7be9281431 | ||
|
|
ee0327fac1 | ||
|
|
9930de3e7f | ||
|
|
e8503e89c6 | ||
|
|
1d9ed419eb | ||
|
|
0207652e3e | ||
|
|
0f1e99c5cb | ||
|
|
f134bc7efb | ||
|
|
dcd7c7180e | ||
|
|
fbbfcd075b | ||
|
|
f42d2e4140 | ||
|
|
88882cebbc | ||
|
|
17a979675c | ||
|
|
4642850c79 | ||
|
|
e8d6eebb04 | ||
|
|
864c5160c0 | ||
|
|
99b5a00c12 | ||
|
|
85ee1f07d7 | ||
|
|
e58b4394e0 | ||
|
|
1e91a57bf1 | ||
|
|
39cee52a7e | ||
|
|
72068f939d | ||
|
|
096d0d3cad | ||
|
|
2472ab0121 | ||
|
|
00421717b8 | ||
|
|
ae96d93f94 | ||
|
|
8522c40c8f | ||
|
|
23f86e95f1 | ||
|
|
eed2045189 | ||
|
|
217785bf0f | ||
|
|
6aef50dc5d | ||
|
|
16b6e3caa7 | ||
|
|
3de4c99a8a | ||
|
|
980aa19a75 | ||
|
|
fb4b57e056 | ||
|
|
03638365ea | ||
|
|
157cb1c83d | ||
|
|
e51f11c2b1 | ||
|
|
1ad0961dd8 | ||
|
|
46ff7dd4e2 | ||
|
|
8b067df914 | ||
|
|
ef43b13272 | ||
|
|
e8e9974224 | ||
|
|
feebbb9f04 | ||
|
|
bc4f06dd1d | ||
|
|
971e4fc909 | ||
|
|
51cc765949 | ||
|
|
19c6a4fffa | ||
|
|
105ac32d2f | ||
|
|
57550675d2 | ||
|
|
e674abc5c0 | ||
|
|
f965c96f51 | ||
|
|
c76b8ed9e0 | ||
|
|
4fbd0d8a7b | ||
|
|
2186c0fff6 | ||
|
|
1adca9a9c1 | ||
|
|
9408353f2b | ||
|
|
84f4d453d2 | ||
|
|
d10209f2a1 | ||
|
|
3ae149c72f | ||
|
|
47385acc3b | ||
|
|
814eeaa900 | ||
|
|
5f2ea13aad | ||
|
|
41ca217931 | ||
|
|
b57d36e8dd | ||
|
|
9a4be70734 | ||
|
|
a8443595a6 | ||
|
|
fd0a70ac58 | ||
|
|
8a8685c968 | ||
|
|
9e6cb8da8e | ||
|
|
054ec54d51 | ||
|
|
272ce773cb | ||
|
|
050b925f7b | ||
|
|
0087940898 | ||
|
|
e323c014f9 | ||
|
|
cc465c7554 | ||
|
|
14cb37564f | ||
|
|
094db56c3b | ||
|
|
aabb709b8b | ||
|
|
0833dd2db9 | ||
|
|
cd3f912be4 | ||
|
|
665c516db6 | ||
|
|
b670da9fa0 | ||
|
|
80bee9bffe | ||
|
|
d85a70e8ad | ||
|
|
8f21533e76 | ||
|
|
89996482a1 | ||
|
|
03c10dce91 | ||
|
|
bd5331be05 | ||
|
|
46e1645289 | ||
|
|
4ce3965747 | ||
|
|
9d4af19db3 | ||
|
|
48e034f4be | ||
|
|
f8959baa2f | ||
|
|
8ed5997eae | ||
|
|
daf9f50ac8 | ||
|
|
6b11013c1a |
No files matched your search
@@ -4,6 +4,7 @@ description: >
|
||||
If you are not 100% certain this is a bug please go to our forums, Reddit or Discord server first.
|
||||
labels:
|
||||
- Support
|
||||
type: bug
|
||||
body:
|
||||
- type: input
|
||||
attributes:
|
||||
|
||||
@@ -2,6 +2,7 @@ name: Feature request
|
||||
description: What new feature would you like to have added to SABnzbd?
|
||||
labels:
|
||||
- Support
|
||||
type: feature
|
||||
body:
|
||||
- type: textarea
|
||||
attributes:
|
||||
|
||||
+26
-2
@@ -7,6 +7,7 @@
|
||||
"schedule": [
|
||||
"before 8am on Monday"
|
||||
],
|
||||
"minimumReleaseAge": "14 days",
|
||||
"baseBranches": ["develop"],
|
||||
"pip_requirements": {
|
||||
"fileMatch": [
|
||||
@@ -16,13 +17,36 @@
|
||||
"builder/release-requirements.txt"
|
||||
]
|
||||
},
|
||||
"customManagers": [
|
||||
{
|
||||
"customType": "regex",
|
||||
"fileMatch": ["^\\.github/workflows/build_release\\.yml$"],
|
||||
"matchStrings": ["PYTHON_VERSION:\\s*\"(?<currentValue>.*?)\""],
|
||||
"datasourceTemplate": "python-version",
|
||||
"depNameTemplate": "python"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"fileMatch": ["^sabnzbd/constants\\.py$"],
|
||||
"matchStrings": ["SABCTOOLS_VERSION_REQUIRED\\s*=\\s*\"(?<currentValue>.*?)\""],
|
||||
"datasourceTemplate": "pypi",
|
||||
"depNameTemplate": "sabctools"
|
||||
},
|
||||
{
|
||||
"customType": "regex",
|
||||
"fileMatch": ["^\\.github/workflows/translations\\.yml$"],
|
||||
"matchStrings": ["TX_VERSION=\"(?<currentValue>.*?)\""],
|
||||
"datasourceTemplate": "github-releases",
|
||||
"depNameTemplate": "transifex/cli"
|
||||
}
|
||||
],
|
||||
"ignorePaths": [],
|
||||
"ignoreDeps": [
|
||||
"jaraco.text",
|
||||
"jaraco.context",
|
||||
"jaraco.collections",
|
||||
"sabctools",
|
||||
"paho-mqtt"
|
||||
"tempora",
|
||||
"cryptography"
|
||||
],
|
||||
"packageRules": [
|
||||
{
|
||||
|
||||
@@ -2,9 +2,16 @@ name: Build binaries and source distribution
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
# Setting PYTHONNODEBUGRANGES reduces binary size
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
env:
|
||||
# Setting PYTHONNODEBUGRANGES reduces binary size
|
||||
PYTHONNODEBUGRANGES: 1
|
||||
# For macOS we download the official Python, because the GitHub one only support newer macOS 11+ versions
|
||||
# We also use the specific pin for Windows release, so Renovate can update it all at once
|
||||
PYTHON_VERSION: "3.14.6"
|
||||
|
||||
jobs:
|
||||
build_windows:
|
||||
@@ -22,11 +29,11 @@ jobs:
|
||||
runs-on: ${{ matrix.runs-on }}
|
||||
timeout-minutes: 15
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v6
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: "3.14"
|
||||
python-version: ${{ env.PYTHON_VERSION }}
|
||||
architecture: ${{ matrix.architecture }}
|
||||
cache: pip
|
||||
cache-dependency-path: "**/requirements.txt"
|
||||
@@ -34,19 +41,21 @@ jobs:
|
||||
# Without dependencies to make sure everything is covered in the requirements.txt
|
||||
# Special settings:
|
||||
# cryptography see https://github.com/pyca/cryptography/pull/14216
|
||||
# charset-normalizer see https://github.com/jawah/charset_normalizer/issues/714
|
||||
run: |
|
||||
python --version
|
||||
python -m pip install --upgrade pip wheel
|
||||
pip install --upgrade -r requirements.txt --no-dependencies --only-binary=cryptography --no-binary charset-normalizer
|
||||
pip install --upgrade -r builder/requirements.txt --no-dependencies
|
||||
pip install -r requirements.txt --no-dependencies --only-binary=cryptography
|
||||
pip install -r builder/requirements.txt --no-dependencies
|
||||
- name: Build Windows standalone binary
|
||||
id: windows_binary
|
||||
run: python builder/package.py binary
|
||||
- name: Upload Windows standalone binary (unsigned)
|
||||
# When releasing, SignPath consumes this artifact directly and requires the
|
||||
# zip-in-zip layout because they don't support the archive-flag
|
||||
uses: actions/upload-artifact@v7
|
||||
id: upload-unsigned-binary
|
||||
with:
|
||||
archive: ${{ contains(github.ref, 'refs/tags/') }}
|
||||
path: "*-win*-bin.zip"
|
||||
name: Windows standalone binary (${{ matrix.architecture }})
|
||||
- name: Sign Windows standalone binary
|
||||
@@ -62,11 +71,13 @@ jobs:
|
||||
wait-for-completion: true
|
||||
output-artifact-directory: "signed"
|
||||
- name: Upload Windows standalone binary (signed)
|
||||
# The release file is a .zip, which download-artifact would extract if
|
||||
# uploaded raw, so keep it archived and let the release job unpack it
|
||||
uses: actions/upload-artifact@v7
|
||||
if: contains(github.ref, 'refs/tags/')
|
||||
with:
|
||||
name: Windows standalone binary (${{ matrix.architecture }}, signed)
|
||||
path: "signed"
|
||||
path: "signed/*-win*-bin.zip"
|
||||
- name: Build Windows installer
|
||||
if: matrix.architecture == 'x64'
|
||||
run: python builder/package.py installer
|
||||
@@ -75,6 +86,7 @@ jobs:
|
||||
uses: actions/upload-artifact@v7
|
||||
id: upload-unsigned-installer
|
||||
with:
|
||||
archive: ${{ contains(github.ref, 'refs/tags/') }}
|
||||
path: "*-win-setup.exe"
|
||||
name: Windows installer (${{ matrix.architecture }})
|
||||
- name: Sign Windows installer
|
||||
@@ -93,7 +105,7 @@ jobs:
|
||||
if: matrix.architecture == 'x64' && contains(github.ref, 'refs/tags/')
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: Windows installer (${{ matrix.architecture }}, signed)
|
||||
archive: false
|
||||
path: "signed/*-win-setup.exe"
|
||||
|
||||
build_macos:
|
||||
@@ -101,26 +113,24 @@ jobs:
|
||||
runs-on: macos-14
|
||||
timeout-minutes: 15
|
||||
env:
|
||||
# We need the official Python, because the GA ones only support newer macOS versions
|
||||
# The deployment target is picked up by the Python build tools automatically
|
||||
# If updated, make sure to also set LSMinimumSystemVersion in SABnzbd.spec
|
||||
PYTHON_VERSION: "3.14.3"
|
||||
MACOSX_DEPLOYMENT_TARGET: "10.15"
|
||||
# We need to force compile for universal2 support
|
||||
CFLAGS: -arch x86_64 -arch arm64
|
||||
ARCHFLAGS: -arch x86_64 -arch arm64
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python
|
||||
# Only use this for the caching of pip packages!
|
||||
uses: actions/setup-python@v6
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: "3.14"
|
||||
cache: pip
|
||||
cache-dependency-path: "**/requirements.txt"
|
||||
- name: Cache Python download
|
||||
id: cache-python-download
|
||||
uses: actions/cache@v5
|
||||
uses: actions/cache@v6
|
||||
with:
|
||||
path: ~/python.pkg
|
||||
key: cache-macOS-Python-${{ env.PYTHON_VERSION }}
|
||||
@@ -134,8 +144,8 @@ jobs:
|
||||
run: |
|
||||
python3 --version
|
||||
pip3 install --upgrade pip wheel
|
||||
pip3 install --upgrade -r requirements.txt --no-binary cffi,CT3,PyYAML,charset_normalizer --no-dependencies
|
||||
pip3 install --upgrade -r builder/requirements.txt --no-dependencies
|
||||
pip3 install -r requirements.txt --no-binary cffi,CT3,PyYAML --no-dependencies
|
||||
pip3 install -r builder/requirements.txt --no-dependencies
|
||||
- name: Import macOS codesign certificates
|
||||
# Taken from https://github.com/Apple-Actions/import-codesign-certs/pull/27 (comments)
|
||||
env:
|
||||
@@ -157,113 +167,56 @@ jobs:
|
||||
- name: Upload source distribution
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
archive: false
|
||||
path: "*-src.tar.gz"
|
||||
name: Source distribution
|
||||
- name: Build macOS binary
|
||||
env:
|
||||
SIGNING_AUTH: ${{ secrets.SIGNING_AUTH }}
|
||||
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_USER }}
|
||||
NOTARIZATION_PASS: ${{ secrets.NOTARIZATION_PASS }}
|
||||
run: |
|
||||
python3 builder/package.py app
|
||||
python3 builder/make_dmg.py
|
||||
python3 builder/package.py app dmg
|
||||
- name: Upload macOS binary
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
archive: false
|
||||
path: "*-macos.dmg"
|
||||
name: macOS binary
|
||||
|
||||
build-snap:
|
||||
name: Build Snap Packages (${{ matrix.linux_arch }})
|
||||
timeout-minutes: 30
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
linux_arch: x64
|
||||
- os: ubuntu-24.04-arm
|
||||
linux_arch: arm64
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- name: Cache par2cmdline-turbo tarball
|
||||
uses: actions/cache@v5
|
||||
id: cache-par2cmdline
|
||||
# Clearing the cache in case of new version requires manual clearing in GitHub!
|
||||
with:
|
||||
path: snap/par2cmdline.tar.gz
|
||||
key: cache-par2cmdline
|
||||
- name: Download par2cmdline-turbo tarball
|
||||
if: steps.cache-par2cmdline.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
PAR2_TARBALL=$(curl -sL https://api.github.com/repos/animetosho/par2cmdline-turbo/releases/latest | jq -r '.tarball_url')
|
||||
curl -o snap/par2cmdline.tar.gz -L "$PAR2_TARBALL"
|
||||
- uses: snapcore/action-build@v1
|
||||
name: Build snap
|
||||
id: snapcraft
|
||||
- name: Test snap installation
|
||||
run: |
|
||||
sudo snap install --dangerous *.snap
|
||||
sudo snap connect sabnzbd:removable-media
|
||||
# Basic smoke test - check that the binary exists and can show help
|
||||
timeout 10s snap run sabnzbd --help || true
|
||||
sudo snap remove sabnzbd
|
||||
- name: Upload snap
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: Snap package (${{ matrix.linux_arch }})
|
||||
path: ${{ steps.snapcraft.outputs.snap }}
|
||||
- name: Determine snap channel
|
||||
if: contains(github.ref, 'refs/tags/')
|
||||
id: snap-channel
|
||||
run: |
|
||||
TAG="${GITHUB_REF#refs/tags/}"
|
||||
if [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "channel=stable,beta" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "channel=beta" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
- name: Publish snap
|
||||
uses: snapcore/action-publish@v1
|
||||
if: contains(github.ref, 'refs/tags/')
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }}
|
||||
with:
|
||||
store_login: ${{ secrets.SNAP_TOKEN }}
|
||||
snap: ${{ steps.snapcraft.outputs.snap }}
|
||||
release: ${{ steps.snap-channel.outputs.channel }}
|
||||
|
||||
release:
|
||||
name: Prepare Release
|
||||
runs-on: ubuntu-latest
|
||||
needs: [build_windows, build_macos]
|
||||
if: contains(github.ref, 'refs/tags/')
|
||||
environment: release
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python
|
||||
uses: actions/setup-python@v6
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: "3.14"
|
||||
cache: pip
|
||||
cache-dependency-path: "builder/release-requirements.txt"
|
||||
- name: Download Source distribution artifact
|
||||
- name: Download release artifacts
|
||||
# The installer, source and macOS builds are uploaded with archive: false,
|
||||
# so their artifact name is the release filename
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: Source distribution
|
||||
- name: Download macOS artifact
|
||||
pattern: "SABnzbd-*"
|
||||
merge-multiple: true
|
||||
- name: Download signed Windows binaries
|
||||
# These stay archived (.zip release files), so download-artifact unpacks
|
||||
# them back into the release .zip
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
name: macOS binary
|
||||
- name: Download Windows artifacts
|
||||
uses: actions/download-artifact@v8
|
||||
with:
|
||||
pattern: ${{ (contains(github.ref, 'refs/tags/')) && '*signed*' || '*Windows*' }}
|
||||
pattern: "*signed*"
|
||||
merge-multiple: true
|
||||
- name: Prepare official release
|
||||
env:
|
||||
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
|
||||
REDDIT_TOKEN: ${{ secrets.REDDIT_TOKEN }}
|
||||
LINUXSERVER_WEBHOOK_TOKEN: ${{ secrets.LINUXSERVER_WEBHOOK_TOKEN }}
|
||||
DISCORD_WEBHOOK_TESTING: ${{ secrets.DISCORD_WEBHOOK_TESTING }}
|
||||
DISCORD_WEBHOOK_STABLE: ${{ secrets.DISCORD_WEBHOOK_STABLE }}
|
||||
run: |
|
||||
pip3 install -r builder/release-requirements.txt
|
||||
pip3 install -r builder/release-requirements.txt --no-dependencies
|
||||
python3 builder/release.py
|
||||
@@ -0,0 +1,91 @@
|
||||
name: Build and publish Snap packages
|
||||
|
||||
on:
|
||||
push:
|
||||
paths:
|
||||
- 'snap/**'
|
||||
- 'requirements.txt'
|
||||
- '.github/workflows/build_snaps.yml'
|
||||
pull_request:
|
||||
paths:
|
||||
- 'snap/**'
|
||||
- 'requirements.txt'
|
||||
- '.github/workflows/build_snaps.yml'
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
build-snap:
|
||||
name: Build Snap Packages (${{ matrix.linux_arch }})
|
||||
timeout-minutes: 30
|
||||
runs-on: ${{ matrix.os }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
include:
|
||||
- os: ubuntu-latest
|
||||
linux_arch: x64
|
||||
- os: ubuntu-24.04-arm
|
||||
linux_arch: arm64
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Cache par2cmdline-turbo tarball
|
||||
uses: actions/cache@v6
|
||||
id: cache-par2cmdline
|
||||
# Clearing the cache in case of new version requires manual clearing in GitHub!
|
||||
with:
|
||||
path: snap/par2cmdline.tar.gz
|
||||
key: cache-par2cmdline
|
||||
- name: Download par2cmdline-turbo tarball
|
||||
if: steps.cache-par2cmdline.outputs.cache-hit != 'true'
|
||||
run: |
|
||||
PAR2_TARBALL=$(curl -sL https://api.github.com/repos/animetosho/par2cmdline-turbo/releases/latest | jq -r '.tarball_url')
|
||||
curl -o snap/par2cmdline.tar.gz -L "$PAR2_TARBALL"
|
||||
- uses: snapcore/action-build@v1
|
||||
name: Build snap
|
||||
id: snapcraft
|
||||
- name: Test snap installation
|
||||
run: |
|
||||
sudo snap install --dangerous *.snap
|
||||
sudo snap connect sabnzbd:removable-media
|
||||
# Installing a daemon snap starts the service automatically.
|
||||
if ! curl -fsSL -o /dev/null \
|
||||
--retry 30 --retry-delay 2 --retry-connrefused --retry-all-errors \
|
||||
http://127.0.0.1:8080/; then
|
||||
echo "::error::SABnzbd web UI did not come up"
|
||||
sudo snap logs sabnzbd -n 200 || true
|
||||
systemctl status snap.sabnzbd.sabnzbd.service --no-pager || true
|
||||
exit 1
|
||||
fi
|
||||
echo "SABnzbd web UI responded"
|
||||
sudo snap remove sabnzbd
|
||||
- name: Upload snap
|
||||
uses: actions/upload-artifact@v7
|
||||
with:
|
||||
name: Snap package (${{ matrix.linux_arch }})
|
||||
path: ${{ steps.snapcraft.outputs.snap }}
|
||||
- name: Determine snap channel
|
||||
if: contains(github.ref, 'refs/tags/')
|
||||
id: snap-channel
|
||||
run: |
|
||||
TAG="${GITHUB_REF#refs/tags/}"
|
||||
if [[ "$TAG" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
|
||||
echo "channel=stable,beta" >> "$GITHUB_OUTPUT"
|
||||
else
|
||||
echo "channel=beta" >> "$GITHUB_OUTPUT"
|
||||
fi
|
||||
- name: Publish snap
|
||||
uses: snapcore/action-publish@v1
|
||||
if: contains(github.ref, 'refs/tags/')
|
||||
env:
|
||||
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }}
|
||||
with:
|
||||
store_login: ${{ secrets.SNAP_TOKEN }}
|
||||
snap: ${{ steps.snapcraft.outputs.snap }}
|
||||
release: ${{ steps.snap-channel.outputs.channel }}
|
||||
@@ -0,0 +1,26 @@
|
||||
name: "Claude Review (manual)"
|
||||
on:
|
||||
issue_comment:
|
||||
types: [created]
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: write
|
||||
issues: read
|
||||
|
||||
jobs:
|
||||
review:
|
||||
name: "Review PR on @claude mention"
|
||||
# Only PR comments containing @claude, and only from maintainers
|
||||
if: >
|
||||
github.repository_owner == 'sabnzbd' &&
|
||||
github.event.issue.pull_request &&
|
||||
contains(github.event.comment.body, '@claude') &&
|
||||
contains(fromJSON('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- uses: anthropics/claude-code-action@v1
|
||||
with:
|
||||
claude_code_oauth_token: ${{ secrets.CLAUDE_CODE_OAUTH_TOKEN }}
|
||||
github_token: ${{ secrets.GITHUB_TOKEN }}
|
||||
@@ -2,15 +2,22 @@ name: CI Tests
|
||||
|
||||
on: [push, pull_request]
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
jobs:
|
||||
black:
|
||||
name: Black Code Formatter
|
||||
black-and-ruff:
|
||||
name: Black and Ruff checks
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- run: pip install black
|
||||
# Tools folder excluded for now due to https://github.com/psf/black/issues/4963
|
||||
- run: >
|
||||
- uses: actions/checkout@v7
|
||||
- run: pip install ruff black
|
||||
- name: Black code formatter
|
||||
run: >
|
||||
black
|
||||
SABnzbd.py
|
||||
sabnzbd
|
||||
@@ -18,9 +25,11 @@ jobs:
|
||||
builder
|
||||
builder/SABnzbd.spec
|
||||
tests
|
||||
--line-length=120
|
||||
tools
|
||||
--check
|
||||
--diff
|
||||
- name: Ruff checks
|
||||
run: ruff check
|
||||
|
||||
test:
|
||||
name: Test ${{ matrix.name }} - Python ${{ matrix.python-version }}
|
||||
@@ -29,7 +38,8 @@ jobs:
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
python-version: [ "3.9", "3.10", "3.11", "3.12", "3.13", "3.14" ]
|
||||
# TODO: Remove libxml2-dev libxslt-dev below once 3.15 is stable and lxml releases wheels!
|
||||
python-version: [ "3.10", "3.11", "3.12", "3.13", "3.14", "3.15-dev" ]
|
||||
name: ["Linux"]
|
||||
os: [ubuntu-latest]
|
||||
include:
|
||||
@@ -41,21 +51,21 @@ jobs:
|
||||
python-version: "3.14"
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@v7
|
||||
- name: Set up Python ${{ matrix.python-version }}
|
||||
uses: actions/setup-python@v6
|
||||
uses: actions/setup-python@v7
|
||||
with:
|
||||
python-version: ${{ matrix.python-version }}
|
||||
cache: pip
|
||||
cache-dependency-path: "**/requirements.txt"
|
||||
- name: Install system dependencies
|
||||
if: runner.os == 'Linux'
|
||||
run: sudo apt-get install unrar 7zip par2
|
||||
run: sudo apt-get install unrar 7zip par2 libxml2-dev libxslt-dev
|
||||
- name: Install Python dependencies
|
||||
run: |
|
||||
python --version
|
||||
python -m pip install --upgrade pip wheel
|
||||
pip install --upgrade -r requirements.txt --no-dependencies
|
||||
pip install -r requirements.txt --no-dependencies
|
||||
pip install --upgrade -r tests/requirements.txt
|
||||
- name: Test SABnzbd
|
||||
run: pytest -s
|
||||
@@ -4,6 +4,10 @@ on:
|
||||
- cron: "30 1 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
issues: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
stale:
|
||||
name: "Close stale issues"
|
||||
@@ -19,7 +23,7 @@ jobs:
|
||||
This issue has been automatically marked as stale because it has not had
|
||||
recent activity. It will be closed if no further activity occurs. Thank you
|
||||
for your contributions.
|
||||
exempt-issue-labels: "Feature request, Work in progress, Bug"
|
||||
only-issue-labels: "Support"
|
||||
|
||||
lock:
|
||||
name: "Lock old issues"
|
||||
|
||||
@@ -5,6 +5,13 @@ on:
|
||||
branches:
|
||||
- develop
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
jobs:
|
||||
translations:
|
||||
name: Update translatable texts
|
||||
@@ -12,32 +19,39 @@ jobs:
|
||||
env:
|
||||
TX_TOKEN: ${{ secrets.TX_TOKEN }}
|
||||
steps:
|
||||
- uses: actions/checkout@v6
|
||||
- uses: actions/checkout@v7
|
||||
with:
|
||||
token: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
|
||||
# Need the parent commit too so we can diff HEAD and detect local translation edits
|
||||
fetch-depth: 2
|
||||
- name: Generate translatable texts
|
||||
run: |
|
||||
python3 tools/extract_pot.py
|
||||
- name: Push/pull Transifex translations
|
||||
if: env.TX_TOKEN
|
||||
# Add --translation to the push command in order to update Transifex using local translation edits
|
||||
# However, this prevents modifying existing translations in Transifex as they will be overwritten by the push!
|
||||
# We use fixed version and manual download (instead of their sh script) to prevent potential supply-chain attack.
|
||||
# Changes are commited directly to the repo, so this is quite sensative and worth the extra hassle!
|
||||
# When the current commit contains local translation edits (changes to po/**/*.po), we add --translation so
|
||||
# those edits are pushed to Transifex. Note: this overwrites the matching translations in Transifex with our
|
||||
# local versions, so we only do it when local .po files actually changed.
|
||||
run: |
|
||||
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
|
||||
./tx push --source
|
||||
TX_VERSION="v1.6.17"
|
||||
curl -fsSL "https://github.com/transifex/cli/releases/download/${TX_VERSION}/tx-linux-amd64.tar.gz" -o tx-linux-amd64.tar.gz
|
||||
tar -xzf tx-linux-amd64.tar.gz
|
||||
PUSH_ARGS="--source"
|
||||
if git show --name-only --format= HEAD | grep -qE '^po/.+\.po$'; then
|
||||
echo "Local translation edits detected; also pushing translations to Transifex."
|
||||
PUSH_ARGS="--source --translation"
|
||||
fi
|
||||
./tx push ${PUSH_ARGS}
|
||||
./tx pull --all --force
|
||||
- name: Compile translations to validate them
|
||||
run: |
|
||||
python3 tools/make_mo.py
|
||||
- name: Push translatable and translated texts back to repo
|
||||
uses: stefanzweifel/git-auto-commit-action@v7.1.0
|
||||
if: env.TX_TOKEN
|
||||
with:
|
||||
commit_message: |
|
||||
Update translatable texts
|
||||
[skip ci]
|
||||
commit_user_name: SABnzbd Automation
|
||||
commit_user_email: bugs@sabnzbd.org
|
||||
commit_author: SABnzbd Automation <bugs@sabnzbd.org>
|
||||
file_pattern: "po/*.pot po/*.po"
|
||||
push_options: --force
|
||||
run: |
|
||||
git config user.name "SABnzbd Automation"
|
||||
git config user.email "bugs@sabnzbd.org"
|
||||
git add po/*.pot po/*.po *.nsi
|
||||
git diff --cached --quiet || git commit -m "Update translatable texts" -m "[skip ci]"
|
||||
git push
|
||||
@@ -0,0 +1,201 @@
|
||||
name: Update bundled tools
|
||||
|
||||
on:
|
||||
schedule:
|
||||
# Nightly check for new releases of the bundled tools
|
||||
- cron: "30 4 * * *"
|
||||
workflow_dispatch:
|
||||
|
||||
permissions:
|
||||
contents: write
|
||||
pull-requests: write
|
||||
|
||||
jobs:
|
||||
unrar:
|
||||
name: Update unrar
|
||||
if: github.repository == 'sabnzbd/sabnzbd'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
BRANCH: automation/update-unrar
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Determine latest unrar version
|
||||
id: version
|
||||
run: |
|
||||
RAW_VERSION=$(curl -fsSL --retry 3 https://www.rarlab.com/download.htm -o- | sed -n 's%.*/rarmacos-x64-\([0-9]\+\)\.tar\.gz.*%\1%p' | head -1)
|
||||
if [ -z "$RAW_VERSION" ]; then
|
||||
echo "Could not determine the latest unrar version from the rarlab download page"
|
||||
exit 1
|
||||
fi
|
||||
# Version is encoded without separator, e.g. 723 = 7.23
|
||||
VERSION="${RAW_VERSION%??}.${RAW_VERSION: -2}"
|
||||
echo "Latest unrar version: $VERSION"
|
||||
echo "raw_version=$RAW_VERSION" >> "$GITHUB_OUTPUT"
|
||||
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
||||
- name: Download and extract new binaries
|
||||
env:
|
||||
RAW_VERSION: ${{ steps.version.outputs.raw_version }}
|
||||
run: |
|
||||
mkdir -p "$RUNNER_TEMP/unrar"
|
||||
cd "$RUNNER_TEMP/unrar"
|
||||
for FILE in "rarmacos-x64-$RAW_VERSION.tar.gz" "rarmacos-arm-$RAW_VERSION.tar.gz" "winrar-x64-$RAW_VERSION.exe"; do
|
||||
curl -fsSL --retry 3 -o "$FILE" "https://www.rarlab.com/rar/$FILE"
|
||||
done
|
||||
mkdir macos-x64 macos-arm64 windows
|
||||
tar -xzf "rarmacos-x64-$RAW_VERSION.tar.gz" -C macos-x64
|
||||
tar -xzf "rarmacos-arm-$RAW_VERSION.tar.gz" -C macos-arm64
|
||||
# Unpack UnRAR.exe from the WinRAR installer, which is a self-extracting
|
||||
# RAR archive that the preinstalled 7-Zip can read
|
||||
7z x -y -owindows "winrar-x64-$RAW_VERSION.exe" UnRAR.exe > /dev/null
|
||||
- name: Copy binaries into the repository
|
||||
run: |
|
||||
install -m 755 "$RUNNER_TEMP/unrar/macos-x64/rar/unrar" macos/unrar/unrar
|
||||
install -m 755 "$RUNNER_TEMP/unrar/macos-arm64/rar/unrar" macos/unrar/arm64/unrar
|
||||
install -m 755 "$RUNNER_TEMP/unrar/windows/UnRAR.exe" win/unrar/UnRAR.exe
|
||||
- name: Create pull request
|
||||
env:
|
||||
VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
if git diff --quiet; then
|
||||
echo "Bundled unrar is already at version $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
git config user.name "SABnzbd Automation"
|
||||
git config user.email "bugs@sabnzbd.org"
|
||||
git add macos/unrar win/unrar
|
||||
git commit -m "unrar $VERSION"
|
||||
# Skip the push if an open PR already contains these exact binaries
|
||||
OPEN_PRS=$(gh pr list --head "$BRANCH" --state open --json number --jq length)
|
||||
if [ "$OPEN_PRS" != "0" ] && git fetch origin "$BRANCH" && git diff --quiet FETCH_HEAD HEAD -- macos/unrar win/unrar; then
|
||||
echo "Existing pull request already updates unrar to $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
git push --force origin "HEAD:refs/heads/$BRANCH"
|
||||
if [ "$OPEN_PRS" = "0" ]; then
|
||||
gh pr create --head "$BRANCH" --title "unrar $VERSION" --body "Automated update of the bundled unrar binaries to version $VERSION.
|
||||
|
||||
[Changelog](https://www.rarlab.com/rarnew.htm)"
|
||||
fi
|
||||
|
||||
sevenzip:
|
||||
name: Update 7-Zip
|
||||
if: github.repository == 'sabnzbd/sabnzbd'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
BRANCH: automation/update-7zip
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Determine latest 7-Zip version
|
||||
id: version
|
||||
run: |
|
||||
VERSION=$(gh api repos/ip7z/7zip/releases/latest --jq .tag_name)
|
||||
# Assets are named without separator, e.g. 7z2602-extra.7z for 26.02
|
||||
RAW_VERSION="${VERSION//./}"
|
||||
echo "Latest 7-Zip version: $VERSION"
|
||||
echo "raw_version=$RAW_VERSION" >> "$GITHUB_OUTPUT"
|
||||
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
||||
- name: Download and extract new binaries
|
||||
env:
|
||||
RAW_VERSION: ${{ steps.version.outputs.raw_version }}
|
||||
VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
mkdir -p "$RUNNER_TEMP/7zip"
|
||||
cd "$RUNNER_TEMP/7zip"
|
||||
gh release download "$VERSION" --repo ip7z/7zip \
|
||||
--pattern "7z$RAW_VERSION-extra.7z" --pattern "7z$RAW_VERSION-mac.tar.xz"
|
||||
mkdir macos windows
|
||||
tar -xJf "7z$RAW_VERSION-mac.tar.xz" -C macos
|
||||
# The preinstalled 7-Zip unpacks the extra package that contains
|
||||
# the standalone Windows console version
|
||||
7z x -y -owindows "7z$RAW_VERSION-extra.7z" 7za.exe > /dev/null
|
||||
- name: Copy binaries into the repository
|
||||
run: |
|
||||
install -m 644 "$RUNNER_TEMP/7zip/windows/7za.exe" win/7zip/7za.exe
|
||||
install -m 755 "$RUNNER_TEMP/7zip/macos/7zz" macos/7zip/7zz
|
||||
- name: Create pull request
|
||||
env:
|
||||
VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
if git diff --quiet; then
|
||||
echo "Bundled 7-Zip is already at version $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
git config user.name "SABnzbd Automation"
|
||||
git config user.email "bugs@sabnzbd.org"
|
||||
git add macos/7zip win/7zip
|
||||
git commit -m "7-Zip $VERSION"
|
||||
# Skip the push if an open PR already contains these exact binaries
|
||||
OPEN_PRS=$(gh pr list --head "$BRANCH" --state open --json number --jq length)
|
||||
if [ "$OPEN_PRS" != "0" ] && git fetch origin "$BRANCH" && git diff --quiet FETCH_HEAD HEAD -- macos/7zip win/7zip; then
|
||||
echo "Existing pull request already updates 7-Zip to $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
git push --force origin "HEAD:refs/heads/$BRANCH"
|
||||
if [ "$OPEN_PRS" = "0" ]; then
|
||||
gh pr create --head "$BRANCH" --title "7-Zip $VERSION" --body "Automated update of the bundled 7-Zip binaries to version $VERSION.
|
||||
|
||||
[Release notes](https://github.com/ip7z/7zip/releases/tag/$VERSION)"
|
||||
fi
|
||||
|
||||
par2:
|
||||
name: Update par2cmdline-turbo
|
||||
if: github.repository == 'sabnzbd/sabnzbd'
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
GH_TOKEN: ${{ github.token }}
|
||||
BRANCH: automation/update-par2
|
||||
steps:
|
||||
- uses: actions/checkout@v7
|
||||
- name: Determine latest par2cmdline-turbo version
|
||||
id: version
|
||||
run: |
|
||||
TAG=$(gh api repos/animetosho/par2cmdline-turbo/releases/latest --jq .tag_name)
|
||||
# Assets are named without the leading v, e.g. par2cmdline-turbo-1.4.0-win-x64.zip for tag v1.4.0
|
||||
VERSION="${TAG#v}"
|
||||
echo "Latest par2cmdline-turbo version: $VERSION"
|
||||
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
|
||||
echo "version=$VERSION" >> "$GITHUB_OUTPUT"
|
||||
- name: Download and extract new binaries
|
||||
env:
|
||||
TAG: ${{ steps.version.outputs.tag }}
|
||||
VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
mkdir -p "$RUNNER_TEMP/par2"
|
||||
cd "$RUNNER_TEMP/par2"
|
||||
for ARCH in win-x64 win-arm64 macos-universal; do
|
||||
gh release download "$TAG" --repo animetosho/par2cmdline-turbo \
|
||||
--pattern "par2cmdline-turbo-$VERSION-$ARCH.zip"
|
||||
unzip -q -d "$ARCH" "par2cmdline-turbo-$VERSION-$ARCH.zip"
|
||||
done
|
||||
- name: Copy binaries into the repository
|
||||
run: |
|
||||
install -m 644 "$RUNNER_TEMP/par2/win-x64/par2.exe" win/par2/par2.exe
|
||||
install -m 644 "$RUNNER_TEMP/par2/win-arm64/par2.exe" win/par2/arm64/par2.exe
|
||||
install -m 755 "$RUNNER_TEMP/par2/macos-universal/par2" macos/par2/par2
|
||||
- name: Create pull request
|
||||
env:
|
||||
TAG: ${{ steps.version.outputs.tag }}
|
||||
VERSION: ${{ steps.version.outputs.version }}
|
||||
run: |
|
||||
if git diff --quiet; then
|
||||
echo "Bundled par2cmdline-turbo is already at version $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
git config user.name "SABnzbd Automation"
|
||||
git config user.email "bugs@sabnzbd.org"
|
||||
git add macos/par2 win/par2
|
||||
git commit -m "par2cmdline-turbo $VERSION"
|
||||
# Skip the push if an open PR already contains these exact binaries
|
||||
OPEN_PRS=$(gh pr list --head "$BRANCH" --state open --json number --jq length)
|
||||
if [ "$OPEN_PRS" != "0" ] && git fetch origin "$BRANCH" && git diff --quiet FETCH_HEAD HEAD -- macos/par2 win/par2; then
|
||||
echo "Existing pull request already updates par2cmdline-turbo to $VERSION"
|
||||
exit 0
|
||||
fi
|
||||
git push --force origin "HEAD:refs/heads/$BRANCH"
|
||||
if [ "$OPEN_PRS" = "0" ]; then
|
||||
gh pr create --head "$BRANCH" --title "par2cmdline-turbo $VERSION" --body "Automated update of the bundled par2cmdline-turbo binaries to version $VERSION.
|
||||
|
||||
[Release notes](https://github.com/animetosho/par2cmdline-turbo/releases/tag/$TAG)"
|
||||
fi
|
||||
+4
-13
@@ -29,15 +29,8 @@ SABnzbd-*/
|
||||
|
||||
# WingIDE/PyCharm project files
|
||||
*.wp[ru]
|
||||
.idea
|
||||
|
||||
# VScode
|
||||
.vscode/
|
||||
|
||||
# Testing folders
|
||||
.cache
|
||||
.xprocess
|
||||
.pytest*
|
||||
tests/cache
|
||||
|
||||
# General junk
|
||||
@@ -45,12 +38,10 @@ tests/cache
|
||||
*.bak
|
||||
*.log
|
||||
|
||||
# Some people use Emacs as an editor
|
||||
\#*
|
||||
.\#*
|
||||
|
||||
# AI tools
|
||||
.claude/
|
||||
# Ignore all hidden directories at repo root, except used ones
|
||||
.*/
|
||||
!.github/
|
||||
!.tx/
|
||||
|
||||
# Apple
|
||||
.DS_Store
|
||||
+4
-17
@@ -5,6 +5,7 @@ The SABnzbd-Team is:
|
||||
|
||||
Active team:
|
||||
Safihre
|
||||
mnightingale
|
||||
sanderjo
|
||||
jcfp
|
||||
inpheaux
|
||||
@@ -17,21 +18,8 @@ Sleeping members:
|
||||
Honorary member (and original author):
|
||||
Gregor Kaufmann
|
||||
|
||||
The main contributors and moderators of the translations:
|
||||
Danish: Rene (nordjyden6), Scott
|
||||
Dutch: ShyPike, Safihre
|
||||
French: rAf, Fox Ace, Fred, Morback, Jih
|
||||
German: Severin Heiniger, Tim Hartmann, DonPizza, Alex
|
||||
Norwegian: Protx, mjelva, TomP, John
|
||||
Romanian: nicusor
|
||||
Serbian: Ozzii, Krišan Darko
|
||||
Swedish: Malmis, Kim Joahnsson, Patrik-liind, Chris M
|
||||
Spanish: Syquus, Adolfo Jayme
|
||||
Portuguese (Brazil): lrrosa, diegosps
|
||||
Russian: Pavel Maryanov
|
||||
Polish: Tomasz 'Zen' Napierala
|
||||
Chinese: XsLiDian
|
||||
Finnish: Matti Ylönen
|
||||
The contributors and moderators of the translations are credited in the
|
||||
header of each translation file in the po/ directory.
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
@@ -44,7 +32,6 @@ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
along with this program; if not, see <https://www.gnu.org/licenses/>.
|
||||
|
||||
See accompanying files GPL2.txt and GPL3.txt.
|
||||
-110
@@ -1,110 +0,0 @@
|
||||
SABnzbd
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
0) LICENSE
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
(c) Copyright 2007-2026 by The SABnzbd-Team (sabnzbd.org)
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU General Public License
|
||||
as published by the Free Software Foundation; either version 2
|
||||
of the License, or (at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
1) INSTALL with the Windows installer
|
||||
-------------------------------------------------------------------------------
|
||||
Just run the downloaded EXE file and the installer will start.
|
||||
It's just a simple standard installer.
|
||||
After installation, find the SABnzbd program in the Start menu and start it.
|
||||
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
2) INSTALL pre-built Windows binaries
|
||||
-------------------------------------------------------------------------------
|
||||
Unzip pre-built version to any folder of your liking.
|
||||
Start the SABnzbd.exe program.
|
||||
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.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
3) INSTALL pre-built macOS binaries
|
||||
-------------------------------------------------------------------------------
|
||||
Download the DMG file, mount and drag the SABnzbd icon to Applications.
|
||||
Just like you do with so many apps.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
4) INSTALL with only sources
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Specific guides to install from source are available for Windows and macOS:
|
||||
https://sabnzbd.org/wiki/installation/install-macos
|
||||
https://sabnzbd.org/wiki/installation/install-from-source-windows
|
||||
|
||||
Only Python 3.9 and above is supported.
|
||||
|
||||
On Linux systems you need to install:
|
||||
par2 unrar python3-setuptools python3-pip
|
||||
|
||||
On non-X86 platforms, for which PyPI does not provide all pre-compiled packages,
|
||||
you also need to install these development libraries (exact names might differ per platform):
|
||||
libffi-dev libssl-dev
|
||||
|
||||
Unpack the ZIP-file containing the SABnzbd sources to any folder of your liking.
|
||||
|
||||
Inside the SABnzbd source directory, install all required Python packages by running:
|
||||
python3 -m pip install -r requirements.txt
|
||||
|
||||
If you want non-English languages, you need to compile the translations.
|
||||
Start this from a shell terminal (or command prompt):
|
||||
python3 tools/make_mo.py
|
||||
|
||||
To start SABnzbd, run this from a shell terminal (or command prompt):
|
||||
python3 -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
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Your browser may start up with just an error page.
|
||||
|
||||
This means that SABnzbd cannot use the default port 8080 to run its web-server on.
|
||||
Try to use another port, you'll need to use the a command window:
|
||||
SABnzbd.exe -s localhost:7777
|
||||
or
|
||||
python3 SABnzbd.py -s localhost:7777
|
||||
|
||||
You may of course try other port numbers too.
|
||||
|
||||
For troubleshooting on Windows you can use the program SABnzbd-console.exe.
|
||||
This will show a black window where logging information will be shown. This
|
||||
may help you solve problems easier.
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
6) MORE INFORMATION
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Visit our wiki:
|
||||
https://sabnzbd.org/wiki/
|
||||
|
||||
-------------------------------------------------------------------------------
|
||||
7) CREDITS
|
||||
-------------------------------------------------------------------------------
|
||||
|
||||
Several parts of SABnzbd were built by other people, illustrating the
|
||||
wonderful world of Free Open Source Software.
|
||||
See the licenses folder of the main program and of the skin folders.
|
||||
@@ -16,15 +16,15 @@ If you want to know more you can head over to our website: https://sabnzbd.org.
|
||||
|
||||
SABnzbd has a few dependencies you'll need before you can get running. If you've previously run SABnzbd from one of the various Linux packages, then you likely already have all the needed dependencies. If not, here's what you're looking for:
|
||||
|
||||
- `python` (Python 3.9 and above, often called `python3`)
|
||||
- Python modules listed in `requirements.txt`. Install with `python3 -m pip install -r requirements.txt -U`
|
||||
- `python` (Python 3.10 and above, often called `python3`)
|
||||
- Python modules listed in `requirements.txt`. Install with `python3 -m pip install -r requirements.txt`
|
||||
- `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)
|
||||
|
||||
Optional:
|
||||
- See `requirements.txt`
|
||||
|
||||
Your package manager should supply these. If not, we've got links in our [installation guide](https://github.com/sabnzbd/sabnzbd/blob/master/INSTALL.txt).
|
||||
Your package manager should supply these. If not, we've got links in our [installation guide](https://sabnzbd.org/wiki/installation/install-off-modules).
|
||||
|
||||
## Running SABnzbd from source
|
||||
|
||||
|
||||
+95
-45
@@ -1,62 +1,112 @@
|
||||
Release Notes - SABnzbd 5.0.0 Release Candidate 1
|
||||
Release Notes - SABnzbd 5.1.3
|
||||
=========================================================
|
||||
|
||||
This is the first release candidate of version 5.0.
|
||||
Please note the breaking changes described below!
|
||||
## Security fixes
|
||||
|
||||
## New features in 5.0.0
|
||||
SABnzbd 5.1.1, 5.1.2 and 5.1.3 resolve a number of security vulnerabilities.
|
||||
|
||||
* Added support for NNTP Pipelining which eliminates idle waiting between
|
||||
requests, significantly improving speeds on high-latency connections.
|
||||
Read more here: https://sabnzbd.org/wiki/advanced/nntp-pipelining
|
||||
New servers will have `Articles per request` set to `2` by default.
|
||||
* Implemented Direct Write to optimize assembly of downloaded files.
|
||||
Read more here: https://sabnzbd.org/wiki/advanced/direct-write
|
||||
* Post-processing scripts will always be executed, even for failed jobs.
|
||||
Make sure to check the status of the job in your scripts!
|
||||
* Removed Special setting `empty_postproc` as it is no longer needed.
|
||||
* Complete redesign of article cache.
|
||||
* Improved disk speed measurement in Status window.
|
||||
* Reduce delays between jobs during post-processing.
|
||||
* Improve handling of disks getting full.
|
||||
* Diskspace check will now included Category-specific folders.
|
||||
* If a download only has `.nzb` files inside, the new downloads
|
||||
will include the name of the original download.
|
||||
* No longer show tracebacks in the browser, only in the logs.
|
||||
* Dropped support for Python 3.8.
|
||||
* Windows: Added Windows ARM (portable) release.
|
||||
* Windows and macOS: Update Python to 3.14.3, Unrar to 7.20,
|
||||
par2cmdline-turbo to 1.4 and 7zip to 26.00.
|
||||
Over the past releases, several security researchers have put a lot of time and effort
|
||||
examining SABnzbd, responsibly reporting their findings, and helping us verify the fixes.
|
||||
We are grateful for their hard work, it has made SABnzbd meaningfully safer for everyone.
|
||||
|
||||
## Bug fixes in 5.0.0
|
||||
For most users the risk is limited: you are only affected if your setup is exposed to
|
||||
untrusted parties. The web interface issues only apply if it can be reached by someone
|
||||
you do not trust. By default, SABnzbd is only accessible from your own device and
|
||||
`External internet access` is set to `No access`. If either of those is still at its
|
||||
default, or if you use a proxy service for authentication, you are not affected.
|
||||
The download-processing issues only apply if SABnzbd handles NZBs from a source you
|
||||
do not fully trust, such as a public indexer.
|
||||
If none of that describes your setup, you were never at risk.
|
||||
|
||||
* `Check before download` could get stuck or fail to reject.
|
||||
* Several stability changes for the core download process.
|
||||
* If only par2 files were missing, jobs could get incorrectly aborted.
|
||||
* No error was shown in case NZB upload failed.
|
||||
* Correct mobile layout if `Full Width` is enabled.
|
||||
* Handle passwords that exceed Unrar's password limit.
|
||||
* Aborted Direct Unpack could result in no files being unpacked.
|
||||
* Unwanted Extension check was unreliable on passworded downloads.
|
||||
* No longer exclusively lock all directory operations.
|
||||
* Improved handling of non-NFC unicode filenames.
|
||||
* Sorting of files inside jobs was inconsistent.
|
||||
* Linux: No longer break test-data in release package.
|
||||
* Windows: Tray icon disappears after Explorer restart.
|
||||
* macOS: Slow to start on some network setups.
|
||||
The safest action is simply to update to 5.1.3.
|
||||
Full details, affected versions, actions and mitigations for each vulnerability are described at:
|
||||
https://sabnzbd.org/5-1-vulnerabilities
|
||||
|
||||
## Changes to default settings for new installations in 5.0.0
|
||||
Vulnerabilities resolved:
|
||||
|
||||
* Default `Minimum Free Space for Temporary Download Folder` set to `500M`.
|
||||
* Enabled `verify_xff_header` setting by default.
|
||||
* GHSA-q326-jpxx-jmjc: `__wrapped__` dispatch bypass allows unauthenticated API access, fixed in 5.1.3.
|
||||
* GHSA-mjwj-v5mr-cmcg: PAR2 symlink bypass allows pickle remote code execution, fixed in 5.1.3.
|
||||
* GHSA-rgqj-28c2-gxwp: Critical remote code execution via authentication bypass on configuration endpoints, fixed in 5.1.2.
|
||||
* GHSA-75g3-96fr-7p2r: High-severity path traversal during post-processing via crafted PAR2/SFV files, fixed in 5.1.2.
|
||||
* GHSA-xrfq-jhgh-wqch: Critical authentication bypass allowing a valid session without credentials, fixed in 5.1.1.
|
||||
|
||||
If you rely on the SABnzbd username and password to keep out untrusted parties, and your
|
||||
setup was exposed, it is recommended that you rotate your SABnzbd username/password and
|
||||
API-key, Usenet server passwords, indexer API-keys used in RSS-feeds, and notification
|
||||
service credentials after updating. See the page above for the full guidance.
|
||||
|
||||
## Other changes and bug fixes in 5.1.3
|
||||
|
||||
* Tighten Compact display mode.
|
||||
* Directly show usenet server errors instead of parsing them.
|
||||
* Prevent `database is locked` error when re-evaluating stored RSS jobs.
|
||||
* Added tooltip to explain search filters in Queue and History.
|
||||
* Windows and macOS: Updated 7zip to 26.03.
|
||||
|
||||
## Other bug fixes in 5.1.2
|
||||
|
||||
* RSS filters were not applied directly.
|
||||
|
||||
## Other bug fixes in 5.1.1
|
||||
|
||||
* Styling cache issues could occur after updating.
|
||||
* RSS items were removed too eagerly from RSS-history after download.
|
||||
* The RSS-feed `Clear Downloaded` button did not do anything.
|
||||
|
||||
## Changelog 5.1.0
|
||||
|
||||
This release brings a fundamental improvement to "Retry": instead of
|
||||
re-downloading any files with missing data, only the articles that were actually
|
||||
missing are fetched again. RSS got an overhaul under the hood, the interface is
|
||||
refreshed, and we added quite a long list of long-requested features and bugfixes.
|
||||
|
||||
## New features in 5.1.0
|
||||
|
||||
* Refreshed the interface.
|
||||
* When Retrying a job, only the actually missing articles are tried again.
|
||||
This only works for jobs downloaded in 5.1.0 (or newer).
|
||||
* RSS items are now stored in the database instead of on disk.
|
||||
* New RSS `Age` rule to filter jobs based on their age.
|
||||
* Downloaded RSS items are cleared from the RSS database after 3 days.
|
||||
* Added support for filename and path pattern matching to the `Cleanup List`.
|
||||
* `Unwanted extensions` will also be removed after unpacking.
|
||||
* Allow job setting changes directly from `Extra queue columns`.
|
||||
* Added support for unpacking `.tar` files during post-processing.
|
||||
* Improved anonymization of the logs when using `Show Logging`.
|
||||
* Added `SAB_FILES` environment variable to Post-processing scripts,
|
||||
listing all files that resulted from the job.
|
||||
* New Servers will default to 16 connections instead of 8.
|
||||
* Use media duration as part of `Ignore Samples` detection.
|
||||
* Added option to (auto) sort the queue by Remaining Percentage.
|
||||
* Improved support for screen readers.
|
||||
* Parsing of header-encrypted RARs will use significantly fewer resources.
|
||||
* Add Ayatana AppIndicator tray support on GNOME.
|
||||
* Removed redundant `INSTALL.txt` file.
|
||||
* Dropped support for Python 3.9.
|
||||
* Windows and macOS: Updated Python to 3.14.6, Unrar to 7.23 and 7zip to 26.02.
|
||||
|
||||
## Bug fixes in 5.1.0
|
||||
|
||||
* Prevent incorrect warnings about non-writeable directories.
|
||||
* Files unrelated to job could get removed by the `Cleanup List` logic.
|
||||
* Prevent path traversal in orphaned job APIs.
|
||||
* `Disk Full` errors from unrar were not handled gracefully during unpacking.
|
||||
* Memory leak could occur during article decoding.
|
||||
* In containers (like Docker), the Article Cache could exceed the memory limit.
|
||||
* Diskspace checks would be too strict when unpacking to different disk.
|
||||
* Prevent deadlock when a second signal arrives during shutdown procedure.
|
||||
* Verification using SFV-checks could fail, even though files were correct.
|
||||
* Don't log Warning during clean shutdowns.
|
||||
* Windows: Uninstall would not remove Settings or Windows Service.
|
||||
* Windows: Warn for OS-limit if more than 1024 connections are configured.
|
||||
* macOS: AppleDouble files could result in failures in `Moving` stage.
|
||||
* macOS: Restarting the application resulted in Terminal window.
|
||||
* macOS: Included par2cmdline-turbo will now use all available CPU-features.
|
||||
|
||||
## Upgrade notices
|
||||
|
||||
* You can directly upgrade from version 3.0.0 and newer.
|
||||
* Upgrading from older versions will require performing a `Queue repair`.
|
||||
* Downgrading from version 4.2.0 or newer to 3.7.2 or older will require
|
||||
performing a `Queue repair` due to changes in the internal data format.
|
||||
|
||||
## Known problems and solutions
|
||||
|
||||
|
||||
+34
-20
@@ -19,8 +19,8 @@ import sys
|
||||
|
||||
# Trick to show a better message on older Python
|
||||
# releases that don't support walrus operator
|
||||
if Python_39_is_required_to_run_SABnzbd := sys.hexversion < 0x03090000:
|
||||
print("Sorry, requires Python 3.9 or above")
|
||||
if Python_39_is_required_to_run_SABnzbd := sys.hexversion < 0x030A00F0:
|
||||
print("Sorry, requires Python 3.10 or above")
|
||||
print("You can read more at: https://sabnzbd.org/wiki/installation/install-off-modules")
|
||||
sys.exit(1)
|
||||
|
||||
@@ -35,6 +35,7 @@ import socket
|
||||
import subprocess
|
||||
import multiprocessing
|
||||
import ssl
|
||||
import shlex
|
||||
import time
|
||||
import re
|
||||
import gc
|
||||
@@ -115,7 +116,7 @@ try:
|
||||
from win32com.shell import shell, shellcon
|
||||
|
||||
from sabnzbd.utils.apireg import get_connection_info, set_connection_info
|
||||
import sabnzbd.sabtray
|
||||
import sabnzbd.sabtraywin
|
||||
|
||||
win32api.SetConsoleCtrlHandler(sabnzbd.sig_handler, True)
|
||||
except ImportError:
|
||||
@@ -194,7 +195,7 @@ class GUIHandler(logging.Handler):
|
||||
|
||||
def print_help():
|
||||
print()
|
||||
print(("Usage: %s [-f <configfile>] <other options>" % sabnzbd.MY_NAME))
|
||||
print("Usage: %s [-f <configfile>] <other options>" % sabnzbd.MY_NAME)
|
||||
print()
|
||||
print("Options marked [*] are stored in the config file")
|
||||
print()
|
||||
@@ -236,7 +237,7 @@ def print_help():
|
||||
|
||||
|
||||
def print_version():
|
||||
print(("""
|
||||
print("""
|
||||
%s-%s
|
||||
|
||||
(C) Copyright 2007-2026 by The SABnzbd-Team (sabnzbd.org)
|
||||
@@ -245,7 +246,7 @@ This is free software, and you are welcome to redistribute it
|
||||
under certain conditions. It is licensed under the
|
||||
GNU GENERAL PUBLIC LICENSE Version 2 or (at your option) any later version.
|
||||
|
||||
""" % (sabnzbd.MY_NAME, sabnzbd.__version__)))
|
||||
""" % (sabnzbd.MY_NAME, sabnzbd.__version__))
|
||||
|
||||
|
||||
def daemonize():
|
||||
@@ -521,9 +522,12 @@ def get_webhost(web_host, web_port, https_port):
|
||||
"""Determine the webhost address and port,
|
||||
return (host, port, browserhost)
|
||||
"""
|
||||
|
||||
# Fallback to automatic hostname selection when the requested
|
||||
# all-interfaces bind address uses an unavailable address family.
|
||||
if web_host == "0.0.0.0" and not check_resolve("127.0.0.1"):
|
||||
web_host = ""
|
||||
elif web_host == "::" and not check_resolve("::1"):
|
||||
elif web_host in ("::", "::1") and not check_resolve("::1"):
|
||||
web_host = ""
|
||||
|
||||
if web_host is None:
|
||||
@@ -531,6 +535,10 @@ def get_webhost(web_host, web_port, https_port):
|
||||
else:
|
||||
sabnzbd.cfg.web_host.set(web_host)
|
||||
|
||||
# When passed as command-line arguments "[::]:8080" would result in
|
||||
# hostname set to "[::]" which cannot use used for getaddrinfo
|
||||
web_host_lookup = web_host.strip("[]")
|
||||
|
||||
# Get IP address, but discard APIPA/IPV6
|
||||
# If only APIPA's or IPV6 are found, fall back to localhost
|
||||
ipv4 = ipv6 = False
|
||||
@@ -538,9 +546,9 @@ def get_webhost(web_host, web_port, https_port):
|
||||
|
||||
try:
|
||||
# Valid user defined name?
|
||||
info = socket.getaddrinfo(web_host, None)
|
||||
info = socket.getaddrinfo(web_host_lookup, None)
|
||||
except socket.error:
|
||||
if not is_localhost(web_host):
|
||||
if not is_localhost(web_host_lookup):
|
||||
web_host = "0.0.0.0"
|
||||
try:
|
||||
info = socket.getaddrinfo(localhost, None)
|
||||
@@ -576,7 +584,7 @@ def get_webhost(web_host, web_port, https_port):
|
||||
|
||||
# :: will listen on all ipv6 interfaces (no ipv4 addresses)
|
||||
elif web_host in ("::", "[::]"):
|
||||
web_host = web_host.strip("[").strip("]")
|
||||
web_host = web_host_lookup
|
||||
# Assume '::1' == 'localhost'
|
||||
browserhost = localhost
|
||||
|
||||
@@ -601,12 +609,12 @@ def get_webhost(web_host, web_port, https_port):
|
||||
|
||||
# Some systems don't like brackets in numerical ipv6
|
||||
if sabnzbd.MACOS:
|
||||
web_host = web_host.strip("[]")
|
||||
web_host = web_host_lookup
|
||||
else:
|
||||
try:
|
||||
socket.getaddrinfo(web_host, None)
|
||||
except socket.error:
|
||||
web_host = web_host.strip("[]")
|
||||
web_host = web_host_lookup
|
||||
|
||||
if ipv6 and ipv4 and web_host == "" and sabnzbd.WINDOWS:
|
||||
helpful_warning(T("Please be aware the 0.0.0.0 hostname will need an IPv6 address for external access"))
|
||||
@@ -1163,8 +1171,8 @@ def main():
|
||||
# Handle the several tray icons
|
||||
if sabnzbd.cfg.tray_icon() and not sabnzbd.DAEMON and not sabnzbd.WIN_SERVICE:
|
||||
if sabnzbd.WINDOWS:
|
||||
sabnzbd.WINTRAY = sabnzbd.sabtray.SABTrayThread()
|
||||
elif sabnzbd.LINUX_POWER and os.environ.get("DISPLAY"):
|
||||
sabnzbd.WINTRAY = sabnzbd.sabtraywin.SABTrayThread()
|
||||
elif sabnzbd.LINUX_POWER and (os.environ.get("DISPLAY") or os.environ.get("XDG_CURRENT_DESKTOP")):
|
||||
try:
|
||||
import gi
|
||||
|
||||
@@ -1317,6 +1325,7 @@ def main():
|
||||
}
|
||||
|
||||
appconfig = {
|
||||
"/": {"request.dispatch": sabnzbd.interface.SecureDispatcher()},
|
||||
"/api": {
|
||||
"tools.auth_basic.on": False,
|
||||
"tools.response_headers.on": True,
|
||||
@@ -1456,11 +1465,16 @@ def main():
|
||||
# Binaries require special restart
|
||||
if hasattr(sys, "frozen"):
|
||||
if sabnzbd.MACOS:
|
||||
# On macOS restart of app instead of embedded python
|
||||
my_args = " ".join(sys.argv[1:])
|
||||
cmd = 'kill -9 %s && open "%s" --args %s' % (os.getpid(), sys.executable, my_args)
|
||||
logging.info("Launching: %s", cmd)
|
||||
os.system(cmd)
|
||||
# Relaunch the .app via LaunchServices (clean env, proper menu-bar
|
||||
# context). Opening sys.executable directly makes macOS launch the
|
||||
# raw binary in Terminal.app — issue #3455.
|
||||
from Foundation import NSBundle
|
||||
|
||||
subprocess.Popen(
|
||||
'open -n "%s" --args %s'
|
||||
% (NSBundle.mainBundle().bundlePath(), " ".join(shlex.quote(arg) for arg in sys.argv[1:])),
|
||||
shell=True,
|
||||
)
|
||||
elif sabnzbd.WIN_SERVICE:
|
||||
# Use external service handler to do the restart
|
||||
# Wait 5 seconds to clean up
|
||||
@@ -1586,7 +1600,7 @@ def handle_windows_service():
|
||||
# In this case check for required parameters
|
||||
path = get_f_option(sab_opts)
|
||||
if not path:
|
||||
print(("The -f <path> parameter is required.\n" "Use: -f <path> %s" % service))
|
||||
print("The -f <path> parameter is required.\n" "Use: -f <path> %s" % service)
|
||||
return True
|
||||
|
||||
# First run the service installed, because this will
|
||||
|
||||
@@ -7,7 +7,7 @@ from PyInstaller.building.build_main import Analysis
|
||||
from PyInstaller.building.osx import BUNDLE
|
||||
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
|
||||
|
||||
from builder.constants import EXTRA_FILES, EXTRA_FOLDERS, RELEASE_VERSION, RELEASE_VERSION_BASE, RELEASE_VERSION_TUPLE
|
||||
from builder.common import EXTRA_FILES, EXTRA_FOLDERS, RELEASE_VERSION, RELEASE_VERSION_BASE, RELEASE_VERSION_TUPLE
|
||||
|
||||
# Add extra files in the PyInstaller-spec
|
||||
extra_pyinstaller_files = []
|
||||
|
||||
@@ -32,14 +32,14 @@ with open(VERSION_FILE) as version_file:
|
||||
exec(version_file.read())
|
||||
RELEASE_VERSION = __version__
|
||||
|
||||
# Pre-releases are longer than 6 characters (e.g. 3.1.0Beta1 vs 3.1.0, but also 3.0.11)
|
||||
PRERELEASE = len(RELEASE_VERSION) > 5
|
||||
|
||||
# Parse the version info for Windows file properties information
|
||||
version_regexed = re.search(r"(\d+)\.(\d+)\.(\d+)([a-zA-Z]*)(\d*)", RELEASE_VERSION)
|
||||
RELEASE_VERSION_TUPLE = (int(version_regexed.group(1)), int(version_regexed.group(2)), int(version_regexed.group(3)), 0)
|
||||
RELEASE_VERSION_BASE = f"{RELEASE_VERSION_TUPLE[0]}.{RELEASE_VERSION_TUPLE[1]}.{RELEASE_VERSION_TUPLE[2]}"
|
||||
|
||||
# Pre-releases carry an alpha suffix (e.g. 5.1.0Beta1); stable releases don't (e.g. 5.1.0 or 5.1.10)
|
||||
PRERELEASE = bool(version_regexed.group(4))
|
||||
|
||||
# Define release name
|
||||
RELEASE_NAME = "SABnzbd-%s" % RELEASE_VERSION
|
||||
RELEASE_TITLE = "SABnzbd %s" % RELEASE_VERSION
|
||||
@@ -59,7 +59,6 @@ if platform.machine() == "ARM64":
|
||||
EXTRA_FILES = [
|
||||
RELEASE_README,
|
||||
"README.html",
|
||||
"INSTALL.txt",
|
||||
"LICENSE.txt",
|
||||
"GPL2.txt",
|
||||
"GPL3.txt",
|
||||
@@ -76,3 +75,15 @@ EXTRA_FOLDERS = [
|
||||
"interfaces/Config/",
|
||||
"icons/",
|
||||
]
|
||||
|
||||
|
||||
def pe_has_authenticode_signature(pe_file: str) -> bool:
|
||||
"""Check if a PE file (.exe) has an embedded Authenticode signature by
|
||||
inspecting the certificate table in the optional header data directory."""
|
||||
# Imported here as tools/extract_pot.py execs this file without
|
||||
# the build dependencies to get the RELEASE_VERSION_BASE
|
||||
import pefile
|
||||
|
||||
pe = pefile.PE(pe_file, fast_load=True)
|
||||
security = pe.OPTIONAL_HEADER.DATA_DIRECTORY[pefile.DIRECTORY_ENTRY["IMAGE_DIRECTORY_ENTRY_SECURITY"]]
|
||||
return security.VirtualAddress != 0 and security.Size != 0
|
||||
@@ -1,200 +0,0 @@
|
||||
#!/usr/bin/python3 -OO
|
||||
# Copyright 2008-2026 by The SABnzbd-Team (sabnzbd.org)
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU General Public License
|
||||
# as published by the Free Software Foundation; either version 2
|
||||
# of the License, or (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import os
|
||||
import sys
|
||||
from constants import RELEASE_NAME, RELEASE_MACOS
|
||||
|
||||
# We need to call dmgbuild from command-line, so here we can setup how
|
||||
if __name__ == "__main__":
|
||||
# Check for DMGBuild
|
||||
try:
|
||||
import dmgbuild
|
||||
except Exception:
|
||||
print("Requires dmgbuild-module, use pip install dmgbuild")
|
||||
sys.exit()
|
||||
|
||||
# Make sure we are in the src folder
|
||||
if not os.path.exists("builder"):
|
||||
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
|
||||
|
||||
# Check if signing is possible
|
||||
authority = os.environ.get("SIGNING_AUTH")
|
||||
|
||||
# Path to app file
|
||||
apppath = "dist/SABnzbd.app"
|
||||
|
||||
# Readme HTML generated by package.py
|
||||
readmepath = os.path.join(apppath, "Contents/Resources/README.html")
|
||||
|
||||
# Path to background and the icon
|
||||
backgroundpath = "builder/macos/image/sabnzbd_new_bg.png"
|
||||
iconpath = "builder/macos/image/sabnzbdplus.icns"
|
||||
|
||||
# Make DMG
|
||||
print("Building DMG")
|
||||
dmgbuild.build_dmg(
|
||||
filename=RELEASE_MACOS,
|
||||
volume_name=RELEASE_NAME,
|
||||
settings_file="builder/make_dmg.py",
|
||||
defines={"app": apppath, "readme": readmepath, "background": backgroundpath, "iconpath": iconpath},
|
||||
)
|
||||
|
||||
# Sign DMG
|
||||
if authority:
|
||||
print("Signing DMG")
|
||||
os.system('codesign -f -i "org.sabnzbd.sabnzbd" -s "%s" "%s"' % (authority, RELEASE_MACOS))
|
||||
print("Signed!")
|
||||
else:
|
||||
print("Signing skipped, missing SIGNING_AUTH.")
|
||||
sys.exit()
|
||||
|
||||
|
||||
### START OF DMGBUILD SETTINGS
|
||||
### COPIED AND MODIFIED FROM THE EXAMPLE ONLINE
|
||||
application = defines.get("app", "AppName.app")
|
||||
readme = defines.get("readme", "ReadMe.rtf")
|
||||
appname = os.path.basename(application)
|
||||
|
||||
# .. Basics ....................................................................
|
||||
|
||||
# Volume format (see hdiutil create -help)
|
||||
format = defines.get("format", "UDBZ")
|
||||
|
||||
# Volume size (must be large enough for your files)
|
||||
size = defines.get("size", "100M")
|
||||
|
||||
# Files to include
|
||||
files = [application, readme]
|
||||
|
||||
# Symlinks to create
|
||||
symlinks = {"Applications": "/Applications"}
|
||||
|
||||
# Volume icon
|
||||
#
|
||||
# You can either define icon, in which case that icon file will be copied to the
|
||||
# image, *or* you can define badge_icon, in which case the icon file you specify
|
||||
# will be used to badge the system's Removable Disk icon
|
||||
#
|
||||
badge_icon = defines.get("iconpath", "")
|
||||
|
||||
# Where to put the icons
|
||||
icon_locations = {readme: (70, 160), appname: (295, 220), "Applications": (510, 220)}
|
||||
|
||||
# .. Window configuration ......................................................
|
||||
|
||||
# Window position in ((x, y), (w, h)) format
|
||||
window_rect = ((100, 100), (660, 360))
|
||||
|
||||
# Background
|
||||
#
|
||||
# This is a STRING containing any of the following:
|
||||
#
|
||||
# #3344ff - web-style RGB color
|
||||
# #34f - web-style RGB color, short form (#34f == #3344ff)
|
||||
# rgb(1,0,0) - RGB color, each value is between 0 and 1
|
||||
# hsl(120,1,.5) - HSL (hue saturation lightness) color
|
||||
# hwb(300,0,0) - HWB (hue whiteness blackness) color
|
||||
# cmyk(0,1,0,0) - CMYK color
|
||||
# goldenrod - X11/SVG named color
|
||||
# builtin-arrow - A simple built-in background with a blue arrow
|
||||
# /foo/bar/baz.png - The path to an image file
|
||||
#
|
||||
# Other color components may be expressed either in the range 0 to 1, or
|
||||
# as percentages (e.g. 60% is equivalent to 0.6).
|
||||
background = defines.get("background", "builtin-arrow")
|
||||
|
||||
show_status_bar = False
|
||||
show_tab_view = False
|
||||
show_toolbar = False
|
||||
show_pathbar = False
|
||||
show_sidebar = False
|
||||
sidebar_width = 0
|
||||
|
||||
# Select the default view; must be one of
|
||||
#
|
||||
# 'icon-view'
|
||||
# 'list-view'
|
||||
# 'column-view'
|
||||
# 'coverflow'
|
||||
#
|
||||
default_view = "icon-view"
|
||||
|
||||
# General view configuration
|
||||
show_icon_preview = False
|
||||
|
||||
# Set these to True to force inclusion of icon/list view settings (otherwise
|
||||
# we only include settings for the default view)
|
||||
include_icon_view_settings = "auto"
|
||||
include_list_view_settings = "auto"
|
||||
|
||||
# .. Icon view configuration ...................................................
|
||||
|
||||
arrange_by = None
|
||||
grid_offset = (0, 0)
|
||||
grid_spacing = 50
|
||||
scroll_position = (0, 0)
|
||||
label_pos = "bottom" # or 'right'
|
||||
text_size = 16
|
||||
icon_size = 64
|
||||
|
||||
# .. List view configuration ...................................................
|
||||
|
||||
# Column names are as follows:
|
||||
#
|
||||
# name
|
||||
# date-modified
|
||||
# date-created
|
||||
# date-added
|
||||
# date-last-opened
|
||||
# size
|
||||
# kind
|
||||
# label
|
||||
# version
|
||||
# comments
|
||||
#
|
||||
list_icon_size = 16
|
||||
list_text_size = 12
|
||||
list_scroll_position = (0, 0)
|
||||
list_sort_by = "name"
|
||||
list_use_relative_dates = True
|
||||
list_calculate_all_sizes = (False,)
|
||||
list_columns = ("name", "date-modified", "size", "kind", "date-added")
|
||||
list_column_widths = {
|
||||
"name": 300,
|
||||
"date-modified": 181,
|
||||
"date-created": 181,
|
||||
"date-added": 181,
|
||||
"date-last-opened": 181,
|
||||
"size": 97,
|
||||
"kind": 115,
|
||||
"label": 100,
|
||||
"version": 75,
|
||||
"comments": 300,
|
||||
}
|
||||
list_column_sort_directions = {
|
||||
"name": "ascending",
|
||||
"date-modified": "descending",
|
||||
"date-created": "descending",
|
||||
"date-added": "descending",
|
||||
"date-last-opened": "descending",
|
||||
"size": "descending",
|
||||
"kind": "ascending",
|
||||
"label": "ascending",
|
||||
"version": "ascending",
|
||||
"comments": "ascending",
|
||||
}
|
||||
+74
-6
@@ -16,6 +16,7 @@
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import glob
|
||||
import importlib.util
|
||||
import re
|
||||
import sys
|
||||
import os
|
||||
@@ -29,13 +30,15 @@ import urllib.error
|
||||
import configobj
|
||||
import markdown
|
||||
import packaging.version
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
from constants import (
|
||||
from common import (
|
||||
RELEASE_VERSION,
|
||||
RELEASE_VERSION_TUPLE,
|
||||
VERSION_FILE,
|
||||
RELEASE_README,
|
||||
RELEASE_NAME,
|
||||
RELEASE_MACOS,
|
||||
RELEASE_WIN_BIN,
|
||||
RELEASE_WIN_INSTALLER,
|
||||
ON_GITHUB_ACTIONS,
|
||||
@@ -43,6 +46,9 @@ from constants import (
|
||||
RELEASE_SRC,
|
||||
EXTRA_FILES,
|
||||
EXTRA_FOLDERS,
|
||||
APPDATA_FILE,
|
||||
RELEASE_VERSION_BASE,
|
||||
pe_has_authenticode_signature,
|
||||
)
|
||||
|
||||
|
||||
@@ -84,7 +90,7 @@ def run_external_command(command: list[str], print_output: bool = True, **kwargs
|
||||
|
||||
def run_git_command(parms):
|
||||
"""Run git command, raise error if it failed"""
|
||||
return run_external_command(["git"] + parms)
|
||||
return run_external_command(["git", *parms])
|
||||
|
||||
|
||||
def patch_version_file(release_name):
|
||||
@@ -109,6 +115,21 @@ def patch_version_file(release_name):
|
||||
ver.write(version_file)
|
||||
|
||||
|
||||
def verify_appdata():
|
||||
"""Verify that appdata file is updated"""
|
||||
if not isinstance(
|
||||
ET.parse(APPDATA_FILE).find(f"./releases/release[@version='{RELEASE_VERSION_BASE}']"),
|
||||
ET.Element,
|
||||
):
|
||||
release_missing = f"Could not find {RELEASE_VERSION_BASE} in {APPDATA_FILE}"
|
||||
if RELEASE_THIS:
|
||||
raise RuntimeError(release_missing)
|
||||
elif ON_GITHUB_ACTIONS:
|
||||
print(f"::warning file={APPDATA_FILE},title=Missing release::{release_missing}")
|
||||
else:
|
||||
print(release_missing)
|
||||
|
||||
|
||||
def build_readme_html(output_path: str):
|
||||
"""Convert the release notes Markdown to a styled HTML file."""
|
||||
with open(RELEASE_README, "r", encoding="utf-8") as f:
|
||||
@@ -174,7 +195,7 @@ def test_macos_min_version(binary_path: str):
|
||||
print(lines)
|
||||
raise RuntimeError(f"Could not determine minimum macOS version for {binary_path}")
|
||||
else:
|
||||
print(f"Skipping macOS version check, MACOSX_DEPLOYMENT_TARGET not set")
|
||||
print("Skipping macOS version check, MACOSX_DEPLOYMENT_TARGET not set")
|
||||
|
||||
|
||||
def test_sab_binary(binary_path: str):
|
||||
@@ -249,11 +270,12 @@ if __name__ == "__main__":
|
||||
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
|
||||
|
||||
# Check if we have the needed certificates
|
||||
try:
|
||||
import certifi
|
||||
except ImportError:
|
||||
if importlib.util.find_spec("certifi") is None:
|
||||
raise FileNotFoundError("Need certifi module")
|
||||
|
||||
# Check if we have correct appdata file
|
||||
verify_appdata()
|
||||
|
||||
# Patch release file
|
||||
patch_version_file(RELEASE_VERSION)
|
||||
|
||||
@@ -315,6 +337,12 @@ if __name__ == "__main__":
|
||||
# Make sure it exists
|
||||
if not os.path.exists("dist/SABnzbd/SABnzbd.exe"):
|
||||
raise FileNotFoundError("SABnzbd executable not found, signed zip extraction failed")
|
||||
|
||||
# Make sure the executables are actually signed
|
||||
for exe_to_check in ("dist/SABnzbd/SABnzbd.exe", "dist/SABnzbd/SABnzbd-console.exe"):
|
||||
if not pe_has_authenticode_signature(exe_to_check):
|
||||
raise RuntimeError("%s is not signed!" % exe_to_check)
|
||||
print("%s has an Authenticode signature" % exe_to_check)
|
||||
elif RELEASE_THIS:
|
||||
raise FileNotFoundError("Signed SABnzbd executable not found, required for release!")
|
||||
else:
|
||||
@@ -465,6 +493,46 @@ if __name__ == "__main__":
|
||||
# Test the release, as the very last step to not mess with any release code
|
||||
test_sab_binary("dist/SABnzbd.app/Contents/MacOS/SABnzbd")
|
||||
|
||||
if "dmg" in sys.argv:
|
||||
# Must be run on macOS
|
||||
if sys.platform != "darwin":
|
||||
raise RuntimeError("DMG should be created on macOS")
|
||||
|
||||
# Only available for macOS
|
||||
import dmgbuild
|
||||
|
||||
apppath = "dist/SABnzbd.app"
|
||||
readmepath = os.path.join(apppath, "Contents/Resources/README.html")
|
||||
|
||||
print("Building DMG")
|
||||
dmgbuild.build_dmg(
|
||||
filename=RELEASE_MACOS,
|
||||
volume_name=RELEASE_NAME,
|
||||
settings={
|
||||
"files": [apppath, readmepath],
|
||||
"symlinks": {"Applications": "/Applications"},
|
||||
"icon": "builder/macos/image/sabnzbdplus.icns",
|
||||
"background": "builder/macos/image/sabnzbd_new_bg.png",
|
||||
"icon_locations": {
|
||||
os.path.basename(readmepath): (70, 160),
|
||||
os.path.basename(apppath): (295, 220),
|
||||
"Applications": (510, 220),
|
||||
},
|
||||
"window_rect": ((100, 100), (660, 360)),
|
||||
"sidebar_width": 0,
|
||||
"grid_spacing": 50,
|
||||
"icon_size": 64,
|
||||
},
|
||||
callback=lambda info: print("dmgbuild", info),
|
||||
)
|
||||
|
||||
if authority := os.environ.get("SIGNING_AUTH"):
|
||||
print("Signing DMG")
|
||||
run_external_command(["codesign", "-f", "-i", "org.sabnzbd.sabnzbd", "-s", authority, RELEASE_MACOS])
|
||||
print("Signed!")
|
||||
else:
|
||||
print("Signing skipped, missing SIGNING_AUTH.")
|
||||
|
||||
if "source" in sys.argv:
|
||||
# Prepare Source distribution package.
|
||||
# We assume the sources are freshly cloned from the repo
|
||||
|
||||
@@ -1,2 +1,27 @@
|
||||
PyGithub==2.9.0
|
||||
praw==7.8.1
|
||||
# All sub-dependencies are listed below and installed with --no-dependencies for security
|
||||
PyGithub==2.9.1
|
||||
praw==8.0.2
|
||||
pefile==2024.8.26
|
||||
|
||||
# PyGithub dependencies
|
||||
pynacl==1.6.2
|
||||
requests==2.34.2
|
||||
pyjwt==2.13.0
|
||||
typing-extensions==4.16.0
|
||||
urllib3==2.7.0
|
||||
|
||||
# praw dependencies
|
||||
prawcore==4.0.0
|
||||
defusedxml==0.7.1
|
||||
update-checker==1.0.0
|
||||
websocket-client==1.9.0
|
||||
|
||||
# requests dependencies
|
||||
charset_normalizer==3.4.9
|
||||
idna==3.18
|
||||
certifi==2026.6.17
|
||||
|
||||
# cryptography (via pyjwt[crypto]) dependencies
|
||||
cryptography==49.0.0
|
||||
cffi==2.1.0
|
||||
pycparser==3.0
|
||||
+78
-69
@@ -15,18 +15,16 @@
|
||||
# along with this program; if not, write to the Free Software
|
||||
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||
|
||||
import hashlib
|
||||
import json
|
||||
import os
|
||||
import re
|
||||
import xml.etree.ElementTree as ET
|
||||
|
||||
import github
|
||||
import praw
|
||||
import requests
|
||||
|
||||
from constants import (
|
||||
from common import (
|
||||
RELEASE_VERSION,
|
||||
RELEASE_VERSION_BASE,
|
||||
PRERELEASE,
|
||||
RELEASE_SRC,
|
||||
RELEASE_WIN_BIN_X64,
|
||||
@@ -36,8 +34,7 @@ from constants import (
|
||||
RELEASE_README,
|
||||
RELEASE_THIS,
|
||||
RELEASE_TITLE,
|
||||
APPDATA_FILE,
|
||||
ON_GITHUB_ACTIONS,
|
||||
pe_has_authenticode_signature,
|
||||
)
|
||||
|
||||
# Verify we have all assets
|
||||
@@ -51,28 +48,14 @@ files_to_check = (
|
||||
)
|
||||
for file_to_check in files_to_check:
|
||||
if not os.path.exists(file_to_check):
|
||||
raise RuntimeError("Not all release files are present!")
|
||||
raise RuntimeError("Release file %s is missing!" % file_to_check)
|
||||
print("All release files are present")
|
||||
|
||||
# Verify that appdata file is updated
|
||||
if not isinstance(ET.parse(APPDATA_FILE).find(f"./releases/release[@version='{RELEASE_VERSION_BASE}']"), ET.Element):
|
||||
release_missing = f"Could not find {RELEASE_VERSION_BASE} in {APPDATA_FILE}"
|
||||
if RELEASE_THIS:
|
||||
raise RuntimeError(release_missing)
|
||||
elif ON_GITHUB_ACTIONS:
|
||||
print(f"::warning file={APPDATA_FILE},title=Missing release::{release_missing}")
|
||||
else:
|
||||
print(release_missing)
|
||||
|
||||
# Calculate hashes for Synology release
|
||||
with open(RELEASE_SRC, "rb") as inp_file:
|
||||
source_data = inp_file.read()
|
||||
|
||||
print("---- Synology spksrc digest hashes ---- ")
|
||||
print(RELEASE_SRC, "SHA1", hashlib.sha1(source_data).hexdigest())
|
||||
print(RELEASE_SRC, "SHA256", hashlib.sha256(source_data).hexdigest())
|
||||
print(RELEASE_SRC, "MD5", hashlib.md5(source_data).hexdigest())
|
||||
print("----")
|
||||
# When releasing, the Windows installer must be signed
|
||||
if RELEASE_THIS:
|
||||
if not pe_has_authenticode_signature(RELEASE_WIN_INSTALLER):
|
||||
raise RuntimeError("%s is not signed!" % RELEASE_WIN_INSTALLER)
|
||||
print("%s has an Authenticode signature" % RELEASE_WIN_INSTALLER)
|
||||
|
||||
# Check if tagged as release and check for token
|
||||
gh_token = os.environ.get("AUTOMATION_GITHUB_TOKEN", "")
|
||||
@@ -80,18 +63,15 @@ if RELEASE_THIS and gh_token:
|
||||
gh_obj = github.Github(auth=github.Auth.Token(gh_token))
|
||||
gh_repo = gh_obj.get_repo("sabnzbd/sabnzbd")
|
||||
|
||||
# Read the release notes
|
||||
# Read the release notes (reused for the Reddit post below)
|
||||
with open(RELEASE_README, "r") as readme_file:
|
||||
readme_data = readme_file.read()
|
||||
|
||||
# We have to manually check if we already created this release
|
||||
for release in gh_repo.get_releases():
|
||||
if release.tag_name == RELEASE_VERSION:
|
||||
gh_release = release
|
||||
print("Found existing release %s" % gh_release.name)
|
||||
break
|
||||
else:
|
||||
# Did not find it, so create the release, use the GitHub tag we got as input
|
||||
# Find the existing release for this tag, or create a fresh draft
|
||||
try:
|
||||
gh_release = gh_repo.get_release(RELEASE_VERSION)
|
||||
print("Found existing release %s" % gh_release.name)
|
||||
except github.UnknownObjectException:
|
||||
print("Creating GitHub release SABnzbd %s" % RELEASE_VERSION)
|
||||
gh_release = gh_repo.create_git_release(
|
||||
tag=RELEASE_VERSION,
|
||||
@@ -101,38 +81,26 @@ if RELEASE_THIS and gh_token:
|
||||
prerelease=PRERELEASE,
|
||||
)
|
||||
|
||||
# Fetch existing assets, as overwriting is not allowed by GitHub
|
||||
gh_assets = gh_release.get_assets()
|
||||
# Overwriting an asset isn't allowed by GitHub, so delete any that already exist
|
||||
existing_assets = {asset.name: asset for asset in gh_release.get_assets()}
|
||||
for file_to_upload in files_to_check:
|
||||
if file_to_upload in existing_assets:
|
||||
print("Removing existing asset %s" % file_to_upload)
|
||||
existing_assets[file_to_upload].delete_asset()
|
||||
print("Uploading %s to release %s" % (file_to_upload, gh_release.name))
|
||||
gh_release.upload_asset(file_to_upload)
|
||||
|
||||
# Upload the assets
|
||||
for file_to_check in files_to_check:
|
||||
if os.path.exists(file_to_check):
|
||||
# Check if this file was previously uploaded
|
||||
if gh_assets.totalCount:
|
||||
for gh_asset in gh_assets:
|
||||
if gh_asset.name == file_to_check:
|
||||
print("Removing existing asset %s " % gh_asset.name)
|
||||
gh_asset.delete_asset()
|
||||
# Upload the new one
|
||||
print("Uploading %s to release %s" % (file_to_check, gh_release.name))
|
||||
gh_release.upload_asset(file_to_check)
|
||||
|
||||
# Check if we now have all files
|
||||
gh_new_assets = gh_release.get_assets()
|
||||
if gh_new_assets.totalCount:
|
||||
all_assets = [gh_asset.name for gh_asset in gh_new_assets]
|
||||
|
||||
# Check if we have all files, using set-comparison
|
||||
if set(files_to_check) == set(all_assets):
|
||||
print("All assets present, releasing %s" % RELEASE_VERSION)
|
||||
# Publish release
|
||||
gh_release.update_release(
|
||||
tag_name=RELEASE_VERSION,
|
||||
name=RELEASE_TITLE,
|
||||
message=readme_data,
|
||||
draft=False,
|
||||
prerelease=PRERELEASE,
|
||||
)
|
||||
# Publish the release once all assets are attached
|
||||
uploaded_assets = {asset.name for asset in gh_release.get_assets()}
|
||||
if set(files_to_check).issubset(uploaded_assets):
|
||||
print("All assets present, releasing %s" % RELEASE_VERSION)
|
||||
gh_release.update_release(
|
||||
tag_name=RELEASE_VERSION,
|
||||
name=RELEASE_TITLE,
|
||||
message=readme_data,
|
||||
draft=False,
|
||||
prerelease=PRERELEASE,
|
||||
)
|
||||
|
||||
# Update the website
|
||||
gh_repo_web = gh_obj.get_repo("sabnzbd/sabnzbd.github.io")
|
||||
@@ -219,6 +187,20 @@ if RELEASE_THIS and gh_token:
|
||||
print("Merging pull request in sabnzbd/sabnzbd.github.io for the update")
|
||||
update_pr.merge(merge_method="squash")
|
||||
|
||||
# Trigger the Docker image build at linuxserver.io
|
||||
# Branch "develop" builds the pre-releases, "master" the stable releases
|
||||
if linuxserver_token := os.environ.get("LINUXSERVER_WEBHOOK_TOKEN", ""):
|
||||
linuxserver_branch = "develop" if PRERELEASE else "master"
|
||||
print("Triggering linuxserver.io Docker build for branch %s" % linuxserver_branch)
|
||||
requests.post(
|
||||
"https://ci.linuxserver.io/generic-webhook-trigger/invoke?sabnzbd",
|
||||
headers={"Authorization": "Bearer %s" % linuxserver_token},
|
||||
json={"branch": linuxserver_branch},
|
||||
timeout=30,
|
||||
).raise_for_status()
|
||||
else:
|
||||
print("Missing LINUXSERVER_WEBHOOK_TOKEN")
|
||||
|
||||
# Only with GitHub success we proceed to Reddit
|
||||
if reddit_token := os.environ.get("REDDIT_TOKEN", ""):
|
||||
# Token format (without whitespace):
|
||||
@@ -235,9 +217,8 @@ if RELEASE_THIS and gh_token:
|
||||
subreddit_sabnzbd = reddit.subreddit("sabnzbd")
|
||||
subreddit_usenet = reddit.subreddit("usenet")
|
||||
|
||||
# Read the release notes
|
||||
with open(RELEASE_README, "r") as readme_file:
|
||||
readme_lines = readme_file.readlines()
|
||||
# Reuse the release notes read earlier, split into lines
|
||||
readme_lines = readme_data.splitlines(keepends=True)
|
||||
|
||||
# Put the download link after the title
|
||||
readme_lines[2] = "## https://sabnzbd.org/downloads\n\n"
|
||||
@@ -267,6 +248,34 @@ if RELEASE_THIS and gh_token:
|
||||
else:
|
||||
print("Missing REDDIT_TOKEN")
|
||||
|
||||
# Push release notes to Discord via an incoming webhook
|
||||
# Separate channels for testing (pre-release) and stable, both are required
|
||||
discord_webhook_testing = os.environ.get("DISCORD_WEBHOOK_TESTING", "")
|
||||
discord_webhook_stable = os.environ.get("DISCORD_WEBHOOK_STABLE", "")
|
||||
if discord_webhook_testing and discord_webhook_stable:
|
||||
discord_webhook = discord_webhook_testing if PRERELEASE else discord_webhook_stable
|
||||
print("Posting release notes to Discord")
|
||||
# Reuse the release notes read earlier: line 0 is the title header
|
||||
discord_lines = readme_data.splitlines(keepends=True)
|
||||
discord_title = discord_lines[0].lstrip("# ").strip()
|
||||
discord_body = "".join(discord_lines[2:])[:4096]
|
||||
requests.post(
|
||||
discord_webhook,
|
||||
json={
|
||||
"embeds": [
|
||||
{
|
||||
"title": discord_title,
|
||||
"url": gh_release.html_url,
|
||||
"description": discord_body,
|
||||
"color": 0xFFA500 if PRERELEASE else 0x00A550,
|
||||
}
|
||||
]
|
||||
},
|
||||
timeout=30,
|
||||
).raise_for_status()
|
||||
else:
|
||||
print("Missing DISCORD_WEBHOOK_TESTING and/or DISCORD_WEBHOOK_STABLE")
|
||||
|
||||
else:
|
||||
print("To push release to GitHub, first tag the commit.")
|
||||
print("Or missing the AUTOMATION_GITHUB_TOKEN, cannot push to GitHub without it.")
|
||||
+13
-10
@@ -1,20 +1,23 @@
|
||||
# Basic build requirements
|
||||
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
|
||||
pyinstaller==6.19.0
|
||||
packaging==26.0
|
||||
pyinstaller-hooks-contrib==2026.3
|
||||
# All sub-dependencies are listed below and installed with --no-dependencies for security
|
||||
pyinstaller==6.21.0
|
||||
packaging==26.2
|
||||
pyinstaller-hooks-contrib==2026.6
|
||||
altgraph==0.17.5
|
||||
wrapt==2.1.2
|
||||
setuptools==82.0.1
|
||||
markdown==3.8
|
||||
wrapt==2.2.2
|
||||
setuptools==83.0.0
|
||||
markdown==3.10.2
|
||||
pefile==2024.8.26
|
||||
|
||||
# For the Windows build
|
||||
pefile==2024.8.26; sys_platform == 'win32'
|
||||
pywin32-ctypes==0.2.3; sys_platform == 'win32'
|
||||
|
||||
# For the macOS build
|
||||
dmgbuild==1.6.7; sys_platform == 'darwin'
|
||||
mac-alias==2.2.3; sys_platform == 'darwin'
|
||||
macholib==1.16.4; sys_platform == 'darwin'
|
||||
ds-store==1.3.2; sys_platform == 'darwin'
|
||||
ds-store==1.3.3; sys_platform == 'darwin'
|
||||
PyNaCl==1.6.2; sys_platform == 'darwin'
|
||||
|
||||
# 48.0.0 is the last cryptography version shipping a macOS universal2 wheel (49+ is arm64-only)
|
||||
# See https://github.com/pyca/cryptography/issues/13520
|
||||
cryptography<49.0.0; sys_platform == 'darwin'
|
||||
@@ -18,6 +18,10 @@
|
||||
|
||||
Unicode true
|
||||
|
||||
; Must precede any data/header output. Solid LZMA dedups identical files (e.g. the
|
||||
; two SABnzbd*.pkg archives) and shrinks the whole installer.
|
||||
SetCompressor /SOLID lzma
|
||||
|
||||
!addplugindir builder\win\nsis\Plugins
|
||||
!addincludedir builder\win\nsis\Include
|
||||
|
||||
@@ -86,7 +90,6 @@ Unicode true
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Some default compiler settings (uncomment and change at will):
|
||||
SetCompress auto ; (can be off or force)
|
||||
SetDatablockOptimize on ; (can be off)
|
||||
CRCCheck on ; (can be off)
|
||||
AutoCloseWindow false ; (can be true for the window go away automatically at end)
|
||||
@@ -151,7 +154,6 @@ Unicode true
|
||||
!insertmacro MUI_PAGE_FINISH
|
||||
|
||||
!insertmacro MUI_UNPAGE_CONFIRM
|
||||
!define MUI_UNPAGE_COMPONENTSPAGE_NODESC
|
||||
!insertmacro MUI_UNPAGE_COMPONENTS
|
||||
!insertmacro MUI_UNPAGE_INSTFILES
|
||||
|
||||
@@ -165,6 +167,7 @@ Function PageFinishRun
|
||||
${If} $0 == true
|
||||
; Service is installed, start the service
|
||||
!insertmacro SERVICE "start" "SABnzbd" ""
|
||||
Pop $0
|
||||
${Else}
|
||||
; Service not installed, run executable as user
|
||||
${StdUtils.ExecShellAsUser} $0 "$INSTDIR\SABnzbd.exe" "" ""
|
||||
@@ -221,21 +224,32 @@ Section "SABnzbd" SecDummy
|
||||
; Shutdown any running service
|
||||
|
||||
!insertmacro SERVICE "stop" "SABnzbd" ""
|
||||
Pop $0
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Terminate SABnzbd.exe
|
||||
; Ask nicely first, but kill forcefully if it does not exit in time
|
||||
StrCpy $R1 0
|
||||
loop:
|
||||
${nsProcess::FindProcess} "SABnzbd.exe" $R0
|
||||
StrCmp $R0 0 0 endcheck
|
||||
IntCmp $R1 20 forcekill 0 forcekill
|
||||
${nsProcess::CloseProcess} "SABnzbd.exe" $R0
|
||||
IntOp $R1 $R1 + 1
|
||||
Sleep 500
|
||||
Goto loop
|
||||
forcekill:
|
||||
${nsProcess::KillProcess} "SABnzbd.exe" $R0
|
||||
Sleep 500
|
||||
endcheck:
|
||||
${nsProcess::Unload}
|
||||
|
||||
;------------------------------------------------------------------
|
||||
; Make sure old versions are gone (reg-key already read in onInt)
|
||||
StrCmp $PREV_INST_DIR "" noPrevInstallRemove
|
||||
; Only remove the directory if it actually contains a SABnzbd installation,
|
||||
; the registry value could point anywhere
|
||||
IfFileExists "$PREV_INST_DIR\SABnzbd.exe" 0 noPrevInstallRemove
|
||||
${RemovePrev} "$PREV_INST_DIR"
|
||||
Goto continueSetupAfterRemove
|
||||
|
||||
@@ -264,7 +278,9 @@ Section "SABnzbd" SecDummy
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Comments" 'The automated Usenet download tool'
|
||||
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayIcon" '$INSTDIR\icons\sabnzbd.ico'
|
||||
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 40674
|
||||
; Calculate the actual installed size for Add/Remove Programs
|
||||
${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" "$0"
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoRepair" -1
|
||||
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoModify" -1
|
||||
|
||||
@@ -351,7 +367,6 @@ Function .onInit
|
||||
endCheckDesktop:
|
||||
SetShellVarContext all
|
||||
|
||||
Push $1
|
||||
ReadRegStr $1 HKCR ".nzb" "" ; read current file association
|
||||
StrCmp "$1" "NZB File" noPrevInstall 0
|
||||
SectionSetFlags ${assoc} 0 ; Uncheck it when it wasn't checked before
|
||||
@@ -367,9 +382,34 @@ FunctionEnd
|
||||
; begin uninstall settings/section
|
||||
UninstallText $(MsgUninstall)
|
||||
|
||||
; Uninstaller variants of the servicelib functions, needed by the SERVICE macro.
|
||||
; APITAG is undefined again at the end of servicelib.nsh, so redefine it here.
|
||||
!define APITAG "W"
|
||||
|
||||
Function un.Service
|
||||
!insertmacro FUNC_SERVICE "un."
|
||||
FunctionEnd
|
||||
|
||||
Function un.GetParam
|
||||
!insertmacro FUNC_GETPARAM
|
||||
FunctionEnd
|
||||
|
||||
!undef APITAG
|
||||
|
||||
Section "un.$(MsgDelProgram)" Uninstall
|
||||
;make sure sabnzbd.exe isn't running..if so shut it down
|
||||
DetailPrint $(MsgShutting)
|
||||
|
||||
; Stop and remove the SABnzbd service, if it is installed
|
||||
!insertmacro SERVICE "installed" "SABnzbd" ""
|
||||
Pop $0
|
||||
${If} $0 == true
|
||||
!insertmacro SERVICE "stop" "SABnzbd" ""
|
||||
Pop $0
|
||||
!insertmacro SERVICE "delete" "SABnzbd" ""
|
||||
Pop $0
|
||||
${EndIf}
|
||||
|
||||
${nsProcess::KillProcess} "SABnzbd.exe" $R0
|
||||
${nsProcess::Unload}
|
||||
|
||||
@@ -380,7 +420,10 @@ Section "un.$(MsgDelProgram)" Uninstall
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\Classes\AppUserModelId\SABnzbd"
|
||||
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
|
||||
|
||||
${RemovePrev} "$INSTDIR"
|
||||
; Only remove the directory if it actually contains a SABnzbd installation
|
||||
IfFileExists "$INSTDIR\SABnzbd.exe" 0 skipRemoveDir
|
||||
${RemovePrev} "$INSTDIR"
|
||||
skipRemoveDir:
|
||||
${RemovePrevShortcuts}
|
||||
|
||||
; Remove firewall entries
|
||||
@@ -393,8 +436,10 @@ Section "un.$(MsgDelProgram)" Uninstall
|
||||
SectionEnd ; end of uninstall section
|
||||
|
||||
Section /o "un.$(MsgDelSettings)" DelSettings
|
||||
DetailPrint "Uninstall settings $LOCALAPPDATA"
|
||||
Delete "$LOCALAPPDATA\sabnzbd\sabnzbd.ini"
|
||||
; The main uninstall section leaves the context on "all", which would make
|
||||
; $LOCALAPPDATA point to C:\ProgramData instead of the user's profile
|
||||
SetShellVarContext current
|
||||
DetailPrint "Uninstall settings $LOCALAPPDATA\sabnzbd"
|
||||
RMDir /r "$LOCALAPPDATA\sabnzbd"
|
||||
SectionEnd
|
||||
|
||||
@@ -503,24 +548,24 @@ SectionEnd
|
||||
LangString MsgNoWin7 ${LANG_SIMPCHINESE} "SABnzbd 仅支持 Windows 8.1 及更高版本。"
|
||||
|
||||
LangString MsgARM64Notice ${LANG_ENGLISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_CZECH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_DANISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_GERMAN} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_SPANISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_CZECH} "Na naší stránce „Ke stažení“ je k dispozici verze SABnzbd pro architekturu ARM. Tento instalační program obsahuje pouze standardní verzi.$\nStiskněte tlačítko OK pro pokračování nebo Zrušit pro ukončení."
|
||||
LangString MsgARM64Notice ${LANG_DANISH} "En ARM-version af SABnzbd er tilgængelig på vores downloadside. Dette installationsprogram indeholder kun den almindelige version.$\nTryk på OK for at fortsætte eller Annuller for at afslutte."
|
||||
LangString MsgARM64Notice ${LANG_GERMAN} "Eine ARM-Version von SABnzbd ist auf unserer Downloads-Seite verfügbar. Dieses Installationsprogramm enthält nur die reguläre Version.$\nKlicken Sie auf OK, um fortzufahren, oder auf Abbrechen, um zu beenden."
|
||||
LangString MsgARM64Notice ${LANG_SPANISH} "Hay una versión ARM de SABnzbd disponible en nuestra página de descargas. Este instalador solo contiene la versión normal.$\nPulsa Aceptar para continuar o Cancelar para salir."
|
||||
LangString MsgARM64Notice ${LANG_FINNISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_FRENCH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_HEBREW} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_ITALIAN} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_FRENCH} "Une version ARM de SABnzbd est disponible sur notre page de téléchargement. Ce programme d'installation ne contient que la version standard.$\nCliquez sur OK pour continuer ou sur Annuler pour quitter."
|
||||
LangString MsgARM64Notice ${LANG_HEBREW} "גרסת ARM של SABnzbd זמינה בעמוד ההורדות שלנו. תוכנת התקנה זו מכילה רק את הגרסה הרגילה.$\nלחץ על אישור כדי להמשיך או על ביטול כדי לצאת."
|
||||
LangString MsgARM64Notice ${LANG_ITALIAN} "Una versione ARM di SABnzbd è disponibile nella nostra pagina dei download. Questo programma di installazione contiene solo la versione normale.$\nPremi OK per continuare o Annulla per uscire."
|
||||
LangString MsgARM64Notice ${LANG_NORWEGIAN} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_DUTCH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_DUTCH} "Er is een ARM versie van SABnzbd beschikbaar op onze Downloads pagina. Deze installatie bevat alleen de normale (niet-ARM) versie.$\nKlik OK om door te gaan of Annuleren om af te breken."
|
||||
LangString MsgARM64Notice ${LANG_POLISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_PORTUGUESEBR} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_ROMANIAN} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_RUSSIAN} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_SERBIAN} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_SWEDISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_TURKISH} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_SIMPCHINESE} "An ARM version of SABnzbd is available on our Downloads page. This installer only contains the regular version.$\nPress OK to continue or Cancel to exit."
|
||||
LangString MsgARM64Notice ${LANG_TURKISH} "SABnzbd'nin ARM sürümü İndirmeler sayfamızda mevcuttur. Bu kurulum programı sadece normal sürümü içermektedir.$\nDevam etmek için Tamam'a veya çıkmak için İptal'e tıklayın."
|
||||
LangString MsgARM64Notice ${LANG_SIMPCHINESE} "我们的下载页面提供 SABnzbd 的 ARM 版本。此安装程序仅包含常规版本。$\n按“确定”继续,或按“取消”退出。"
|
||||
|
||||
LangString MsgShutting ${LANG_ENGLISH} "Shutting down SABnzbd"
|
||||
LangString MsgShutting ${LANG_CZECH} "Vypínání SABnzbd"
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
- Packaging/build
|
||||
- `builder/`: platform build scripts (DMG/EXE specs, `package.py`, `release.py`).
|
||||
- Platform folders `win/`, `macos/`, `linux/`, `snap/`: installer or platform-specific assets.
|
||||
- `admin/`, `builder/constants.py`, `licenses/`: release and licensing support files.
|
||||
- `admin/`, `builder/common.py`, `licenses/`: release and licensing support files.
|
||||
|
||||
- Documentation
|
||||
- Documentation website source is stored in the `sabnzbd.github.io` repo.
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
#if $pane == "Switches" then $T('cmenu-switches') else ""#
|
||||
#if $pane == "Servers" then $T('cmenu-servers') else ""#
|
||||
#if $pane == "Scheduling" then $T('cmenu-scheduling') else ""#
|
||||
#if $pane == "Email" then $T('cmenu-notif') else ""#
|
||||
#if $pane == "Notify" then $T('cmenu-notif') else ""#
|
||||
#if $pane == "Categories" then $T('cmenu-cat') else ""#
|
||||
#if $pane == "Sorting" then $T('cmenu-sorting') else ""#
|
||||
#if $pane == "Special" then $T('cmenu-special') else ""#
|
||||
@@ -31,14 +31,14 @@
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="${root}staticcfg/ico/apple-touch-icon-180x180-precomposed.png" />
|
||||
<link rel="apple-touch-icon" sizes="192x192" href="${root}staticcfg/ico/android-192x192.png" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/chartist.min.css" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/style.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/bootstrap/css/bootstrap.min.css?v=$cache_buster" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/chartist.min.css?v=$cache_buster" />
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/style.css?v=$cache_buster" />
|
||||
<!--#if $color_scheme not in ('Light', '') #-->
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/${color_scheme}.css?v=$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/${color_scheme}.css?v=$cache_buster"/>
|
||||
<!--#end if#-->
|
||||
|
||||
<link rel="shortcut icon" href="${root}staticcfg/ico/favicon.ico?v=$version" />
|
||||
<link rel="shortcut icon" href="${root}staticcfg/ico/favicon.ico?v=$cache_buster" />
|
||||
|
||||
<script type="text/javascript">
|
||||
// Keeping track of the form state
|
||||
@@ -65,9 +65,9 @@
|
||||
configTranslate.confirmLeave = "$T('confirmWithoutSavingPrompt')";
|
||||
configTranslate.searchPages = ['$T('cmenu-general')', '$T('cmenu-folders')', '$T('cmenu-switches')', '$T('cmenu-sorting')', '$T('cmenu-notif')', '$T('cmenu-special')']
|
||||
</script>
|
||||
<script type="text/javascript" src="${root}staticcfg/js/jquery-3.5.1.min.js?v=$version"></script>
|
||||
<script type="text/javascript" src="${root}staticcfg/bootstrap/js/bootstrap.min.js?v=$version"></script>
|
||||
<script type="text/javascript" src="${root}staticcfg/js/script.js?v=$version"></script>
|
||||
<script type="text/javascript" src="${root}staticcfg/js/jquery-3.5.1.min.js?v=$cache_buster"></script>
|
||||
<script type="text/javascript" src="${root}staticcfg/bootstrap/js/bootstrap.min.js?v=$cache_buster"></script>
|
||||
<script type="text/javascript" src="${root}staticcfg/js/script.js?v=$cache_buster"></script>
|
||||
<script type="text/javascript">
|
||||
// Set default functions for the autocomplete everywhere
|
||||
|
||||
@@ -135,7 +135,7 @@
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="${root}config/notify/" #if $pane == "Email" then 'class="active"' else ""#>
|
||||
<a href="${root}config/notify/" #if $pane == "Notify" then 'class="active"' else ""#>
|
||||
<span class="glyphicon glyphicon-comment"></span>
|
||||
<strong>$T('cmenu-notif')</strong>
|
||||
</a>
|
||||
@@ -170,14 +170,14 @@
|
||||
</a>
|
||||
</li>
|
||||
<li class="dropdown" id="search-menu">
|
||||
<a data-toggle="dropdown" href="#">
|
||||
<a data-toggle="dropdown" href="#" aria-label="$T('cmenu-search')" aria-controls="search-dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="glyphicon glyphicon-search"></span>
|
||||
<strong><span class="glyphicon glyphicon-search"></span></strong>
|
||||
</a>
|
||||
<ul class="dropdown-menu" id="search-dropdown">
|
||||
<li>
|
||||
<form onsubmit="return false">
|
||||
<input type="text" name="config-search" id="search-box" placeholder="$T('cmenu-search')" onkeyup="doConfigSearch(this)">
|
||||
<input type="text" name="config-search" id="search-box" placeholder="$T('cmenu-search')" aria-label="$T('cmenu-search')" aria-controls="search-dropdown" onkeyup="doConfigSearch(this)">
|
||||
</form>
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -95,7 +95,7 @@
|
||||
</div>
|
||||
|
||||
<div class="colmask">
|
||||
<div class="padding">
|
||||
<div class="section padding">
|
||||
<h5 class="copyright">Copyright © 2007-2026 by The SABnzbd-Team (<a href="https://sabnzbd.org/" target="_blank">sabnzbd.org</a>)</h5>
|
||||
<p class="copyright"><small>$T('yourRights')</small></p>
|
||||
</div>
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<!--#set global $pane="Email"#-->
|
||||
<!--#set global $pane="Notify"#-->
|
||||
<!--#set global $help_uri = $confighelpuri + "notifications"#-->
|
||||
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
|
||||
|
||||
@@ -7,10 +7,11 @@
|
||||
<!--#def show_notify_checkboxes($section_label)#-->
|
||||
<!--#for $type in $notify_types#-->
|
||||
<div class="field-pair">
|
||||
<label class="config wide" for="${section_label}_prio_$type">
|
||||
<input type="checkbox" class="notify-checkboxes" name="${section_label}_prio_$type" id="${section_label}_prio_$type" value="1" <!--#if $getVar($section_label + '_prio_' + $type) then 'checked="checked"' else ""#--> />
|
||||
<label class="config" for="${section_label}_prio_$type">
|
||||
$T($notify_types[$type]).replace('/', ' / ')
|
||||
</label>
|
||||
<input type="checkbox" name="${section_label}_prio_$type" id="${section_label}_prio_$type" value="1" <!--#if $getVar($section_label + '_prio_' + $type) then 'checked="checked"' else ""#--> />
|
||||
|
||||
</div>
|
||||
<!--#end for#-->
|
||||
<!--#end def#-->
|
||||
@@ -94,9 +95,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -118,9 +119,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -144,9 +145,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -170,9 +171,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -209,17 +210,17 @@
|
||||
<label class="config" for="${section_label}_target_${type}">
|
||||
$T($notify_types[$type]).replace('/', ' / ')
|
||||
</label>
|
||||
<input type="checkbox" name="${section_label}_target_${type}_enable" id="${section_label}_target_${type}_enable" value="1" <!--#if $getVar($section_label + '_target_' + $type + '_enable') then 'checked="checked"' else ""#--> />
|
||||
<input type="checkbox" class="notify-checkboxes" name="${section_label}_target_${type}_enable" id="${section_label}_target_${type}_enable" value="1" <!--#if $getVar($section_label + '_target_' + $type + '_enable') then 'checked="checked"' else ""#--> />
|
||||
<input type="text" name="${section_label}_target_${type}" id="${section_label}_target_${type}" value="$getVar($section_label + '_target_' + $type)" placeholder="$T('opt-apprise_urls')" />
|
||||
</div>
|
||||
<!--#end for#-->
|
||||
|
||||
<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_apprise"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<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_apprise"><span class="glyphicon glyphicon-comment"></span> $T('testNotify')</button>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -256,9 +257,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -301,9 +302,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -367,9 +368,9 @@
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<div class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -402,11 +403,11 @@
|
||||
<!--#end if#-->
|
||||
$show_notify_checkboxes('pushbullet')
|
||||
<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>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
<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 class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
@@ -426,7 +427,6 @@ jQuery(document).ready(function(){
|
||||
jQuery(this).parents('.col2').find('.col2-cats').hide()
|
||||
}
|
||||
jQuery('form').submit()
|
||||
addRowColor()
|
||||
})
|
||||
jQuery('#email_endjob').change(function() {
|
||||
if(jQuery(this).val() > 0) {
|
||||
|
||||
@@ -156,7 +156,8 @@
|
||||
<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') ($T('rss-accept'))</option>
|
||||
<option value="S"> $T('rss-from-show') ($T('rss-accept'))</option>
|
||||
<option value="G"> $T('rss-age')</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@@ -230,6 +231,7 @@
|
||||
<option value="<"> $T('rss-atmost')</option>
|
||||
<option value="F"> $T('rss-from')</option>
|
||||
<option value="S"> $T('rss-from-show') ($T('rss-accept'))</option>
|
||||
<option value="G"> $T('rss-age')</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@@ -306,6 +308,7 @@
|
||||
<option value="<" <!--#if $filter[3]=="<" then 'selected="selected"' else ""#-->> $T('rss-atmost')</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>
|
||||
<option value="G" <!--#if $filter[3]=="G" then 'selected="selected"' else ""#-->> $T('rss-age')</option>
|
||||
</select>
|
||||
</td>
|
||||
<td>
|
||||
@@ -368,130 +371,43 @@
|
||||
<button type="button" class="btn btn-default testFeed" rel="$active_feed"><span class="glyphicon glyphicon-sort"></span> $T('button-preFeed')</button>
|
||||
<button type="submit" class="btn btn-default Save"><span class="glyphicon glyphicon-forward"></span> $T('button-forceFeed')</button>
|
||||
<button type="button" class="btn btn-default cleanFeed"><span class="glyphicon glyphicon-trash"></span> $T('button-clear') $T('rss-done')</button>
|
||||
<!--#if $evalButton#-->
|
||||
<button type="button" class="btn btn-default evalFeed" rel="$active_feed"><span class="glyphicon glyphicon-ok-circle"></span> $T('button-evalFeed')</button>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
<br/>
|
||||
<div style="padding-left: 10px; border-bottom: 1px solid #DFDEDE;">
|
||||
<ul class="tabs">
|
||||
<li class="active"><a href="#rss-tab-matched" data-toggle="tab">$T('rss-matched') <span class="count"><!--#echo len($matched)#--></span></a></li>
|
||||
<li><a href="#rss-tab-not-matched">$T('rss-notMatched') <span class="count"><!--#echo len($unmatched)#--></span></a></li>
|
||||
<li><a href="#rss-tab-done">$T('rss-done') <span class="count"><!--#echo len($downloaded)#--></span></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade in active padTable" id="rss-tab-matched">
|
||||
<!--#if $matched#-->
|
||||
<table class="catTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="no-sort">$T('link-download')</th>
|
||||
<th>$T('rss-filter')</th>
|
||||
<th>$T('size')</th>
|
||||
<th width="60%">$T('sort-title')</th>
|
||||
<th>$T('category')</th>
|
||||
<th class="default-sort">$T('nzo-age')</th>
|
||||
<th>$T('source')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--#for $job in $matched#-->
|
||||
<tr class="infoTableSeperator">
|
||||
<td>
|
||||
<form action="download" method="get">
|
||||
<input type="hidden" value="$active_feed" name="feed" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
<input type="hidden" name="url" value="$job['url']" />
|
||||
<input type="hidden" name="nzbname" value="$job['nzbname']" />
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-plus-sign"></span> $T('link-download')</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>$job['rule'] $job['skip']</td>
|
||||
<td data-sort-value="$job['size']">$job['size_units']</td>
|
||||
<td>$job['title']</td>
|
||||
<td>$job['cat']</td>
|
||||
<td data-sort-value="$job['age_ms']">$job['age']</td>
|
||||
<td data-sort-value="$job['baselink']" title="$job['baselink']">
|
||||
<!--#if not $job['infourl']#-->
|
||||
<div class="favicon source-icon" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></div>
|
||||
<!--#else#-->
|
||||
<a class="favicon source-icon" href="$job['infourl']" target="_blank" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></a>
|
||||
<!--#end if#-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--#end for#-->
|
||||
</table>
|
||||
<!--#else#-->
|
||||
$T('none')
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="tab-pane padTable" id="rss-tab-not-matched">
|
||||
<!--#if $unmatched#-->
|
||||
<table class="catTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="no-sort">$T('link-download')</th>
|
||||
<th>$T('rss-filter')</th>
|
||||
<th>$T('size')</th>
|
||||
<th width="60%">$T('sort-title')</th>
|
||||
<th>$T('category')</th>
|
||||
<th class="default-sort">$T('nzo-age')</th>
|
||||
<th>$T('source')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--#for $job in $unmatched#-->
|
||||
<tr class="infoTableSeperator">
|
||||
<td>
|
||||
<form action="download" method="get">
|
||||
<input type="hidden" value="$active_feed" name="feed" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
<input type="hidden" name="url" value="$job['url']" />
|
||||
<input type="hidden" name="nzbname" value="$job['nzbname']" />
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-plus-sign"></span> $T('link-download')</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>$job['rule'] $job['skip']</td>
|
||||
<td data-sort-value="$job['size']">$job['size_units']</td>
|
||||
<td>$job['title']</td>
|
||||
<td>$job['cat']</td>
|
||||
<td data-sort-value="$job['age_ms']">$job['age']</td>
|
||||
<td data-sort-value="$job['baselink']" title="$job['baselink']">
|
||||
<!--#if not $job['infourl']#-->
|
||||
<div class="favicon source-icon" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></div>
|
||||
<!--#else#-->
|
||||
<a class="favicon source-icon" href="$job['infourl']" target="_blank" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></a>
|
||||
<!--#end if#-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--#end for#-->
|
||||
</table>
|
||||
<!--#else#-->
|
||||
$T('none')
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="tab-pane padTable" id="rss-tab-done">
|
||||
<!--#if $downloaded#-->
|
||||
<form action="clean_rss_jobs" method="post">
|
||||
<input type="hidden" value="$active_feed" name="feed" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active"><a href="#rss-tab-matched" data-toggle="tab">$T('rss-matched') <span class="count"><!--#echo len($matched)#--></span></a></li>
|
||||
<li><a href="#rss-tab-not-matched">$T('rss-notMatched') <span class="count"><!--#echo len($unmatched)#--></span></a></li>
|
||||
<li><a href="#rss-tab-done">$T('rss-done') <span class="count"><!--#echo len($downloaded)#--></span></a></li>
|
||||
</ul>
|
||||
<div class="section">
|
||||
<div class="tab-content">
|
||||
<div class="tab-pane fade in active padTable" id="rss-tab-matched">
|
||||
<!--#if $matched#-->
|
||||
<table class="catTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="default-sort">$T('rss-added')</th>
|
||||
<th class="no-sort">$T('link-download')</th>
|
||||
<th>$T('rss-filter')</th>
|
||||
<th>$T('size')</th>
|
||||
<th width="60%">$T('sort-title')</th>
|
||||
<th>$T('category')</th>
|
||||
<th>$T('nzo-age')</th>
|
||||
<th class="default-sort">$T('nzo-age')</th>
|
||||
<th>$T('source')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--#for $job in $downloaded#-->
|
||||
<!--#for $job in $matched#-->
|
||||
<tr class="infoTableSeperator">
|
||||
<td data-sort-value="$job['time_downloaded_ms']">$job['time_downloaded']</td>
|
||||
<td>
|
||||
<form action="download" method="get">
|
||||
<input type="hidden" value="$active_feed" name="feed" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
<input type="hidden" name="url" value="$job['url']" />
|
||||
<input type="hidden" name="nzbname" value="$job['nzbname']" />
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-plus-sign"></span> $T('link-download')</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>$job['rule'] $job['skip']</td>
|
||||
<td data-sort-value="$job['size']">$job['size_units']</td>
|
||||
<td>$job['title']</td>
|
||||
@@ -507,12 +423,96 @@
|
||||
</tr>
|
||||
<!--#end for#-->
|
||||
</table>
|
||||
</form>
|
||||
<!--#else#-->
|
||||
<!--#else#-->
|
||||
$T('none')
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="tab-pane padTable" id="rss-tab-not-matched">
|
||||
<!--#if $unmatched#-->
|
||||
<table class="catTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="no-sort">$T('link-download')</th>
|
||||
<th>$T('rss-filter')</th>
|
||||
<th>$T('size')</th>
|
||||
<th width="60%">$T('sort-title')</th>
|
||||
<th>$T('category')</th>
|
||||
<th class="default-sort">$T('nzo-age')</th>
|
||||
<th>$T('source')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--#for $job in $unmatched#-->
|
||||
<tr class="infoTableSeperator">
|
||||
<td>
|
||||
<form action="download" method="get">
|
||||
<input type="hidden" value="$active_feed" name="feed" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
<input type="hidden" name="url" value="$job['url']" />
|
||||
<input type="hidden" name="nzbname" value="$job['nzbname']" />
|
||||
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-plus-sign"></span> $T('link-download')</button>
|
||||
</form>
|
||||
</td>
|
||||
<td>$job['rule'] $job['skip']</td>
|
||||
<td data-sort-value="$job['size']">$job['size_units']</td>
|
||||
<td>$job['title']</td>
|
||||
<td>$job['cat']</td>
|
||||
<td data-sort-value="$job['age_ms']">$job['age']</td>
|
||||
<td data-sort-value="$job['baselink']" title="$job['baselink']">
|
||||
<!--#if not $job['infourl']#-->
|
||||
<div class="favicon source-icon" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></div>
|
||||
<!--#else#-->
|
||||
<a class="favicon source-icon" href="$job['infourl']" target="_blank" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></a>
|
||||
<!--#end if#-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--#end for#-->
|
||||
</table>
|
||||
<!--#else#-->
|
||||
$T('none')
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<div class="tab-pane padTable" id="rss-tab-done">
|
||||
<!--#if $downloaded#-->
|
||||
<form action="clean_rss_jobs" method="post">
|
||||
<input type="hidden" value="$active_feed" name="feed" />
|
||||
<input type="hidden" name="apikey" value="$apikey" />
|
||||
<table class="catTable">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="default-sort">$T('rss-added')</th>
|
||||
<th>$T('rss-filter')</th>
|
||||
<th>$T('size')</th>
|
||||
<th width="60%">$T('sort-title')</th>
|
||||
<th>$T('category')</th>
|
||||
<th>$T('nzo-age')</th>
|
||||
<th>$T('source')</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<!--#for $job in $downloaded#-->
|
||||
<tr class="infoTableSeperator">
|
||||
<td data-sort-value="$job['time_downloaded_ms']">$job['time_downloaded']</td>
|
||||
<td>$job['rule'] $job['skip']</td>
|
||||
<td data-sort-value="$job['size']">$job['size_units']</td>
|
||||
<td>$job['title']</td>
|
||||
<td>$job['cat']</td>
|
||||
<td data-sort-value="$job['age_ms']">$job['age']</td>
|
||||
<td data-sort-value="$job['baselink']" title="$job['baselink']">
|
||||
<!--#if not $job['infourl']#-->
|
||||
<div class="favicon source-icon" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></div>
|
||||
<!--#else#-->
|
||||
<a class="favicon source-icon" href="$job['infourl']" target="_blank" style="background-image: url(//$job['baselink']/favicon.ico);" data-domain="$job['baselink']"></a>
|
||||
<!--#end if#-->
|
||||
</td>
|
||||
</tr>
|
||||
<!--#end for#-->
|
||||
</table>
|
||||
</form>
|
||||
<!--#else#-->
|
||||
$T('none')
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
<!--#end if#-->
|
||||
</div>
|
||||
</div>
|
||||
<!-- /colmask -->
|
||||
@@ -564,7 +564,7 @@ jQuery(document).ready(function(){
|
||||
}
|
||||
})
|
||||
|
||||
jQuery('.tabs a').click(function (e) {
|
||||
jQuery('.nav-tabs a').click(function (e) {
|
||||
e.preventDefault()
|
||||
jQuery(this).tab('show')
|
||||
})
|
||||
@@ -660,12 +660,6 @@ jQuery(document).ready(function(){
|
||||
theForm.attr("action", "clean_rss_jobs").submit();
|
||||
});
|
||||
|
||||
jQuery('.evalFeed').click(function(){
|
||||
setActiveIcon(this)
|
||||
var theForm = jQuery(this).closest("form");
|
||||
theForm.attr("action", "eval_rss_feed").submit();
|
||||
});
|
||||
|
||||
jQuery('.delFilter').click(function(){
|
||||
var theForm = jQuery(this).closest("form");
|
||||
theForm.attr("action", "del_rss_filter").submit();
|
||||
|
||||
@@ -23,11 +23,11 @@ else:
|
||||
<fieldset>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="hour">$T('hour').capitalize() : $T('minute').capitalize()</label>
|
||||
<select name="hour" id="hour">
|
||||
<select name="hour" id="hour" aria-label="$T('hour').capitalize()">
|
||||
<!--#for $i in range(24)#-->
|
||||
<option value="$i" <!--#if hour == i then 'selected="selected"' else ""#--> > $str($i).zfill(2) </option>
|
||||
<!--#end for#-->
|
||||
</select> <b>:</b> <select name="minute" id="minute">
|
||||
</select> <b>:</b> <select name="minute" id="minute" aria-label="$T('minute').capitalize()">
|
||||
<!--#for $i in range(60)#-->
|
||||
<option value="$i"> $str($i).zfill(2) </option>
|
||||
<!--#end for#-->
|
||||
@@ -92,11 +92,11 @@ else:
|
||||
<!--#set $odd = not $odd#-->
|
||||
<form action="delSchedule" method="post">
|
||||
<input type="hidden" name="apikey" value="$apikey"/>
|
||||
<input type="hidden" name="line" id="line" value="$line"/>
|
||||
<input type="hidden" name="line" value="$line"/>
|
||||
<div class="field-pair infoTableSeperator <!--#if $odd then "" else " alt"#-->">
|
||||
<input type="checkbox" name="schedenabled" value="$line" <!--#if int($taskinfo[$schednum][5]) > 0 then 'checked="checked"' else ""#-->>
|
||||
<button class="btn btn-default float-left"><span class="glyphicon glyphicon-trash"></span></button>
|
||||
<div class="scheduleEntry">
|
||||
<input type="checkbox" name="schedenabled" value="$line" aria-label="$T('enabled')" aria-describedby="schedule-description-$schednum" <!--#if int($taskinfo[$schednum][5]) > 0 then 'checked="checked"' else ""#-->>
|
||||
<button class="btn btn-default float-left" type="submit" aria-label="$T('nzo-delete')" aria-describedby="schedule-description-$schednum"><span class="glyphicon glyphicon-trash" aria-hidden="true"></span></button>
|
||||
<div class="scheduleEntry" id="schedule-description-$schednum">
|
||||
<span class="time">$taskinfo[$schednum][1]:$taskinfo[$schednum][2]</span><span class="frequency">$taskinfo[$schednum][3]</span> <span class="darkred">$taskinfo[$schednum][4]</span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -47,7 +47,6 @@
|
||||
<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 advanced-settings">
|
||||
<label class="config" for="displayname">$T('srv-displayname')</label>
|
||||
@@ -77,7 +76,7 @@
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="connections">$T('srv-connections')</label>
|
||||
<input type="number" name="connections" id="connections" min="1" max="500" value="8" required />
|
||||
<input type="number" name="connections" id="connections" min="1" max="500" value="16" required />
|
||||
</div>
|
||||
<div class="field-pair">
|
||||
<label class="config" for="priority">$T('srv-priority')</label>
|
||||
@@ -140,10 +139,11 @@
|
||||
<div class="field-pair no-field-pair-bg">
|
||||
<button class="btn btn-default addNewServer" disabled data-toggle="tooltip" data-placement="top" title="$T('wizard-test-server-required')"><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 class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="field-pair result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
@@ -278,13 +278,14 @@
|
||||
<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 class="result-box">
|
||||
<div class="alert"></div>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="col1" style="display:block;">
|
||||
<div class="col1 padding" style="display:block;">
|
||||
<!--#if 'amounts' in $server#-->
|
||||
<div class="server-amounts-text">
|
||||
<p>
|
||||
@@ -517,14 +518,10 @@
|
||||
// Recalculate the charts if changed while details were open
|
||||
showCharts()
|
||||
}
|
||||
// Add coloring
|
||||
addRowColor()
|
||||
});
|
||||
|
||||
jQuery('#addServerButton').click(function(){
|
||||
jQuery('#addServerContent').show();
|
||||
// Add coloring
|
||||
addRowColor()
|
||||
});
|
||||
|
||||
jQuery('[name="ssl"]').click(function() {
|
||||
|
||||
@@ -442,8 +442,6 @@
|
||||
|
||||
jQuery('.addSorter').click(function(){
|
||||
jQuery('#sorter_0').toggle();
|
||||
// Add coloring
|
||||
addRowColor()
|
||||
});
|
||||
|
||||
jQuery('.showSorter').click(function () {
|
||||
@@ -455,8 +453,6 @@
|
||||
} else {
|
||||
theSwitch.html(theSwitch.html().replace("$T('hideDetails')", "$T('showDetails')"));
|
||||
}
|
||||
// Add coloring
|
||||
addRowColor()
|
||||
});
|
||||
|
||||
// Make the configured sorters sortable
|
||||
|
||||
@@ -152,6 +152,7 @@
|
||||
<select name="auto_sort" id="auto_sort">
|
||||
<option value="">$T('default')</option>
|
||||
<option value="remaining asc" <!--#if $auto_sort == "remaining asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortRemaining')</option>
|
||||
<option value="remaining_bytes asc" <!--#if $auto_sort == "remaining_bytes asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortRemainingBytesAsc')</option>
|
||||
<option value="avg_age desc" <!--#if $auto_sort == "avg_age desc" then 'selected="selected"' else ""#--> >$T('Glitter-sortAgeAsc')</option>
|
||||
<option value="avg_age asc" <!--#if $auto_sort == "avg_age asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortAgeDesc')</option>
|
||||
<option value="name asc" <!--#if $auto_sort == "name asc" then 'selected="selected"' else ""#--> >$T('Glitter-sortNameAsc')</option>
|
||||
@@ -261,7 +262,7 @@
|
||||
<div class="field-pair">
|
||||
<label class="config" for="history_retention_option">$T('opt-history_retention')</label>
|
||||
<select name="history_retention_option" id="history_retention_option">
|
||||
<option value="all" <!--#if $auto_sort == "all" then 'selected="selected"' else ""#-->>$T('history_retention-all')</option>
|
||||
<option value="all" <!--#if $history_retention_option == "all" then 'selected="selected"' else ""#-->>$T('history_retention-all')</option>
|
||||
<option value="number-archive" <!--#if $history_retention_option == "number-archive" then 'selected="selected"' else ""#-->>$T('history_retention-number-archive')</option>
|
||||
<option value="number-delete" <!--#if $history_retention_option == "number-delete" then 'selected="selected"' else ""#-->>$T('history_retention-number-delete')</option>
|
||||
<option value="days-archive" <!--#if $history_retention_option == "days-archive" then 'selected="selected"' else ""#-->>$T('history_retention-days-archive')</option>
|
||||
|
||||
@@ -12,24 +12,24 @@
|
||||
<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="shortcut icon" href="../staticcfg/ico/favicon.ico?v=$version" />
|
||||
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico?v=$cache_buster" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/css/login.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/bootstrap/css/bootstrap.min.css?v=$cache_buster" />
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/css/login.css?v=$cache_buster" />
|
||||
<!--#if $color_scheme not in ('Light', '') #-->
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/css/${color_scheme}.css?v=$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/css/${color_scheme}.css?v=$cache_buster"/>
|
||||
<!--#end if#-->
|
||||
|
||||
<script type="text/javascript" src="../staticcfg/js/jquery-3.5.1.min.js?v=$version"></script>
|
||||
<script type="text/javascript" src="../staticcfg/bootstrap/js/bootstrap.min.js?v=$version"></script>
|
||||
<script type="text/javascript" src="../staticcfg/js/jquery-3.5.1.min.js?v=$cache_buster"></script>
|
||||
<script type="text/javascript" src="../staticcfg/bootstrap/js/bootstrap.min.js?v=$cache_buster"></script>
|
||||
</head>
|
||||
<html>
|
||||
<body>
|
||||
<div class="account-wall">
|
||||
<div class="text-center logo-header">
|
||||
<!--#include $webdir + "/staticcfg/images/logo-full.svg"#-->
|
||||
<a href="https://sabnzbd.org/wiki/faq#why-login" target="_blank">
|
||||
<span class="glyphicon glyphicon-question-sign"></span>
|
||||
<a href="https://sabnzbd.org/wiki/faq#why-login" target="_blank" aria-label="$T('menu-help')">
|
||||
<span class="glyphicon glyphicon-question-sign" aria-hidden="true"></span>
|
||||
</a>
|
||||
</div>
|
||||
<form class="form-signin" action="./" method="post">
|
||||
@@ -37,14 +37,14 @@
|
||||
<div class="alert alert-danger" role="alert">$error</div>
|
||||
<!--#end if#-->
|
||||
|
||||
<input type="text" class="form-control" name="username" placeholder="$T('srv-username')" autocomplete="username" required autofocus>
|
||||
<input type="password" class="form-control" name="password" placeholder="$T('srv-password')" autocomplete="current-password" required>
|
||||
<input type="text" class="form-control" name="username" placeholder="$T('srv-username')" aria-label="$T('srv-username')" autocomplete="username" required autofocus>
|
||||
<input type="password" class="form-control" name="password" placeholder="$T('srv-password')" aria-label="$T('srv-password')" autocomplete="current-password" required>
|
||||
|
||||
<button class="btn btn-default"><span class="glyphicon glyphicon-circle-arrow-right"></span> $T('login') </button>
|
||||
|
||||
<div class="checkbox text-center" data-toggle="tooltip" data-placement="bottom" title="$T('explain-sessionExpire')">
|
||||
<div class="text-center" data-toggle="tooltip" data-placement="bottom" title="$T('explain-sessionExpire')">
|
||||
<label>
|
||||
<input type="checkbox" name="remember_me" value="1"> $T('rememberme')
|
||||
$T('rememberme') <input type="checkbox" name="remember_me" value="1">
|
||||
</label>
|
||||
</div>
|
||||
</form>
|
||||
|
||||
@@ -1 +1 @@
|
||||
@import url('Night.css') screen and (prefers-color-scheme: dark);
|
||||
@import url('Night.css?lastmajorupdate=510') screen and (prefers-color-scheme: dark);
|
||||
@@ -1,45 +1,61 @@
|
||||
body {
|
||||
background-color: black;
|
||||
color: #EBEBEB !important;
|
||||
/*
|
||||
* Night theme — overrides :root color tokens defined in style.css.
|
||||
* Only structural/behavioural rules that can't be expressed as color tokens remain below.
|
||||
*/
|
||||
:root {
|
||||
--clr-page-bg: black;
|
||||
--clr-surface: #303030;
|
||||
--clr-surface-alt: #444444;
|
||||
--clr-surface-hover: #666666;
|
||||
--clr-border: #555555;
|
||||
--clr-border-subtle: #252525;
|
||||
--clr-text: #EBEBEB;
|
||||
--clr-text-muted: #c7c7c7;
|
||||
--clr-error: #ff3333;
|
||||
--clr-link: #63a7e1;
|
||||
--clr-input-bg: #555555;
|
||||
--clr-input-border: #252525;
|
||||
--clr-dropdown-bg: #444444;
|
||||
--clr-modal-bg: #727272;
|
||||
--clr-modal-header-bg: #3C3C3C;
|
||||
--clr-table-bg: #555555;
|
||||
--clr-table-row-alt: #444444;
|
||||
--clr-toggle-inactive: #666666;
|
||||
}
|
||||
|
||||
/* Links use a custom colour in dark mode */
|
||||
a:not(.btn) {
|
||||
color: #63a7e1;
|
||||
color: var(--clr-link);
|
||||
}
|
||||
|
||||
/* Buttons get a subtle white shadow in dark mode for depth */
|
||||
.btn {
|
||||
box-shadow: 1px 1px 1px rgba(255, 255, 255, .1) !important;
|
||||
box-shadow: 1px 1px 1px rgba(255, 255, 255, .1);
|
||||
}
|
||||
|
||||
/* Borders on interactive controls */
|
||||
.btn:not(.btn-danger),
|
||||
.btn-default,
|
||||
input,
|
||||
select,
|
||||
textarea,
|
||||
.advanced-button,
|
||||
.list-group-item {
|
||||
border-color: #252525 !important;
|
||||
.list-group-item {
|
||||
border-color: var(--clr-input-border) !important;
|
||||
}
|
||||
|
||||
#addFeed,
|
||||
#addFeedContent,
|
||||
.section {
|
||||
border-bottom: 1px solid #555555;
|
||||
}
|
||||
|
||||
.col2 p,
|
||||
.col2-cats {
|
||||
color: #AAA;
|
||||
.advanced-button {
|
||||
background-color: var(--clr-surface-alt);
|
||||
}
|
||||
|
||||
/* Sidebar section header */
|
||||
.col2 h3 {
|
||||
background: none repeat scroll 0 0 #555555;
|
||||
background: none repeat scroll 0 0 var(--clr-surface-alt);
|
||||
}
|
||||
|
||||
/* Various elements that need the alt surface */
|
||||
.catTable,
|
||||
.dropdown-menu,
|
||||
.dropdown-menu .divider,
|
||||
.even,
|
||||
.Key tr:nth-child(odd),
|
||||
.language:hover,
|
||||
.navbar-default .navbar-nav>.open>a,
|
||||
@@ -57,21 +73,32 @@ textarea,
|
||||
ul.tabs li.active a,
|
||||
select[disabled],
|
||||
select:hover {
|
||||
background-color: #444444 !important;
|
||||
color: #EBEBEB !important;
|
||||
background-color: var(--clr-surface-alt) !important;
|
||||
color: var(--clr-text) !important;
|
||||
}
|
||||
|
||||
/* Button hovers */
|
||||
.btn:not(.btn-danger):hover,
|
||||
.btn:not(.btn-danger):active:focus {
|
||||
background-color: var(--clr-surface-hover);
|
||||
}
|
||||
|
||||
.btn:not(.btn-danger):active {
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Error / failed colour */
|
||||
.failed {
|
||||
color: #ff3333 !important;
|
||||
color: var(--clr-error) !important;
|
||||
}
|
||||
|
||||
/* Secondary text */
|
||||
#rightGreyText,
|
||||
small {
|
||||
color: #c7c7c7 !important;
|
||||
color: var(--clr-text-muted) !important;
|
||||
}
|
||||
|
||||
.Categories form.sorting-row:nth-child(2n-1) tr,
|
||||
.advanced-button,
|
||||
/* Controls and form elements using input bg */
|
||||
.advanced-buttonSeperator,
|
||||
.alt,
|
||||
.infoTableSeperator.alt,
|
||||
@@ -101,52 +128,16 @@ input[type="date"],
|
||||
input[type="number"],
|
||||
input[type="password"],
|
||||
input[disabled],
|
||||
textarea,
|
||||
select {
|
||||
background-color: #555555;
|
||||
color: #EBEBEB;
|
||||
background-color: var(--clr-input-bg);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
.btn:hover:not(.btn-danger),
|
||||
.btn-default:hover,
|
||||
.tab-content .catTable tr:hover td,
|
||||
input:hover,
|
||||
textarea:hover,
|
||||
a.list-group-item:hover,
|
||||
select:hover,
|
||||
textarea:hover,
|
||||
input[type="date"]:hover,
|
||||
input[type="datetime"]:hover,
|
||||
input[type="datetime-local"]:hover,
|
||||
input[type="email"]:hover,
|
||||
input[type="month"]:hover,
|
||||
input[type="number"]:hover,
|
||||
input[type="password"]:hover,
|
||||
input[type="search"]:hover,
|
||||
input[type="tel"]:hover,
|
||||
input[type="text"]:hover,
|
||||
input[type="time"]:hover,
|
||||
input[type="url"]:hover,
|
||||
input[type="week"]:hover,
|
||||
textarea:focus,
|
||||
select:focus,
|
||||
input[type="date"]:focus,
|
||||
input[type="datetime"]:focus,
|
||||
input[type="datetime-local"]:focus,
|
||||
input[type="email"]:focus,
|
||||
input[type="month"]:focus,
|
||||
input[type="number"]:focus,
|
||||
input[type="password"]:focus,
|
||||
input[type="search"]:focus,
|
||||
input[type="tel"]:focus,
|
||||
input[type="text"]:focus,
|
||||
input[type="time"]:focus,
|
||||
input[type="url"]:focus,
|
||||
input[type="week"]:focus {
|
||||
background-color: #666;
|
||||
color: #EBEBEB;
|
||||
.Categories form.sorting-row:nth-child(2n-1) tr {
|
||||
background-color: var(--clr-surface);
|
||||
}
|
||||
|
||||
/* Focus / active border */
|
||||
.btn-default:focus,
|
||||
.form-control:focus,
|
||||
input:focus,
|
||||
@@ -157,46 +148,57 @@ select:focus {
|
||||
box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.3) !important;
|
||||
}
|
||||
|
||||
/* Modal backdrop */
|
||||
.modal-backdrop {
|
||||
background-color: #262626 !important;
|
||||
}
|
||||
|
||||
.Key tr {
|
||||
/* Table structural */
|
||||
.Key tr,
|
||||
.Config .table {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.table>tbody>tr>td,
|
||||
.table>tbody>tr>th,
|
||||
.infoTableSeperator,
|
||||
.modal-footer,
|
||||
.data-row {
|
||||
border-top: 1px solid #555555;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
border-top: 1px solid rgb(131 131 131);
|
||||
}
|
||||
|
||||
hr {
|
||||
border-top: 1px solid #555555;
|
||||
border-top: 1px solid var(--clr-border);
|
||||
}
|
||||
|
||||
/* Danger button dark border */
|
||||
.btn-danger {
|
||||
border-color: #7b2b28;
|
||||
}
|
||||
|
||||
/* Section borders */
|
||||
.tab-content .catTable tbody,
|
||||
ul.tabs a,
|
||||
.colmask,
|
||||
.section,
|
||||
#addFeed,
|
||||
#addFeedContent,
|
||||
#subscriptions,
|
||||
.RSS form[action="add_rss_feed"] tr:nth-child(even),
|
||||
.Config .table {
|
||||
border: 1px solid #555555;
|
||||
.RSS form[action="add_rss_feed"] tr:nth-child(even) {
|
||||
border: 1px solid var(--clr-border);
|
||||
}
|
||||
|
||||
/* Hover states */
|
||||
.Categories form:first-of-type tr:last-of-type,
|
||||
.default,
|
||||
.dropdown-menu>li>a:focus,
|
||||
.dropdown-menu>li>a:hover {
|
||||
background-color: #696969;
|
||||
background-color: var(--clr-surface-hover);
|
||||
}
|
||||
|
||||
/* Elements using primary text colour */
|
||||
.activeRSS,
|
||||
.activeRSS a,
|
||||
.activeRSS a:visited,
|
||||
@@ -216,71 +218,82 @@ ul.tabs a,
|
||||
a.wizard-advanced-settings,
|
||||
.quoteBlock a,
|
||||
a.main-helplink,
|
||||
col2 h3 a,
|
||||
.col2 h3 a,
|
||||
.text-center a,
|
||||
.text-center a:hover {
|
||||
color: #EBEBEB;
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Remove backgrounds on container/content wrappers */
|
||||
.container,
|
||||
#content {
|
||||
background-color: unset !important;
|
||||
}
|
||||
|
||||
#content>div.colmask>div:nth-child(3) {
|
||||
border-bottom: 1px solid #555555 !important;
|
||||
}
|
||||
|
||||
/* Server chart lines */
|
||||
.Servers .ct-series-a .ct-line,
|
||||
.Servers .ct-series-a .ct-point {
|
||||
stroke: #EBEBEB;
|
||||
stroke: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Sections/cards use dark surface */
|
||||
#inner,
|
||||
.colmask {
|
||||
background-color: #303030;
|
||||
.section,
|
||||
#addFeed,
|
||||
#addFeedContent {
|
||||
background-color: var(--clr-surface);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.3);
|
||||
}
|
||||
|
||||
.modal-header {
|
||||
background-color: #3C3C3C;
|
||||
/* Active tab uses card surface */
|
||||
.nav.nav-tabs li a {
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
.modal-content,
|
||||
.modal-body,
|
||||
.modal-footer {
|
||||
background-color: #727272;
|
||||
.nav.nav-tabs li a:hover {
|
||||
background-color: var(--clr-surface-alt);
|
||||
border-color: var(--clr-border);
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
.nav.nav-tabs li.active a,
|
||||
.nav.nav-tabs li.active a:hover {
|
||||
border-color: var(--clr-border);
|
||||
border-bottom: none;
|
||||
background-color: var(--clr-surface);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* QR modal needs light background */
|
||||
#modal_qr .modal-body {
|
||||
background-color: #EBEBEB;
|
||||
}
|
||||
|
||||
.form-signin .btn.btn-default {
|
||||
color: black;
|
||||
}
|
||||
|
||||
/* RSS icon */
|
||||
.rss-icon-svg {
|
||||
fill: white;
|
||||
}
|
||||
|
||||
.rss-symbol {
|
||||
fill: #555555;
|
||||
fill: var(--clr-input-bg);
|
||||
}
|
||||
|
||||
/* Placeholder */
|
||||
::placeholder {
|
||||
color: #EBEBEB !important;
|
||||
color: var(--clr-text) !important;
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
/* Tooltip — inverted (light tooltip on dark page) */
|
||||
.tooltip-inner {
|
||||
background-color: #E4E4E4 !important;
|
||||
color: #000 !important;
|
||||
}
|
||||
/* for login */
|
||||
|
||||
.tooltip.bottom .tooltip-arrow {
|
||||
border-bottom-color: #E4E4E4 !important;
|
||||
}
|
||||
/* config>general - host-warning */
|
||||
|
||||
.tooltip.top .tooltip-arrow {
|
||||
border-top-color: #E4E4E4 !important;
|
||||
}
|
||||
|
||||
@@ -1,18 +1,19 @@
|
||||
:root {
|
||||
/* Light mode defaults — overridden by Night.css */
|
||||
--clr-page-bg: #E4E4E4;
|
||||
--clr-surface: #FFFFFF;
|
||||
--clr-input-bg: #FFFFFF;
|
||||
--clr-border: rgba(0, 0, 0, 0.15);
|
||||
--clr-text: #000000;
|
||||
--clr-text-muted: #636363;
|
||||
--radius-lg: 8px;
|
||||
--clr-toggle-active: #f9ca33;
|
||||
--clr-toggle-inactive: #aaaaaa;
|
||||
}
|
||||
|
||||
body {
|
||||
overflow-y: scroll;
|
||||
background-color: #E4E4E4;
|
||||
}
|
||||
|
||||
* {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.btn,
|
||||
.btn:hover,
|
||||
.btn:active,
|
||||
.btn:focus {
|
||||
box-shadow: 1px 1px 1px rgba(0,0,0,.1) !important;
|
||||
background-color: white !important;
|
||||
background-color: var(--clr-page-bg);
|
||||
}
|
||||
|
||||
.logo-header {
|
||||
@@ -25,30 +26,34 @@ body {
|
||||
}
|
||||
|
||||
.account-wall {
|
||||
width: 300px;
|
||||
width: 400px;
|
||||
position: absolute;
|
||||
top: 30%;
|
||||
left: 50%;
|
||||
transform: translate(-50%, -30%);
|
||||
transform: translate(-50%, -30%);
|
||||
background-color: var(--clr-surface);
|
||||
border: 1px solid var(--clr-border);
|
||||
border-radius: var(--radius-lg);
|
||||
padding: 25px 40px 15px;
|
||||
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.text-center a {
|
||||
position: absolute;
|
||||
right: 13px;
|
||||
top: 12px;
|
||||
color: #636363;
|
||||
color: var(--clr-text-muted);
|
||||
font-size: 1.2em
|
||||
}
|
||||
|
||||
.text-center a:hover {
|
||||
color: black;
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
.form-signin .alert {
|
||||
margin: 5px 0px;
|
||||
}
|
||||
|
||||
|
||||
.form-signin input {
|
||||
margin-top: 5px
|
||||
}
|
||||
@@ -66,12 +71,43 @@ body {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
|
||||
input[type="checkbox"] {
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
margin-top: 2px;
|
||||
/* Toggle switch — text on the left, switch on the right */
|
||||
label {
|
||||
margin-top: 10px;
|
||||
color: var(--clr-text-muted);
|
||||
}
|
||||
|
||||
label {
|
||||
color: #636363;
|
||||
}
|
||||
input[type="checkbox"] {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
position: relative;
|
||||
top: 5px;
|
||||
left: 5px;
|
||||
width: 36px;
|
||||
height: 20px;
|
||||
background-color: var(--clr-toggle-inactive);
|
||||
background-image:
|
||||
radial-gradient(circle at 10px 10px, #ffffff 6.5px, rgba(255,255,255,0) 7px),
|
||||
radial-gradient(circle at 11px 11px, rgba(0,0,0,0.30) 6.5px, transparent 9.5px);
|
||||
background-size: 20px 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px center;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s, background-position 0.15s;
|
||||
}
|
||||
|
||||
input[type="checkbox"]:checked {
|
||||
background-color: var(--clr-toggle-active);
|
||||
background-position: 16px center;
|
||||
background-image:
|
||||
radial-gradient(circle at 10px 10px, #ffffff 6.5px, rgba(255,255,255,0) 7px),
|
||||
radial-gradient(circle at 10.5px 10.5px, rgba(0,0,0,0.30) 6.5px, transparent 9.5px);
|
||||
}
|
||||
|
||||
input[type="checkbox"]:focus-visible {
|
||||
outline: 2px solid var(--clr-toggle-active);
|
||||
outline-offset: 2px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
@@ -1,6 +1,35 @@
|
||||
:root {
|
||||
/* Border radius scale */
|
||||
--radius-sm: 4px; /* dropdowns */
|
||||
--radius-md: 4px; /* inputs, buttons, section headers */
|
||||
--radius-lg: 6px; /* cards, modals */
|
||||
|
||||
/* Color palette — light mode defaults; override in Night.css */
|
||||
--clr-page-bg: #E4E4E4; /* body/page background */
|
||||
--clr-surface: #FFFFFF; /* cards/sections (.section, #addFeed, etc.) */
|
||||
--clr-surface-alt: #F8F8F8; /* alternating rows, .alt elements */
|
||||
--clr-surface-hover: #f6f6f6; /* hovered rows and buttons */
|
||||
--clr-border: #dfdede; /* card/section borders */
|
||||
--clr-border-subtle: #E5E5E5; /* inner dividers (#subscriptions, data-row) */
|
||||
--clr-text: #000000; /* primary body text */
|
||||
--clr-text-muted: #666666; /* secondary text (.col2 p, .feed-row td) */
|
||||
--clr-error: red; /* errors, failed items */
|
||||
--clr-link: inherit; /* links (Bootstrap default in light) */
|
||||
--clr-input-bg: #FFFFFF; /* form inputs, buttons */
|
||||
--clr-input-border: #d4d0c8; /* input borders */
|
||||
--clr-toggle-active: #f9ca33; /* accent color (toggles, focus rings) */
|
||||
--clr-toggle-inactive: #aaaaaa; /* toggle track when off */
|
||||
--clr-dropdown-bg: #FFFFFF; /* dropdown menus */
|
||||
--clr-modal-bg: #FFFFFF; /* modal body/footer */
|
||||
--clr-modal-header-bg: #3C3C3C; /* modal header (dark in both themes) */
|
||||
--clr-table-bg: #FFFFFF; /* table background */
|
||||
--clr-table-row-alt: #F8F8F8; /* alternating table row background */
|
||||
}
|
||||
|
||||
body {
|
||||
overflow-y: scroll;
|
||||
background-color: #E4E4E4;
|
||||
background-color: var(--clr-page-bg);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
#logo {
|
||||
display: block;
|
||||
@@ -8,7 +37,7 @@ body {
|
||||
}
|
||||
|
||||
#content {
|
||||
color: #000;
|
||||
color: var(--clr-text);
|
||||
padding: 65px 20px 20px;
|
||||
font-size: 13px;
|
||||
}
|
||||
@@ -18,10 +47,7 @@ body {
|
||||
clear: both;
|
||||
float: left;
|
||||
overflow: visible;
|
||||
border: 1px solid #dfdede;
|
||||
border-bottom: none !important;
|
||||
background-color: #FFF;
|
||||
width: 100%
|
||||
width: 100%;
|
||||
}
|
||||
.advanced-button {
|
||||
float: right;
|
||||
@@ -31,21 +57,26 @@ body {
|
||||
color: inherit;
|
||||
height: auto;
|
||||
padding-bottom: 5px;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
#advanced-settings-button {
|
||||
float: left;
|
||||
margin: 2px 7px 0px 0px;
|
||||
float: right;
|
||||
margin: 0px 0px 0px 7px;
|
||||
}
|
||||
.advanced-buttonSeperator {
|
||||
width: 1px;
|
||||
height: 34px;
|
||||
background-color: #dfdede;
|
||||
background-color: var(--clr-border);
|
||||
float: right;
|
||||
margin: 0px 10px;
|
||||
}
|
||||
.section, #addFeed, #addFeedContent {
|
||||
border-bottom: 1px solid #dfdede;
|
||||
overflow: auto;
|
||||
overflow: hidden !important;
|
||||
background-color: var(--clr-surface);
|
||||
border: 1px solid var(--clr-border);
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
.col2 {
|
||||
z-index: 10;
|
||||
@@ -58,7 +89,10 @@ body {
|
||||
z-index: 11;
|
||||
width: 100%;
|
||||
float: none;
|
||||
padding: 12px 0 0;
|
||||
padding: 2px 0;
|
||||
}
|
||||
.col1 .field-pair {
|
||||
position: relative;
|
||||
}
|
||||
.col2 h3 {
|
||||
background: none repeat scroll 0 0 #666;
|
||||
@@ -71,6 +105,7 @@ body {
|
||||
white-space: nowrap;
|
||||
text-overflow: ellipsis;
|
||||
position: relative;
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
.col2 h3 a {
|
||||
display: none;
|
||||
@@ -120,7 +155,7 @@ label.config,
|
||||
display: block;
|
||||
text-align: left;
|
||||
margin-right: 10px;
|
||||
margin-left: 20px;
|
||||
margin-left: 5px;
|
||||
padding-top: 5px;
|
||||
}
|
||||
label.config-hover {
|
||||
@@ -141,7 +176,7 @@ label.wide,
|
||||
.desc {
|
||||
display: block;
|
||||
margin: 0 0 0 24%;
|
||||
padding: 3px 0 0 31px;
|
||||
padding: 3px 0 0 16px;
|
||||
font-size: 12px;
|
||||
font-style: italic;
|
||||
}
|
||||
@@ -162,23 +197,26 @@ input[type="checkbox"]+.desc {
|
||||
.col2 p,
|
||||
.col2-cats {
|
||||
font-size: 12px;
|
||||
color: #666;
|
||||
color: var(--clr-text-muted);
|
||||
margin: 1em 0;
|
||||
}
|
||||
.col2 p {
|
||||
margin-left: 3px;
|
||||
}
|
||||
.field-pair {
|
||||
padding: 6px;
|
||||
padding: 10px 5px;
|
||||
clear: both;
|
||||
float: none;
|
||||
overflow: hidden;
|
||||
min-width: 555px;
|
||||
border-bottom: 1px solid rgb(131 131 131 / 0.4);
|
||||
}
|
||||
.field-pair:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
.Key tr:nth-child(odd),
|
||||
.tab-pane tr:nth-child(odd),
|
||||
.even {
|
||||
background-color: #F8F8F8;
|
||||
.tab-pane tr:nth-child(odd) {
|
||||
background-color: var(--clr-table-row-alt);
|
||||
}
|
||||
.field-pair:last-child,
|
||||
.field-pair.no-field-pair-bg {
|
||||
@@ -186,7 +224,7 @@ input[type="checkbox"]+.desc {
|
||||
}
|
||||
.alt,
|
||||
.infoTableSeperator.alt {
|
||||
background-color: #F8F8F8;
|
||||
background-color: var(--clr-surface-alt);
|
||||
}
|
||||
.success {
|
||||
color: #5cb85c !important;
|
||||
@@ -195,6 +233,8 @@ input[type="checkbox"]+.desc {
|
||||
padding: 0;
|
||||
min-width: 300px;
|
||||
margin: 0;
|
||||
border-radius: var(--radius-sm);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.12);
|
||||
}
|
||||
.typeahead.dropdown-menu>li>a {
|
||||
padding-left: 12px;
|
||||
@@ -211,9 +251,23 @@ input[type="checkbox"]+.desc {
|
||||
outline: 0;
|
||||
min-width: 350px;
|
||||
margin: 0;
|
||||
padding: 0 12px 12px 6px;
|
||||
padding: 0 12px 0 6px;
|
||||
}
|
||||
textarea, select, input[type="date"], input[type="datetime"], input[type="datetime-local"], input[type="email"], input[type="month"], input[type="number"], input[type="password"], input[type="search"], input[type="tel"], input[type="text"], input[type="time"], input[type="url"], input[type="week"] {
|
||||
textarea,
|
||||
select,
|
||||
input[type="date"],
|
||||
input[type="datetime"],
|
||||
input[type="datetime-local"],
|
||||
input[type="email"],
|
||||
input[type="month"],
|
||||
input[type="number"],
|
||||
input[type="password"],
|
||||
input[type="search"],
|
||||
input[type="tel"],
|
||||
input[type="text"],
|
||||
input[type="time"],
|
||||
input[type="url"],
|
||||
input[type="week"] {
|
||||
padding-left: 5px;
|
||||
border: 1px solid #d4d0c8;
|
||||
}
|
||||
@@ -257,22 +311,57 @@ input[type="text"]:focus,
|
||||
input[type="time"]:focus,
|
||||
input[type="url"]:focus,
|
||||
input[type="week"]:focus {
|
||||
background-color: #fffff0;
|
||||
background-color: var(--clr-surface-hover);
|
||||
color: var(--clr-text);
|
||||
border: 1px solid #aaa;
|
||||
}
|
||||
|
||||
.col1 input[type='checkbox'] {
|
||||
position: absolute;
|
||||
top: auto!important;
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-left: 0;
|
||||
/* Bootstrap's .checkbox reserves only 20px for the input, but our toggle is 36px.
|
||||
Override to give the label enough padding so the text doesn't overlap the toggle. */
|
||||
.checkbox label {
|
||||
padding-left: 46px;
|
||||
}
|
||||
.col2 input[type='checkbox'] {
|
||||
height: 16px;
|
||||
width: 16px;
|
||||
margin-top: 0;
|
||||
.checkbox input[type='checkbox'] {
|
||||
margin-left: -46px;
|
||||
}
|
||||
|
||||
input[type='checkbox'] {
|
||||
appearance: none;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
flex-shrink: 0;
|
||||
width: 36px;
|
||||
height: 20px;
|
||||
/* Track colour + white circle drawn as a radial gradient tile */
|
||||
background-color: var(--clr-toggle-inactive);
|
||||
background-image:
|
||||
/* white circle, 7px radius (14px diameter) — on top */
|
||||
radial-gradient(circle at 10px 10px, #ffffff 6.5px, rgba(255,255,255,0) 7px),
|
||||
/* soft drop-shadow 2px below the circle */
|
||||
radial-gradient(circle at 11px 11px, rgba(0,0,0,0.30) 6.5px, transparent 9.5px);
|
||||
background-size: 20px 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px center;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s, background-position 0.15s;
|
||||
}
|
||||
|
||||
input[type='checkbox']:checked {
|
||||
background-color: var(--clr-toggle-active);
|
||||
background-position: 16px center;
|
||||
background-image:
|
||||
radial-gradient(circle at 10px 10px, #ffffff 6.5px, rgba(255,255,255,0) 7px),
|
||||
radial-gradient(circle at 10.5px 10.5px, rgba(0,0,0,0.30) 6.5px, transparent 9.5px);
|
||||
}
|
||||
|
||||
input[type='checkbox']:focus-visible {
|
||||
outline: 2px solid var(--clr-toggle-active);
|
||||
outline-offset: 2px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.readonly {
|
||||
background-color: #eff;
|
||||
}
|
||||
@@ -413,11 +502,6 @@ tr.separator {
|
||||
.RSS .catTable select {
|
||||
max-width: 120px;
|
||||
}
|
||||
.RSS input[type="checkbox"] {
|
||||
width:16px;
|
||||
height: 16px;
|
||||
margin-top: 0px;
|
||||
}
|
||||
.RSS form[action="add_rss_feed"] tr:nth-child(even) {
|
||||
border: 1px solid #E5E5E5;
|
||||
}
|
||||
@@ -454,7 +538,9 @@ tr.separator {
|
||||
}
|
||||
.Config .table {
|
||||
margin: 0;
|
||||
border: 1px solid #ddd
|
||||
}
|
||||
.Config .table {
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
.Config .colmask {
|
||||
margin-bottom: 12px;
|
||||
@@ -511,6 +597,8 @@ tr.separator {
|
||||
display: none;
|
||||
border: 1px solid #ccc;
|
||||
width: 425px;
|
||||
border-radius: var(--radius-md);
|
||||
overflow: hidden;
|
||||
}
|
||||
.Key th {
|
||||
background: none repeat scroll 0 0 #666;
|
||||
@@ -539,22 +627,26 @@ tr.separator {
|
||||
width: 160px;
|
||||
}
|
||||
.infoTableSeperator {
|
||||
border-top: 1px solid #ddd;
|
||||
border-top: 1px solid var(--clr-border-subtle);
|
||||
}
|
||||
.icon {
|
||||
padding-left: 5px;
|
||||
}
|
||||
.modal-content {
|
||||
box-shadow: none;
|
||||
background-color: var(--clr-modal-bg);
|
||||
box-shadow: 0 8px 30px rgba(0,0,0,0.2);
|
||||
border-radius: var(--radius-lg);
|
||||
overflow: hidden;
|
||||
}
|
||||
.modal-backdrop {
|
||||
background-color: white;
|
||||
background-color: var(--clr-page-bg);
|
||||
}
|
||||
.modal-backdrop.in {
|
||||
opacity: 0.8;
|
||||
}
|
||||
.modal-body {
|
||||
padding-bottom: 0;
|
||||
background-color: var(--clr-modal-bg);
|
||||
}
|
||||
.modal-dialog {
|
||||
padding: 3px;
|
||||
@@ -563,7 +655,7 @@ tr.separator {
|
||||
word-break: break-all;
|
||||
}
|
||||
.modal-header {
|
||||
background-color: #3C3C3C;
|
||||
background-color: var(--clr-modal-header-bg);
|
||||
color: white;
|
||||
border: 0;
|
||||
padding:11px 12px 8px;
|
||||
@@ -602,6 +694,11 @@ tr.separator {
|
||||
.btn-default.clearBtn {
|
||||
margin-left: -1px !important;
|
||||
box-shadow: 1px 0px 1px rgba(0,0,0,.1) !important;
|
||||
border-radius: 0 var(--radius-md) var(--radius-md) 0 !important;
|
||||
}
|
||||
input:has(+ .fileBrowser),
|
||||
input:has(+ .clearBtn) {
|
||||
border-radius: var(--radius-md) 0 0 var(--radius-md) !important;
|
||||
}
|
||||
#filebrowser_modal .list-group-item {
|
||||
font-weight: bold;
|
||||
@@ -620,6 +717,7 @@ tr.separator {
|
||||
#filebrowser_modal .checkbox input+span {
|
||||
opacity: 0.6;
|
||||
font-weight: bold;
|
||||
line-height: 1.5em;
|
||||
}
|
||||
#filebrowser_modal .checkbox input:checked+span,
|
||||
#filebrowser_modal .checkbox span:hover {
|
||||
@@ -679,11 +777,11 @@ h2.activeRSS {
|
||||
color: red !important;
|
||||
}
|
||||
#subscriptions {
|
||||
border: 1px solid #E5E5E5;
|
||||
border: 1px solid var(--clr-border-subtle);
|
||||
width: 100%;
|
||||
}
|
||||
.data-row {
|
||||
border-top: 1px solid #E5E5E5;
|
||||
border-top: 1px solid var(--clr-border-subtle);
|
||||
}
|
||||
#subscriptions td {
|
||||
border: 0 none;
|
||||
@@ -721,7 +819,7 @@ h2.activeRSS {
|
||||
white-space: nowrap;
|
||||
}
|
||||
.feed-row td {
|
||||
color: #777;
|
||||
color: var(--clr-text-muted);
|
||||
max-width: 515px;
|
||||
padding: 0 0 .5em;
|
||||
}
|
||||
@@ -737,7 +835,7 @@ h2.activeRSS {
|
||||
text-align: left;
|
||||
}
|
||||
.tab-content .catTable tbody {
|
||||
border: 1px solid #ddd;
|
||||
border: 1px solid var(--clr-border);
|
||||
}
|
||||
.tab-content .catTable td {
|
||||
line-height: 2em;
|
||||
@@ -746,7 +844,7 @@ h2.activeRSS {
|
||||
word-break: break-all;
|
||||
}
|
||||
.tab-content .catTable tr:hover td {
|
||||
background-color: #F2F2F2;
|
||||
background-color: var(--clr-surface-hover);
|
||||
}
|
||||
span.count {
|
||||
background-color: #6E6E6E;
|
||||
@@ -755,47 +853,18 @@ span.count {
|
||||
padding: 1px 10px;
|
||||
}
|
||||
a.current .count {
|
||||
background-color: #777!important;
|
||||
background-color: #777 !important;
|
||||
}
|
||||
a.current:hover .count {
|
||||
background-color: #333!important;
|
||||
background-color: #333 !important;
|
||||
}
|
||||
ul.tabs {
|
||||
margin: 0!important;
|
||||
padding: 0;
|
||||
height: 30px;
|
||||
.nav-tabs {
|
||||
margin: 10px 10px 0 10px;
|
||||
border: none;
|
||||
}
|
||||
ul.tabs li {
|
||||
float: left;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
ul.tabs a {
|
||||
float: left;
|
||||
font-size: 13px;
|
||||
display: block;
|
||||
padding: 5px 30px;
|
||||
text-decoration: none;
|
||||
border: 1px solid #dfdede;
|
||||
border-bottom: 0;
|
||||
color: black;
|
||||
margin-right: 2px;
|
||||
position: relative;
|
||||
top: 1px;
|
||||
outline: 0;
|
||||
}
|
||||
ul.tabs a:hover {
|
||||
background-color: #eee;
|
||||
.nav-tabs>li>a {
|
||||
color: #333;
|
||||
}
|
||||
ul.tabs li.active a {
|
||||
background-color: #eee;
|
||||
border-bottom: 1px solid #f8f4e7;
|
||||
color: #000;
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.checkbox-days {
|
||||
float: left;
|
||||
}
|
||||
@@ -812,9 +881,6 @@ ul.tabs li.active a {
|
||||
}
|
||||
|
||||
/** EDITS 2015 **/
|
||||
* {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
.collapsing {
|
||||
-webkit-transition: none;
|
||||
@@ -828,7 +894,7 @@ input[type=radio] {
|
||||
|
||||
input[type="button"],
|
||||
input[type="submit"] {
|
||||
color: #333;
|
||||
color: var(--clr-text);
|
||||
display:inline-block;
|
||||
padding:6px 12px;
|
||||
margin-bottom: 0;
|
||||
@@ -839,16 +905,17 @@ input[type="submit"] {
|
||||
white-space:nowrap;
|
||||
vertical-align:middle;
|
||||
cursor:pointer;
|
||||
background: #fff none;
|
||||
border:1px solid #ccc;
|
||||
background: var(--clr-input-bg) none;
|
||||
border:1px solid var(--clr-input-border);
|
||||
height: 34px;
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
|
||||
input[type="button"]:hover,
|
||||
input[type="submit"]:hover {
|
||||
color: #333;
|
||||
background-color: #e6e6e6;
|
||||
border-color: #adadad;
|
||||
color: var(--clr-text);
|
||||
background-color: var(--clr-surface-hover);
|
||||
border-color: var(--clr-input-border);
|
||||
}
|
||||
|
||||
input[type="text"],
|
||||
@@ -861,7 +928,7 @@ textarea,
|
||||
select {
|
||||
line-height:1.42857143;
|
||||
padding:6px 12px;
|
||||
border: 1px solid #d4d0c8;
|
||||
border: 1px solid var(--clr-input-border);
|
||||
box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
|
||||
display:inline-block;
|
||||
vertical-align:middle;
|
||||
@@ -869,7 +936,9 @@ select {
|
||||
min-height: 34px;
|
||||
min-width: 55px;
|
||||
font-size: 13px;
|
||||
background-color: white;
|
||||
background-color: var(--clr-input-bg);
|
||||
color: var(--clr-text);
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
|
||||
input[type="text"]:not([size]),
|
||||
@@ -885,7 +954,8 @@ input[type="text"].smaller_input {
|
||||
.btn {
|
||||
font-size: 13px;
|
||||
height: 34px;
|
||||
box-shadow: 1px 1px 1px rgba(0,0,0,.1) !important;
|
||||
box-shadow: 1px 1px 1px rgba(0,0,0,.1);
|
||||
border-radius: var(--radius-md);
|
||||
}
|
||||
|
||||
.btn .glyphicon {
|
||||
@@ -961,6 +1031,7 @@ input[type="checkbox"] {
|
||||
background-color: #FFF;
|
||||
border-bottom: 1px solid rgba(0, 0, 0, 0.2);
|
||||
margin-bottom: 10px;
|
||||
box-shadow: 0 2px 6px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.navbar-fixed-top {
|
||||
@@ -1001,20 +1072,10 @@ input[type="checkbox"] {
|
||||
height: 40px;
|
||||
width: 40px;
|
||||
}
|
||||
/*
|
||||
.navbar-logo-wide {
|
||||
display: none;
|
||||
}
|
||||
.navbar-logo-wide {
|
||||
padding-top: 9px;
|
||||
}
|
||||
.navbar-logo-wide svg {
|
||||
height: 36px;
|
||||
width: 130px;
|
||||
}
|
||||
*/
|
||||
|
||||
.navbar-default .navbar-nav>li>a {
|
||||
color: black;
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.navbar-default .navbar-nav>li>a:hover,
|
||||
@@ -1048,7 +1109,7 @@ input[type="checkbox"] {
|
||||
}
|
||||
|
||||
.col2 table {
|
||||
margin: 10px 0px;
|
||||
margin: 5px 0px 10px;
|
||||
}
|
||||
|
||||
.Servers .server-frame {
|
||||
@@ -1078,7 +1139,7 @@ input[type="checkbox"] {
|
||||
}
|
||||
|
||||
.Servers .col2 .label {
|
||||
margin-top: 8px;
|
||||
margin-top: 12px;
|
||||
font-size: 0.85em;
|
||||
float: right;
|
||||
line-height: 1.1em;
|
||||
@@ -1092,6 +1153,10 @@ input[type="checkbox"] {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.Servers .col1.padding {
|
||||
padding: 12px;
|
||||
}
|
||||
|
||||
.Servers .server-amounts-text {
|
||||
width: 20%;
|
||||
float: left;
|
||||
@@ -1145,8 +1210,8 @@ input[type="checkbox"] {
|
||||
}
|
||||
|
||||
.Servers .col2 label,
|
||||
.Email .col2 label {
|
||||
margin: 2px 0 0 4px;
|
||||
.Notify .col2 label {
|
||||
margin: 6px 0 0 6px;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
@@ -1155,6 +1220,7 @@ input[type="checkbox"] {
|
||||
}
|
||||
|
||||
.result-box .alert {
|
||||
margin-top: 10px;
|
||||
margin-bottom: 0px;
|
||||
display: none;
|
||||
}
|
||||
@@ -1190,6 +1256,11 @@ input[type="checkbox"] {
|
||||
top: 1px;
|
||||
}
|
||||
|
||||
.Notify .notify-checkboxes {
|
||||
float: left;
|
||||
margin-right: 8px;
|
||||
}
|
||||
|
||||
.main-restarting.in {
|
||||
text-align: center;
|
||||
opacity: 0.9;
|
||||
@@ -1262,10 +1333,58 @@ input[type="checkbox"] {
|
||||
100% { transform: rotate(359deg); }
|
||||
}
|
||||
|
||||
/***
|
||||
Theme-aware rules
|
||||
These use CSS variables so Night.css only needs to override :root.
|
||||
Most color properties are already applied at each selector's first declaration above;
|
||||
only rules with no earlier home live here.
|
||||
***/
|
||||
|
||||
/* Dropdown menus */
|
||||
.dropdown-menu {
|
||||
background-color: var(--clr-dropdown-bg);
|
||||
}
|
||||
|
||||
.dropdown-menu>li>a {
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
.dropdown-menu>li>a:hover,
|
||||
.dropdown-menu>li>a:focus {
|
||||
background-color: var(--clr-surface-hover);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Modal footer (modal-body bg is set at its first declaration above) */
|
||||
.modal-footer {
|
||||
background-color: var(--clr-modal-bg);
|
||||
}
|
||||
|
||||
/* Table rows */
|
||||
.table>tbody>tr:nth-child(odd),
|
||||
.table-striped>tbody>tr:nth-child(odd) {
|
||||
background-color: var(--clr-table-row-alt);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
.table>tbody>tr:nth-child(even),
|
||||
.table-striped>tbody>tr:nth-child(even) {
|
||||
background-color: var(--clr-table-bg);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Placeholder text */
|
||||
::placeholder {
|
||||
color: var(--clr-text-muted) !important;
|
||||
}
|
||||
|
||||
/***
|
||||
RTL Fixes
|
||||
***/
|
||||
html[dir="rtl"] .col1 input[type='checkbox'],
|
||||
html[dir="rtl"] .col1 input[type='checkbox'] {
|
||||
right: auto;
|
||||
left: 10px;
|
||||
}
|
||||
html[dir="rtl"] .col2 h3 a {
|
||||
left: 5px;
|
||||
}
|
||||
@@ -1327,7 +1446,6 @@ html[dir="rtl"] .Scheduling form[action="addSchedule"] input[type="checkbox"] {
|
||||
@media screen and (max-width: 1000px) {
|
||||
.col1 {
|
||||
float: right;
|
||||
padding: 5px 0px;
|
||||
}
|
||||
|
||||
.col1 h5 {
|
||||
|
||||
@@ -340,14 +340,6 @@ function removeObfuscation() {
|
||||
return true
|
||||
}
|
||||
|
||||
// Add coloring to rows (shorthand function)
|
||||
function addRowColor() {
|
||||
// Have to do it seperate for each section
|
||||
$('.section').each(function(i, elmn) {
|
||||
$(elmn).find('.field-pair:visible').removeClass('even').filter(':even').addClass('even')
|
||||
})
|
||||
}
|
||||
|
||||
// Set default functions for the autocomplete everywhere
|
||||
jQuery.extend(jQuery.fn.typeahead.defaults, {
|
||||
source: function (query, process) {
|
||||
@@ -482,16 +474,15 @@ $(document).ready(function () {
|
||||
$('.advanced-button').on('change', function(event){
|
||||
localStorage.setItem('advanced-settings', !$('.advanced-settings').is(':visible'))
|
||||
$('.advanced-settings').toggle()
|
||||
addRowColor()
|
||||
})
|
||||
if(localStorage.getItem('advanced-settings') === 'true') {
|
||||
$('.advanced-settings').show()
|
||||
$('#advanced-settings-button').prop('checked', true)
|
||||
addRowColor()
|
||||
}
|
||||
addRowColor()
|
||||
|
||||
// Add tooltips
|
||||
// Render tooltips in the body, otherwise they get clipped by sections with overflow: hidden
|
||||
jQuery.fn.tooltip.Constructor.DEFAULTS.container = 'body'
|
||||
jQuery('[title]').tooltip()
|
||||
});
|
||||
|
||||
@@ -512,6 +503,7 @@ var pagesContainer = new Array(arrPages.length);
|
||||
// Add trigger to focus on the field and load the results
|
||||
$(document).ready(function() {
|
||||
$('#search-menu').on('shown.bs.dropdown', function(event) {
|
||||
setConfigSearchExpanded(true)
|
||||
// Focus so easy typing
|
||||
$('#search-box').focus()
|
||||
// Load things to search if we haven't yet
|
||||
@@ -522,6 +514,45 @@ $(document).ready(function() {
|
||||
});
|
||||
});
|
||||
}
|
||||
}).on('hidden.bs.dropdown', function(event) {
|
||||
setConfigSearchExpanded(false)
|
||||
});
|
||||
|
||||
$('#search-box').on('keydown', function(event) {
|
||||
var key = event.key || event.which;
|
||||
var isArrowDown = key === 'ArrowDown' || key === 40;
|
||||
var isArrowUp = key === 'ArrowUp' || key === 38;
|
||||
var isEscape = key === 'Escape' || key === 'Esc' || key === 27;
|
||||
|
||||
if(isArrowDown || isArrowUp) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
focusConfigSearchResult(isArrowDown ? 1 : -1)
|
||||
} else if(isEscape) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
closeConfigSearch()
|
||||
}
|
||||
});
|
||||
|
||||
$('#search-dropdown').on('keydown', 'a.config-search-result', function(event) {
|
||||
var key = event.key || event.which;
|
||||
var isArrowDown = key === 'ArrowDown' || key === 40;
|
||||
var isArrowUp = key === 'ArrowUp' || key === 38;
|
||||
var isEscape = key === 'Escape' || key === 'Esc' || key === 27;
|
||||
|
||||
if(isArrowDown || isArrowUp) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
focusConfigSearchResult(isArrowDown ? 1 : -1)
|
||||
} else if(isEscape) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
closeConfigSearch()
|
||||
}
|
||||
}).on('mouseenter focus', 'a.config-search-result', function() {
|
||||
getConfigSearchResults().parent().removeClass('active')
|
||||
$(this).parent().addClass('active')
|
||||
});
|
||||
|
||||
// For the scrolling
|
||||
@@ -547,11 +578,46 @@ $(document).ready(function() {
|
||||
|
||||
// Don't go too fast
|
||||
var searchTimeout
|
||||
|
||||
function getConfigSearchResults() {
|
||||
return $('#search-dropdown').find('a.config-search-result')
|
||||
}
|
||||
|
||||
function setConfigSearchExpanded(expanded) {
|
||||
$('#search-menu > a[data-toggle="dropdown"]').attr('aria-expanded', expanded ? 'true' : 'false')
|
||||
}
|
||||
|
||||
function closeConfigSearch() {
|
||||
$('#search-menu').removeClass('open')
|
||||
setConfigSearchExpanded(false)
|
||||
$('#search-box').focus()
|
||||
}
|
||||
|
||||
function focusConfigSearchResult(offset) {
|
||||
var $results = getConfigSearchResults()
|
||||
var activeIndex = $results.index(document.activeElement)
|
||||
var nextIndex
|
||||
|
||||
if(!$results.length) return
|
||||
|
||||
if(activeIndex < 0) {
|
||||
nextIndex = offset > 0 ? 0 : $results.length - 1
|
||||
} else {
|
||||
nextIndex = activeIndex + offset
|
||||
if(nextIndex >= $results.length) nextIndex = 0
|
||||
if(nextIndex < 0) nextIndex = $results.length - 1
|
||||
}
|
||||
|
||||
getConfigSearchResults().parent().removeClass('active')
|
||||
$results.eq(nextIndex).parent().addClass('active')
|
||||
$results.eq(nextIndex).focus()
|
||||
}
|
||||
|
||||
function doConfigSearch(value) {
|
||||
// Cancel previous
|
||||
clearTimeout(searchTimeout)
|
||||
// Build new search
|
||||
var searchTerm = $(value).val().replace('"', '\"')
|
||||
var searchTerm = $.trim($(value).val())
|
||||
var searchOutput = $('#search-dropdown')
|
||||
|
||||
// Build new search
|
||||
@@ -562,14 +628,24 @@ function doConfigSearch(value) {
|
||||
if (searchTerm.length < 2) return
|
||||
// Find some results!
|
||||
$.each(pagesContainer, function(page_index, results) {
|
||||
if(!results) return
|
||||
// Get the matches
|
||||
var subResults = results.filter(':contains("'+searchTerm+'")')
|
||||
var subResults = results.filter(function() {
|
||||
return $(this).text().toUpperCase().indexOf(searchTerm.toUpperCase()) >= 0
|
||||
})
|
||||
if(subResults.length > 0) {
|
||||
// Add the section
|
||||
searchOutput.append('<li class="divider"></li>')
|
||||
searchOutput.append('<li class="dropdown-header">'+configTranslate.searchPages[page_index]+'</li>')
|
||||
searchOutput.append($('<li class="divider"></li>'))
|
||||
searchOutput.append($('<li class="dropdown-header"></li>').text(configTranslate.searchPages[page_index]))
|
||||
$.each(subResults, function(index, result) {
|
||||
searchOutput.append('<li><a href="'+rootURL + 'config/' + arrPages[page_index] + '/#' + $(result).attr('for') +'">'+$(result).text()+'</a></li>')
|
||||
var resultUrl = rootURL + 'config/' + arrPages[page_index] + '/#' + $(result).attr('for')
|
||||
searchOutput.append(
|
||||
$('<li></li>').append(
|
||||
$('<a class="config-search-result"></a>')
|
||||
.attr('href', resultUrl)
|
||||
.text($(result).text())
|
||||
)
|
||||
)
|
||||
})
|
||||
}
|
||||
})
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<div class="history" id="history-tab">
|
||||
<div class="history-header">
|
||||
<h2>$T('menu-history') <small data-bind="visible: history.showArchive()">($T('archive'))</small></h2>
|
||||
<a href="#" data-bind="click: history.showMultiEdit, visible: hasHistory()">
|
||||
<a href="#" aria-label="$T('Glitter-multiOperations')" data-bind="click: history.showMultiEdit, visible: hasHistory()">
|
||||
<span class="glyphicon glyphicon-tasks" data-tooltip="true" data-placement="left" title="$T('Glitter-multiOperations')"></span>
|
||||
</a>
|
||||
</div>
|
||||
@@ -10,7 +10,7 @@
|
||||
<tr>
|
||||
<th style="width: 25px;"></th>
|
||||
<th></th>
|
||||
<th class="table-status-header" data-bind="css: { 'table-header-status-smaller' : extraHistoryColumns().length }"></th>
|
||||
<th class="table-status-header" data-bind="css: { 'table-header-status-smaller' : extraHistoryColumns().length || displayCompact() }"></th>
|
||||
<!-- ko foreach: extraHistoryColumns -->
|
||||
<th class="table-header-extra"></th>
|
||||
<!-- /ko -->
|
||||
@@ -45,12 +45,12 @@
|
||||
<span class="glyphicon glyphicon-ok"></span>
|
||||
</div>
|
||||
<div data-bind="visible: failed() && canRetry()">
|
||||
<a class="retry-button" href="#" data-bind="click: retry">
|
||||
<a class="retry-button" href="#" aria-label="$T('button-retry')" data-bind="click: retry">
|
||||
<span class="glyphicon glyphicon-exclamation-sign"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div data-bind="visible: failed() && !canRetry()">
|
||||
<span class="retry-button-inactive">
|
||||
<span class="retry-button-inactive" role="img" aria-label="$T('post-Failed')">
|
||||
<span class="glyphicon glyphicon-exclamation-sign"></span>
|
||||
</span>
|
||||
</div>
|
||||
@@ -70,10 +70,10 @@
|
||||
<td class="history-completedon row-wrap-text" data-bind="text: completedOn(), attr: { 'data-timestamp': completed }" onclick="showDetails(this)"></td>
|
||||
<td class="delete">
|
||||
<label data-bind="visible: parent.isMultiEditing()">
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" aria-label="$T('Glitter-selectJob')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
</label>
|
||||
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
|
||||
<a href="#" data-toggle="dropdown" data-bind="click: updateAllHistoryInfo">
|
||||
<a href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="$T('nzoDetails')" data-bind="click: updateAllHistoryInfo">
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<!-- ko if: hasDropdown() -->
|
||||
@@ -95,7 +95,6 @@
|
||||
<div class="col-sm-2">$T('status')</div>
|
||||
<div class="col-sm-10">
|
||||
<span data-bind="text: glitterTranslate.status[historyStatus.status()] ? glitterTranslate.status[historyStatus.status()] : statusText()"></span>
|
||||
<a href="#" class="mark-completed-link" data-bind="visible: failed(), click: markAsCompleted" title="$T('button-mark-completed')"><span class="glyphicon glyphicon-ok"></span> $T('post-Completed')</a>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
@@ -120,11 +119,14 @@
|
||||
<div class="col-sm-10 history-status-modallink" data-bind="longText: actions, longTextType: name()"></div>
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
<div class="col-sm-12 text-right" data-bind="visible: failed()">
|
||||
<a href="#" class="btn btn-default mark-completed-btn" data-bind="click: markAsCompleted"><span class="glyphicon glyphicon-ok"></span> $T('button-mark-completed')</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<a href="#" data-bind="click: parent.triggerRemoveDownload">
|
||||
<a href="#" data-bind="click: parent.triggerRemoveDownload, attr: { 'aria-label': processingDownload() == 2 ? '$T('abort')' : '$T('nzo-delete')' }">
|
||||
<span class="hover-button glyphicon glyphicon-trash" data-bind="css: { 'glyphicon-stop' : processingDownload() == 2, disabled : processingDownload() == 1 }, attr: { title: processingDownload() == 2 ? '$T('abort')' : '$T('nzo-delete')' }"></span>
|
||||
</a>
|
||||
</td>
|
||||
@@ -132,16 +134,23 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="history-footer">
|
||||
|
||||
<div class="input-group search-box">
|
||||
<input type="text" class="form-control" placeholder="$T('Glitter-search')" required data-bind="textInput: history.searchTerm, event: { keydown: history.clearSearchTerm }" />
|
||||
<a data-bind="event: { mousedown: history.clearSearchTerm }">
|
||||
<input type="text" class="form-control" placeholder="$T('Glitter-search')" aria-label="$T('Glitter-search')" required data-bind="textInput: history.searchTerm, event: { keydown: history.clearSearchTerm }" />
|
||||
<a href="#" data-tooltip="true" data-html="true" data-placement="right" title="$T('Glitter-searchExplain')" data-bind="click: history.clearSearchTerm, attr: { 'aria-label': history.searchTerm() ? '$T('Glitter-clearSearch')' : '$T('Glitter-search')' }">
|
||||
<span class="glyphicon" data-bind="css: { 'glyphicon-search' : !history.searchTerm(), 'glyphicon-remove' : history.searchTerm() }"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<ul class="pagination" data-bind="foreach: history.pagination.allpages(), visible: history.pagination.hasPagination" style="display: none;">
|
||||
<li data-bind="css: { active: isCurrent, disabled: isDots }, click: onclick">
|
||||
<span data-bind="text: page"></span>
|
||||
<li data-bind="css: { active: isCurrent, disabled: isDots }">
|
||||
<!-- ko ifnot: isDots -->
|
||||
<a href="#" data-bind="text: page, click: onclick, attr: { 'aria-current': isCurrent ? 'page' : null }"></a>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: isDots -->
|
||||
<span aria-hidden="true" data-bind="text: page"></span>
|
||||
<!-- /ko -->
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
@@ -172,4 +181,6 @@
|
||||
<span data-bind="text: history.downloadedMonth"></span>B $T('Glitter-thisMonth')
|
||||
<span data-bind="text: history.downloadedTotal"></span>B $T('Glitter-total')
|
||||
</div>
|
||||
|
||||
</div><!-- /.history-footer -->
|
||||
</div>
|
||||
@@ -1,19 +1,19 @@
|
||||
<nav class="navbar navbar-inverse main-navbar">
|
||||
<div class="navbar-header">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse">
|
||||
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-label="$T('Glitter-toggleNavigation')" aria-controls="navbar-collapse" aria-expanded="false">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
<a class="navbar-logo" href="./">
|
||||
<a class="navbar-logo" href="./" aria-label="SABnzbd $T('menu-queue')">
|
||||
#include $webdir + "/../../Config/templates/staticcfg/images/logo-small.svg"#
|
||||
</a>
|
||||
<div class="btn-group">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default navbar-btn" data-bind="click: pauseToggle, attr: { 'title': downloadsPaused() ? '$T('link-resume')' : '$T('link-pause')' }">
|
||||
<button type="button" class="btn btn-default navbar-btn" data-bind="click: pauseToggle, attr: { 'title': downloadsPaused() ? '$T('link-resume')' : '$T('link-pause')', 'aria-label': downloadsPaused() ? '$T('link-resume')' : '$T('link-pause')' }">
|
||||
<span class="glyphicon" data-bind="css: { 'glyphicon-play' : downloadsPaused(), 'glyphicon-pause' : !downloadsPaused() }"></span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown">
|
||||
<button type="button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown" aria-label="$T('pauseFor')" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
@@ -26,7 +26,7 @@
|
||||
<li class="divider"></li>
|
||||
<li><a href="#" data-bind="click: openCustomPauseTime">$T('Glitter-custom')</a></li>
|
||||
</ul>
|
||||
<span class="btn btn-default navbar-btn navbar-timeleft" data-bind="text: timeLeft" data-toggle="dropdown">0:00</span>
|
||||
<span class="btn btn-default navbar-btn navbar-timeleft" data-bind="text: timeLeft" data-toggle="dropdown">0:00</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -37,13 +37,13 @@
|
||||
<li class="speedlimit-dropdown dropdown">
|
||||
<div class="btn-group">
|
||||
<div class="btn-group">
|
||||
<button type="button" class="btn btn-default navbar-btn navbar-speed" data-toggle="dropdown">
|
||||
<button type="button" class="btn btn-default navbar-btn navbar-speed" data-toggle="dropdown" aria-haspopup="true">
|
||||
<span data-bind="text: speedText">0 KB/s</span>
|
||||
</button>
|
||||
<button type="button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown" onclick="keepOpen(this)">
|
||||
<button type="button" class="btn btn-default navbar-btn dropdown-toggle" data-toggle="dropdown" onclick="keepOpen(this)" aria-hidden="true" tabindex="-1">
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<a href="#" class="max-speed-input-clear hover-button" data-bind="click: clearSpeedLimit, visible:(speedLimit() < 100 && speedLimit() > 0)" style="display: none;">
|
||||
<a href="#" class="max-speed-input-clear hover-button" aria-label="$T('button-clear')" data-bind="click: clearSpeedLimit, visible:(speedLimit() < 100 && speedLimit() > 0)" style="display: none;">
|
||||
<span class="glyphicon glyphicon-link"></span>
|
||||
</a>
|
||||
<div class="dropdown-menu max-speed-input">
|
||||
@@ -61,14 +61,14 @@
|
||||
</div>
|
||||
</li>
|
||||
<li data-tooltip="true" data-placement="bottom" title="$T('Glitter-addNZB')">
|
||||
<a href="#modal-add-nzb" data-toggle="modal"><span class="glyphicon glyphicon-plus-sign"></span></a>
|
||||
<a href="#modal-add-nzb" data-toggle="modal" aria-label="$T('Glitter-addNZB')"><span class="glyphicon glyphicon-plus-sign"></span></a>
|
||||
</li>
|
||||
<li data-tooltip="true" data-placement="bottom" title="$T('Glitter-statusInterfaceOptions')" data-bind="click: loadStatusInfo">
|
||||
<a href="#modal-options" data-toggle="modal"><span class="glyphicon glyphicon-wrench"></span></a>
|
||||
<a href="#modal-options" data-toggle="modal" aria-label="$T('Glitter-statusInterfaceOptions')"><span class="glyphicon glyphicon-wrench"></span></a>
|
||||
</li>
|
||||
<!--#if $have_rss_defined#-->
|
||||
<li data-tooltip="true" data-placement="bottom" title="$T('cmenu-rss')">
|
||||
<a href="./config/rss/">
|
||||
<a href="./config/rss/" aria-label="$T('cmenu-rss')">
|
||||
<svg class="rss-icon-svg" viewBox="0 0 8 8">
|
||||
<rect class="rss-button" width="8" height="8" />
|
||||
<circle class="rss-symbol" cx="2" cy="6" r="1" />
|
||||
@@ -79,10 +79,10 @@
|
||||
</li>
|
||||
<!--#end if#-->
|
||||
<li data-tooltip="true" data-placement="bottom" title="SABnzbd $T('menu-config')">
|
||||
<a href="./config/"><span class="glyphicon glyphicon-cog"></span></a>
|
||||
<a href="./config/" aria-label="SABnzbd $T('menu-config')"><span class="glyphicon glyphicon-cog"></span></a>
|
||||
</li>
|
||||
<li class="dropdown main-menu-link" data-bind="css: { 'active-on-queue-finish-menu': finishaction()}">
|
||||
<a href="#" data-toggle="dropdown" onclick="keepOpen(this)">
|
||||
<a href="#" data-toggle="dropdown" onclick="keepOpen(this)" aria-label="$T('Glitter-mainMenu')" aria-haspopup="true" aria-expanded="false">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
@@ -102,7 +102,7 @@
|
||||
<li class="divider"></li>
|
||||
<li class="dropdown-header"><span class="glyphicon glyphicon-off"></span> $T('Glitter-onFinish'):</li>
|
||||
<li>
|
||||
<select data-bind="value: finishaction, event: { change: setOnQueueFinish }" class="form-control">
|
||||
<select data-bind="value: finishaction, event: { change: setOnQueueFinish }" class="form-control" aria-label="$T('Glitter-onFinish')">
|
||||
<option value=""></option>
|
||||
<option value="shutdown_program">$T('shutdownSab')</option>
|
||||
<!--#if $power_options#-->
|
||||
@@ -116,4 +116,4 @@
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</nav>
|
||||
@@ -1,8 +1,8 @@
|
||||
<div id="queue-messages" class="queue-messages" data-bind="visible: hasMessages() || displayTabbed()" style="display: none;">
|
||||
<table class="table table-hover table-messages">
|
||||
<table class="table table-hover table-messages" aria-label="$T('warnings')">
|
||||
<thead>
|
||||
<tr>
|
||||
<th class="table-messages-header-label"></th>
|
||||
<th class="table-messages-header-label"><span class="sr-only">$T('warnings')</span></th>
|
||||
<th style="width: 30px;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
@@ -11,7 +11,7 @@
|
||||
<tr>
|
||||
<td class="table-messages-hide"></td>
|
||||
<td data-bind="attr: { 'rowspan': parseInt(nrWarnings())+1 }, click: clearWarnings" class="table-messages-remove">
|
||||
<a href="#" class="hover-button"><span class="glyphicon glyphicon-remove"></span></a>
|
||||
<a href="#" class="hover-button" aria-label="$T('button-clear')"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a>
|
||||
</td>
|
||||
</tr>
|
||||
<!-- ko foreach: allWarnings -->
|
||||
@@ -32,7 +32,7 @@
|
||||
</td>
|
||||
<!-- ko if: \$data.hasOwnProperty("clear") -->
|
||||
<td class="table-messages-remove">
|
||||
<a href="#" data-bind="click: clear" class="hover-button"><span class="glyphicon glyphicon-remove"></span></a>
|
||||
<a href="#" data-bind="click: clear" class="hover-button" aria-label="$T('button-clear')"><span class="glyphicon glyphicon-remove" aria-hidden="true"></span></a>
|
||||
</td>
|
||||
<!-- /ko -->
|
||||
</tr>
|
||||
@@ -45,4 +45,4 @@
|
||||
<!-- /ko -->
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
</div>
|
||||
@@ -274,7 +274,7 @@
|
||||
</div>
|
||||
|
||||
<!-- ko if: serverconnections().length > 0 -->
|
||||
<table class="table table-hover table-server-connections" data-bind="visible: \$root.showActiveConnections()">
|
||||
<table class="table table-hover table-server-connections" aria-label="$T('connections')" data-bind="visible: \$root.showActiveConnections()">
|
||||
<thead>
|
||||
<tr>
|
||||
<th><strong>$T('article-id')</strong></th>
|
||||
@@ -304,7 +304,7 @@
|
||||
<a href="#" class="hover-button process-all-orphaned" data-bind="click: removeAllOrphaned">$T('Glitter-purgeOrphaned') <span class="glyphicon glyphicon-trash"></span></a>
|
||||
<a href="#" class="hover-button process-all-orphaned" data-bind="click: addAllOrphaned">$T('Glitter-retryAllOrphaned') <span class="glyphicon glyphicon-plus-sign"></span></a>
|
||||
<div class="clearfix"></div>
|
||||
<table class="table table-hover table-striped">
|
||||
<table class="table table-hover table-striped" aria-label="$T('Glitter-orphanedJobs')">
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="width: 30px;"></th>
|
||||
@@ -333,7 +333,7 @@
|
||||
</label>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-6 control-label">$T('Glitter-interfaceRefresh')</label>
|
||||
<label class="col-sm-6 control-label" for="refreshRate-option">$T('Glitter-interfaceRefresh')</label>
|
||||
<div class="col-sm-4">
|
||||
<select id="refreshRate-option" class="form-control" data-bind="value: refreshRate">
|
||||
<option value="1">1 $T('second')</option>
|
||||
@@ -351,9 +351,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-6 control-label">$T('Glitter-queueItemLimit')</label>
|
||||
<label class="col-sm-6 control-label" for="queue-pagination-limit">$T('Glitter-queueItemLimit')</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="queue-pagination-limit" class="form-control" data-bind="value: queue.paginationLimit">
|
||||
<select name="queue-pagination-limit" id="queue-pagination-limit" class="form-control" data-bind="value: queue.paginationLimit">
|
||||
<option value="5">5 / $T('Glitter-page')</option>
|
||||
<option value="10">10 / $T('Glitter-page')</option>
|
||||
<option value="20">20 / $T('Glitter-page')</option>
|
||||
@@ -366,9 +366,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-6 control-label">$T('Glitter-historyItemLimit')</label>
|
||||
<label class="col-sm-6 control-label" for="history-pagination-limit">$T('Glitter-historyItemLimit')</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="history-pagination-limit" class="form-control" data-bind="value: history.paginationLimit">
|
||||
<select name="history-pagination-limit" id="history-pagination-limit" class="form-control" data-bind="value: history.paginationLimit">
|
||||
<option value="5">5 / $T('Glitter-page')</option>
|
||||
<option value="10">10 / $T('Glitter-page')</option>
|
||||
<option value="20">20 / $T('Glitter-page')</option>
|
||||
@@ -381,9 +381,9 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-6 control-label">$T('Glitter-dateFormat')</label>
|
||||
<label class="col-sm-6 control-label" for="general-date-format">$T('Glitter-dateFormat')</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="general-date-format" class="form-control" data-bind="value: dateFormat">
|
||||
<select name="general-date-format" id="general-date-format" class="form-control" data-bind="value: dateFormat">
|
||||
<option value="DD/MM/YYYY HH:mm"></option>
|
||||
<option value="DD/MM/YYYY h:mma"></option>
|
||||
<option value="MM/DD/YYYY HH:mm"></option>
|
||||
@@ -399,12 +399,12 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="general-extra-queue-columns">
|
||||
$T('Glitter-showExtraQueueColumn')<br />
|
||||
<span class="label label-warning">> 1200 pixels</span>
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="general-extra-column" class="form-control-multiselect form-control" data-bind="selectedOptions: extraQueueColumns" multiple="true">
|
||||
<select name="general-extra-column" id="general-extra-queue-columns" class="form-control-multiselect form-control" data-bind="selectedOptions: extraQueueColumns" multiple="true">
|
||||
<option value="category">$T('category')</option>
|
||||
<option value="priority">$T('priority')</option>
|
||||
<option value="processing">$T('swtag-pp')</option>
|
||||
@@ -414,12 +414,12 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="general-extra-history-columns">
|
||||
$T('Glitter-showExtraHistoryColumn')<br />
|
||||
<span class="label label-warning">> 1200 pixels</span>
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<select name="general-extra-column" class="form-control-multiselect form-control" data-bind="selectedOptions: extraHistoryColumns" multiple="true">
|
||||
<select name="general-extra-column" id="general-extra-history-columns" class="form-control-multiselect form-control" data-bind="selectedOptions: extraHistoryColumns" multiple="true">
|
||||
<option value="category">$T('category')</option>
|
||||
<option value="size">$T('size')</option>
|
||||
<option value="speed">$T('Glitter-speed')</option>
|
||||
@@ -427,53 +427,53 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="displayCompact">
|
||||
$T("Glitter-displayCompact")
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="displayCompact" value="true" data-bind="checked: displayCompact" />
|
||||
<input type="checkbox" name="displayCompact" id="displayCompact" value="true" data-bind="checked: displayCompact" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="displayFullWidth">
|
||||
$T("Glitter-displayFullWidth")
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="displayFullWidth" value="true" data-bind="checked: displayFullWidth" />
|
||||
<input type="checkbox" name="displayFullWidth" id="displayFullWidth" value="true" data-bind="checked: displayFullWidth" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="displayTabbed">
|
||||
$T("Glitter-displayTabbed")
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="displayTabbed" value="true" data-bind="checked: displayTabbed" />
|
||||
<input type="checkbox" name="displayTabbed" id="displayTabbed" value="true" data-bind="checked: displayTabbed" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="confirmDeleteQueue">
|
||||
$T("Glitter-confirmDeleteQueue")
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="confirmDeleteQueue" value="true" data-bind="checked: confirmDeleteQueue" />
|
||||
<input type="checkbox" name="confirmDeleteQueue" id="confirmDeleteQueue" value="true" data-bind="checked: confirmDeleteQueue" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="confirmDeleteHistory">
|
||||
$T("Glitter-confirmDeleteHistory")
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="confirmDeleteHistory" value="true" data-bind="checked: confirmDeleteHistory" />
|
||||
<input type="checkbox" name="confirmDeleteHistory" id="confirmDeleteHistory" value="true" data-bind="checked: confirmDeleteHistory" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group form-checkbox">
|
||||
<label class="col-sm-6 control-label">
|
||||
<label class="col-sm-6 control-label" for="keyboardShortcuts">
|
||||
$T("Glitter-keyboardShortcuts")
|
||||
<span class="glyphicon glyphicon-question-sign" data-tooltip="true" data-placement="top" data-html="true"
|
||||
data-original-title="P: $T('link-pause')<br>A: $T('Glitter-addNZB')<br>S: $T('Glitter-statusInterfaceOptions')<br>C: $T('menu-config')<br>$T('Glitter-keyboardShortcuts-arrows')"></span>
|
||||
</label>
|
||||
<div class="col-sm-4">
|
||||
<input type="checkbox" name="keyboardShortcuts" value="true" data-bind="checked: keyboardShortcuts" />
|
||||
<input type="checkbox" name="keyboardShortcuts" id="keyboardShortcuts" value="true" data-bind="checked: keyboardShortcuts" />
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
@@ -524,29 +524,29 @@
|
||||
<div class="clearfix"></div>
|
||||
<hr />
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">$T('name')</label>
|
||||
<label class="col-sm-4 control-label" for="nzbname">$T('name')</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" name="nzbname" id="nzbname" placeholder="$T('Glitter-addnzbFilename')" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">$T('srv-password')</label>
|
||||
<label class="col-sm-4 control-label" for="password">$T('srv-password')</label>
|
||||
<div class="col-sm-6">
|
||||
<input type="text" name="password" id="password" placeholder="$T('srv-optional')" class="form-control" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">$T('category')</label>
|
||||
<label class="col-sm-4 control-label" for="add-nzb-category">$T('category')</label>
|
||||
<div class="col-sm-6">
|
||||
<select name="Category" class="form-control" data-bind="options: queue.categoriesList, optionsValue: 'catValue', optionsText: 'catText', optionsCaption: ''"></select>
|
||||
<select name="Category" id="add-nzb-category" class="form-control" data-bind="options: queue.categoriesList, optionsValue: 'catValue', optionsText: 'catText', optionsCaption: ''"></select>
|
||||
<span class="glyphicon glyphicon-tag"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">$T('priority')</label>
|
||||
<label class="col-sm-4 control-label" for="add-nzb-priority">$T('priority')</label>
|
||||
<div class="col-sm-6">
|
||||
<!-- This list is different from the one during download! -->
|
||||
<select name="Priority" class="form-control">
|
||||
<select name="Priority" id="add-nzb-priority" class="form-control">
|
||||
<option value=""></option>
|
||||
<option value="2">$T('pr-force')</option>
|
||||
<option value="1">$T('pr-high')</option>
|
||||
@@ -558,16 +558,16 @@
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">$T('swtag-pp')</label>
|
||||
<label class="col-sm-4 control-label" for="add-nzb-processing">$T('swtag-pp')</label>
|
||||
<div class="col-sm-6">
|
||||
<select name="Processing" class="form-control" data-bind="options: queue.processingOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: ''"></select>
|
||||
<select name="Processing" id="add-nzb-processing" class="form-control" data-bind="options: queue.processingOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: ''"></select>
|
||||
<span class="glyphicon glyphicon-check"></span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label class="col-sm-4 control-label">$T('eoq-scripts')</label>
|
||||
<label class="col-sm-4 control-label" for="add-nzb-script">$T('eoq-scripts')</label>
|
||||
<div class="col-sm-6">
|
||||
<select name="Post-processing" class="form-control" data-bind="options: queue.scriptsList, optionsCaption: '', optionsValue: 'scriptValue', optionsText: 'scriptText', enable: (queue.scriptsList().length > 1)"></select>
|
||||
<select name="Post-processing" id="add-nzb-script" class="form-control" data-bind="options: queue.scriptsList, optionsCaption: '', optionsValue: 'scriptValue', optionsText: 'scriptText', enable: (queue.scriptsList().length > 1)"></select>
|
||||
<span class="glyphicon glyphicon-flash"></span>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -47,6 +47,7 @@
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="#" data-action="sortRemainingAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortRemaining')</a></li>
|
||||
<li><a href="#" data-action="sortRemainingBytesAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortRemainingBytesAsc')</a></li>
|
||||
<li><a href="#" data-action="sortAgeAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortAgeAsc')</a></li>
|
||||
<li><a href="#" data-action="sortAgeDesc" data-bind="click: queue.queueSorting">$T('Glitter-sortAgeDesc')</a></li>
|
||||
<li><a href="#" data-action="sortNameAsc" data-bind="click: queue.queueSorting">$T('Glitter-sortNameAsc')</a></li>
|
||||
@@ -65,7 +66,7 @@
|
||||
<!-- ko foreach: extraQueueColumns -->
|
||||
<th class="table-header-extra"></th>
|
||||
<!-- /ko -->
|
||||
<th class="table-header-progress" data-bind="css: { 'table-header-progress-smaller' : extraQueueColumns().length }"></th>
|
||||
<th class="table-header-progress" data-bind="css: { 'table-header-progress-smaller' : extraQueueColumns().length || displayCompact() }"></th>
|
||||
<th style="width: 85px;"></th>
|
||||
<th style="width: 60px;"></th>
|
||||
</tr>
|
||||
@@ -84,7 +85,7 @@
|
||||
<tbody data-bind="visible: hasQueue(), sortable: { data: queue.queueItems, afterMove: queue.move, options: { start: queue.dragStart, stop: queue.dragStop, axis: 'y', containment: '.queue', distance: 10 } }" style="display: none;">
|
||||
<tr class="queue-item">
|
||||
<td>
|
||||
<a href="#" data-bind="click: pauseToggle, attr: { 'title': pausedStatus() ? '$T('link-resume')' : '$T('link-pause')' }">
|
||||
<a href="#" data-bind="click: pauseToggle, attr: { 'title': pausedStatus() ? '$T('link-resume')' : '$T('link-pause')', 'aria-label': pausedStatus() ? '$T('link-resume')' : '$T('link-pause')' }">
|
||||
<span class="hover-button glyphicon" data-bind="css: queueIcon"></span>
|
||||
</a>
|
||||
</td>
|
||||
@@ -102,22 +103,36 @@
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<form data-bind="submit: editingNameSubmit">
|
||||
<input type="text" data-bind="value: nameForEdit, visible: editingName(), hasfocus: editingName" />
|
||||
<input type="text" aria-label="$T('Glitter-rename')" data-bind="value: nameForEdit, visible: editingName(), hasfocus: editingName" />
|
||||
</form>
|
||||
<div class="name-icons direct-unpack hover-button" data-bind="visible: direct_unpack() && !editingName()">
|
||||
<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>
|
||||
<a href="#" data-bind="click: editName" class="hover-button" title="$T('Glitter-rename')"><span class="glyphicon glyphicon-pencil"></span></a>
|
||||
<a href="#" data-bind="click: showFiles" class="hover-button" title="$T('nzoDetails') - $T('srv-password')"><span class="glyphicon glyphicon-folder-open"></span></a>
|
||||
<a href="#" data-bind="click: \$parent.queue.moveButton" class="hover-button buttonMoveToTop" title="$T('Glitter-top')" aria-label="$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')" aria-label="$T('Glitter-bottom')"><span class="glyphicon glyphicon-chevron-down"></span></a>
|
||||
<a href="#" data-bind="click: editName" class="hover-button" title="$T('Glitter-rename')" aria-label="$T('Glitter-rename')"><span class="glyphicon glyphicon-pencil"></span></a>
|
||||
<a href="#" data-bind="click: showFiles" class="hover-button" title="$T('nzoDetails') - $T('srv-password')" aria-label="$T('nzoDetails')"><span class="glyphicon glyphicon-folder-open"></span></a>
|
||||
<small data-bind="text: avg_age"></small>
|
||||
</div>
|
||||
</td>
|
||||
<!-- ko foreach: parent.parent.extraQueueColumns -->
|
||||
<td class="row-extra-text">
|
||||
<!-- ko if: \$data == 'category' -->
|
||||
<select class="form-control row-extra-select" data-bind="options: \$parent.parent.categoriesList, optionsValue: 'catValue', optionsText: 'catText', value: \$parent.category, valueAllowUnset: true, event: { change: \$parent.changeCat }"></select>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: \$data == 'priority' && !\$parent.isFetchingBlocks -->
|
||||
<select class="form-control row-extra-select" data-bind="options: \$parent.parent.priorityOptions, optionsValue: 'value', optionsText: 'name', value: \$parent.priority, valueAllowUnset: true, event: { change: \$parent.changePriority }"></select>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: \$data == 'processing' -->
|
||||
<select class="form-control row-extra-select" data-bind="options: \$parent.parent.processingOptions, optionsValue: 'value', optionsText: 'name', value: \$parent.unpackopts, valueAllowUnset: true, event: { change: \$parent.changeProcessing }"></select>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: \$data == 'scripts' -->
|
||||
<select class="form-control row-extra-select" data-bind="options: \$parent.parent.scriptsList, optionsValue: 'scriptValue', optionsText: 'scriptText', value: \$parent.script, valueAllowUnset: true, event: { change: \$parent.changeScript }, enable: (\$parent.parent.scriptsList().length > 1)"></select>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: \$data == 'age' -->
|
||||
<div class="row-wrap-text" data-bind="text: \$parent.showColumn(\$data)"></div>
|
||||
<!-- /ko -->
|
||||
</td>
|
||||
<!-- /ko -->
|
||||
<td class="progress-indicator">
|
||||
@@ -132,65 +147,65 @@
|
||||
<td class="timeleft row-wrap-text" data-bind="text: statusText"></td>
|
||||
<td class="delete">
|
||||
<label data-bind="visible: parent.isMultiEditing()">
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" aria-label="$T('Glitter-selectJob')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
|
||||
</label>
|
||||
<!-- ko if: !isGrabbing() -->
|
||||
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
|
||||
<a href="#" data-toggle="dropdown" data-bind="click: toggleDropdown">
|
||||
<a href="#" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" aria-label="$T('nzoDetails')" data-bind="click: toggleDropdown">
|
||||
<span class="caret"></span>
|
||||
</a>
|
||||
<!-- ko if: hasDropdown() -->
|
||||
<ul class="dropdown-menu queue-item-settings">
|
||||
<li title="$T('category')" data-tooltip="true" data-placement="left">
|
||||
<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>
|
||||
<select name="Category" class="form-control" aria-label="$T('category')" data-bind="options: parent.categoriesList, optionsValue: 'catValue', optionsText: 'catText', value: category, valueAllowUnset: true, event: { change: changeCat }"></select>
|
||||
</li>
|
||||
<!-- 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>
|
||||
<select name="Priority" class="form-control" aria-label="$T('priority')" data-bind="options: parent.priorityOptions, optionsValue: 'value', optionsText: 'name', value: priority, valueAllowUnset: true, event: { change: changePriority }"></select>
|
||||
</li>
|
||||
<!-- /ko -->
|
||||
<li title="$T('swtag-pp')" data-tooltip="true" data-placement="left">
|
||||
<span class="glyphicon glyphicon-check"></span>
|
||||
<select name="Processing" class="form-control" data-bind="options: parent.processingOptions, optionsValue: 'value', optionsText: 'name', value: unpackopts, event: { change: changeProcessing }"></select>
|
||||
<select name="Processing" class="form-control" aria-label="$T('swtag-pp')" data-bind="options: parent.processingOptions, optionsValue: 'value', optionsText: 'name', value: unpackopts, valueAllowUnset: true, event: { change: changeProcessing }"></select>
|
||||
</li>
|
||||
<li title="$T('eoq-scripts')" data-tooltip="true" data-placement="left">
|
||||
<span class="glyphicon glyphicon-flash"></span>
|
||||
<select name="Post-processing" class="form-control" data-bind="options: parent.scriptsList, value: script, optionsValue: 'scriptValue', optionsText: 'scriptText', event: { change: changeScript }, enable: (parent.scriptsList().length > 1)"></select>
|
||||
<select name="Post-processing" class="form-control" aria-label="$T('eoq-scripts')" data-bind="options: parent.scriptsList, value: script, valueAllowUnset: true, optionsValue: 'scriptValue', optionsText: 'scriptText', event: { change: changeScript }, enable: (parent.scriptsList().length > 1)"></select>
|
||||
</li>
|
||||
</ul>
|
||||
<!-- /ko -->
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
<a href="#" class="hover-button" title="$T('removeNZB-Files')" data-bind="click: parent.triggerRemoveDownload"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
<a href="#" class="hover-button" title="$T('removeNZB-Files')" aria-label="$T('removeNZB-Files')" data-bind="click: parent.triggerRemoveDownload"><span class="glyphicon glyphicon-trash"></span></a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="queue-footer">
|
||||
|
||||
<form class="multioperations-selector" data-bind="visible: (hasQueue() && queue.isMultiEditing())" style="display: none;">
|
||||
<div class="add-nzb-inputbox add-nzb-inputbox-small add-nzb-inputbox-options">
|
||||
<label for="multiedit-checkall-queue">
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-queue" title="$T('Glitter-checkAll')" data-bind="click: queue.checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-queue" title="$T('Glitter-checkAll')" aria-label="$T('Glitter-checkAll')" data-bind="click: queue.checkAllJobs" data-tooltip="true" data-placement="top" />
|
||||
</label>
|
||||
<a href="#" class="hover-button" title="$T('removeNZB-Files')" data-bind="click: queue.doMultiDelete" data-tooltip="true" data-placement="top">
|
||||
<a href="#" class="hover-button" title="$T('removeNZB-Files')" aria-label="$T('Glitter-removeSelected')" data-bind="click: queue.doMultiDelete" data-tooltip="true" data-placement="top">
|
||||
<span class="glyphicon glyphicon-trash"></span>
|
||||
</a>
|
||||
</div>
|
||||
<div class="add-nzb-inputbox add-nzb-inputbox-small">
|
||||
<label for="multiedit-play" data-bind="event: { mousedown: queue.handleMultiEditStatusMouseDown }">
|
||||
<input type="radio" name="multiedit-status" value="resume" id="multiedit-play" data-bind="event: { change: queue.doMultiEditUpdate }" />
|
||||
<input type="radio" name="multiedit-status" value="resume" id="multiedit-play" aria-label="$T('link-resume')" data-bind="event: { change: queue.doMultiEditUpdate }" />
|
||||
<span class="glyphicon glyphicon-play" title="$T('link-resume')" data-tooltip="true" data-placement="top"></span>
|
||||
</label>
|
||||
<label for="multiedit-pause" data-bind="event: { mousedown: queue.handleMultiEditStatusMouseDown }">
|
||||
<input type="radio" name="multiedit-status" value="pause" id="multiedit-pause" data-bind="event: { change: queue.doMultiEditUpdate }" />
|
||||
<input type="radio" name="multiedit-status" value="pause" id="multiedit-pause" aria-label="$T('link-pause')" data-bind="event: { change: queue.doMultiEditUpdate }" />
|
||||
<span class="glyphicon glyphicon-pause" title="$T('link-pause')" data-tooltip="true" data-placement="top"></span>
|
||||
</label>
|
||||
<a href="#" class="hover-button" title="$T('Glitter-top')" data-bind="click: queue.doMultiMoveToTop" data-tooltip="true" data-placement="top">
|
||||
<a href="#" class="hover-button" title="$T('Glitter-top')" aria-label="$T('Glitter-top')" data-bind="click: queue.doMultiMoveToTop" data-tooltip="true" data-placement="top">
|
||||
<span class="glyphicon glyphicon-chevron-up"></span>
|
||||
</a>
|
||||
<a href="#" class="hover-button" title="$T('Glitter-bottom')" data-bind="click: queue.doMultiMoveToBottom" data-tooltip="true" data-placement="top">
|
||||
<a href="#" class="hover-button" title="$T('Glitter-bottom')" aria-label="$T('Glitter-bottom')" data-bind="click: queue.doMultiMoveToBottom" data-tooltip="true" data-placement="top">
|
||||
<span class="glyphicon glyphicon-chevron-down"></span>
|
||||
</a>
|
||||
<span class="label label-default" data-bind="text: queue.multiEditItems().length">0</span>
|
||||
@@ -198,33 +213,40 @@
|
||||
<div class="add-nzb-inputbox-clear"></div>
|
||||
<div class="add-nzb-inputbox" data-tooltip="true" data-placement="top" title="$T('category')">
|
||||
<span class="glyphicon glyphicon-tag"></span>
|
||||
<select name="Category" class="form-control" data-bind="options: queue.categoriesList, optionsValue: 'catValue', optionsText: 'catText', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
<select name="Category" class="form-control" aria-label="$T('category')" data-bind="options: queue.categoriesList, optionsValue: 'catValue', optionsText: 'catText', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
</div>
|
||||
<div class="add-nzb-inputbox" data-tooltip="true" data-placement="top" title="$T('priority')">
|
||||
<span class="glyphicon glyphicon-sort-by-attributes-alt"></span>
|
||||
<select name="Priority" class="form-control" data-bind="options: queue.priorityOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
<select name="Priority" class="form-control" aria-label="$T('priority')" data-bind="options: queue.priorityOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
</div>
|
||||
<div class="add-nzb-inputbox" data-tooltip="true" data-placement="top" title="$T('swtag-pp')">
|
||||
<span class="glyphicon glyphicon-check"></span>
|
||||
<select name="Processing" class="form-control" data-bind="options: queue.processingOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
<select name="Processing" class="form-control" aria-label="$T('swtag-pp')" data-bind="options: queue.processingOptions, optionsValue: 'value', optionsText: 'name', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
</div>
|
||||
<div class="add-nzb-inputbox" data-tooltip="true" data-placement="top" title="$T('eoq-scripts')">
|
||||
<span class="glyphicon glyphicon-flash"></span>
|
||||
<select name="Post-processing" class="form-control" data-bind="options: queue.scriptsList, optionsValue: 'scriptValue', optionsText: 'scriptText', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
<select name="Post-processing" class="form-control" aria-label="$T('eoq-scripts')" data-bind="options: queue.scriptsList, optionsValue: 'scriptValue', optionsText: 'scriptText', optionsCaption: '', event: { change: queue.doMultiEditUpdate }"></select>
|
||||
</div>
|
||||
<div class="clearfix"></div>
|
||||
</form>
|
||||
|
||||
<div class="input-group search-box" data-bind="visible: queue.hasQueueSearch" style="display: none;">
|
||||
<input type="text" class="form-control" placeholder="$T('Glitter-search')" required data-bind="textInput: queue.searchTerm, event: { keydown: queue.clearSearchTerm }" />
|
||||
<a data-bind="event: { mousedown: queue.clearSearchTerm }">
|
||||
<input type="text" class="form-control" placeholder="$T('Glitter-search')" aria-label="$T('Glitter-search')" required data-bind="textInput: queue.searchTerm, event: { keydown: queue.clearSearchTerm }" />
|
||||
<a href="#" data-tooltip="true" data-html="true" data-placement="right" title="$T('Glitter-searchExplain')" data-bind="click: queue.clearSearchTerm, attr: { 'aria-label': queue.searchTerm() ? '$T('Glitter-clearSearch')' : '$T('Glitter-search')' }">
|
||||
<span class="glyphicon" data-bind="css: { 'glyphicon-search' : !queue.searchTerm(), 'glyphicon-remove' : queue.searchTerm() }"></span>
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<ul class="pagination" data-bind="foreach: queue.pagination.allpages, visible: queue.pagination.hasPagination" style="display: none;">
|
||||
<li data-bind="css: { active: isCurrent, disabled: isDots }, click: onclick">
|
||||
<span data-bind="text: page"></span>
|
||||
<li data-bind="css: { active: isCurrent, disabled: isDots }">
|
||||
<!-- ko ifnot: isDots -->
|
||||
<a href="#" data-bind="text: page, click: onclick, attr: { 'aria-current': isCurrent ? 'page' : null }"></a>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: isDots -->
|
||||
<span aria-hidden="true" data-bind="text: page"></span>
|
||||
<!-- /ko -->
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
</div><!-- /.queue-footer -->
|
||||
</div>
|
||||
@@ -31,13 +31,13 @@
|
||||
<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="shortcut icon" type="image/ico" href="./staticcfg/ico/favicon.ico?v=$cache_buster" data-bind="attr: { 'href': SABIcon }" />
|
||||
|
||||
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?v=$version" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.mobile.css?v=$version" media="all and (max-width: 768px)" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?v=$cache_buster" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?v=$cache_buster" />
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.mobile.css?v=$cache_buster" media="all and (max-width: 768px)" />
|
||||
<!--#if $color_scheme not in ('Light', '') #-->
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/colorschemes/${color_scheme}.css?v=$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="./static/stylesheets/colorschemes/${color_scheme}.css?v=$cache_buster"/>
|
||||
<!--#end if#-->
|
||||
|
||||
<!-- Make translations available in scripts -->
|
||||
@@ -76,7 +76,6 @@
|
||||
glitterTranslate.defaultText = "$T('default')";
|
||||
glitterTranslate.noneText = "$T('None')";
|
||||
glitterTranslate.moreText = "$T('Glitter-more')";
|
||||
|
||||
glitterTranslate.status = [];
|
||||
glitterTranslate.status['DirectUnpack'] = "$T('opt-direct_unpack')";
|
||||
glitterTranslate.status['Completed'] = "$T('post-Completed')";
|
||||
@@ -131,7 +130,7 @@
|
||||
<!--#include $webdir + "/static/javascripts/glitter.js"#-->
|
||||
</script>
|
||||
<!--#if active_lang != 'en'#-->
|
||||
<script type="text/javascript" src="./static/javascripts/momentjs_locale/${active_lang}.js"></script>
|
||||
<script type="text/javascript" src="./static/javascripts/momentjs_locale/${active_lang}.js?v=$cache_buster"></script>
|
||||
<!--#end if#-->
|
||||
</head>
|
||||
<body>
|
||||
@@ -139,21 +138,21 @@
|
||||
<!--#include $webdir + "/include_menu.tmpl"#-->
|
||||
</div>
|
||||
|
||||
<div class="container main-content">
|
||||
<div class="history-queue-swicher">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active">
|
||||
<a href="#queue-tab" data-toggle="tab">$T('menu-queue') <span class="badge" data-bind="text: queue.totalItems"></span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#history-tab" data-toggle="tab">$T('menu-history') <span class="badge badge-info" data-bind="text: history.ppItems, visible: history.ppItems"></span><span class="badge" data-bind="text: history.totalItems"></span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#queue-messages" data-toggle="tab">$T('warnings') <span class="badge" data-bind="text: hasMessages, css: { 'badge-warning': hasMessages() }"></span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div class="container history-queue-swicher">
|
||||
<ul class="nav nav-tabs">
|
||||
<li class="active">
|
||||
<a href="#queue-tab" data-toggle="tab">$T('menu-queue') <span class="badge" data-bind="text: queue.totalItems"></span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#history-tab" data-toggle="tab">$T('menu-history') <span class="badge badge-info" data-bind="text: history.ppItems, visible: history.ppItems"></span><span class="badge" data-bind="text: history.totalItems"></span></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="#queue-messages" data-toggle="tab">$T('warnings') <span class="badge" data-bind="text: hasMessages, css: { 'badge-warning': hasMessages() }"></span></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="container main-content" data-bind="css: { 'main-content-loaded': isLoaded }">
|
||||
<!--#include $webdir + "/include_queue.tmpl"#-->
|
||||
<!--#include $webdir + "/include_messages.tmpl"#-->
|
||||
<!--#include $webdir + "/include_history.tmpl"#-->
|
||||
|
||||
@@ -184,15 +184,15 @@ function HistoryListModel(parent) {
|
||||
// Clear searchterm
|
||||
self.clearSearchTerm = function(data, event) {
|
||||
// Was it escape key or click?
|
||||
if(event.type === 'mousedown' || (event.keyCode && event.keyCode === 27)) {
|
||||
if(event.type === 'click' || (event.keyCode && event.keyCode === 27)) {
|
||||
// Set the loader so it doesn't flicker and then switch
|
||||
self.isLoading(true)
|
||||
self.searchTerm('');
|
||||
}
|
||||
// Was it click and the field is empty? Then we focus on the field
|
||||
if(event.type === 'mousedown' && self.searchTerm() === '') {
|
||||
if(event.type === 'click' && self.searchTerm() === '') {
|
||||
$(event.target).parents('.search-box').find('input[type="text"]').focus()
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
// Need to return true to allow typing
|
||||
return true;
|
||||
@@ -648,4 +648,4 @@ function HistoryModel(parent, data) {
|
||||
return false;
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,6 +10,7 @@ function ViewModel() {
|
||||
|
||||
// Set status varibales
|
||||
self.isRestarting = ko.observable(false);
|
||||
self.isLoaded = ko.observable(false); // Becomes true after the first queue response
|
||||
self.useGlobalOptions = ko.observable(true).extend({ persist: 'useGlobalOptions' });
|
||||
self.refreshRate = ko.observable(1).extend({ persist: 'pageRefreshRate' });
|
||||
self.dateFormat = ko.observable('fromNow').extend({ persist: 'pageDateFormat' });
|
||||
@@ -1108,7 +1109,6 @@ function ViewModel() {
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
// Already set if we are using a proxy
|
||||
if (response.config.misc.socks5_proxy_url) self.statusInfo.active_socks5_proxy(true)
|
||||
|
||||
@@ -1165,6 +1165,9 @@ function ViewModel() {
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
// First refresh has completed (success or failure): fade in the UI
|
||||
self.isLoaded(true);
|
||||
})
|
||||
|
||||
// Orphaned folder check - Not for 5 days if user ignored it
|
||||
@@ -1233,41 +1236,41 @@ function ViewModel() {
|
||||
});
|
||||
$(document).bind('keydown', 'shift+left', function(e) {
|
||||
if($("body").hasClass("container-tabbed")) {
|
||||
$('#history-tab.active > ul.pagination li.active').prev().click();
|
||||
$('#queue-tab.active > ul.pagination li.active').prev().click();
|
||||
$('#history-tab.active > ul.pagination li.active').prev().children('a').click();
|
||||
$('#queue-tab.active > ul.pagination li.active').prev().children('a').click();
|
||||
} else {
|
||||
$('#history-tab > ul.pagination li.active').prev().click();
|
||||
$('#queue-tab > ul.pagination li.active').prev().click();
|
||||
$('#history-tab > ul.pagination li.active').prev().children('a').click();
|
||||
$('#queue-tab > ul.pagination li.active').prev().children('a').click();
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
$(document).bind('keydown', 'shift+right', function(e) {
|
||||
if($("body").hasClass("container-tabbed")) {
|
||||
$('#history-tab.active > ul.pagination li.active').next().click();
|
||||
$('#queue-tab.active > ul.pagination li.active').next().click();
|
||||
$('#history-tab.active > ul.pagination li.active').next().children('a').click();
|
||||
$('#queue-tab.active > ul.pagination li.active').next().children('a').click();
|
||||
} else {
|
||||
$('#history-tab > ul.pagination li.active').next().click();
|
||||
$('#queue-tab > ul.pagination li.active').next().click();
|
||||
$('#history-tab > ul.pagination li.active').next().children('a').click();
|
||||
$('#queue-tab > ul.pagination li.active').next().children('a').click();
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
$(document).bind('keydown', 'shift+up', function(e) {
|
||||
if($("body").hasClass("container-tabbed")) {
|
||||
$('#history-tab.active > ul.pagination li').first().click();
|
||||
$('#queue-tab.active > ul.pagination li').first().click();
|
||||
$('#history-tab.active > ul.pagination li').first().children('a').click();
|
||||
$('#queue-tab.active > ul.pagination li').first().children('a').click();
|
||||
} else {
|
||||
$('#history-tab > ul.pagination li').first().click();
|
||||
$('#queue-tab > ul.pagination li').first().click();
|
||||
$('#history-tab > ul.pagination li').first().children('a').click();
|
||||
$('#queue-tab > ul.pagination li').first().children('a').click();
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
$(document).bind('keydown', 'shift+down', function(e) {
|
||||
if($("body").hasClass("container-tabbed")) {
|
||||
$('#history-tab.active > ul.pagination li').last().click();
|
||||
$('#queue-tab.active > ul.pagination li').last().click();
|
||||
$('#history-tab.active > ul.pagination li').last().children('a').click();
|
||||
$('#queue-tab.active > ul.pagination li').last().children('a').click();
|
||||
} else {
|
||||
$('#history-tab > ul.pagination li').last().click();
|
||||
$('#queue-tab > ul.pagination li').last().click();
|
||||
$('#history-tab > ul.pagination li').last().children('a').click();
|
||||
$('#queue-tab > ul.pagination li').last().children('a').click();
|
||||
}
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
@@ -204,14 +204,14 @@ function QueueListModel(parent) {
|
||||
// Clear searchterm
|
||||
self.clearSearchTerm = function(data, event) {
|
||||
// Was it escape key or click?
|
||||
if(event.type === 'mousedown' || (event.keyCode && event.keyCode === 27)) {
|
||||
if(event.type === 'click' || (event.keyCode && event.keyCode === 27)) {
|
||||
self.isLoading(true)
|
||||
self.searchTerm('');
|
||||
}
|
||||
// Was it click and the field is empty? Then we focus on the field
|
||||
if(event.type === 'mousedown' && self.searchTerm() === '') {
|
||||
if(event.type === 'click' && self.searchTerm() === '') {
|
||||
$(event.target).parents('.search-box').find('input[type="text"]').focus()
|
||||
return;
|
||||
return false;
|
||||
}
|
||||
// Need to return true to allow typing
|
||||
return true;
|
||||
@@ -228,6 +228,10 @@ function QueueListModel(parent) {
|
||||
sort = 'remaining';
|
||||
dir = 'asc';
|
||||
break;
|
||||
case 'sortRemainingBytesAsc':
|
||||
sort = 'remaining_bytes';
|
||||
dir = 'asc';
|
||||
break;
|
||||
case 'sortAgeAsc':
|
||||
sort = 'avg_age';
|
||||
dir = 'desc';
|
||||
@@ -549,7 +553,7 @@ function QueueModel(parent, data) {
|
||||
self.index = ko.observable(data.index);
|
||||
self.status = ko.observable(data.status);
|
||||
self.labels = ko.observableArray(data.labels);
|
||||
self.isGrabbing = ko.observable(data.status === 'Grabbing' || data.avg_age === '-')
|
||||
self.isGrabbing = ko.observable(data.status === 'Grabbing' || !parseFloat(data.mb)) // mb===0 catches paused URL-grab jobs (status 'Paused'), needed to block show-files
|
||||
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))
|
||||
@@ -669,7 +673,7 @@ function QueueModel(parent, data) {
|
||||
self.password(data.password);
|
||||
self.index(data.index);
|
||||
self.status(data.status)
|
||||
self.isGrabbing(data.status === 'Grabbing' || data.avg_age === '-')
|
||||
self.isGrabbing(data.status === 'Grabbing' || !parseFloat(data.mb))
|
||||
self.totalMB(parseFloat(data.mb));
|
||||
self.remainingMB(parseFloat(data.mbleft));
|
||||
self.missingMB(parseFloat(data.mbmissing))
|
||||
@@ -782,39 +786,39 @@ function QueueModel(parent, data) {
|
||||
}
|
||||
|
||||
// Change of settings
|
||||
self.changeCat = function(item, event) {
|
||||
self.changeCat = function() {
|
||||
callAPI({
|
||||
mode: 'change_cat',
|
||||
value: item.id,
|
||||
value2: item.category()
|
||||
value: self.id,
|
||||
value2: self.category()
|
||||
}).then(function() {
|
||||
// Hide all tooltips before we refresh
|
||||
$('.queue-item-settings li').filter('[data-tooltip="true"]').tooltip('hide')
|
||||
self.parent.parent.refresh()
|
||||
})
|
||||
}
|
||||
self.changeScript = function(item) {
|
||||
self.changeScript = function() {
|
||||
callAPI({
|
||||
mode: 'change_script',
|
||||
value: item.id,
|
||||
value2: item.script()
|
||||
value: self.id,
|
||||
value2: self.script()
|
||||
})
|
||||
}
|
||||
self.changeProcessing = function(item) {
|
||||
self.changeProcessing = function() {
|
||||
callAPI({
|
||||
mode: 'change_opts',
|
||||
value: item.id,
|
||||
value2: item.unpackopts()
|
||||
value: self.id,
|
||||
value2: self.unpackopts()
|
||||
})
|
||||
}
|
||||
self.changePriority = function(item, event) {
|
||||
self.changePriority = function() {
|
||||
// Not if we are fetching extra blocks for repair!
|
||||
if(item.isFetchingBlocks) return
|
||||
if(self.isFetchingBlocks) return
|
||||
callAPI({
|
||||
mode: 'queue',
|
||||
name: 'priority',
|
||||
value: item.id,
|
||||
value2: item.priority()
|
||||
value: self.id,
|
||||
value2: self.priority()
|
||||
}).then(function() {
|
||||
// Hide all tooltips before we refresh
|
||||
$('.queue-item-settings li').filter('[data-tooltip="true"]').tooltip('hide')
|
||||
|
||||
@@ -1 +1 @@
|
||||
@import url('Night.css') screen and (prefers-color-scheme: dark);
|
||||
@import url('Night.css?lastmajorupdate=510') screen and (prefers-color-scheme: dark);
|
||||
@@ -1,13 +1,48 @@
|
||||
body,
|
||||
.modal-backdrop {
|
||||
background-color: black;
|
||||
color: #EBEBEB
|
||||
/*
|
||||
* Night theme — overrides :root color tokens defined in glitter.css.
|
||||
* Only structural/behavioural rules that can't be expressed as color tokens remain below.
|
||||
*/
|
||||
:root {
|
||||
--clr-page-bg: black;
|
||||
--clr-surface: #727272;
|
||||
--clr-surface-alt: #444444;
|
||||
--clr-surface-hover: #666666;
|
||||
--clr-border: #808080;
|
||||
--clr-border-subtle: #252525;
|
||||
--clr-text: #EBEBEB;
|
||||
--clr-text-muted: #D6D6D6;
|
||||
--clr-error: #F95151;
|
||||
--clr-input-bg: #555555;
|
||||
--clr-input-border: #252525;
|
||||
--clr-dropdown-bg: #727272;
|
||||
--clr-modal-bg: #727272;
|
||||
--clr-table-bg: #555555;
|
||||
--clr-table-row-alt: #444444;
|
||||
--clr-progress-track: #DADADA;
|
||||
--clr-toggle-inactive: #666666;
|
||||
}
|
||||
|
||||
/* Links and glyphicons inside links */
|
||||
a, a:active,
|
||||
a:hover,
|
||||
a:focus,
|
||||
.btn:not(.btn-danger):active,
|
||||
.hover-button.glyphicon-play,
|
||||
.hover-button.glyphicon-stop,
|
||||
legend,
|
||||
#modal-options legend label,
|
||||
#modal-options legend a,
|
||||
#modal-item-files .item-files-table .progress small,
|
||||
.text-muted{
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Navbar needs structural dark-mode overrides */
|
||||
nav {
|
||||
background-color: #444444 !important;
|
||||
border: 0 !important;
|
||||
border-bottom: 1px solid black !important;
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
nav .btn {
|
||||
@@ -15,82 +50,37 @@ nav .btn {
|
||||
border-color: #5D5D5D !important;
|
||||
}
|
||||
|
||||
nav .btn:active {
|
||||
/* Restore bootstrap default */
|
||||
color: #333 !important;
|
||||
}
|
||||
|
||||
@media (max-width: 767px) {
|
||||
nav {
|
||||
background-color: black !important;
|
||||
}
|
||||
}
|
||||
|
||||
a, a:active, a:hover, a:focus,
|
||||
.hover-button.glyphicon-play,
|
||||
.hover-button.glyphicon-stop,
|
||||
.dropdown-menu>li>a,
|
||||
legend,
|
||||
#modal-options legend label,
|
||||
#modal-options legend a,
|
||||
#modal-item-files .item-files-table .progress small,
|
||||
#modal-options .options-switch label,
|
||||
#modal-options #options-orphans .process-all-orphaned,
|
||||
.text-muted {
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
.dropdown-menu>li>a:hover,
|
||||
.dropdown-menu>li>a:focus,
|
||||
.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:hover,
|
||||
.navbar-inverse .navbar-nav .open .dropdown-menu>li>a:focus,
|
||||
#feedback-slider {
|
||||
background-color: #555555;
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.main-restarting,
|
||||
.main-filedrop,
|
||||
.nav-tabs>li>a {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
.hover-button,
|
||||
.fileControls a:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.form-control[disabled] {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
.progress {
|
||||
background-color: #DADADA;
|
||||
}
|
||||
|
||||
.main-notification-box {
|
||||
background-color: #727272;
|
||||
border-color: #252525 !important;
|
||||
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
|
||||
}
|
||||
|
||||
.main-notification-box-uploading-failed {
|
||||
color: #F95151;
|
||||
}
|
||||
|
||||
.container,
|
||||
.modal-body,
|
||||
.modal-footer {
|
||||
background-color: #727272;
|
||||
}
|
||||
|
||||
.dropdown-menu,
|
||||
.navbar-collapse.in .dropdown-menu {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
/* Collapse dropdown loses border in dark mode */
|
||||
.navbar-collapse.in .dropdown-menu {
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* Feedback slider needs explicit dark bg (not a card, not an input) */
|
||||
#feedback-slider {
|
||||
background-color: var(--clr-input-bg);
|
||||
color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Elements that must be white regardless of --clr-text */
|
||||
.main-restarting,
|
||||
.main-filedrop {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
/* Tab controls — dark-mode specific colours */
|
||||
.max-speed-input-clear,
|
||||
.max-speed-input-clear:hover,
|
||||
.nav-tabs>li>a:hover,
|
||||
.fileControls a {
|
||||
color: black;
|
||||
}
|
||||
@@ -102,144 +92,61 @@ legend,
|
||||
.nav-tabs>li>a:focus {
|
||||
background-color: #ddd;
|
||||
color: #555 !important;
|
||||
box-shadow: 0px -1px 1px 1px rgba(0,0,0,0.15);
|
||||
box-shadow: 0px -1px 1px 1px rgba(0, 0, 0, 0.15);
|
||||
}
|
||||
|
||||
/* Opacity */
|
||||
.hover-button,
|
||||
.fileControls a:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.form-control[disabled] {
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
/* Focus ring uses white glow in dark mode */
|
||||
.form-control:focus,
|
||||
input[type="submit"]:focus,
|
||||
button:focus {
|
||||
box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.3) !important;
|
||||
outline: initial;
|
||||
}
|
||||
|
||||
/* Processing animation bars */
|
||||
.processing-download > div {
|
||||
background-color: #EBEBEB;
|
||||
}
|
||||
|
||||
.table-striped>tbody>tr:nth-child(odd),
|
||||
.table>tbody>tr:nth-child(odd),
|
||||
.multioperations-selector,
|
||||
.pagination li.active span,
|
||||
.pagination li span:hover,
|
||||
.dropdown-menu .divider,
|
||||
.history-queue-swicher .badge {
|
||||
background-color: #444444;
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
table,
|
||||
.table-striped>tbody>tr:nth-child(even),
|
||||
.table>tbody>tr:nth-child(even),
|
||||
.table th,
|
||||
.pagination li span,
|
||||
.pagination>.disabled>span,
|
||||
.pagination>.disabled>span:hover,
|
||||
.search-box input,
|
||||
input,
|
||||
input.form-control,
|
||||
.input-group-addon,
|
||||
select.form-control,
|
||||
.main-content .btn-default,
|
||||
.modal-body .btn-default,
|
||||
.modal-footer .btn-default,
|
||||
.btn-default.disabled:hover,
|
||||
.btn-default.disabled:active,
|
||||
.btn-default.disabled:focus,
|
||||
.form-control[disabled],
|
||||
#modal-options .options-function-box .input-group-addon {
|
||||
background-color: #555555;
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
.btn-default:not(.navbar-btn):hover,
|
||||
select:hover,
|
||||
input:hover {
|
||||
background-color: #666666;
|
||||
}
|
||||
|
||||
/* Needed to force the text-color */
|
||||
.table-striped>tbody>tr:nth-child(odd)>td,
|
||||
.table>tbody>tr:nth-child(odd)>td,
|
||||
.table-striped>tbody>tr:nth-child(even)>td,
|
||||
.table>tbody>tr:nth-child(even)>td {
|
||||
color: #EBEBEB;
|
||||
}
|
||||
|
||||
/* Hovering the queue and the history */
|
||||
.table>tbody>tr:hover {
|
||||
background-color: #666;
|
||||
}
|
||||
|
||||
.table,
|
||||
tr td,
|
||||
tbody>tr>td:last-child,
|
||||
tbody>tr>td:first-child,
|
||||
tbody>tr:last-child td,
|
||||
.table-messages .table-messages-remove,
|
||||
.multioperations-selector,
|
||||
.pagination li span,
|
||||
.pagination li a,
|
||||
.search-box input,
|
||||
input,
|
||||
input.form-control,
|
||||
.input-group-addon,
|
||||
.search-box input:focus,
|
||||
.search-box input:valid,
|
||||
select.form-control,
|
||||
#modal-options .table-server-connections th,
|
||||
.main-content .btn-default,
|
||||
.modal-body .btn-default,
|
||||
.modal-footer .btn-default,
|
||||
.queue .table-active-sorting {
|
||||
border-color: #252525 !important;
|
||||
}
|
||||
|
||||
|
||||
.history-failed-download td.status,
|
||||
.retry-buttontext,
|
||||
.retry-button, .retry-button-inactive,
|
||||
.history-options-show-failed,
|
||||
.queue-error-info,
|
||||
.options-bad-status,
|
||||
.history-failed-download:hover .retry-button .glyphicon:before,
|
||||
.retry-button:hover .glyphicon:before {
|
||||
color: #F95151 !important;
|
||||
}
|
||||
|
||||
.ui-sortable-helper td {
|
||||
background-color: #555555 !important;
|
||||
}
|
||||
|
||||
tbody .caret {
|
||||
border-top-color: #EBEBEB !important;
|
||||
}
|
||||
|
||||
.info-container,
|
||||
#modal-options .options-status-box small,
|
||||
#modal-options #options-status small,
|
||||
#modal-options .tab-content h4,
|
||||
h2 small {
|
||||
color: #D6D6D6;
|
||||
}
|
||||
|
||||
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;
|
||||
background-color: var(--clr-text);
|
||||
}
|
||||
|
||||
/* Legend / divider borders (dark-specific value, not matching any token) */
|
||||
legend,
|
||||
hr {
|
||||
border-color: #C6C6C6 !important;
|
||||
}
|
||||
|
||||
/* Slider handle */
|
||||
.ui-slider .ui-slider-handle {
|
||||
background-color: #969696;
|
||||
border-color: #969696
|
||||
border-color: #969696;
|
||||
}
|
||||
|
||||
/* Compact layout progress shadow boost */
|
||||
.container-compact .progress,
|
||||
.container-compact .queue .progress-bar {
|
||||
box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
.modal-footer {
|
||||
border-top: 1px solid rgb(131 131 131);
|
||||
}
|
||||
|
||||
/* Help table transparent bg override */
|
||||
#modal-help table td,
|
||||
#modal-help table {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
/* File items table structural */
|
||||
#modal-item-files .item-files-table td {
|
||||
border-bottom: none !important;
|
||||
}
|
||||
@@ -248,40 +155,9 @@ hr {
|
||||
border-bottom: 1px solid black;
|
||||
}
|
||||
|
||||
/* History/queue tab switcher */
|
||||
.history-queue-swicher .nav-tabs>li>a,
|
||||
.history-queue-swicher .nav-tabs>li.active>a {
|
||||
.history-queue-swicher .nav-tabs>li.active>a {
|
||||
border-bottom: none;
|
||||
margin-bottom: 1px;
|
||||
}
|
||||
|
||||
.queue-item .dropdown-menu:after,
|
||||
.history-item .dropdown-menu:after,
|
||||
.info-container-box-sorting .dropdown-menu:after {
|
||||
border-bottom-color: #666;
|
||||
}
|
||||
|
||||
.container-compact .progress,
|
||||
.container-compact .queue .progress-bar {
|
||||
box-shadow: inset 1px 0px 1px rgba(0, 0, 0, 1);
|
||||
}
|
||||
|
||||
.modal-content {
|
||||
border-color: #727272;
|
||||
border-top: none;
|
||||
}
|
||||
|
||||
.form-control:focus,
|
||||
input[type="submit"]:focus,
|
||||
button:focus {
|
||||
box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.3) !important;
|
||||
outline: initial;
|
||||
}
|
||||
|
||||
.archive-icon {
|
||||
fill: #EBEBEB;
|
||||
}
|
||||
|
||||
::placeholder {
|
||||
color: #EBEBEB !important;
|
||||
opacity: 0.5 !important;
|
||||
}
|
||||
File diff suppressed because it is too large.
Load diff
@@ -22,7 +22,8 @@
|
||||
|
||||
.main-content {
|
||||
border: 0;
|
||||
margin-bottom: 0 !important;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.main-menu-link .icon-bar:first-child {
|
||||
@@ -74,6 +75,10 @@ h2 {
|
||||
QUEUE & HISTORY
|
||||
**/
|
||||
|
||||
.history-queue-swicher {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.info-container {
|
||||
margin-top: 0px;
|
||||
margin-bottom: 10px;
|
||||
@@ -95,13 +100,6 @@ h2 {
|
||||
white-space: pre;
|
||||
}
|
||||
|
||||
.info-container .info-container-box-sorting {
|
||||
position: absolute;
|
||||
right: 10px;
|
||||
top: 0px;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.queue-table .table-header-progress {
|
||||
width: 0%;
|
||||
}
|
||||
@@ -128,7 +126,7 @@ h2 {
|
||||
}
|
||||
|
||||
.queue-table .progress {
|
||||
margin: 0px 8px;
|
||||
margin: 0px 15px;
|
||||
}
|
||||
|
||||
.queue-table td.name .row-wrap-text,
|
||||
@@ -151,6 +149,9 @@ tr.queue-item>td:first-child>a {
|
||||
|
||||
.queue-table td.name .name-options {
|
||||
display: inline-block;
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
position: static;
|
||||
}
|
||||
|
||||
.queue-table td.name .name-options small {
|
||||
@@ -274,4 +275,4 @@ tr.queue-item>td:first-child>a {
|
||||
#modal-item-files .form-group {
|
||||
clear: left;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
}
|
||||
@@ -3,14 +3,14 @@
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<title>$T('wizard-quickstart')</title>
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/bootstrap/css/bootstrap.min.css?v=$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="static/style.css?v=$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/bootstrap/css/bootstrap.min.css?v=$cache_buster"/>
|
||||
<link rel="stylesheet" type="text/css" href="static/style.css?v=$cache_buster"/>
|
||||
<!--#if $color_scheme not in ('Light', '') #-->
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/css/${color_scheme}.css?v=$version"/>
|
||||
<link rel="stylesheet" type="text/css" href="../staticcfg/css/${color_scheme}.css?v=$cache_buster"/>
|
||||
<!--#end if#-->
|
||||
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico?v=$version" />
|
||||
<script type="text/javascript" src="../staticcfg/js/jquery-3.5.1.min.js?v=$version"></script>
|
||||
<script type="text/javascript" src="../staticcfg/bootstrap/js/bootstrap.min.js?v=$version"></script>
|
||||
<link rel="shortcut icon" href="../staticcfg/ico/favicon.ico?v=$cache_buster" />
|
||||
<script type="text/javascript" src="../staticcfg/js/jquery-3.5.1.min.js?v=$cache_buster"></script>
|
||||
<script type="text/javascript" src="../staticcfg/bootstrap/js/bootstrap.min.js?v=$cache_buster"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div id="logo">
|
||||
|
||||
@@ -65,7 +65,7 @@
|
||||
<div class="form-group">
|
||||
<label for="connections" class="col-sm-4 control-label">$T('srv-connections')</label>
|
||||
<div class="col-sm-8">
|
||||
<input type="number" class="form-control" name="connections" id="connections" value="<!--#if $connections then $connections else '8'#-->" min="1" max="500" data-toggle="tooltip" data-placement="right" title="$T('wizard-server-con-explain') $T('wizard-server-con-eg')" required />
|
||||
<input type="number" class="form-control" name="connections" id="connections" value="<!--#if $connections then $connections else '16'#-->" min="1" max="500" data-toggle="tooltip" data-placement="right" title="$T('wizard-server-con-explain') $T('wizard-server-con-eg')" required />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
|
||||
@@ -1,16 +1,36 @@
|
||||
:root {
|
||||
/* Border radius scale */
|
||||
--radius-sm: 4px; /* small elements: progress bars */
|
||||
--radius-md: 6px; /* search bar, multi-edit toolbar, file controls */
|
||||
--radius-lg: 8px; /* cards, modals, notification box */
|
||||
|
||||
/* Color palette — light mode defaults; overridden by Night.css */
|
||||
--clr-page-bg: #E4E4E4;
|
||||
--clr-surface: #FFFFFF;
|
||||
--clr-surface-alt: #F5F5F5;
|
||||
--clr-surface-hover: #E4E4E4;
|
||||
--clr-border: rgba(0, 0, 0, 0.2);
|
||||
--clr-text: #000000;
|
||||
--clr-text-muted: #777777;
|
||||
--clr-link: #555555;
|
||||
--clr-toggle-active: #f9ca33;
|
||||
--clr-toggle-inactive: #aaaaaa;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: #E4E4E4;
|
||||
background-color: var(--clr-page-bg);
|
||||
color: var(--clr-text);
|
||||
text-align: center;
|
||||
}
|
||||
.container {
|
||||
max-width: 1000px;
|
||||
border: 1px solid rgba(0, 0, 0, 0.2);
|
||||
background-color: #fff;
|
||||
text-align: left;
|
||||
}
|
||||
#inner {
|
||||
background-color: #fff;
|
||||
padding: 4px 32px 20px 32px;
|
||||
border: 1px solid var(--clr-border);
|
||||
border-radius: var(--radius-lg);
|
||||
background-color: var(--clr-surface);
|
||||
}
|
||||
#content {
|
||||
min-height: 550px;
|
||||
@@ -33,7 +53,7 @@ body {
|
||||
float: left;
|
||||
}
|
||||
.language:hover {
|
||||
background-color: #E4E4E4;
|
||||
background-color: var(--clr-surface-hover);
|
||||
}
|
||||
.float {
|
||||
float: left;
|
||||
@@ -51,7 +71,7 @@ body {
|
||||
padding: 12px;
|
||||
margin-top: 1px;
|
||||
margin-bottom: 15px;
|
||||
background-color: #f5f5f5;
|
||||
background-color: var(--clr-surface-alt);
|
||||
}
|
||||
.quoteBlock a,
|
||||
a[target="_blank"] {
|
||||
@@ -80,6 +100,39 @@ label {
|
||||
.input-checkbox {
|
||||
padding-top: 7px !important;
|
||||
}
|
||||
/* Toggle switch */
|
||||
input[type="checkbox"] {
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
margin: 0;
|
||||
width: 36px;
|
||||
height: 20px;
|
||||
background-color: var(--clr-toggle-inactive);
|
||||
background-image:
|
||||
radial-gradient(circle at 10px 10px, #ffffff 6.5px, rgba(255,255,255,0) 7px),
|
||||
radial-gradient(circle at 11px 11px, rgba(0,0,0,0.30) 6.5px, transparent 9.5px);
|
||||
background-size: 20px 20px;
|
||||
background-repeat: no-repeat;
|
||||
background-position: 0px center;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s, background-position 0.15s;
|
||||
}
|
||||
input[type="checkbox"]:checked {
|
||||
background-color: var(--clr-toggle-active);
|
||||
background-position: 16px center;
|
||||
background-image:
|
||||
radial-gradient(circle at 10px 10px, #ffffff 6.5px, rgba(255,255,255,0) 7px),
|
||||
radial-gradient(circle at 10.5px 10.5px, rgba(0,0,0,0.30) 6.5px, transparent 9.5px);
|
||||
}
|
||||
input[type="checkbox"]:focus-visible {
|
||||
outline: 2px solid var(--clr-toggle-active);
|
||||
outline-offset: 2px;
|
||||
border-radius: 10px;
|
||||
}
|
||||
.input-checkbox input+.help-block {
|
||||
display: none;
|
||||
}
|
||||
@@ -136,24 +189,22 @@ label {
|
||||
Bootstrap overwrites
|
||||
***/
|
||||
|
||||
* {
|
||||
border-radius: 0 !important;
|
||||
}
|
||||
|
||||
a,
|
||||
a:hover,
|
||||
a:active,
|
||||
a:visited,
|
||||
#serverResponse {
|
||||
color: #555;
|
||||
color: var(--clr-link);
|
||||
}
|
||||
.btn {
|
||||
box-shadow: 1px 1px 1px rgba(0, 0, 0, .1) !important;
|
||||
min-width: 150px;
|
||||
box-shadow: 1px 0px 1px rgba(0,0,0,.1);
|
||||
}
|
||||
.btn .glyphicon,
|
||||
a .glyphicon {
|
||||
top: 2px;
|
||||
}
|
||||
small {
|
||||
color: #777;
|
||||
color: var(--clr-text-muted);
|
||||
}
|
||||
@@ -1,163 +1,246 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!-- Copyright 2022-2026 by The SABnzbd-Team (sabnzbd.org) -->
|
||||
<component type="desktop-application">
|
||||
<id>org.sabnzbd.sabnzbd</id>
|
||||
<metadata_license>MIT</metadata_license>
|
||||
<name>SABnzbd</name>
|
||||
<summary>Free and easy binary newsreader</summary>
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#e7e7e7</color>
|
||||
<color type="primary" scheme_preference="dark">#444444</color>
|
||||
</branding>
|
||||
<description>
|
||||
<p>
|
||||
SABnzbd is a free and Open Source web-based binary newsreader,
|
||||
with support for the popular nzb file format. It greatly simplifies
|
||||
the process of downloading from Usenet, thanks to a friendly
|
||||
web-based user interface and advanced built-in post-processing
|
||||
options including the ability to automatically verify, repair,
|
||||
extract and clean up downloaded posts. It runs anywhere, comes in
|
||||
over a dozen languages, and integrates with a host of tools, apps
|
||||
and services that help automate the download process.
|
||||
</p>
|
||||
</description>
|
||||
<keywords>
|
||||
<keyword>usenet</keyword>
|
||||
<keyword>nzb</keyword>
|
||||
<keyword>download</keyword>
|
||||
<keyword>newsreader</keyword>
|
||||
<keyword>binary</keyword>
|
||||
</keywords>
|
||||
<categories>
|
||||
<category>Network</category>
|
||||
<category>FileTransfer</category>
|
||||
</categories>
|
||||
<url type="homepage">https://sabnzbd.org</url>
|
||||
<url type="bugtracker">https://github.com/sabnzbd/sabnzbd/issues</url>
|
||||
<url type="vcs-browser">https://github.com/sabnzbd/sabnzbd</url>
|
||||
<url type="contribute">https://github.com/sabnzbd/sabnzbd</url>
|
||||
<url type="translate">https://sabnzbd.org/wiki/translate</url>
|
||||
<url type="donation">https://sabnzbd.org/donate</url>
|
||||
<url type="help">https://sabnzbd.org/wiki/</url>
|
||||
<url type="faq">https://sabnzbd.org/wiki/faq</url>
|
||||
<url type="contact">https://sabnzbd.org/live-chat.html</url>
|
||||
<releases>
|
||||
<release version="5.0.0" date="2026-05-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.0.0</url>
|
||||
</release>
|
||||
<release version="4.5.5" date="2025-10-24" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.5</url>
|
||||
</release>
|
||||
<release version="4.5.4" date="2025-10-22" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.4</url>
|
||||
</release>
|
||||
<release version="4.5.3" date="2025-08-25" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.3</url>
|
||||
</release>
|
||||
<release version="4.5.2" date="2025-07-09" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.2</url>
|
||||
</release>
|
||||
<release version="4.5.1" date="2025-04-11" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.1</url>
|
||||
</release>
|
||||
<release version="4.5.0" date="2025-04-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.0</url>
|
||||
</release>
|
||||
<release version="4.4.1" date="2024-12-23" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.4.1</url>
|
||||
</release>
|
||||
<release version="4.4.0" date="2024-12-09" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.4.0</url>
|
||||
</release>
|
||||
<release version="4.3.3" date="2024-08-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.3.3</url>
|
||||
</release>
|
||||
<release version="4.3.2" date="2024-05-30" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.3.2</url>
|
||||
</release>
|
||||
<release version="4.3.1" date="2024-05-03" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.3.1</url>
|
||||
</release>
|
||||
</releases>
|
||||
<launchable type="desktop-id">sabnzbd.desktop</launchable>
|
||||
<provides>
|
||||
<mediatype>application/x-nzb</mediatype>
|
||||
<mediatype>application/x-compressed-nzb</mediatype>
|
||||
</provides>
|
||||
<supports>
|
||||
<control>pointing</control>
|
||||
<control>keyboard</control>
|
||||
<control>touch</control>
|
||||
</supports>
|
||||
<recommends>
|
||||
<display_length compare="ge">640</display_length>
|
||||
<internet>always</internet>
|
||||
</recommends>
|
||||
<project_license>GPL-2.0-or-later</project_license>
|
||||
<developer id="org.sabnzbd">
|
||||
<name>The SABnzbd-Team</name>
|
||||
</developer>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/interface.png</image>
|
||||
<caption>Intuitive interface</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/night-mode.png</image>
|
||||
<caption>Also comes in Night-mode</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/add-nzb.png</image>
|
||||
<caption>Add NZB's or use drag-and-drop!</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/phone-interface.png</image>
|
||||
<caption>Scales to any screen size</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/history-details.png</image>
|
||||
<caption>Easy overview of all history details</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/phone-extra.png</image>
|
||||
<caption>Every option, on every screen size</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/file-lists.png</image>
|
||||
<caption>Manage a job's individual files</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/set-speedlimit.png</image>
|
||||
<caption>Easy speed limiting</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/set-options.png</image>
|
||||
<caption>Quickly change settings</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/dashboard.png</image>
|
||||
<caption>Easy system check</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/connections-overview.png</image>
|
||||
<caption>See active connections</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/skin-settings.png</image>
|
||||
<caption>Customize the interface</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/tabbed.png</image>
|
||||
<caption>Tabbed-mode</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/set-custom-pause.png</image>
|
||||
<caption>Specify any pause duration</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/config.png</image>
|
||||
<caption>Easy configuration</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<id>org.sabnzbd.sabnzbd</id>
|
||||
<metadata_license>MIT</metadata_license>
|
||||
<name>SABnzbd</name>
|
||||
<summary>Free and easy binary newsreader</summary>
|
||||
<summary xml:lang="fr">Lecteur de news binaire libre et facile à utiliser</summary>
|
||||
<summary xml:lang="tr">Özgür ve kullanımı kolay Usenet ikili okuyucu</summary>
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#e7e7e7</color>
|
||||
<color type="primary" scheme_preference="dark">#444444</color>
|
||||
</branding>
|
||||
<description>
|
||||
<p>
|
||||
SABnzbd is a free and Open Source web-based binary newsreader,
|
||||
with support for the popular nzb file format. It greatly simplifies
|
||||
the process of downloading from Usenet, thanks to a friendly
|
||||
web-based user interface and advanced built-in post-processing
|
||||
options including the ability to automatically verify, repair,
|
||||
extract and clean up downloaded posts. It runs anywhere, comes in
|
||||
over a dozen languages, and integrates with a host of tools, apps
|
||||
and services that help automate the download process.
|
||||
</p>
|
||||
<p xml:lang="fr">
|
||||
SABnzbd est un lecteur binaire de newsgroups libre et gratuit prenant
|
||||
en charge le format nzb très répandu. Il simplifie grandement le processus
|
||||
de téléchargement depuis Usenet grâce à une interface web conviviale
|
||||
et à des options avancées de post-traitement intégrées qui comprennent
|
||||
la capacité à vérifier, réparer, extraire et nettoyer automatiquement
|
||||
les messages téléchargés. Il fonctionne partout, est fourni avec une
|
||||
douzaine de traductions et s'intègre avec de nombreux outils, applications
|
||||
et services qui aident à automatiser le processus de téléchargement.
|
||||
</p>
|
||||
<p xml:lang="tr">
|
||||
SABnzbd, popüler nzb biçimini destekleyen özgür ve ücretsiz bir ikili
|
||||
haber grupları okuyucusudur. Kullanıcı dostu Web tabanlı arayüzü ve
|
||||
indirilen mesajları otomatik olarak doğrulama, tamir etme, çıkarma ve
|
||||
temizleme kabiliyetine sahip gelişmiş yerleşik son işlem seçenekleri
|
||||
sayesinde Usenet ağından indirmeyi büyük ölçüde kolaylaştırır. Her yerde
|
||||
çalışabilir, bir düzineden fazla dil desteği sunar ve indirme sürecini
|
||||
otomatik hâle getirmeye yardımcı olan birçok araç, uygulama ve hizmet ile
|
||||
birlikte çalışabilir.
|
||||
</p>
|
||||
</description>
|
||||
<keywords>
|
||||
<keyword>usenet</keyword>
|
||||
<keyword>nzb</keyword>
|
||||
<keyword>download</keyword>
|
||||
<keyword>newsreader</keyword>
|
||||
<keyword>binary</keyword>
|
||||
<keyword xml:lang="fr">usenet</keyword>
|
||||
<keyword xml:lang="fr">nzb</keyword>
|
||||
<keyword xml:lang="fr">téléchargement</keyword>
|
||||
<keyword xml:lang="fr">binaires</keyword>
|
||||
<keyword xml:lang="tr">usenet</keyword>
|
||||
<keyword xml:lang="tr">nzb</keyword>
|
||||
<keyword xml:lang="tr">indirme</keyword>
|
||||
</keywords>
|
||||
<categories>
|
||||
<category>Network</category>
|
||||
<category>FileTransfer</category>
|
||||
</categories>
|
||||
<url type="homepage">https://sabnzbd.org</url>
|
||||
<url type="bugtracker">https://github.com/sabnzbd/sabnzbd/issues</url>
|
||||
<url type="vcs-browser">https://github.com/sabnzbd/sabnzbd</url>
|
||||
<url type="contribute">https://github.com/sabnzbd/sabnzbd</url>
|
||||
<url type="translate">https://sabnzbd.org/wiki/translate</url>
|
||||
<url type="donation">https://sabnzbd.org/donate</url>
|
||||
<url type="help">https://sabnzbd.org/wiki/</url>
|
||||
<url type="faq">https://sabnzbd.org/wiki/faq</url>
|
||||
<url type="contact">https://sabnzbd.org/live-chat.html</url>
|
||||
<releases>
|
||||
<release version="5.1.3" date="2026-08-25" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.1.2</url>
|
||||
</release>
|
||||
<release version="5.1.2" date="2026-08-25" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.1.2</url>
|
||||
</release>
|
||||
<release version="5.1.1" date="2026-08-18" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.1.1</url>
|
||||
</release>
|
||||
<release version="5.1.0" date="2026-08-10" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.1.0</url>
|
||||
</release>
|
||||
<release version="5.0.4" date="2026-06-11" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.0.4</url>
|
||||
</release>
|
||||
<release version="5.0.3" date="2026-05-15" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.0.3</url>
|
||||
</release>
|
||||
<release version="5.0.2" date="2026-05-14" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.0.2</url>
|
||||
</release>
|
||||
<release version="5.0.1" date="2026-05-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.0.1</url>
|
||||
</release>
|
||||
<release version="5.0.0" date="2026-05-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/5.0.0</url>
|
||||
</release>
|
||||
<release version="4.5.5" date="2025-10-24" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.5</url>
|
||||
</release>
|
||||
<release version="4.5.4" date="2025-10-22" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.4</url>
|
||||
</release>
|
||||
<release version="4.5.3" date="2025-08-25" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.3</url>
|
||||
</release>
|
||||
<release version="4.5.2" date="2025-07-09" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.2</url>
|
||||
</release>
|
||||
<release version="4.5.1" date="2025-04-11" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.1</url>
|
||||
</release>
|
||||
<release version="4.5.0" date="2025-04-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.5.0</url>
|
||||
</release>
|
||||
<release version="4.4.1" date="2024-12-23" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.4.1</url>
|
||||
</release>
|
||||
<release version="4.4.0" date="2024-12-09" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.4.0</url>
|
||||
</release>
|
||||
<release version="4.3.3" date="2024-08-01" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.3.3</url>
|
||||
</release>
|
||||
<release version="4.3.2" date="2024-05-30" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.3.2</url>
|
||||
</release>
|
||||
<release version="4.3.1" date="2024-05-03" type="stable">
|
||||
<url type="details">https://github.com/sabnzbd/sabnzbd/releases/tag/4.3.1</url>
|
||||
</release>
|
||||
</releases>
|
||||
<launchable type="desktop-id">sabnzbd.desktop</launchable>
|
||||
<provides>
|
||||
<mediatype>application/x-nzb</mediatype>
|
||||
<mediatype>application/x-compressed-nzb</mediatype>
|
||||
</provides>
|
||||
<supports>
|
||||
<control>pointing</control>
|
||||
<control>keyboard</control>
|
||||
<control>touch</control>
|
||||
</supports>
|
||||
<recommends>
|
||||
<display_length compare="ge">640</display_length>
|
||||
<internet>always</internet>
|
||||
</recommends>
|
||||
<project_license>GPL-2.0-or-later</project_license>
|
||||
<developer id="org.sabnzbd">
|
||||
<name>The SABnzbd-Team</name>
|
||||
</developer>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/interface.png</image>
|
||||
<caption>Intuitive interface</caption>
|
||||
<caption xml:lang="fr">Interface intuitive</caption>
|
||||
<caption xml:lang="tr">Sezgisel arayüz</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/night-mode.png</image>
|
||||
<caption>Also comes in Night-mode</caption>
|
||||
<caption xml:lang="fr">Fourni également avec le mode nuit</caption>
|
||||
<caption xml:lang="tr">Gece kipi ile de sunulur</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/add-nzb.png</image>
|
||||
<caption>Add NZB's or use drag-and-drop!</caption>
|
||||
<caption xml:lang="fr">Ajoutez des fichiers NZB ou utilisez le glisser - déposer !</caption>
|
||||
<caption xml:lang="tr">NZB dosyaları ekleyin veya kaydır - bırak kullanın!</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/phone-interface.png</image>
|
||||
<caption>Scales to any screen size</caption>
|
||||
<caption xml:lang="fr">S'adapte à toutes les tailles d'écran</caption>
|
||||
<caption xml:lang="tr">Her ekran boyutuna uyum sağlar</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/history-details.png</image>
|
||||
<caption>Easy overview of all history details</caption>
|
||||
<caption xml:lang="fr">Vue d'ensemble aisée de tous les détails de l'historique</caption>
|
||||
<caption xml:lang="tr">Tarihçenin tüm ayrıntıları için kolay genel bakış</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/phone-extra.png</image>
|
||||
<caption>Every option, on every screen size</caption>
|
||||
<caption xml:lang="fr">Toutes les options, quelle que soit la taille d'écran</caption>
|
||||
<caption xml:lang="tr">Ekran boyutu ne olursa olsun, tüm seçenekler elinizin altında</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/file-lists.png</image>
|
||||
<caption>Manage a job's individual files</caption>
|
||||
<caption xml:lang="fr">Gérez les fichiers individuels d'une tâche</caption>
|
||||
<caption xml:lang="tr">Herhangi bir görevin dosyalarını tek tek yönetin</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/set-speedlimit.png</image>
|
||||
<caption>Easy speed limiting</caption>
|
||||
<caption xml:lang="fr">Limitation facile du débit</caption>
|
||||
<caption xml:lang="tr">Kolay hız sınırlaması</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/set-options.png</image>
|
||||
<caption>Quickly change settings</caption>
|
||||
<caption xml:lang="fr">Changement rapide des réglages</caption>
|
||||
<caption xml:lang="tr">Ayarları hızlıca değiştirin</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/dashboard.png</image>
|
||||
<caption>Easy system check</caption>
|
||||
<caption xml:lang="fr">Vérification facile du système</caption>
|
||||
<caption xml:lang="tr">Sistemi kolayca kontrol edin</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/connections-overview.png</image>
|
||||
<caption>See active connections</caption>
|
||||
<caption xml:lang="fr">Voyez les connexions actives</caption>
|
||||
<caption xml:lang="tr">Etkin bağlantıları görüntüleyin</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/skin-settings.png</image>
|
||||
<caption>Customize the interface</caption>
|
||||
<caption xml:lang="fr">Personnalisez l'interface</caption>
|
||||
<caption xml:lang="tr">Arayüzü kişiselleştirin</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/tabbed.png</image>
|
||||
<caption>Tabbed-mode</caption>
|
||||
<caption xml:lang="fr">Mode avec onglets</caption>
|
||||
<caption xml:lang="tr">Sekmeli kip</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/set-custom-pause.png</image>
|
||||
<caption>Specify any pause duration</caption>
|
||||
<caption xml:lang="fr">Spécifiez une durée de pause quelconque</caption>
|
||||
<caption xml:lang="tr">Herhangi bir duraklama süresi belirtin</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://sabnzbd.org/images/landing/screenshots/config.png</image>
|
||||
<caption>Easy configuration</caption>
|
||||
<caption xml:lang="fr">Configuration facile</caption>
|
||||
<caption xml:lang="tr">Kolay yapılandırma</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<content_rating type="oars-1.1"/>
|
||||
</component>
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
|
||||
+93
-1
@@ -1,10 +1,14 @@
|
||||
# SABnzbd Translation Template file EMAIL
|
||||
# Copyright 2007-2026 by The SABnzbd-Team (sabnzbd.org)
|
||||
#
|
||||
# Translators:
|
||||
# Iamanro, 2026
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Iamanro, 2026\n"
|
||||
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -56,6 +60,47 @@ msgid ""
|
||||
"Sorry!\n"
|
||||
"<!--#end if#-->\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## Výchozí e-mailová šablona pro SABnzbd\n"
|
||||
"## Toto je šablona Cheetah\n"
|
||||
"## Dokumentace: https://sabnzbd.org/wiki/extra/email-templates\n"
|
||||
"##\n"
|
||||
"## Nové řádky a mezery jsou významné!\n"
|
||||
"##\n"
|
||||
"## Toto jsou hlavičky e-mailu\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd <!--#if $status then \"dokončil\" else \"nedokončil\" #--> úlohu $name\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## Poté následuje tělo zprávy, prázdný řádek je povinný!\n"
|
||||
"\n"
|
||||
"Dobrý den,\n"
|
||||
"<!--#if $status #-->\n"
|
||||
"SABnzbd stáhl \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
"<!--#else#-->\n"
|
||||
"SABnzbd nedokázal stáhnout \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin #\" + $msgid + \")\"#-->\n"
|
||||
"<!--#end if#-->\n"
|
||||
"Dokončeno v $end_time\n"
|
||||
"Staženo $size\n"
|
||||
"\n"
|
||||
"Výsledky úlohy:\n"
|
||||
"<!--#for $stage in $stages #-->\n"
|
||||
"Fáze $stage <!--#slurp#-->\n"
|
||||
"<!--#for $result in $stages[$stage]#-->\n"
|
||||
"$result <!--#slurp#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
"<!--#if $script!=\"\" #-->\n"
|
||||
"Výstup z uživatelského skriptu \"$script\" (Návratový kód = $script_ret):\n"
|
||||
"$script_output\n"
|
||||
"<!--#end if#-->\n"
|
||||
"<!--#if $status #-->\n"
|
||||
"Užijte si to!\n"
|
||||
"<!--#else#-->\n"
|
||||
"Je nám líto!\n"
|
||||
"<!--#end if#-->\n"
|
||||
|
||||
#: email/rss.tmpl:1
|
||||
msgid ""
|
||||
@@ -85,6 +130,31 @@ msgid ""
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## E-mailová šablona RSS pro SABnzbd\n"
|
||||
"## Toto je šablona Cheetah\n"
|
||||
"## Dokumentace: https://sabnzbd.org/wiki/extra/email-templates\n"
|
||||
"##\n"
|
||||
"## Nové řádky a mezery jsou významné!\n"
|
||||
"##\n"
|
||||
"## Toto jsou hlavičky e-mailu\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd přidal $amount úloh do fronty\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## Poté následuje tělo zprávy, prázdný řádek je povinný!\n"
|
||||
"\n"
|
||||
"Dobrý den,\n"
|
||||
"\n"
|
||||
"SABnzbd přidal $amount úloh do fronty.\n"
|
||||
"Pocházejí z RSS kanálu \"$feed\".\n"
|
||||
"<!--#for $job in $jobs#-->\n"
|
||||
"$job <!--#slurp#-->\n"
|
||||
"<!--#end for#-->\n"
|
||||
"\n"
|
||||
"Na shledanou\n"
|
||||
|
||||
#: email/badfetch.tmpl:1
|
||||
msgid ""
|
||||
@@ -111,3 +181,25 @@ msgid ""
|
||||
"\n"
|
||||
"Bye\n"
|
||||
msgstr ""
|
||||
"##\n"
|
||||
"## E-mailová šablona SABnzbd pro neúspěšné načtení URL\n"
|
||||
"## Toto je šablona Cheetah\n"
|
||||
"## Dokumentace: https://sabnzbd.org/wiki/extra/email-templates\n"
|
||||
"##\n"
|
||||
"## Nové řádky a mezery jsou významné!\n"
|
||||
"##\n"
|
||||
"## Toto jsou hlavičky e-mailu\n"
|
||||
"To: $to\n"
|
||||
"From: $from\n"
|
||||
"Date: $date\n"
|
||||
"Subject: SABnzbd nedokázal získat NZB\n"
|
||||
"X-priority: 5\n"
|
||||
"X-MS-priority: 5\n"
|
||||
"## Poté následuje tělo zprávy, prázdný řádek je povinný!\n"
|
||||
"\n"
|
||||
"Dobrý den,\n"
|
||||
"\n"
|
||||
"SABnzbd nedokázal získat NZB z $url.\n"
|
||||
"Chybová zpráva byla: $msg\n"
|
||||
"\n"
|
||||
"Na shledanou\n"
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2025\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2025\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2025\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2025\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: mauron, 2025\n"
|
||||
"Language-Team: Turkish (https://app.transifex.com/sabnzbd/teams/111101/tr/)\n"
|
||||
|
||||
+1
-1
@@ -3,7 +3,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
|
||||
+93
-61
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
@@ -105,7 +105,6 @@ msgstr ""
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr ""
|
||||
@@ -207,6 +206,10 @@ msgstr ""
|
||||
msgid "Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr ""
|
||||
@@ -223,8 +226,9 @@ msgstr ""
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgid "Server %s took %d ms to respond. On high-latency connections, increasing 'Articles per request' to a value between 5 and 10 can improve download speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
@@ -476,7 +480,7 @@ msgid "Resuming"
|
||||
msgstr ""
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr ""
|
||||
|
||||
@@ -530,6 +534,11 @@ msgstr ""
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid "Total number of configured connections (%d) is greater than the operating system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr ""
|
||||
@@ -781,7 +790,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr ""
|
||||
|
||||
@@ -810,7 +819,7 @@ msgid "Limit Speed"
|
||||
msgstr ""
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr ""
|
||||
|
||||
@@ -820,7 +829,7 @@ msgid "min"
|
||||
msgstr ""
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr ""
|
||||
|
||||
@@ -829,7 +838,7 @@ msgstr ""
|
||||
msgid "Scan watched folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr ""
|
||||
|
||||
@@ -841,16 +850,16 @@ msgstr ""
|
||||
msgid "Incomplete Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr ""
|
||||
|
||||
@@ -1040,6 +1049,10 @@ msgstr ""
|
||||
msgid "see logfile"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr ""
|
||||
@@ -1207,7 +1220,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr ""
|
||||
|
||||
@@ -1345,7 +1358,7 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr ""
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr ""
|
||||
@@ -1633,6 +1646,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1657,10 +1674,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1682,50 +1695,15 @@ msgstr ""
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr ""
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr ""
|
||||
|
||||
@@ -1733,6 +1711,44 @@ msgstr ""
|
||||
msgid "Add NZB"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr ""
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr ""
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2745,7 +2761,7 @@ msgid "Cleanup List"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "List of file extensions that should be deleted after download.<br />For example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
msgid "List of file extensions, filenames or patterns that should be deleted after download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> (filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3210,7 +3226,7 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid "The queue will resort every 30 seconds if % downloaded or Remaining Size is selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3584,10 +3600,6 @@ msgstr ""
|
||||
msgid "Force Download"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4212,6 +4224,14 @@ msgstr ""
|
||||
msgid "Filename"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr ""
|
||||
@@ -4220,6 +4240,10 @@ msgstr ""
|
||||
msgid "Temp Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr ""
|
||||
@@ -4228,6 +4252,10 @@ msgstr ""
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr ""
|
||||
@@ -4456,6 +4484,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr ""
|
||||
|
||||
+940
-653
File diff suppressed because it is too large.
Load diff
+130
-71
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
|
||||
@@ -120,7 +120,6 @@ msgstr "SABnzbd %s startet"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd lukning udført"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signal %s modtaget, gemmer og lukker..."
|
||||
@@ -151,6 +150,7 @@ msgstr ""
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Windows ARM version of SABnzbd is available from our Downloads page!"
|
||||
msgstr ""
|
||||
"Windows ARM-versionen af SABnzbd er tilgængelig på vores downloadside!"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
@@ -250,6 +250,10 @@ msgstr ""
|
||||
"Ukendt SSL protokol: Prøv at deaktivere SSL eller forbinder på en anden "
|
||||
"port."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Det lykkedes ikke at tilslutte (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Serveren kræver brugernavn og adgangskode."
|
||||
@@ -267,9 +271,13 @@ msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
"Alt for mange forbindelser, pause en download eller forsøg igen senere"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Det lykkedes ikke at tilslutte (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -550,8 +558,8 @@ msgid "Resuming"
|
||||
msgstr "Genoptager"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Sat på pause"
|
||||
|
||||
@@ -611,6 +619,16 @@ msgstr "Det lykkedes ikke at logge på serveren %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Forbindelse %s@%s mislykkedes, besked %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"Det samlede antal konfigurerede forbindelser (%d) er større end "
|
||||
"operativsystemets grænse (512); downloadingen vil crashe, hvis alle "
|
||||
"forbindelser bliver aktive"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Påbegynder lukning af SABnzbd"
|
||||
@@ -776,6 +794,9 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"Direct Write-tilstand er blevet deaktiveret, fordi %s ikke understøtter "
|
||||
"sparse-filer. For detaljer og mulige løsninger, se: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -884,13 +905,14 @@ msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
"Internetbåndbredde for IPv4 afviger markant fra IPv6: %f MB/s mod %f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "Advarsler"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inaktiv"
|
||||
@@ -921,8 +943,8 @@ msgstr "Hastighedsbegrænsning"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pause"
|
||||
|
||||
@@ -932,8 +954,8 @@ msgid "min"
|
||||
msgstr "minut"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Genoptag"
|
||||
|
||||
@@ -942,7 +964,7 @@ msgstr "Genoptag"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Scan overvåget mappe"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Læs alle RSS feeds"
|
||||
|
||||
@@ -954,17 +976,17 @@ msgstr "Færdig mappe"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Ufuldstændig mappe"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Fejlfinding"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Genstart"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Genstart uden login"
|
||||
|
||||
@@ -1161,6 +1183,11 @@ msgstr "Forsøger 7zip med adgangskode \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "se logfil"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
"Udpakning sprunget over, TAR-understøttelse kræver Python 3.12 eller nyere"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Hurtig kontrollerende"
|
||||
@@ -1343,7 +1370,7 @@ msgid "Open folder"
|
||||
msgstr "Åbn mappe"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Åben færdig mappe"
|
||||
|
||||
@@ -1482,7 +1509,8 @@ msgstr "PROPAGATING %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Hentede i %s med et gennemsnit på %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Alder"
|
||||
@@ -1803,6 +1831,10 @@ msgstr "Ingen matchende tidligere rar-fil for %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Fjernelse af %s mislykkedes"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1827,10 +1859,6 @@ msgstr "Modtog en DBus-undtagelse %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Tom RSS post blev fundet (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Inkompatibel feed"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1852,50 +1880,15 @@ msgstr "Mislykkedes at hente RSS fra %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Server %s bruger et upålideligt HTTPS-certifikat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS Feed %s er tom"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Vis grænseflade"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Inkompatibel feed"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pause i"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pause 5 minutter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pause 15 minutter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pause 30 minutter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pause 1 time"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pause 3 timer"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pause 6 timer"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Luk ned"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Tilbageværende"
|
||||
|
||||
@@ -1903,6 +1896,44 @@ msgstr "Tilbageværende"
|
||||
msgid "Add NZB"
|
||||
msgstr "Tilføj NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Vis grænseflade"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Luk ned"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pause i"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pause 5 minutter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pause 15 minutter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pause 30 minutter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pause 1 time"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pause 3 timer"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pause 6 timer"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2972,11 +3003,13 @@ msgstr "Rydningsliste"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Listen over filtypenavne, der skal slettes efter download.<br />For "
|
||||
"eksempel: <b>nfo</b> eller <b>nfo, sfv</b>"
|
||||
"Liste over filendelser, filnavne eller mønstre, der skal slettes efter "
|
||||
"download.<br />Eksempler: <b>nfo, sfv</b> (endelser) eller <b>thumbs.db</b> "
|
||||
"(filnavne) eller <b>*.tmp, images/*, */test.jpg</b> (mønstre)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3356,6 +3389,9 @@ msgid ""
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
"Forsøg kun at udpakke jobs, der har bestået verifikationen. Hvis dette er "
|
||||
"slået fra, markeres alle jobs som Færdig og flyttes til Færdig-mappen, "
|
||||
"selvom de er ufuldstændige."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3449,6 +3485,8 @@ msgstr "Aktiver SFV-baseret kontrol"
|
||||
msgid ""
|
||||
"If no par2 files are available, use sfv files (if present) to verify files"
|
||||
msgstr ""
|
||||
"Hvis ingen par2-filer er tilgængelige, brug da sfv-filer (hvis til stede) "
|
||||
"til at verificere filer"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
@@ -3523,8 +3561,10 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr "Sortér automatisk jobs i køen, når et nyt job tilføjes."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgstr "Køen vil sortere hver 30. sekund, hvis % downloadet er valgt."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3865,7 +3905,7 @@ msgstr "Aktivere"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Articles per request"
|
||||
msgstr ""
|
||||
msgstr "Artikler pr. forespørgsel"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -3873,6 +3913,9 @@ msgid ""
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
"Anmod om flere artikler pr. forbindelse uden først at vente på hvert "
|
||||
"svar.<br />Dette kan forbedre downloadhastighederne, især på forbindelser "
|
||||
"med højere latens."
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3961,10 +4004,6 @@ msgstr "Læs Feed"
|
||||
msgid "Force Download"
|
||||
msgstr "Gennemtving download"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Anvend filtre"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4649,6 +4688,14 @@ msgstr "Slet"
|
||||
msgid "Filename"
|
||||
msgstr "Filnavn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Ledig diskplads"
|
||||
@@ -4657,6 +4704,10 @@ msgstr "Ledig diskplads"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Midlertidig mappe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Multi-operationer"
|
||||
@@ -4665,6 +4716,10 @@ msgstr "Multi-operationer"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Hold Skiftetasten nede for at vælge et område"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Tjek alle"
|
||||
@@ -4909,6 +4964,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "Sortér efter % downloadet <small>Mest→Mindst</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortere efter alder <small>Ældst→Nyeste</small>"
|
||||
|
||||
+133
-72
@@ -20,7 +20,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
|
||||
@@ -138,7 +138,6 @@ msgstr "SABnzbd %s gestartet"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd wurde beendet"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signal %s erkannt. Wird gespeichert und beendet …"
|
||||
@@ -171,6 +170,8 @@ msgstr ""
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Windows ARM version of SABnzbd is available from our Downloads page!"
|
||||
msgstr ""
|
||||
"Eine Windows-ARM-Version von SABnzbd ist auf unserer Downloads-Seite "
|
||||
"verfügbar!"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
@@ -274,6 +275,10 @@ msgstr ""
|
||||
"Unbekanntes SSL-Protokoll: SSL deaktivieren oder alternativen Port "
|
||||
"versuchen."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Die Verbindung konnte nicht überprüft werden. (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Server benötigt ein Benutzername und ein Passwort."
|
||||
@@ -293,9 +298,13 @@ msgstr ""
|
||||
"Zu viele Verbindungen. Bitte halten Sie die Downloads an oder versuchen Sie "
|
||||
"es später erneut."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Die Verbindung konnte nicht überprüft werden. (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -582,8 +591,8 @@ msgid "Resuming"
|
||||
msgstr "Fortgesetzt"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Angehalten"
|
||||
|
||||
@@ -643,6 +652,16 @@ msgstr "Anmelden beim Server fehlgeschlagen. %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Fehler beim Verbinden mit %s@%s, Meldung = %s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"Die Gesamtzahl der konfigurierten Verbindungen (%d) ist größer als das Limit"
|
||||
" des Betriebssystems (512); das Herunterladen stürzt ab, wenn alle "
|
||||
"Verbindungen aktiv werden"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Wird beendet …"
|
||||
@@ -815,6 +834,9 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"Der Direct-Write-Modus wurde deaktiviert, weil %s keine Sparse-Dateien "
|
||||
"unterstützt. Einzelheiten und mögliche Lösungen finden Sie unter: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -924,13 +946,15 @@ msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
"Internet Bandbreite von IPv4 weicht deutlich von IPv6 ab: %f MB/s gegenüber "
|
||||
"%f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "Warnungen"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Leerlauf"
|
||||
@@ -961,8 +985,8 @@ msgstr "Geschwindigkeit begrenzen"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Anhalten"
|
||||
|
||||
@@ -972,8 +996,8 @@ msgid "min"
|
||||
msgstr "Minuten"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Fortsetzen"
|
||||
|
||||
@@ -982,7 +1006,7 @@ msgstr "Fortsetzen"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Überwachter Ordner lesen"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Alle RSS-Feeds lesen"
|
||||
|
||||
@@ -994,17 +1018,17 @@ msgstr "Fertige Downloads"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Unfertige Download"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Fehler suchen"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Neu starten"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Neustart ohne Anmeldung"
|
||||
|
||||
@@ -1204,6 +1228,11 @@ msgstr "Versuche 7zip mit Passwort \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "Beachten Sie die Protokolldatei"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
"Entpacken übersprungen, TAR-Unterstützung erfordert Python 3.12 oder neuer"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Schnelle Überprüfung"
|
||||
@@ -1389,7 +1418,7 @@ msgid "Open folder"
|
||||
msgstr "Ordner öffnen"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Öffne Zielverzeichnis"
|
||||
|
||||
@@ -1532,7 +1561,8 @@ msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr ""
|
||||
"Heruntergeladen in %s mit einer Durchschnittsgeschwindigkeit von %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Alter"
|
||||
@@ -1862,6 +1892,10 @@ msgstr "Keine zugehörige frühere RAR-Datei für %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Entfernen von %s fehlgeschlagen"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1886,10 +1920,6 @@ msgstr "DBus-Ausnahmefehler empfangen %s "
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Leerer RSS-Feed gefunden: %s"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Inkompatibeler RSS-Feed"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1911,50 +1941,15 @@ msgstr "Abrufen des RSS-Feeds von %s fehlgeschlagen: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Der Server %s nutzt ein nicht vertrauenswürdiges HTTPS-Zertifikat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS-Feed %s war leer"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Interface anzeigen"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Inkompatibeler RSS-Feed"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Anhalten für"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "5 Minuten anhalten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "15 Minuten anhalten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "30 Minuten anhalten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Eine Stunde anhalten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "3 Stunden anhalten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "6 Stunden anhalten"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Beenden"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Verbleibend"
|
||||
|
||||
@@ -1962,6 +1957,44 @@ msgstr "Verbleibend"
|
||||
msgid "Add NZB"
|
||||
msgstr "NZB hinzufügen"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Interface anzeigen"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Beenden"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Anhalten für"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "5 Minuten anhalten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "15 Minuten anhalten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "30 Minuten anhalten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Eine Stunde anhalten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "3 Stunden anhalten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "6 Stunden anhalten"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -3043,11 +3076,14 @@ msgstr "Unerwünschte Dateien"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Liste der Dateiendungen, die nach dem Download gelöscht werden sollen.<br "
|
||||
"/>Zum Beispiel:<b>nfo</b> or <b>nfo,sfv</b>"
|
||||
"Liste von Dateierweiterungen, Dateinamen oder Mustern, die nach dem Download"
|
||||
" gelöscht werden sollen.<br />Beispiele: <b>nfo, sfv</b> (Erweiterungen) "
|
||||
"oder <b>thumbs.db</b> (Dateinamen) oder <b>*.tmp, images/*, */test.jpg</b> "
|
||||
"(Muster)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3444,6 +3480,10 @@ msgid ""
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
"Nur Aufträge entpacken, welche die Überprüfung bestanden haben. Wenn "
|
||||
"deaktiviert, werden alle Aufträge als Fertiggestellt markiert und in den "
|
||||
"\"Abgeschlossene Downloads\"-Ordner verschoben, auch wenn sie unvollständig "
|
||||
"sind."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3539,6 +3579,8 @@ msgstr "SFV-basierte Überprüfung aktivieren"
|
||||
msgid ""
|
||||
"If no par2 files are available, use sfv files (if present) to verify files"
|
||||
msgstr ""
|
||||
"Wenn keine par2-Dateien verfügbar sind, sfv-Dateien (falls vorhanden) zur "
|
||||
"Überprüfung der Dateien verwenden"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
@@ -3619,10 +3661,10 @@ msgstr ""
|
||||
"Warteschlange automatisch sortieren wenn ein neuer Job hinzugefügt wird."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
"Die Warteschlange wird alle 30 Sekunden neu sortiert, wenn % "
|
||||
"heruntergeladen, ausgewählt ist."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3973,7 +4015,7 @@ msgstr "Aktivieren"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Articles per request"
|
||||
msgstr ""
|
||||
msgstr "Artikel pro Anfrage"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -3981,6 +4023,9 @@ msgid ""
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
"Mehrere Artikel pro Verbindung anfordern, ohne zuerst auf jede Antwort zu "
|
||||
"warten.<br />Dies kann die Download-Geschwindigkeit verbessern, insbesondere"
|
||||
" bei Verbindungen mit höherer Latenz."
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4069,10 +4114,6 @@ msgstr "Feed lesen"
|
||||
msgid "Force Download"
|
||||
msgstr "Download erzwingen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Filter übernehmen"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4765,6 +4806,14 @@ msgstr "Löschen"
|
||||
msgid "Filename"
|
||||
msgstr "Dateiname"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Freier Speicherplatz"
|
||||
@@ -4773,6 +4822,10 @@ msgstr "Freier Speicherplatz"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Temporärer Ordner"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Mehrfach-Funktionen"
|
||||
@@ -4781,6 +4834,10 @@ msgstr "Mehrfach-Funktionen"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Shift-Taste gedrückt halten, um einen ganzen Bereich auszuwählen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Alle auswählen"
|
||||
@@ -5026,6 +5083,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "Sortiere nach % heruntergeladen <small>Viel→Wenig</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortieren nach Alter <small>Älteste→Neuste</small>"
|
||||
|
||||
+134
-71
@@ -9,7 +9,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
|
||||
@@ -127,7 +127,6 @@ msgstr "SABnzbd %s comenzó"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Cierre de SABnzbd terminado"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Señal %s capturado, guardando y saliendo..."
|
||||
@@ -160,6 +159,8 @@ msgstr ""
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Windows ARM version of SABnzbd is available from our Downloads page!"
|
||||
msgstr ""
|
||||
"¡La versión Windows ARM de SABnzbd está disponible en nuestra página de "
|
||||
"descargas!"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
@@ -259,6 +260,10 @@ msgstr ""
|
||||
"Protocolo SSL desconocido: intente desabilitar el SSL o conectarse a un "
|
||||
"puerto diferente."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "No se pudo determinar el resultado de la conexión (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "El servidor necesita usuario y contraseña."
|
||||
@@ -276,9 +281,13 @@ msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
"Demasiadas conexiones; pause las descargas o inténtelo de nuevo más tarde"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "No se pudo determinar el resultado de la conexión (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -567,8 +576,8 @@ msgid "Resuming"
|
||||
msgstr "Reanudando"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "En pausa"
|
||||
|
||||
@@ -628,6 +637,16 @@ msgstr "Registraccion fallo para servidor %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Ha fallado la conexión a %s@%s, el mensaje=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"El número total de conexiones configuradas (%d) es mayor que el límite del "
|
||||
"sistema operativo (512); la descarga se bloqueará si todas las conexiones se"
|
||||
" activan"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Apagando"
|
||||
@@ -799,6 +818,9 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"El modo Direct Write se ha desactivado porque %s no admite archivos "
|
||||
"dispersos. Para más detalles y posibles soluciones, consulta: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -908,13 +930,15 @@ msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
"El ancho de banda de internet de IPv4 difiere significativamente del de "
|
||||
"IPv6: %f MB/s frente a %f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "Advertencias"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inactivo"
|
||||
@@ -945,8 +969,8 @@ msgstr "Limitar Velocidad"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pausar"
|
||||
|
||||
@@ -956,8 +980,8 @@ msgid "min"
|
||||
msgstr "mín"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Reanudar"
|
||||
|
||||
@@ -966,7 +990,7 @@ msgstr "Reanudar"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Escanear directorio bajo observación"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Leer todos los canales RSS"
|
||||
|
||||
@@ -978,17 +1002,17 @@ msgstr "Carpeta Completa"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Carpeta Incompleta"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Resolver un problema"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Reiniciar sin sesión iniciada"
|
||||
|
||||
@@ -1192,6 +1216,12 @@ msgstr "Tratando 7zip con la contraseña \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "ver fichero de log"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
"Descompresión omitida, la compatibilidad con TAR requiere Python 3.12 o "
|
||||
"posterior"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Chequeo Rápido"
|
||||
@@ -1379,7 +1409,7 @@ msgid "Open folder"
|
||||
msgstr "Abrir carpeta"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Abrir todo el folder"
|
||||
|
||||
@@ -1522,7 +1552,8 @@ msgstr "PROPAGANDO %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Descargado en %s a una media de %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Edad"
|
||||
@@ -1849,6 +1880,10 @@ msgstr "No hay un archivo rar anterior correspondiente para %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Error al eliminar %s"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1873,10 +1908,6 @@ msgstr "Se ha recibido una excepción DBus %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Entrada RSS vacía (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Canal Incorrecto"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1900,50 +1931,15 @@ msgstr "Error al recuperar RSS desde %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "El servidor %s utiliza un certificado HTTPS no fiable"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "El canal RSS %s estaba vacío"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Mostrar interfaz"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Canal Incorrecto"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausar durante"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausar 5 minutos"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pausar 15 minutos"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausar 30 minutos"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausar 1 hora"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausar 3 horas"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausar 6 horas"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Apagar"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Restante"
|
||||
|
||||
@@ -1951,6 +1947,44 @@ msgstr "Restante"
|
||||
msgid "Add NZB"
|
||||
msgstr "Añadir NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Mostrar interfaz"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Apagar"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausar durante"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausar 5 minutos"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pausar 15 minutos"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausar 30 minutos"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausar 1 hora"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausar 3 horas"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausar 6 horas"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -3026,11 +3060,14 @@ msgstr "Lista de elementos a limpiar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Lista de extensiones de archivo que se deben eliminar después de la descarga"
|
||||
" <br /> Por ejemplo : . <b>nfo</ b> o <b>nfo, sfv < /b>"
|
||||
"Lista de extensiones de archivo, nombres de archivo o patrones que se deben "
|
||||
"eliminar tras la descarga.<br />Ejemplos: <b>nfo, sfv</b> (extensiones) o "
|
||||
"<b>thumbs.db</b> (nombres de archivo) o <b>*.tmp, images/*, */test.jpg</b> "
|
||||
"(patrones)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3420,6 +3457,9 @@ msgid ""
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
"Intentar descomprimir solo los trabajos que pasaron la etapa de "
|
||||
"verificación. Si se desactiva, todos los trabajos se marcarán como "
|
||||
"Completado y se moverán a la carpeta Completa aunque estén incompletos."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3515,6 +3555,8 @@ msgstr "Habilitar verificacion basada en SFV"
|
||||
msgid ""
|
||||
"If no par2 files are available, use sfv files (if present) to verify files"
|
||||
msgstr ""
|
||||
"Si no hay archivos par2 disponibles, usar archivos sfv (si existen) para "
|
||||
"verificar los archivos"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
@@ -3592,8 +3634,10 @@ msgstr ""
|
||||
"nueva."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgstr "La cola se reordenará cada 30 segundos si se selecciona % descargado."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3943,7 +3987,7 @@ msgstr "Habilitar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Articles per request"
|
||||
msgstr ""
|
||||
msgstr "Artículos por solicitud"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -3951,6 +3995,9 @@ msgid ""
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
"Solicitar varios artículos por conexión sin esperar primero cada "
|
||||
"respuesta.<br />Esto puede mejorar la velocidad de descarga, especialmente "
|
||||
"en conexiones con mayor latencia."
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4039,10 +4086,6 @@ msgstr "Leer Fuente"
|
||||
msgid "Force Download"
|
||||
msgstr "Forzar Descarga"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Aplicar filtros"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4734,6 +4777,14 @@ msgstr "Eliminar"
|
||||
msgid "Filename"
|
||||
msgstr "Nombre de archivo"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Espacio libre"
|
||||
@@ -4742,6 +4793,10 @@ msgstr "Espacio libre"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Carpeta temporal"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Op.Múltiples"
|
||||
@@ -4750,6 +4805,10 @@ msgstr "Op.Múltiples"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Mantén presionada la tecla shift para seleccionar un rango"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Marcar todo"
|
||||
@@ -4997,6 +5056,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "Ordenar por % descargado <small>Mayor→Menor</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Ordenar por Fecha <small>Más viejo→Más nuevo</small>"
|
||||
|
||||
+108
-69
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
|
||||
@@ -119,7 +119,6 @@ msgstr "SABnzbd %s käynnistetty"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd sammutus valmis"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signaali %s kaapattu, tallennetaan ja lopetetaan..."
|
||||
@@ -239,6 +238,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Tuntematon SSL protokolla: Kokeile ottaa SSL käytöstä tai vaihda porttia."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Yhteystestin lopputulosta ei voitu määrittää (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Palvelin vaatii käyttäjänimen ja salasanan."
|
||||
@@ -255,9 +258,13 @@ msgstr "Varmennus epäonnistui, tarkista käyttäjänimi/salasana."
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr "Liikaa yhteyksiä, keskeytä lataaminen tai yritä myöhemmin uudelleen"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Yhteystestin lopputulosta ei voitu määrittää (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -522,8 +529,8 @@ msgid "Resuming"
|
||||
msgstr "Jatketaan"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Keskeytetty"
|
||||
|
||||
@@ -580,6 +587,13 @@ msgstr "Kirjautuminen palvelimelle %s epäonnistui [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Yhdistäminen %s@%s epäonnistui, viesti=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Sammutetaan"
|
||||
@@ -857,7 +871,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Varoitukset"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Toimeton"
|
||||
@@ -888,8 +902,8 @@ msgstr "Nopeusrajoitus"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Keskeytä"
|
||||
|
||||
@@ -899,8 +913,8 @@ msgid "min"
|
||||
msgstr "minuutti"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Jatka"
|
||||
|
||||
@@ -909,7 +923,7 @@ msgstr "Jatka"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Tarkista vahdittu kansio"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Lue kaikki RSS syötteet"
|
||||
|
||||
@@ -921,17 +935,17 @@ msgstr "Valmistuneet-kansio"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Lataukset-kansio"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Vianmääritys"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Käynnistä uudelleen"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Käynnistä uudelleen ilman kirjautumista"
|
||||
|
||||
@@ -1124,6 +1138,10 @@ msgstr "Yritetään purkaa 7zip arkistoa salasanalla \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "katso lokitiedosto"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Pikatarkistetaan"
|
||||
@@ -1298,7 +1316,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Avaa valmistuneet-kansio"
|
||||
|
||||
@@ -1437,7 +1455,8 @@ msgstr "LEVITETÄÄN %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Ladattiin ajassa %s keskilatausnopeudella %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Ikä"
|
||||
@@ -1756,6 +1775,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "%s poistaminen epäonnistui"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1780,10 +1803,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Tyhjä RSS kohde löytyi (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Puutteellinen syöte"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1805,50 +1824,15 @@ msgstr "RSS noutaminen epäonnistui kohteesta %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Palvelin %s käyttää epäluotettavaa HTTPS sertifikaattia"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS syöte %s oli tyhjä"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Näytä käyttöliittymä"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Puutteellinen syöte"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Keskeytä ajaksi"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Keskeytä 5:ksi minuutiksi"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Keskeytä 15:ksi minuutiksi"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Keskeytä 30:ksi minuutiksi"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Keskeytä tunniksi"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Keskeytä 3:ksi tunniksi"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Keskeytä 6:ksi tunniksi"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Sammuta"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Jäljellä"
|
||||
|
||||
@@ -1856,6 +1840,44 @@ msgstr "Jäljellä"
|
||||
msgid "Add NZB"
|
||||
msgstr "Lisää NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Näytä käyttöliittymä"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Sammuta"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Keskeytä ajaksi"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Keskeytä 5:ksi minuutiksi"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Keskeytä 15:ksi minuutiksi"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Keskeytä 30:ksi minuutiksi"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Keskeytä tunniksi"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Keskeytä 3:ksi tunniksi"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Keskeytä 6:ksi tunniksi"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2917,11 +2939,10 @@ msgstr "Puhdistuslista"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Lista tiedostopäätteistä jotka poistetaan latauksen valmistuttua.<br "
|
||||
"/>Esimerkiksi: <b>nfo</b> tai <b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3462,7 +3483,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3881,10 +3904,6 @@ msgstr "Lue syöte"
|
||||
msgid "Force Download"
|
||||
msgstr "Pakota lataus"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4550,6 +4569,14 @@ msgstr "Poista"
|
||||
msgid "Filename"
|
||||
msgstr "Tiedostonimi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Vapaa tila"
|
||||
@@ -4558,6 +4585,10 @@ msgstr "Vapaa tila"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Väliaikaiskansio"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Monioperaatiot"
|
||||
@@ -4566,6 +4597,10 @@ msgstr "Monioperaatiot"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Paina vaihto-näppäintä pohjassa valitaksesi alueen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Valitse kaikki"
|
||||
@@ -4806,6 +4841,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Järjestä iän mukaan <small>Vanhin→Uusin</small>"
|
||||
|
||||
+123
-71
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Fred L <88com88@gmail.com>, 2026\n"
|
||||
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
|
||||
@@ -128,7 +128,6 @@ msgstr "SABnzbd %s démarré"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Arrêt de SABnzbd terminé"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signal %s intercepté, enregistrement et fermeture en cours..."
|
||||
@@ -265,6 +264,10 @@ msgstr ""
|
||||
"Protocole SSL inconnu: essayez de désactiver SSL ou de vous connecter sur un"
|
||||
" autre port."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Impossible de déterminer le résultat de la connexion (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Le serveur requiert un identifiant et un mot de passe."
|
||||
@@ -283,9 +286,17 @@ msgstr ""
|
||||
"Trop de connexions, veuillez mettre en pause le téléchargement ou essayer "
|
||||
"plus tard"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Impossible de déterminer le résultat de la connexion (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
"Le serveur %s a mis %d ms à répondre. Sur les connexions à forte latence, "
|
||||
"augmenter le paramètre « Articles par requête » à une valeur comprise entre "
|
||||
"5 et 10 peut améliorer la vitesse de téléchargement. Voir : "
|
||||
"https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -573,8 +584,8 @@ msgid "Resuming"
|
||||
msgstr "Reprise en cours"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "En pause"
|
||||
|
||||
@@ -634,6 +645,16 @@ msgstr "Échec de la connexion au serveur %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "La connexion à %s@%s a échoué, message=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"Le nombre total de connexions configurées (%d) est supérieur à la limite du "
|
||||
"système d'exploitation (512) ; le téléchargement va s'interrompre si toutes "
|
||||
"les connexions deviennent actives"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Arrêt en cours..."
|
||||
@@ -926,7 +947,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Avertissements"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "A l'arrêt"
|
||||
@@ -957,8 +978,8 @@ msgstr "Limiter la vitesse"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Mettre en pause"
|
||||
|
||||
@@ -968,8 +989,8 @@ msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Reprendre"
|
||||
|
||||
@@ -978,7 +999,7 @@ msgstr "Reprendre"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Analyser le dossier surveillé"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Lire tous les flux RSS"
|
||||
|
||||
@@ -990,17 +1011,17 @@ msgstr "Dossier des téléchargements terminés"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Dossier incomplet"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Résoudre les problèmes"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Redémarrer"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Redémarrer sans se connecter"
|
||||
|
||||
@@ -1203,6 +1224,12 @@ msgstr "Tentative 7zip avec le mot de passe \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "voir le journal"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
"Décompression ignorée, la prise en charge des fichiers TAR nécessite Python "
|
||||
"3.12 ou une version ultérieure"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Contrôle rapide"
|
||||
@@ -1384,7 +1411,7 @@ msgid "Open folder"
|
||||
msgstr "Ouvrir le dossier"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Ouvrir le dossier des complets"
|
||||
|
||||
@@ -1523,7 +1550,8 @@ msgstr "PROPAGATION %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Téléchargé en %s à %sO/s de moyenne"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Âge"
|
||||
@@ -1852,6 +1880,10 @@ msgstr "Aucun fichier rar antérieur correspondant pour %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Échec de la suppression de %s"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr "Suppression de %s fichiers comportant des extensions indésirables"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1876,10 +1908,6 @@ msgstr "Exception DBus reçue %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Entrée vide de flux RSS trouvée (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Flux incompatible"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1902,50 +1930,15 @@ msgstr "Échec de la récupération RSS de %s : %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Le serveur %s utilise un certificat de sécurité HTTPS non authentifié"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "Le flux RSS %s était vide"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Afficher l’interface"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Flux incompatible"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pause de"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Mettre en pause pendant 5 minutes"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Mettre en pause pendant 15 minutes"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Mettre en pause pendant 30 minutes"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Mettre en pause pendant 1 heure"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Mettre en pause pendant 3 heures"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Mettre en pause pendant 6 heures"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Arrêter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Restant"
|
||||
|
||||
@@ -1953,6 +1946,44 @@ msgstr "Restant"
|
||||
msgid "Add NZB"
|
||||
msgstr "Ajouter NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Afficher l’interface"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Arrêter"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pause de"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Mettre en pause pendant 5 minutes"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Mettre en pause pendant 15 minutes"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Mettre en pause pendant 30 minutes"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Mettre en pause pendant 1 heure"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Mettre en pause pendant 3 heures"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Mettre en pause pendant 6 heures"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -3033,11 +3064,14 @@ msgstr "Nettoyer la liste"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Liste des extensions de fichiers qui doivent être supprimés après le "
|
||||
"téléchargement.<br /><Par exemple: <b>nfo</b> ou <b>nfo, sfv</b>"
|
||||
"Liste des extensions, noms de fichiers ou modèles à supprimer après le "
|
||||
"téléchargement.<br />Exemples : <b>nfo, sfv</b> (extensions) ou "
|
||||
"<b>thumbs.db</b> (noms de fichiers) ou <b>*.tmp, images/*, */test.jpg</b> "
|
||||
"(modèles)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3612,10 +3646,12 @@ msgstr ""
|
||||
"ajoutée."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
"La file d'attente sera triée toutes les 30 secondes si le % de "
|
||||
"téléchargement est sélectionné."
|
||||
"La file d'attente sera retriée toutes les 30 secondes si % téléchargé ou "
|
||||
"Taille restante est sélectionné."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -4066,10 +4102,6 @@ msgstr "Lire le flux RSS"
|
||||
msgid "Force Download"
|
||||
msgstr "Forcer le téléchargement"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Appliquer les filtres"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4763,6 +4795,14 @@ msgstr "Supprimer"
|
||||
msgid "Filename"
|
||||
msgstr "Nom de fichier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr "Afficher/masquer le menu de navigation de SABnzbd"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr "Ouvrir le menu principal de SABnzbd"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Espace libre"
|
||||
@@ -4771,6 +4811,10 @@ msgstr "Espace libre"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Dossier temporaire"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr "Effacer la recherche"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Multi-Operations"
|
||||
@@ -4779,6 +4823,10 @@ msgstr "Multi-Operations"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Maintenez la touche Maj pour sélectionner une plage"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr "Sélectionner la tâche"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Tout sélectionner"
|
||||
@@ -5027,6 +5075,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "Trier par % téléchargé <small>Most→Least</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr "Trier par Taille restante <small>Plus petit→Plus grand</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Trier par Age <small>Moins récent→Plus récent</small>"
|
||||
|
||||
+121
-70
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
|
||||
@@ -115,7 +115,6 @@ msgstr "SABnzbd %s התחיל"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "כיבוי SABnzbd הסתיים"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "אות %s נתפס, שומר ויוצא…"
|
||||
@@ -243,6 +242,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr "פרוטוקול SSL בלתי ידוע: נסה להשבית SSL או להתחבר על פתחה שונה."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "(%s) לא היה ניתן לקבוע תוצאת חיבור"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr ".השרת דורש שם משתמש וסיסמה"
|
||||
@@ -259,9 +262,13 @@ msgstr "אימות נכשל, בדוק שם משתמש/סיסמה."
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr "יותר מדי חיבורים, אנא השהה הורדה או נסה שוב מאוחר יותר"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "(%s) לא היה ניתן לקבוע תוצאת חיבור"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -534,8 +541,8 @@ msgid "Resuming"
|
||||
msgstr "ממשיך"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "מושהה"
|
||||
|
||||
@@ -593,6 +600,15 @@ msgstr "כניסה נכשלה עבור שרת %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "התחברות אל %s@%s נכשלה, הודעה=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"המספר הכולל של החיבורים שהוגדרו (%d) גדול ממגבלת מערכת ההפעלה (512), ההורדה "
|
||||
"תקרוס אם כל החיבורים יהפכו לפעילים"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "מכבה"
|
||||
@@ -757,6 +773,8 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"מצב Direct Write הושבת מכיוון ש-%s אינו תומך בקבצים דלילים. לפרטים ולפתרונות"
|
||||
" אפשריים, ראה: https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -862,13 +880,14 @@ msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
"רוחב פס האינטרנט של IPv4 שונה משמעותית מזה של IPv6: %f MB/s לעומת %f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "אזהרות"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "מנוחה"
|
||||
@@ -899,8 +918,8 @@ msgstr "הגבל מהירות"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "השהה"
|
||||
|
||||
@@ -910,8 +929,8 @@ msgid "min"
|
||||
msgstr "דקה"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "המשך"
|
||||
|
||||
@@ -920,7 +939,7 @@ msgstr "המשך"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "סרוק תיקייה מושגחת"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "קרא את כל הזנות RSS"
|
||||
|
||||
@@ -932,17 +951,17 @@ msgstr "תיקייה שלמה"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "תיקייה בלתי שלמה"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "פתור בעיות"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "הפעל מחדש"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "הפעל מחדש ללא כניסה"
|
||||
|
||||
@@ -1138,6 +1157,10 @@ msgstr "מנסה 7zip עם הסיסמה \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "ראה קובץ יומן"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr "דילוג על פריקה, תמיכת TAR מחייבת Python 3.12 ומעלה"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "בדיקה זריזה"
|
||||
@@ -1315,7 +1338,7 @@ msgid "Open folder"
|
||||
msgstr "פתח תיקייה"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "פתח תיקיית השלמה"
|
||||
|
||||
@@ -1454,7 +1477,8 @@ msgstr "מפיץ %s דקות"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "ירד תוך %s בממוצע של %s ב/ש"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "גיל"
|
||||
@@ -1775,6 +1799,10 @@ msgstr "אין קובץ rar קודם תואם עבור %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "הסרת %s נכשלה"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1799,10 +1827,6 @@ msgstr "חריגת DBus התקבלה %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "כניסת RSS ריקה נמצאה (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "הזנה בלתי תואמת"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1824,50 +1848,15 @@ msgstr "כישלון באחזור RSS מן %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "השרת %s משתמש בתעודת HTTPS בלתי מהימנה"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "הזנת RSS %s הייתה ריקה"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "הראה ממשק"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "הזנה בלתי תואמת"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "השהה למשך"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "השהה למשך 5 דקות"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "השהה למשך 15 דקות"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "השהה למשך 30 דקות"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "השהה למשך שעה"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "השהה למשך 3 שעות"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "השהה למשך 6 שעות"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "כבה"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "נותר"
|
||||
|
||||
@@ -1875,6 +1864,44 @@ msgstr "נותר"
|
||||
msgid "Add NZB"
|
||||
msgstr "הוסף NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "הראה ממשק"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "כבה"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "השהה למשך"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "השהה למשך 5 דקות"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "השהה למשך 15 דקות"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "השהה למשך 30 דקות"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "השהה למשך שעה"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "השהה למשך 3 שעות"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "השהה למשך 6 שעות"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2937,11 +2964,13 @@ msgstr "רשימת ניקוי"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"רשימת סיומות קבצים של קבצים שצריכים להימחק לאחר הורדה.<br />לדוגמה: "
|
||||
"<b>nfo</b> או <b>nfo, sfv</b>"
|
||||
"רשימת סיומות קבצים, שמות קבצים או תבניות שיש למחוק לאחר ההורדה.<br "
|
||||
"/>דוגמאות: <b>nfo, sfv</b> (סיומות) או <b>thumbs.db</b> (שמות קבצים) או "
|
||||
"<b>*.tmp, images/*, */test.jpg</b> (תבניות)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3308,6 +3337,8 @@ msgid ""
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
"נסה לפרוק רק עבודות שעברו את שלב הווידוא. אם מבוטל, כל העבודות יסומנו "
|
||||
"כ\"הושלם\" ויועברו לתיקייה השלמה גם אם הן אינן שלמות."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3470,8 +3501,10 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr "מיין עבודות בתור באופן אוטומטי כאשר עבודה חדשה מתווספת."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgstr "התור ימוין כל 30 שניות אם האפשרות % ירד נבחרה."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3809,6 +3842,8 @@ msgid ""
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
"בקש מספר מאמרים לכל חיבור מבלי להמתין תחילה לכל תגובה.<br />הדבר עשוי לשפר "
|
||||
"את מהירויות ההורדה, במיוחד בחיבורים בעלי השהיה גבוהה."
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3896,10 +3931,6 @@ msgstr "קרא הזנה"
|
||||
msgid "Force Download"
|
||||
msgstr "אלץ הורדה"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "החל מסננים"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4575,6 +4606,14 @@ msgstr "מחק"
|
||||
msgid "Filename"
|
||||
msgstr "שם קובץ"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "שטח פנוי"
|
||||
@@ -4583,6 +4622,10 @@ msgstr "שטח פנוי"
|
||||
msgid "Temp Folder"
|
||||
msgstr "תיקייה זמנית"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "רב־תפעולים"
|
||||
@@ -4591,6 +4634,10 @@ msgstr "רב־תפעולים"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "החזק את מקש Shift כדי לבחור טווח"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "סמן הכל"
|
||||
@@ -4835,6 +4882,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "מיין לפי % ירד <small>הכי הרבה→הכי מעט</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "מיין לפי גיל <small>החדש ביותר←הישן ביותר</small>"
|
||||
|
||||
+130
-71
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Italian (https://app.transifex.com/sabnzbd/teams/111101/it/)\n"
|
||||
@@ -122,7 +122,6 @@ msgstr "SABnzbd %s avviato"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Arresto di SABnzbd terminato"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Segnale %s ricevuto, salvataggio e uscita in corso..."
|
||||
@@ -154,6 +153,8 @@ msgstr ""
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Windows ARM version of SABnzbd is available from our Downloads page!"
|
||||
msgstr ""
|
||||
"La versione Windows ARM di SABnzbd è disponibile nella nostra pagina dei "
|
||||
"download!"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
@@ -256,6 +257,10 @@ msgstr ""
|
||||
"Protocollo SSL sconosciuto: prova a disabilitare SSL o a connetterti su una "
|
||||
"porta diversa."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Impossibile determinare il risultato della connessione (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Il server richiede nome utente e password."
|
||||
@@ -274,9 +279,13 @@ msgstr ""
|
||||
"Troppe connessioni, si prega di mettere in pausa il download o riprovare più"
|
||||
" tardi"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Impossibile determinare il risultato della connessione (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -564,8 +573,8 @@ msgid "Resuming"
|
||||
msgstr "Ripresa in corso"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "In pausa"
|
||||
|
||||
@@ -625,6 +634,16 @@ msgstr "Accesso fallito per il server %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Connessione a %s@%s fallita, messaggio=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"Il numero totale di connessioni configurate (%d) è maggiore del limite del "
|
||||
"sistema operativo (512); il download andrà in crash se tutte le connessioni "
|
||||
"diventano attive"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Spegnimento in corso"
|
||||
@@ -795,6 +814,9 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"La modalità Direct Write è stata disabilitata perché %s non supporta i file "
|
||||
"sparsi. Per dettagli e possibili soluzioni, vedi: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -904,13 +926,15 @@ msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
"La larghezza di banda Internet di IPv4 è significativamente diversa da IPv6:"
|
||||
" %f MB/s contro %f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "Avvisi"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inattivo"
|
||||
@@ -941,8 +965,8 @@ msgstr "Limita velocità"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pausa"
|
||||
|
||||
@@ -952,8 +976,8 @@ msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Riprendi"
|
||||
|
||||
@@ -962,7 +986,7 @@ msgstr "Riprendi"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Scansiona cartella sorvegliata"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Leggi tutti i feed RSS"
|
||||
|
||||
@@ -974,17 +998,17 @@ msgstr "Cartella Completi"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Cartella Incompleti"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Risoluzione problemi"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Riavvia"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Riavvia senza login"
|
||||
|
||||
@@ -1181,6 +1205,10 @@ msgstr "Tentativo di 7zip con password \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "vedere file di log"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr "Estrazione saltata, il supporto TAR richiede Python 3.12 o successivo"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Controllo rapido"
|
||||
@@ -1365,7 +1393,7 @@ msgid "Open folder"
|
||||
msgstr "Apri cartella"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Apri cartella completati"
|
||||
|
||||
@@ -1504,7 +1532,8 @@ msgstr "PROPAGAZIONE %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Scaricato in %s a una media di %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Età"
|
||||
@@ -1826,6 +1855,10 @@ msgstr "Nessun file rar precedente corrispondente per %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Rimozione di %s fallita"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1850,10 +1883,6 @@ msgstr "Ricevuta un'eccezione DBus %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Trovata voce RSS vuota (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Feed incompatibile"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1875,50 +1904,15 @@ msgstr "Recupero RSS da %s fallito: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Il server %s utilizza un certificato HTTPS non attendibile"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "Il feed RSS %s era vuoto"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Mostra interfaccia"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Feed incompatibile"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausa per"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausa per 5 minuti"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pausa per 15 minuti"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausa per 30 minuti"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausa per 1 ora"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausa per 3 ore"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausa per 6 ore"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Spegni"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Rimanente"
|
||||
|
||||
@@ -1926,6 +1920,44 @@ msgstr "Rimanente"
|
||||
msgid "Add NZB"
|
||||
msgstr "Aggiungi NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Mostra interfaccia"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Spegni"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausa per"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausa per 5 minuti"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pausa per 15 minuti"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausa per 30 minuti"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausa per 1 ora"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausa per 3 ore"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausa per 6 ore"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -3002,11 +3034,13 @@ msgstr "Lista di pulizia"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Elenco delle estensioni dei file che dovrebbero essere eliminate dopo il "
|
||||
"download.<br />Ad esempio: <b>nfo</b> o <b>nfo, sfv</b>"
|
||||
"Elenco di estensioni di file, nomi file o schemi da eliminare dopo il "
|
||||
"download.<br />Esempi: <b>nfo, sfv</b> (estensioni) o <b>thumbs.db</b> (nomi"
|
||||
" file) o <b>*.tmp, images/*, */test.jpg</b> (schemi)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3397,6 +3431,9 @@ msgid ""
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
"Prova a estrarre solo i processi che hanno superato la fase di verifica. Se "
|
||||
"disattivato, tutti i processi verranno contrassegnati come Completato e "
|
||||
"spostati nella cartella Completi anche se incompleti."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3491,6 +3528,8 @@ msgstr "Abilita controlli basati su SFV"
|
||||
msgid ""
|
||||
"If no par2 files are available, use sfv files (if present) to verify files"
|
||||
msgstr ""
|
||||
"Se non sono disponibili file par2, usa i file sfv (se presenti) per "
|
||||
"verificare i file"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
@@ -3567,9 +3606,10 @@ msgstr ""
|
||||
"processo."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
"La coda verrà riordinata ogni 30 secondi se è selezionato % scaricato."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3913,7 +3953,7 @@ msgstr "Abilita"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Articles per request"
|
||||
msgstr ""
|
||||
msgstr "Articoli per richiesta"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -3921,6 +3961,9 @@ msgid ""
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
"Richiedi più articoli per connessione senza attendere prima ogni "
|
||||
"risposta.<br />Questo può migliorare la velocità di download, soprattutto "
|
||||
"sulle connessioni con latenza più elevata."
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4010,10 +4053,6 @@ msgstr "Leggi feed"
|
||||
msgid "Force Download"
|
||||
msgstr "Forza download"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Applica filtri"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4703,6 +4742,14 @@ msgstr "Elimina"
|
||||
msgid "Filename"
|
||||
msgstr "Nome file"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Spazio libero"
|
||||
@@ -4711,6 +4758,10 @@ msgstr "Spazio libero"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Cartella temporanea"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Operazioni multiple"
|
||||
@@ -4719,6 +4770,10 @@ msgstr "Operazioni multiple"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Tieni premuto il tasto Maiusc per selezionare un intervallo"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Seleziona tutto"
|
||||
@@ -4964,6 +5019,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "Ordina per % scaricato <small>Più→Meno</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Ordina per Età <small>Più vecchio→Più nuovo</small>"
|
||||
|
||||
+108
-69
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
|
||||
@@ -116,7 +116,6 @@ msgstr "SABnzbd %s startet"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd er nå avsluttet"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signal %s mottatt, lagrer og avslutter..."
|
||||
@@ -236,6 +235,10 @@ msgstr ""
|
||||
"Ukjent SSL-protokoll: Prøv å deaktivere SSL eller koble til på en annen "
|
||||
"port."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Kunne ikke koble til (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Server krever brukernavn og passord."
|
||||
@@ -253,9 +256,13 @@ msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
"For mange tilkoblinger, sett nedlasting på pause eller prøv igjen senere"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Kunne ikke koble til (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -520,8 +527,8 @@ msgid "Resuming"
|
||||
msgstr "Gjenopptar"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Pauset"
|
||||
|
||||
@@ -577,6 +584,13 @@ msgstr "Kunne ikke logge inn på server %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Kontaker %s@%s feilet, feilmelding=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Starter avslutning av SABnzbd.."
|
||||
@@ -854,7 +868,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Advarsler"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Ledig"
|
||||
@@ -885,8 +899,8 @@ msgstr "Hastighetsbegrensning"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Stans midlertidig"
|
||||
|
||||
@@ -896,8 +910,8 @@ msgid "min"
|
||||
msgstr "minutt"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Gjenoppta"
|
||||
|
||||
@@ -906,7 +920,7 @@ msgstr "Gjenoppta"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Sjekk overvåkingsmappe"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Les alle RSS-kanaler"
|
||||
|
||||
@@ -918,17 +932,17 @@ msgstr "Ferdig mappe"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Ufullstendig mappe"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Feilsøking"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Starte på nytt"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Restart uten å logge inn"
|
||||
|
||||
@@ -1121,6 +1135,10 @@ msgstr "Prøver 7zip med password \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "se loggfil"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Hurtigkontrollerer"
|
||||
@@ -1296,7 +1314,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Åpne fullført mappe"
|
||||
|
||||
@@ -1435,7 +1453,8 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Hentet filer på %s med gjenomsnitts hastighet på %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Tid"
|
||||
@@ -1754,6 +1773,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Fjerning av %s mislyktes"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1778,10 +1801,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Tom RSS post funnet (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Ukompatibel nyhetsstrøm"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1803,50 +1822,15 @@ msgstr "Kunne ikke hente RSS-kilde fra %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Server %s bruker et usikkert HTTP sertifikat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS-kilde %s var tom"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Vis grensesnitt"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Ukompatibel nyhetsstrøm"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pause for"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pause 5 minutter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pause 15 minutter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pause 30 minutter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pause 1 time"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pause 3 timer"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pause 6 timer"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Avslutt"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Gjenstår"
|
||||
|
||||
@@ -1854,6 +1838,44 @@ msgstr "Gjenstår"
|
||||
msgid "Add NZB"
|
||||
msgstr "Legg til NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Vis grensesnitt"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Avslutt"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pause for"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pause 5 minutter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pause 15 minutter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pause 30 minutter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pause 1 time"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pause 3 timer"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pause 6 timer"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2909,11 +2931,10 @@ msgstr "Rens liste"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Liste over filtyper som skal slettes etter nedlasting.<br />For eksempel: "
|
||||
"<b>nfo</b> eller <b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3443,7 +3464,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3860,10 +3883,6 @@ msgstr "Les kilde"
|
||||
msgid "Force Download"
|
||||
msgstr "Tving nedlasting"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4524,6 +4543,14 @@ msgstr "Fjern"
|
||||
msgid "Filename"
|
||||
msgstr "Filnavn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Ledig plass"
|
||||
@@ -4532,6 +4559,10 @@ msgstr "Ledig plass"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Midlertidig Mappe"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Multioperasjoner"
|
||||
@@ -4540,6 +4571,10 @@ msgstr "Multioperasjoner"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Hold shift-tasten for å velge et område"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Merk alle"
|
||||
@@ -4777,6 +4812,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sorter etter alder <small>Eldst→Ny</small>"
|
||||
|
||||
+132
-72
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
|
||||
@@ -123,7 +123,6 @@ msgstr "SABnzbd %s is gestart"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd is afgesloten"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signaal %s ontvangen, opslaan en afsluiten..."
|
||||
@@ -156,6 +155,7 @@ msgstr ""
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Windows ARM version of SABnzbd is available from our Downloads page!"
|
||||
msgstr ""
|
||||
"Windows ARM versie van SABnzbd is beschikbaar op onze Downloads pagina!"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
@@ -256,6 +256,10 @@ msgid ""
|
||||
msgstr ""
|
||||
"Onbekend SSL protocol: probeer het zonder SSL of probeer een andere poort."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Kan verbindingsresultaat niet bepalen (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Server heeft een gebruikersnaam en een wachtwoord nodig."
|
||||
@@ -273,9 +277,13 @@ msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr ""
|
||||
"Te veel verbindingen, onderbreek het downloaden of probeer later nog eens."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Kan verbindingsresultaat niet bepalen (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -565,8 +573,8 @@ msgid "Resuming"
|
||||
msgstr "Hervatten"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Gepauzeerd"
|
||||
|
||||
@@ -626,6 +634,16 @@ msgstr "Aanmelden bij server %s mislukt [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Verbinding %s@%s mislukt, bericht=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"Het totale aantal ingestelde verbindingen (%d) is hoger dan de limiet van "
|
||||
"het besturingssysteem (512); het downloaden zal crashen als alle "
|
||||
"verbindingen actief worden"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Afsluiten"
|
||||
@@ -798,6 +816,9 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"Direct Write-modus is uitgeschakeld omdat %s geen sparse-bestanden "
|
||||
"ondersteunt. Zie voor details en mogelijke oplossingen: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -907,13 +928,15 @@ msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
"Internet Bandbreedte van IPv4 wijkt aanzienlijk af van IPv6: %f MB/s "
|
||||
"tegenover %f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "Meldingen"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Rust"
|
||||
@@ -944,8 +967,8 @@ msgstr "Beperk snelheid"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pauze"
|
||||
|
||||
@@ -955,8 +978,8 @@ msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Doorgaan"
|
||||
|
||||
@@ -965,7 +988,7 @@ msgstr "Doorgaan"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Bewaakte map uitlezen"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Lees alle RSS-feeds uit"
|
||||
|
||||
@@ -977,17 +1000,17 @@ msgstr "Map voltooid"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Tijdelijke download map"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Probleemoplosser"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Herstart"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Herstarten zonder login"
|
||||
|
||||
@@ -1185,6 +1208,11 @@ msgstr "Uitpakpoging met 7zip en wachtwoord '%s'"
|
||||
msgid "see logfile"
|
||||
msgstr "zie logbestand"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
"Uitpakken overgeslagen, TAR-ondersteuning vereist Python 3.12 of nieuwer"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Snelle controle"
|
||||
@@ -1368,7 +1396,7 @@ msgid "Open folder"
|
||||
msgstr "Open map"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Open map met voltooide downloads"
|
||||
|
||||
@@ -1507,7 +1535,8 @@ msgstr "VERSPREIDINGSWACHTTIJD %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Gedownload in %s met een gemiddelde snelheid van %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Leeftijd"
|
||||
@@ -1829,6 +1858,10 @@ msgstr "Geen voorgaand rar-bestand gevonden bij %s"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Verwijderen van %s mislukt"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1853,10 +1886,6 @@ msgstr "DBus foutmelding %s "
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Lege RSS-feed gevonden (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Ongeschikte RSS-feed"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1878,50 +1907,15 @@ msgstr "Kan RSS-feed \"%s\" niet lezen vanwege: \"%s\""
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Server %s gebruikt een onbetrouwbaar HTTPS-certificaat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS-feed %s is leeg"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Toon webinterface"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Ongeschikte RSS-feed"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pauzeer"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pauzeer 5 minuten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pauzeer 15 minuten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pauzeer 30 minuten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pauzeer 1 uur"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pauzeer 3 uur"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pauzeer 6 uur"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Nog te doen"
|
||||
|
||||
@@ -1929,6 +1923,44 @@ msgstr "Nog te doen"
|
||||
msgid "Add NZB"
|
||||
msgstr "NZB toevoegen"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Toon webinterface"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Afsluiten"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pauzeer"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pauzeer 5 minuten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pauzeer 15 minuten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pauzeer 30 minuten"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pauzeer 1 uur"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pauzeer 3 uur"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pauzeer 6 uur"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -3006,11 +3038,14 @@ msgstr "Opschoon lijst"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Lijst van extensies die na downloaden verwijderd moeten worden.<br "
|
||||
"/>Voorbeeld: <b>nfo</b> of <b>nfo, sfv</b>"
|
||||
"Lijst met bestandsextensies, bestandsnamen of patronen die na het downloaden"
|
||||
" verwijderd moeten worden.<br />Voorbeelden: <b>nfo, sfv</b> (extensies) of "
|
||||
"<b>thumbs.db</b> (bestandsnamen) of <b>*.tmp, images/*, */test.jpg</b> "
|
||||
"(patronen)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3393,6 +3428,10 @@ msgid ""
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
"Probeer alleen downloads uit te pakken die de verificatiefase met succes "
|
||||
"hebben doorlopen. Als dit is uitgeschakeld, worden alle downloads als "
|
||||
"Voltooid gemarkeerd en naar de map voor voltooide downloads verplaatst, ook "
|
||||
"als ze onvolledig zijn."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3489,6 +3528,8 @@ msgstr "Voer SFV-gebaseerde controles uit"
|
||||
msgid ""
|
||||
"If no par2 files are available, use sfv files (if present) to verify files"
|
||||
msgstr ""
|
||||
"Als er geen par2-bestanden beschikbaar zijn, gebruik dan sfv-bestanden "
|
||||
"(indien aanwezig) om bestanden te verifiëren"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
@@ -3566,10 +3607,10 @@ msgstr ""
|
||||
"wordt toegevoegd"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
"De wachtrij wordt elke 30 seconden opnieuw gesorteerd als de optie % "
|
||||
"gedownload is gekozen."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3913,7 +3954,7 @@ msgstr "Inschakelen"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Articles per request"
|
||||
msgstr ""
|
||||
msgstr "Artikelen per verbinding"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
@@ -3921,6 +3962,9 @@ msgid ""
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
"Vraag meerdere artikelen per verbinding aan zonder eerst op elke reactie te "
|
||||
"wachten.<br />Dit kan de downloadsnelheid verbeteren, vooral bij "
|
||||
"verbindingen met een hogere latency."
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -4009,10 +4053,6 @@ msgstr "Uitlezen"
|
||||
msgid "Force Download"
|
||||
msgstr "Forceer download"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Filters toepassen"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4701,6 +4741,14 @@ msgstr "Verwijder"
|
||||
msgid "Filename"
|
||||
msgstr "Bestandsnaam"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Vrije ruimte"
|
||||
@@ -4709,6 +4757,10 @@ msgstr "Vrije ruimte"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Tijdelijke map"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Meervoudige bewerking"
|
||||
@@ -4717,6 +4769,10 @@ msgstr "Meervoudige bewerking"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Houdt Shift toets ingedrukt om meer te selecteren"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Selecteer alles"
|
||||
@@ -4962,6 +5018,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "Sorteer Op % Gedownload <small>Meest→Minst</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sorteer op Leeftijd <small>Oud→Nieuw</small>"
|
||||
|
||||
+108
-69
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
|
||||
@@ -114,7 +114,6 @@ msgstr "Uruchomiono SABnzbd %s"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd został wyłączony"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Odebrano sygnał %s, zapisywanie i zamykanie programu..."
|
||||
@@ -234,6 +233,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Nie można określić wyniku połączenia (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Serwer wymaga podania nazwy użytkownika i hasła."
|
||||
@@ -252,9 +255,13 @@ msgstr ""
|
||||
"Zbyt wiele połączeń, proszę wstrzymać pobieranie lub spróbować ponownie "
|
||||
"później"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Nie można określić wyniku połączenia (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -519,8 +526,8 @@ msgid "Resuming"
|
||||
msgstr "Wznawianie"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Wstrzymano"
|
||||
|
||||
@@ -578,6 +585,13 @@ msgstr "Błąd logowania do serwera %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Błąd połączenia %s@%s, komunikat=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Wyłączanie"
|
||||
@@ -857,7 +871,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Ostrzeżenia"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Bezczynny"
|
||||
@@ -888,8 +902,8 @@ msgstr "Ogranicz prędkość"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Wstrzymaj"
|
||||
|
||||
@@ -899,8 +913,8 @@ msgid "min"
|
||||
msgstr "minuta"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Wznów"
|
||||
|
||||
@@ -909,7 +923,7 @@ msgstr "Wznów"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Przeszukaj obserwowany katalog"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Czytaj wszystkie kanały RSS"
|
||||
|
||||
@@ -921,17 +935,17 @@ msgstr "Katalog zakończonych"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Katalog niezakończonych"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Rozwiązywanie problemów"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Uruchom ponownie"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Restart bez logowania"
|
||||
|
||||
@@ -1124,6 +1138,10 @@ msgstr "Próba rozpakowania archiwum 7zip z użyciem hasła \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "sprawdź logi"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Szybkie sprawdzanie"
|
||||
@@ -1301,7 +1319,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otwórz katalog zakończonych"
|
||||
|
||||
@@ -1440,7 +1458,8 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Pobrano w %s ze średnią %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Wiek"
|
||||
@@ -1763,6 +1782,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Usuwanie %s nie powiodło się"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1787,10 +1810,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Znaleziono pusty wpis RSS (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Niekompatybilny kanał"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1812,50 +1831,15 @@ msgstr "Nie udało się pobrać RSS z %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Serwer %s używa niezaufanego certyfikatu HTTPS"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "Kanał RSS %s był pusty"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Pokaż interfejs"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Niekompatybilny kanał"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Wstrzymaj na"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Wstrzymaj na 5 minut"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Wstrzymaj na 15 minut"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Wstrzymaj na 30 minut"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Wstrzymaj na 1 godzinę"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Wstrzymaj na 2 godziny"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Wstrzymaj na 6 godzin"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Zakończ"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Pozostało"
|
||||
|
||||
@@ -1863,6 +1847,44 @@ msgstr "Pozostało"
|
||||
msgid "Add NZB"
|
||||
msgstr "Dodaj NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Pokaż interfejs"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Zakończ"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Wstrzymaj na"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Wstrzymaj na 5 minut"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Wstrzymaj na 15 minut"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Wstrzymaj na 30 minut"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Wstrzymaj na 1 godzinę"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Wstrzymaj na 2 godziny"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Wstrzymaj na 6 godzin"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2920,11 +2942,10 @@ msgstr "Lista czyszczenia"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Lista rozszerzeń plików, które mają zostać usunięte po pobraniu.<br />Na "
|
||||
"przykład: <b>nfo</b> lub <b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3454,7 +3475,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3872,10 +3895,6 @@ msgstr "Pobierz kanał"
|
||||
msgid "Force Download"
|
||||
msgstr "Wymuś pobranie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4536,6 +4555,14 @@ msgstr "Usuń"
|
||||
msgid "Filename"
|
||||
msgstr "Nazwa pliku"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Wolne miejsce"
|
||||
@@ -4544,6 +4571,10 @@ msgstr "Wolne miejsce"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Folder tymczasowy"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Operacje na wielu"
|
||||
@@ -4552,6 +4583,10 @@ msgstr "Operacje na wielu"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Przytrzymaj klawisz Shift, aby zaznaczyć zakres"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Sprawdź wszystkie"
|
||||
@@ -4789,6 +4824,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortuj według wieku <small>Najstarsze→Najnowsze</small>"
|
||||
|
||||
+108
-69
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
|
||||
@@ -119,7 +119,6 @@ msgstr "SABnzbd %s iniciado"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Encerramento do SABnzbd concluído"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Sinal %s encontrado. Salvando e saindo..."
|
||||
@@ -240,6 +239,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Não foi possível determinar o resultado da conexão (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Servidor requer usuário e senha."
|
||||
@@ -258,9 +261,13 @@ msgstr ""
|
||||
"Excesso de conexões, por favor pause o download ou tente novamente mais "
|
||||
"tarde"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Não foi possível determinar o resultado da conexão (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -533,8 +540,8 @@ msgid "Resuming"
|
||||
msgstr "Continuar"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Pausado"
|
||||
|
||||
@@ -592,6 +599,13 @@ msgstr "Falha de logon ao servidor %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "A conexão a %s@%s falhou. Mensagem=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Encerrando"
|
||||
@@ -869,7 +883,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Alertas"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inativo"
|
||||
@@ -900,8 +914,8 @@ msgstr "Limitar Velocidade"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pausar"
|
||||
|
||||
@@ -911,8 +925,8 @@ msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Continuar"
|
||||
|
||||
@@ -921,7 +935,7 @@ msgstr "Continuar"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Varrer pasta de assistidos"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Ler todos os feeds RSS"
|
||||
|
||||
@@ -933,17 +947,17 @@ msgstr "Pasta de Finalizados"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Pasta de Não-Finalizados"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Resolução de problemas"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Reiniciar"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Reinicie sem login"
|
||||
|
||||
@@ -1136,6 +1150,10 @@ msgstr "Testando 7zip com a senha \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "veja o arquivo de log"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Verificação Rápida"
|
||||
@@ -1310,7 +1328,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Abrir pasta de finalizados"
|
||||
|
||||
@@ -1449,7 +1467,8 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Baixado em %s a uma média de %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Idade"
|
||||
@@ -1773,6 +1792,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "A remoção de %s falhou"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1797,10 +1820,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Entrada RSS vazia encontrada (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Feed incompatível"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1823,50 +1842,15 @@ msgstr "Falha ao obter RSS de %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Servidor %s usa um certificado HTTPS não confiável"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "O feed RSS %s estava vazio"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Exibir interface"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Feed incompatível"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausa de"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausar por 5 minutos"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pausar por 15 minutos"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausar por 30 minutos"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausar por 1 hora"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausar por 3 horas"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausar por 6 horas"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Encerrar"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Restante"
|
||||
|
||||
@@ -1874,6 +1858,44 @@ msgstr "Restante"
|
||||
msgid "Add NZB"
|
||||
msgstr "Adicionar NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Exibir interface"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Encerrar"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausa de"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausar por 5 minutos"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pausar por 15 minutos"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausar por 30 minutos"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausar por 1 hora"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausar por 3 horas"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausar por 6 horas"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2930,11 +2952,10 @@ msgstr "Lista de Limpeza"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Lista de extensões de arquivo que devem ser excluídos após o download.<br "
|
||||
"/>Por exemplo: <b>nfo</b> ou <b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3466,7 +3487,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3883,10 +3906,6 @@ msgstr "Ler Feed"
|
||||
msgid "Force Download"
|
||||
msgstr "Forçar Download"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4547,6 +4566,14 @@ msgstr "Eliminar"
|
||||
msgid "Filename"
|
||||
msgstr "Nome do arquivo"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Espaço Disponível"
|
||||
@@ -4555,6 +4582,10 @@ msgstr "Espaço Disponível"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Pasta temporária"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Multi-Operações"
|
||||
@@ -4563,6 +4594,10 @@ msgstr "Multi-Operações"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Segure a tecla shift para selecionar um intervalo"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Selecionar todos"
|
||||
@@ -4800,6 +4835,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Ordenar por Idade <small>Mais antigo→Mais novo</small>"
|
||||
|
||||
+108
-69
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
|
||||
@@ -121,7 +121,6 @@ msgstr "SABnzbd %s pornit"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Închidere SABnzbd terminată"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Semnal %s prins, salvez şi ies..."
|
||||
@@ -244,6 +243,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Nu pot determina reultatul conexiunii (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Serverul necesită nume utilizator şi parolă"
|
||||
@@ -262,9 +265,13 @@ msgstr ""
|
||||
"Prea multe conexiuni, vă rugăm să întrerupeţi descărcarea sau să încercaţi "
|
||||
"din nou mai târziu"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Nu pot determina reultatul conexiunii (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -541,8 +548,8 @@ msgid "Resuming"
|
||||
msgstr "Reluare"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Întrerupt"
|
||||
|
||||
@@ -600,6 +607,13 @@ msgstr "Autentificare nereuşită la serverul %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Conectare %s@%s eșuată, mesaj=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Închidere"
|
||||
@@ -879,7 +893,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Atenționări"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inactiv"
|
||||
@@ -910,8 +924,8 @@ msgstr "Limitare de Viteză"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pauză"
|
||||
|
||||
@@ -921,8 +935,8 @@ msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Reia"
|
||||
|
||||
@@ -931,7 +945,7 @@ msgstr "Reia"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Scanează dosar urmărire"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Citește toate feed-urile RSS"
|
||||
|
||||
@@ -943,17 +957,17 @@ msgstr "Dosar Complet"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Dosar Incomplet"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Depanare"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Repornește"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Reporneşte fără autorizare"
|
||||
|
||||
@@ -1149,6 +1163,10 @@ msgstr "Încerc 7zip cu parola \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "vezi fişier jurnal"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Verificare Rapidă"
|
||||
@@ -1328,7 +1346,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Deschide dosar descărcări complete"
|
||||
|
||||
@@ -1467,7 +1485,8 @@ msgstr "SE PROPAGHEAZĂ %s min"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Descărcat în %s cu o medie de %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Vârsta"
|
||||
@@ -1792,6 +1811,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Ştergerea %s nereuşită"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1816,10 +1839,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Valoare RSS gasită a fost goală (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Fulx RSS incompatibil"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1841,50 +1860,15 @@ msgstr "Descărcare %s: %s din RSS nereuşită"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Serverul %s utilizează un certificat HTTPS nesigur"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "Fluxul RSS %s a fost gol"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Arată interfața"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Fulx RSS incompatibil"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pauză timp de"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pauză timp de 5 minute"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pauză timp de 15 minute"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pauză timp de 30 minute"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pauză timp de o oră"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pauză timp de 3 ore"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pauză timp de 6 ore"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Închidere"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Rămas"
|
||||
|
||||
@@ -1892,6 +1876,44 @@ msgstr "Rămas"
|
||||
msgid "Add NZB"
|
||||
msgstr "Adaugă NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Arată interfața"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Închidere"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pauză timp de"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pauză timp de 5 minute"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pauză timp de 15 minute"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pauză timp de 30 minute"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pauză timp de o oră"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pauză timp de 3 ore"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pauză timp de 6 ore"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2949,11 +2971,10 @@ msgstr "Listă Curăţenie"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Listă de extensii fișiere ce trebuie să fie șterse după descărcare.<br />De "
|
||||
"exemplu: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3483,7 +3504,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3904,10 +3927,6 @@ msgstr "Citeşte Flux"
|
||||
msgid "Force Download"
|
||||
msgstr "Descărcare Forţată"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4567,6 +4586,14 @@ msgstr "Şterge"
|
||||
msgid "Filename"
|
||||
msgstr "Nume de fișier"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Spațiu liber"
|
||||
@@ -4575,6 +4602,10 @@ msgstr "Spațiu liber"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Dosar Temporar"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Operaţii-Multiple"
|
||||
@@ -4583,6 +4614,10 @@ msgstr "Operaţii-Multiple"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Ține-ți tasta shift pentru a selecta un interval"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Selectează tot"
|
||||
@@ -4821,6 +4856,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
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>"
|
||||
|
||||
+108
-67
@@ -7,7 +7,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
|
||||
@@ -119,7 +119,6 @@ msgstr ""
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Завершение работы SABnzbd закончено"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Получен сигнал %s. Выполняется сохранение и выход..."
|
||||
@@ -235,6 +234,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Не удалось определить результат подключения (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Для сервера требуется имя пользователя и пароль."
|
||||
@@ -253,9 +256,13 @@ msgstr ""
|
||||
"Слишком много подключений. Приостановите загрузку или повторите попытку "
|
||||
"позже"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Не удалось определить результат подключения (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -520,8 +527,8 @@ msgid "Resuming"
|
||||
msgstr "Возобновление"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Приостановлено"
|
||||
|
||||
@@ -577,6 +584,13 @@ msgstr "Ошибка входа на сервер %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Завершение работы"
|
||||
@@ -854,7 +868,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "предупреждений"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Бездействие"
|
||||
@@ -885,8 +899,8 @@ msgstr "Ограничение скорости"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Приостановить"
|
||||
|
||||
@@ -896,8 +910,8 @@ msgid "min"
|
||||
msgstr "мин"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Возобновить"
|
||||
|
||||
@@ -906,7 +920,7 @@ msgstr "Возобновить"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Сканировать наблюдаемую папку"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr ""
|
||||
|
||||
@@ -918,17 +932,17 @@ msgstr "Полная папка"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Неполная папка"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Устранение неполадок"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Перезапустить"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Перезапустить без входа"
|
||||
|
||||
@@ -1121,6 +1135,10 @@ msgstr ""
|
||||
msgid "see logfile"
|
||||
msgstr "см. журнал"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Быстрая проверка"
|
||||
@@ -1297,7 +1315,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr ""
|
||||
|
||||
@@ -1436,7 +1454,8 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Загружено за %s со средней скоростью %sБ/с"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Возраст"
|
||||
@@ -1757,6 +1776,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Не удалось удалить %s"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1781,10 +1804,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Обнаружена пустая запись RSS (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Несовместимая лента"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1806,50 +1825,15 @@ msgstr "Не удалось получить RSS-ленту из %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr ""
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS-лента %s была пустой"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Показать интерфейс"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Несовместимая лента"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Приостановить на"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Приостановить на 5 минут"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Приостановить на 15 минут"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Приостановить на 30 минут"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Приостановить на 1 час"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Приостановить на 3 часа"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Приостановить на 6 часов"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Выключить"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "осталось"
|
||||
|
||||
@@ -1857,6 +1841,44 @@ msgstr "осталось"
|
||||
msgid "Add NZB"
|
||||
msgstr "Добавить NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Показать интерфейс"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Выключить"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Приостановить на"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Приостановить на 5 минут"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Приостановить на 15 минут"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Приостановить на 30 минут"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Приостановить на 1 час"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Приостановить на 3 часа"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Приостановить на 6 часов"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2912,8 +2934,9 @@ msgstr "Список очистки"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3446,7 +3469,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3862,10 +3887,6 @@ msgstr "Прочитать ленту"
|
||||
msgid "Force Download"
|
||||
msgstr "Загрузить принудительно"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4532,6 +4553,14 @@ msgstr "Удалить"
|
||||
msgid "Filename"
|
||||
msgstr "Название файла"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "свободно на диске"
|
||||
@@ -4540,6 +4569,10 @@ msgstr "свободно на диске"
|
||||
msgid "Temp Folder"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Пакетные операции"
|
||||
@@ -4548,6 +4581,10 @@ msgstr "Пакетные операции"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr ""
|
||||
@@ -4784,6 +4821,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Сортировать по возрасту <small>от старых к новым</small>"
|
||||
|
||||
+108
-69
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
|
||||
@@ -116,7 +116,6 @@ msgstr "SABnzbd %s покренут"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "Гашење SABnzbd је завршено"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signal %s primljen, snimanje i napuštanje..."
|
||||
@@ -233,6 +232,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Nemoguće odrediti rezultate konekcije (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Серверу су потребни име и лозинка."
|
||||
@@ -249,9 +252,13 @@ msgstr "Аутентификација погрешна, проверити им
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr "Превише конекција, паузирајте преузимање или поновите касније"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Nemoguće odrediti rezultate konekcije (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -516,8 +523,8 @@ msgid "Resuming"
|
||||
msgstr "Nastavlja se"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Паузирано"
|
||||
|
||||
@@ -574,6 +581,13 @@ msgstr "Неуспешно пријављивање на сервер %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Povezivanje na %s@%s neuspešno, poruka=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Гашење"
|
||||
@@ -849,7 +863,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Упозорења"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Мирoвање"
|
||||
@@ -880,8 +894,8 @@ msgstr "Ограничење брзине"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Пауза"
|
||||
|
||||
@@ -891,8 +905,8 @@ msgid "min"
|
||||
msgstr "мин."
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Настави"
|
||||
|
||||
@@ -901,7 +915,7 @@ msgstr "Настави"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Скенирај надгледану фасциклу"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Pročitani svi RSS kanali"
|
||||
|
||||
@@ -913,17 +927,17 @@ msgstr "Комплетна фасцикла"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Некомплетна фасцикла"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Реши проблем"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Поново покрени"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Ponovno pokretanje bez prijave"
|
||||
|
||||
@@ -1116,6 +1130,10 @@ msgstr "Покушавам 7zip са лозинком \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "видети извештај"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Брза Провера"
|
||||
@@ -1291,7 +1309,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Otvori fasciklu završenih"
|
||||
|
||||
@@ -1430,7 +1448,8 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Преузето за %s на просек од %sБ/с"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Старост"
|
||||
@@ -1749,6 +1768,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Brisanje %s neuspešno"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1773,10 +1796,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Nađen prazan RSS unos (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Некомпатибилан Фид"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1798,50 +1817,15 @@ msgstr "Неуспешно преузимање RSS од %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Server %s koristi nepouzdan HTTPS sertifikat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS фид %s је празан"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Pokaži interfejs"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Некомпатибилан Фид"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Паузирај за"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Паузирај 5 минута"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Паузирај 15 минута"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Паузирај 30 минута"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Паузирај 1 сат"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Паузирај 3 сата"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Паузирај 6 сати"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Угаси"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Преостало"
|
||||
|
||||
@@ -1849,6 +1833,44 @@ msgstr "Преостало"
|
||||
msgid "Add NZB"
|
||||
msgstr "Додај NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Pokaži interfejs"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Угаси"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Паузирај за"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Паузирај 5 минута"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Паузирај 15 минута"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Паузирај 30 минута"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Паузирај 1 сат"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Паузирај 3 сата"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Паузирај 6 сати"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2900,11 +2922,10 @@ msgstr "Списак чишћења"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Листа ектензије за брисање после преузимања.<br />На пример: <b>nfo</b> или "
|
||||
"<b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3432,7 +3453,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3846,10 +3869,6 @@ msgstr "Читај фид"
|
||||
msgid "Force Download"
|
||||
msgstr "Натерај преузимање"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4509,6 +4528,14 @@ msgstr "Обриши"
|
||||
msgid "Filename"
|
||||
msgstr "Име датотеке"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Слободан простор"
|
||||
@@ -4517,6 +4544,10 @@ msgstr "Слободан простор"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Привремено"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Мулти-операције"
|
||||
@@ -4525,6 +4556,10 @@ msgstr "Мулти-операције"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Držite taster shift pritisnut da bi ste odabrali raspon"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Proveri sve"
|
||||
@@ -4762,6 +4797,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Среди по старост <small>Старије→Новије</small>"
|
||||
|
||||
+108
-69
@@ -6,7 +6,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
|
||||
@@ -116,7 +116,6 @@ msgstr "SABnzbd %s startad"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd nedstängning utförd."
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "Signal %s mottagen, sparar och stänger..."
|
||||
@@ -233,6 +232,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Det gick inte att ansluta (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Servern kräver användarnamn och lösenord."
|
||||
@@ -249,9 +252,13 @@ msgstr "Autentisering misslyckades, kontrollera användarnamn och lösenord."
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr "För många anslutningar, pausa en nedladdning eller försök igen senare"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Det gick inte att ansluta (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -517,8 +524,8 @@ msgid "Resuming"
|
||||
msgstr "Fortsätter"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Pausad"
|
||||
|
||||
@@ -574,6 +581,13 @@ msgstr "Det gick inte att logga in på server %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "Anslutning %s@%s misslyckades, meddelande=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Påbörjar nedstängning av SABnzbd.."
|
||||
@@ -851,7 +865,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "Varningar"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Inaktiv"
|
||||
@@ -882,8 +896,8 @@ msgstr "Hastighetsbegränsning"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Pausa"
|
||||
|
||||
@@ -893,8 +907,8 @@ msgid "min"
|
||||
msgstr "min"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Återuppta"
|
||||
|
||||
@@ -903,7 +917,7 @@ msgstr "Återuppta"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "Scanna bevakad mapp"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Läs alla RSS-flöden"
|
||||
|
||||
@@ -915,17 +929,17 @@ msgstr "Färdig mapp"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Ofullständig mapp"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Felsök"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Starta om"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Starta om utan login"
|
||||
|
||||
@@ -1118,6 +1132,10 @@ msgstr "Provar 7zip med lösenord \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "se loggfil"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Snabbkontrollerar"
|
||||
@@ -1295,7 +1313,7 @@ msgid "Open folder"
|
||||
msgstr ""
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Öppna färdig mapp"
|
||||
|
||||
@@ -1434,7 +1452,8 @@ msgstr ""
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "Hämtade i %s vid ett genomsnitt på %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Ålder"
|
||||
@@ -1755,6 +1774,10 @@ msgstr ""
|
||||
msgid "Removing %s failed"
|
||||
msgstr "Borttagning av %s misslyckades"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1779,10 +1802,6 @@ msgstr ""
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Tom RSS post hittades (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Inkompatibel feed"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1804,50 +1823,15 @@ msgstr "Det gick inte att hämta RSS flödet från %s: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "Server %s använder ett otillförlitlig HTTPS-certifikat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS-flödet %s var tomt"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Visa gränssnitt"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Inkompatibel feed"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausa för"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausa 5 minuter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pause 15 minuter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausa 30 minuter"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausa 1 timme"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausa 3 timmar"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausa 6 timmar"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Stäng Av"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Återstår"
|
||||
|
||||
@@ -1855,6 +1839,44 @@ msgstr "Återstår"
|
||||
msgid "Add NZB"
|
||||
msgstr "Lägg till NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Visa gränssnitt"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Stäng Av"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Pausa för"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "Pausa 5 minuter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "Pause 15 minuter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "Pausa 30 minuter"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "Pausa 1 timme"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "Pausa 3 timmar"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "Pausa 6 timmar"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2909,11 +2931,10 @@ msgstr "Rensa lista"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"Lista av filändelser som skall bli borttagna efter nerladdning.<br/> Till "
|
||||
"exempel: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3442,7 +3463,9 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3859,10 +3882,6 @@ msgstr "Läs flöde"
|
||||
msgid "Force Download"
|
||||
msgstr "Tvinga nedladdning"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr ""
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4522,6 +4541,14 @@ msgstr "Ta bort"
|
||||
msgid "Filename"
|
||||
msgstr "Filnamn"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Ledigt diskutrymme"
|
||||
@@ -4530,6 +4557,10 @@ msgstr "Ledigt diskutrymme"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Temporär Mapp"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Multi-operationer"
|
||||
@@ -4538,6 +4569,10 @@ msgstr "Multi-operationer"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Håll in shiftknappen för att välja omfång"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Markera alla"
|
||||
@@ -4774,6 +4809,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Sortera efter ålder <small>Äldst→Nyast</small>"
|
||||
|
||||
+119
-70
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: mauron, 2026\n"
|
||||
"Language-Team: Turkish (https://app.transifex.com/sabnzbd/teams/111101/tr/)\n"
|
||||
@@ -123,7 +123,6 @@ msgstr "SABnzbd %s başlatıldı"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd kapatılması tamamlandı"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "%s sinyali yakalandı, kaydediliyor ve çıkılıyor..."
|
||||
@@ -257,6 +256,10 @@ msgstr ""
|
||||
"Bilinmeyen SSL protokolü: SSL'i devre dışı bırakmayı veya başka bir bağlantı"
|
||||
" noktasını deneyin."
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Bağlantı sonucu belirlenemedi (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "Sunucu kullanıcı ismi ve parola gerektiriyor."
|
||||
@@ -276,9 +279,17 @@ msgstr ""
|
||||
"Çok fazla bağlantı, lütfen indirmeyi duraklatın veya daha sonra tekrar "
|
||||
"deneyin"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "Bağlantı sonucu belirlenemedi (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
"%s sunucusunun cevap vermesi %d ms sürdü. Yüksek gecikmeli bağlantılarda, "
|
||||
"'talep başı makale' değerini 5 ila 10 olarak ayarlamak indirme hızını "
|
||||
"iyileştirebilir. Şu sayfaya bakın: https://sabnzbd.org/wiki/advanced/nntp-"
|
||||
"pipelining"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -562,8 +573,8 @@ msgid "Resuming"
|
||||
msgstr "Sürdürülüyor"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "Duraklatılmış"
|
||||
|
||||
@@ -623,6 +634,15 @@ msgstr "%s [%s] sunucusunda oturum açılışı başarısız oldu"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "%s@%s bağlantısı başarısız oldu, mesaj=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr ""
|
||||
"Toplam yapılandırılmış bağlantı sayısı (%d) işletim sisteminin sınırından "
|
||||
"yüksektir (512), tüm bağlantılar faal hâle gelirse indirme işlemi çökecektir"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "Kapatılıyor"
|
||||
@@ -907,7 +927,7 @@ msgstr ""
|
||||
msgid "Warnings"
|
||||
msgstr "İkazlar"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "Boşta"
|
||||
@@ -938,8 +958,8 @@ msgstr "Hızı Sınırla"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "Duraklat"
|
||||
|
||||
@@ -949,8 +969,8 @@ msgid "min"
|
||||
msgstr "dakika"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "Sürdür"
|
||||
|
||||
@@ -959,7 +979,7 @@ msgstr "Sürdür"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "İzlenen dizini tara"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "Tüm RSS beslemelerini oku"
|
||||
|
||||
@@ -971,17 +991,17 @@ msgstr "Tamamlanmışlar Dizini"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "Tamamlanmamışlar Dizini"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "Sorun Giderme"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "Tekrar Başlat"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "Oturum açmadan tekrar başlat"
|
||||
|
||||
@@ -1178,6 +1198,10 @@ msgstr "\"%s\" parolası ile 7zip deneniyor"
|
||||
msgid "see logfile"
|
||||
msgstr "kütük dosyasına bakın"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr "Açma atlandı, TAR desteği Python 3.12 veya daha yenisini gerektirir"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "Hızlı Kontrol"
|
||||
@@ -1361,7 +1385,7 @@ msgid "Open folder"
|
||||
msgstr "Dizin aç"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "Tamamlanmışlar dizinini aç"
|
||||
|
||||
@@ -1500,7 +1524,8 @@ msgstr "YAYINLANIYOR %s dakika"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "%s içinde ortalama %sB/s hızında indirildi"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "Yaş"
|
||||
@@ -1823,6 +1848,10 @@ msgstr "%s için eşleşen önceki bir rar dosyası yok"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "%s kaldırması başarısız oldu"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr "İstemeyen uzantılı %s dosya kaldırıldı"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1847,10 +1876,6 @@ msgstr "Bir DBUS istisnası alındı %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "Boş RSS girdisi bulundu (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Uyumsuz besleme"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1872,50 +1897,15 @@ msgstr "%s unsurundan RSS alınması başarısız oldu: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "%s sunucusu güvenilmez bir HTTPS sertifikası kullanıyor"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "%s RSS Beselemesi boştu"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "Arayüzü göster"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "Uyumsuz besleme"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Şu süre boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "5 dakika boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "15 dakika boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "30 dakika boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "1 saat boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "3 saat boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "6 saat boyunca duraklat"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Kapat"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "Kalan"
|
||||
|
||||
@@ -1923,6 +1913,44 @@ msgstr "Kalan"
|
||||
msgid "Add NZB"
|
||||
msgstr "NZB Ekle"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "Arayüzü göster"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "Kapat"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "Şu süre boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "5 dakika boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "15 dakika boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "30 dakika boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "1 saat boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "3 saat boyunca duraklat"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "6 saat boyunca duraklat"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -3002,11 +3030,13 @@ msgstr "Listeyi Temizle"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"İndirmeden sonra silinecek uzantıların listesi.<br />Mesela: <b>nfo</b> veya"
|
||||
" <b>nfo, sfv</b>"
|
||||
"İndirmeden sonra silinecek dosya uzantılarının, isimlerinin veya örüntülerin"
|
||||
" listesi. <br /> Örnekler: <b>nfo, sfv</b> (uzantılar) veya <b>thumbs.db</b>"
|
||||
" (dosya isimleri) veya <b>*.tmp, images/*, */test.jpg</b> (örüntüler)."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3563,9 +3593,12 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr "Kuyruktaki işleri yeni bir iş eklendiğinde otomatik olarak sırala."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
"İndirme %'si seçildiyse, kuyruk her 30 saniyede bir tekrar sıralanacaktır."
|
||||
"Eğer % indirildiyse veya Kalan Boyut seçildiyse kuyruk her 30 saniyede bir "
|
||||
"tekrar sıralanacaktır."
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -4010,10 +4043,6 @@ msgstr "Beslemeyi Oku"
|
||||
msgid "Force Download"
|
||||
msgstr "İndirmeyi Zorla"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "Filtreleri Uygula"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4702,6 +4731,14 @@ msgstr "Sil"
|
||||
msgid "Filename"
|
||||
msgstr "Dosya ismi"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr "SABnzbd gezinti menüsünü aç veya kapat"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr "SABnzbd ana menüsünü aç"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "Boş alan"
|
||||
@@ -4710,6 +4747,10 @@ msgstr "Boş alan"
|
||||
msgid "Temp Folder"
|
||||
msgstr "Geçici Dizin"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr "Aramayı temizle"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "Çoklu-İşlemler"
|
||||
@@ -4718,6 +4759,10 @@ msgstr "Çoklu-İşlemler"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "Bir aralık seçmek için Shift tuşunu basılı tutun"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr "İş seç"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "Hepsini seç"
|
||||
@@ -4965,6 +5010,10 @@ msgstr ""
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "İndirilen % ile sırala <small>Azami→Asgari</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr "Kalan Boyuta Göre Sırala <small>Asgari→Azami</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "Yaşa göre sırala <small>En eski→En yeni</small>"
|
||||
|
||||
+120
-75
@@ -8,7 +8,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2026\n"
|
||||
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
|
||||
@@ -116,7 +116,6 @@ msgstr "SABnzbd %s 已启动"
|
||||
msgid "SABnzbd shutdown finished"
|
||||
msgstr "SABnzbd 关闭完成"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Signal %s caught, saving and exiting..."
|
||||
msgstr "捕捉到 %s 信号,正在保存并退出..."
|
||||
@@ -143,7 +142,7 @@ msgstr "当前 umask (%o) 可能会拒绝 SABnzbd 访问其创建的文件和文
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
msgid "Windows ARM version of SABnzbd is available from our Downloads page!"
|
||||
msgstr ""
|
||||
msgstr "我们的下载页面提供 SABnzbd 的 Windows ARM 版本!"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/__init__.py
|
||||
@@ -234,6 +233,10 @@ msgid ""
|
||||
"Unknown SSL protocol: Try disabling SSL or connecting on a different port."
|
||||
msgstr "未知的 SSL 协议:尝试禁用 SSL 或者连接不同的端口。"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "无法判断连接结果 (%s)"
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Server requires username and password."
|
||||
msgstr "服务器需要用户名与密码。"
|
||||
@@ -250,9 +253,13 @@ msgstr "身份认证失败,请检查用户名/密码。"
|
||||
msgid "Too many connections, please pause downloading or try again later"
|
||||
msgstr "连接数过多,请先暂停下载或稍后再试"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/api.py
|
||||
msgid "Could not determine connection result (%s)"
|
||||
msgstr "无法判断连接结果 (%s)"
|
||||
msgid ""
|
||||
"Server %s took %d ms to respond. On high-latency connections, increasing "
|
||||
"'Articles per request' to a value between 5 and 10 can improve download "
|
||||
"speed. See: https://sabnzbd.org/wiki/advanced/nntp-pipelining"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/api.py
|
||||
msgid "Resolving address"
|
||||
@@ -517,8 +524,8 @@ msgid "Resuming"
|
||||
msgstr "恢复中"
|
||||
|
||||
#. PP status - Priority pick list
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/downloader.py, sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Paused"
|
||||
msgstr "已暂停"
|
||||
|
||||
@@ -574,6 +581,13 @@ msgstr "无法登录服务器 %s [%s]"
|
||||
msgid "Connecting %s@%s failed, message=%s"
|
||||
msgstr "连接 %s@%s 失败,消息=%s"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/downloader.py
|
||||
msgid ""
|
||||
"Total number of configured connections (%d) is greater than the operating "
|
||||
"system limit (512), downloading will crash if all connections become active"
|
||||
msgstr "已配置的连接总数 (%d) 超过操作系统限制 (512),如果所有连接都变为活动状态,下载将会崩溃"
|
||||
|
||||
#: sabnzbd/downloader.py, sabnzbd/skintext.py
|
||||
msgid "Shutting down"
|
||||
msgstr "正在关闭"
|
||||
@@ -738,6 +752,8 @@ msgid ""
|
||||
"files. For details and possible solutions, see: "
|
||||
"https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
msgstr ""
|
||||
"Direct Write 模式已被禁用,因为 %s "
|
||||
"不支持稀疏文件。有关详细信息和可能的解决方案,请参阅:https://sabnzbd.org/wiki/advanced/direct-write"
|
||||
|
||||
#: sabnzbd/interface.py
|
||||
msgid "Refused connection from:"
|
||||
@@ -840,14 +856,14 @@ msgstr "返回"
|
||||
msgid ""
|
||||
"Internet Bandwidth of IPv4 significantly different from IPv6: %f MB/s versus"
|
||||
" %f MB/s"
|
||||
msgstr ""
|
||||
msgstr "IPv4 的互联网带宽与 IPv6 明显不同:%f MB/s 对比 %f MB/s"
|
||||
|
||||
#. Footer: indicator of warnings
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/skintext.py
|
||||
msgid "Warnings"
|
||||
msgstr "警告信息"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Idle"
|
||||
msgstr "空闲"
|
||||
@@ -878,8 +894,8 @@ msgstr "限速"
|
||||
|
||||
#. Notification - Pause downloading - Four way switch for duplicates -
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause"
|
||||
msgstr "暂停"
|
||||
|
||||
@@ -889,8 +905,8 @@ msgid "min"
|
||||
msgstr "分钟"
|
||||
|
||||
#. Notification - Resume downloading - Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtray.py,
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/notifier.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Resume"
|
||||
msgstr "续传"
|
||||
|
||||
@@ -899,7 +915,7 @@ msgstr "续传"
|
||||
msgid "Scan watched folder"
|
||||
msgstr "扫描监视文件夹"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Read all RSS feeds"
|
||||
msgstr "读取所有 RSS feed"
|
||||
|
||||
@@ -911,17 +927,17 @@ msgstr "完成文件夹"
|
||||
msgid "Incomplete Folder"
|
||||
msgstr "未完成文件夹"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Troubleshoot"
|
||||
msgstr "疑难解决"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py,
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py,
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Restart"
|
||||
msgstr "重启"
|
||||
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtray.py
|
||||
#: sabnzbd/macosmenu.py, sabnzbd/sabtraywin.py
|
||||
msgid "Restart without login"
|
||||
msgstr "清除登录身份凭据设置并重新启动"
|
||||
|
||||
@@ -1114,6 +1130,10 @@ msgstr "正在尝试 7zip,密码 \"%s\""
|
||||
msgid "see logfile"
|
||||
msgstr "查看日志文件"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Unpacking skipped, TAR support requires Python 3.12 or later"
|
||||
msgstr "已跳过解压,TAR 支持需要 Python 3.12 或更高版本"
|
||||
|
||||
#: sabnzbd/newsunpack.py
|
||||
msgid "Quick Checking"
|
||||
msgstr "快速检查"
|
||||
@@ -1287,7 +1307,7 @@ msgid "Open folder"
|
||||
msgstr "打开文件夹"
|
||||
|
||||
#. Notification action
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/notifier.py, sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Open complete folder"
|
||||
msgstr "打开完成文件夹"
|
||||
|
||||
@@ -1426,7 +1446,8 @@ msgstr "传播延迟生效,等待 %s 分钟"
|
||||
msgid "Downloaded in %s at an average of %sB/s"
|
||||
msgstr "已下载,耗时 %s,平均速度 %sB/s"
|
||||
|
||||
#. Job details page, file age column header
|
||||
#. Config->RSS filter-type selection menu (e.g. ">3d", "<12h") - Job details
|
||||
#. page, file age column header
|
||||
#: sabnzbd/nzb/object.py, sabnzbd/skintext.py
|
||||
msgid "Age"
|
||||
msgstr "发布时间"
|
||||
@@ -1745,6 +1766,10 @@ msgstr "%s 没有匹配的早期 rar 文件"
|
||||
msgid "Removing %s failed"
|
||||
msgstr "移除 %s 失败"
|
||||
|
||||
#: sabnzbd/postproc.py
|
||||
msgid "Removed %s files with unwanted extensions"
|
||||
msgstr ""
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/powersup.py
|
||||
msgid "Failed to hibernate system"
|
||||
@@ -1769,10 +1794,6 @@ msgstr "收到 DBus 异常 %s"
|
||||
msgid "Empty RSS entry found (%s)"
|
||||
msgstr "发现空的 RSS 条目 (%s)"
|
||||
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "feed 不兼容"
|
||||
|
||||
#. Error message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incorrect RSS feed description \"%s\""
|
||||
@@ -1794,50 +1815,15 @@ msgstr "无法检索 %s 的 RSS: %s"
|
||||
msgid "Server %s uses an untrusted HTTPS certificate"
|
||||
msgstr "服务器 %s 使用的 HTTPS 证书不受信任"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/rss.py
|
||||
msgid "RSS Feed %s was empty"
|
||||
msgstr "RSS Feed %s 为空"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
msgid "Show interface"
|
||||
msgstr "显示界面"
|
||||
#: sabnzbd/rss.py
|
||||
msgid "Incompatible feed"
|
||||
msgstr "feed 不兼容"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "暂停"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "暂停 5 分钟"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "暂停 15 分钟"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "暂停 30 分钟"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "暂停 1 小时"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "暂停 3 小时"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "暂停 6 小时"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "关闭"
|
||||
|
||||
#: sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Remaining"
|
||||
msgstr "剩余"
|
||||
|
||||
@@ -1845,6 +1831,44 @@ msgstr "剩余"
|
||||
msgid "Add NZB"
|
||||
msgstr "添加 NZB"
|
||||
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py
|
||||
msgid "Show interface"
|
||||
msgstr "显示界面"
|
||||
|
||||
#. Config->Scheduling
|
||||
#: sabnzbd/sabtraylinux.py, sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Shutdown"
|
||||
msgstr "关闭"
|
||||
|
||||
#. Queue page button or entry box
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for"
|
||||
msgstr "暂停"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 5 minutes"
|
||||
msgstr "暂停 5 分钟"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 15 minutes"
|
||||
msgstr "暂停 15 分钟"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 30 minutes"
|
||||
msgstr "暂停 30 分钟"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 1 hour"
|
||||
msgstr "暂停 1 小时"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 3 hours"
|
||||
msgstr "暂停 3 小时"
|
||||
|
||||
#: sabnzbd/sabtraywin.py, sabnzbd/skintext.py
|
||||
msgid "Pause for 6 hours"
|
||||
msgstr "暂停 6 小时"
|
||||
|
||||
#. Warning message
|
||||
#: sabnzbd/scheduler.py
|
||||
msgid "Bad schedule %s at %s:%s"
|
||||
@@ -2888,9 +2912,12 @@ msgstr "清理列表"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"List of file extensions that should be deleted after download.<br />For "
|
||||
"example: <b>nfo</b> or <b>nfo, sfv</b>"
|
||||
msgstr "下载后应删除的文件扩展名列表。<br />例如: <b>nfo</b> 或 <b>nfo, sfv</b>"
|
||||
"List of file extensions, filenames or patterns that should be deleted after "
|
||||
"download.<br />Examples: <b>nfo, sfv</b> (extensions) or <b>thumbs.db</b> "
|
||||
"(filenames) or <b>*.tmp, images/*, */test.jpg</b> (patterns)."
|
||||
msgstr ""
|
||||
"下载后应删除的文件扩展名、文件名或通配符模式的列表。<br />示例:<b>nfo, sfv</b>(扩展名)或 "
|
||||
"<b>thumbs.db</b>(文件名)或 <b>*.tmp, images/*, */test.jpg</b>(通配符模式)。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "History Retention"
|
||||
@@ -3236,7 +3263,7 @@ msgid ""
|
||||
"Only try to unpack jobs that passed the verification stage. If turned off, "
|
||||
"all jobs will be marked as Completed and moved to the Complete folder even "
|
||||
"if they are incomplete."
|
||||
msgstr ""
|
||||
msgstr "仅尝试解压通过验证阶段的任务。如果关闭,所有任务都将被标记为“完成”并移至完成文件夹,即使它们并不完整。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Action when encrypted RAR is downloaded"
|
||||
@@ -3324,7 +3351,7 @@ msgstr "启用基于 SFV 的检查"
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"If no par2 files are available, use sfv files (if present) to verify files"
|
||||
msgstr ""
|
||||
msgstr "如果没有可用的 par2 文件,则使用 sfv 文件(如果存在)来验证文件"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "User script can flag job as failed"
|
||||
@@ -3395,8 +3422,10 @@ msgid "Automatically sort jobs in the queue when a new job is added."
|
||||
msgstr "添加新作业时自动对队列中的作业进行排序。"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "The queue will resort every 30 seconds if % downloaded is selected."
|
||||
msgstr "如果选择了下载百分比,队列将每 30 秒重新排序一次。"
|
||||
msgid ""
|
||||
"The queue will resort every 30 seconds if % downloaded or Remaining Size is "
|
||||
"selected."
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Propagation delay"
|
||||
@@ -3712,14 +3741,14 @@ msgstr "启用"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Articles per request"
|
||||
msgstr ""
|
||||
msgstr "每次请求的文章数"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid ""
|
||||
"Request multiple articles per connection without waiting for each response "
|
||||
"first.<br />This can improve download speeds, especially on connections with"
|
||||
" higher latency."
|
||||
msgstr ""
|
||||
msgstr "每个连接请求多篇文章,而不必先等待每个响应。<br />这可以提高下载速度,尤其是在延迟较高的连接上。"
|
||||
|
||||
#. Button: Remove server
|
||||
#: sabnzbd/skintext.py
|
||||
@@ -3806,10 +3835,6 @@ msgstr "读取 Feed"
|
||||
msgid "Force Download"
|
||||
msgstr "强制下载"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Apply filters"
|
||||
msgstr "应用过滤器"
|
||||
|
||||
#. Config->RSS edit button
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Edit"
|
||||
@@ -4473,6 +4498,14 @@ msgstr "删除"
|
||||
msgid "Filename"
|
||||
msgstr "文件名"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Toggle SABnzbd navigation menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Open SABnzbd main menu"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Free Space"
|
||||
msgstr "剩余空间"
|
||||
@@ -4481,6 +4514,10 @@ msgstr "剩余空间"
|
||||
msgid "Temp Folder"
|
||||
msgstr "临时文件夹"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Clear search"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Multi-Operations"
|
||||
msgstr "多选操作"
|
||||
@@ -4489,6 +4526,10 @@ msgstr "多选操作"
|
||||
msgid "Hold shift key to select a range"
|
||||
msgstr "按 shift 键可选择范围"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Select job"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Check all"
|
||||
msgstr "全选"
|
||||
@@ -4725,6 +4766,10 @@ msgstr "所有用户名、密码和 API 密钥都会自动从日志和包含的
|
||||
msgid "Sort by % downloaded <small>Most→Least</small>"
|
||||
msgstr "按下载百分比排序 <small>最多→最少</small>"
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Remaining Size <small>Smallest→Largest</small>"
|
||||
msgstr ""
|
||||
|
||||
#: sabnzbd/skintext.py
|
||||
msgid "Sort by Age <small>Oldest→Newest</small>"
|
||||
msgstr "按发布时间排序 <small>最早→最新</small>"
|
||||
|
||||
+1
-1
@@ -4,7 +4,7 @@
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||
"Last-Translator: team@sabnzbd.org\n"
|
||||
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
|
||||
|
||||
+6
-2
@@ -4,12 +4,13 @@
|
||||
# Translators:
|
||||
# Pavel C <quoing_transifex@mess.cz>, 2022
|
||||
# Safihre <safihre@sabnzbd.org>, 2025
|
||||
# Iamanro, 2026
|
||||
#
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: SABnzbd-5.0.0\n"
|
||||
"Project-Id-Version: SABnzbd-5.1.0\n"
|
||||
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
|
||||
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2025\n"
|
||||
"Last-Translator: Iamanro, 2026\n"
|
||||
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
|
||||
"MIME-Version: 1.0\n"
|
||||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
@@ -43,6 +44,9 @@ msgid ""
|
||||
" only contains the regular version.\\nPress OK to continue or Cancel to "
|
||||
"exit."
|
||||
msgstr ""
|
||||
"Na naší stránce „Ke stažení“ je k dispozici verze SABnzbd pro architekturu "
|
||||
"ARM. Tento instalační program obsahuje pouze standardní verzi.\\nStiskněte "
|
||||
"tlačítko OK pro pokračování nebo Zrušit pro ukončení."
|
||||
|
||||
#: builder/win/NSIS_Installer.nsi
|
||||
msgid "Shutting down SABnzbd"
|
||||
|
||||
Loaded 100 of 257 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user