Compare commits

...

326 Commits

Author SHA1 Message Date
Safihre
900d3d6b71 Update text files for 4.1.0RC2 2023-09-12 22:32:40 +02:00
Safihre
2b3b5e02f5 Update sabctools to 7.1.2 2023-09-12 21:19:23 +02:00
Safihre
b1b75dcad2 Fail binary build if warning/error is present during test run 2023-09-12 21:18:10 +02:00
SABnzbd Automation
b558b1c6b4 Update translatable texts
[skip ci]
2023-09-11 20:35:47 +00:00
Safihre
9e58b97362 Update text files for 4.1.0RC1 2023-09-11 22:34:54 +02:00
thezoggy
1f4f4f1a5f Add par2cmdline-turbo as option for windows, still default to Multipar (#2674)
* Add par2cmdline as option for windows, still default to multipar.

* Fix tests and do not give par2cmdline long-paths on Windows

* Set enable_multipar to true

---------

Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-09-11 22:14:28 +02:00
Anthony Vanelverdinghe
bc705b5563 Use "All Users" locations for shortcuts on Windows (#2677)
* Use "all users" locations for shortcuts on Windows

* Use command inside section/function

* Copy edit

* Take both locations into account
2023-09-11 10:46:34 +02:00
SABnzbd Automation
677850e18a Update translatable texts
[skip ci]
2023-09-11 01:22:19 +00:00
renovate[bot]
1f2c3af660 Update all dependencies 2023-09-11 01:21:37 +00:00
Hans Kristian Rosbach
667ffec667 Add support for finding updated 7-Zip versions on Linux (#2673) 2023-09-04 15:40:26 +02:00
renovate[bot]
9837c23daf Update all dependencies 2023-09-04 01:22:32 +00:00
Safihre
ab3bef3d2f Use par2cmdline-turbo v1.1.0 for macOS release
#2613
2023-09-02 09:32:57 +02:00
Safihre
58cb710d38 Improve Night-mode display of folder selection 2023-09-01 15:34:44 +02:00
Safihre
afbb340f8d Replace $ by jQuery in templates to help IDE's parse the Javascript 2023-09-01 15:26:22 +02:00
Safihre
f378741152 Make server-ad release dependant 2023-09-01 12:29:32 +02:00
Safihre
9f88bda8e5 Remove old upgrade notice from release notes 2023-08-30 15:00:45 +02:00
Safihre
33ebb1593f Small walrus operator refactor 2023-08-30 15:00:27 +02:00
jcfp
b0b91bd002 set per-server connection limit to 500 (#2668) 2023-08-30 11:02:58 +02:00
Safihre
77518cf1f5 Correct title in release notes 2023-08-27 22:32:55 +02:00
SABnzbd Automation
8b329ed602 Update translatable texts
[skip ci]
2023-08-27 20:04:42 +00:00
Safihre
0b27b21e75 Update text files for 4.1.0Beta1 2023-08-27 22:01:56 +02:00
Safihre
d7da55c823 Update macOS Python to 3.11.5 2023-08-27 10:13:28 +02:00
SABnzbd Automation
e6c15e2f73 Update translatable texts
[skip ci]
2023-08-26 19:38:23 +00:00
thezoggy
c3dbd77c17 fixup dark theme handling for config/login with using auto or loading explicit night theme when set, minor dark skin fixes (#2665) 2023-08-26 21:37:43 +02:00
Safihre
f7901711a9 Just skip 7zip unpack if 7zip isn't present 2023-08-25 13:39:55 +02:00
Safihre
ec8fee0a75 Apply correct sanitizer in renamer
Closes #2664
2023-08-25 11:40:55 +02:00
Safihre
ca6ce3af09 Small formatting change 2023-08-25 10:57:20 +02:00
Safihre
65eaf0fc76 Temporarily remove sparse file support
This reverts commit a179f2a895.

Closes #2628
2023-08-25 09:51:40 +02:00
SABnzbd Automation
bfba8d10cf Update translatable texts
[skip ci]
2023-08-25 06:57:48 +00:00
Safihre
6cd89a5614 Restore Enable 7zip text 2023-08-25 08:56:55 +02:00
Safihre
16163c7c5f Do not trigger script-dir in program-dir warning incorrectly
https://forums.sabnzbd.org/viewtopic.php?p=130200
2023-08-23 14:58:03 +02:00
Safihre
0482fbed05 Experiment with Servers text-ad 2023-08-23 14:14:28 +02:00
Safihre
d0f1574893 Further improvements to dark mode 2023-08-22 12:29:54 +02:00
thezoggy
e64167bb99 Cancel purge log should stay on current page (#2660) 2023-08-21 06:30:03 +02:00
SABnzbd Automation
22098c5424 Update translatable texts
[skip ci]
2023-08-21 02:25:26 +00:00
renovate[bot]
273c56aa0b Update all dependencies 2023-08-21 02:24:37 +00:00
Safihre
a951361fa6 Update sabctools to 7.1.1 2023-08-16 09:54:15 +02:00
SABnzbd Automation
2795c3718b Update translatable texts
[skip ci]
2023-08-14 14:59:44 +00:00
Safihre
1a365bdefd Remove unzip support
Closes #2646
2023-08-14 16:58:41 +02:00
SABnzbd Automation
d3db70baab Update translatable texts
[skip ci]
2023-08-14 13:19:40 +00:00
Safihre
20324ad88b Update text files for 4.1.0Alpha1 2023-08-14 15:18:08 +02:00
Safihre
80f34bdf3e Further improve Config Dark Mode 2023-08-14 12:17:46 +02:00
renovate[bot]
f2dbdb95dc Update dependency orjson to v3.9.4 2023-08-14 04:38:56 +00:00
jcfp
0e3893122d ditch call to get_unique_filename in Sorter.rename (#2653) 2023-08-12 11:33:13 +02:00
SABnzbd Automation
831ff6e3ae Update translatable texts
[skip ci]
2023-08-10 20:06:51 +00:00
Safihre
b62d17cbee Convert several statements to walrus operator 2023-08-10 22:06:05 +02:00
Safihre
b95d6cfca0 Filename in NZB subject should be at least 6 characters
Closes #2650 #2649
2023-08-09 15:48:06 +02:00
SABnzbd Automation
d0d1876783 Update translatable texts
[skip ci]
2023-08-09 12:54:11 +00:00
Safihre
df23bf21ea Add option to purge all logs from Config > Folders 2023-08-09 14:53:15 +02:00
Safihre
934561e551 Show text-ad in New Server section 2023-08-09 10:15:07 +02:00
SABnzbd Automation
de6c560027 Update translatable texts
[skip ci]
2023-08-08 12:33:31 +00:00
Safihre
9c582fccc8 Small refactor of name_extractor 2023-08-08 14:32:41 +02:00
Andrew Lavryshyn
cab5c26e3e Add dark mode for wizard, config, and login (#2621)
* feat: add dark mode for wizard, config, and login

* combine the dark skins

* make the buttons the same as in Glitter

* load the night theme based on config setting

* Changes to darkmode

---------

Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-08-07 11:34:25 +02:00
Michael Nightingale
cca6dda9e6 Fix quick check of sets with duplicate files (#2645)
* Fix quick check of sets with duplicate files

* Add explanation and example of why sorting par fileset is necessary
2023-08-07 09:48:21 +02:00
renovate[bot]
77aea23007 Update all dependencies 2023-08-07 00:26:40 +00:00
SABnzbd Automation
42c5403bbe Update translatable texts
[skip ci]
2023-08-06 05:38:59 +00:00
thezoggy
b14dacd44d unrar 6.23 (#2647) 2023-08-06 07:38:14 +02:00
thezoggy
abd47ddcf7 add additional common ebook/audiobook (readarr) (#2643) 2023-08-04 22:37:49 +02:00
Safihre
8611e65fc6 Update reference to SABnzbd-Team 2023-08-04 17:12:01 +02:00
SABnzbd Automation
8663fe39e3 Update translatable texts
[skip ci]
2023-08-04 12:28:34 +00:00
Ricardo Christmann
4891213a88 Fix check-all checkbox state (#2639)
* Fix check-all checkbox state

* Refactor check-all fix
2023-08-04 14:27:48 +02:00
Safihre
828ea8e61a flat_unpack was not applied for 7Zip
Closes #2631
2023-08-02 14:32:02 +02:00
Safihre
f6fae7c0b8 Add comment why not all data could be written (#2634) 2023-08-02 14:05:45 +02:00
Michael Nightingale
b4b446e770 Ensure all data is written to file (#2634) 2023-08-02 14:04:43 +02:00
Safihre
9ff4fdaab8 Remove small SyntaxWarninh
Thrown by Python 3.12 in `-X dev` mode.
2023-08-02 13:54:00 +02:00
renovate[bot]
d3bfbb0642 Update dependency cryptography to v41.0.3 [SECURITY] 2023-08-02 08:29:36 +00:00
SABnzbd Automation
57ab0a05f7 Update translatable texts
[skip ci]
2023-07-31 01:32:12 +00:00
renovate[bot]
296aee9757 Update dependency more-itertools to v10 2023-07-31 01:31:29 +00:00
Safihre
3d8c408627 Usernames and passwords were not always sanitized from the log
Closes #2630
2023-07-26 09:51:03 +02:00
renovate[bot]
11cdb24558 Update dependency pyinstaller-hooks-contrib to v2023.6 2023-07-24 00:58:33 +00:00
Safihre
589cc69498 Convert forward slashes to backward slashes in par2 filenames
Closes #2626
2023-07-21 14:19:40 +02:00
SABnzbd Automation
6f17ab1f02 Update translatable texts
[skip ci]
2023-07-21 09:35:04 +00:00
Safihre
7cbbff727f Remove (almost) all references to unused team@sabnzbd.org 2023-07-21 11:33:51 +02:00
Ricardo Christmann
daa07ed2d2 Add multi-select to history (#2607)
* Add multi-select to history

* Fix checkbox state when multi-selecting on queue and history

* Refactor multi-select feat and fix for tabbed layout

* Fix failing ci tests

* Fixes and improvements
2023-07-20 21:41:47 +02:00
Safihre
b3ced3bb40 Restore Series Duplicate detection
Closes #2620
2023-07-19 15:49:01 +02:00
L2501
20127e5bcd add m4b file extension to known extensions (#2625) 2023-07-19 11:31:43 +02:00
Safihre
f7a5e462b7 Update 7zip to 23.01 2023-07-17 08:57:32 +02:00
renovate[bot]
728bc723c2 Update dependency praw to v7.7.1 2023-07-17 00:37:20 +00:00
renovate[bot]
b1f75ec35b Update dependency cryptography to v41.0.2 [SECURITY] 2023-07-15 01:51:06 +00:00
Safihre
1709c778a6 Remove redundant README.txt
Stupid mistake.
2023-07-10 15:27:24 +02:00
Safihre
769e110ffb Remove duplicate Reddit posting 2023-07-10 15:19:54 +02:00
Safihre
a0808d2d4c Release notes were not present in releases 2023-07-10 14:43:45 +02:00
Safihre
59bd38ddc7 Correct finding of release in appdata 2023-07-10 14:23:45 +02:00
renovate[bot]
000ecb5669 Update all dependencies 2023-07-10 02:06:30 +00:00
jcfp
8525f60488 add optional xff header verification to check_access (#2611)
* add optional xff header verification to check_access

* make xff ip checking code more readable
2023-07-05 20:12:59 +02:00
Sander
24329faf5c better docker detections: works for older and newer docker versions (#2606)
* better docker detections: works for Ubuntu 18.04 and 22.04

* DOCKER = False, needed for non-POSIX

---------

Co-authored-by: sander <san.d.erjonkers+github@gmail.com>
2023-07-03 15:10:34 +02:00
renovate[bot]
4a72c6fdf9 Update all dependencies 2023-07-03 00:54:33 +00:00
jcfp
8235c3048e add a grace period for expected filenames to show up (#2609) 2023-06-29 21:30:56 +02:00
jcfp
209e9f0573 add debug output to help with failures in functional sorting test (#2608) 2023-06-28 16:22:33 +02:00
SABnzbd Automation
9455121647 Update translatable texts
[skip ci]
2023-06-28 09:00:26 +00:00
Safihre
fa7a11617e Move "On failure, try alternative NZB" to Specials
Might be removed later.
2023-06-28 10:57:45 +02:00
Safihre
a6c62bc118 Build binary using Python 3.11.4 2023-06-28 10:00:33 +02:00
Michael Nightingale
dbf4073da4 Fix uu decoding when collapsing of lines starting with a doubled period is required (#2605) 2023-06-27 15:14:11 +02:00
renovate[bot]
552ca12bc1 Update dependency jaraco.functools to v3.8.0 2023-06-26 05:09:31 +00:00
renovate[bot]
e13968eec1 Update all dependencies 2023-06-26 00:40:59 +00:00
Safihre
2ce56c8581 Add newline after link to Downloads page in Reddit post 2023-06-23 21:45:53 +02:00
jcfp
8d6cc8c86a Fix sorting for #2551 (#2598)
* fix #2551

* add test data dirs

* move sorting test data into subdir

* undo change to sabnews.create_nzb
2023-06-23 09:06:57 +02:00
Safihre
488719de1e Convert various re statements to walrus operator 2023-06-21 21:38:32 +02:00
Safihre
8cb4011a44 Check if version is present appdata before releasing 2023-06-19 15:28:07 +02:00
Safihre
9ff0bab873 Additional logging to debug Direct Unpack 2023-06-18 22:17:36 +02:00
François M
3331738f2b Add versions to appdata (#2595) 2023-06-16 19:25:09 +02:00
Safihre
e768ceea96 Lock add/remove_socket in Downloader
See if we can resolve #2591
2023-06-16 15:48:54 +02:00
Safihre
cb4215910c Link to Downloads page was not included in Reddit post 2023-06-16 11:49:02 +02:00
Safihre
b9e014b8bd No longer * import AppKit and Foundation 2023-06-14 12:56:02 +02:00
Safihre
96f0743ce5 Update release script to post directly to r/usenet and include link 2023-06-13 14:00:25 +02:00
renovate[bot]
560766dfa0 Update all dependencies 2023-06-12 00:48:42 +00:00
thezoggy
a2bbccd3ea Unable to modify Sorters (#2587) 2023-06-09 13:51:24 +03:00
Safihre
5570b804ba Correct parameter in release script to merge PR of update 2023-06-07 17:22:28 +02:00
Safihre
3ff1d4b68c Move DirScanner Lock creation 2023-06-06 17:10:01 +02:00
Safihre
d19d3c382c Move ipv6_servers to be a Special bool 2023-06-06 16:53:41 +02:00
SABnzbd Automation
05a68a7506 Update translatable texts
[skip ci]
2023-06-06 14:50:57 +00:00
Safihre
9aacf4c780 Remove load_balancing option 2023-06-06 16:50:06 +02:00
Safihre
0390dc14c5 Remove test_ipv6 2023-06-06 16:32:49 +02:00
Safihre
1ee1ef836a Simplify get_server_addrinfo to just allow enabling or disabling IPv6
Closes #2553
2023-06-06 16:10:30 +02:00
SABnzbd Automation
bf1080ac5a Update translatable texts
[skip ci]
2023-06-06 13:52:44 +00:00
Safihre
ee4fdb9563 Remove useless AMBI_LOCALHOST 2023-06-06 15:51:45 +02:00
Michael Nightingale
a179f2a895 Write articles to correct offsets and use sparse files (#2574)
* Basic direct write implementation

* Correctly track file_position and only write continuous

* Direct write with sparse files

---------

Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-06-06 15:49:12 +02:00
Safihre
b4c3a4b19f Only initialize DirScanner Lock after starting event loop 2023-06-05 15:52:34 +02:00
renovate[bot]
71e203f19c Update all dependencies 2023-06-05 02:03:53 +00:00
jcfp
07283ba9ab Fix sorting lowercasing (#2584)
* run lowercasing on season pack setname

* also subject %fn to lowercasing

* add tests

* woops
2023-06-03 16:45:41 +02:00
renovate[bot]
decfb2c168 Update dependency cryptography to v41 [SECURITY] (#2583)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
2023-06-02 22:49:13 +02:00
Safihre
71778656da Correct reference to removed_from_queue in Direct Unpacker 2023-06-02 22:05:30 +02:00
Safihre
517d6e3e1a Update tests for ppslots 2023-06-02 21:48:44 +02:00
Safihre
e11e9e7201 Force full refresh after changing items-per-page
Closes #2416
2023-06-02 21:34:40 +02:00
Safihre
135b9336a4 Show active jobs post processing in tabbed layout
Closes #2580
2023-06-02 21:29:10 +02:00
Safihre
e0d4d4abbd Use more reliable marker if job is still active 2023-06-02 15:36:38 +02:00
Safihre
422b4fce7b Notification Script did not get environment variables 2023-05-31 21:16:15 +02:00
Safihre
e3a7226648 Move Notification Script Parameters to environment variable
Fixes #2549
2023-05-31 11:35:23 +02:00
Michael Nightingale
5b9fc86319 Fix uu decode workaround (#2573)
* Fix uu decode workaround

* Remove trailing junk test because workaround handles it
2023-05-29 14:20:01 +02:00
renovate[bot]
5afea2d3c7 Update dependency orjson to v3.8.14 2023-05-29 02:10:08 +00:00
SABnzbd Automation
5f942a6943 Update translatable texts
[skip ci]
2023-05-24 15:45:03 +00:00
Safihre
18075c5c51 Print last line in case of error
Closes #2566
2023-05-24 17:44:10 +02:00
Safihre
a728225782 Automatically merge website update during release 2023-05-24 09:38:15 +02:00
Safihre
3e6ae26710 Tray icon could not be disabled on macOS 2023-05-23 21:18:49 +02:00
Safihre
a8a4e442a8 Add PYTHONUNBUFFERED env variable for Python post-processing scripts 2023-05-23 20:34:38 +02:00
Safihre
c16e91734d Catch all errors during rarfile header parsing
Closes #2569
2023-05-22 10:23:28 +02:00
Safihre
bb9ad4b546 Disable buffering in POpen calls
Closes #2567
2023-05-22 10:10:46 +02:00
renovate[bot]
43045e5d4e Update all dependencies 2023-05-22 03:18:21 +00:00
Safihre
63c7dbdb4d Rely on POpen's text mode to handle encoding 2023-05-17 17:08:16 +02:00
Safihre
ef217bba90 Only open pipe for stdin when we actually need it 2023-05-17 16:52:59 +02:00
Safihre
ca9924c38f Only warn about sabctools linking if OpenSSL >= 1.1.1
Relates to #2421
2023-05-17 16:39:06 +02:00
SABnzbd Automation
c3c47507e7 Update translatable texts
[skip ci]
2023-05-16 11:18:41 +00:00
Safihre
dc237c752a Do not push local translations to allow modifications 2023-05-16 13:17:58 +02:00
SABnzbd Automation
08892c71b2 Update translatable texts
[skip ci]
2023-05-16 11:06:46 +00:00
Safihre
026717b7c2 Build binaries without dependencies 2023-05-16 13:05:23 +02:00
Michael Nightingale
be06290f6c Addnzbfile enums and keep empty (#2554)
* Add enum result to add_nzbfile

* Do not delete invalid single file NZBs if file could not be decoded

* Move enum to constants and make it a class
2023-05-15 14:28:49 +02:00
SABnzbd Automation
9ec55478c9 Update translatable texts
[skip ci]
2023-05-15 00:42:16 +00:00
renovate[bot]
4172b4a2a6 Update all dependencies 2023-05-15 00:41:05 +00:00
Safihre
59620c2217 Remove debugging code for Downloader sleep time
Seems your solution worked @puzzledsab!
2023-05-10 21:31:15 +02:00
SABnzbd Automation
c410c646b2 Update translatable texts
[skip ci]
2023-05-10 19:26:14 +00:00
Safihre
0b515996d7 Wrap Downloader in try/except
We need diagnostic info. No clue why we didn't do this before.
Relates to #2559
2023-05-10 21:24:28 +02:00
Safihre
8b9b8319a1 Warn users against using application directory as their Scripts Folder
Closes #2557
2023-05-10 21:16:49 +02:00
Safihre
161cf14519 Disabling a server during download doesn't stop it from downloading
Closes #2555
2023-05-10 10:28:18 +02:00
thezoggy
c6ac09e938 Disable sorting on pattern key so you can select text on it / prevent it from moving. (#2556) 2023-05-10 06:40:53 +02:00
Safihre
fde8f9d133 Allow longer binary startup during release quick-test 2023-05-08 17:04:45 +02:00
SABnzbd Automation
2bd222ca1c Update translatable texts
[skip ci]
2023-05-08 14:57:52 +00:00
Safihre
12228fe1fb Update Watched Folder text to include supported extensions
Relates to #2550
2023-05-08 16:56:32 +02:00
SABnzbd Automation
c63b2592f1 Update translatable texts
[skip ci]
2023-05-08 09:52:03 +00:00
Sander
e65980258c test writing long and unicode filenames (#2542)
* test writing long and unicode filenames

* Update sabnzbd/filesystem.py

Co-authored-by: Safihre <safihre@sabnzbd.org>

* Update sabnzbd/filesystem.py

Co-authored-by: Safihre <safihre@sabnzbd.org>

* Update sabnzbd/filesystem.py

Co-authored-by: Safihre <safihre@sabnzbd.org>

* Update sabnzbd/filesystem.py

Co-authored-by: Safihre <safihre@sabnzbd.org>

* test writing long and unicode filenames

* seperate function test_filesystem_capabilities

* rename test_filesystem_capabilities to filesystem_capabilities

* rename filesystem_capabilities to check_filesystem_capabilities

---------

Co-authored-by: sander <san.d.erjonkers+github@gmail.com>
Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-05-08 11:50:49 +02:00
SABnzbd Automation
bd0a90d2dd Update translatable texts
[skip ci]
2023-05-08 06:15:40 +00:00
renovate[bot]
33a7e92f4c Update dependency orjson to v3.8.12 2023-05-08 08:14:31 +02:00
Safihre
51d1a1994d Allow for more time to start and shutdown during testing
macOS sometimes needs more time
2023-05-03 14:53:46 +02:00
Safihre
835745e485 Remove PKG-INFO
Closes #2548
2023-05-03 14:25:03 +02:00
Safihre
bcb553d9f9 Move release actions to separate build step 2023-05-03 14:22:50 +02:00
Safihre
b73b8aae6a Post release notes to Reddit after release
Add praw to builder requirements
2023-05-03 14:22:50 +02:00
Safihre
51792e31a8 Add release to PR of new release 2023-05-02 10:45:48 +02:00
Safihre
636a391db3 Update appdata for 4.0.1 release 2023-05-01 21:36:13 +02:00
Safihre
57d5ed2f21 Add Windows Python 3.8 32bit to CI test
Since we also use it for the release.
2023-05-01 21:33:49 +02:00
Safihre
bbb1d1d908 Update sabctools to 7.0.2 2023-05-01 21:29:19 +02:00
François M
c5d8f52f03 Add releases tag (#2539)
* Add 3.7.2 release tag

* Add 4.0.0 placeholder
2023-05-01 21:23:30 +02:00
renovate[bot]
1b49e4a355 Update all dependencies 2023-05-01 02:16:27 +00:00
Safihre
878cb589c3 Show a better crash on Python <3.8 2023-04-30 21:37:16 +02:00
Safihre
53ce88d3d2 Make Config link to wiki dynamic 2023-04-26 22:24:53 +02:00
Safihre
85e9bea9e7 Make sure all paths are unique in deobfuscate
Closes #2535
2023-04-26 17:22:56 +02:00
Safihre
7c7f88ebb5 Correctly set version to 4.1.0-develop 2023-04-26 17:20:11 +02:00
SABnzbd Automation
cbd007b81a Update translatable texts
[skip ci]
2023-04-26 13:28:51 +00:00
Safihre
ac0438de42 Set version to 4.1.0-develop 2023-04-26 15:27:31 +02:00
Safihre
b73699be8d Allow 20 min for CI tests 2023-04-25 17:12:31 +02:00
SABnzbd Automation
bc87b6e955 Update translatable texts
[skip ci]
2023-04-25 14:48:40 +00:00
Safihre
f15155ddc9 Add Keyboard shortcut hint in the Status window
Closes sabnzbd/sabnzbd.github.io/issues/235
2023-04-25 16:47:24 +02:00
renovate[bot]
37b556012e Update all dependencies 2023-04-24 05:38:50 +00:00
SABnzbd Automation
79ba3dd874 Update translatable texts
[skip ci]
2023-04-23 19:40:19 +00:00
Safihre
28795c3158 Re-ordering Sorters was not possible after refactor
Closes #2536
2023-04-23 21:38:57 +02:00
SABnzbd Automation
935d248b53 Update translatable texts
[skip ci]
2023-04-19 14:52:21 +00:00
Safihre
b2103afe30 Update text files for 4.0.0RC1 2023-04-19 16:51:05 +02:00
Safihre
fcbc4e420e Add locking to __reset_nw
Relates to #2533
2023-04-19 13:21:15 +02:00
Safihre
19fcda877f Show Sorting edit details when clicking on display data 2023-04-19 12:35:34 +02:00
SABnzbd Automation
48cd93ef93 Update translatable texts
[skip ci]
2023-04-19 10:19:27 +00:00
Safihre
80fd39826b Add Quick Start suggestions when user has no Sorters defined 2023-04-19 12:17:50 +02:00
Safihre
50c7d1531b Store yEnc-detected begin and size
We will use this later, see #2526
2023-04-17 22:02:09 +02:00
SABnzbd Automation
657c6f2b7d Update translatable texts
[skip ci]
2023-04-17 05:12:52 +00:00
renovate[bot]
e7484fac09 Update all dependencies 2023-04-17 05:11:37 +00:00
Safihre
613ec9c48c Try to fix armhf Snap build 2023-04-14 12:43:41 +02:00
SABnzbd Automation
322050efd8 Update translatable texts
[skip ci]
2023-04-14 09:34:13 +00:00
Safihre
5242368343 Add possibility to mark Option's as non-public
Closes #2489
2023-04-14 11:18:15 +02:00
Safihre
564151e520 Resolve HTML code issues 2023-04-13 13:39:36 +02:00
Safihre
b40220cb73 Only convert old-style sorters if they were enabled 2023-04-13 13:14:18 +02:00
Safihre
2ebac74049 Correct HTML for Sorting page 2023-04-13 12:57:27 +02:00
SABnzbd Automation
8ede63a960 Update translatable texts
[skip ci]
2023-04-12 21:06:53 +00:00
Safihre
38a0cc39e6 Improve preset display for Sorters 2023-04-12 22:28:37 +02:00
SABnzbd Automation
b482b61770 Update translatable texts
[skip ci]
2023-04-12 15:19:07 +00:00
Safihre
36a6f6e151 First refactor of new Sorting page
@jcfp FYI :)
2023-04-12 17:17:51 +02:00
Safihre
0c45883649 Remove Windows firewall rules on uninstall and prevent duplicating them
Closes #2528
2023-04-12 16:12:22 +02:00
renovate[bot]
c243144009 Update all dependencies 2023-04-10 07:24:25 +00:00
Safihre
4e2df006e7 Use correct pip call to update pip itself on Windows 2023-04-08 22:15:55 +02:00
SABnzbd Automation
02964d3bef Update translatable texts
[skip ci]
2023-04-08 20:09:29 +00:00
Safihre
c0e50aac48 Update text files for 4.0.0Beta2 2023-04-08 22:08:18 +02:00
Safihre
6c0804ba4f Correctly handle broken par2 files
Closes #2517
2023-04-07 22:39:32 +02:00
Safihre
708b13dd71 Prevent orphaned Article objects resulting in ghost files
Relates to #2521, #2517
2023-04-06 21:41:40 +02:00
Safihre
eb64e054b5 Refactor par2file 2023-04-06 21:11:34 +02:00
SABnzbd Automation
c42f7f930c Update translatable texts
[skip ci]
2023-04-04 17:36:21 +00:00
Sander
44c1d7306d Bigger files (50 and 100MB) for internet speed testing (#2524)
Co-authored-by: sander <san.d.erjonkers+github@gmail.com>
2023-04-04 19:35:06 +02:00
SABnzbd Automation
2413c22a51 Update translatable texts
[skip ci]
2023-04-03 07:37:32 +00:00
Safihre
31fefb4f86 Actually remove the RAR inspection traceback logging 2023-04-03 09:36:25 +02:00
renovate[bot]
745fd81aa1 Update all dependencies 2023-04-03 05:39:09 +00:00
Safihre
f7bf1567c1 Add sleep between Transifex push and pull 2023-04-02 21:30:49 +02:00
Safihre
02021a09b1 Don't show traceback on RAR-inspection failure
Closes #2482
2023-04-02 21:30:49 +02:00
SABnzbd Automation
6411d32228 Update translatable texts
[skip ci]
2023-04-02 19:22:43 +00:00
Safihre
56287e8094 Small refactor of Server-methods 2023-04-02 14:16:02 +02:00
thezoggy
62f70fd628 Set min-width to make macos chrome behave like others (#2518) 2023-03-29 09:16:00 +02:00
Thomas
dcca2c5821 Check for errors when creating the download path (#2516)
Fixes https://github.com/sabnzbd/sabnzbd/issues/2515.
2023-03-28 17:54:39 +02:00
dependabot[bot]
d22f2296c2 Bump actions/stale from 7 to 8 (#2514)
Bumps [actions/stale](https://github.com/actions/stale) from 7 to 8.
- [Release notes](https://github.com/actions/stale/releases)
- [Changelog](https://github.com/actions/stale/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/stale/compare/v7...v8)

---
updated-dependencies:
- dependency-name: actions/stale
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-03-27 13:56:25 +02:00
SABnzbd Automation
2e0ea5d085 Update translatable texts
[skip ci]
2023-03-27 05:49:28 +00:00
renovate[bot]
cb4526e8e2 Update all dependencies 2023-03-27 05:48:30 +00:00
puzzledsab
fc3132cd77 Set maximum soft sleep time to 0.15 seconds (#2510) 2023-03-22 21:34:51 +01:00
Michael Nightingale
e474db33ec Check speedlimit after each recv (#2509) 2023-03-20 21:55:10 +01:00
jcfp
6274d2b250 avoid traceback after postproc script (#2508) 2023-03-20 19:28:51 +01:00
puzzledsab
d4bfdaa29e Tweak assembler queue variables for smoother download (#2505) 2023-03-20 08:47:51 +01:00
renovate[bot]
3b7f5f5ce0 Update all dependencies 2023-03-20 05:05:53 +00:00
Safihre
496e2f1840 Bring BPSMeter and Assembler check back in main loop 2023-03-19 22:23:50 +01:00
Safihre
98f3c055d7 Ignore resource fork files created by macOS
Closes #2380
2023-03-19 21:41:31 +01:00
Safihre
7df36ce8b4 switchinterval should be a positive number
Closes #2504
2023-03-17 21:32:23 +01:00
SABnzbd Automation
5deaca45c2 Update translatable texts
[skip ci]
2023-03-16 21:41:31 +00:00
Safihre
e790757855 Update text files for 4.0.0Beta1 2023-03-16 22:40:22 +01:00
jcfp
46b2c6494f only save series_info in the history db for job type "tv" (#2496)
* only save series_info for job type "tv"

* make analyse_show return a dictionary
2023-03-16 22:23:45 +01:00
Sander
c4216a4075 Deobfuscate filenames ON by default (#2493)
* Deobfuscate ON by default

* Correct data test set: filename that is not obfuscated. Except test_par2file

* Correct data test set: filename that is not obfuscated. Except test_par2file

* Commented out test in test_par2file.py

* Commented out test in test_par2file.py

* assert for unicode_rar 我喜欢编程 now working too

---------

Co-authored-by: sander <san.d.erjonkers+github@gmail.com>
2023-03-15 22:31:09 +01:00
SABnzbd Automation
375412aa42 Update translatable texts
[skip ci]
2023-03-15 17:04:36 +00:00
thezoggy
895ac56eb3 change regex for hash from md5 to more generic to catch more hashes (ex: apikey in rss feed), and hide email_from as well (#2499) 2023-03-15 18:03:22 +01:00
SABnzbd Automation
c593388ec6 Update translatable texts
[skip ci]
2023-03-14 07:05:56 +00:00
jakepez
1c6960fe44 Corrected msgids - msgid "Pause * prioirty jobs" spelling error (#2501)
* Corrected msgid spelling error

* Reverted change to en.po as requested
2023-03-14 08:04:53 +01:00
Safihre
e7ac2ffd6c Broaden renovate trigger window 2023-03-13 12:49:27 +01:00
SABnzbd Automation
df35e54fba Update translatable texts
[skip ci]
2023-03-10 20:37:03 +00:00
puzzledsab
15f757ae04 Make cleanup_list use scandir and keep main nzb directory even if it's empty (#2497)
* Make cleanup_list use scandir and keep main nzb directory even if it's empty

* Use entry.path
2023-03-10 21:35:45 +01:00
Safihre
b7dc15099c Change quote style of Stale action condition 2023-03-10 08:38:37 +01:00
jcfp
dc33c67f48 fix extra info fields for pre-q scripts (#2494) 2023-03-09 17:34:38 +01:00
SABnzbd Automation
89fb517fd1 Update translatable texts
[skip ci]
2023-03-09 13:06:13 +00:00
jcfp
51eb94dbe9 Sorter fixes (#2492)
* fix typos (closes #2488)

* fix logic errors in prepare_extraction_path (closes #2490, closes #2491)
2023-03-09 14:05:01 +01:00
Safihre
03747f618f Do not run Stale action on forks 2023-03-08 09:55:12 +01:00
SABnzbd Automation
8154322448 Update translatable texts
[skip ci]
2023-03-08 08:54:04 +00:00
Safihre
7531ae2749 Replace Stale-bot by Stale-action 2023-03-08 09:52:23 +01:00
SABnzbd Automation
32515172d3 Update translatable texts
[skip ci]
2023-03-06 21:24:14 +00:00
Safihre
3b500ecf69 Update text files for 4.0.0 Alpha 3 2023-03-06 22:23:11 +01:00
SABnzbd Automation
b93dd4751d Update translatable texts
[skip ci]
2023-03-06 21:14:18 +00:00
jcfp
d651f8db34 Replace series/date/movie sorters with a generic one + season pack handling (#2461)
* replace series/date/movie sorters with a generic sorter

* fix test_eval_sort on windoze

* unbreak and de-uglify the fix

* add special setting for season pack sorting

* remove unused import

* replace series/date/movie sorters with a generic sorter

* fix test_eval_sort on windoze

* unbreak and de-uglify the fix

* add special setting for season pack sorting

* remove unused import

* correct type for sort_type entries

* standardize ui

* add visual hints for drag-n-drop

* move presets directly below sort string field

* replace hex with ascii letters to avoid random occurences of (cd|e)[0-9]+

* Some styling things

---------

Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-03-06 22:13:12 +01:00
Safihre
3f8f7d21d0 Revert "Make renovate config less strict on when it runs on Monday"
This reverts commit a1d51502c4.
2023-03-06 21:38:05 +01:00
renovate[bot]
824341e396 Update all dependencies 2023-03-06 15:32:27 +00:00
SABnzbd Automation
a972708d69 Update translatable texts
[skip ci]
2023-03-06 01:29:48 +00:00
renovate[bot]
47b305c83b Update all dependencies 2023-03-06 01:28:44 +00:00
SABnzbd Automation
2ec3da18f2 Update translatable texts
[skip ci]
2023-03-02 21:32:12 +00:00
Michael Nightingale
70aea9ac0c Decode articles as they are downloaded (#2476)
* Decode articles as they are downloaded

* Combine the recv and process methods

* Less cryptic futures

* Lock get_article because it can be called by multiple threads within the pool

* Add handle_process_nw_result

* Use add_socket helper

* Lock finish_connect_nw

* Add locks and remove callback

* Use same lock for updating nzo statistics

* Remove None typing

* Add downloader lock

* read_fds by index because it will never fail

* Use downloader lock
2023-03-02 22:31:11 +01:00
Safihre
38270bf4e2 Do not auto-update sabctools
We will do it manually when needed, as it also requires the constants.py value to be updated.
2023-02-28 22:00:04 +01:00
thezoggy
05d58ca0da update unrar to 6.21 (#2479) 2023-02-28 11:42:42 +01:00
Safihre
91aab54b43 Update sabctools 2023-02-28 10:40:20 +00:00
renovate[bot]
25d552c09e Update all dependencies 2023-02-28 10:40:20 +00:00
Safihre
a1d51502c4 Make renovate config less strict on when it runs on Monday 2023-02-24 08:07:35 +01:00
SABnzbd Automation
883d1dfa19 Update translatable texts
[skip ci]
2023-02-22 22:05:59 +00:00
Safihre
f94c48b27c Update text files for 4.0.0 Alpha 2 2023-02-22 23:04:54 +01:00
puzzledsab
0734547aec Make switchinterval configurable (#2473) 2023-02-22 13:22:57 +01:00
puzzledsab
8ab87d9844 Re-add last_max_chunk_size (#2472)
* Update last_max_chunk_size for each call to recv

* Reduce _DEFAULT_CHUNK_SIZE
2023-02-21 08:19:15 +01:00
jcfp
21b3b85e6e convert tests to tavern 2.0.0+ (#2468) 2023-02-20 17:08:22 +00:00
Michael Nightingale
45ccac3bc4 Decode UU with bytearray (#2466)
* Decode UU with bytearray

* Revert changed test
2023-02-19 17:32:02 +01:00
SABnzbd Automation
0b95b0b94b Update translatable texts
[skip ci]
2023-02-19 13:51:37 +00:00
Safihre
501b370dc0 Remove unused sched_converted 2023-02-19 14:44:08 +01:00
Safihre
2058a4b639 Update text files for 4.0.0Alpha1 2023-02-19 14:27:40 +01:00
Safihre
266823a81e Update macOS Python to 3.11.2 2023-02-19 14:07:13 +01:00
puzzledsab
6cd5713baa Translate ascii control chars below value 32 to _ (#2463)
* Translate ascii control chars below value 32

* Try to make code and tests consistent

* More test fixing

* Delete too much

* Different approach

* Finally got it?

* Start from 0

* Convert \0 to _ for all systems

* Check if CH_ILLEGAL_WIN is translated to CH_LEGAL_WIN

* Test specific chars
2023-02-18 22:48:00 +01:00
Safihre
e9038de819 Update sabctools to 6.1.0 2023-02-18 14:48:46 +01:00
Safihre
9129b681dc Only test wiki-entries consistency on develop 2023-02-17 21:50:24 +01:00
SABnzbd Automation
1f2b602638 Update translatable texts
[skip ci]
2023-02-17 07:18:41 +00:00
Michael Nightingale
87d9de1009 Only allocate disk speed random data when required (#2460) 2023-02-17 08:17:33 +01:00
Safihre
81a6db2190 Update test for defaulting to SSL 2023-02-15 23:06:18 +01:00
Michael Nightingale
dbd335fd3b Improve dirscanner performance and reduce system calls (#2434)
* Improve dirscanner performance and reduce system calls

* Break up one liners

* Rename functions and add typings

* yield from instead of looping

* Fix optional typing

* Replace threads with asyncio

* Use full module path

* Replace list comprehension with for loop

* Give other coroutines a chance to run if we ignore a path

* Remove uncesserary unnecessary asyncio.sleep on skipped path

* Catch and report all exceptions within the scanner task to the user to ensure the overall scanner task cannot crash

* Log traceback
2023-02-15 22:57:09 +01:00
Safihre
84fc6e7a7a Enable Newsserver SSL by default 2023-02-15 22:52:32 +01:00
SABnzbd Automation
f851f10ee1 Update translatable texts
[skip ci]
2023-02-14 22:02:17 +00:00
Safihre
0d92d9f9bd Update references to 4.0.x 2023-02-14 22:57:23 +01:00
puzzledsab
73fce52df1 Threaded polling of connections (#2438)
* Threaded polling of connections

* Do speed limit check after handling

* Use ThreadPoolExecutor, remove code for updating recv_threads while running

* Get newswrapper inside try

* Change default settings to 2 threads

---------

Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-02-14 22:17:24 +01:00
SABnzbd Automation
14223d239a Update translatable texts
[skip ci]
2023-02-14 20:55:48 +00:00
Safihre
a3daa7b257 Increase threshold for logging excessive sleep time
Closes #2458
2023-02-14 21:54:41 +01:00
SABnzbd Automation
a70f943462 Update translatable texts
[skip ci]
2023-02-13 02:39:27 +00:00
renovate[bot]
a717260574 Update all dependencies 2023-02-13 02:38:27 +00:00
Safihre
90a4898dbd Use walrus operator in several places 2023-02-11 22:34:53 +01:00
Safihre
4543d9e975 Log decode cache limit and assembler trigger 2023-02-11 17:33:24 +01:00
jcfp
2aedd20007 Include https config files in backup (#2450)
* include https config files in backup

* add constants for default https config filenames

* refresh test_config, add coverage for https backup

* remove some unicode from the tests

* On Windows we use long-paths

---------

Co-authored-by: Safihre <safihre@sabnzbd.org>
2023-02-11 09:21:22 +01:00
renovate[bot]
822e1cbfb5 Update dependency cryptography to v39.0.1 [SECURITY] 2023-02-08 05:40:16 +00:00
puzzledsab
0ec082669d Gradual slowdown on filling queues (#2439)
* Gradual slowdown on filling queues

* Move delayed counters to new slowdown check, otherwise they will rarely trigger

* Simplify the full decoder part a bit

* Reduce sleep aggressiveness a bit

* Make a constant for the queue level slowdown limit

* Rename the slowdown limit variable and put it in constants with the other queue limit variables

* Also constants...

* Make black happy
2023-02-07 23:24:57 +01:00
puzzledsab
5315eeb26b Write first article directly (#2443)
* Write first article directly

* Add first article to assembler in usual place instead of ArticleCache

* Remove redundant deref

* Update comment to reflect new code

* Partly restore old code

* First article should not always be added to the queue if SAB has started downloading the other parts

* Yet another redundant deref :(
2023-02-05 22:29:38 +01:00
puzzledsab
32bd5a4cca Let the assembler write trigger scale with the size of the cache (#2436) 2023-02-05 20:47:27 +01:00
jcfp
e4ec774d16 restore startup history purge (#2449) 2023-02-04 19:13:46 +01:00
puzzledsab
b1ce21ad77 Reduce useless logging (#2448) 2023-02-03 14:14:57 +01:00
puzzledsab
9ab5e86c81 Make downloader use received buffer size to determine if it's ok to sleep (#2424)
* Make downloader use used buffer size to determine if it's ok to sleep

* Log number of times slept and average time slept last 10 seconds

* Log if downloader slept much too long

* Improvements to sleep debugging

* Remove get_stable_speed
2023-02-02 10:25:02 +01:00
renovate[bot]
ea3442ad27 Update dependency setuptools to v67 2023-02-01 19:54:56 +00:00
puzzledsab
e1af02a642 Don't crash on invalid yenc footer (#2440)
* Don't crash on invalid yenc footer

* What he said

* Forgot to remove debug print
2023-02-01 20:44:12 +01:00
Safihre
fe0c4e4f92 Update formatting with black 23 rules 2023-02-01 20:42:06 +01:00
puzzledsab
5e58fdf821 Don't immediately add new article if downloading should be stopped (#2429)
* Don't immediately add new article if downloading should be stopped

* VS Code black and Github black don't agree
2023-01-28 18:42:55 +01:00
SABnzbd Automation
01537c03b1 Update translatable texts
[skip ci]
2023-01-26 22:19:13 +00:00
Safihre
b78f4d13c1 Update Unrar to 6.20
Closes #2325
2023-01-26 23:15:09 +01:00
Safihre
ba68243dc7 Drop official support for Python 3.7 for the next major release 2023-01-25 23:02:33 +01:00
SABnzbd Automation
b742971d9b Update translatable texts
[skip ci]
2023-01-25 21:41:02 +00:00
Safihre
6492cfb430 Update copyright year to 2023 2023-01-25 22:39:49 +01:00
puzzledsab
c229adcbb9 Immediately request new article after the previous was done (#2423)
* Immediately request new article after the previous was done

* Add server.get_article method
2023-01-25 22:36:49 +01:00
puzzledsab
abb08a4589 Various minor changes and fixes (#2422) 2023-01-24 22:40:18 +01:00
Safihre
5ccc124ad4 Print status of OpenSSL link during start-up and request feedback 2023-01-24 17:28:43 +01:00
SABnzbd Automation
db22fea0d1 Update translatable texts
[skip ci]
2023-01-24 16:22:05 +00:00
Safihre
7ebd12ec3d Rename sabyenc3 to sabctools 2023-01-24 17:06:53 +01:00
Safihre
ac0e57726f Replace crc32calc with C-version 2023-01-24 17:06:36 +01:00
Safihre
e3200b1481 Apply changes need for updates to buffer_decode 2023-01-24 17:06:36 +01:00
Safihre
5492935c32 Use buffer-based sabyenc3 2023-01-24 17:06:32 +01:00
puzzledsab
2a67d80057 Stop using 0 as failed and use new crc32 value in SFV check (#2411)
* Stop using 0 as failed and use new crc32 value in SFV check

* Make nzf.crc32sum differentiate between uninitialized, valid and invalid CRC32 value

* Replace crc32sum with assembled and use crc32 value instead
2023-01-24 17:06:32 +01:00
puzzledsab
7956a75344 Call getsize in try and use CRC32 from sabyenc (#2409)
* Call getsize in try and use CRC32 from sabyenc

* Always fail if crc32sum is 0
2023-01-24 17:06:32 +01:00
puzzledsab
cfa82e5086 CRC32 check (#2407)
* Only set on_disk and don't set decoded until article is saved to cache (#2403)

* Mark unavailable articles as saved

* Save broken article if a valid one doesn't exist

* Change bad article message a bit

* Reduce to only set on_disk and don't set decoded until article is saved to cache

* Use CRC32 from PAR2 instead of MD5

* Move crc32calc.py to utils

* Update credits in crc32.py, use crc32 in test_par2file.py

* Various smaller changes to CRC32 patch

* Handle unfinished par2 files better

* Optimized crc32 calculations

* Rename md5sum to crc32sum and include filesize check
2023-01-24 17:06:32 +01:00
Safihre
60291a93c2 Use buffer per connection 2023-01-24 17:06:18 +01:00
Safihre
51fec1c5a0 Use new sabyenc3.unlocked_ssl_recv_into 2023-01-24 17:06:18 +01:00
Safihre
5b8c5e2fd7 Allocate only once a buffer for each connection 2023-01-24 17:06:18 +01:00
renovate[bot]
5a0fd6ee08 chore(deps): update all dependencies 2023-01-23 06:09:10 +00:00
renovate[bot]
d7d3810874 chore(deps): update all dependencies 2023-01-16 00:18:57 +00:00
SABnzbd Automation
f0819c339c Update translatable texts
[skip ci]
2023-01-15 12:36:21 +00:00
277 changed files with 9546 additions and 7552 deletions

View File

@@ -5,7 +5,7 @@
":disableDependencyDashboard"
],
"schedule": [
"before 3am on Monday"
"before 8am on Monday"
],
"ignorePaths": [
"tests/**",
@@ -15,11 +15,13 @@
"fileMatch": [
"requirements.txt",
"builder/requirements.txt",
"builder/release-requirements.txt",
"builder/osx/requirements.txt"
]
},
"ignoreDeps": [
"jaraco.text"
"jaraco.text",
"sabctools"
],
"packageRules": [
{

23
.github/stale.yml vendored
View File

@@ -1,23 +0,0 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 21
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- "Feature request"
- "Work in progress"
- "Bug"
# Label to use when marking an issue as stale
staleLabel: "Stale"
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
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.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

View File

@@ -4,7 +4,6 @@ on: [push, pull_request]
# Setting PYTHONNODEBUGRANGES reduces binary size
env:
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
PYTHONNODEBUGRANGES: 1
jobs:
@@ -25,16 +24,15 @@ jobs:
with:
custom_virtualenv_dir: "venv64"
custom_cache_key_element: "release"
requirement_files: |
**/requirements.txt
PKG-INFO
requirement_files: "**/requirements.txt"
- name: Install Python dependencies (64bit)
if: steps.cache-virtualenv-64bit.outputs.cache-hit != 'true'
# Without dependencies to make sure everything is covered in the requirements.txt
run: |
python --version
pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
pip install --upgrade -r builder/requirements.txt
python -m pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt --no-dependencies
pip install --upgrade -r builder/requirements.txt --no-dependencies
- name: Build Windows standalone binary and installer (64bit)
run: python builder/package.py installer
- name: Upload Windows standalone binary (64bit)
@@ -58,14 +56,13 @@ jobs:
with:
custom_virtualenv_dir: "venv32"
custom_cache_key_element: "release"
requirement_files: |
**/requirements.txt
PKG-INFO
requirement_files: "**/requirements.txt"
- name: Install Python dependencies (32bit and legacy)
if: steps.cache-virtualenv-32bit.outputs.cache-hit != 'true'
# We do not care about the extra dependencies for the legacy build
run: |
python --version
pip install --upgrade pip wheel
python -m pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
pip install --upgrade -r builder/requirements.txt
- name: Build Windows standalone binary (32bit and legacy)
@@ -75,9 +72,6 @@ jobs:
with:
path: "*-win32-bin.zip"
name: Windows Windows standalone binary (32bit and legacy)
- name: Prepare official release
if: env.AUTOMATION_GITHUB_TOKEN && startsWith(github.ref, 'refs/tags/')
run: python builder/package.py release
build_macos:
name: Build macOS binary
@@ -87,7 +81,7 @@ jobs:
# We need the official Python, because the GA ones only support newer macOS versions
# The deployment target is picked up by the Python build tools automatically
# If updated, make sure to also set LSMinimumSystemVersion in SABnzbd.spec
PYTHON_VERSION: "3.11.1"
PYTHON_VERSION: "3.11.5"
MACOSX_DEPLOYMENT_TARGET: "10.9"
# We need to force compile for universal2 support
CFLAGS: -arch x86_64 -arch arm64
@@ -113,15 +107,14 @@ jobs:
id: cache-virtualenv
with:
custom_cache_key_element: "release"
requirement_files: |
**/requirements.txt
PKG-INFO
requirement_files: "**/requirements.txt"
- name: Install Python dependencies
# We have to manually take a few steps:
# 1. Because building cryptography is hard, and we cannot force pip to fetch universal2 version we
# first install the x86 version (and it's dependencies) and then manually fetch the universal2 build
# https://github.com/pyca/cryptography/issues/5918
# 2. We need to build the PyInstaller bootloader:
# 2. Due to PyObjC we cannot run pip on the main requirements without installing dependencies
# 3. We need to build the PyInstaller bootloader:
# https://github.com/pyinstaller/pyinstaller/issues/6235
if: steps.cache-virtualenv.outputs.cache-hit != 'true'
run: |
@@ -134,7 +127,7 @@ jobs:
pip3 download -r builder/osx/requirements.txt --platform macosx_10_12_universal2 --only-binary :all: --no-deps --dest .
pip3 install -r builder/osx/requirements.txt --no-cache-dir --no-index --find-links .
PYINSTALLER_COMPILE_BOOTLOADER=1 pip3 install --upgrade -r builder/requirements.txt --no-binary pyinstaller
PYINSTALLER_COMPILE_BOOTLOADER=1 pip3 install --upgrade -r builder/requirements.txt --no-binary pyinstaller --no-dependencies
- name: Import macOS codesign certificates
# Taken from https://github.com/Apple-Actions/import-codesign-certs/pull/27 (comments)
env:
@@ -171,23 +164,34 @@ jobs:
with:
path: "*-osx.dmg"
name: macOS binary (not notarized)
- name: Prepare official release
if: env.AUTOMATION_GITHUB_TOKEN && startsWith(github.ref, 'refs/tags/')
run: python3 builder/package.py release
release_snap:
name: Release Snap
release:
name: Publish Release
runs-on: ubuntu-latest
needs: [build_windows, build_macos]
if: github.event_name == 'push' && contains(github.ref, 'refs/tags/')
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }}
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v4
with:
python-version: "3.x"
- name: Download all artifacts
uses: actions/download-artifact@v3
with:
path: dist
- name: Move all artifacts to main folder
run: find dist -type f -exec mv {} . \;
- name: Prepare official release
env:
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
REDDIT_TOKEN: ${{ secrets.REDDIT_TOKEN }}
run: |
pip3 install -r builder/release-requirements.txt
python3 builder/release.py
- name: Release latest available Snap
env:
SNAPCRAFT_STORE_CREDENTIALS: ${{ secrets.SNAP_TOKEN }}
run: |
sudo snap install snapcraft --classic
python3 snap/local/release_snap.py

View File

@@ -20,34 +20,42 @@ jobs:
builder/SABnzbd.spec
tests
--line-length=120
--target-version=py37
--target-version=py38
--check
--diff
test:
name: Test ${{ matrix.name }} - Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
timeout-minutes: 15
timeout-minutes: 20
strategy:
fail-fast: false
matrix:
python-version: ["3.7", "3.8", "3.9", "3.10", "3.11"]
python-version: ["3.8", "3.9", "3.10", "3.11"]
python-architecture: ["x64"]
name: ["Linux"]
os: [ubuntu-20.04]
include:
- name: macOS
os: macos-latest
python-version: "3.11"
python-architecture: "x64"
- name: Windows
os: windows-latest
python-version: "3.11"
python-architecture: "x64"
- name: Windows (32bit)
os: windows-latest
python-version: "3.8"
python-architecture: "x86"
steps:
- uses: actions/checkout@v3
- name: Set up Python ${{ matrix.python-version }}
- name: Set up Python ${{ matrix.python-version }} ${{ matrix.python-architecture }}
uses: actions/setup-python@v4
with:
python-version: ${{ matrix.python-version }}
architecture: "x64"
architecture: ${{ matrix.python-architecture }}
- name: Install system dependencies
if: runner.os == 'Linux'
run: sudo apt-get install unrar p7zip-full par2
@@ -55,15 +63,13 @@ jobs:
uses: syphar/restore-virtualenv@v1.3
id: cache-virtualenv
with:
custom_cache_key_element: "ci"
requirement_files: |
**/requirements.txt
PKG-INFO
custom_cache_key_element: ci-${{ matrix.python-architecture }}
requirement_files: "**/requirements.txt"
- name: Install Python dependencies
if: steps.cache-virtualenv.outputs.cache-hit != 'true'
run: |
python --version
pip install --upgrade pip wheel
python -m pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
pip install --upgrade -r tests/requirements.txt
- name: Test SABnzbd

22
.github/workflows/stale.yml vendored Normal file
View File

@@ -0,0 +1,22 @@
name: "Close stale issues"
on:
schedule:
- cron: "30 1 * * *"
workflow_dispatch:
jobs:
stale:
name: "Close stale issues"
if: github.repository_owner == 'sabnzbd'
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v8
with:
days-before-stale: 21
days-before-close: 7
stale-issue-label: "Stale"
stale-issue-message: >
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"

View File

@@ -20,9 +20,11 @@ jobs:
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!
run: |
curl -o- https://raw.githubusercontent.com/transifex/cli/master/install.sh | bash
./tx push --translation --source
./tx push --source
./tx pull --all --force
- name: Compile translations to validate them
run: |
@@ -31,7 +33,7 @@ jobs:
uses: stefanzweifel/git-auto-commit-action@v4.16.0
if: env.TX_TOKEN
with:
commit_message: |
commit_message: |
Update translatable texts
[skip ci]
commit_user_name: SABnzbd Automation

View File

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

View File

@@ -4,7 +4,7 @@
0) LICENSE
-------------------------------------------------------------------------------
(c) Copyright 2007-2022 by "The SABnzbd-team" <team@sabnzbd.org>
(c) Copyright 2007-2023 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
@@ -52,10 +52,10 @@ 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.7 and above is supported.
Only Python 3.8 and above is supported.
On Linux systems you need to install:
par2 unrar unzip python3-setuptools python3-pip
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):

View File

@@ -1,4 +1,4 @@
(c) Copyright 2007-2022 by "The SABnzbd-team" <team@sabnzbd.org>
(c) Copyright 2007-2023 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

View File

@@ -1,10 +0,0 @@
Metadata-Version: 1.0
Name: SABnzbd
Version: 3.8.0-develop
Summary: SABnzbd-3.8.0-develop
Home-page: https://sabnzbd.org
Author: The SABnzbd Team
Author-email: team@sabnzbd.org
License: GNU General Public License 2 (GPL2 or later)
Description: Fully automated Usenet Binary Downloader
Platform: posix

View File

@@ -16,7 +16,7 @@ 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.7 and above, often called `python3`)
- `python` (Python 3.8 and above, often called `python3`)
- Python modules listed in `requirements.txt`. Install with `python3 -m pip install -r requirements.txt -U`
- `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)

View File

@@ -1,44 +1,35 @@
Release Notes - SABnzbd 3.7.0 Beta 1
Release Notes - SABnzbd 4.1.0 Release Candidate 2
=========================================================
## Changes since 3.6.1
- The queue and history can be filtered using keywords:
`cat` and `priority`. For example: `show name cat:tv`.
- Use shortcut `shift + arrow-key` to navigate the queue/history pages.
- The backup is now created in a local folder for security.
- Recurring backups can be configured using the scheduler.
- Improvements to Deobfuscate Final Filenames.
- RSS overview shows the rule that accepted the job.
- Added option to sort the queue by `% downloaded`.
- Added option to replace underscores with dots in folder names.
- SABnzbd Host input will be validated before being applied.
- Moved system load information from the main page to the Status window.
- Console logging is now written to `stdout` instead of `stderr`.
- Removed Special settings `enable_meta`, `disable_key`,
`replace_illegal`, `osx_speed` and `show_sysload`.
- Merged Special settings `win_menu` and `osx_menu` into `tray_icon`.
- macOS/Windows: Use Python 3.11rc2, boosting overall performance.
- macOS/Windows: Updated UnRar to 6.12.
- Windows: Updated MultiPar to 1.3.2.5.
## Changes since 4.0.3
- Added a dark mode for the Config, Login, and Wizard.
- Added multi-select to the History.
- Show the number of items in post-processing when in Tabbed mode.
- Added option `verify_xff_header` to include `X-Forwarded-For` when
validating if connections should be accepted when using a proxy.
- Added option to purge log files from the Folders Config page.
- Moved `Server IP address selection` and `On failure, try
alternative NZB` to Special settings.
- Special setting `ipv6_servers` changed to on/off.
- Only use 7zip to unpack zip files.
- Windows: Added option `enable_multipar` to use par2cmdline-turbo
instead of Multipar for verification and repair. It is faster,
but on Windows it can fail on special (UTF8) filenames.
- macOS: Switched to par2cmdline-turbo for verification and repair.
- Linux: Detect more recent versions of 7zip.
- Windows: Use `All Users` locations during installtion of shortcuts.
- Windows/macOS: Updated Python to 3.11.5, 7Zip to 23.01 and
UnRar to 6.23. All these updates include security fixes.
# API changes since 3.6.1
- Minor improvements in API call performance.
- Removed fields `scripts` and `categories` from `queue` API call.
- Moved `loadavg` from `queue` to `status` API call.
# Bugfixes since 3.6.1
- Free Space Detection was too strict when using Direct Unpack.
- File uploads with special characters would be parsed incorrectly.
- Passwords from NZB meta-data were tried multiple times.
- Passwords were not always supplied to the pre-queue script.
- RSS-feed names were not sanitized when renamed.
- Make sure short-dates are detected as `YY-MM-DD` in Sorting.
- Show the custom job name in History when the NZB could not be fetched.
## Upgrade notices
- The download statistics file `totals10.sab` is updated in 3.2.x
version. If you downgrade to 3.1.x or lower, detailed download
statistics will be lost.
## Bugfixes since 4.0.3
- Series duplicate detection did not detect duplicates.
- Sorting would append `.1` to some filenames.
- Not all API-keys were removed during log-sanitization.
- In certain situations, not all data would be written to disk.
- Folder names could be sanitized too eagerly.
- Some articles would fail to decode.
- QuickCheck could wrongly rename files with identical content.
- Warning about `Scripts Folder` location was triggered incorrectly.
## Known problems and solutions
- Read the file "ISSUES.txt"
@@ -50,4 +41,4 @@ Release Notes - SABnzbd 3.7.0 Beta 1
that automatically verify, repair, extract and clean up posts downloaded
from Usenet.
(c) Copyright 2007-2022 by "The SABnzbd-team" \<team@sabnzbd.org\>
(c) Copyright 2007-2023 by The SABnzbd-Team (sabnzbd.org)

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2007-2022 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2007-2023 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
@@ -17,8 +17,10 @@
import sys
if sys.hexversion < 0x03070000:
print("Sorry, requires Python 3.7 or above")
# Trick to show a better message on older Python
# releases that don't support walrus operator
if Python_38_is_required_to_run_SABnzbd := sys.hexversion < 0x03080000:
print("Sorry, requires Python 3.8 or above")
print("You can read more at: https://sabnzbd.org/wiki/installation/install-off-modules")
sys.exit(1)
@@ -40,6 +42,7 @@ import gc
from typing import List, Dict, Any
try:
import sabctools
import Cheetah
import feedparser
import configobj
@@ -76,6 +79,7 @@ from sabnzbd.constants import (
DEF_LOG_FILE,
DEF_STD_CONFIG,
DEF_LOG_CHERRY,
CONFIG_BACKUP_HTTPS,
)
import sabnzbd.newsunpack
from sabnzbd.misc import (
@@ -240,7 +244,7 @@ def print_version():
"""
%s-%s
Copyright (C) 2007-2022 The SABnzbd-Team <team@sabnzbd.org>
Copyright (C) 2007-2023 The SABnzbd-Team (sabnzbd.org)
SABnzbd comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. It is licensed under the
@@ -398,15 +402,13 @@ def get_user_profile_paths():
return
elif sabnzbd.MACOS:
home = os.environ.get("HOME")
if home:
if home := os.environ.get("HOME"):
sabnzbd.DIR_LCLDATA = "%s/Library/Application Support/SABnzbd" % home
sabnzbd.DIR_HOME = home
return
else:
# Unix/Linux
home = os.environ.get("HOME")
if home:
if home := os.environ.get("HOME"):
sabnzbd.DIR_LCLDATA = "%s/.%s" % (home, DEF_WORKDIR)
sabnzbd.DIR_HOME = home
return
@@ -418,25 +420,27 @@ def get_user_profile_paths():
def print_modules():
"""Log all detected optional or external modules"""
if sabnzbd.decoder.SABYENC_ENABLED:
# Yes, we have SABYenc, and it's the correct version, so it's enabled
logging.info("SABYenc module (v%s)... found!", sabnzbd.decoder.SABYENC_VERSION)
logging.info("SABYenc module is using SIMD set: %s", sabnzbd.decoder.SABYENC_SIMD)
if sabnzbd.decoder.SABCTOOLS_ENABLED:
# Yes, we have SABCTools, and it's the correct version, so it's enabled
logging.info("SABCTools module (v%s)... found!", sabnzbd.decoder.SABCTOOLS_VERSION)
logging.info("SABCTools module is using SIMD set: %s", sabnzbd.decoder.SABCTOOLS_SIMD)
logging.info("SABCTools module is linked to OpenSSL: %s", sabnzbd.decoder.SABCTOOLS_OPENSSL_LINKED)
# Check if we managed to link, warning for now
# It won't work on OpenSSL < 1.1.1 anyway, so we skip the check there
if not sabnzbd.decoder.SABCTOOLS_OPENSSL_LINKED and ssl.OPENSSL_VERSION_INFO >= (1, 1, 1):
logging.warning(
"Could not link to OpenSSL library, please report here: "
"https://github.com/sabnzbd/sabnzbd/issues/2421"
)
else:
# Something wrong with SABYenc, so let's determine and print what:
if sabnzbd.decoder.SABYENC_VERSION:
# We have a VERSION, thus a SABYenc module, but it's not the correct version
logging.error(
T("SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"),
sabnzbd.decoder.SABYENC_VERSION,
sabnzbd.constants.SABYENC_VERSION_REQUIRED,
)
else:
# No SABYenc module at all
logging.error(
T("SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"),
sabnzbd.constants.SABYENC_VERSION_REQUIRED,
)
# Wrong SABCTools version, if it was fully missing it would fail to start due to check at the very top
logging.error(
T("SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"),
sabnzbd.decoder.SABCTOOLS_VERSION,
sabnzbd.constants.SABCTOOLS_VERSION_REQUIRED,
)
# Do not allow downloading
sabnzbd.NO_DOWNLOADING = True
@@ -444,7 +448,8 @@ def print_modules():
if sabnzbd.WIN32 and sabnzbd.newsunpack.MULTIPAR_COMMAND:
logging.info("MultiPar binary... found (%s)", sabnzbd.newsunpack.MULTIPAR_COMMAND)
elif sabnzbd.newsunpack.PAR2_COMMAND:
if sabnzbd.newsunpack.PAR2_COMMAND:
logging.info("par2 binary... found (%s)", sabnzbd.newsunpack.PAR2_COMMAND)
else:
logging.error(T("par2 binary... NOT found!"))
@@ -466,18 +471,12 @@ def print_modules():
# Do not allow downloading
sabnzbd.NO_DOWNLOADING = True
# If available, we prefer 7zip over unzip
if sabnzbd.newsunpack.SEVENZIP_COMMAND:
logging.info("7za binary... found (%s)", sabnzbd.newsunpack.SEVENZIP_COMMAND)
if not (sabnzbd.WIN32 or sabnzbd.MACOS):
logging.info("7za binary version %s", sabnzbd.newsunpack.SEVENZIP_VERSION)
else:
logging.info(T("7za binary... NOT found!"))
if sabnzbd.newsunpack.ZIP_COMMAND:
logging.info("unzip binary... found (%s)", sabnzbd.newsunpack.ZIP_COMMAND)
else:
logging.info(T("unzip binary... NOT found!"))
logging.warning(T("7za binary... NOT found!"))
if not sabnzbd.WIN32:
if sabnzbd.newsunpack.NICE_COMMAND:
@@ -625,10 +624,6 @@ def get_webhost(cherryhost, cherryport, https_port):
except socket.error:
cherryhost = cherryhost.strip("[]")
if ipv6 and ipv4 and not is_localhost(browserhost):
sabnzbd.AMBI_LOCALHOST = True
logging.info("IPV6 has priority on this system, potential Firefox issue")
if ipv6 and ipv4 and cherryhost == "" and sabnzbd.WIN32:
helpful_warning(T("Please be aware the 0.0.0.0 hostname will need an IPv6 address for external access"))
@@ -1444,6 +1439,12 @@ def main():
logging.error(T("Failed to start web-interface: "), exc_info=True)
abort_and_show_error(browserhost, cherryport)
# Create a record of the active cert/key/chain files, for use with config.create_config_backup()
if enable_https:
for setting in CONFIG_BACKUP_HTTPS.values():
if full_path := getattr(sabnzbd.cfg, setting).get_path():
sabnzbd.CONFIG_BACKUP_HTTPS_OK.append(full_path)
if sabnzbd.WIN32:
if enable_https:
mode = "s"

View File

@@ -2,43 +2,17 @@
import os
import re
import sys
import pkginfo
from PyInstaller.building.api import EXE, COLLECT, PYZ
from PyInstaller.building.build_main import Analysis
from PyInstaller.building.osx import BUNDLE
from PyInstaller.utils.hooks import collect_data_files, collect_submodules
from builder.constants import EXTRA_FILES, EXTRA_FOLDERS, RELEASE_VERSION
# Add extra files in the PyInstaller-spec
extra_pyinstaller_files = []
# Also modify these in "package.py"!
extra_files = [
"README.txt",
"INSTALL.txt",
"LICENSE.txt",
"GPL2.txt",
"GPL3.txt",
"COPYRIGHT.txt",
"ISSUES.txt",
"PKG-INFO",
]
extra_folders = [
"scripts/",
"licenses/",
"locale/",
"email/",
"interfaces/Glitter/",
"interfaces/wizard/",
"interfaces/Config/",
"scripts/",
"icons/",
]
# Get the version
RELEASE_VERSION = pkginfo.Develop(".").version
# Add hidden imports
extra_hiddenimports = ["Cheetah.DummyTransaction", "cheroot.ssl.builtin", "certifi"]
extra_hiddenimports.extend(collect_submodules("babelfish.converters"))
@@ -48,7 +22,7 @@ extra_hiddenimports.extend(collect_submodules("guessit.data"))
if sys.platform == "darwin":
extra_hiddenimports.extend(["objc", "PyObjCTools"])
# macOS folders
extra_folders += ["osx/par2/", "osx/unrar/", "osx/7zip/"]
EXTRA_FOLDERS += ["osx/par2/", "osx/unrar/", "osx/7zip/"]
# Add NZB-icon file
extra_pyinstaller_files.append(("builder/osx/image/nzbfile.icns", "."))
# Version information is set differently on macOS
@@ -67,8 +41,8 @@ else:
# Windows
extra_hiddenimports.append("win32timezone")
extra_folders += ["win/multipar/", "win/unrar/", "win/7zip/"]
extra_files += ["portable.cmd"]
EXTRA_FOLDERS += ["win/multipar/", "win/par2/", "win/unrar/", "win/7zip/"]
EXTRA_FILES += ["portable.cmd"]
# Parse the version info
version_regexed = re.search(r"(\d+)\.(\d+)\.(\d+)([a-zA-Z]*)(\d*)", RELEASE_VERSION)
@@ -109,9 +83,9 @@ else:
)
# Process the extra-files and folders
for file_item in extra_files:
for file_item in EXTRA_FILES:
extra_pyinstaller_files.append((file_item, "."))
for folder_item in extra_folders:
for folder_item in EXTRA_FOLDERS:
extra_pyinstaller_files.append((folder_item, folder_item))
# Add babelfish data files

67
builder/constants.py Normal file
View File

@@ -0,0 +1,67 @@
#!/usr/bin/python3 -OO
# Copyright 2008-2017 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
# Constants
VERSION_FILE = "sabnzbd/version.py"
APPDATA_FILE = "linux/org.sabnzbd.sabnzbd.appdata.xml"
# To draft a release or not to draft a release?
ON_GITHUB_ACTIONS = os.environ.get("CI", False)
RELEASE_THIS = "refs/tags/" in os.environ.get("GITHUB_REF", "")
# Import version.py without the sabnzbd overhead
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
# Define release name
RELEASE_NAME = "SABnzbd-%s" % RELEASE_VERSION
RELEASE_TITLE = "SABnzbd %s" % RELEASE_VERSION
RELEASE_SRC = RELEASE_NAME + "-src.tar.gz"
RELEASE_BINARY_32 = RELEASE_NAME + "-win32-bin.zip"
RELEASE_BINARY_64 = RELEASE_NAME + "-win64-bin.zip"
RELEASE_INSTALLER = RELEASE_NAME + "-win-setup.exe"
RELEASE_MACOS = RELEASE_NAME + "-osx.dmg"
RELEASE_README = "README.mkd"
# Used in package.py and SABnzbd.spec
EXTRA_FILES = [
RELEASE_README,
"README.txt",
"INSTALL.txt",
"LICENSE.txt",
"GPL2.txt",
"GPL3.txt",
"COPYRIGHT.txt",
"ISSUES.txt",
]
EXTRA_FOLDERS = [
"scripts/",
"licenses/",
"locale/",
"email/",
"interfaces/Glitter/",
"interfaces/wizard/",
"interfaces/Config/",
"scripts/",
"icons/",
]

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2008-2017 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
@@ -16,7 +16,7 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import os
import pkginfo
from constants import RELEASE_VERSION
# We need to call dmgbuild from command-line, so here we can setup how
@@ -37,7 +37,7 @@ if __name__ == "__main__":
# Extract version info and set DMG path
# Create sub-folder to upload later
release = pkginfo.Develop(".").version
release = RELEASE_VERSION
prod = "SABnzbd-" + release
fileDmg = prod + "-osx.dmg"

View File

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

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2008-2017 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
@@ -16,7 +16,6 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import glob
import hashlib
import platform
import re
import sys
@@ -29,37 +28,22 @@ import tarfile
import urllib.request
import urllib.error
import configobj
import pkginfo
import github
from typing import List
VERSION_FILE = "sabnzbd/version.py"
SPEC_FILE = "SABnzbd.spec"
# Also modify these in "SABnzbd.spec"!
extra_files = [
"README.mkd",
"INSTALL.txt",
"LICENSE.txt",
"GPL2.txt",
"GPL3.txt",
"COPYRIGHT.txt",
"ISSUES.txt",
"PKG-INFO",
]
extra_folders = [
"scripts/",
"licenses/",
"locale/",
"email/",
"interfaces/Glitter/",
"interfaces/wizard/",
"interfaces/Config/",
"scripts/",
"icons/",
]
from constants import (
RELEASE_VERSION,
VERSION_FILE,
RELEASE_README,
RELEASE_NAME,
RELEASE_BINARY_32,
RELEASE_BINARY_64,
RELEASE_INSTALLER,
ON_GITHUB_ACTIONS,
RELEASE_THIS,
RELEASE_SRC,
EXTRA_FILES,
EXTRA_FOLDERS,
)
# Support functions
@@ -132,13 +116,16 @@ def test_sab_binary(binary_path: str):
# Wait for SAB to respond
base_url = "http://127.0.0.1:8080/"
for _ in range(10):
for _ in range(30):
try:
urllib.request.urlopen(base_url, timeout=1).read()
break
except:
time.sleep(1)
else:
# Print console output and give some time to print
print(sabnzbd_process.stdout.read())
time.sleep(1)
raise urllib.error.URLError("Could not connect to SABnzbd")
# Open a number of API calls and pages, to see if we are really up
@@ -170,10 +157,13 @@ def test_sab_binary(binary_path: str):
# Print logs for verification
with open(os.path.join(config_dir, "logs", "sabnzbd.log"), "r") as log_file:
print(log_file.read())
# Wait after printing so the output is nicely displayed in case of problems
print(log_text := log_file.read())
time.sleep(5)
# So we have time to print the file before the directory is removed
time.sleep(1)
# Make sure no extra errors/warnings were reported
if "ERROR" in log_text or "WARNING" in log_text:
raise RuntimeError("Warning or error reported during execution")
if __name__ == "__main__":
@@ -185,32 +175,15 @@ if __name__ == "__main__":
if not os.path.exists("builder"):
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
# Extract version info
RELEASE_VERSION = pkginfo.Develop(".").version
# Check if we have the needed certificates
try:
import certifi
except ImportError:
raise FileNotFoundError("Need certifi module")
# Define release name
RELEASE_NAME = "SABnzbd-%s" % RELEASE_VERSION
RELEASE_TITLE = "SABnzbd %s" % RELEASE_VERSION
RELEASE_SRC = RELEASE_NAME + "-src.tar.gz"
RELEASE_BINARY_32 = RELEASE_NAME + "-win32-bin.zip"
RELEASE_BINARY_64 = RELEASE_NAME + "-win64-bin.zip"
RELEASE_INSTALLER = RELEASE_NAME + "-win-setup.exe"
RELEASE_MACOS = RELEASE_NAME + "-osx.dmg"
RELEASE_README = "README.mkd"
# Patch release file
patch_version_file(RELEASE_VERSION)
# To draft a release or not to draft a release?
ON_GITHUB_ACTIONS = os.environ.get("CI", False)
RELEASE_THIS = "refs/tags/" in os.environ.get("GITHUB_REF", "")
# Rename release notes file
safe_remove("README.txt")
shutil.copyfile(RELEASE_README, "README.txt")
@@ -229,7 +202,7 @@ if __name__ == "__main__":
safe_remove(RELEASE_NAME)
# Copy the specification
shutil.copyfile("builder/%s" % SPEC_FILE, SPEC_FILE)
shutil.copyfile("builder/SABnzbd.spec", "SABnzbd.spec")
if "binary" in sys.argv or "installer" in sys.argv:
# Must be run on Windows
@@ -256,7 +229,6 @@ if __name__ == "__main__":
delete_files_glob("dist/SABnzbd/ucrtbase.dll")
# Remove other files we don't need
delete_files_glob("dist/SABnzbd/PKG-INFO")
delete_files_glob("dist/SABnzbd/win32ui.pyd")
delete_files_glob("dist/SABnzbd/winxpgui.pyd")
@@ -272,7 +244,8 @@ if __name__ == "__main__":
run_external_command([sys.executable, "tools/make_mo.py", "nsis"])
# Remove 32bit external executables
delete_files_glob("dist/SABnzbd/win/par2/multipar/par2j.exe")
delete_files_glob("dist/SABnzbd/win/par2/par2.exe")
delete_files_glob("dist/SABnzbd/win/multipar/par2j.exe")
delete_files_glob("dist/SABnzbd/win/unrar/UnRAR.exe")
# Run NSIS to build installer
@@ -310,9 +283,8 @@ if __name__ == "__main__":
# Otherwise the signature of the main application becomes invalid
if authority:
files_to_sign = [
"osx/par2/par2-sl64",
"osx/par2/arm64/par2",
"osx/par2/arm64/libomp.dylib",
"osx/par2/par2-turbo",
"osx/par2/arm64/par2-turbo",
"osx/unrar/unrar",
"osx/unrar/arm64/unrar",
"osx/7zip/7zz",
@@ -435,15 +407,15 @@ if __name__ == "__main__":
safe_remove(RELEASE_SRC)
# Add extra files and folders need for source dist
extra_folders.extend(["sabnzbd/", "po/", "linux/", "tools/", "tests/"])
extra_files.extend(["SABnzbd.py", "requirements.txt"])
EXTRA_FOLDERS.extend(["sabnzbd/", "po/", "linux/", "tools/", "tests/"])
EXTRA_FILES.extend(["SABnzbd.py", "requirements.txt"])
# Copy all folders and files to the new folder
for source_folder in extra_folders:
for source_folder in EXTRA_FOLDERS:
shutil.copytree(source_folder, os.path.join(src_folder, source_folder), dirs_exist_ok=True)
# Copy all files
for source_file in extra_files:
for source_file in EXTRA_FILES:
shutil.copyfile(source_file, os.path.join(src_folder, source_file))
# Make sure all line-endings are correct
@@ -483,173 +455,6 @@ if __name__ == "__main__":
# Remove source folder
safe_remove(src_folder)
# Calculate hashes for Synology release
with open(RELEASE_SRC, "rb") as inp_file:
source_data = inp_file.read()
print("----")
print(RELEASE_SRC, "SHA1", hashlib.sha1(source_data).hexdigest())
print(RELEASE_SRC, "SHA256", hashlib.sha256(source_data).hexdigest())
print(RELEASE_SRC, "MD5", hashlib.md5(source_data).hexdigest())
print("----")
# Release to github
if "release" in sys.argv:
# Check if tagged as release and check for token
gh_token = os.environ.get("AUTOMATION_GITHUB_TOKEN", "")
if RELEASE_THIS and gh_token:
gh_obj = github.Github(gh_token)
gh_repo = gh_obj.get_repo("sabnzbd/sabnzbd")
# Read the release notes
with open(RELEASE_README, "r") as readme_file:
readme_data = readme_file.read()
# Pre-releases are longer than 6 characters (e.g. 3.1.0Beta1 vs 3.1.0, but also 3.0.11)
prerelease = len(RELEASE_VERSION) > 5
# We have to manually check if we already created this release
for release in gh_repo.get_releases():
if release.tag_name == RELEASE_VERSION:
gh_release = release
print("Found existing release %s" % gh_release.title)
break
else:
# Did not find it, so create the release, use the GitHub tag we got as input
print("Creating GitHub release SABnzbd %s" % RELEASE_VERSION)
gh_release = gh_repo.create_git_release(
tag=RELEASE_VERSION,
name=RELEASE_TITLE,
message=readme_data,
draft=True,
prerelease=prerelease,
)
# Fetch existing assets, as overwriting is not allowed by GitHub
gh_assets = gh_release.get_assets()
# Upload the assets
files_to_check = (
RELEASE_SRC,
RELEASE_BINARY_32,
RELEASE_BINARY_64,
RELEASE_INSTALLER,
RELEASE_MACOS,
RELEASE_README,
)
for file_to_check in files_to_check:
if os.path.exists(file_to_check):
# Check if this file was previously uploaded
if gh_assets.totalCount:
for gh_asset in gh_assets:
if gh_asset.name == file_to_check:
print("Removing existing asset %s " % gh_asset.name)
gh_asset.delete_asset()
# Upload the new one
print("Uploading %s to release %s" % (file_to_check, gh_release.title))
gh_release.upload_asset(file_to_check)
# 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,
)
# Update the website
gh_repo_web = gh_obj.get_repo("sabnzbd/sabnzbd.github.io")
# Check if the branch already exists, only create one if it doesn't
skip_website_update = False
try:
gh_repo_web.get_branch(RELEASE_VERSION)
print("Branch %s on sabnzbd/sabnzbd.github.io already exists, skipping update" % RELEASE_VERSION)
skip_website_update = True
except github.GithubException:
# Create a new branch to have the changes
sb = gh_repo_web.get_branch("master")
print("Creating branch %s on sabnzbd/sabnzbd.github.io" % RELEASE_VERSION)
new_branch = gh_repo_web.create_git_ref(ref="refs/heads/" + RELEASE_VERSION, sha=sb.commit.sha)
# Update the files
if not skip_website_update:
# We need bytes version to interact with GitHub
RELEASE_VERSION_BYTES = RELEASE_VERSION.encode()
# Get all the version files
latest_txt = gh_repo_web.get_contents("latest.txt")
latest_txt_items = latest_txt.decoded_content.split()
new_latest_txt_items = latest_txt_items[:2]
config_yml = gh_repo_web.get_contents("_config.yml")
if prerelease:
# If it's a pre-release, we append to current version in latest.txt
new_latest_txt_items.extend([RELEASE_VERSION_BYTES, latest_txt_items[1]])
# And replace in _config.yml
new_config_yml = re.sub(
b"latest_testing: '[^']*'",
b"latest_testing: '%s'" % RELEASE_VERSION_BYTES,
config_yml.decoded_content,
)
else:
# New stable release, replace the version
new_latest_txt_items[0] = RELEASE_VERSION_BYTES
# And replace in _config.yml
new_config_yml = re.sub(
b"latest_testing: '[^']*'",
b"latest_testing: ''",
config_yml.decoded_content,
)
new_config_yml = re.sub(
b"latest_stable: '[^']*'",
b"latest_stable: '%s'" % RELEASE_VERSION_BYTES,
new_config_yml,
)
# Also update the wiki-settings, these only use x.x notation
new_config_yml = re.sub(
b"wiki_version: '[^']*'",
b"wiki_version: '%s'" % RELEASE_VERSION_BYTES[:3],
new_config_yml,
)
# Update the files
print("Updating latest.txt")
gh_repo_web.update_file(
"latest.txt",
"Release %s: latest.txt" % RELEASE_VERSION,
b"\n".join(new_latest_txt_items),
latest_txt.sha,
RELEASE_VERSION,
)
print("Updating _config.yml")
gh_repo_web.update_file(
"_config.yml",
"Release %s: _config.yml" % RELEASE_VERSION,
new_config_yml,
config_yml.sha,
RELEASE_VERSION,
)
# Create pull-request
print("Creating pull request in sabnzbd/sabnzbd.github.io for the update")
gh_repo_web.create_pull(
title=RELEASE_VERSION,
base="master",
body="Automated update of release files",
head=RELEASE_VERSION,
)
else:
print("To push release to GitHub, first tag the commit.")
print("Or missing the AUTOMATION_GITHUB_TOKEN, cannot push to GitHub without it.")
# Reset!
run_git_command(["reset", "--hard"])
run_git_command(["clean", "-f"])

View File

@@ -0,0 +1,2 @@
PyGithub==1.59.1
praw==7.7.1

261
builder/release.py Normal file
View File

@@ -0,0 +1,261 @@
#!/usr/bin/python3 -OO
# Copyright 2008-2017 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 hashlib
import json
import os
import re
import shutil
import xml.etree.ElementTree as ET
import github
import praw
from constants import (
RELEASE_VERSION,
PRERELEASE,
RELEASE_SRC,
RELEASE_BINARY_32,
RELEASE_BINARY_64,
RELEASE_INSTALLER,
RELEASE_MACOS,
RELEASE_README,
RELEASE_THIS,
RELEASE_TITLE,
APPDATA_FILE,
)
# Verify we have all assets
files_to_check = (
RELEASE_SRC,
RELEASE_BINARY_32,
RELEASE_BINARY_64,
RELEASE_INSTALLER,
RELEASE_MACOS,
RELEASE_README,
)
for file_to_check in files_to_check:
if not os.path.exists(file_to_check):
raise RuntimeError("Not all release files are present!")
print("All release files are present")
# Verify that appdata file is updated
if not PRERELEASE:
if not isinstance(ET.parse(APPDATA_FILE).find(f"./releases/release[@version='{RELEASE_VERSION}']"), ET.Element):
raise RuntimeError(f"Could not find {RELEASE_VERSION} in {APPDATA_FILE}")
# 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("----")
# Check if tagged as release and check for token
gh_token = os.environ.get("AUTOMATION_GITHUB_TOKEN", "")
if RELEASE_THIS and gh_token:
gh_obj = github.Github(gh_token)
gh_repo = gh_obj.get_repo("sabnzbd/sabnzbd")
# Read the release notes
with open(RELEASE_README, "r") as readme_file:
readme_data = readme_file.read()
# We have to manually check if we already created this release
for release in gh_repo.get_releases():
if release.tag_name == RELEASE_VERSION:
gh_release = release
print("Found existing release %s" % gh_release.title)
break
else:
# Did not find it, so create the release, use the GitHub tag we got as input
print("Creating GitHub release SABnzbd %s" % RELEASE_VERSION)
gh_release = gh_repo.create_git_release(
tag=RELEASE_VERSION,
name=RELEASE_TITLE,
message=readme_data,
draft=True,
prerelease=PRERELEASE,
)
# Fetch existing assets, as overwriting is not allowed by GitHub
gh_assets = gh_release.get_assets()
# Upload the assets
for file_to_check in files_to_check:
if os.path.exists(file_to_check):
# Check if this file was previously uploaded
if gh_assets.totalCount:
for gh_asset in gh_assets:
if gh_asset.name == file_to_check:
print("Removing existing asset %s " % gh_asset.name)
gh_asset.delete_asset()
# Upload the new one
print("Uploading %s to release %s" % (file_to_check, gh_release.title))
gh_release.upload_asset(file_to_check)
# 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,
)
# Update the website
gh_repo_web = gh_obj.get_repo("sabnzbd/sabnzbd.github.io")
# Check if the branch already exists, only create one if it doesn't
skip_website_update = False
try:
gh_repo_web.get_branch(RELEASE_VERSION)
print("Branch %s on sabnzbd/sabnzbd.github.io already exists, skipping update" % RELEASE_VERSION)
skip_website_update = True
except github.GithubException:
# Create a new branch to have the changes
sb = gh_repo_web.get_branch("master")
print("Creating branch %s on sabnzbd/sabnzbd.github.io" % RELEASE_VERSION)
new_branch = gh_repo_web.create_git_ref(ref="refs/heads/" + RELEASE_VERSION, sha=sb.commit.sha)
# Update the files
if not skip_website_update:
# We need bytes version to interact with GitHub
RELEASE_VERSION_BYTES = RELEASE_VERSION.encode()
# Get all the version files
latest_txt = gh_repo_web.get_contents("latest.txt")
latest_txt_items = latest_txt.decoded_content.split()
new_latest_txt_items = latest_txt_items[:2]
config_yml = gh_repo_web.get_contents("_config.yml")
if PRERELEASE:
# If it's a pre-release, we append to current version in latest.txt
new_latest_txt_items.extend([RELEASE_VERSION_BYTES, latest_txt_items[1]])
# And replace in _config.yml
new_config_yml = re.sub(
b"latest_testing: '[^']*'",
b"latest_testing: '%s'" % RELEASE_VERSION_BYTES,
config_yml.decoded_content,
)
else:
# New stable release, replace the version
new_latest_txt_items[0] = RELEASE_VERSION_BYTES
# And replace in _config.yml
new_config_yml = re.sub(
b"latest_testing: '[^']*'",
b"latest_testing: ''",
config_yml.decoded_content,
)
new_config_yml = re.sub(
b"latest_stable: '[^']*'",
b"latest_stable: '%s'" % RELEASE_VERSION_BYTES,
new_config_yml,
)
# Also update the wiki-settings, these only use x.x notation
new_config_yml = re.sub(
b"wiki_version: '[^']*'",
b"wiki_version: '%s'" % RELEASE_VERSION_BYTES[:3],
new_config_yml,
)
# Update the files
print("Updating latest.txt")
gh_repo_web.update_file(
"latest.txt",
"Release %s: latest.txt" % RELEASE_VERSION,
b"\n".join(new_latest_txt_items),
latest_txt.sha,
RELEASE_VERSION,
)
print("Updating _config.yml")
gh_repo_web.update_file(
"_config.yml",
"Release %s: _config.yml" % RELEASE_VERSION,
new_config_yml,
config_yml.sha,
RELEASE_VERSION,
)
# Create pull-request
print("Creating pull request in sabnzbd/sabnzbd.github.io for the update")
update_pr = gh_repo_web.create_pull(
title="Release %s" % RELEASE_VERSION,
base="master",
body="Automated update of release files",
head=RELEASE_VERSION,
)
# Merge pull-request
print("Merging pull request in sabnzbd/sabnzbd.github.io for the update")
update_pr.merge(merge_method="squash")
# Only with GitHub success we proceed to Reddit
if reddit_token := os.environ.get("REDDIT_TOKEN", ""):
# Token format (without whitespace):
# {
# "client_id":"XXX",
# "client_secret":"XXX",
# "user_agent":"SABnzbd release script",
# "username":"Safihre",
# "password":"XXX"
# }
credentials = json.loads(reddit_token)
reddit = praw.Reddit(**credentials)
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()
# Put the download link after the title
readme_lines[2] = "## https://sabnzbd.org/downloads\n"
# Use the header in the readme as title
title = readme_lines[0]
release_notes_text = "".join(readme_lines[2:])
# Only stable releases to r/usenet
if not PRERELEASE:
print("Posting release notes to Reddit: r/usenet")
submission = subreddit_usenet.submit(title, selftext=release_notes_text)
# Cross-post to r/SABnzbd
print("Cross-posting release notes to Reddit: r/sabnzbd")
submission.crosspost(subreddit_sabnzbd)
else:
# Post always to r/SABnzbd
print("Posting release notes to Reddit: r/sabnzbd")
subreddit_sabnzbd.submit(title, selftext=release_notes_text)
else:
print("Missing REDDIT_TOKEN")
else:
print("To push release to GitHub, first tag the commit.")
print("Or missing the AUTOMATION_GITHUB_TOKEN, cannot push to GitHub without it.")

View File

@@ -1,21 +1,22 @@
# Basic build requirements
# Note that not all sub-dependencies are listed, but only ones we know could cause trouble
pyinstaller==5.7.0
pyinstaller-hooks-contrib==2022.14
pyinstaller==5.13.2
pyinstaller-hooks-contrib==2023.8
altgraph==0.17.3
wrapt==1.14.1
setuptools==65.6.3
pkginfo==1.9.6
PyGithub==1.57
charset-normalizer==3.0.1
wrapt==1.15.0
setuptools==68.2.0
certifi
# orjson does not support 32bit Windows, exclude it based on Python-version
# This way we also test ujson on Python 3.7 and 3.8 in the CI-tests
orjson==3.8.4; python_version > '3.8'
# This way we also test ujson on Python 3.8 in the CI-tests
orjson==3.9.7; python_version > '3.8'
# For the Windows build
pefile==2023.2.7; sys_platform == 'win32'
pywin32-ctypes==0.2.2; sys_platform == 'win32'
# For the macOS build
dmgbuild==1.6.0; sys_platform == 'darwin'
dmgbuild==1.6.1; sys_platform == 'darwin'
mac-alias==2.2.2; sys_platform == 'darwin'
macholib==1.16.2; sys_platform == 'darwin'
ds-store==1.3.1; sys_platform == 'darwin'

View File

@@ -1,6 +1,6 @@
; -*- coding: utf-8 -*-
;
; Copyright 2008-2015 The SABnzbd-Team <team@sabnzbd.org>
; Copyright 2008-2015 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
@@ -32,7 +32,7 @@ Unicode true
;------------------------------------------------------------------
;
; Marco for removing existing and the current installation
; Macro for removing existing and the current installation
; It shared by the installer and the uninstaller.
;
!define RemovePrev "!insertmacro RemovePrev"
@@ -66,7 +66,6 @@ Unicode true
RequestExecutionLevel admin
FileErrorText "If you have no admin rights, try to install into a user directory."
;------------------------------------------------------------------
;Variables
Var MUI_TEMP
@@ -169,21 +168,25 @@ Unicode true
Section "SABnzbd" SecDummy
SetOutPath "$INSTDIR"
SetShellVarContext all
;------------------------------------------------------------------
; Make sure old versions are gone (reg-key already read in onInt)
StrCmp $PREV_INST_DIR "" noPrevInstallRemove
${RemovePrev} "$PREV_INST_DIR"
Goto continueSetupAfterRemove
;------------------------------------------------------------------
; Add firewall rules for new installs
noPrevInstallRemove:
liteFirewallW::AddRule "$INSTDIR\SABnzbd.exe" "SABnzbd"
liteFirewallW::AddRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
continueSetupAfterRemove:
; add files / whatever that need to be installed here.
File /r "dist\SABnzbd\*"
;------------------------------------------------------------------
; Add firewall rules
liteFirewallW::AddRule "$INSTDIR\SABnzbd.exe" "SABnzbd"
liteFirewallW::AddRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
;------------------------------------------------------------------
; Add to registry
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" "" "$INSTDIR"
@@ -191,7 +194,7 @@ Section "SABnzbd" SecDummy
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayName" "SABnzbd ${SAB_VERSION}"
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayVersion" '${SAB_VERSION}'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Publisher" 'The SABnzbd Team'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Publisher" 'The SABnzbd-Team'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "HelpLink" 'https://forums.sabnzbd.org/'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLInfoAbout" 'https://sabnzbd.org/wiki/'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLUpdateInfo" 'https://sabnzbd.org/'
@@ -248,7 +251,7 @@ Function .onInit
; Change settings based on if SAB was already installed
ReadRegStr $PREV_INST_DIR HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" ""
StrCmp $PREV_INST_DIR "" noPrevInstall
; We want to use the user's costom dir if he used one
; We want to use the user's custom dir if he used one
StrCmp $PREV_INST_DIR "$PROGRAMFILES\SABnzbd" noSpecialDir
StrCmp $PREV_INST_DIR "$PROGRAMFILES64\SABnzbd" noSpecialDir
; Set what the user had before
@@ -257,10 +260,18 @@ Function .onInit
;------------------------------------------------------------------
; Check what the user has currently set for install options
SetShellVarContext current
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartup
SectionSetFlags ${startup} 1
SetShellVarContext all
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartup
SectionSetFlags ${startup} 1
endCheckStartup:
SetShellVarContext current
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
SetShellVarContext all
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
endCheckDesktop:
@@ -333,7 +344,6 @@ Section "un.$(MsgDelProgram)" Uninstall
${nsProcess::Unload}
DetailPrint "Process Killed"
; add delete commands to delete whatever files/registry keys/etc you installed here.
Delete "$INSTDIR\uninstall.exe"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd"
@@ -341,6 +351,26 @@ Section "un.$(MsgDelProgram)" Uninstall
${RemovePrev} "$INSTDIR"
; Remove firewall entries
liteFirewallW::RemoveRule "$INSTDIR\SABnzbd.exe" "SABnzbd"
liteFirewallW::RemoveRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
SetShellVarContext all
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
RMDir "$SMPROGRAMS\$MUI_TEMP"
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
Delete "$DESKTOP\SABnzbd.lnk"
SetShellVarContext current
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"

View File

@@ -34,6 +34,9 @@
<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" />
<!--#if $color_scheme not in ('Light', '') #-->
<link rel="stylesheet" type="text/css" href="${root}staticcfg/css/${color_scheme}.css?v=$version"/>
<!--#end if#-->
<link rel="shortcut icon" href="${root}staticcfg/ico/favicon.ico?v=$version" />
@@ -67,14 +70,14 @@
<script type="text/javascript" src="${root}staticcfg/js/script.js?v=$version"></script>
<script type="text/javascript">
// Set default functions for the autocomplete everywhere
\$.extend(\$.fn.typeahead.defaults, {
jQuery.extend(jQuery.fn.typeahead.defaults, {
source: function (query, process) {
// If there's no separator, it must be a relative path
if(query.split(folderSeperator).length < 2 && this.\$element.data('initialdir')) {
query = this.\$element.data('initialdir') + folderSeperator + query;
}
// Get info from the API
return \$.get(folderBrowseUrl + '&compact=1&term=' + query, function (data) {
return jQuery.get(folderBrowseUrl + '&compact=1&term=' + query, function (data) {
return process(data);
});
},
@@ -181,7 +184,7 @@
</a>
</li>
<li>
<a href="$helpuri$help_uri" target="_blank">
<a href="$help_uri" target="_blank">
<span class="glyphicon glyphicon-question-sign"></span>
<strong>$T('menu-help')</strong>
</a>

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Config"#-->
<!--#set global $help_uri="configuration/3.7/configure"#-->
<!--#set global $help_uri = $confighelpuri + "configure"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#from sabnzbd.encoding import CODEPAGE#-->
@@ -25,7 +25,7 @@
</tr>
<tr>
<th scope="row">$T('pythonVersion'): </th>
<td>$sys.version[:120] [$CODEPAGE]</td>
<td>$sys.version [$CODEPAGE]</td>
</tr>
<tr>
<th scope="row">OpenSSL:</th>
@@ -49,35 +49,17 @@
<span class="glyphicon glyphicon-ok"></span>
<!--#else#-->
<span class="label label-warning">$T('notAvailable')</span> $T('explain-getpar2mt')
<a href="${helpuri}installation/multicore-par2" target="_blank">${helpuri}installation/multicore-par2</a>
<a href="https://sabnzbd.org/wiki/installation/multicore-par2" target="_blank">https://sabnzbd.org/wiki/installation/multicore-par2</a>
<!--#end if#-->
</td>
</tr>
<!--#end if#-->
<!--#if not $have_sabyenc#-->
<tr>
<th scope="row">SABYenc:</th>
<td>
<span class="label label-danger">$T('notAvailable')</span>
<a href="$helpuri$help_uri#no_sabyenc" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
</td>
</tr>
<!--#end if#-->
<!--#if not $have_unzip and not $have_7zip #-->
<tr>
<th scope="row">$T('opt-enable_unzip'):</th>
<td>
<span class="label label-warning">$T('notAvailable')</span>
<a href="${helpuri}installation/install-off-modules#toc8" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
</td>
</tr>
<!--#end if#-->
<!--#if not $have_7zip #-->
<tr>
<th scope="row">$T('opt-enable_7zip'):</th>
<td>
<span class="label label-warning">$T('notAvailable')</span>
<a href="${helpuri}installation/install-off-modules#toc8" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<a href="https://sabnzbd.org/wiki/installation/install-off-modules#toc8" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
</td>
</tr>
<!--#end if#-->
@@ -123,8 +105,8 @@
</div>
<div class="colmask">
<div class="padding alt">
<h5 class="copyright">Copyright &copy; 2007-2022 The SABnzbd Team &lt;<a href="mailto:team@sabnzbd.org">team@sabnzbd.org</a>&gt;</h5>
<div class="padding">
<h5 class="copyright">Copyright &copy; 2007-2023 The SABnzbd-Team (<a href="https://sabnzbd.org/" target="_blank">sabnzbd.org</a>)</h5>
<p class="copyright"><small>$T('yourRights')</small></p>
</div>

View File

@@ -1,15 +1,16 @@
<!--#set global $pane="Categories"#-->
<!--#set global $help_uri="configuration/3.7/categories"#-->
<!--#set global $help_uri = $confighelpuri + "categories"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
<div class="section">
<div class="padTable"> <a class="main-helplink" href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<div class="padTable">
<a class="main-helplink" href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<p>$T('explain-catTags2')<br/>$T('explain-catTags')</p>
<hr>
<h5 class="darkred"><strong>$T('explain-relFolder'):</strong> <span class="path">$defdir</span></h5>
<!--#for $cur, $slot in enumerate($slotinfo)#-->
<!--#set $cansort = $slot.name != '*' and $slot.name != ''#-->
<form action="save" method="get" <!--#if $cansort#-->class="sorting-row"<!--#end if#-->>
<form action="save" method="post" <!--#if $cansort#-->class="sorting-row"<!--#end if#-->>
<table class="catTable">
<!--#if $cur == 0#-->
<tr>
@@ -104,29 +105,29 @@
</div>
<script type="text/javascript" src="${root}staticcfg/js/jquery-ui.min.js"></script>
<script type="text/javascript">
\$(document).ready(function() {
\$('.delCat').click(function() {
var theForm = \$(this).closest("form");
jQuery(document).ready(function() {
jQuery('.delCat').click(function() {
var theForm = jQuery(this).closest("form");
theForm.attr("action", "delete").submit();
});
// Add autocomplete and file-browser
\$('.fileBrowserSmall').typeahead({appendTo: 'body'}).fileBrowser();
jQuery('.fileBrowserSmall').typeahead({appendTo: 'body'}).fileBrowser();
// Make categories sortable
\$('.padTable').sortable({
jQuery('.padTable').sortable({
items: '.sorting-row',
containment: '.colmask',
axis: 'y',
update: function(event, ui) {
\$('.Categories form.sorting-row').each(function(index, elm) {
jQuery('.Categories form.sorting-row').each(function(index, elm) {
// Update order of all elements
if(index != elm.order.value) {
elm.order.value = index
// Submit changed order
var data = {}
\$(elm).extractFormDataTo(data);
\$.ajax({
jQuery(elm).extractFormDataTo(data);
jQuery.ajax({
type: "GET",
url: window.location.pathname + 'save',
data: data,

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Folders"#-->
<!--#set global $help_uri="configuration/3.7/folders"#-->
<!--#set global $help_uri = $confighelpuri + "folders"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -14,7 +14,7 @@
<input type="hidden" id="ajax" name="ajax" value="1" />
<div class="section">
<div class="col2">
<h3>$T('userFolders') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('userFolders') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<p>$T('explain-folderConfig')</p>
</div><!-- /col2 -->
<div class="col1">
@@ -35,7 +35,8 @@
<div class="field-pair">
<label class="config" for="complete_dir">$T('opt-complete_dir')</label>
<input type="text" name="complete_dir" id="complete_dir" value="$complete_dir" data-initialdir="$my_home" />
<span class="desc">$T('explain-complete_dir')</span>
<a class="btn btn-default" href="${root}config/sorting/"><span class="glyphicon glyphicon-sort-by-alphabet"></span> $T('cmenu-sorting')</a>
<span class="desc">$T('explain-complete_dir') <br/> $T('explain-complete_dir-sorting')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="complete_free">$T('opt-complete_free')</label>
@@ -57,7 +58,7 @@
<div class="field-pair">
<label class="config" for="dirscan_dir">$T('opt-dirscan_dir')</label>
<input type="text" name="dirscan_dir" id="dirscan_dir" value="$dirscan_dir" data-initialdir="$my_home" />
<span class="desc">$T('explain-dirscan_dir')</span>
<span class="desc">$T('explain-dirscan_dir').replace(".nzb", $file_exts)</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="dirscan_speed">$T('opt-dirscan_speed')</label>
@@ -90,7 +91,7 @@
</div><!-- /section -->
<div class="section advanced-settings">
<div class="col2">
<h3>$T('systemFolders') <a href="$helpuri$help_uri#toc1" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('systemFolders') <a href="$help_uri#toc1" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<p>$T('explain-folderConfig')</p>
</div><!-- /col2 -->
<div class="col1">
@@ -112,6 +113,7 @@
<div class="field-pair">
<label class="config" for="log_dir">$T('opt-log_dir')</label>
<input type="text" name="log_dir" id="log_dir" value="$log_dir" data-initialdir="$my_lcldata" />
<a class="btn btn-default" id="purge_log_files" href="${root}"><span class="glyphicon glyphicon-trash"></span> $T('purge_log_files')</a>
<span class="desc">$T('explain-log_dir')</span>
</div>
<div class="field-pair">
@@ -131,7 +133,19 @@
<script type="text/javascript">
jQuery(document).ready(function() {
// Add autocomplete and file-browser
\$('.col1 input[name$="_dir"]').typeahead().fileBrowser();
jQuery('.col1 input[name$="_dir"]').typeahead().fileBrowser();
jQuery('#purge_log_files').click(function () {
if ( confirm("$T('confirm')") ) {
$.ajax({
type: "POST",
url: "../../api",
data: {mode: 'config', name: 'purge_log_files', output: 'json', apikey: jQuery('#apikey').val()}
})
} else {
return false;
}
})
})
</script>
<!--#include $webdir + "/_inc_footer_uc.tmpl"#-->

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="General"#-->
<!--#set global $help_uri="configuration/3.7/general"#-->
<!--#set global $help_uri = $confighelpuri + "general"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -14,7 +14,7 @@
<input type="hidden" name="output" value="json" />
<div class="section">
<div class="col2">
<h3>$T('webServer') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('webServer') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<p><b>$T('restartRequired')</b></p>
</div><!-- /col2 -->
<div class="col1">
@@ -102,7 +102,7 @@
</div>
<div class="section">
<div class="col2">
<h3>$T('security') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('security') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<p><b>$T('restartRequired')</b></p>
</div><!-- /col2 -->
<div class="col1">
@@ -156,7 +156,7 @@
</div><!-- /section -->
<div class="section">
<div class="col2">
<h3>$T('cmenu-switches') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('cmenu-switches') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -192,7 +192,7 @@
</div><!-- /section -->
<div class="section">
<div class="col2">
<h3>$T('tuning') <a href="$helpuri$help_uri#toc2" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('tuning') <a href="$help_uri#toc2" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -230,7 +230,7 @@
<input type="hidden" name="output" value="json" />
<div class="section">
<div class="col2">
<h3>$T('backup') <a href="$helpuri$help_uri#toc3" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('backup') <a href="$help_uri#toc3" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -264,41 +264,41 @@
</div>
<script type="text/javascript">
\$(document).ready(function(){
jQuery(document).ready(function(){
// Show the message about translating when it's non-English
function hideOrShowTranslate() {
if(\$('#language').val() == 'en') {
\$('.alert-translate').hide()
if(jQuery('#language').val() == 'en') {
jQuery('.alert-translate').hide()
} else {
\$('.alert-translate').show()
jQuery('.alert-translate').show()
}
}
\$('#language').on('change', function() {
jQuery('#language').on('change', function() {
// Show message
hideOrShowTranslate()
// Re-load page on submit
\$('.fullform').submit(function() {
jQuery('.fullform').submit(function() {
// Skip the fancy stuff, just submit
this.submit()
})
// No JSON response
\$('#ajax').val('')
jQuery('#ajax').val('')
})
hideOrShowTranslate()
// Highlight in case user is not safe
// So when exposed to internet and no password, no external limit or no username/password
var safeCheck = \$('#host, #inet_exposure, #${pid}_wu, #${pid}_wp')
var safeCheck = jQuery('#host, #inet_exposure, #${pid}_wu, #${pid}_wp')
function checkSafety() {
if(\$('#host').val() != 'localhost' && \$('#host').val() != '127.0.0.1') {
if(jQuery('#host').val() != 'localhost' && jQuery('#host').val() != '127.0.0.1') {
// No limitation on local-network
if(\$('#inet_exposure').val() > 3) {
if(jQuery('#inet_exposure').val() > 3) {
// And no username and password?
if(!\$('#${pid}_wu').val() || !\$('#${pid}_wp').val()) {
if(!jQuery('#${pid}_wu').val() || !jQuery('#${pid}_wp').val()) {
// Add warning icon if not there already
if(!\$('.host-warning').length) {
if(!jQuery('.host-warning').length) {
safeCheck.after('<span class="glyphicon glyphicon-alert host-warning"></span>')
\$('.host-warning').tooltip({'title': '$T('checkSafety')'})
jQuery('.host-warning').tooltip({'title': '$T('checkSafety')'})
safeCheck.addClass('host-warning-highlight')
}
return
@@ -306,57 +306,57 @@
}
}
// Remove warnings
\$('.host-warning').remove()
jQuery('.host-warning').remove()
safeCheck.removeClass('host-warning-highlight')
}
checkSafety()
safeCheck.on('change', checkSafety)
// Click functions
\$('#apikey, #nzbkey').click(function () { \$(this).select() });
jQuery('#apikey, #nzbkey').click(function () { jQuery(this).select() });
\$('#generate_new_apikey').click(function () {
jQuery('#generate_new_apikey').click(function () {
if (confirm("$T('confirm')")) {
$.ajax({
type: "POST",
url: "../../api",
data: {mode:'config', name:'set_apikey', apikey: \$('#apikey').val()},
data: {mode:'config', name:'set_apikey', apikey: jQuery('#apikey').val()},
success: function(msg){
\$('#apikey').val(msg);
jQuery('#apikey').val(msg);
document.location = document.location;
}
});
}
});
\$('#generate_new_nzbkey').click(function () {
jQuery('#generate_new_nzbkey').click(function () {
if (confirm("$T('confirm')")) {
$.ajax({
type: "POST",
url: "../../api",
data: { mode:'config', name:'set_nzbkey', apikey: \$('#apikey').val() },
data: { mode:'config', name:'set_nzbkey', apikey: jQuery('#apikey').val() },
success: function(msg){
\$('#nzbkey').val(msg);
jQuery('#nzbkey').val(msg);
document.location = document.location;
}
});
}
});
\$('.show_qrcode').click(function (e) {
jQuery('.show_qrcode').click(function (e) {
// Show in modal
\$('#modal_qr .modal-dialog').width(330)
\$('#modal_qr .modal-body').html('').qrcode({
jQuery('#modal_qr .modal-dialog').width(330)
jQuery('#modal_qr .modal-body').html('').qrcode({
"size": 280,
"color": "#3a3",
"text": \$(this).attr('rel')
"text": jQuery(this).attr('rel')
});
\$('#modal_qr').modal('show');
jQuery('#modal_qr').modal('show');
// No save on this button click
e.preventDefault();
});
\$('.generate_cert').click(function(e) {
jQuery('.generate_cert').click(function(e) {
if(!confirm('$T('explain-new-cert')')) {
return;
}
@@ -365,7 +365,7 @@
$.ajax({
type: "POST",
url: "../../api",
data: { mode: 'config', name: 'regenerate_certs', apikey: \$('#apikey').val() },
data: { mode: 'config', name: 'regenerate_certs', apikey: jQuery('#apikey').val() },
success: function(msg) {
do_restart()
}
@@ -375,35 +375,35 @@
})
// Only allow re-generate if default certs
if(\$('#https_cert').val() != 'server.cert') {
\$('.generate_cert').attr('disabled', 'disabled')
if(jQuery('#https_cert').val() != '$def_https_cert_file') {
jQuery('.generate_cert').attr('disabled', 'disabled')
}
// Parse the text
var bandwidthLimit = \$('#bandwidth_max').val()
var bandwidthLimit = jQuery('#bandwidth_max').val()
if(bandwidthLimit) {
var bandwithLimitNumber = parseFloat(bandwidthLimit)
var bandwithLimitText = bandwidthLimit.replace(/[^a-zA-Z]+/g, '');
if(bandwithLimitNumber) {
\$('#bandwidth_max_value').val(bandwithLimitNumber)
\$('#bandwidth_max_dropdown').val(bandwithLimitText)
jQuery('#bandwidth_max_value').val(bandwithLimitNumber)
jQuery('#bandwidth_max_dropdown').val(bandwithLimitText)
}
}
// Update the value
\$('#bandwidth_max_value, #bandwidth_max_dropdown').on('change', function() {
if(\$('#bandwidth_max_value').val()) {
\$('#bandwidth_max').val(\$('#bandwidth_max_value').val() + \$('#bandwidth_max_dropdown').val())
jQuery('#bandwidth_max_value, #bandwidth_max_dropdown').on('change', function() {
if(jQuery('#bandwidth_max_value').val()) {
jQuery('#bandwidth_max').val(jQuery('#bandwidth_max_value').val() + jQuery('#bandwidth_max_dropdown').val())
} else {
\$('#bandwidth_max').val('')
jQuery('#bandwidth_max').val('')
}
})
\$('#create_backup').click(function () {
jQuery('#create_backup').click(function () {
$.ajax({
type: "POST",
url: "../../api",
data: {mode:'config', name:'create_backup', output:'json', apikey: \$('#apikey').val()},
data: {mode:'config', name:'create_backup', output:'json', apikey: jQuery('#apikey').val()},
success: function(data) {
if(data.value.result) {
alert("$T('backup'):\n" + data.value.message)

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Email"#-->
<!--#set global $help_uri="configuration/3.7/notifications"#-->
<!--#set global $help_uri = $confighelpuri + "notifications"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#def show_notify_checkboxes($section_label)#-->
@@ -17,7 +17,7 @@
<div class="col2-cats" <!--#if int($getVar($section_label + '_enable')) > 0 then '' else 'style="display:none"'#-->>
<hr>
<b>$T('affectedCat')</b><br/>
<select name="${section_label}_cats" multiple="multiple" class="multiple_cats">
<select name="${section_label}_cats" multiple="multiple" class="multiple_cats" size="$len($categories)">
<!--#for $ct in $categories#-->
<option value="$ct" <!--#if $ct in $getVar($section_label + '_cats') then 'selected="selected"' else ""#-->>$Tspec($ct)</option>
<!--#end for#-->
@@ -33,10 +33,10 @@
<input type="hidden" id="ajax" name="ajax" value="1" />
<div class="section" id="email">
<div class="col2">
<h3>$T('cmenu-email') <a href="$helpuri$help_uri#toc0" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('cmenu-email') <a href="$help_uri#toc0" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<div class="col2-cats" <!--#if int($email_endjob) > 0 then '' else 'style="display:none"'#-->>
<b>$T('affectedCat')</b><br/>
<select name="email_cats" multiple="multiple" class="multiple_cats">
<select name="email_cats" multiple="multiple" class="multiple_cats" size="$len($categories)">
<!--#for $ct in $categories#-->
<option value="$ct" <!--#if $ct in $email_cats then 'selected="selected"' else ""#-->>$Tspec($ct)</option>
<!--#end for#-->
@@ -153,7 +153,7 @@
<!--#if $have_ntfosd#-->
<div class="section">
<div class="col2">
<h3>$T('section-OSD') <a href="$helpuri$help_uri#toc4" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('section-OSD') <a href="$help_uri#toc4" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<table>
<tr>
<td><input type="checkbox" name="ntfosd_enable" id="ntfosd_enable" value="1" <!--#if int($ntfosd_enable) > 0 then 'checked="checked"' else ""#--> /></td>
@@ -178,14 +178,14 @@
<!--#end if#-->
<div class="section" id="nscript">
<div class="col2">
<h3>$T('section-NScript') <a href="$helpuri$help_uri#nscript" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('section-NScript') <a href="$help_uri#nscript" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<table>
<tr>
<td><input type="checkbox" name="nscript_enable" id="nscript_enable" value="1" <!--#if int($nscript_enable) > 0 then 'checked="checked"' else ""#--> /></td>
<td><label for="nscript_enable"> $T('opt-nscript_enable')</label></td>
</tr>
</table>
<em>$T('explain-nscript_enable')</em><br><a href="$helpuri$help_uri#nscript" target="_blank">$T('readwiki')</a>
<em>$T('explain-nscript_enable')</em><br><a href="$help_uri#nscript" target="_blank">$T('readwiki')</a>
$show_cat_box('nscript')
</div>
<div class="col1" <!--#if int($nscript_enable) > 0 then '' else 'style="display:none"'#-->>
@@ -367,24 +367,24 @@
</div><!-- /colmask -->
<script type="text/javascript">
\$(document).ready(function(){
jQuery(document).ready(function(){
// Expand on enable
\$('.col2 input[name$="enable"]').change(function() {
jQuery('.col2 input[name$="enable"]').change(function() {
if(this.checked) {
\$(this).parents('.section').find('.col1').show()
\$(this).parents('.col2').find('.col2-cats').show()
jQuery(this).parents('.section').find('.col1').show()
jQuery(this).parents('.col2').find('.col2-cats').show()
} else {
\$(this).parents('.section').find('.col1').hide()
\$(this).parents('.col2').find('.col2-cats').hide()
jQuery(this).parents('.section').find('.col1').hide()
jQuery(this).parents('.col2').find('.col2-cats').hide()
}
\$('form').submit()
jQuery('form').submit()
addRowColor()
})
\$('#email_endjob').change(function() {
if(\$(this).val() > 0) {
\$(this).parents('.section').find('.col2-cats').show()
jQuery('#email_endjob').change(function() {
if(jQuery(this).val() > 0) {
jQuery(this).parents('.section').find('.col2-cats').show()
} else {
\$(this).parents('.section').find('.col2-cats').hide()
jQuery(this).parents('.section').find('.col2-cats').hide()
}
})
@@ -393,27 +393,27 @@
**/
function testNotification(buttonObj) {
// Confirm?
if(\$(buttonObj).attr('rel')) {
if(!confirm(\$(buttonObj).attr('rel'))) return false;
if(jQuery(buttonObj).attr('rel')) {
if(!confirm(jQuery(buttonObj).attr('rel'))) return false;
}
// Disable button and get the data
\$(buttonObj).attr("disabled", "disabled")
\$(buttonObj).find('span').toggleClass('glyphicon-comment glyphicon-refresh spin-glyphicon')
jQuery(buttonObj).attr("disabled", "disabled")
jQuery(buttonObj).find('span').toggleClass('glyphicon-comment glyphicon-refresh spin-glyphicon')
var data = { mode: buttonObj.id, apikey: '$apikey', output: 'json' };
\$(buttonObj).parents('.section').extractFormDataTo(data);
jQuery(buttonObj).parents('.section').extractFormDataTo(data);
// Clear up the box
resultBox = \$(buttonObj).parents('.section').find('.result-box .alert');
resultBox = jQuery(buttonObj).parents('.section').find('.result-box .alert');
// Get the request
\$.ajax({
jQuery.ajax({
type: "GET",
url: "../../api",
data: data
}).then(function(data) {
// Remove disabled and make the box
\$(buttonObj).removeAttr("disabled")
\$(buttonObj).find('span').toggleClass('glyphicon-comment glyphicon-refresh spin-glyphicon')
jQuery(buttonObj).removeAttr("disabled")
jQuery(buttonObj).find('span').toggleClass('glyphicon-comment glyphicon-refresh spin-glyphicon')
resultBox.removeClass('alert-success alert-danger').show()
if(data.status) {
resultBox.addClass('alert-success')
@@ -426,7 +426,7 @@
}
})
}
\$('#test_email, #test_notif, #test_windows, #test_pushbullet, #test_pushover, #test_prowl, #test_osd, #test_nscript').click(function () {
jQuery('#test_email, #test_notif, #test_windows, #test_pushbullet, #test_pushover, #test_prowl, #test_osd, #test_nscript').click(function () {
testNotification(this)
})
});

View File

@@ -1,12 +1,12 @@
<!--#set global $pane="RSS"#-->
<!--#set global $help_uri="configuration/3.7/rss"#-->
<!--#set global $help_uri = $confighelpuri + "rss"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import html#-->
<div class="colmask">
<!--#if not $active_feed#-->
<div class="section">
<div class="padTable">
<a class="main-helplink" href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<a class="main-helplink" href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<p>$T('explain-RSS')</p>
<form action="add_rss_feed" method="post" autocomplete="off">
<input type="hidden" name="apikey" value="$apikey" />
@@ -105,7 +105,7 @@
<!--#set $feed = html.unescape($active_feed)#-->
<div class="section rss-section">
<div class="padTable">
<a class="main-helplink" href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<a class="main-helplink" href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<h2 class="nomargin activeRSS">
<a href="${root}config/rss/">$T('cmenu-rss')</a> &raquo;
$active_feed
@@ -551,43 +551,43 @@ function urlencode(str) {
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}
\$(document).ready(function(){
\$('.favicon').each(function(i, theContainer) {
jQuery(document).ready(function(){
jQuery('.favicon').each(function(i, theContainer) {
// Easy favicon grabber
var favUrl = '//' + \$(theContainer).data('domain') + '/favicon.ico'
var favUrl = '//' + jQuery(theContainer).data('domain') + '/favicon.ico'
// Does the image exist? Otherwise place a glyphicon
var testFavImg = new Image();
testFavImg.src = favUrl;
testFavImg.onerror = function (evt){
\$(theContainer).append('<span class="glyphicon glyphicon-list"></span>')
jQuery(theContainer).append('<span class="glyphicon glyphicon-list"></span>')
}
})
\$('.tabs a').click(function (e) {
jQuery('.tabs a').click(function (e) {
e.preventDefault()
\$(this).tab('show')
jQuery(this).tab('show')
})
\$('.editFeed').click(function(){
var oldURI = \$(this).prev().val();
var whichFeed = \$(this).attr("rel");
jQuery('.editFeed').click(function(){
var oldURI = jQuery(this).prev().val();
var whichFeed = jQuery(this).attr("rel");
// Fill the values
\$('#feed_edit_name_label').text(whichFeed)
\$('#feed_edit_old_name').val(whichFeed)
\$('#feed_edit_new_name').val(whichFeed)
\$('#feed_edit_url').val(oldURI)
jQuery('#feed_edit_name_label').text(whichFeed)
jQuery('#feed_edit_old_name').val(whichFeed)
jQuery('#feed_edit_new_name').val(whichFeed)
jQuery('#feed_edit_url').val(oldURI)
// Show the modal
\$('#rss_edit_modal').modal('show');
jQuery('#rss_edit_modal').modal('show');
});
\$('.delFeed').click(function(e){
jQuery('.delFeed').click(function(e){
e.preventDefault();
if ( confirm("$T('confirm')") ) {
var whichFeed = \$(this).attr("rel");
\$.ajax({
var whichFeed = jQuery(this).attr("rel");
jQuery.ajax({
type: "POST",
url: "del_rss_feed",
data: {feed: whichFeed, apikey: "$apikey" }
@@ -600,9 +600,9 @@ function urlencode(str) {
}
});
\$('.toggleFeedCheckbox').click(function(){
var whichFeed = \$(this).attr("rel");
\$.ajax({
jQuery('.toggleFeedCheckbox').click(function(){
var whichFeed = jQuery(this).attr("rel");
jQuery.ajax({
type: "POST",
url: "toggle_rss_feed",
data: {feed: whichFeed, apikey: "$apikey" }
@@ -615,34 +615,34 @@ function urlencode(str) {
});
// Only the Accept filter needs all the options
\$('form[action="upd_rss_filter"]').find('select[name="filter_type"]').change(function() {
\$(this).parent().parent().find('select:not([name="filter_type"])').attr('disabled', \$(this).val() != "A" && \$(this).val() != "S")
jQuery('form[action="upd_rss_filter"]').find('select[name="filter_type"]').change(function() {
jQuery(this).parent().parent().find('select:not([name="filter_type"])').attr('disabled', jQuery(this).val() != "A" && jQuery(this).val() != "S")
})
// Trigger on-load for all
\$('.disabled_options_rule').find('td select:not([name="filter_type"])').attr('disabled', true)
jQuery('.disabled_options_rule').find('td select:not([name="filter_type"])').attr('disabled', true)
function setActiveIcon(objButton) {
// Let's make it look like things are happening!
\$(objButton).attr('disabled', true)
\$(objButton).find('span').remove()
\$(objButton).prepend('<span class="glyphicon glyphicon-transfer"></span>')
jQuery(objButton).attr('disabled', true)
jQuery(objButton).find('span').remove()
jQuery(objButton).prepend('<span class="glyphicon glyphicon-transfer"></span>')
}
// Enable sorting and set default
if (\$('#rss-tab-matched table').length) {
\$('#rss-tab-matched table').tablesort().data('tablesort').sort(\$('#rss-tab-matched th.default-sort'), 'desc');
if (jQuery('#rss-tab-matched table').length) {
jQuery('#rss-tab-matched table').tablesort().data('tablesort').sort(jQuery('#rss-tab-matched th.default-sort'), 'desc');
}
if (\$('#rss-tab-not-matched table').length) {
\$('#rss-tab-not-matched table').tablesort().data('tablesort').sort(\$('#rss-tab-not-matched th.default-sort'), 'desc');
if (jQuery('#rss-tab-not-matched table').length) {
jQuery('#rss-tab-not-matched table').tablesort().data('tablesort').sort(jQuery('#rss-tab-not-matched th.default-sort'), 'desc');
}
if (\$('#rss-tab-done table').length) {
\$('#rss-tab-done table').tablesort().data('tablesort').sort(\$('#rss-tab-done th.default-sort'), 'desc');
if (jQuery('#rss-tab-done table').length) {
jQuery('#rss-tab-done table').tablesort().data('tablesort').sort(jQuery('#rss-tab-done th.default-sort'), 'desc');
}
\$('.testFeed').click(function(){
jQuery('.testFeed').click(function(){
setActiveIcon(this)
var whichFeed = \$(this).attr("rel");
\$.ajax({
var whichFeed = jQuery(this).attr("rel");
jQuery.ajax({
type: "POST",
url: "test_rss_feed",
data: {feed: whichFeed, apikey: "$apikey" }
@@ -654,34 +654,34 @@ function urlencode(str) {
});
});
\$('.cleanFeed').click(function(){
jQuery('.cleanFeed').click(function(){
setActiveIcon(this)
var theForm = \$(this).closest("form");
var theForm = jQuery(this).closest("form");
theForm.attr("action", "clean_rss_jobs").submit();
});
\$('.evalFeed').click(function(){
jQuery('.evalFeed').click(function(){
setActiveIcon(this)
var theForm = \$(this).closest("form");
var theForm = jQuery(this).closest("form");
theForm.attr("action", "eval_rss_feed").submit();
});
\$('.delFilter').click(function(){
var theForm = \$(this).closest("form");
jQuery('.delFilter').click(function(){
var theForm = jQuery(this).closest("form");
theForm.attr("action", "del_rss_filter").submit();
});
\$('form[action="download"]').ajaxForm({
jQuery('form[action="download"]').ajaxForm({
datatype: 'json',
beforeSubmit: function (_, form) {
\$(form).find('button').attr("disabled", "disabled")
jQuery(form).find('button').attr("disabled", "disabled")
// Remove icon and add new one
\$(form).find('button span').remove()
\$(form).find('button').prepend('<span class="glyphicon glyphicon-transfer"></span>')
jQuery(form).find('button span').remove()
jQuery(form).find('button').prepend('<span class="glyphicon glyphicon-transfer"></span>')
},
success: function (_, _, _, form) {
// Set success
\$(form).find('button').html('<span class="glyphicon glyphicon-ok"></span> $T('rss-added')')
jQuery(form).find('button').html('<span class="glyphicon glyphicon-ok"></span> $T('rss-added')')
}
});

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Scheduling"#-->
<!--#set global $help_uri="configuration/3.7/scheduling"#-->
<!--#set global $help_uri = $confighelpuri + "scheduling"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<%
@@ -15,7 +15,7 @@ else:
<div class="colmask">
<div class="section">
<div class="col2">
<h3>$T('addSchedule') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('addSchedule') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<form action="addSchedule" method="post" autocomplete="off">
<input type="hidden" id="apikey" name="apikey" value="$apikey" />
@@ -112,32 +112,32 @@ else:
</div><!-- /section -->
</div><!-- /colmask -->
<script type="text/javascript">
\$('#action').on('change', function() {
jQuery('#action').on('change', function() {
// Set the action
\$('#arguments').val((\$(this).find('option:selected').data('action')))
jQuery('#arguments').val((jQuery(this).find('option:selected').data('action')))
// Is it speedlimit?
if(\$(this).find('option:selected').val() == 'speedlimit') {
\$('#hidden_arguments').show()
\$('#hidden_arguments input').attr('placeholder', 'Bytes/s, "1M" = 1 MB/s, "500K" = 500 KB/s')
if(jQuery(this).find('option:selected').val() == 'speedlimit') {
jQuery('#hidden_arguments').show()
jQuery('#hidden_arguments input').attr('placeholder', 'Bytes/s, "1M" = 1 MB/s, "500K" = 500 KB/s')
} else {
\$('#hidden_arguments').hide()
\$('#hidden_arguments input').attr('placeholder', '')
jQuery('#hidden_arguments').hide()
jQuery('#hidden_arguments input').attr('placeholder', '')
}
/* Arguments - since we only have speedlimit with arguments, disabled for now
if(\$(this).find('option:selected').data('noarg')) {
\$('#hidden_arguments').hide()
if(jQuery(this).find('option:selected').data('noarg')) {
jQuery('#hidden_arguments').hide()
} else {
\$('#hidden_arguments').show()
jQuery('#hidden_arguments').show()
}*/
})
\$('[name="schedenabled"]').click(function() {
\$.ajax({
jQuery('[name="schedenabled"]').click(function() {
jQuery.ajax({
type: "POST",
url: "toggleSchedule",
data: {line: \$(this).val(), apikey: "$apikey" }
data: {line: jQuery(this).val(), apikey: "$apikey" }
}).done(function() {
// Let us leave!
formWasSubmitted = true;

View File

@@ -1,17 +1,25 @@
<!--#set global $pane="Servers"#-->
<!--#set global $help_uri="configuration/3.7/servers"#-->
<!--#set global $help_uri = $confighelpuri + "servers"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import json#-->
<!--#import datetime#-->
<script type="text/javascript" xmlns="http://www.w3.org/1999/html">
<script type="text/javascript">
// Define variable needed for the server-statistics
var serverBandwithData = {}
var serverArticleTries = {}
var serverArticleFailed = {}
// Keep track of all used hostnames
var hostnames = ""
</script>
<div class="server-frame">
<a href="#">&times;</a>
<iframe></iframe>
</div>
<div class="colmask">
<div class="padding alt section">
<button type="button" class="btn btn-default" id="addServerButton"><span class="glyphicon glyphicon-plus"></span> $T('button-addServer')</button>
@@ -29,7 +37,7 @@
</div>
<div class="section" id="addServerContent" style="display: none;">
<div class="col2">
<h3>$T('addServer') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('addServer') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div>
<div class="col1">
<form action="addServer" method="post" autocomplete="off" onsubmit="removeObfuscation();">
@@ -51,25 +59,25 @@
</div>
<div class="field-pair advanced-settings">
<label class="config" for="port">$T('srv-port')</label>
<input type="number" name="port" id="port" size="8" value="119" min="0" />
<input type="number" name="port" id="port" size="8" value="563" min="0" />
</div>
<div class="field-pair">
<label class="config" for="ssl">$T('srv-ssl')</label>
<input type="checkbox" name="ssl" id="ssl" value="1" />
<input type="checkbox" name="ssl" id="ssl" value="1" checked />
<span class="desc">$T('explain-ssl')</span>
</div>
<!-- Tricks to avoid browser auto-fill, fixed on-submit with javascript -->
<div class="field-pair">
<label class="config" for="${pid}_00">$T('srv-username')</label>
<input type="text" name="${pid}_00" id="${pid}_00" data-hide="username" />
<label class="config" for="${pid}_000">$T('srv-username')</label>
<input type="text" name="${pid}_000" id="${pid}_000" data-hide="username" />
</div>
<div class="field-pair">
<label class="config" for="${pid}_01">$T('srv-password')</label>
<input type="text" name="${pid}_01" id="${pid}_01" data-hide="password" />
<label class="config" for="${pid}_001">$T('srv-password')</label>
<input type="text" name="${pid}_001" id="${pid}_001" data-hide="password" />
</div>
<div class="field-pair">
<label class="config" for="connections">$T('srv-connections')</label>
<input type="number" name="connections" id="connections" min="1" max="1000" value="8" required />
<input type="number" name="connections" id="connections" min="1" max="500" value="8" required />
</div>
<div class="field-pair">
<label class="config" for="priority">$T('srv-priority')</label>
@@ -96,7 +104,7 @@
<label class="config" for="ssl_ciphers">$T('opt-ssl_ciphers')</label>
<input type="text" name="ssl_ciphers" id="ssl_ciphers" />
<span class="desc">$T('explain-ssl_ciphers') <br>$T('readwiki')
<a href="${helpuri}advanced/ssl-ciphers" target="_blank">${helpuri}advanced/ssl-ciphers</a></span>
<a href="https://sabnzbd.org/wiki/advanced/ssl-ciphers" target="_blank">https://sabnzbd.org/wiki/advanced/ssl-ciphers</a></span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="send_group">$T('srv-send_group')</label>
@@ -147,11 +155,11 @@
<input type="hidden" name="apikey" value="$apikey" />
<input type="hidden" name="output" value="json" />
<input type="hidden" name="server" value="$server['name']" />
<input type="hidden" id="ajax" name="ajax" value=1 />
<input type="hidden" name="ajax" value=1 />
<div class="section <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
<div class="col2 <!--#if int($server['enable']) == 0 then 'server-disabled' else ""#-->">
<h3 title="$server['displayname']">$server['displayname'] <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3 title="$server['displayname']">$server['displayname'] <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<!--#if int($server['enable']) != 0 #-->
<!--#if $last_prio != $server['priority'] and $cur_prio_color+1 < len($prio_colors) #-->
<!--#set $cur_prio_color = $cur_prio_color+1 #-->
@@ -200,7 +208,7 @@
</div>
<div class="field-pair">
<label class="config" for="connections$cur">$T('srv-connections')</label>
<input type="number" name="connections" id="connections$cur" value="$server['connections']" min="1" max="1000" required />
<input type="number" name="connections" id="connections$cur" value="$server['connections']" min="1" max="500" required />
</div>
<div class="field-pair">
<label class="config" for="priority$cur">$T('srv-priority')</label>
@@ -225,10 +233,10 @@
<span class="desc">$T('explain-ssl_verify').replace('. ', '.<br/>')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="ssl_ciphers">$T('opt-ssl_ciphers')</label>
<input type="text" name="ssl_ciphers" id="ssl_ciphers" value="$server['ssl_ciphers']" />
<label class="config" for="ssl_ciphers$cur">$T('opt-ssl_ciphers')</label>
<input type="text" name="ssl_ciphers" id="ssl_ciphers$cur" value="$server['ssl_ciphers']" />
<span class="desc">$T('explain-ssl_ciphers') <br>$T('readwiki')
<a href="${helpuri}advanced/ssl-ciphers" target="_blank">${helpuri}advanced/ssl-ciphers</a></span>
<a href="https://sabnzbd.org/wiki/advanced/ssl-ciphers" target="_blank">https://sabnzbd.org/wiki/advanced/ssl-ciphers</a></span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="required$cur">$T('srv-required')</label>
@@ -301,6 +309,9 @@
serverBandwithData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
serverArticleTries[${cur}] = <!--#echo json.dumps($server['amounts'][5])#-->
serverArticleFailed[${cur}] = <!--#echo json.dumps($server['amounts'][6])#-->
<!--#if int($server['enable']) != 0#-->
hostnames += ",$server['host']"
<!--#end if#-->
</script>
<!--#end if#-->
</div>
@@ -338,8 +349,8 @@
function showCharts() {
// Get the constants
const startDate = new Date(\$('#chart-start').val())
const endDate = new Date(\$('#chart-end').val())
const startDate = new Date(jQuery('#chart-start').val())
const endDate = new Date(jQuery('#chart-end').val())
const oneDay = 24 * 60 * 60 * 1000
const nrDays = Math.round((endDate-startDate)/oneDay)
@@ -350,8 +361,8 @@
var maxBandwith = 0
// For each chart
\$('.server-chart').each(function(j, elemn) {
const server_id = \$(elemn).data('serverid')
jQuery('.server-chart').each(function(j, elemn) {
const server_id = jQuery(elemn).data('serverid')
var totalBandwithThisRange = 0
var totalArticlesTriedThisRange = 0
var totalArticlesFailedThisRange = 0
@@ -394,7 +405,7 @@
}
// Update the text value
\$('#server-bandwith-value-' + server_id).text(filesize(totalBandwithThisRange, {round: 1}))
jQuery('#server-bandwith-value-' + server_id).text(filesize(totalBandwithThisRange, {round: 1}))
// Calculate article success ratio, if available
var articleRatio = Math.round(100 * (1 - totalArticlesFailedThisRange/totalArticlesTriedThisRange))
@@ -402,17 +413,17 @@
// If values were missing
if(!isNaN(articleRatio)) {
// Use filesize to convert to unit-display
\$('#server-article-value-' + server_id).text('$T("srv-articles-tried")'.replace('%f', articleRatio).replace('%d', filesize(totalArticlesTriedThisRange, {unix: true, round: 0, spacer: "", base: 1})))
jQuery('#server-article-value-' + server_id).text('$T("srv-articles-tried")'.replace('%f', articleRatio).replace('%d', filesize(totalArticlesTriedThisRange, {unix: true, round: 0, spacer: "", base: 1})))
// If we have a low value, we link them to the website
if(articleRatio > 60) \$('#server-article-not-complete-' + server_id).hide()
if(articleRatio > 60) jQuery('#server-article-not-complete-' + server_id).hide()
} else {
\$('#server-article-value-' + server_id).text('$T("notAvailable")')
\$('#server-article-not-complete-' + server_id).hide()
jQuery('#server-article-value-' + server_id).text('$T("notAvailable")')
jQuery('#server-article-not-complete-' + server_id).hide()
}
// Save bandwidth data in a very ugly way, but we need to do this
// so we can calculate the maximum Y-axis for all graphs
\$(elemn).data("chart-data", data)
jQuery(elemn).data("chart-data", data)
})
// Set the maximum
@@ -420,11 +431,11 @@
chartOptions.axisY.low = 0
// Update all the axis with the largest value and draw the graph
\$('.server-chart').each(function(j, elemn) {
const server_id = \$(elemn).data('serverid')
jQuery('.server-chart').each(function(j, elemn) {
const server_id = jQuery(elemn).data('serverid')
// Show the chart
chart = new Chartist.Line('#server-chart-'+server_id, \$(elemn).data("chart-data"), chartOptions)
chart = new Chartist.Line('#server-chart-'+server_id, jQuery(elemn).data("chart-data"), chartOptions)
chart.on('created', function(context) {
// Make sure to add this as the first child so it's at the bottom
context.svg.elem('rect', {
@@ -436,15 +447,15 @@
stroke: '#b9b9b9',
'stroke-width': '1px'
}, '', context.svg, true)
\$('#server-chart-'+server_id+' .ct-label.ct-vertical').each(function(index, elmn) {
jQuery('#server-chart-'+server_id+' .ct-label.ct-vertical').each(function(index, elmn) {
elmn.innerHTML = filesize(elmn.innerHTML, {round: 1}).replace(' ','')
})
});
})
// Limit input to sensible values
\$('#chart-start').attr("max", \$('#chart-end').val())
\$('#chart-end').attr("min", \$('#chart-start').val())
jQuery('#chart-start').attr("max", jQuery('#chart-end').val())
jQuery('#chart-end').attr("min", jQuery('#chart-start').val())
}
// Need to mitigate timezone effects!
@@ -457,12 +468,12 @@
/**
When finished loading
**/
\$(document).ready(function(){
jQuery(document).ready(function(){
// Exception when change of priority, reload
\$('input[name="priority"], input[name="displayname"]').on('change', function() {
\$('.fullform').submit(function() {
jQuery('input[name="priority"], input[name="displayname"]').on('change', function() {
jQuery('.fullform').submit(function() {
// No ajax this time
\$('input[name="ajax"]').val('')
jQuery('input[name="ajax"]').val('')
// Skip the fancy stuff, just submit
this.submit()
})
@@ -471,7 +482,7 @@
/**
Update charts when changed
**/
\$('#chart-start, #chart-end').on('change', function(elemn) {
jQuery('#chart-start, #chart-end').on('change', function(elemn) {
showCharts()
// Lets us leave (needs to be called after the change event)
@@ -486,16 +497,16 @@
/**
Click events
**/
\$('.showserver').click(function () {
if(\$(this).parent().hasClass('server-disabled')) {
\$(this).parent().parent().toggleClass('server-disabled')
jQuery('.showserver').click(function () {
if(jQuery(this).parent().hasClass('server-disabled')) {
jQuery(this).parent().parent().toggleClass('server-disabled')
}
\$(this).parent().next().toggle();
\$(this).parent().next().next().toggle();
if (\$(this).text().indexOf("$T('showDetails')") > 0) {
\$(this).html(\$(this).html().replace("$T('showDetails')", "$T('hideDetails')"));
jQuery(this).parent().next().toggle();
jQuery(this).parent().next().next().toggle();
if (jQuery(this).text().indexOf("$T('showDetails')") > 0) {
jQuery(this).html(jQuery(this).html().replace("$T('showDetails')", "$T('hideDetails')"));
} else {
\$(this).html(\$(this).html().replace("$T('hideDetails')", "$T('showDetails')"));
jQuery(this).html(jQuery(this).html().replace("$T('hideDetails')", "$T('showDetails')"));
// Recalculate the charts if changed while details were open
showCharts()
}
@@ -503,15 +514,15 @@
addRowColor()
});
\$('#addServerButton').click(function(){
\$('#addServerContent').show();
jQuery('#addServerButton').click(function(){
jQuery('#addServerContent').show();
// Add coloring
addRowColor()
});
\$('[name="ssl"]').click(function() {
jQuery('[name="ssl"]').click(function() {
// Use CSS transitions to do some highlighting
var portBox = \$(this).parent().parent().find('[name="port"]')
var portBox = jQuery(this).parent().parent().find('[name="port"]')
if(this.checked) {
// Enabled SSL change port when not already a custom port
if(portBox.val() == '119') {
@@ -529,16 +540,16 @@
})
// Testing servers
\$('.testServer').click(function(event){
jQuery('.testServer').click(function(event){
removeObfuscation()
var theButton = \$(this)
var theButton = jQuery(this)
var resultBox = theButton.parents('.col1').find('.result-box .alert');
theButton.attr("disabled", "disabled")
theButton.find('span').toggleClass('glyphicon-sort glyphicon-refresh spin-glyphicon')
\$.ajax({
jQuery.ajax({
type: "POST",
url: "../../api",
data: "mode=config&name=test_server&" + \$(this).parents('form:first').serialize()
data: "mode=config&name=test_server&" + jQuery(this).parents('form:first').serialize()
}).then(function(data) {
// Let's replace the link
msg = data.value.message.replace('https://sabnzbd.org/certificate-errors', '<a href="https://sabnzbd.org/certificate-errors" class="alert-link" target="_blank">https://sabnzbd.org/certificate-errors</a>')
@@ -560,9 +571,9 @@
});
});
\$('.delServer').click(function(){
jQuery('.delServer').click(function(){
if( confirm("$T('confirm')") ) {
\$(this).parents('form:first').attr('action','delServer').submit();
jQuery(this).parents('form:first').attr('action','delServer').submit();
// Let us leave!
formWasSubmitted = true;
formHasChanged = false;
@@ -571,9 +582,9 @@
return false;
});
\$('.clrServer').click(function(){
jQuery('.clrServer').click(function(){
if( confirm("$T('confirm')") ) {
\$(this).parents('form:first').attr('action','clrServer').submit();
jQuery(this).parents('form:first').attr('action','clrServer').submit();
// Let us leave!
formWasSubmitted = true;
formHasChanged = false;
@@ -582,9 +593,9 @@
return false;
});
\$('.toggleServerCheckbox').click(function(){
var whichServer = \$(this).attr("name");
\$.ajax({
jQuery('.toggleServerCheckbox').click(function(){
var whichServer = jQuery(this).attr("name");
jQuery.ajax({
type: "POST",
url: "toggleServer",
data: {server: whichServer, apikey: "$apikey" }
@@ -595,6 +606,35 @@
setTimeout(function() { location.reload(); }, 100)
});
});
// Show text-ad if there is space
if((jQuery("body").width() - jQuery("#content").width())/2 > (jQuery('.Servers .server-frame iframe').width() + 40)) {
// Do not show if dismissed previously
if(localStorage.getItem("server-frame-hide-$version") === null) {
// Let the page on the server tell us if we need to show
function receiveMessage(event) {
// Check origin of message for security reasons
if(event.origin === 'https://sabnzbd.org') {
if(event.data == 'show_server') {
jQuery('.Servers .server-frame').show()
jQuery('.Servers .server-frame a').click(function () {
localStorage.setItem("server-frame-hide-$version", "hide")
jQuery('.Servers .server-frame').hide()
})
}
if(event.data == 'hide_server') {
// Hide and don't load anymore untill the next release
jQuery('.Servers .server-frame').hide()
localStorage.setItem("server-frame-hide-$version", "hide")
}
}
}
window.addEventListener("message", receiveMessage, false);
// NOTE: The hash-part cannot be seen by the server, so we don't know which hostnames you use!
jQuery('.Servers .server-frame iframe').attr("src", "https://sabnzbd.org/servers#$active_lang" + hostnames)
}
}
});
</script>

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Special"#-->
<!--#set global $help_uri="configuration/3.7/special"#-->
<!--#set global $help_uri = $confighelpuri + "special"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -10,7 +10,7 @@
</div>
<div class="section">
<div class="col2">
<h3>$T('sptag-boolean') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('sptag-boolean') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -33,7 +33,7 @@
</div><!-- /section -->
<div class="section">
<div class="col2">
<h3>$T('sptag-entries') <a href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('sptag-entries') <a href="$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Switches"#-->
<!--#set global $help_uri="configuration/3.7/switches"#-->
<!--#set global $help_uri = $confighelpuri + "switches"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -14,19 +14,10 @@
<input type="hidden" name="output" value="json" />
<div class="section advanced-settings">
<div class="col2">
<h3>$T('swtag-server') <a href="$helpuri$help_uri#toc1" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('swtag-server') <a href="$help_uri#toc1" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
<div class="field-pair">
<label class="config" for="load_balancing">$T('opt-load_balancing')</label>
<select name="load_balancing" id="load_balancing">
<option value="0" <!--#if $load_balancing == 0 then 'selected="selected"' else ""#--> >$T('no-load-balancing')</option>
<option value="1" <!--#if $load_balancing == 1 then 'selected="selected"' else ""#--> >$T('load-balancing')</option>
<option value="2" <!--#if $load_balancing == 2 then 'selected="selected"' else ""#--> >$T('load-balancing-happy-eyeballs')</option>
</select>
<span class="desc">$T('explain-load_balancing')</span>
</div>
<div class="field-pair">
<label class="config" for="max_art_tries">$T('opt-max_art_tries')</label>
<input type="number" name="max_art_tries" id="max_art_tries" value="$max_art_tries" min="2" max="2000" />
@@ -46,7 +37,7 @@
</div><!-- /section -->
<div class="section">
<div class="col2">
<h3>$T('swtag-queue') <a href="$helpuri$help_uri#toc2" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('swtag-queue') <a href="$help_uri#toc2" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -165,7 +156,7 @@
</div><!-- /section -->
<div class="section">
<div class="col2">
<h3>$T('swtag-pp') <a href="$helpuri$help_uri#toc3" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('swtag-pp') <a href="$help_uri#toc3" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -233,11 +224,6 @@
<input type="checkbox" name="script_can_fail" id="script_can_fail" value="1" <!--#if int($script_can_fail) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-script_can_fail')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="new_nzb_on_failure">$T('opt-new_nzb_on_failure')</label>
<input type="checkbox" name="new_nzb_on_failure" id="new_nzb_on_failure" value="1" <!--#if int($new_nzb_on_failure) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-new_nzb_on_failure')</span>
</div>
<div class="field-pair">
<label class="config" for="ignore_samples">$T('opt-ignore_samples')</label>
<input type="checkbox" name="ignore_samples" id="ignore_samples" value="1" <!--#if int($ignore_samples) > 0 then 'checked="checked"' else ""#--> />
@@ -274,7 +260,7 @@
</div><!-- /section -->
<div class="section advanced-settings">
<div class="col2">
<h3>$T('swtag-naming') <a href="$helpuri$help_uri#toc4" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('swtag-naming') <a href="$help_uri#toc4" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -314,7 +300,7 @@
</div><!-- /section -->
<div class="section">
<div class="col2">
<h3>$T('swtag-quota') <a href="$helpuri$help_uri#toc5" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
<h3>$T('swtag-quota') <a href="$help_uri#toc5" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a></h3>
</div><!-- /col2 -->
<div class="col1">
<fieldset>
@@ -353,12 +339,12 @@
</div><!-- /colmask -->
<script type="text/javascript">
\$(document).ready(function() {
\$('#history_retention_select, #history_retention_number').on('change', updateHistoryRetention)
jQuery(document).ready(function() {
jQuery('#history_retention_select, #history_retention_number').on('change', updateHistoryRetention)
function updateHistoryRetention() {
var retention_setting = \$('#history_retention')
var retention_select = \$('#history_retention_select').val()
var retention_number = \$('#history_retention_number')
var retention_setting = jQuery('#history_retention')
var retention_select = jQuery('#history_retention_select').val()
var retention_number = jQuery('#history_retention_number')
// Keep all or keep none
if(retention_select == "0" || retention_select == "-1") {
retention_number.hide()
@@ -386,24 +372,24 @@
}
}
// Set the history-retention settig
var retention_setting_value = \$('#history_retention').val()
var retention_setting_value = jQuery('#history_retention').val()
if(parseInt(retention_setting_value) > 0) {
// Days or number?
if(retention_setting_value.indexOf("d") !== -1) {
\$('#history_retention_select').val("d")
jQuery('#history_retention_select').val("d")
} else {
\$('#history_retention_select').val("n")
jQuery('#history_retention_select').val("n")
}
\$('#history_retention_number').val(parseInt(retention_setting_value))
jQuery('#history_retention_number').val(parseInt(retention_setting_value))
} else {
// Keep all or keep none
\$('#history_retention_select').val(retention_setting_value)
\$('#history_retention_number').hide()
jQuery('#history_retention_select').val(retention_setting_value)
jQuery('#history_retention_number').hide()
}
\$('.restoreDefaults').click(function(e) {
jQuery('.restoreDefaults').click(function(e) {
// Get section name
var sectionName = \$(this).parents('.section').find('.col2 h3').text().trim()
var sectionName = jQuery(this).parents('.section').find('.col2 h3').text().trim()
// Confirm?
if(!confirm("$T('explain-restoreDefaults') \""+sectionName+"\"\n$T('confirm')")) return false
@@ -411,11 +397,11 @@
// Need to get all the input values, so same way as saving normally
var key_container = {}
\$(this).parents('.section').extractFormDataTo(key_container);
jQuery(this).parents('.section').extractFormDataTo(key_container);
key_container = Object.keys(key_container)
// Send request
\$.ajax({
jQuery.ajax({
type: "GET",
url: "../../api",
data: "mode=set_config_default&apikey=${apikey}&output=json&keyword=" + key_container.join('&keyword=')

View File

@@ -15,6 +15,9 @@
<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" />
<!--#if $color_scheme not in ('Light', '') #-->
<link rel="stylesheet" type="text/css" href="../staticcfg/css/${color_scheme}.css?v=$version"/>
<!--#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>
@@ -47,14 +50,14 @@
</div>
<script type="text/javascript">
// Tooltip
\$('[data-toggle="tooltip"]').tooltip()
jQuery('[data-toggle="tooltip"]').tooltip()
// Try-catch in case somebody disabled localstorage
try {
// Set what was done previously
\$('input[type="checkbox"]').prop('checked', localStorage.getItem("remember_me") === 'true')
jQuery('input[type="checkbox"]').prop('checked', localStorage.getItem("remember_me") === 'true')
// Store if we change something
\$('input[type="checkbox"]').on('change', function() {
localStorage.setItem("remember_me", \$(this).is(':checked'));
jQuery('input[type="checkbox"]').on('change', function() {
localStorage.setItem("remember_me", jQuery(this).is(':checked'));
})
} catch(err) { }
</script>

View File

@@ -0,0 +1 @@
@import url('Night.css') screen and (prefers-color-scheme: dark);

View File

@@ -0,0 +1,320 @@
body {
background-color: black;
color: #EBEBEB !important;
}
a:not(.btn) {
color: #63a7e1;
}
.btn {
box-shadow: 1px 1px 1px rgba(255, 255, 255, .1) !important;
}
.btn:not(.btn-danger),
.btn-default,
input,
select,
textarea,
.advanced-button,
.list-group-item {
border-color: #252525 !important;
}
#addFeed,
#addFeedContent,
.section {
border-bottom: 1px solid #555555;
}
.col2 p,
.col2-cats {
color: #AAA;
}
.col2 h3 {
background: none repeat scroll 0 0 #555555;
}
.catTable,
.dropdown-menu,
.dropdown-menu .divider,
.even,
.Key tr:nth-child(odd),
.language:hover,
.navbar-default .navbar-nav>.open>a,
.navbar-default .navbar-nav>.open>a:focus,
.navbar-default .navbar-nav>.open>a:hover,
.navbar-default .navbar-nav>li>a.active,
.navbar-default .navbar-nav>li>a:hover,
.navbar-logo:hover,
.quoteBlock,
.selected,
.server-disabled,
#serverResponse,
.table>tbody>tr:nth-child(odd),
.table-striped>tbody>tr:nth-child(odd),
ul.tabs li.active a,
select[disabled],
select:hover {
background-color: #444444 !important;
color: #EBEBEB !important;
}
.correct {
border: 2px solid #00cc22 !important;
}
.failed,
.required-star,
.error-text {
color: #ff3333 !important;
}
.unselected,
.selected {
border: 1px solid #EBEBEB !important;
color: #EBEBEB !important;
}
.incorrect {
border: 2px solid #ff3333 !important;
}
.disabled-text {
color: #777 !important;
}
#rightGreyText,
small {
color: #c7c7c7 !important;
}
.Categories form.sorting-row:nth-child(2n-1) tr,
.advanced-button,
.advanced-buttonSeperator,
.alt,
.infoTableSeperator.alt,
.btn:not(.btn-danger),
.btn-default.disabled:active,
.btn-default.disabled:focus,
.btn-default.disabled:hover,
a.btn.btn-default,
select.form-control,
.form-control[disabled],
.input-group-addon,
#inner,
.navbar-default,
.search-box input,
.select,
.Sorting .explain-sorting,
.table-striped>tbody>tr:nth-child(even),
.table>tbody>tr:nth-child(even),
.tab-pane tr:nth-child(odd),
textarea,
ul.tabs a.active,
a.list-group-item,
.dropdown-menu>li>a,
input[type="text"],
input[type="email"],
input[type="url"],
input[type="date"],
input[type="number"],
input[type="password"],
input[disabled],
textarea,
select {
background-color: #555555;
color: #EBEBEB;
}
.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;
}
.btn-default:focus,
.form-control:focus,
input:focus,
textarea:focus,
select:focus {
border-color: #707070 !important;
outline: initial !important;
box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.3) !important;
}
.modal-backdrop {
background-color: #262626 !important;
}
.Key tr {
border: none;
}
.table>tbody>tr>td,
.table>tbody>tr>th,
.infoTableSeperator,
.modal-footer,
.data-row {
border-top: 1px solid #555555;
}
hr {
border-top: 1px solid #555555;
}
.btn-danger {
border-color: #7b2b28;
}
.tab-content .catTable tbody,
ul.tabs a,
.colmask,
#subscriptions,
.RSS form[action="add_rss_feed"] tr:nth-child(even),
.Config .table {
border: 1px solid #555555 !important;
}
.Categories form:first-of-type tr:last-of-type,
.default,
.dropdown-menu>li>a:focus,
.dropdown-menu>li>a:hover {
background-color: #696969;
}
.activeRSS,
.activeRSS a,
.activeRSS a:visited,
.btn-default,
.checkbox label,
.feed-row td,
.help-block,
#content,
.navbar-default .navbar-nav>li>a,
.navbar-default .navbar-nav>li>a>.glyphicon,
.path,
.Servers .ct-label,
.time,
.main-restarting.in,
#search-dropdown .dropdown-header,
ul.tabs a,
a.wizard-advanced-settings,
.quoteBlock a,
a.main-helplink,
col2 h3 a,
.text-center a,
.text-center a:hover {
color: #EBEBEB;
}
.container,
#content {
background-color: unset !important;
}
#content>div.colmask>div:nth-child(3) {
border-bottom: 1px solid #555555 !important;
}
.Servers .ct-series-a .ct-line,
.Servers .ct-series-a .ct-point {
stroke: #EBEBEB;
}
#inner,
.colmask {
background-color: #303030;
}
.modal-header {
background-color: #3C3C3C;
}
.modal-content,
.modal-body,
.modal-footer {
background-color: #727272;
}
#modal_qr .modal-body {
background-color: #EBEBEB;
}
.form-signin .btn.btn-default {
color: black;
}
.rss-icon-svg {
fill: white;
}
.rss-symbol {
fill: #555555;
}
/* Placeholders - Will not work if grouped! */
::-webkit-input-placeholder {
color: #EBEBEB !important;
}
::-moz-placeholder {
color: #EBEBEB !important;
opacity: 1 !important;
}
:-ms-input-placeholder {
color: #EBEBEB !important;
}
.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;
}
.Special .glyphicon-asterisk {
color: #E4E4E4 !important;
}

View File

@@ -7,7 +7,10 @@ body {
border-radius: 0 !important;
}
.btn, .btn:hover, .btn:active, .btn:focus {
.btn,
.btn:hover,
.btn:active,
.btn:focus {
box-shadow: 1px 1px 1px rgba(0,0,0,.1) !important;
background-color: white !important;
}
@@ -38,7 +41,7 @@ body {
}
.text-center a:hover {
color: black !important;
color: black;
}
.form-signin .alert {

View File

@@ -89,15 +89,20 @@ body {
display: block;
position: static;
float: right;
color: black !important;
color: black;
padding: 0px;
font-size: 1.2em;
}
.example {
background-color: #fefeee;
}
.presets strong {
display: inline-block;
width: 75px;
}
.presets {
margin-bottom: -6px;
max-width: 60%;
}
.presets input {
margin: 2px 0;
@@ -172,8 +177,8 @@ input[type="checkbox"]+.desc {
background-color: #F8F8F8;
}
.field-pair:last-child,
.no-field-pair-bg {
background-color: transparent;
.field-pair.no-field-pair-bg {
background-color: transparent !important;
}
.alt,
.infoTableSeperator.alt {
@@ -220,10 +225,38 @@ input[type='checkbox'] {
padding: 0;
margin-left: 5px;
}
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, 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 {
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,
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: #fffff0;
border: 1px solid #aaa;
}
.col1 input[type='checkbox'] {
position: absolute;
top: auto!important;
@@ -326,6 +359,53 @@ tr.separator {
margin: 5px;
}
.Sorting .explain-sorting {
background-color: #fff;
color: #000;
}
.Sorting .explain-pattern {
border: none;
width: 100%;
}
.Sorting .pattern-table {
border:1px solid #ccc;
}
.Sorting .sorter-switch {
margin-right: 0.2em;
}
.Sorting .sorter-switch-container {
margin: 10px 0px;
height: 1.5em;
display: block;
}
.Sorting .sorter-placeholder {
position: relative;
}
.Sorting .sorter-placeholder:after {
content: "\e034";
font-family: "Glyphicons Halflings";
background: unset;
text-align: center;
position: absolute;
bottom: 0;
left: 0;
right: 0;
height: 30px;
border-radius: 15px;
border: 1px dashed #444;
}
.Sorting .glyphicon-option-vertical {
margin-top: 1.5em;
margin-right: 0.2em;
cursor: move;
}
.Sorting form:not(.sorting-row) .glyphicon-option-vertical {
visibility: hidden;
}
.Sorting .sorting-quick-setup {
padding: 1.5em 2em 3em
}
.RSS .rss-section input[type="text"] {
max-width: 180px;
}
@@ -421,6 +501,9 @@ tr.separator {
.align-center {
text-align: center;
}
.valign-top {
vertical-align: top;
}
.nowrap {
white-space: nowrap;
}
@@ -784,6 +867,7 @@ select {
vertical-align:middle;
max-width: 100%;
min-height: 34px;
min-width: 55px;
font-size: 13px;
background-color: white;
}
@@ -930,7 +1014,7 @@ input[type="checkbox"] {
}
*/
.navbar-default .navbar-nav>li>a {
color: black !important;
color: black;
}
.navbar-default .navbar-nav>li>a:hover,
@@ -967,6 +1051,32 @@ input[type="checkbox"] {
margin: 10px 0px;
}
.Servers .server-frame {
position: relative;
width: 220px;
height: 325px;
margin-bottom: -325px;
left: -240px;
display: none;
}
.Servers .server-frame a {
color: black !important;
text-decoration: none !important;
opacity: 0.8;
font-size: 2em;
font-family: arial, sans-serif !important;
position: absolute;
right: 5px;
top: -5px;
}
.Servers .server-frame iframe {
width: 100%;
height: 100%;
border: 0;
}
.Servers .col2 .label {
margin-top: 8px;
font-size: 0.85em;
@@ -1248,6 +1358,12 @@ html[dir="rtl"] .Scheduling form[action="addSchedule"] input[type="checkbox"] {
padding: 0px 15px 10px;
width: inherit;
}
.Sorting .glyphicon-option-vertical {
display: none;
}
.Sorting .sorter h3 {
cursor: move;
}
}
@media screen and (max-width: 768px) {

View File

@@ -203,7 +203,12 @@ $.fn.extractFormDataTo = function(target) {
var selects = $("select", this);
selects.each(function (i,elem) {
target[elem.name] = elem.value;
if (elem.selectedOptions.length > 1) {
// Handle <select multiple="multiple">
target[elem.name] = Array.from(elem.selectedOptions).map(({ value }) => value).toString();
} else {
target[elem.name] = elem.value;
}
});
return this;

View File

@@ -1,5 +1,10 @@
<div class="history" id="history-tab" data-bind="visible: hasHistory() || displayTabbed()" style="display: none">
<h2>$T('menu-history')</h2>
<div class="history-header">
<h2>$T('menu-history')</h2>
<a href="#" data-bind="click: history.showMultiEdit">
<span class="glyphicon glyphicon-tasks" data-tooltip="true" data-placement="left" title="$T('Glitter-multiOperations')"></span>
</a>
</div>
<table class="table table-hover history-table paginated">
<thead>
<tr>
@@ -55,7 +60,10 @@
<!-- /ko -->
<td class="history-completedon row-wrap-text" data-bind="text: completedOn(), attr: { 'data-timestamp': completed }" onclick="showDetails(this)"></td>
<td class="delete">
<div class="dropdown">
<label data-bind="visible: parent.isMultiEditing()">
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
</label>
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
<a href="#" data-toggle="dropdown" data-bind="click: updateAllHistoryInfo">
<span class="caret"></span>
</a>
@@ -124,7 +132,20 @@
<div class="multioperations-selector" id="history-options">
<a href="#" class="hover-button" title="$T('link-retryAll')" data-tooltip="true" data-placement="left" data-bind="click: history.retryAllFailed"><span class="glyphicon glyphicon-repeat"></span></a>
<a href="#" class="hover-button" title="$T('showAllHis') / $T('showFailedHis')" data-tooltip="true" data-placement="left" data-bind="click: history.toggleShowFailed, css: { 'history-options-show-failed': history.showFailed }"><span class="glyphicon glyphicon-exclamation-sign"></span></a>
<a href="#modal-purge-history" class="hover-button" title="$T('purgeHist')" data-toggle="modal" data-tooltip="true" data-placement="left"><span class="glyphicon glyphicon-trash"></span></a>
<div data-bind="visible: history.isMultiEditing()">
<span class="label label-default" data-bind="text: history.multiEditItems().length">0</span>
<label for="multiedit-checkall-history">
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-history" title="$T('Glitter-checkAll')" data-bind="click: checkAllJobs" data-tooltip="true" data-placement="top" />
</label>
</div>
<a href="#" class="hover-button" data-bind="visible: history.isMultiEditing(), click: doMultiDelete">
<span class="glyphicon glyphicon-trash"></span>
</a>
<a href="#modal-purge-history" class="hover-button" title="$T('purgeHist')" data-bind="visible: !history.isMultiEditing()" data-toggle="modal" data-tooltip="true" data-placement="left">
<span class="glyphicon glyphicon-trash"></span>
</a>
</div>
<div class="info-container history-info">

View File

@@ -123,11 +123,9 @@
<span data-bind="text: statusInfo.loadavg"></span>
</div>
</div>
<div class="row" data-bind="visible: statusInfo.delayed_decoder() > 5 || statusInfo.delayed_assembler() > 5">
<div class="row" data-bind="visible: statusInfo.delayed_assembler() > 5">
<div class="col-sm-6">$T('dashboard-delayed') &nbsp; </div>
<div class="col-sm-6">
<span data-bind="visible: statusInfo.delayed_decoder() > 5">$T('dashboard-delayed-cpu')</span>
<small data-bind="visible: statusInfo.delayed_decoder() > 5">(<span data-bind="text: statusInfo.delayed_decoder"></span>x)</small>
<span data-bind="visible: statusInfo.delayed_assembler() > 5">$T('dashboard-delayed-disk')</span>
<small data-bind="visible: statusInfo.delayed_assembler() > 5">(<span data-bind="text: statusInfo.delayed_assembler"></span>x)</small>
</div>
@@ -456,6 +454,8 @@
<div class="form-group form-checkbox">
<label class="col-sm-6 control-label">
$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" />
@@ -713,7 +713,7 @@
</tbody>
</table>
<hr/>
<p><small>Copyright (C) 2007-2021 The SABnzbd Team &lt;team@sabnzbd.org&gt;<br/>$T('yourRights') </small></p>
<p><small>Copyright (C) 2007-2021 The SABnzbd-Team (<a href="https://sabnzbd.org/" target="_blank">sabnzbd.org</a>)<br/>$T('yourRights') </small></p>
</div>
</div>
</div>

View File

@@ -132,7 +132,7 @@
<td class="timeleft row-wrap-text" data-bind="text: statusText"></td>
<td class="delete">
<label data-bind="visible: parent.isMultiEditing()">
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
<input type="checkbox" name="multiedit" title="$T('Glitter-multiSelect')" data-bind="click: parent.parent.addMultiEdit, attr: { 'id': 'multiedit_' + id } " />
</label>
<!-- ko if: !isGrabbing() -->
<div class="dropdown" data-bind="visible: !parent.isMultiEditing()">
@@ -171,10 +171,10 @@
<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">
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall" title="$T('Glitter-checkAll')" data-bind="click: queue.checkAllJobs" data-tooltip="true" data-placement="top" />
<label for="multiedit-checkall-queue">
<input type="checkbox" name="multieditCheckAll" id="multiedit-checkall-queue" title="$T('Glitter-checkAll')" data-bind="click: checkAllJobs" data-tooltip="true" data-placement="top" />
</label>
<a href="#" class="hover-button" data-bind="click: queue.doMultiDelete">
<a href="#" class="hover-button" data-bind="click: doMultiDelete">
<span class="glyphicon glyphicon-trash"></span>
</a>
</div>

View File

@@ -145,10 +145,10 @@
<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" data-bind="text: history.totalItems"></span></a>
<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>
<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>

View File

@@ -13,7 +13,10 @@ function HistoryListModel(parent) {
self.searchTerm = ko.observable('').extend({ rateLimit: { timeout: 400, method: "notifyWhenChangesStop" } });
self.paginationLimit = ko.observable(10).extend({ persist: 'historyPaginationLimit' });
self.totalItems = ko.observable(0);
self.ppItems = ko.observable(0);
self.pagination = new paginationModel(self);
self.isMultiEditing = ko.observable(false).extend({ persist: 'historyIsMultiEditing' });
self.multiEditItems = ko.observableArray([]);
// Download history info
self.downloadedToday = ko.observable();
@@ -79,7 +82,7 @@ function HistoryListModel(parent) {
if(self.parent.queue.multiEditItems().length > 0) {
$.each(newItems, function() {
var currentItem = this;
self.parent.queue.multiEditItems.remove(function(inList) { return inList.id == currentItem.nzo_id; })
self.parent.queue.multiEditItems.remove(function(inList) { return inList.id == currentItem.id; })
})
}
}
@@ -93,6 +96,7 @@ function HistoryListModel(parent) {
History information
***/
self.totalItems(data.noofslots);
self.ppItems(data.ppslots)
self.downloadedToday(data.day_size);
self.downloadedWeek(data.week_size);
self.downloadedMonth(data.month_size);
@@ -110,6 +114,8 @@ function HistoryListModel(parent) {
value: newValue
})
}
// Update pagination and counters
self.parent.refresh(true)
});
// Retry a job
@@ -224,7 +230,7 @@ function HistoryListModel(parent) {
$.each(self.historyItems(), function(index) {
// Only append when it's a download that can be deleted
if(!this.processingDownload() && !this.processingWaiting()) {
strIDs = strIDs + this.nzo_id + ',';
strIDs = strIDs + this.id + ',';
}
})
// Send the command
@@ -253,6 +259,13 @@ function HistoryListModel(parent) {
$("#modal-purge-history").modal('hide');
});
};
// Show the input checkbox
self.showMultiEdit = function() {
self.isMultiEditing(!self.isMultiEditing())
self.multiEditItems.removeAll();
$('.history-table input[name="multiedit"], #history-options #multiedit-checkall').prop({'checked': false, 'indeterminate': false})
}
}
/**
@@ -266,7 +279,7 @@ function HistoryModel(parent, data) {
// If we update the full set every time it uses lot of CPU
// The Status/Actionline/scriptline/completed we do update every time
// When clicked on the more-info button we load the rest again
self.nzo_id = data.nzo_id;
self.id = data.nzo_id;
self.index = data.index;
self.updateAllHistory = false;
self.hasDropdown = ko.observable(false);
@@ -375,7 +388,7 @@ function HistoryModel(parent, data) {
// Re-try button
self.retry = function() {
// Set JOB-id
$('#modal-retry-job input[name="retry_job_id"]').val(self.nzo_id)
$('#modal-retry-job input[name="retry_job_id"]').val(self.id)
// Set password
$('#retry_job_password').val(self.historyStatus.password())
// Open modal
@@ -427,7 +440,7 @@ function HistoryModel(parent, data) {
if(item.processingDownload() == 2) {
callAPI({
mode: 'cancel_pp',
value: self.nzo_id
value: self.id
})
// All we can do is wait
} else {
@@ -436,7 +449,7 @@ function HistoryModel(parent, data) {
mode: 'history',
name: 'delete',
del_files: 1,
value: self.nzo_id
value: self.id
}).then(function(response) {
if(response.status) {
// Make sure no flickering (if there are more items left) and then remove

View File

@@ -62,7 +62,6 @@ function ViewModel() {
self.statusInfo.publicipv4 = ko.observable();
self.statusInfo.ipv6 = ko.observable();
self.statusInfo.dnslookup = ko.observable();
self.statusInfo.delayed_decoder = ko.observable();
self.statusInfo.delayed_assembler = ko.observable();
self.statusInfo.loadavg = ko.observable();
self.statusInfo.pystone = ko.observable();
@@ -134,6 +133,100 @@ function ViewModel() {
return parseInt(self.nrWarnings()) + self.allMessages().length;
})
self.updateCheckAllButtonState = function(section) {
setCheckAllState(`#multiedit-checkall-${section}`, `.${section}-table input[name="multiedit"]`)
}
// Add queue or history item to multi-edit list
self.addMultiEdit = function(item, event) {
// The parent model is either the queue or history
const model = this.parent;
const section = model.queueItems ? 'queue' : 'history';
if(event.shiftKey) {
checkShiftRange(`.${section}-table input[name="multiedit"]`);
}
if(event.currentTarget.checked) {
model.multiEditItems.push(item);
// History is not editable
// Only the queue will fire the multi-edit update
model.doMultiEditUpdate?.();
} else {
model.multiEditItems.remove(function(inList) { return inList.id == item.id; })
}
self.updateCheckAllButtonState(section);
return true;
}
// Check all queue or history items
self.checkAllJobs = function(item, event) {
const section = event.currentTarget.closest('.multioperations-selector').id === 'history-options' ? 'history' : 'queue';
const model = section === 'history' ? self.history : self.queue;
const allChecks = $(`.${section}-table input[name="multiedit"]`).filter(':not(:disabled):visible');
self.updateCheckAllButtonState(section);
if(event.target.indeterminate || (event.target.checked && !event.target.indeterminate)) {
const allActive = allChecks.filter(":checked")
if(allActive.length === model.multiEditItems().length) {
model.multiEditItems.removeAll();
allActive.prop('checked', false)
} else {
allActive.each(function() {
var item = ko.dataFor(this)
model.multiEditItems.remove(function(inList) { return inList.id === item.id; })
this.checked = false;
})
}
} else {
allChecks.prop('checked', true)
allChecks.each(function() { model.multiEditItems.push(ko.dataFor(this)) })
event.target.checked = true
model.multiEditUpdate?.();
}
self.updateCheckAllButtonState(section);
return true;
}
// Delete all selected queue or history items
self.doMultiDelete = function(item, event) {
const section = event.currentTarget.closest('.multioperations-selector').id === 'history-options' ? 'history' : 'queue';
const model = section === 'history' ? self.history : self.queue;
// Anything selected?
if(model.multiEditItems().length < 1) return;
if(!self.confirmDeleteHistory() || confirm(glitterTranslate.removeDown)) {
let strIDs = '';
$.each(model.multiEditItems(), function() {
strIDs = strIDs + this.id + ',';
})
showNotification('.main-notification-box-removing-multiple', 0, model.multiEditItems().length)
callAPI({
mode: section,
name: 'delete',
del_files: 1,
value: strIDs
}).then(function(response) {
if(response.status) {
// Make sure the history doesnt flicker and then fade-out
model.isLoading(true)
self.refresh()
model.multiEditItems.removeAll();
hideNotification()
}
})
}
}
// Update main queue
self.updateQueue = function(response) {
// Block in case off dragging
@@ -759,7 +852,6 @@ function ViewModel() {
// Update basic
self.statusInfo.folders(data.status.folders)
self.statusInfo.loadavg(data.status.loadavg)
self.statusInfo.delayed_decoder(data.status.delayed_decoder)
self.statusInfo.delayed_assembler(data.status.delayed_assembler)
// Update the full set if the data is available

View File

@@ -159,6 +159,8 @@ function QueueListModel(parent) {
value: newValue
})
}
// Update pagination and counters
self.parent.refresh(true)
});
// Do we show search box. So it doesn't dissapear when nothing is found
@@ -253,7 +255,7 @@ function QueueListModel(parent) {
// Reset form and remove all checked ones
$form[0].reset();
self.multiEditItems.removeAll();
$('.delete input[name="multiedit"], #multiedit-checkall').prop({'checked': false, 'indeterminate': false})
$('.queue-table input[name="multiedit"], .queue #multiedit-checkall').prop({'checked': false, 'indeterminate': false})
// Is the multi-edit in view?
if(($form.offset().top + $form.outerHeight(true)) > ($(window).scrollTop()+$(window).height())) {
@@ -264,72 +266,6 @@ function QueueListModel(parent) {
}
}
// Add to the list
self.addMultiEdit = function(item, event) {
// Is it a shift-click?
if(event.shiftKey) {
checkShiftRange('.queue-table input[name="multiedit"]');
}
// Add or remove from the list?
if(event.currentTarget.checked) {
// Add item
self.multiEditItems.push(item);
// Update them all
self.doMultiEditUpdate();
} else {
// Go over them all to know which one to remove
self.multiEditItems.remove(function(inList) { return inList.id == item.id; })
}
// Update check-all buton state
setCheckAllState('#multiedit-checkall', '.queue-table input[name="multiedit"]')
return true;
}
// Check all
self.checkAllJobs = function(item, event) {
// Get which ones we care about
var allChecks = $('.queue-table input[name="multiedit"]').filter(':not(:disabled):visible');
// We need to re-evaltuate the state of this check-all
// Otherwise the 'inderterminate' will be overwritten by the click event!
setCheckAllState('#multiedit-checkall', '.queue-table input[name="multiedit"]')
// Now we can check what happend
// For when some are checked, or all are checked (but not partly)
if(event.target.indeterminate || (event.target.checked && !event.target.indeterminate)) {
var allActive = allChecks.filter(":checked")
// First remove the from the list
if(allActive.length == self.multiEditItems().length) {
// Just remove all
self.multiEditItems.removeAll();
// Remove the check
allActive.prop('checked', false)
} else {
// Remove them seperate
allActive.each(function() {
// Go over them all to know which one to remove
var item = ko.dataFor(this)
self.multiEditItems.remove(function(inList) { return inList.id == item.id; })
// Remove the check of this one
this.checked = false;
})
}
} else {
// None are checked, so check and add them all
allChecks.prop('checked', true)
allChecks.each(function() { self.multiEditItems.push(ko.dataFor(this)) })
event.target.checked = true
// Now we fire the update
self.doMultiEditUpdate()
}
// Set state of all the check-all's
setCheckAllState('#multiedit-checkall', '.queue-table input[name="multiedit"]')
return true;
}
// Do the actual multi-update immediatly
self.doMultiEditUpdate = function() {
// Anything selected?
@@ -400,42 +336,6 @@ function QueueListModel(parent) {
}
// Selete all selected
self.doMultiDelete = function() {
// Anything selected?
if(self.multiEditItems().length < 1) return;
// Need confirm
if(!self.parent.confirmDeleteQueue() || confirm(glitterTranslate.removeDown)) {
// List all the ID's
var strIDs = '';
$.each(self.multiEditItems(), function(index) {
strIDs = strIDs + this.id + ',';
})
// Show notification
showNotification('.main-notification-box-removing-multiple', 0, self.multiEditItems().length)
// Remove
callAPI({
mode: 'queue',
name: 'delete',
del_files: 1,
value: strIDs
}).then(function(response) {
if(response.status) {
// Make sure the queue doesnt flicker and then fade-out
self.isLoading(true)
self.parent.refresh()
// Empty it
self.multiEditItems.removeAll();
// Hide notification
hideNotification()
}
})
}
}
// On change of page we need to check all those that were in the list!
self.queueItems.subscribe(function() {
// We need to wait until the unit is actually finished rendering
@@ -445,7 +345,7 @@ function QueueListModel(parent) {
})
// Update check-all buton state
setCheckAllState('#multiedit-checkall', '.queue-table input[name="multiedit"]')
setCheckAllState('.queue #multiedit-checkall', '.queue-table input[name="multiedit"]')
}, 100)
}, null, "arrayChange")
}

View File

@@ -442,7 +442,7 @@ tbody>tr>td:last-child {
.container-tabbed #queue-tab,
.container-tabbed #queue-tab,
.container-tabbed #queue-messages,
.container-tabbed .history h2,
.container-tabbed .history-header h2,
.container-tabbed .queue h2,
.history-queue-swicher {
display: none;
@@ -494,6 +494,10 @@ tbody>tr>td:last-child {
background-color: #d9534f !important;
}
.history-queue-swicher .badge-info {
background-color: #58A9FA !important;
}
.history-queue-swicher .badge {
margin-left: 4px;
}
@@ -986,8 +990,27 @@ tr.queue-item>td:first-child>a {
position: relative;
}
.history h2 {
.history-header {
clear: left;
width: 100%;
display: flex;
justify-content: space-between;
}
.history-header a {
align-self: center;
margin-right: 2px;
font-size: 12px;
}
.container-tabbed .history-header {
display: inline;
}
.container-tabbed .history-header a {
position: absolute;
right: 0;
top: 10px;
}
.history-table {
@@ -1085,6 +1108,18 @@ tr.queue-item>td:first-child>a {
display: inline-block;
}
#history-options div {
display: inline-block;
margin-left: 5px;
}
#history-options input[name="multieditCheckAll"] {
vertical-align: middle;
position: relative;
top: -1px;
margin-left: 8px;
}
#history-options .hover-button span {
top: 2px;
}

View File

@@ -1,5 +1,5 @@
#
# Copyright 2009 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2009 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

View File

@@ -5,6 +5,9 @@
<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"/>
<!--#if $color_scheme not in ('Light', '') #-->
<link rel="stylesheet" type="text/css" href="../staticcfg/css/${color_scheme}.css?v=$version"/>
<!--#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>

View File

@@ -48,7 +48,7 @@
<div class="form-group">
<div class="col-sm-4"></div>
<div class="col-sm-8">
<a href="#" onclick="\$('#server-hidden-settings').removeClass('hidden');\$(this).parent().parent().hide()">
<a href="#" class="wizard-advanced-settings" onclick="\$('#server-hidden-settings').removeClass('hidden');\$(this).parent().parent().hide()">
<span class="glyphicon glyphicon-cog"></span> $T('button-advanced')
</a>
</div>
@@ -57,7 +57,7 @@
<div class="form-group">
<label for="port" class="col-sm-4 control-label">$T('srv-port')</label>
<div class="col-sm-8">
<input type="number" class="form-control" name="port" id="port" value="<!--#if $port then $port else '119' #-->" />
<input type="number" class="form-control" name="port" id="port" value="<!--#if $port then $port else '563' #-->" />
</div>
</div>
<div class="form-group">

View File

@@ -171,10 +171,10 @@ label {
* {
border-radius: 0 !important;
}
#content a,
#content a:hover,
#content a:active,
#content a:visited,
a,
a:hover,
a:active,
a:visited,
#serverResponse {
color: #555;
}

View File

@@ -32,7 +32,7 @@
</div>
<hr/>
<p>$T('wizard-tip-wiki') <a target="_blank" href="$helpuri">$T('menu-wiki')</a> <span class="glyphicon glyphicon-info-sign"></span></p>
<p>$T('wizard-tip-wiki') <a target="_blank" href="https://sabnzbd.org/wiki/">$T('menu-wiki')</a> <span class="glyphicon glyphicon-info-sign"></span></p>
</div>
<hr />

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!-- Copyright 2022 The SABnzbd-Team <team@sabnzbd.org> -->
<!-- Copyright 2022-2023 The SABnzbd-Team (sabnzbd.org) -->
<component type="desktop-application">
<id>org.sabnzbd.sabnzbd</id>
<metadata_license>MIT</metadata_license>
@@ -29,6 +29,13 @@
<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="4.0.3" date="2023-06-16" type="stable"/>
<release version="4.0.2" date="2023-06-09" type="stable"/>
<release version="4.0.1" date="2023-05-01" type="stable"/>
<release version="4.0.0" date="2023-04-28" type="stable"/>
<release version="3.7.2" date="2023-02-05" type="stable"/>
</releases>
<launchable type="desktop-id">sabnzbd.desktop</launchable>
<provides>
<mediatype>application/x-nzb</mediatype>
@@ -44,7 +51,7 @@
<internet>always</internet>
</recommends>
<project_license>GPL-2.0-or-later</project_license>
<developer_name>The SABnzbd-team</developer_name>
<developer_name>The SABnzbd-Team</developer_name>
<screenshots>
<screenshot type="default">
<image>https://sabnzbd.org/images/landing/screenshots/interface.png</image>

View File

Binary file not shown.

View File

@@ -1,10 +0,0 @@
par2SL version 1.0, Copyright (C) 2003 Peter Brian Clements.
Adapted for use with MacPar deLuxe by Gerard Putter.
This program is compatible with Mac OS X Snow Leopard or later.
It uses Grand Central Dispatch to optimize the speed and processor load.
This is free software, and you are welcome to 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. See COPYING for details.

View File

@@ -1,340 +0,0 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@@ -1,28 +0,0 @@
# Creating `par2` for M1 systems
Compiled on an M1 system using these steps.
If you do not use llvm and `clang++` it will not include multithreading support.
However, I was unable to statically link the `libomp` library inside the `par2` executable.
I extracted it from the llvm libs folder and modified `par2` to look for the `libomp.dylib` in the same folder using `install_name_tool`.
Ref: https://stackoverflow.com/questions/4677044/how-to-use-dylib-in-mac-os-x-c
```shell
brew install automake
brew install llvm
echo 'export PATH="/opt/homebrew/opt/llvm/bin:$PATH"' >> ~/.zshrc
# Restart terminal and clone/download par2cmdline sources
./automake.sh
CPPFLAGS="-I/opt/homebrew/opt/llvm/include" LDFLAGS="-L/opt/homebrew/opt/llvm/lib" CXX="clang++" ./configure
make clean
make
make check
# Do magic to copy and modify the OpenMP library
cp /opt/homebrew/opt/llvm/lib/libomp.dylib .
install_name_tool -change /opt/homebrew/opt/llvm/lib/libomp.dylib @executable_path/libomp.dylib ./par2
```

View File

Binary file not shown.

View File

Binary file not shown.

BIN
osx/par2/arm64/par2-turbo Executable file
View File

Binary file not shown.

View File

Binary file not shown.

BIN
osx/par2/par2-turbo Executable file
View File

Binary file not shown.

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -1,11 +1,10 @@
#
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0RC1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"

View File

@@ -1,12 +1,11 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Czech (https://www.transifex.com/sabnzbd/teams/111101/cs/)\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"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://www.transifex.com/sabnzbd/teams/111101/da/)\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Spanish (https://www.transifex.com/sabnzbd/teams/111101/es/)\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://www.transifex.com/sabnzbd/teams/111101/fi/)\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# ION, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: ION, 2020\n"
"Language-Team: Hebrew (https://www.transifex.com/sabnzbd/teams/111101/he/)\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/sabnzbd/teams/111101/nb/)\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://www.transifex.com/sabnzbd/teams/111101/pl/)\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Russian (https://www.transifex.com/sabnzbd/teams/111101/ru/)\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Serbian (https://www.transifex.com/sabnzbd/teams/111101/sr/)\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Swedish (https://www.transifex.com/sabnzbd/teams/111101/sv/)\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Beta1\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Chinese (China) (https://www.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"

View File

@@ -1,11 +1,10 @@
#
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0RC1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
@@ -35,12 +34,7 @@ msgstr ""
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid "SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgid "SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -58,14 +52,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr ""
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr ""
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr ""
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -139,11 +130,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -280,6 +266,11 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr ""
#. Warning message
#: sabnzbd/cfg.py
msgid "Do not use a folder in the application folder as your Scripts Folder, it might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -416,6 +407,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr ""
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr ""
@@ -565,12 +561,22 @@ msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable with special character filenames. This can cause problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable with special character filenames. This can cause problems."
msgstr ""
#: sabnzbd/interface.py
@@ -598,7 +604,7 @@ msgstr ""
msgid "API Key incorrect, Use the api key from Config->General in your 3rd party program:"
msgstr ""
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr ""
@@ -615,10 +621,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr ""
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr ""
@@ -726,6 +728,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr ""
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr ""
@@ -818,19 +832,6 @@ msgstr ""
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr ""
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr ""
@@ -1408,11 +1409,11 @@ msgid "Running user script %s"
msgstr ""
#: sabnzbd/postproc.py
msgid "Ran %s"
msgid "Script exit code is %s"
msgstr ""
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgid "Ran %s"
msgstr ""
#: sabnzbd/postproc.py, sabnzbd/skintext.py
@@ -1744,32 +1745,32 @@ msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr ""
#. Config->Scheduler
@@ -2049,10 +2050,6 @@ msgstr ""
msgid "Search"
msgstr ""
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr ""
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr ""
@@ -2337,10 +2334,6 @@ msgstr ""
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2415,10 +2408,6 @@ msgstr ""
msgid "When your IP address changes or SABnzbd is restarted the session will expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr ""
@@ -2755,6 +2744,10 @@ msgstr ""
msgid "Location to store finished, fully processed downloads.<br /><i>Can be overruled by user-defined categories.</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2785,7 +2778,7 @@ msgid "Watched Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz archives for .nzb files.</i>"
msgid "Folder to monitor for .nzb files."
msgstr ""
#: sabnzbd/skintext.py
@@ -2856,6 +2849,10 @@ msgstr ""
msgid "Location of log files for SABnzbd.<br /><i>Requires SABnzbd restart!</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ""
@@ -3000,14 +2997,6 @@ msgstr ""
msgid "When the user script returns a non-zero exit code, the job will be flagged as failed."
msgstr ""
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr ""
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr ""
@@ -3243,26 +3232,6 @@ msgstr ""
msgid "When during download it becomes clear that too much data is missing, abort the job"
msgstr ""
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr ""
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3455,6 +3424,10 @@ msgstr ""
msgid "Force Download"
msgstr ""
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
@@ -3809,20 +3782,6 @@ msgstr ""
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr ""
@@ -3831,23 +3790,10 @@ msgstr ""
msgid "Clear"
msgstr ""
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr ""
@@ -3864,26 +3810,6 @@ msgstr ""
msgid "Result"
msgstr ""
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr ""
@@ -3932,10 +3858,6 @@ msgstr ""
msgid "Episode_Name"
msgstr ""
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extension"
msgstr ""
@@ -3977,7 +3899,15 @@ msgid "Sort String"
msgstr ""
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
@@ -3988,25 +3918,12 @@ msgstr ""
msgid "No folders"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
@@ -4038,6 +3955,58 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr ""
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid "<p>Use Sorters to automatically organize your completed downloads. For example, put all episodes from a series in a season-specific folder. Or, put movies in a folder named after the movie.</p><p>Sorters are tried in order of appearance and can be reordered by dragging and dropping.<br/>The first active sorter that matches both the affected category and job type is applied.</p><p>More options are available when Advanced Settings is checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid "Move and rename all episodes in the \"tv\" category to a show-specific folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Move and rename all movies in the \"movies\" category to a movie-specific folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Rarely used options. For their meaning and explanation, click on the Help button to go to the Wiki page.<br>Don't change these without checking the Wiki first, as some have serious side-effects.<br>The default values are between parentheses."
msgstr ""
@@ -4265,6 +4234,10 @@ msgstr ""
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr ""
@@ -4429,7 +4402,7 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message

View File

@@ -1,17 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Pavel C <quoing_transifex@mess.cz>, 2021
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
# Pavel C <quoing_transifex@mess.cz>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Czech (https://www.transifex.com/sabnzbd/teams/111101/cs/)\n"
"Last-Translator: Pavel C <quoing_transifex@mess.cz>, 2023\n"
"Language-Team: Czech (https://app.transifex.com/sabnzbd/teams/111101/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -38,18 +37,12 @@ msgstr "Nezdařilo se spustit webové rozhraní"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Šablona pro web nebyla nalezena: %s, zkouším standardní šablonu"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc vypnut: Nenalezena správná verze! (Nalezena v%s, očekávána v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"Modul SABYenc... nebyl nalezen! Očekávána v%s - https://sabnzbd.org/sabyenc"
"SABCTools vypnut: Nenalezena správná verze! (Nalezena v%s, očekávána v%s)"
#. Error message
#: SABnzbd.py
@@ -66,14 +59,11 @@ msgstr "Nalezen UNRAR verze %s, doporučujeme verzi %s nebo vyšší. <br />"
msgid "unrar binary... NOT found"
msgstr "Program unrar... nenalezen!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "Program 7za... nenalezen!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "Program unizip... nenalezen!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -157,11 +147,6 @@ msgstr "Restartuji protože postprocessor selhal"
msgid "Restarting because of crashed downloader"
msgstr "Restartuji protože selhal downloader"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "Restartuji protože selhal decoder"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -308,6 +293,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Chyba: Fronta nené prázdná, nelze změnit složku."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -451,6 +443,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr ""
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Příliš mnoho spojení k serveru %s [%s]"
@@ -602,14 +599,24 @@ msgstr "Načítání %s selhalo"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -645,7 +652,7 @@ msgstr ""
"Nesprávný API klíč, použijte api klíč z Nastavení->Obecné ve vašem programu "
"třetí strany:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Přihlášené selhalo, zkontrolujte jméno a heslo."
@@ -664,11 +671,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr ""
"Upozornění: LOCALHOST je nejednoznačný, použijte numerickou IP adresu."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Adresa serveru \"%s:%s\" není správná."
@@ -781,6 +783,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python skript \"%s\" nemá nastaveno právo spuštění (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr ""
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Běžící skript"
@@ -874,19 +888,6 @@ msgstr "Nepoužitelný RAR soubor"
msgid "Corrupt RAR file"
msgstr "Porušený RAR soubor"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s souborů v %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Chyba \"%s\" během běhu unzip() na %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "7za nebylo nalezeno, nemohu rozbalit \"%s\""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Zkouším 7zip s heslem \"%s\""
@@ -1481,14 +1482,14 @@ msgstr "Nezdařilo se přesunout soubory"
msgid "Running user script %s"
msgstr "Spouštím uživatelský skript %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Spuštěno %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Navratový kód skriptu je %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Spuštěno %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Více"
@@ -1819,32 +1820,32 @@ msgstr "Odstranit dokončené úkoly"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pozastavit úkoly s nízkou prioritou"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pozastavit úkoly s normální prioritou"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pozastavit úkoly s vysokou prioritou"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Obnovit úkoly s vysokou prioritou"
#. Config->Scheduler
@@ -2124,10 +2125,6 @@ msgstr "Speciální"
msgid "Search"
msgstr "Vyhledávání"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr ""
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr ""
@@ -2414,10 +2411,6 @@ msgstr "DNS server / DNS dotazy"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2504,10 +2497,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Povolit Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Povolit 7zip"
@@ -2879,6 +2868,11 @@ msgid ""
"overruled by user-defined categories.</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2914,9 +2908,7 @@ msgid "Watched Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgid "Folder to monitor for .nzb files."
msgstr ""
#: sabnzbd/skintext.py
@@ -2993,6 +2985,10 @@ msgid ""
"Location of log files for SABnzbd.<br /><i>Requires SABnzbd restart!</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ""
@@ -3154,14 +3150,6 @@ msgid ""
"as failed."
msgstr ""
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr ""
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr ""
@@ -3412,26 +3400,6 @@ msgid ""
"the job"
msgstr ""
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr "Výběr IP adresy serveru"
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr "Náhodně vybraná IP adresa"
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr "Nejrychlejší IP adresa, preferuj IPv6"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr ""
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3635,6 +3603,10 @@ msgstr ""
msgid "Force Download"
msgstr ""
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
@@ -3997,20 +3969,6 @@ msgstr ""
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr ""
@@ -4019,23 +3977,10 @@ msgstr ""
msgid "Clear"
msgstr ""
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr ""
@@ -4052,26 +3997,6 @@ msgstr ""
msgid "Result"
msgstr ""
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr ""
@@ -4120,10 +4045,6 @@ msgstr ""
msgid "Episode_Name"
msgstr ""
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extension"
msgstr ""
@@ -4165,7 +4086,15 @@ msgid "Sort String"
msgstr ""
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
@@ -4176,25 +4105,12 @@ msgstr ""
msgid "No folders"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr ""
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
@@ -4226,6 +4142,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr ""
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4459,6 +4438,10 @@ msgstr ""
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr ""
@@ -4627,8 +4610,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Nezdařilo se přejmenovat: %s na %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Danish (https://www.transifex.com/sabnzbd/teams/111101/da/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Danish (https://app.transifex.com/sabnzbd/teams/111101/da/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,19 +36,13 @@ msgstr "Kunne ikke starte web-interface"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Kan ikke finde webskabeloner: %s, forsøger med standardskabelon"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc deaktiveret: Der blev ikke fundet nogen korrekt version (Fandt v%s, "
"forventede v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc modul... IKKE fundet! Forventede v%s - https://sabnzbd.org/sabyenc"
"SABCTools deaktiveret: Der blev ikke fundet nogen korrekt version (Fandt "
"v%s, forventede v%s)"
#. Error message
#: SABnzbd.py
@@ -66,14 +59,11 @@ msgstr "Din Unrar version er %s, vi anbefaler version %s eller højere.<br />"
msgid "unrar binary... NOT found"
msgstr "unrar binær... IKKE fundet"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za binær... IKKE fundet!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip binær... IKKE fundet!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -157,11 +147,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -308,6 +293,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Fejl: Køen er ikke tom, kan ikke skifte mappe."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -449,6 +441,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Det lykkedes ikke at initialisere %s@%s med begrundelse %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Alt for mange forbindelser til serveren %s [%s]"
@@ -610,14 +607,24 @@ msgstr "Downloadning af %s mislykkedes"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -653,7 +660,7 @@ msgstr ""
"Forkert API-nøgle, anvend api-nøglen fra Konfiguration->Generelt i dit "
"tredjepartsprogram:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Godkendelse mislykkedes, kontrollere brugernavn/adgangskode."
@@ -672,10 +679,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Advarsel: Localhost er tvetydig, bruge numerisk IP-adresse."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradressen \"%s:%s\" er ikke gyldigt."
@@ -786,6 +789,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python script \"%s\" har ikke udfør (+x) tilladelsessæt"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Serie sortering"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Dato sortering"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "Film sortering"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Køre script"
@@ -878,19 +893,6 @@ msgstr "Ubrugelig RAR fil"
msgid "Corrupt RAR file"
msgstr "Ødelagt RAR fil"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s filer i %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Fejl \"%s\" når du køre unzip() på %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Forsøger 7zip med adgangskode \"%s\""
@@ -1512,14 +1514,14 @@ msgstr "Kunne ikke flytte filer"
msgid "Running user script %s"
msgstr "Kør bruger script %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Kørte %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Script exit kode er %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Kørte %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Mere"
@@ -1850,32 +1852,32 @@ msgstr "Fjern fuldførte job"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pause lav prioritets jobs"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pause normal prioritets jobs"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pause høj prioritets jobs"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Genoptag lav prioritets jobs"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Genoptag normal prioritets jobs"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Genoptag høj prioritets jobs"
#. Config->Scheduler
@@ -2155,10 +2157,6 @@ msgstr "Speciel"
msgid "Search"
msgstr "Søg"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Download mappe"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Er du sikker på du vil lukke SABnzbd?"
@@ -2445,10 +2443,6 @@ msgstr "Nameserver/DNS Lookup"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2544,10 +2538,6 @@ msgid ""
msgstr ""
"Når din IP-adresse ændres eller SABnzbd genstarter, udløber sessionen."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Aktivér Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Aktivere 7zip"
@@ -2936,6 +2926,11 @@ msgstr ""
"Sted at opbevare færdige, fuldt forarbejdede downloads.<br /><i>Kan "
"tilsidesættes af bruger-definerede kategorier.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2973,12 +2968,8 @@ msgid "Watched Folder"
msgstr "Overvåget Mappe"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Mappe til at gennemsøge for. Nzb filer.<br /><i>Skanner også for .zip .rar "
"og .tar.gz arkiver efter .nzb filer.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Mappe til at gennemsøge for .nzb filer."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3059,6 +3050,10 @@ msgid ""
msgstr ""
"Placering af logfiler for SABnzbd.<br /><i>Kræver genstart af SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ".nzb Backup mappe"
@@ -3231,14 +3226,6 @@ msgstr ""
"Når bruger scriptet returnerer et non-zero exit code, vil jobbet blive "
"markeret som mislykkedes."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Ved fejl, prøv alternativ NZB"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Nogle servere levere en alternativ NZB når et download mislykkes."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Aktiver mappe omdøbning"
@@ -3502,26 +3489,6 @@ msgstr ""
"Når under download det bliver klart, at for meget data mangler, afbryd "
"jobbet"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Nyttigt, hvis en newsserver har mere end én IPv4/IPv6-adresse"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3730,6 +3697,10 @@ 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"
@@ -4098,20 +4069,6 @@ msgstr "Mappe/Søgesti"
msgid "Indexer Categories / Groups"
msgstr "Indekseringen kategorier/grupper"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Serie sortering"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Aktivere TV sortering"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Hjælp til Sorteringsstræng"
@@ -4120,23 +4077,10 @@ msgstr "Hjælp til Sorteringsstræng"
msgid "Clear"
msgstr "Ryd"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "Anvend filtre"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Forudindstillinger"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "Film sortering"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Aktivere filmsortering"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Påvirkede Kategorier"
@@ -4153,26 +4097,6 @@ msgstr "Mønster"
msgid "Result"
msgstr "Resultat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Sæsonmappe"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Sæsonmappe"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Episodemappe"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Episodemappe"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Job Navn som Filnavn"
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Titel"
@@ -4221,10 +4145,6 @@ msgstr "Episode.Navn"
msgid "Episode_Name"
msgstr "Episode_Navn"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Filtype"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Endelse"
@@ -4266,8 +4186,16 @@ msgid "Sort String"
msgstr "Sorteringsstreng"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Multi-del etikette"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4277,26 +4205,13 @@ msgstr "I mappe"
msgid "No folders"
msgstr "Ingen mappe"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Dato sortering"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Job Navn som Filnavn"
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Aktivere datosortering"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Vis Navn på mappe"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "År-Måned mapper"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Daglige mapper"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4327,6 +4242,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Alle"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4566,6 +4544,10 @@ msgstr "Bekræft Historik-fjernelse"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Hvor længe eller indtil hvornår du vil standse? (på engelsk!)"
@@ -4740,8 +4722,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Det lykkedes ikke at omdøbe: %s til %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,6 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# C E <githubce@eiselt.ch>, 2020
@@ -11,14 +10,15 @@
# Simon W., 2021
# Nils Briggen, 2022
# reloxx13 <reloxx@interia.pl>, 2022
# Safihre <safihre@sabnzbd.org>, 2022
# kameb, 2023
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: German (https://app.transifex.com/sabnzbd/teams/111101/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -47,19 +47,13 @@ msgstr ""
"Konnte Web-Vorlage nicht finden: %s Versuche die Standard-Vorlage zu "
"verwenden."
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc deaktiviert: Keine korrekte Version gefunden! (Gefunden v%s, "
"Erwartet v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc Modul... Nicht gefunden! Erwarte v%s - https://sabnzbd.org/sabyenc"
"SABCTools deaktiviert: Keine korrekte Version gefunden! (Gefunden v%s, "
"Erwartet v%s)"
#. Error message
#: SABnzbd.py
@@ -77,14 +71,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "unrar-Programmdatei nicht gefunden!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za-Programmdatei nicht gefunden"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip-Programmdatei nicht gefunden!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -172,11 +163,6 @@ msgstr "Neustart aufgrund eines abgestürzten Nachbearbeitungsprozesses"
msgid "Restarting because of crashed downloader"
msgstr "Neustart aufgrund eines abgestürzten Downloaders"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "Neustart aufgrund eines abgestürzten Decoders"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -330,6 +316,13 @@ msgstr ""
"Fehler: Ordner kann nicht geändert werden, da die Warteschlange nicht leer "
"ist."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -478,6 +471,11 @@ msgstr "Es gibt keine aktiven Server!"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Fehler %s@%s zu initialisieren, aus folgendem Grund: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Zu viele Verbindungen zu Server %s [%s]"
@@ -487,6 +485,8 @@ msgid ""
"Login from too many different IP addresses to server %s [%s] - "
"https://sabnzbd.org/multiple-adresses"
msgstr ""
"Von zu vielen unteschiedlichen IP Adressen beim Server eingeloggt %s[%s] "
"https://sabnzbd.org/multiple-adresses"
#: sabnzbd/downloader.py
msgid "Failed login for server %s [%s]"
@@ -639,6 +639,21 @@ msgstr "Fehler beim Speichern von %s"
msgid "Loading %s failed"
msgstr "Fehler beim Laden von %s"
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s ist nicht beschreibbar. Downloads sind dadurch blockiert."
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
@@ -648,11 +663,6 @@ msgstr ""
"Dateinamen mit Umlaute können nicht in %s gespeichert werden. Dies kann zu "
"Problemen führen."
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s ist nicht beschreibbar. Downloads sind dadurch blockiert."
#: sabnzbd/interface.py
msgid "Refused connection from:"
msgstr "Abgelehnte Verbindung von:"
@@ -686,7 +696,7 @@ msgstr ""
"API-Schlüssel ungültig. Bitte API-Schlüssel aus Einstellungen->Allgemein in "
"die externe Anwendung eingeben:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr ""
"Authentifizierung fehlgeschlagen. Überprüfen Sie Benutzername und Passwort."
@@ -708,11 +718,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr "Invalides Backup Archiv"
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr ""
"Warnung: localhost ist mehrdeutig. Verwenden Sie eine numerische IP-Adresse."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Server-Adresse \"%s:%s\" ist ungültig."
@@ -828,6 +833,18 @@ msgstr "[%s] Der Befehl in build_command ist nicht definiert."
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Dem Pythonskript \"%s\" fehlen die Ausführungsrechte (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Sortieren von TV-Serien"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Sortieren nach Datum"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "Film Sortierung"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Ausführen des Skripts"
@@ -922,19 +939,6 @@ msgstr "RAR-Datei beschädigt"
msgid "Corrupt RAR file"
msgstr "Defekte RAR Datei"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s Dateien in %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Fehler \"%s\" beim Ausführen von unzip auf %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "Keine 7za Binary gefunden, entpacken von \"%s\" nicht möglich"
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Versuche 7zip mit Passwort \"%s\""
@@ -1576,14 +1580,14 @@ msgstr "Dateien verschieben fehlgeschlagen"
msgid "Running user script %s"
msgstr "Ausführen des Benutzer-Skripts %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s ausgeführt"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Exit-Code des Skripts ist %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s ausgeführt"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Mehr"
@@ -1914,32 +1918,32 @@ msgstr "Abgeschlossene Aufträge entfernen"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Aufträge mit niedriger Priorität pausieren"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Aufträge mit normaler Priorität pausieren"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Aufträge mit hoher Priorität pausieren"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Aufträge mit niedriger Priorität fortsetzen"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Aufträge mit normaler Priorität fortsetzen"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Aufträge mit hoher Priorität fortsetzen"
#. Config->Scheduler
@@ -2219,10 +2223,6 @@ msgstr "Spezial"
msgid "Search"
msgstr "Suchen"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Downloads"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Möchten Sie SABnzbd wirklich beenden?"
@@ -2512,10 +2512,6 @@ msgstr "DNS-Server"
msgid "Download speed limited by"
msgstr "Downloadgeschwindigkeit begrenzt durch"
#: sabnzbd/skintext.py
msgid "CPU"
msgstr "CPU"
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr "Festplattengeschwindigkeit"
@@ -2617,10 +2613,6 @@ msgstr ""
"Falls sich deine IP Adresse ändert oder SABnzbd neu startet, wird deine "
"Session ungültig"
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "unzip aktivieren"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "7zip aktivieren"
@@ -3036,6 +3028,11 @@ msgstr ""
"Hier werden fertige, verarbeitete Downloads abgelegt.<br /><i>Kann von "
"benutzerdefinierten Kategorien ausser Kraft gesetzt werden.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr "Benutze Sortieren um deine Dateien zu orgenisieren und umzubennenen"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Minimaler freier Speicherplatz des abgeschlossene Downloads-Ordners"
@@ -3079,12 +3076,8 @@ msgid "Watched Folder"
msgstr "Überwachter Ordner"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Ordner, der auf neue NZB-Dateien überwacht werden soll.<br /><i>Erkennt auch"
" ZIP-, RAR- und TAR.GZ-Archive mit NZB-Dateien.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Ordner, der auf neue .nzb Dateien überwacht werden soll."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3126,7 +3119,7 @@ msgstr "System-Ordner"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
msgstr "Versteckte Ordner"
#: sabnzbd/skintext.py
msgid "Administrative Folder"
@@ -3172,6 +3165,10 @@ msgstr ""
"Hier werden Protokoll-Dateien von SABnzbd abgelegt.<br /><i>Benötigt einen "
"Neustart von SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "NZB-Backup-Ordner"
@@ -3353,16 +3350,6 @@ msgstr ""
"Wenn das Benutzerskript einen Exit-Code ausgibt, der nicht \"0\" ist, wird "
"der Auftrag als fehlgeschlagen markiert."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Nach einem Fehler ein alternatives NZB laden"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Manche Server stellen ein alternatives NZB zur Verfügung, falls ein Download"
" fehlschlägt."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Ordner-Umbenennung aktivieren"
@@ -3646,26 +3633,6 @@ msgstr ""
"Job abbrechen falls während des Downloads klar wird, dass zuviele Daten "
"fehlen"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr "Auswahl der Server-IP-Adresse"
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr "Erste IP-Adresse"
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr "Zufällig ausgewählte IP-Adresse"
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr "Schnellste IP-Adresse, IPv6 bevorzugt"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Nützlich, wenn ein Newsserver mehr als eine IPv4/IPv6-Adresse hat"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3880,6 +3847,10 @@ 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"
@@ -4255,20 +4226,6 @@ msgstr "Ordner/Pfad"
msgid "Indexer Categories / Groups"
msgstr "Indexer Kategorien/Gruppen"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr "Wähle mindestens 1 Kategorie"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Sortieren von TV-Serien"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "TV-Sortierung aktivieren"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Muster-Schlüssel"
@@ -4277,23 +4234,10 @@ msgstr "Muster-Schlüssel"
msgid "Clear"
msgstr "Löschen"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "Filter übernehmen"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Voreinstellungen"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "Film Sortierung"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Film-Sortierung aktivieren"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Betroffene Kategorien"
@@ -4310,26 +4254,6 @@ msgstr "Muster"
msgid "Result"
msgstr "Resultat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Staffel-Ordner"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Staffel-Ordner"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Episoden-Ordner"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Episoden-Ordner"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Aufgabe Name als Ordnername"
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Titel"
@@ -4378,10 +4302,6 @@ msgstr "Episoden.Name"
msgid "Episode_Name"
msgstr "Episoden_Name"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Dateiendung"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Endung"
@@ -4423,8 +4343,16 @@ msgid "Sort String"
msgstr "Sortieranweisung"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Markierung für mehrere Teile"
msgid "Multi-part Label"
msgstr "Multi-part Kennzeichnung"
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr "Zeige Ordner"
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr "Staffelordner"
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4434,26 +4362,13 @@ msgstr "In Ordnern"
msgid "No folders"
msgstr "Keine Ordner"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Sortieren nach Datum"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Aufgabe Name als Ordnername"
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Sortieren nach Datum aktivieren"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Ordner mit Name der Sendung"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Jahr-Monat-Ordner"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Tägliche Ordner"
msgid "Series"
msgstr "Serien"
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4484,6 +4399,81 @@ msgstr "GuessIt.Eigenschaft"
msgid "GuessIt_Property"
msgstr "GuessIt_Eigenschaft"
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr "Minimale Dateigröße"
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr "Betroffener Aufgabentyp"
#: sabnzbd/skintext.py
msgid "All"
msgstr "Alle"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr "Serien mit Ausstrahlungsdatum"
#: sabnzbd/skintext.py
msgid "Movies"
msgstr "Filme"
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr "Andere / Unbekannte"
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
"<p>Benutze die Sortierer, um deine fertigen Downloads zu orgenisieren. Zum "
"Beispiel verschiebe alle Seriendateien in den Serien eigenen Ordner oder "
"Verschiege alle Filme in den Filme eigenen Ordner.</p><p>Die Sortierer "
"werden der Reihe nach bearbeitet und könne durch ziehen und ablegen "
"umsortiert werden.<br/>Der erste Aktive Sortierer der sowohl zur Kategorie "
"als auch zum Aufgabentyp passt wird angewendet.</p><p>Wenn erweiterte "
"Einstellungen aktiviert sind, sind noch mehr Einstellungen möglich.<br/> "
"Weitere informationen sind in der WIki zu finden.</p>"
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr "Sortierer hinzufügen"
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr "Sortierer entfernen"
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr "Testdaten"
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr "Schnellstart"
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
"Bennene alle Episodendateien in der Kategorie \"tv\" um und veschiebe sie in"
" den Serien eigenen Ordner"
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
"Bennene alle Filmdateien in der Kategorie \"filme\" um und veschiebe sie in "
"den Filme eigenen Ordner"
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4723,6 +4713,10 @@ msgstr "Löschen von Verlaufeinträgen bestätigen"
msgid "Keyboard shortcuts"
msgstr "Tastaturkürzel"
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Wie lange oder bis wann möchtest du pausieren? (in Englisch!)"
@@ -4899,8 +4893,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Umbenennen von %s nach %s fehlgeschlagen."
msgid "Failed to rename %s to %s"
msgstr "Fehler beim umbennenen von %s nach %s"
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,6 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Ester Molla Aragones <moarages@gmail.com>, 2020
@@ -9,10 +8,10 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Spanish (https://www.transifex.com/sabnzbd/teams/111101/es/)\n"
"Language-Team: Spanish (https://app.transifex.com/sabnzbd/teams/111101/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -41,20 +40,13 @@ msgstr ""
"No se puede encontrar la plantilla web: %s, intentando con la plantilla "
"estandar"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc deshabilitado: ¡no se ha encontrado la versión correcta! (Se ha "
"encontrado la v%s, se esperaba la v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"Módulo SABYenc... ¡NO encontrado! Se esperaba la v%s - "
"https://sabnzbd.org/sabyenc"
"SABCTools deshabilitado: ¡no se ha encontrado la versión correcta! (Se ha "
"encontrado la v%s, se esperaba la v%s)"
#. Error message
#: SABnzbd.py
@@ -71,14 +63,11 @@ msgstr "Su versión UnRAR es %s, recomendamos la versión %s o superior. <br />"
msgid "unrar binary... NOT found"
msgstr "unrar binario... NO encontrado"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "No se encontró el binario de 7za"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip binario... NO encontrado!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -167,11 +156,6 @@ msgstr "Reiniciando a causa de un posprocesador colgado"
msgid "Restarting because of crashed downloader"
msgstr "Reiniciando debido al cuelgue del descargador"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "Reiniciando a causa de un decodificador colgado"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -324,6 +308,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Error: Cola no esta vacía, no se puede cambiar el directorio"
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -471,6 +462,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Error al inicializar %s@%s con la razón: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Demasiadas conexiones con el servidor %s [%s]"
@@ -633,14 +629,24 @@ msgstr "Cargar de %s no se pudo completar."
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -676,7 +682,7 @@ msgstr ""
"Clave de API erróneo, favor ingresar la clave correcta desde Config->General"
" en tu aplicacion externa:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Autenticación fallida, compruebe el usuario o la contraseña."
@@ -695,10 +701,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Alerta: LOCALHOST es ambiguo, use dirección de IP numérica"
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "La dirección del servidor «%s:%s» no es válida."
@@ -816,6 +818,18 @@ msgstr ""
"La secuencia de comandos Python \"%s\" no tiene configurado el permiso de "
"ejecutar (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Ordenación de Series"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Ordenar por fecha"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "Clasificación de películas"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Ejecutando script"
@@ -912,19 +926,6 @@ msgstr "Archivo RAR inutilizable"
msgid "Corrupt RAR file"
msgstr "Fichero RAR corrupto"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s archivos en %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Error \"%s\" al ejecutar unzip() sobre %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "No se ha encontrado el binario 7za, no se puede descomprimir \"%s\""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Tratando 7zip con la contraseña \"%s\""
@@ -1567,14 +1568,14 @@ msgstr "Error al mover ficheros"
msgid "Running user script %s"
msgstr "Ejecutando script de usuario %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Se ejecutó %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "El código de retorno del Script es %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Se ejecutó %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Más"
@@ -1907,32 +1908,32 @@ msgstr "Eliminar trabajos completados"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pausar trabajos de prioridad baja"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pausar trabajos de prioridad normal"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pausar trabajos de prioridad alta"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Reanudar trabajos de prioridad baja"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Reanudar trabajos de prioridad normal"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Reanudar trabajos de prioridad alta"
#. Config->Scheduler
@@ -2212,10 +2213,6 @@ msgstr "Especial"
msgid "Search"
msgstr "Buscar"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Dir de Descarga"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "¿Seguro que deseas detener SABnzbd?"
@@ -2505,10 +2502,6 @@ msgstr "Nombre del servidor / Búsqueda de DNS"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2605,10 +2598,6 @@ msgid ""
"expire."
msgstr "Cuando tu dirección IP cambie o reinicies SABnzbd, la sesión caduca."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Habilitar Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Habilitar 7zip"
@@ -3016,6 +3005,11 @@ msgstr ""
"Ubicación donde guardar descargas finalizadas, totalmente procesaddas.<br "
"/><i>Puede ser obviado debido a categorías definidas por el usuario.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -3053,12 +3047,8 @@ msgid "Watched Folder"
msgstr "Directorio a vigilar"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Directorio a monitorizar en busca de ficheros .nzb.<br /><i>También escanea "
"ficheros .zip .rar y .tar.gz en busca de ficheros .nzb.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Directorio a monitorizar en busca de ficheros .nzb."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3141,6 +3131,10 @@ msgstr ""
"Ubicación de los ficheros de log para SABnzbd.<br /><i>Requiere reiniciar "
"SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Directorio de Backups de .nzbs"
@@ -3316,15 +3310,6 @@ msgstr ""
"Cuando la secuencia de comandos de usuario devuelve un código de salida "
"distinto de cero, el trabajo se marca como fallido ."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "En caso de fallo, intentar con un NZB alternativo"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Algunos servidores ofrecen una NZB alternativa cuando falla una descarga ."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Habilitar renombrado de directorios"
@@ -3599,27 +3584,6 @@ msgstr ""
"Cuando este bajando, si es claro que mucha data esta faltando, aborte el "
"trabajo."
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr "Selección de la dirección IP del servidor"
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr "Primera dirección IP"
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr "Dirección IP seleccionada aleatoriamente"
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr "Dirección IP más rápida, con preferencia IPv6"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr ""
"Útil si un servidor de noticias tiene más de una dirección IPv4 / IPv6"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3832,6 +3796,10 @@ 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"
@@ -4204,20 +4172,6 @@ msgstr "Directorio/Ruta"
msgid "Indexer Categories / Groups"
msgstr "Categorías Indexer / Grupos"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Ordenación de Series"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Habilitar la ordenación de Series de TV"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Patrón"
@@ -4226,23 +4180,10 @@ msgstr "Patrón"
msgid "Clear"
msgstr "Limpiar"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "Aplicar filtros"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Preajustes"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "Clasificación de películas"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Habilitar Ordenado de Películas"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Categorías Afectadas"
@@ -4259,26 +4200,6 @@ msgstr "Patrón"
msgid "Result"
msgstr "Resultado"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Temporada Directorio"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Temporada Directorio"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Episodio Directorio"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Episodio Directorio"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Nombre de la tarea para el nombre de archivo"
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Título"
@@ -4327,10 +4248,6 @@ msgstr "Nombre.capítulo"
msgid "Episode_Name"
msgstr "Nombre_capítulo"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Extensión de archivo"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Extensión"
@@ -4372,8 +4289,16 @@ msgid "Sort String"
msgstr "Ordenar cadena"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Etiqueta"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4383,26 +4308,13 @@ msgstr "En directorios"
msgid "No folders"
msgstr "Sin Directorios"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Ordenar por fecha"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Nombre de la tarea para el nombre de archivo"
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Habilitar ordenar por fecha"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Carpeta de la serie"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Directorios Año-Mes"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Directorios diarios"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4433,6 +4345,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Todos"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4674,6 +4649,10 @@ msgstr "Confirmar eliminación del historial"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "¿Durante cuánto tiempo quieres dejarlo pausado?"
@@ -4851,8 +4830,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Error al renombrar: %s a %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Finnish (https://www.transifex.com/sabnzbd/teams/111101/fi/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Finnish (https://app.transifex.com/sabnzbd/teams/111101/fi/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,15 +36,10 @@ msgstr "Web-käyttöliittymän käynnistys epäonnistui"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Web-mallia %s ei löydy, yritetään käyttää oletusmallia"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -65,14 +59,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "unrar-ohjelmaa... EI löydy!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za-ohjelmaa... EI löydy!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip-ohjelmaa... EI löydy!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -158,11 +149,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -305,6 +291,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Virhe: Jono ei ole tyhjä, kansiota ei voida vaihtaa."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -445,6 +438,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Alustaminen epäonnistui kohteessa %s@%s syy: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Liikaa yhteyksiä palvelimelle %s [%s]"
@@ -606,14 +604,24 @@ msgstr "Kohteen %s lataaminen epäonnistui"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -649,7 +657,7 @@ msgstr ""
"API avain virheellinen, käytä Asetukset->Yleiset löytyvää api avainta "
"käyttämääsi kolmannen osapuolen ohjelmaan:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Varmennus epäonnistui, tarkista käyttäjänimi/salasana."
@@ -668,10 +676,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Varoitus: LOCALHOST on hämärä, käytä numeerista IP-osoitetta."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Palvelimen osoite \"%s:%s\" ei ole kelvollinen."
@@ -782,6 +786,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Sarjojen lajittelu"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Päivämäärän lajittelu"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Ajetaan skripti"
@@ -874,19 +890,6 @@ msgstr "Käyttökelvoton RAR arkisto"
msgid "Corrupt RAR file"
msgstr "Korruptoitunut RAR arkisto"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s tiedostoa kohteessa %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Virhe \"%s\" ajettaessa unzip() kohteelle %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Yritetään purkaa 7zip arkistoa salasanalla \"%s\""
@@ -1505,14 +1508,14 @@ msgstr "Tiedostojen siirto epäonnistui"
msgid "Running user script %s"
msgstr "Ajetaan käyttäjän skripti %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Ajettiin %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Skriptin lopetuskoodi on %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Ajettiin %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Lisää"
@@ -1843,32 +1846,32 @@ msgstr "Poista valmistuneet lataukset"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Keskeytä alhaisen prioriteetin lataukset"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Keskeytä normaalin prioriteetin lataukset"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Keskeytä korkean prioriteetin lataukset"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Jatka alhaisen prioriteetin lataukset"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Jatka normaalin prioriteetin lataukset"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Jatka korkean prioriteetin lataukset"
#. Config->Scheduler
@@ -2148,10 +2151,6 @@ msgstr "Erikoisasetukset"
msgid "Search"
msgstr "Etsi"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Lataukset-kansio"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Oletko varma, että haluat sammuttaa SABnzbdn?"
@@ -2438,10 +2437,6 @@ msgstr "Nimipalvelin / DNS-selvitys"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2539,10 +2534,6 @@ msgid ""
msgstr ""
"Istunto vanhenee kun IP-osoite vaihtuu tai SABnzbd käynnistetään uudelleen."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Unzip käytössä"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "7zip käytössä"
@@ -2938,6 +2929,11 @@ msgstr ""
"Sijainti jonne tallennetaan valmistuneet ja täysin käsitellyt ladatut "
"kohteet.<br /><i>Käyttäjän asettamat kategoriat voivat kumota tämän.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2975,12 +2971,8 @@ msgid "Watched Folder"
msgstr "Vahdittu kansio"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Kansio jota vahditaan .nzb tiedostojen varalta.<br /><i>Etsii .nzb "
"tiedostoja myös .zip .rar ja .tar.gz arkistojen sisältä.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Kansio jota vahditaan .nzb tiedostojen varalta."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3064,6 +3056,10 @@ msgstr ""
"Sijainti jonne SABnzbd ohjelman lokitiedostot tallennetaan.<br /><i>Vaatii "
"SABnzbd uudelleenkäynnistyksen!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ".nzb varmuuskopiokansio"
@@ -3231,15 +3227,6 @@ msgstr ""
"Kun käyttäjän skripti palauttaa nollasta poikkeavan koodin, lataus merkitään"
" epäonnistuneeksi."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Epäonnistuessa, kokeile vaihtoehtoista NZB:tä"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Jotkin palvelimet tarjoavat vaihtoehtoisen NZB:n kun lataus epäonnistuu."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Kansion uudelleennimeäminen käytössä"
@@ -3503,27 +3490,6 @@ msgid ""
msgstr ""
"Peruutetaan lataus, jos ladattaessa huomataan liikaa tiedostoja puuttuvan"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr ""
"Hyödyllinen jos uutispalvelimella on enemmän kuin yksi IPv4/IPv6 osoite"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3731,6 +3697,10 @@ 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"
@@ -4099,20 +4069,6 @@ msgstr "Kansio/Polku"
msgid "Indexer Categories / Groups"
msgstr "Indeksoijan kategoriat / ryhmä"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Sarjojen lajittelu"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "TV lajittelu käytössä"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Mallin avain"
@@ -4121,23 +4077,10 @@ msgstr "Mallin avain"
msgid "Clear"
msgstr "Tyhjennä"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Esiasetukset"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Elokuvien lajittelu käytössä"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Kategoriat joita koskee"
@@ -4154,26 +4097,6 @@ msgstr "Malli"
msgid "Result"
msgstr "Tulos"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Tuotantokausi kansio"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Tuotantokausi kansio"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Jakso kansio"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Jakso kansio"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Nimi"
@@ -4222,10 +4145,6 @@ msgstr "Jakson.nimi"
msgid "Episode_Name"
msgstr "Jakson_nimi"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Tiedostotunniste"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Tunniste"
@@ -4267,8 +4186,16 @@ msgid "Sort String"
msgstr "Lajittelumerkkijono"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Moniosainen selite"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4278,26 +4205,13 @@ msgstr "Kansioissa"
msgid "No folders"
msgstr "Ei kansioita"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Päivämäärän lajittelu"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Päivämäärän lajittelu käytössä"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Ohjelman nimi kansio"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Vuosittaiset-Kuukausittaiset kansiot"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Päivittäiset kansiot"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4328,6 +4242,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Kaikki"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4570,6 +4547,10 @@ msgstr "Varmista historian poistot"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Kuinka pitkään tai mihin asti haluat keskeyttää? (englanniksi!)"
@@ -4745,8 +4726,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Virhe uudelleennimettäessä: %s %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,17 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Fred L <88com88@gmail.com>, 2022
# Fred L <88com88@gmail.com>, 2023
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2022\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: French (https://app.transifex.com/sabnzbd/teams/111101/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -40,19 +39,13 @@ msgstr ""
"Impossible de trouver le template de l'interface web : %s, nouvelle "
"tentative avec le template standard"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc désactivé: aucune version correcte n'a été trouvée ! (v%s trouvée, "
"v%s attendue)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"Module SABYenc... NON trouvé ! v%s attendue - https://sabnzbd.org/sabyenc"
"SABCTools désactivé: aucune version correcte n'a été trouvée ! (v%s trouvée,"
" v%s attendue)"
#. Error message
#: SABnzbd.py
@@ -71,14 +64,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "binaire unrar... Introuvable!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "Binaire 7za ... Introuvable!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "binaire unzip... Introuvable!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -168,11 +158,6 @@ msgstr "Redémarrage suite au plantage du postprocesseur"
msgid "Restarting because of crashed downloader"
msgstr "Redémarrage suite au plantage du téléchargeur"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "Redémarrage suite au plantage du décodeur"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -328,6 +313,15 @@ msgid "Error: Queue not empty, cannot change folder."
msgstr ""
"Erreur : La file d'attente n'est pas vide, impossible de changer le dossier."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
"N'utilisez pas un dossier à l'intérieur du dossier de l'application pour y "
"stocker les scripts, il pourrait être vidé lors des mises à jour."
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -474,6 +468,11 @@ msgstr "Il n'y a aucun serveur actif !"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Échec d'initialisation de %s@%s pour la raison suivante : %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr "Erreur fatale dans le Téléchargeur"
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Trop de connexions au serveur %s [%s]"
@@ -637,6 +636,25 @@ msgstr "L'enregistrement de %s a échoué"
msgid "Loading %s failed"
msgstr "Echec du chargement de %s"
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s n'est pas du tout inscriptible. Les téléchargements sont bloqués."
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
"Impossible d'écrire un nom de fichier long dans %s. Cela peut causer des "
"problèmes."
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
"Impossible d'écrire un nom de fichier unicode dans %s. Cela peut causer des "
"problèmes."
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
@@ -646,11 +664,6 @@ msgstr ""
"Le fichier %s n'est pas inscriptible à cause des caractères spéciaux dans le"
" nom. Cela peut causer des problèmes."
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s n'est pas du tout inscriptible. Les téléchargements sont bloqués."
#: sabnzbd/interface.py
msgid "Refused connection from:"
msgstr "Connexion refusée de:"
@@ -684,7 +697,7 @@ msgstr ""
"Clé API incorrecte, utilisez la clé API de la configuration générale dans "
"votre application tierce :"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Echec d'authentification, vérifiez les identifiant/mot de passe."
@@ -705,11 +718,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr "Archives de sauvegarde non valides"
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr ""
"Avertissement: LOCALHOST est ambigü, utilisez une adresse IP numérique."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "L' adresse du serveur \"%s:%s\" n'est pas valide."
@@ -827,6 +835,18 @@ msgstr ""
"Le script Python \"%s\" n'est pas configuré avec les permissions dexécution"
" (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Tri des séries"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Tri par date"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "Tri des films"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Exécution du script"
@@ -922,19 +942,6 @@ msgstr "Fichier RAR inutilisable"
msgid "Corrupt RAR file"
msgstr "Fichier RAR corrompu"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s fichiers dans %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Erreur \"%s\" lors de l'exécution de unzip() sur %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "Aucun binaire 7za trouvé, impossible de décompresser \"%s\""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Tentative 7zip avec le mot de passe \"%s\""
@@ -1570,14 +1577,14 @@ msgstr "Impossible de déplacer les fichiers"
msgid "Running user script %s"
msgstr "Exécution du script utilisateur %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s exécuté"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Le code script de sortie est %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s exécuté"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Plus"
@@ -1909,32 +1916,32 @@ msgstr "Effacer les tâches terminées"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Mettre en pause les tâches de priorité faible"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Mettre en pause les tâches de priorité normale"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Mettre en pause les tâches de priorité haute"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Reprendre les tâches de priorité faible"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Reprendre les tâches de priorité normale"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Reprendre les tâches de priorité haute"
#. Config->Scheduler
@@ -2214,10 +2221,6 @@ msgstr "Spécial"
msgid "Search"
msgstr "Rechercher"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Dossier de téléchargement"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Etes-vous sûr de vouloir arrêter SABnzbd ?"
@@ -2507,10 +2510,6 @@ msgstr "Nameserver / DNS Lookup"
msgid "Download speed limited by"
msgstr "Vitesse de téléchargement limitée par"
#: sabnzbd/skintext.py
msgid "CPU"
msgstr "processeur"
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr "Vitesse du disque"
@@ -2612,10 +2611,6 @@ msgstr ""
"La session expirera quand votre adresse IP changera ou quand SABnzbd sera "
"redémarré."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Activer Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Activer 7zip"
@@ -3031,6 +3026,13 @@ msgstr ""
"Emplacement des téléchargements terminés et post-traités.<br /><i>Peut être "
"outrepassé par les catégories définies par l'utilisateur.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
"Utilisez le tri pour organiser et renommer automatiquement vos "
"téléchargements terminés."
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Espace libre minimum pour le dossier des téléchargements terminés"
@@ -3073,12 +3075,8 @@ msgid "Watched Folder"
msgstr "Dossier à surveiller"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Dossier d'import automatique des fichiers .nzb.<br /><i>Prends en compte "
"également les nzb contenus dans les fichiers .zip, .rar et .tar.gz.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Dossier d'import automatique des fichiers .nzb."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3122,7 +3120,7 @@ msgstr "Dossiers système"
#: sabnzbd/skintext.py
msgid "Hidden Folders"
msgstr ""
msgstr "Dossiers cachés"
#: sabnzbd/skintext.py
msgid "Administrative Folder"
@@ -3167,6 +3165,10 @@ msgstr ""
"Emplacement des fichiers journaux de SABnzbd.<br /><i>Redémarrage requis "
"!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr "Purger les logs"
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Dossier de sauvegarde des fichiers .nzb"
@@ -3347,16 +3349,6 @@ msgstr ""
"Lorsque le script de l'utilisateur renvoie un code de sortie \"non-zéro\", "
"la tâche sera signalée comme échouée."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "En cas d'échec, essayer avec un NZB alternatif"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Certains serveurs proposent un NZB alternatif lorsqu'un téléchargement "
"échoue."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Activer le renommage du dossier"
@@ -3638,26 +3630,6 @@ msgstr ""
"S'il apparait clairement pendant le téléchargement qu'il manque trop de "
"données, annuler la tâche"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr "Sélection de l'adresse IP du serveur"
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr "Première adresse IP"
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr "Adresse IP sélectionnée au hasard"
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr "Adresse IP la plus rapide, IPv6 de préférence"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Utile si un serveur de news a plus d'une adresse IPv4/IPv6"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3875,6 +3847,10 @@ 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"
@@ -4250,20 +4226,6 @@ msgstr "Dossier/Chemin"
msgid "Indexer Categories / Groups"
msgstr "Catégories de l'indexeur / Groupes"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr "Sélectionnez au moins une catégorie."
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Tri des séries"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Activer le tri TV"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Modèle de clé"
@@ -4272,23 +4234,10 @@ msgstr "Modèle de clé"
msgid "Clear"
msgstr "Effacer"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "Appliquer les filtres"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Modèles prédéfinis"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "Tri des films"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Activer le tri des films"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Catégories affectées"
@@ -4305,26 +4254,6 @@ msgstr "Modèle"
msgid "Result"
msgstr "Résultat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Dossier Saison"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Dossier Saison"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Dossier Épisode"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Dossier Épisode"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Nom de la tâche en tant que nom de fichier"
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Titre"
@@ -4373,10 +4302,6 @@ msgstr "Nom.Épisode"
msgid "Episode_Name"
msgstr "Nom_Épisode"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Extension du fichier"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Extension"
@@ -4418,9 +4343,17 @@ msgid "Sort String"
msgstr "Chaîne de caractères de tri"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgid "Multi-part Label"
msgstr "Étiquette multi-bloc"
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr "Afficher le dossier"
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr "Dossier de la saison"
#: sabnzbd/skintext.py
msgid "In folders"
msgstr "Dans les dossiers"
@@ -4429,26 +4362,13 @@ msgstr "Dans les dossiers"
msgid "No folders"
msgstr "Pas de dossiers"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Tri par date"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Nom de la tâche en tant que nom de fichier"
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Activer le tri par date"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Dossier du nom de série"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Dossiers Année-Mois"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Dossiers Quotidiens"
msgid "Series"
msgstr "Séries"
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4479,6 +4399,82 @@ msgstr "Attribut.Guessit"
msgid "GuessIt_Property"
msgstr "Attribut_Guessit"
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr "Taille minimale du fichier"
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr "Types de tâche concernée"
#: sabnzbd/skintext.py
msgid "All"
msgstr "Tous"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr "Séries avec dates de diffusion"
#: sabnzbd/skintext.py
msgid "Movies"
msgstr "Films"
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr "Autre / Inconnu"
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
"<p>Utilisez les trieurs pour organiser automatiquement vos téléchargements "
"terminés. Par exemple, placez tous les épisodes d'une série dans un dossier "
"spécifique à la saison. Ou encore, placez les films dans un dossier portant "
"le nom du film.</p><p>Les trieurs sont essayés par ordre d'apparition et "
"peuvent être réorganisés par glisser-déposer.<br/>Le premier trieur actif "
"qui correspond à la fois à la catégorie et au type de tâche concernée est "
"appliqué.</p><p>D'autres options sont disponibles lorsque l'option "
"Paramètres avancés est cochée.<br/>Des informations détaillées sont "
"disponibles sur le Wiki.</p>"
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr "Ajouter un trieur"
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr "Supprimer le trieur"
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr "Données de test"
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr "Démarrage rapide"
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
"Déplacer et renommer tous les épisodes de la catégorie \"tv\" vers un "
"dossier de série spécifique"
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
"Déplacer et renommer tous les films de la catégorie \"films\" vers un "
"dossier de film spécifique"
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4721,6 +4717,11 @@ msgstr "Confirmer les suppressions de l'historique"
msgid "Keyboard shortcuts"
msgstr "Raccourcis clavier"
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
"Maj+flèche : parcourir les pages de la file d'attente et de l'historique"
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Combien de temps ou jusqu'à quand souhaitez-vous mettre en pause ?"
@@ -4898,8 +4899,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Échec du renommage : %s en %s"
msgid "Failed to rename %s to %s"
msgstr "Échec du renommage de %s en %s"
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,17 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# ION, 2022
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
# ION, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Hebrew (https://www.transifex.com/sabnzbd/teams/111101/he/)\n"
"Last-Translator: ION, 2023\n"
"Language-Team: Hebrew (https://app.transifex.com/sabnzbd/teams/111101/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -38,16 +37,11 @@ msgstr "נכשל בהתחלת ממשק רשת"
msgid "Cannot find web template: %s, trying standard template"
msgstr "לא ניתן למצוא תבניות רשת: %s, מנסה תבנית תקנית"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr "SABYenc מושבת: גרסה נכונה לא נמצאה! (%s נמצאה, מצפה אל %s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr "מודול SABYenc… לא נמצא! מצפה אל %s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr "SABCTools מושבת: גרסה נכונה לא נמצאה! (%s נמצאה, מצפה אל %s)"
#. Error message
#: SABnzbd.py
@@ -64,14 +58,11 @@ msgstr "גרסת UNRAR שלך היא %s, אנחנו ממליצים על גרסה
msgid "unrar binary... NOT found"
msgstr "unrar בינארי… לא נמצא!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za בינארי… לא נמצא!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip בינארי… לא נמצא!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -155,11 +146,6 @@ msgstr "מפעיל מחדש בגלל בתר־מעבד שקרס"
msgid "Restarting because of crashed downloader"
msgstr "מפעיל מחדש בגלל מורידן שקרס"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "מפעיל מחדש בגלל מפענח קוד שקרס"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -304,6 +290,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "שגיאה: התור אינו ריק, לא ניתן לשנות תיקייה."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -445,6 +438,11 @@ msgstr "אין שרתים פעילים!"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "נכשל באתחול %s@%s עם סיבה: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "יותר מדי חיבורים לשרת %s [%s]"
@@ -604,6 +602,21 @@ msgstr "שמירת %s נכשלה"
msgid "Loading %s failed"
msgstr "טעינת %s נכשלה"
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s אינו בר־כתיבה בכלל. זה חוסם הורדות."
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
@@ -611,11 +624,6 @@ msgid ""
"problems."
msgstr "%s אינו בר־כתיבה עם שמות קבצים עם תו מיוחד. זה יכול לגרום לבעיות."
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr "%s אינו בר־כתיבה בכלל. זה חוסם הורדות."
#: sabnzbd/interface.py
msgid "Refused connection from:"
msgstr "חיבור מסורב מאת:"
@@ -647,7 +655,7 @@ msgid ""
"program:"
msgstr "מפתח API שגוי, השתמש במפתח ה־API מתצורה->כללי בתוכנית הצד השלישי שלך:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "אימות נכשל, בדוק שם משתמש/סיסמה."
@@ -668,10 +676,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr "ארכיון בלתי תקף של גיבוי"
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "אזהרה: LOCALHOST הוא דו־משמעי, השתמש בכתובת IP מספרית."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "כתובת השרת \"%s:%s\" אינה תקפה."
@@ -784,6 +788,18 @@ msgstr "[%s] הפקודה ב־build_command אינה מוגדרת."
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "לתסריט פייתון \"%s\" אין ערכת הרשאות ביצוע (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "מיון סדרות"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "מיון תאריכים"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "מיון סרטים"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "מריץ תסריט"
@@ -876,19 +892,6 @@ msgstr "קובץ RAR בלתי שמיש"
msgid "Corrupt RAR file"
msgstr "קובץ RAR פגום"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s קבצים תוך %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "שגיאה \"%s\" בזמן הרצת unzip() על %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "בינארי 7za לא נמצא, לא ניתן לפרוק את \"%s\""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "מנסה 7zip עם הסיסמה \"%s\""
@@ -1512,14 +1515,14 @@ msgstr "נכשל בהעברת קבצים"
msgid "Running user script %s"
msgstr "מריץ תסריט משתמש %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "הריץ את %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "קוד יציאת תסריט הוא %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "הריץ את %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "עוד"
@@ -1850,32 +1853,32 @@ msgstr "הסר עבודות נשלמות"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "השהה עבודות עם עדיפות נמוכה"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "השהה עבודות עם עדיפות רגילה"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "השהה עבודות עם עדיפות גבוהה"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "המשך עבודות עם עדיפות נמוכה"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "המשך עבודות עם עדיפות רגילה"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "המשך עבודות עם עדיפות גבוהה"
#. Config->Scheduler
@@ -2155,10 +2158,6 @@ msgstr "מיוחד"
msgid "Search"
msgstr "חיפוש"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "תיקיית הורדות"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "האם אתה בטוח שאתה רוצה לכבות את SABnzbd?"
@@ -2447,10 +2446,6 @@ msgstr "שם שרת / חיפוש DNS"
msgid "Download speed limited by"
msgstr "מהירות הורדה מוגבלת ע״י"
#: sabnzbd/skintext.py
msgid "CPU"
msgstr "יע״מ"
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr "מהירות דיסק"
@@ -2545,10 +2540,6 @@ msgid ""
"expire."
msgstr "כאשר כתובת ה־IP שלך משתנה או כאשר SABnzbd מופעל מחדש, השיח יפוג."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "אפשר חילוץ zip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "אפשר חילוץ 7zip"
@@ -2943,6 +2934,11 @@ msgstr ""
"מיקום לאחסון הורדות שהסתיימו, מעבודות במלואן.<br /><i>ניתן להשתלטות ע״י "
"קטגוריות מוגדרות־משתמש.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "שטח פנוי מזערי עבור תיקיית הורדות שלמות"
@@ -2983,12 +2979,8 @@ msgid "Watched Folder"
msgstr "תיקייה מושגחת"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"תיקייה לניטור אחר קבצי nzb.<br /><i>סורק גם ארכיונים מסוג .zip .rar "
"ו־.tar.gz ואחר קבצי nzb.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "תיקייה לניטור אחר קבצי nzb."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3069,6 +3061,10 @@ msgid ""
msgstr ""
"מיקום של קבצי יומן עבור SABnzbd.<br /><i>דורש הפעלה מחדש של SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "תיקיית גיבוי .nzb"
@@ -3237,14 +3233,6 @@ msgid ""
msgstr ""
"כאשר תסריט המשתמש מחזיר קוד יציאה בלתי אפסי, העבודה תסומן בדגל כנכשלה."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "בכישלון, נסה NZB חלופי"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "מספר שרתים מספקים קובץ NZB חלופי כאשר הורדה נכשלת."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "אפשר שינוי שם תיקייה"
@@ -3505,26 +3493,6 @@ msgid ""
"the job"
msgstr "כאשר במהלך הורדה מתבהר שיותר מדי נתונים חסרים, בטל את העבודה"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr "בחירת כתובת IP של שרת"
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr "כתובת IP ראשונה"
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr "כתובת IP שנבחרה באופן אקראי"
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr "כתובת IP הזריזה ביותר, העדפה אל IPv6"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "שימושי אם לשרת חדשות יש יותר מכתובת IPv4/IPv6 אחת"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3737,6 +3705,10 @@ msgstr "קרא הזנה"
msgid "Force Download"
msgstr "אלץ הורדה"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "החל מסננים"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
@@ -4105,20 +4077,6 @@ msgstr "תיקייה/נתיב"
msgid "Indexer Categories / Groups"
msgstr "קטגוריות / קבוצות של מדדן"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr "בחר קטגוריה 1 לפחות."
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "מיון סדרות"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "אפשר מיון טלוויזיה"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "מפתח דפוס"
@@ -4127,23 +4085,10 @@ msgstr "מפתח דפוס"
msgid "Clear"
msgstr "נקה"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "החל מסננים"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "קדם־קביעות"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "מיון סרטים"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "אפשר מיון סרטים"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "קטגוריות מושפעות"
@@ -4160,26 +4105,6 @@ msgstr "דפוס"
msgid "Result"
msgstr "תוצאה"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "תיקיית עונה 1x05"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "תיקיית עונה S01E05"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "תיקיית פרק 1x05"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "תיקיית פרק S01E05"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "שם עבודה בתור שם קובץ"
#: sabnzbd/skintext.py
msgid "Title"
msgstr "כותר"
@@ -4228,10 +4153,6 @@ msgstr "שם.פרק"
msgid "Episode_Name"
msgstr "שם_פרק"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "סיומת קובץ"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "סיומת"
@@ -4273,8 +4194,16 @@ msgid "Sort String"
msgstr "מחרוזת מיון"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "תווית מרובת־חלקים"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4284,26 +4213,13 @@ msgstr "בתיקיות"
msgid "No folders"
msgstr "אין תיקיות"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "מיון תאריכים"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "שם עבודה בתור שם קובץ"
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "אפשר מיון תאריכים"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "הראה שם תיקייה"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "תיקיות שנה־חודש"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "תיקיות יומיות"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4334,6 +4250,69 @@ msgstr "GuessIt.Property"
msgid "GuessIt_Property"
msgstr "GuessIt_Property"
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "הכל"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4572,6 +4551,10 @@ msgstr "אשר מחיקות היסטוריה"
msgid "Keyboard shortcuts"
msgstr "קיצורי דרך במקלדת"
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "כמה זמן או עד מתי תרצה להשהות? (באנגלית!)"
@@ -4748,8 +4731,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "נכשל בשינוי שם: %s אל %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/sabnzbd/teams/111101/nb/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Norwegian Bokmål (https://app.transifex.com/sabnzbd/teams/111101/nb/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,18 +36,12 @@ msgstr "Kunne ikke starte webgrensesnittet"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Kan ikke finne webmal: %s, prøver standardmal"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc deaktivert: Fant ikke korrekt versjon! (Fant v%s, forventet v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc modul... IKKE funnet! Forventet v%s - https://sabnzbd.org/sabyenc"
"SABCTools deaktivert: Fant ikke korrekt versjon! (Fant v%s, forventet v%s)"
#. Error message
#: SABnzbd.py
@@ -65,14 +58,11 @@ msgstr "Din Unrar-versjon er %s, vi anbefaler versjon %s eller høyere. <br />"
msgid "unrar binary... NOT found"
msgstr "unrar-binærfil... IKKE funnet!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za-binærfil... IKKE funnet!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip-binærfil... IKKE funnet!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -155,11 +145,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -302,6 +287,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Feil: Køen er ikke tom, kan ikke bytte mappe."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -441,6 +433,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Feilet å starte %s@%s grunnet: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "For mange tilkoblinger til server %s [%s]"
@@ -602,14 +599,24 @@ msgstr "Lasting av %s mislyktes"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -645,7 +652,7 @@ msgstr ""
"API-nøkkel er feil, bruk API-nøkkel fra Konfigurasjon->Generelt i ditt "
"tredjepartsprogram:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Godkjenning mislyktes, kontroller brukernavn og passord."
@@ -664,10 +671,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Advarsel: LOCALHOST er tvetydig, bruk numerisk IP-adresse."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradressen \"%s:%s\" er ikke gyldig."
@@ -778,6 +781,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Seriesortering"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Dato sortering"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Kjører skript"
@@ -870,19 +885,6 @@ msgstr "Ubrukelig RAR-fil"
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s filer på %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Feil \"%s\" under kjøring av unzip() på %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Prøver 7zip med password \"%s\""
@@ -1502,14 +1504,14 @@ msgstr "Klarte ikke å flytte filer"
msgid "Running user script %s"
msgstr "Kjør brukerskript %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Kjørte i %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Skript-avsluttingskode er %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Kjørte i %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Mer"
@@ -1840,32 +1842,32 @@ msgstr "Fjern ferdige jobber"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pause jobber med lav prioritet"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pause jobber med normal prioritet"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pause jobber med høy prioritet"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Gjenoppta jobber med lav prioritet"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Gjenoppta jobber med normal prioritet"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Gjenoppta jobber med høy prioritet"
#. Config->Scheduler
@@ -2145,10 +2147,6 @@ msgstr "Spesiell"
msgid "Search"
msgstr "Søk"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Midlertidig nedlastingsmappe"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Er sikker på at du vil slå av SABnzbd?"
@@ -2435,10 +2433,6 @@ msgstr "Navnserver / DNS oppslag"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2534,10 +2528,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Aktiver Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Aktiver 7zip"
@@ -2924,6 +2914,11 @@ msgstr ""
"Plass for å lagre bearbeidede og ferdige nedlastinger.<br /><i>Kan "
"overstyres av brukerdefinerte kategorier.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2961,12 +2956,8 @@ msgid "Watched Folder"
msgstr "Overvåket Mappe"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Mappe som automatiskt søkes igjennom etter .nzb filer.<br /><i>Skanner også "
"igjennom .zip .rar og .tar.gz arkiver etter .nzb filer.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Mappe som automatiskt søkes igjennom etter .nzb filer."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3047,6 +3038,10 @@ msgstr ""
"Plass for lagrede loggfiler fran SABnzbd.<br /><i>Krever omstart av "
"SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ".nzb Reservemappe"
@@ -3213,14 +3208,6 @@ msgstr ""
"Når brukerskriptet returnerer en ikke-null exit kode, vil jobben bli flagget"
" som mislykket."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Når den feiler, prøv alternativ NZB-fil"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Noen servere vil gi en alternativ NZB når en nedlasting mislykkes."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Aktiver omdøping av mappe"
@@ -3480,26 +3467,6 @@ msgid ""
msgstr ""
"Avbryt jobben om det blir klart under nedlasting at for mye data mangler"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Nyttig hvis en newsserver har mer enn en IPv4/IPv6-adresse"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3707,6 +3674,10 @@ 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"
@@ -4071,20 +4042,6 @@ msgstr "Mappe/Søkesti"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Seriesortering"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Aktiverer TV sortering"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Hjelp til Sorteringsstreng"
@@ -4093,23 +4050,10 @@ msgstr "Hjelp til Sorteringsstreng"
msgid "Clear"
msgstr "Rens"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "For innstillinger"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Aktiver filmsortering"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Påvirkede kategorier"
@@ -4126,26 +4070,6 @@ msgstr "Mønster"
msgid "Result"
msgstr "Resultat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Sesongmappe"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Sesongmappe"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Episodemappe"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Episodemappe"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Tittel"
@@ -4194,10 +4118,6 @@ msgstr "Episode.Navn"
msgid "Episode_Name"
msgstr "Episode_Navn"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Filendelse"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "endelse"
@@ -4239,8 +4159,16 @@ msgid "Sort String"
msgstr "Sorteringsstreng"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Multi-del etikett"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4250,26 +4178,13 @@ msgstr "I mappe"
msgid "No folders"
msgstr "Ingen mappe"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Dato sortering"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Aktiver datosortering"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Vis Navn på mappe"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "År-Måneds mapper"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Daglige mapper"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4300,6 +4215,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Alle"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4538,6 +4516,10 @@ msgstr "Bekreft Sletting av Historie"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Hvor lenge ønsker du å pause? (skriv på engelsk!)"
@@ -4714,8 +4696,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Kunne ikke endre navn fra: %s til %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,17 +1,17 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Rik Brouwer, 2022
# Safihre <safihre@sabnzbd.org>, 2022
# Robert Lampe, 2023
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Dutch (https://app.transifex.com/sabnzbd/teams/111101/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -38,19 +38,13 @@ msgstr "Webinterface kan niet gestart worden"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Websjabloon %s niet te vinden; het standaardsjabloon wordt gebruikt."
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc uitgeschakeld, geen bruikbare versie gevonden! (V%s gevonden, V%s "
"verwacht)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc module... NIET gevonden! Verwacht V%s - https://sabnzbd.org/sabyenc"
"SABCTools uitgeschakeld, geen bruikbare versie gevonden! (V%s gevonden, V%s "
"verwacht)"
#. Error message
#: SABnzbd.py
@@ -68,14 +62,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "unrar-programma niet gevonden."
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za-programma niet gevonden."
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip-programma niet gevonden."
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -162,11 +153,6 @@ msgstr "SABnzbd wordt herstart omdat de postprocessor is gecrasht"
msgid "Restarting because of crashed downloader"
msgstr "SABnzbd wordt herstart omdat de downloader is gecrasht"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr "SABnzbd wordt herstart omdat de decoder is gecrasht"
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -319,6 +305,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Fout: Wachtrij is niet leeg, andere map kiezen niet mogelijk."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -468,6 +461,11 @@ msgstr "Er zijn geen actieve servers!"
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Initialisatie van %s@%s mislukt, vanwege: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Te veel verbindingen met server %s [%s]"
@@ -629,6 +627,23 @@ msgstr "Opslaan van %s lukt niet"
msgid "Loading %s failed"
msgstr "Inlezen van %s mislukt"
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
"Het is niet mogelijk bestanden te schrijven in %s. Hierdoor kan er niet "
"gedownload worden."
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
@@ -638,13 +653,6 @@ msgstr ""
"Het is niet mogelijk bestanden met speciale tekens op te slaan in %s. Dit "
"geeft mogelijk problemen bij het verwerken van downloads."
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
"Het is niet mogelijk bestanden te schrijven in %s. Hierdoor kan er niet "
"gedownload worden."
#: sabnzbd/interface.py
msgid "Refused connection from:"
msgstr "Verbinding geweigerd van: "
@@ -678,7 +686,7 @@ msgstr ""
"API-sleutel incorrect; vul de API-sleutel van 'Configuratie' => 'Algemeen' "
"in bij het externe programma:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Inloggen mislukt, controleer gebruikersnaam en wachtwoord."
@@ -699,10 +707,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr "Ongeldig backup bestand"
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Let op: LOCALHOST is niet eenduidig, gebruik een numeriek IP-adres."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradres \"%s:%s\" is niet geldig."
@@ -714,11 +718,11 @@ msgstr "Feed"
#: sabnzbd/interface.py
msgid "Daily"
msgstr "dagelijks"
msgstr "Dagelijks"
#: sabnzbd/interface.py, sabnzbd/skintext.py
msgid "Monday"
msgstr "maandag"
msgstr "Maandag"
#: sabnzbd/interface.py, sabnzbd/skintext.py
msgid "Tuesday"
@@ -818,6 +822,18 @@ msgstr "[%s] Het commando in build_command is ongedefinieerd"
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python-script '%s' heeft geen uitvoerpermissie (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Serie sorteren"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Datum sorteren"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "Film sorteren"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Script uitvoeren"
@@ -910,19 +926,6 @@ msgstr "Onbruikbaar RAR-bestand"
msgid "Corrupt RAR file"
msgstr "Beschadigd RAR-bestand"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s bestanden in %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Fout '%s' bij uitvoeren van unzip() op %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "Geen 7za-programma gevonden, kan \"%s\" niet uitpakken"
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Uitpakpoging met 7zip en wachtwoord '%s'"
@@ -1552,14 +1555,14 @@ msgstr "Verplaatsen van bestanden mislukt"
msgid "Running user script %s"
msgstr "Gebruiker script %s loopt"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s is klaar"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Exit code van het script is %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s is klaar"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Meer"
@@ -1890,32 +1893,32 @@ msgstr "Verwijder voltooide downloads"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pauzeer downloads met prioriteit \"Laag\""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pauzeer downloads met prioriteit \"Normaal\""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pauzeer downloads met prioriteit \"Hoog\""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Hervat downloads met prioriteit \"Laag\""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Hervat downloads met prioriteit \"Normaal\""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Hervat downloads met prioriteit \"Hoog\""
#. Config->Scheduler
@@ -2195,10 +2198,6 @@ msgstr "Speciaal"
msgid "Search"
msgstr "Zoeken"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Map voor verwerkte downloads"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Weet je zeker dat je SABnzbd wilt afsluiten?"
@@ -2487,10 +2486,6 @@ msgstr "Nameserver / DNS opzoeken"
msgid "Download speed limited by"
msgstr "Downloadsnelheid beperkt door"
#: sabnzbd/skintext.py
msgid "CPU"
msgstr "Processor"
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr "Hardeschijf"
@@ -2590,10 +2585,6 @@ msgstr ""
"Als je IP adres veranderd of SABnzbd opnieuw wordt opgestart, zal de sessie "
"verlopen."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Unzip toestaan"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "7Zip toestaan"
@@ -2999,6 +2990,11 @@ msgid ""
"overruled by user-defined categories.</i>"
msgstr "(kan aangepast worden door de categorieën)."
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Minimale vrije ruimte voor verwerkte downloads map"
@@ -3038,12 +3034,9 @@ msgid "Watched Folder"
msgstr "Bewaakte map"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgid "Folder to monitor for .nzb files."
msgstr ""
".NZB en .ZIP-bestanden in deze map worden automatisch toegevoegd aan de "
"wachtrij."
".nzb bestanden in deze map worden automatisch toegevoegd aan de wachtrij."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3130,6 +3123,10 @@ msgstr ""
"Map waarin de log bestanden worden opgeslagen<br /><i>Vereist een "
"herstart</i>."
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Map voor het bewaren van NZB-bestanden"
@@ -3310,15 +3307,6 @@ msgstr ""
"Wanneer het script een exit code anders dan 0 geeft, zal de download worden "
"afgekeurd."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Bij mislukte download: probeer alternatieve NZB"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Sommige indexers hebben een alternatieve NZB wanneer een download mislukt"
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Gebruik tijdelijke mapnamen"
@@ -3595,26 +3583,6 @@ msgstr ""
"Als tijdens het downloaden duidelijk wordt dat te veel data ontbreekt, breek"
" dan de download af"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr "Server IP adres selectie"
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr "Eerste IP adres"
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr "willekeurig geselecteerd IP adres"
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr "Snelste IP adres, voorkeur voor IPv6"
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Nuttig wanneer een server meer dan één IPv4 of IPv6-adres heeft"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3833,6 +3801,10 @@ 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"
@@ -4207,20 +4179,6 @@ msgstr "Map/Pad"
msgid "Indexer Categories / Groups"
msgstr "Indexer Categorieën / Groepen"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr "Selecteer minstens 1 categorie."
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Serie sorteren"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Serie sorteren aan"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Uitleg"
@@ -4229,23 +4187,10 @@ msgstr "Uitleg"
msgid "Clear"
msgstr "Wissen"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "Filters toepassen"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Standaardinstellingen"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "Film sorteren"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Film sorteren aan"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Beïnvloede categorieën"
@@ -4262,26 +4207,6 @@ msgstr "Patroon"
msgid "Result"
msgstr "Resultaat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Seizoensmappen"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Seizoensmap"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Aflevering-map"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Aflevering-map"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Downloadnaam als Bestandsnaam"
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Titel"
@@ -4330,10 +4255,6 @@ msgstr "Aflevering.Naam"
msgid "Episode_Name"
msgstr "Aflevering_Naam"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Bestandsextensie"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Extensie"
@@ -4375,8 +4296,16 @@ msgid "Sort String"
msgstr "Sorteertekst"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Meervoudig label"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4386,26 +4315,13 @@ msgstr "In mappen"
msgid "No folders"
msgstr "Geen mappen"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Datum sorteren"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr "Downloadnaam als Bestandsnaam"
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Datum sorteren aan"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Toon Naam map"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Jaar-Maand Mappen"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Dagelijkse Mappen"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4436,6 +4352,69 @@ msgstr "GuessIt.Eigenschap"
msgid "GuessIt_Property"
msgstr "GuessIt_Eigenschap"
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr "Minimale bestandsgrootte"
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "alles"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4675,6 +4654,10 @@ msgstr "Bevestig verwijderen uit geschiedenis"
msgid "Keyboard shortcuts"
msgstr "Sneltoetsen"
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Voor hoe lang of tot wanneer wilt u pauzeren? (in het Engels!)"
@@ -4851,8 +4834,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Hernoemen van %s tot %s mislukt"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Polish (https://www.transifex.com/sabnzbd/teams/111101/pl/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Polish (https://app.transifex.com/sabnzbd/teams/111101/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,15 +36,10 @@ msgstr "Nie udało się uruchomić interfejsu WWW"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Nie znaleziono szablonu: %s, próbuję użyć standardowego szablonu"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -63,14 +57,11 @@ msgstr "Twoja wersja unrar to %s, zalecana jest wersja %s lub wyższa.<br />"
msgid "unrar binary... NOT found"
msgstr "Program unrar ... NIE znaleziono!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "Program 7za... NIE znaleziono!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "Program unzip ... NIE znaleziono!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -150,11 +141,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -297,6 +283,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Błąd: Kolejka nie jest pusta, nie można zmienić katalogu."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -438,6 +431,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Błąd podczas inicjalizacji %s@%s: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Zbyt wiele połączeń do serwera %s [%s]"
@@ -601,14 +599,24 @@ msgstr "Nie udało się wczytać %s"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -644,7 +652,7 @@ msgstr ""
"Klucz API jest nieprawidłowy, użyj klucza API z sekcji Konfiguracja->Ogólne "
"w zewnętrznym programie:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Błąd połączenia, sprawdź nazwę użytkownika i hasło."
@@ -663,10 +671,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Uwaga: LOCALHOST jest niejednoznaczne, użyj adresu IP."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Nieprawidłowy adres serwera \"%s:%s\"."
@@ -777,6 +781,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Sortowanie seriali"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Sortowanie według daty"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Uruchamianie skryptu"
@@ -869,19 +885,6 @@ msgstr "Bezużyteczny plik RAR"
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s plików w %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Błąd \"%s\" podczas uruchamiania unzip() na %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Próba rozpakowania archiwum 7zip z użyciem hasła \"%s\""
@@ -1507,14 +1510,14 @@ msgstr "Nie udało się przenieść plików"
msgid "Running user script %s"
msgstr "Uruchamianie skryptu użytkownika %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Uruchomiono %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Kod zakończenia skryptu: %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Uruchomiono %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Więcej"
@@ -1845,32 +1848,32 @@ msgstr "Usuń ukończone zadania"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Wstrzymaj zadania o niskim priorytecie"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Wstrzymaj zadania o normalnym priorytecie"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Wstrzymaj zadania o wysokim priorytecie"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Wznów zadania o niskim priorytecie"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Wznów zadania o normalnym priorytecie"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Wznów zadania o wysokim priorytecie"
#. Config->Scheduler
@@ -2150,10 +2153,6 @@ msgstr "Specjalne"
msgid "Search"
msgstr "Szukaj"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Katalog pobierania"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Czy na pewno wyłączyć SABnzbd?"
@@ -2440,10 +2439,6 @@ msgstr "Serwer DNS"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2538,10 +2533,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Włącz unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Włącz 7zip"
@@ -2930,6 +2921,11 @@ msgstr ""
"Miejsce przechowywania ukończonych, przetworzonych plików. <br /><i>Może "
"zostać zmienione przez ustawienia kategorii.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2967,12 +2963,8 @@ msgid "Watched Folder"
msgstr "Obserwowany katalog"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Katalog monitorowany w poszukiwaniu plików .nzb.<br /><i>Skanowane są "
"również pliki .zip, .rar oraz .tar.gz.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Katalog monitorowany w poszukiwaniu plików .nzb."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3054,6 +3046,10 @@ msgid ""
"Location of log files for SABnzbd.<br /><i>Requires SABnzbd restart!</i>"
msgstr "Lokalizacja logów SABnzbd.<br /><i>Wymaga restartu SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Katalog kopii zapasowych .nzb"
@@ -3220,16 +3216,6 @@ msgstr ""
"Jeśli skrypt użytkownika zwróci niezerowy kod zakończenia, zadanie zostanie "
"oznaczone jako nieudane"
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Użyj alternatywnego NZB w razie niepowodzenia"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Niektóre serwery udostępniają alternatywne NZB, kiedy pobieranie kończy się "
"niepowodzeniem"
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Włącz zmianę nazw katalogów"
@@ -3490,26 +3476,6 @@ msgstr ""
"Jeśli podczas pobierania okaże się, że brakuje zbyt dużej ilości danych, "
"przerwij zadanie"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Przydatne, gdy serwer ma więcej niż jeden adres IPv4/IPv6"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3717,6 +3683,10 @@ 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"
@@ -4081,20 +4051,6 @@ msgstr "Katalog/Ścieżka"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Sortowanie seriali"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Włącz sortowanie TV"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Zastępowane ciągi"
@@ -4103,23 +4059,10 @@ msgstr "Zastępowane ciągi"
msgid "Clear"
msgstr "Wyczyść"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Predefiniowane"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Włącz sortowanie filmów"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Dotyczy kategorii"
@@ -4136,26 +4079,6 @@ msgstr "Ciąg"
msgid "Result"
msgstr "Wynik"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "Katalog sezonu 1x05"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "Katalog sezonu S01E05"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "Katalog odcinka 1x05"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "Katalog odcinka S01E05"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Tytuł"
@@ -4204,10 +4127,6 @@ msgstr "Tytuł.odcinka"
msgid "Episode_Name"
msgstr "Tytuł_odcinka"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Rozszerzenie pliku"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Rozszerzenie"
@@ -4249,8 +4168,16 @@ msgid "Sort String"
msgstr "Wzorzec sortowania"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Etykieta wieloczęściowa"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4260,26 +4187,13 @@ msgstr "W katalogach"
msgid "No folders"
msgstr "Brak katalogów"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Sortowanie według daty"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Włącz sortowanie według daty"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Katalog z tytułem serialu"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Katalogi rok-miesiąc"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Katalogi dzienne"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4310,6 +4224,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Wszystko"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4548,6 +4525,10 @@ msgstr "Potwierdzaj usuwanie z historii"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Jak długo lub do kiedy chcesz wstrzymać? (po angielsku!)"
@@ -4722,8 +4703,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Nie udało się zmienić nazwy %s na %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Portuguese (Brazil) (https://www.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Portuguese (Brazil) (https://app.transifex.com/sabnzbd/teams/111101/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -38,15 +37,10 @@ msgid "Cannot find web template: %s, trying standard template"
msgstr ""
"Não foi possível encontrar o template web: %s. Tentando o template padrão"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -65,14 +59,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "aplicativo unrar... NÃO encontrado!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "aplicativo 7za... NÃO encontrado!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "aplicativo unzip... NÃO encontrado!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -154,11 +145,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -301,6 +287,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Erro: A fila não está vazia. Não será possível mudar de pasta."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -444,6 +437,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Falha ao iniciar %s@%s devido as seguintes razões: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Excesso de conexões ao servidor %s [%s]"
@@ -605,14 +603,24 @@ msgstr "Falha ao carregar %s"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -648,7 +656,7 @@ msgstr ""
"Chave de API incorreta. Use a chave de API de Configuração->Geral em seu "
"programa de terceiros:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Falha de autenticação, verifique usuário / senha."
@@ -667,10 +675,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Atenção: LOCALHOST é ambíguo, use endereço IP numérico."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Endereço de servidor \"%s:%s\" não é válido."
@@ -781,6 +785,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Ordenação de Séries"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Ordenação por data"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Executando script"
@@ -873,19 +889,6 @@ msgstr "Arquivo RAR inutilizável"
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s arquivos em %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Erro \"%s\" ao executar unzip() em %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Testando 7zip com a senha \"%s\""
@@ -1509,14 +1512,14 @@ msgstr "Falha ao mover arquivos"
msgid "Running user script %s"
msgstr "Executando script de usuário %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s executado"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Código de saída do script é %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s executado"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Mais"
@@ -1848,32 +1851,32 @@ msgstr "Remover trabalhos encerrados"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pausa tarefas de baixa prioridade"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pausa tarefas de prioridade normal"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pausa tarefas de alta prioridade"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Continua tarefas de baixa prioridade"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Continua tarefas de prioridade normal"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Continua tarefas de alta prioridade"
#. Config->Scheduler
@@ -2153,10 +2156,6 @@ msgstr "Especial"
msgid "Search"
msgstr "Busca"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Pasta de Download"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Tem certeza de que quer encerrar o SABnzbd?"
@@ -2443,10 +2442,6 @@ msgstr "Nome do servidor / DNS Lookup"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2541,10 +2536,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Habilitar Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Ativar 7zip"
@@ -2932,6 +2923,11 @@ msgstr ""
"Local para armazenar downloads concluídos, totalmente processados.<br "
"/><i>Pode ser anulado por categorias definidas pelo usuário.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2969,12 +2965,8 @@ msgid "Watched Folder"
msgstr "Pasta de Assistidos"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Pasta para monitorar por arquivos .nzb.<br /><i>Também procura arquivos .nzb"
" em arquivos .zip, .rar e .tar.gz.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Pasta para monitorar por arquivos .nzb."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3057,6 +3049,10 @@ msgstr ""
"Local dos arquivos de log do SABnzbd.<br /><i>Será necessário reiniciar o "
"SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Pasta de Backup de .nzb"
@@ -3222,15 +3218,6 @@ msgstr ""
"Quando um script do usuário retornar um código de saída diferente de zero, o"
" trabalho será marcado como falho"
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "Em caso de falha, tente um NZB alternativo"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Alguns servidores fornecem um NZB alternativo quando um download falha."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Habilitar renomeação de pasta"
@@ -3492,26 +3479,6 @@ msgstr ""
"Quando durante o download ficar claro que muitos dados estão faltando, "
"cancela a tarefa"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Útil se um newsserver tem mais de um endereço IPv4/IPv6"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3719,6 +3686,10 @@ 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"
@@ -4083,20 +4054,6 @@ msgstr "Pasta/Caminho"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Ordenação de Séries"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Ativar a ordenação de TV"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Modelo do padrão"
@@ -4105,23 +4062,10 @@ msgstr "Modelo do padrão"
msgid "Clear"
msgstr "Limpar"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Predefinições"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Ativar a ordenação de filmes"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Categorias Afetadas"
@@ -4138,26 +4082,6 @@ msgstr "Modelo"
msgid "Result"
msgstr "Resultado"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Pasta Da Temporada"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Pasta Da Temporada"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Pasta Do Episódio"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Pasta Do Episódio"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Tí­tulo"
@@ -4206,10 +4130,6 @@ msgstr "Nome.Episódio"
msgid "Episode_Name"
msgstr "Nome_Episódio"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Extensão do arquivo"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Extensão"
@@ -4251,8 +4171,16 @@ msgid "Sort String"
msgstr "String de ordenação"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Rótulo multi-parte"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4262,26 +4190,13 @@ msgstr "Em pastas"
msgid "No folders"
msgstr "Sem pastas"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Ordenação por data"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Ativar a ordenação por data"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Pasta do Nome do Show"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Pastas Ano-Mês"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Pastas Diárias"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4312,6 +4227,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Todos"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4550,6 +4528,10 @@ msgstr "Confirmar Exclusões do Histórico"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Por quanto tempo ou até quando você quer pausar? (em Inglês!)"
@@ -4724,8 +4706,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Falha ao renomear: %s para %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,17 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Eduard Baniceru <war4peace@gmail.com>, 2021
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Romanian (https://app.transifex.com/sabnzbd/teams/111101/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -38,19 +37,13 @@ msgstr "Pornirea interfeţei-web nereuşită"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Nu se poate găsi şablon web:%s, se încearcă şablon standard"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc dezactivat: nu s-a găsit o versiune corectă! (Găsită v%s, se "
"așteaptă v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"Modul SABYenc... NEgăsit! Se așteaptă v%s - https://sabnzbd.org/sabyenc"
"SABCTools dezactivat: nu s-a găsit o versiune corectă! (Găsită v%s, se "
"așteaptă v%s)"
#. Error message
#: SABnzbd.py
@@ -69,14 +62,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "binar unrar... Negăsit!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "Fişier executabil 7za ... Indisponibil!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "binar unzip... Negăsit!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -160,11 +150,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -313,6 +298,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Eroare: Coada nu este goală, nu pot schimba dosar."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -458,6 +450,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Nu am putu inițializa %s@%s din cauza următorului motiv: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Prea multe conexiuni la serverul %s [%s]"
@@ -619,14 +616,24 @@ msgstr "Încărcarea %s nereuşită"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -662,7 +669,7 @@ msgstr ""
"Cheie API incorectă, Folosiţi cheia api din Configurare->General în "
"programul dumneavoastră terţ:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Autentificare nereuşită, verifică nume utilizator/parolă."
@@ -683,10 +690,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Atenţie:LOCALHOST este ambiguu, folosiţi o adresă IP numerică"
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Adresa server \"%s:%s\" nu este validă"
@@ -801,6 +804,18 @@ msgstr "[%s] Comanda din build_command este nedefinită."
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Scriptul Python „%s” nu are permisiuni de executare (+x)"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Sortare Seriale"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Sortare Dată"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Rulare script"
@@ -894,19 +909,6 @@ msgstr "Fișier RAR ce poate fi folosit"
msgid "Corrupt RAR file"
msgstr "Fișier RAR corupt"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s fişiere în %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Eroare \"%s\" în timpul rulării unzip() pe %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr "Nu s-a găsit binar 7za, nu pot dezarhiva „%s”"
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Încerc 7zip cu parola \"%s\""
@@ -1538,14 +1540,14 @@ msgstr "Nu am putu muta fişier"
msgid "Running user script %s"
msgstr "Rulare script utilizator %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Durată %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Codul de ieșire a scriptului este %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Durată %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Mai mult"
@@ -1876,32 +1878,32 @@ msgstr "Elimină sarcinile finalizate"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Întrerupte sarcinile cu prioritate redusă"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Întrerupe sarcinile cu prioritate normală"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Întrerupe sarcinile cu prioritate ridicată"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Reia sarcinile cu prioritate redusă"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Reia sarcinile cu prioritate normală"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Reia sarcinile cu prioritate ridicată"
#. Config->Scheduler
@@ -2181,10 +2183,6 @@ msgstr "Special"
msgid "Search"
msgstr "Caută"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Dosar Descărcare"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Sunteţi sigur că doriţi să inchideţi SABnzbd?"
@@ -2471,10 +2469,6 @@ msgstr "Server de nume/Căutare DNS"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2572,10 +2566,6 @@ msgstr ""
"Atunci când modificați adresa IP sau dacă SABnzbd este repornit sesiunea "
"dumneavoastră va expira."
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Activează Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Activează 7zip"
@@ -2960,6 +2950,11 @@ msgstr ""
"Locație pentru stocare , a descărcărilor procesate complet.<br /><i>Poate fi"
" suprascris de categoriile definite de utilizator.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2997,12 +2992,8 @@ msgid "Watched Folder"
msgstr "Dosar Monitorizat"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Dosar pentru supraveghere fişiere .nzb.<br /><i>Scanează de asemenea şi "
"arhivele .zip .rar .tar.gz de fişiere .nzb.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Dosar pentru supraveghere fişiere .nzb."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3083,6 +3074,10 @@ msgstr ""
"Locaţie a fişierelor jurnal ale SABnzbd.<br /><i>Necesită repornire "
"SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Dosar Copie de Siguranţă .nzb"
@@ -3250,14 +3245,6 @@ msgstr ""
"Când un script de utilizator returnează o ieșire diferit de codul de ieșire,"
" sarcina v fi marcată ca fiind nereușită."
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "La eroare, încearcă NZB alternativ"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Unele server oferă o alternativă dacă un NZB eșuează."
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Activează redenumire dosar"
@@ -3521,26 +3508,6 @@ msgstr ""
"Atunci când e clar că o sarcină va eșua din cauza lipsei de date pe "
"server(e), anulează sarcina"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Util dacă un server de știri are mai mult decât o adresă IPv4/IPv6"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3749,6 +3716,10 @@ 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"
@@ -4112,20 +4083,6 @@ msgstr "Dosar/Cale"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Sortare Seriale"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Activează Sortare TV"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Model Cheie"
@@ -4134,23 +4091,10 @@ msgstr "Model Cheie"
msgid "Clear"
msgstr "Şterge"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Presetări"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Activează Sortare Filme"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Categorii Afectate"
@@ -4167,26 +4111,6 @@ msgstr "Șablon"
msgid "Result"
msgstr "Rezultat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Dosar Sezon"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Dosar Sezon"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Dosar Episod"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Dosar Episod"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Titlu"
@@ -4235,10 +4159,6 @@ msgstr "Nume.Episod"
msgid "Episode_Name"
msgstr "Nume_Episod"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Extensie fișier"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Extensie"
@@ -4280,8 +4200,16 @@ msgid "Sort String"
msgstr "Şir Caractere Sortare"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Etichetă Multi-părţi"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4291,26 +4219,13 @@ msgstr "În dosare"
msgid "No folders"
msgstr "Fără dosare"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Sortare Dată"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Activează Sortare Dată"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Arată Nume dosar"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Dosar An-Lună"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Dosare Zilnice"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4341,6 +4256,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Toate"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4580,6 +4558,10 @@ msgstr "Confirmă Ştergere Istoric"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Cât timp sau până când doriți să întrerupeți? (în Engleză!)"
@@ -4755,8 +4737,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Redenumire:%s în %s nereuşită"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Russian (https://www.transifex.com/sabnzbd/teams/111101/ru/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Russian (https://app.transifex.com/sabnzbd/teams/111101/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -39,15 +38,10 @@ msgstr ""
"Не удаётся найти шаблон веб-интерфейса: %s. Выполняется попытка использовать"
" стандартный шаблон"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -65,14 +59,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "Исполняемый файл unrar... НЕ найден"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr ""
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "Исполняемый файл unzip... НЕ найден"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -154,11 +145,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -301,6 +287,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Ошибка: очередь не пустая, папку нельзя изменить."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -440,6 +433,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr ""
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr ""
@@ -601,14 +599,24 @@ msgstr "Ошибка загрузки %s"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -644,7 +652,7 @@ msgstr ""
"Неправильный ключ API. Используйте в сторонней программе ключ API из раздела"
" «Настройка -> Общие»:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Ошибка проверки подлинности. Проверьте имя и пароль."
@@ -663,12 +671,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr ""
"Внимание! Имя LOCALHOST является неоднозначным. Используйте числовой IP-"
"адрес."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Адрес сервера «%s:%s» является недопустимым."
@@ -779,6 +781,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Сортировка сериалов"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Сортировка даты"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Запуск сценария"
@@ -871,19 +885,6 @@ msgstr ""
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s файлов в %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Ошибка «%s» выполнения unzip() для %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr ""
@@ -1506,14 +1507,14 @@ msgstr "Не удалось переместить файлы"
msgid "Running user script %s"
msgstr "Запуск пользовательского сценария %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Запущено %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr ""
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Запущено %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Подробнее"
@@ -1844,32 +1845,32 @@ msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr ""
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr ""
#. Config->Scheduler
@@ -2149,10 +2150,6 @@ msgstr "Особая"
msgid "Search"
msgstr ""
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Каталог загрузки"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Остановить SABnzbd?"
@@ -2439,10 +2436,6 @@ msgstr ""
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2537,10 +2530,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Распаковывать ZIP"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr ""
@@ -2928,6 +2917,11 @@ msgstr ""
"Место для сохранения готовых, полностью обработанных загрузок.<br /><i>Можно"
" переопределить в пользовательских категориях.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2965,12 +2959,8 @@ msgid "Watched Folder"
msgstr "Наблюдаемая папка"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Папка для поиска NZB-файлов.<br /><i>NZB-файлы также ищутся в архивах ZIP, "
"RAR и TAR.GZ.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Папка для поиска NZB-файлов."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3053,6 +3043,10 @@ msgstr ""
"Место для хранения файлов журнала SABnzbd.<br /><i>Требуется перезапуск "
"SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Папка для хранения копий NZB"
@@ -3216,14 +3210,6 @@ msgid ""
"as failed."
msgstr ""
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr ""
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Переименовывать папки"
@@ -3483,26 +3469,6 @@ msgid ""
"the job"
msgstr ""
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr ""
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3710,6 +3676,10 @@ msgstr "Прочитать ленту"
msgid "Force Download"
msgstr "Загрузить принудительно"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
@@ -4080,20 +4050,6 @@ msgstr "Папка или путь"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Сортировка сериалов"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Использовать сортировку по ТВ-шоу"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Ключи шаблона"
@@ -4102,23 +4058,10 @@ msgstr "Ключи шаблона"
msgid "Clear"
msgstr "Очистить"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Готовые шаблоны"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Использовать сортировку по фильмам"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Задействованные категории"
@@ -4135,26 +4078,6 @@ msgstr "Шаблон"
msgid "Result"
msgstr "Результат"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Сезон Папка"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Сезон Папка"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Эпизод Папка"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Эпизод Папка"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Название"
@@ -4203,10 +4126,6 @@ msgstr "Название.эпизода"
msgid "Episode_Name"
msgstr "Название_эпизода"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Расширение файла"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Расширение"
@@ -4248,8 +4167,16 @@ msgid "Sort String"
msgstr "Строка сортировки"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Обозначение нескольких частей"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4259,26 +4186,13 @@ msgstr "В папках"
msgid "No folders"
msgstr "Без папок"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Сортировка даты"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Использовать сортировку по дате"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Папка с названием сериала"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Папки с годом и месяцем"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Папки по дням"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4309,6 +4223,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Все"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4546,6 +4523,10 @@ msgstr "Подтвердите удаление журнала"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr ""
@@ -4722,8 +4703,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Не удалось переименовать: %s в %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Serbian (https://www.transifex.com/sabnzbd/teams/111101/sr/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Serbian (https://app.transifex.com/sabnzbd/teams/111101/sr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,15 +36,10 @@ msgstr "Neuspešno pokretanje web interfejsa"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Немогуће наћи веб модел: %s, програм покушава са стандардним моделом"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -64,14 +58,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "unrar program...NIJE pronađen!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za program...NIJE pronađen"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip program...NIJE pronađen"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -152,11 +143,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -299,6 +285,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Грешка: ред није празан, фасцикла се не може променити."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -439,6 +432,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Neuspešna inicijalizacija %s@%s iz razloga: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "Previše konekcija ka serveru %s [%s]"
@@ -600,14 +598,24 @@ msgstr "Učitavanje %s neuspešno"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -641,7 +649,7 @@ msgid ""
msgstr ""
"API кључ је погрешан, унети у спољни програм API кључ из Подешавања->Опште:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Аутентификација погрешна, проверити име/лозинку."
@@ -660,10 +668,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Пажња: LOCALHOST је двосмислен, користите ИП адресе."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Adresa servera \"%s:%s\" je neispravna"
@@ -774,6 +778,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Сортирање серије"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Сређивање датумом"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Покретање скрипта"
@@ -866,19 +882,6 @@ msgstr "Neupotrebljiva RAR datoteka"
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s датотека у %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Грешка \"%s\" при покретања 'unzip()' на %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Покушавам 7zip са лозинком \"%s\""
@@ -1498,14 +1501,14 @@ msgstr "Неуспешно премештање датотека"
msgid "Running user script %s"
msgstr "Покретање скрипта %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s покренуто"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Kod prekida skripte je %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "%s покренуто"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Више"
@@ -1836,32 +1839,32 @@ msgstr "Ukloni završene poslove"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pauziraj poslove sa niskim prioritetom"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pauziraj poslove sa normalnim prioritetom"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pauziraj poslove sa visokim prioritetom"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Настави радови са ниским приоритетом"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Настави радови са нормалним приоритетом"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Настави радови са високим приоритетом"
#. Config->Scheduler
@@ -2141,10 +2144,6 @@ msgstr "Посебно"
msgid "Search"
msgstr "Претрага"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Фасцикла преузимања"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Da li ste sigurni da želite ugasiti SABnzbd?"
@@ -2431,10 +2430,6 @@ msgstr "Nameserver/DNS Pretraga"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2527,10 +2522,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Omogući Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Омогући 7zip"
@@ -2914,6 +2905,11 @@ msgstr ""
"Смештај завршених, процесираних преузимања.<br /><i>Може се заобићи у "
"дефинисаним категоријама.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2951,13 +2947,8 @@ msgid "Watched Folder"
msgstr "Надгледана фасцикла"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Фасцикла за надгледање <b>.nzb</b> датотека.<br /><i>Такође скенира "
"<b>.zip</b> <b>.rar</b> и <b>.tar.gz</b> архиве у потрази за <b>.nzb</b> "
"датотекама.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Фасцикла за надгледање .nzb датотека."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3039,6 +3030,10 @@ msgstr ""
"Смештај извештаја SABnzbd-а.<br /><i>Потребно је поновно покретање "
"SABnzbd-а!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr "Фасцикла копије .нзб"
@@ -3204,14 +3199,6 @@ msgstr ""
"Kada korisnička skripta vrati kod koji nije nula, posao će biti označen kao "
"neuspešan"
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "U slučaju neuspeha, pokušaj sa alternativnim NZB-om"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "Neki serveri nude alternativni NZB pri neuspešnom preuzimanju"
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Упали преименовање фасцикле"
@@ -3469,26 +3456,6 @@ msgstr ""
"Када током преузимања постаје јасно да превише података недостаје, прекинути"
" посао"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Korisno ukoliko news server ima više od jedne IPv4/IPv6 adrese"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3695,6 +3662,10 @@ msgstr "Читај фид"
msgid "Force Download"
msgstr "Натерај преузимање"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
@@ -4058,20 +4029,6 @@ msgstr "Фасцикла/Путања"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Сортирање серије"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Упали сортирање ТВ-а"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Модел кључа"
@@ -4080,23 +4037,10 @@ msgstr "Модел кључа"
msgid "Clear"
msgstr "Очисти"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Предподешавања"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Упали сортирање филма"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Погођене категорије"
@@ -4113,26 +4057,6 @@ msgstr "Модел"
msgid "Result"
msgstr "Резултат"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Фасцикла сезоне"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Фасцикла сезоне"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Фасцикла епизоде"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Фасцикла епизоде"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Наслов"
@@ -4181,10 +4105,6 @@ msgstr "Име.Епизоде"
msgid "Episode_Name"
msgstr "Име_епизоде"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Екстензија датотеке"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Екстензија"
@@ -4226,8 +4146,16 @@ msgid "Sort String"
msgstr "Уреди низ"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Етикете више-партија"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4237,26 +4165,13 @@ msgstr "У фасциклама"
msgid "No folders"
msgstr "Нема фасцикле"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Сређивање датумом"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Упали сређивање по датуму"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Фасцикла Име Серије"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "Фасцикле Година-Месец"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Дневне фасцикле"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4287,6 +4202,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Све"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4525,6 +4503,10 @@ msgstr "Потврда брисања хронологије"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Koliko dugo ili dokle želite da pauzirate? (na engleskom!)"
@@ -4699,8 +4681,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Неуспешно преименовање : %s у %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Swedish (https://www.transifex.com/sabnzbd/teams/111101/sv/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Swedish (https://app.transifex.com/sabnzbd/teams/111101/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,15 +36,10 @@ msgstr "Det gick inte att starta webbgränssnittet"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Hittar inte webbmall: %s, försöker med standardmall"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#. Error message
@@ -64,14 +58,11 @@ msgstr ""
msgid "unrar binary... NOT found"
msgstr "unrar binär... EJ funnen!"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za binär... EJ funnen!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip binär... EJ funnen!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -152,11 +143,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -299,6 +285,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "Fel: Kön är inte tom, kan inte byta mapp."
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -439,6 +432,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "Misslyckades att initiera %s@%s med orsak %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "För många anslutningar till servern %s [%s]"
@@ -600,14 +598,24 @@ msgstr "Laddning av %s misslyckades"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -643,7 +651,7 @@ msgstr ""
"API-nyckel felaktig, använd api-nyckeln från Konfiguration-> Allmänt i ditt "
"tredjepartsprogram:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "Autentisering misslyckades, kontrollera användarnamn och lösenord."
@@ -662,10 +670,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "Varning: LOCALHOST är tvetydigt, använda numerisk IP-adress ."
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "Serveradressen \"%s:%s\" är ej giltig."
@@ -776,6 +780,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "Seriesortering"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "Datum sortering"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "Kör skript"
@@ -868,19 +884,6 @@ msgstr "Oanvändbar RAR-fil"
msgid "Corrupt RAR file"
msgstr ""
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s filer i %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "Fel \"%s\" när du kör unzip() på %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "Provar 7zip med lösenord \"%s\""
@@ -1504,14 +1507,14 @@ msgstr "Misslyckades med att flytta filer"
msgid "Running user script %s"
msgstr "Kör användarskript %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Körde %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "Skriptets utgångskod är %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "Körde %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "Mer"
@@ -1842,32 +1845,32 @@ msgstr "Ta bort färdiga jobb"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "Pausa lågprioriterade jobb"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "Pausa normalprioriterade jobb"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "Pausa högprioriterade jobb"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "Återuppta lågprioriterade jobb"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "Återuppta normalprioriterade jobb"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "Återuppta högprioriterade jobb"
#. Config->Scheduler
@@ -2147,10 +2150,6 @@ msgstr "Speciell"
msgid "Search"
msgstr "Sök"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "Temporär nedladdningmapp"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "Är du säker på att du vill stänga av SABnzbd?"
@@ -2437,10 +2436,6 @@ msgstr "Namnserver /DNS Lookup"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2535,10 +2530,6 @@ msgid ""
"expire."
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "Aktivera Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "Aktivera 7zip"
@@ -2925,6 +2916,11 @@ msgstr ""
"Plats för att lagra bearbetade och färdiga nedladdningar.<br /><i>Kan "
"åsidosättas av användar-definierade kategorier.</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2962,12 +2958,8 @@ msgid "Watched Folder"
msgstr "Övervakad Mapp"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"Mapp som igenomsöks automatiskt efter .nzb filer.<br /><i>Skannar även "
"igenom .zip .rar och .tar.gz arkiv efter .nzb filer.</i>"
msgid "Folder to monitor for .nzb files."
msgstr "Mapp som igenomsöks automatiskt efter .nzb filer."
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3048,6 +3040,10 @@ msgstr ""
"Plats för sparade loggfiler från SABnzbd.<br /><i>Kräver omstart av "
"SABnzbd!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ".nzb Reservmapp"
@@ -3213,15 +3209,6 @@ msgstr ""
"När ett användarskript returnerar ett icke-nollutgångsvärde, så kommer "
"jobbet att flaggas som misslyckat"
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "När misslyckat, prova en alternativ NZB"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr ""
"Vissa servrar kan förse en alternativ NZB när en nerladdning misslyckas"
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "Döp om mappar"
@@ -3481,26 +3468,6 @@ msgid ""
msgstr ""
"Under nerladdning och det märks att för mycket data saknas, avbryt jobbet"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "Användbar om en newsserver har fler val än en IPv4/IPv6adress"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3708,6 +3675,10 @@ 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"
@@ -4071,20 +4042,6 @@ msgstr "Mapp/Sökväg"
msgid "Indexer Categories / Groups"
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "Seriesortering"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "Aktivera TV sortering"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "Hjälp till Sorteringssträng"
@@ -4093,23 +4050,10 @@ msgstr "Hjälp till Sorteringssträng"
msgid "Clear"
msgstr "Rensa"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr ""
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "Förinställningar"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "Aktivera filmsortering"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "Påverkade kategorier"
@@ -4126,26 +4070,6 @@ msgstr "Mönster"
msgid "Result"
msgstr "Resultat"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 Säsongsmapp"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 Säsongsmapp"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 Episodmapp"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 Episodmapp"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "Titel"
@@ -4194,10 +4118,6 @@ msgstr "Episod.Namn"
msgid "Episode_Name"
msgstr "Episod_Namn"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "Filändelse"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "Filändelse"
@@ -4239,8 +4159,16 @@ msgid "Sort String"
msgstr "Sorteringssträng"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "Multi-del etikett"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4250,26 +4178,13 @@ msgstr "In mapp"
msgid "No folders"
msgstr "Ingen mapp"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "Datum sortering"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "Aktivera datumssortering"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "Visa Namn på mapp"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "År-Månads mappar"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "Dagliga mappar"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4300,6 +4215,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "Alla"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4537,6 +4515,10 @@ msgstr "Bekräfta Historik-borttagningar"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "Hur lång tid eller tills då vill du pausa? (på engelska!)"
@@ -4713,8 +4695,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "Det gick inte att döpa om: %s till %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,16 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2022
# Safihre <safihre@sabnzbd.org>, 2023
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0Alpha1\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2022\n"
"Language-Team: Chinese (China) (https://www.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2023\n"
"Language-Team: Chinese (China) (https://app.transifex.com/sabnzbd/teams/111101/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
@@ -37,16 +36,11 @@ msgstr "web 界面启动失败"
msgid "Cannot find web template: %s, trying standard template"
msgstr "无法找到 web 模板: %s正在尝试标准模板"
#. Error message
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr "SABYenc 已禁用:未找到正确的版本!(找到 v%s要求 v%s"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr "SABYenc 模块... 未找到!要求 v%s - https://sabnzbd.org/sabyenc"
"SABCTools disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr "SABCTools 已禁用:未找到正确的版本!(找到 v%s要求 v%s"
#. Error message
#: SABnzbd.py
@@ -63,14 +57,11 @@ msgstr "您的 UNRAR 程序版本为 %s我们建议使用 %s 或更高版本
msgid "unrar binary... NOT found"
msgstr "unrar 可执行程序... *未* 找到"
#. Warning message
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "7za 可执行程序... *未*找到!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "unzip 可执行程序... *未* 找到!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
@@ -150,11 +141,6 @@ msgstr ""
msgid "Restarting because of crashed downloader"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed decoder"
msgstr ""
#. Warning message
#: sabnzbd/__init__.py
msgid "Restarting because of crashed assembler"
@@ -297,6 +283,13 @@ msgstr ""
msgid "Error: Queue not empty, cannot change folder."
msgstr "错误: 队列非空,无法变更文件夹。"
#. Warning message
#: sabnzbd/cfg.py
msgid ""
"Do not use a folder in the application folder as your Scripts Folder, it "
"might be emptied during updates."
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -436,6 +429,11 @@ msgstr ""
msgid "Failed to initialize %s@%s with reason: %s"
msgstr "无法初始化 %s@%s原因为: %s"
#. Error message
#: sabnzbd/downloader.py
msgid "Fatal error in Downloader"
msgstr ""
#: sabnzbd/downloader.py
msgid "Too many connections to server %s [%s]"
msgstr "服务器 %s 连接数过多 [%s]"
@@ -597,14 +595,24 @@ msgstr "加载 %s 失败"
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgid "%s is not writable at all. This blocks downloads."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "%s is not writable at all. This blocks downloads."
msgid "Cannot write a long filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid "Cannot write a unicode filename to %s. This can cause problems."
msgstr ""
#. Warning message
#: sabnzbd/filesystem.py
msgid ""
"%s is not writable with special character filenames. This can cause "
"problems."
msgstr ""
#: sabnzbd/interface.py
@@ -636,7 +644,7 @@ msgid ""
"program:"
msgstr "API Key 不正确,请在第三方程序中使用“配置”->“常规”中的 api key:"
#: sabnzbd/interface.py, sabnzbd/newswrapper.py, sabnzbd/utils/servertests.py
#: sabnzbd/interface.py, sabnzbd/utils/servertests.py
msgid "Authentication failed, check username/password."
msgstr "身份认证失败,请检查用户名/密码。"
@@ -655,10 +663,6 @@ msgstr ""
msgid "Invalid backup archive"
msgstr ""
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
msgstr "警告: LOCALHOST 太含糊,请使用数字 IP 地址。"
#: sabnzbd/interface.py
msgid "Server address \"%s:%s\" is not valid."
msgstr "服务器地址 \"%s:%s\" 无效。"
@@ -769,6 +773,18 @@ msgstr ""
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python 脚本 \"%s\" 不具有执行 (+x) 权限"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Series Sorting"
msgstr "TV 排序"
#: sabnzbd/misc.py
msgid "Date Sorting"
msgstr "日期排序"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Movie Sorting"
msgstr "电影排序"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
msgstr "正在执行脚本"
@@ -861,19 +877,6 @@ msgstr "无法使用的 RAR 文件"
msgid "Corrupt RAR file"
msgstr "损坏的 RAR 文件"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
msgstr "%s 个文件,耗时 %s"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Error \"%s\" while running unzip() on %s"
msgstr "\"%s\" 对 %s 执行 unzip() 时出错"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr "正在尝试 7zip密码 \"%s\""
@@ -1491,14 +1494,14 @@ msgstr "移动文件失败"
msgid "Running user script %s"
msgstr "正在执行用户脚本 %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "执行 %s"
#: sabnzbd/postproc.py
msgid "Script exit code is %s"
msgstr "脚本退出代码为 %s"
#: sabnzbd/postproc.py
msgid "Ran %s"
msgstr "执行 %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "More"
msgstr "更多"
@@ -1829,32 +1832,32 @@ msgstr "移除已完成任务"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause low prioirty jobs"
msgid "Pause low priority jobs"
msgstr "暂停低优先级任务"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause normal prioirty jobs"
msgid "Pause normal priority jobs"
msgstr "暂停常规优先级任务"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Pause high prioirty jobs"
msgid "Pause high priority jobs"
msgstr "暂停高优先级任务"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume low prioirty jobs"
msgid "Resume low priority jobs"
msgstr "继续低优先级任务"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume normal prioirty jobs"
msgid "Resume normal priority jobs"
msgstr "继续常规优先级任务"
#. Config->Scheduler
#: sabnzbd/skintext.py
msgid "Resume high prioirty jobs"
msgid "Resume high priority jobs"
msgstr "继续高优先级任务"
#. Config->Scheduler
@@ -2134,10 +2137,6 @@ msgstr "特殊"
msgid "Search"
msgstr "搜索"
#: sabnzbd/skintext.py
msgid "Download Dir"
msgstr "下载目录"
#: sabnzbd/skintext.py
msgid "Are you sure you want to shutdown SABnzbd?"
msgstr "是否确定要关闭 SABnzbd?"
@@ -2424,10 +2423,6 @@ msgstr "域名服务器 / DNS 查询"
msgid "Download speed limited by"
msgstr ""
#: sabnzbd/skintext.py
msgid "CPU"
msgstr ""
#: sabnzbd/skintext.py
msgid "Disk speed"
msgstr ""
@@ -2514,10 +2509,6 @@ msgid ""
"expire."
msgstr "每当您的 IP 地址发生变化,或当 SABnzbd 重启,登录会话将自动过期。"
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr "启用 Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr "启用 7zip"
@@ -2887,6 +2878,11 @@ msgid ""
"overruled by user-defined categories.</i>"
msgstr "存储完成且已完全处理的下载数据的位置。<br /><i>可以通过用户定义分类额外调整。</i>"
#: sabnzbd/skintext.py
msgid ""
"Use Sorting to automatically organize and rename your completed downloads."
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
@@ -2922,11 +2918,8 @@ msgid "Watched Folder"
msgstr "监视文件夹"
#: sabnzbd/skintext.py
msgid ""
"Folder to monitor for .nzb files.<br /><i>Also scans .zip .rar and .tar.gz "
"archives for .nzb files.</i>"
msgstr ""
"要监视 .nzb 文件的文件夹。<br /><i>会同时扫描 .zip .rar 及 .tar.gz 压缩文件中的 .nzb 文件。</i>"
msgid "Folder to monitor for .nzb files."
msgstr "要监视 .nzb 文件的文件夹。"
#: sabnzbd/skintext.py
msgid "Watched Folder Scan Speed"
@@ -3002,6 +2995,10 @@ msgid ""
"Location of log files for SABnzbd.<br /><i>Requires SABnzbd restart!</i>"
msgstr "SABnzbd 日志文件的位置。<br /><i>需要重启 SABnzbd 才能生效!</i>"
#: sabnzbd/skintext.py
msgid "Purge Logs"
msgstr ""
#: sabnzbd/skintext.py
msgid ".nzb Backup Folder"
msgstr ".nzb 备份文件夹"
@@ -3163,14 +3160,6 @@ msgid ""
"as failed."
msgstr "用户脚本返回非零的退出代码时,对应的任务将被标记为失败。"
#: sabnzbd/skintext.py
msgid "On failure, try alternative NZB"
msgstr "失败时,尝试备用 NZB"
#: sabnzbd/skintext.py
msgid "Some servers provide an alternative NZB when a download fails."
msgstr "部分服务器在下载失败时可提供备用 NZB 文件。"
#: sabnzbd/skintext.py
msgid "Enable folder rename"
msgstr "启用文件夹重命名"
@@ -3421,26 +3410,6 @@ msgid ""
"the job"
msgstr "下载时若发现缺失数据过多,则中止对应任务"
#: sabnzbd/skintext.py
msgid "Server IP address selection"
msgstr ""
#: sabnzbd/skintext.py
msgid "First IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Randomly selected IP address"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quickest IP address, preferring IPv6"
msgstr ""
#: sabnzbd/skintext.py
msgid "Useful if a newsserver has more than one IPv4/IPv6 address"
msgstr "如果新闻服务器有多个 IPv4/IPv6 地址将非常有用"
#. Caption - Button: Add server
#: sabnzbd/skintext.py
msgid "Add Server"
@@ -3646,6 +3615,10 @@ msgstr "读取 Feed"
msgid "Force Download"
msgstr "强制下载"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "应用过滤器"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
@@ -4010,20 +3983,6 @@ msgstr "文件夹/路径"
msgid "Indexer Categories / Groups"
msgstr "索引 Categories / Groups"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Select at least 1 category."
msgstr ""
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Series Sorting"
msgstr "TV 排序"
#: sabnzbd/skintext.py
msgid "Enable TV Sorting"
msgstr "启用 TV 排序"
#: sabnzbd/skintext.py
msgid "Pattern Key"
msgstr "匹配符释义"
@@ -4032,23 +3991,10 @@ msgstr "匹配符释义"
msgid "Clear"
msgstr "清除"
#: sabnzbd/skintext.py
msgid "Apply filters"
msgstr "应用过滤器"
#: sabnzbd/skintext.py
msgid "Presets"
msgstr "预设"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Movie Sorting"
msgstr "电影排序"
#: sabnzbd/skintext.py
msgid "Enable Movie Sorting"
msgstr "启用电影排序"
#: sabnzbd/skintext.py
msgid "Affected Categories"
msgstr "影响分类"
@@ -4065,26 +4011,6 @@ msgstr "匹配"
msgid "Result"
msgstr "结果"
#: sabnzbd/skintext.py
msgid "1x05 Season Folder"
msgstr "1x05 季度文件夹"
#: sabnzbd/skintext.py
msgid "S01E05 Season Folder"
msgstr "S01E05 季度文件夹"
#: sabnzbd/skintext.py
msgid "1x05 Episode Folder"
msgstr "1x05 剧集文件夹"
#: sabnzbd/skintext.py
msgid "S01E05 Episode Folder"
msgstr "S01E05 剧集文件夹"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Title"
msgstr "标题"
@@ -4133,10 +4059,6 @@ msgstr "集.名"
msgid "Episode_Name"
msgstr "集_名"
#: sabnzbd/skintext.py
msgid "File Extension"
msgstr "文件扩展名"
#: sabnzbd/skintext.py
msgid "Extension"
msgstr "扩展名"
@@ -4178,8 +4100,16 @@ msgid "Sort String"
msgstr "排序字串"
#: sabnzbd/skintext.py
msgid "Multi-part label"
msgstr "多段标记"
msgid "Multi-part Label"
msgstr ""
#: sabnzbd/skintext.py
msgid "Show folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Season folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "In folders"
@@ -4189,26 +4119,13 @@ msgstr "分文件夹"
msgid "No folders"
msgstr "不分文件夹"
#. Warning message
#: sabnzbd/skintext.py, sabnzbd/sorting.py
msgid "Date Sorting"
msgstr "日期排序"
#: sabnzbd/skintext.py
msgid "Job Name as Filename"
msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Date Sorting"
msgstr "启用日期排序"
#: sabnzbd/skintext.py
msgid "Show Name folder"
msgstr "节目名称文件夹"
#: sabnzbd/skintext.py
msgid "Year-Month Folders"
msgstr "年-月文件夹"
#: sabnzbd/skintext.py
msgid "Daily Folders"
msgstr "每天文件夹"
msgid "Series"
msgstr ""
#. Note for title expression in Sorting that does case adjustment
#: sabnzbd/skintext.py
@@ -4239,6 +4156,69 @@ msgstr ""
msgid "GuessIt_Property"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Filesize"
msgstr ""
#: sabnzbd/skintext.py
msgid "Affected Job Types"
msgstr ""
#: sabnzbd/skintext.py
msgid "All"
msgstr "全部"
#: sabnzbd/skintext.py
msgid "Series with air dates"
msgstr ""
#: sabnzbd/skintext.py
msgid "Movies"
msgstr ""
#: sabnzbd/skintext.py
msgid "Other / Unknown"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"<p>Use Sorters to automatically organize your completed downloads. For "
"example, put all episodes from a series in a season-specific folder. Or, put"
" movies in a folder named after the movie.</p><p>Sorters are tried in order "
"of appearance and can be reordered by dragging and dropping.<br/>The first "
"active sorter that matches both the affected category and job type is "
"applied.</p><p>More options are available when Advanced Settings is "
"checked.<br/>Detailed information can be found on the Wiki.</p>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Add Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Remove Sorter"
msgstr ""
#: sabnzbd/skintext.py
msgid "Test Data"
msgstr ""
#: sabnzbd/skintext.py
msgid "Quick start"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all episodes in the \"tv\" category to a show-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Move and rename all movies in the \"movies\" category to a movie-specific "
"folder"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Rarely used options. For their meaning and explanation, click on the Help "
@@ -4474,6 +4454,10 @@ msgstr "确认历史删除"
msgid "Keyboard shortcuts"
msgstr ""
#: sabnzbd/skintext.py
msgid "Shift+Arrow key: Browse Queue and History pages"
msgstr ""
#: sabnzbd/skintext.py
msgid "How long or untill when do you want to pause? (in English!)"
msgstr "您希望在多久之后/什么时候暂停? (用英语作答!)"
@@ -4646,8 +4630,8 @@ msgstr ""
#. Error message
#: sabnzbd/sorting.py
msgid "Failed to rename: %s to %s"
msgstr "重命名失败: %s 为 %s"
msgid "Failed to rename %s to %s"
msgstr ""
#. Error message
#: sabnzbd/sorting.py

View File

@@ -1,11 +1,10 @@
#
# SABnzbd Translation Template file NSIS
# Copyright 2007-2022 The SABnzbd-Team
# team@sabnzbd.org
# Copyright 2007-2023 The SABnzbd-Team
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.8.0-develop\n"
"Project-Id-Version: SABnzbd-4.1.0RC1\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"

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