Compare commits

...

144 Commits

Author SHA1 Message Date
Safihre
0207652e3e Update text files for 3.2.0RC2
draft release
2021-02-08 21:02:38 +01:00
Safihre
0f1e99c5cb Update translatable texts 2021-02-08 13:29:16 +01:00
puzzledsab
f134bc7efb Right-to-Left support for Glitter and Config (#1776)
* Add rtl on main page

* Adjustments to rtl

* Forgot to add black check for this checkout

* Remove unnecessary style

* Remove more redundant attributes

* Some more reordering and alignment

* Align sorting and nzb drop downs

* Update NZB details and shutdown page

* Fix format

* Fix SABnzbd Config title tag

* Change file list header direction

* Set rtl variables in build_header instead and test dir="rtl" in config pages

* Revert some changes and handle styling using CSS

* Move more items to CSS

* Config RTL

* Move even more to CSS

* Small tweak

Co-authored-by: Safihre <safihre@sabnzbd.org>
2021-02-08 13:23:03 +01:00
puzzledsab
dcd7c7180e Do full server check when there are busy_threads (#1786)
* Do full server check when there are busy_threads

* Reduce next_article_search delay to 0.5s
2021-02-08 13:19:38 +01:00
jcfp
fbbfcd075b fix bonjour with localhost, retire LOCALHOSTS constant (#1782)
* fix bonjour with localhost, retire LOCALHOSTS constant

* rename probablyipv[46] functions to is_ipv[46]_addr

* refuse to send ssdp description_xml to outsiders
2021-02-08 13:19:30 +01:00
Safihre
f42d2e4140 Rename Glitter Default to Light and make Auto the new Default 2021-02-05 15:01:28 +01:00
Sam Edwards
88882cebbc Support for auto night mode switching in Glitter (#1783) 2021-02-05 15:01:13 +01:00
Safihre
17a979675c Do not re-release from GA when the release tag is pushed 2021-02-05 15:01:04 +01:00
Safihre
4642850c79 Set macOS Python installer target to "/" 2021-02-05 15:01:00 +01:00
Safihre
65278c4489 Update text files for 3.2.0RC1
draft release
2021-02-01 15:57:24 +01:00
Safihre
3a4a925ab0 Restore "--console" command line switch
Closes #1775
2021-02-01 13:57:41 +01:00
Safihre
6ef5d41c25 Python cache failed because build script reset work directory
So we store the download outside the work directory
2021-02-01 09:54:45 +01:00
Safihre
b9b9f46fbe Disable macOS Python download cache
I am not sure why this doesn't work..
2021-01-31 22:40:12 +01:00
Safihre
8d014e579d The installer-command removes the pkg file, breaking macOS GA cache 2021-01-31 22:31:59 +01:00
SABnzbd Automation
f2fc9f10f9 Update translatable texts 2021-01-31 20:01:25 +00:00
Safihre
f131155fd8 Update badges to GitHub Actions 2021-01-31 21:00:16 +01:00
Safihre
691e24a1d8 Build macOS 10.9+ compatible binary 2021-01-30 22:32:59 +01:00
jcfp
794a6f4454 fix another script validation issue (#1774)
* fix another script validation issue

* add test for changing script to str None

* cleanup change_script tests
2021-01-30 14:25:53 +01:00
Safihre
41bf8525cf Server disconnect was never triggered 2021-01-29 19:29:10 +01:00
SABnzbd Automation
6ebf486c09 Update translatable texts 2021-01-29 10:10:07 +00:00
Safihre
899ae94fcf Trigger malloc_trim when the queue is empty
See #1736
2021-01-29 11:09:14 +01:00
Safihre
d3cd5019d9 Small code change 2021-01-27 21:26:28 +01:00
SABnzbd Automation
1e4719558f Update translatable texts 2021-01-27 20:13:04 +00:00
Safihre
29ab83b9c0 Prospective par2 to add blocks from all sets in a job
Obfuscation is just too much nowadays.
2021-01-27 17:21:54 +01:00
puzzledsab
4b4d170ce1 Stop importing nzbs after shutdown request 2021-01-27 13:45:25 +01:00
SABnzbd Automation
8b0a12e0ba Update translatable texts 2021-01-27 11:29:35 +00:00
Safihre
430318ead7 Force installer to only run on Windows 8 and above
Closes #1770
2021-01-27 12:28:35 +01:00
Safihre
32f6ec63f2 Add NSIS-file to automated pot-file updates 2021-01-27 12:26:55 +01:00
Safihre
a3181c8f76 Check for Windows 8 or above in the installer 2021-01-27 12:23:24 +01:00
Safihre
412d169f58 Rename of the 32bit legacy release
"/" not supported by GA
2021-01-27 11:36:38 +01:00
Safihre
d1c2e6e0dd Build the 32bit Windows release on Python 3.8 to support Windows 7 2021-01-27 11:30:08 +01:00
Safihre
4f9ac56de0 Rename GITHUB_TOKEN to AUTOMATION_GITHUB_TOKEN 2021-01-27 11:26:14 +01:00
jcfp
9641dc82f9 fix cfg script validation on startup 2021-01-27 10:03:24 +01:00
Safihre
e68413b73c Filename parser should always output a filename with at least 1 char
Closes #1768
2021-01-26 22:52:07 +01:00
Safihre
a7386a25bd Update text files for 3.2.0Beta2
draft release
2021-01-26 20:45:50 +01:00
SABnzbd Automation
53f512e864 Update translatable texts 2021-01-26 19:17:46 +00:00
Safihre
283e643606 Always log the exact IP-address we are connecting to
Closes #1764
2021-01-26 20:16:51 +01:00
Safihre
fc1aa2db83 Mark test_download_unicode_made_on_windows as xfail on all platforms 2021-01-25 09:27:30 +01:00
SABnzbd Automation
0fc1e02519 Update translatable texts 2021-01-25 06:37:21 +00:00
jcfp
67581bf3f6 Validate input value for scripts (#1765)
* verify input values for scripts

* update and parametrise test_api_queue_change_job_script

* fortify cfg with script validation, fix test

* add typing to is_valid_script function :)

* move list_scripts function to filesystem

* also move windows-specific pathext stuff
2021-01-25 07:36:41 +01:00
Safihre
b7e4ca4d87 Correct server-tests after Downloader changes 2021-01-24 11:23:52 +01:00
Safihre
0594fc60c0 Rework shutdown and NewsWrapper handling in Downloader 2021-01-24 11:13:12 +01:00
Safihre
5a6c51219c Only parse interface settings when they are set 2021-01-24 10:39:32 +01:00
SABnzbd Automation
815542bf25 Update translatable texts 2021-01-24 08:57:26 +00:00
Safihre
0c5bd817a9 Small refactor of NNTP connection 2021-01-24 09:56:48 +01:00
Safihre
9b8a317351 Upgrade notice about totals10.sab
Closes #1744
2021-01-23 21:34:23 +01:00
SABnzbd Automation
7a9d8e021a Update translatable texts 2021-01-23 20:27:52 +00:00
puzzledsab
297ec1b8a1 Warn when a server has downloaded a certain amount of bytes or a given date is reached (#1762)
* First working version

* Remove pprint

* Black

* Use date type and move to 5 minute polling

* Give hints about intended usage in explain text

* Use scheduled tasks and some smaller changes

* Black

* Remove hidden fields from form

* Cleanup

* This is not the easiest part to get right

* Black hook take 3

* Rework the server check tasks

* Show quota left for server

* Move Server description

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

Closes #1455
2021-01-23 21:27:17 +01:00
Safihre
f04f6684e0 Correct refactor of database.py
Sending invalid nzo_id's resulted in crashes.
https://forums.sabnzbd.org/viewtopic.php?f=11&t=25163
2021-01-23 16:18:26 +01:00
SABnzbd Automation
91870c6712 Update translatable texts 2021-01-22 13:57:11 +00:00
jcfp
9c48fcf5f8 correct msg for rar renamer (#1763) 2021-01-22 14:54:31 +01:00
Safihre
ee41cfc618 Correct Windows Service restart
Broke it in the previous commit.
2021-01-21 20:58:00 +01:00
Safihre
ae30f89a2d Use basic restart for Windows binaries
Python 3.9 changed the output of Py_GetArgcArgv on Windows, causing the restart of the binaries to fail.
2021-01-21 20:55:31 +01:00
Safihre
dfcce3a974 Sometimes Multipar says failed, but we can try again with extra blocks
https://forums.sabnzbd.org/viewtopic.php?f=2&t=25155
2021-01-21 20:35:31 +01:00
Safihre
59423df0cb Program shutdown could be too fast to complete the last response 2021-01-21 20:26:40 +01:00
Safihre
ee08c486bc Allow newer cheroot-versions 2021-01-21 20:15:01 +01:00
puzzledsab
a56c522068 Save all interface values if useGlobalOptions is true (#1761)
* Save all interface values if useGlobalOptions is true

* Try to fix the tests

* New test test

* Another test test

* Remove default value for interface_settings
2021-01-21 19:31:33 +01:00
Sander
6d40eba496 Filename limit in sanitize_filename() to avoid traceback (#1721)
* urlgrabber limit filename to avoid tracebacks

* urlgrabber limit filename to avoid tracebacks: black

* urlgrabber limit filename to avoid tracebacks: black

* filename_limit ... 2020-01-15

* filename_limit: into sanitize_filename()

* filename_limit: black and typo and logging

* filename_limit: debug show full filename

* filename_limit: unittests

* sanitize_filename(): take care of feedback: one ASCII method, handly silly extension lengths

* sanitize_filename(): tests/test_filesystem.py ... make black happy

* sanitize_filename(): typo in comment

* sanitize_filename(): test_filesystem.py ... black

* sanitize_filename(): more unittests, and DEF_FILE_MAX (yet without GUI option)

* sanitize_filename(): always use DEF_FILE_MAX

* sanitize_filename(): black

* sanitize_filename(): handle UTF8 correct (>1 byte). DEF_FILE_MAX = 255

* sanitize_filename: measure bytes (not chars), DEF_FILE_MAX = 255 - 6, no test-writing in unittests

* sanitize_filename: constants.py ... black

* sanitize_filename: comment about extension

* DEF_FILE_MAX = 255 - 10 again, to solve adding ".nzb.gz" elsewhere
2021-01-19 22:03:13 +01:00
Safihre
c772df9d65 Add sleep to gc_stats test to stabilize the overal tests 2021-01-19 09:03:03 +01:00
Sander Jonkers
2a73f26f2a is_probably_obfuscated(): count underscores as spacedots 2021-01-18 20:47:02 +01:00
Safihre
a750ade5a4 Server statistics reset on restart if start_paused is enabled
Closes #1753
Oops.
2021-01-18 13:44:55 +01:00
Safihre
06b37c02f1 Use with-statement for the DOWNLOADER_CV 2021-01-18 13:11:53 +01:00
Safihre
d129607d5c Fix exit_sab for macOS binary 2021-01-17 20:51:33 +01:00
Safihre
e6d812bbd8 Set default Bandwith percentage to 100
Oops, should have done a long time ago. Otherwise by default it will exceed 100%.
2021-01-17 20:49:19 +01:00
Safihre
9cc921098e Allow longer time for test after queue-repair 2021-01-17 13:11:50 +01:00
Safihre
38213c1a91 Use Condition based system for the DirScanner 2021-01-17 12:56:52 +01:00
Safihre
44d74924e6 Rework program shutdown and restart to always use the same path 2021-01-17 12:42:34 +01:00
Safihre
5eaf0c12d3 Use Condition based system for program shutdown
Prevent delays when shutting down because the main loop isn't ready.
2021-01-17 12:21:07 +01:00
Sander Jonkers
7c2b433f7b happyeyeballs.py: by default, do NOT prefer IPv6 anymore 2021-01-17 11:56:46 +01:00
Safihre
30e692cefe Handle shutdown of SSDP using Condition's so it doesn't block
Closes #1750
2021-01-17 07:26:57 +01:00
Safihre
396fb42b11 Additional refactoring of socket-handling in Downloader 2021-01-16 19:42:54 +01:00
Safihre
c8d882712e Remove write_fds
Sockets are connected in blocking mode, so there's no need to wait for them to be writeable. Only after the connect we switch to non-blocking mode.
2021-01-16 19:42:54 +01:00
Safihre
9667aad1cb Rework the handling of socket fileno's 2021-01-16 19:42:54 +01:00
Safihre
4471303aae Simplify delay if no articles were found for a server 2021-01-16 19:42:54 +01:00
Safihre
fe2ec8cc94 Downloader shutdown same as the other threads 2021-01-15 22:07:02 +01:00
SABnzbd Automation
25440c6fec Update translatable texts 2021-01-15 06:17:01 +00:00
puzzledsab
8c2d7243cc can_be_slowed with some modifications (#1748) 2021-01-15 07:16:13 +01:00
Safihre
49e67a0bef Change calls to parent class to super() 2021-01-12 09:11:46 +01:00
SABnzbd Automation
1dfa937bff Update translatable texts 2021-01-09 20:46:43 +00:00
Safihre
a3c6bbc1b5 Resolve typing problems 2021-01-09 21:46:01 +01:00
Safihre
241e8b6842 Refactor and typing of download functions 2021-01-09 10:05:55 +01:00
SABnzbd Automation
8660faaeb7 Update translatable texts 2021-01-06 13:05:04 +00:00
Safihre
687deab6bc Trigger garbage collection every 5 minutes
Relates to #1736
2021-01-06 14:04:22 +01:00
Safihre
17ec3cbf4b Always lowercase category name
Closes #1738
2021-01-04 09:12:23 +01:00
Safihre
f75609c98c Trigger garbage collection at the end of the queue
Relates to #1736
2021-01-04 09:12:23 +01:00
Safihre
5bd65cc06a Remove close-button on update message
Closes #1740
2021-01-04 07:37:17 +01:00
Safihre
e2177577be Additional release notes 2021-01-04 07:36:11 +01:00
SABnzbd Automation
a695744c7c Update translatable texts 2021-01-03 19:44:48 +00:00
Safihre
c2a89731c9 Update text files for 3.2.0Beta1
draft release
2021-01-03 20:44:04 +01:00
Safihre
f0bfb08c2e Update copyright year to 2021 2021-01-03 20:43:19 +01:00
Safihre
764f7df6a7 Limit the number of TryList resets
This might cause problems, but it's worth a try. It seems we resetted the trylists so often, this would cause a lot of extra CPU cycles to try all articles again.
2021-01-03 13:14:43 +01:00
Safihre
c310822945 Add some typing to downloader.py 2021-01-03 12:06:59 +01:00
Safihre
4cedd051b6 Correct "Form element for Add NZB window was not closed breaking ..." 2021-01-02 18:30:43 +01:00
Safihre
d36fe1ab12 Update wiki links for 3.2.x 2021-01-02 18:27:49 +01:00
SABnzbd Automation
9a14125c6b Update translatable texts 2021-01-02 15:53:05 +00:00
Sander
1a4ba51dec SSDP logging and interval_timer (#1734)
* SSDP: also log the User-Agent

* SSDP: also log the User-Agent

* SSDP: also log the User-Agent

* SSDP: ssdp_broadcast_interval in seconds, configurable via GUI -> Specials

* SSDP: ssdp_broadcast_interval as optional parater to the SSDP class

* SSDP: less is more: start_ssdp(*args, **kwargs):

* SSDP: less is more: start_ssdp(*args, **kwargs):

* SSDP: handle if no User-Agent specified

* SSDP: small change

Co-authored-by: Safihre <safihre@sabnzbd.org>
2021-01-02 16:49:55 +01:00
Safihre
826fb3f110 Release directly from GitHub Actions 2021-01-01 20:59:44 +01:00
Safihre
9f42eb3ad7 Update building workflow to support 32bit Windows and Notarization 2021-01-01 20:59:44 +01:00
Safihre
fbbc333221 Increase Maximum number of connections per server to 1000
Closes #1732
Cause, why not.
2021-01-01 14:57:03 +01:00
SABnzbd Automation
e62792b0da Update translatable texts 2021-01-01 11:51:24 +00:00
Safihre
dbc435c4e1 Update UnRar to 6.0.0 and MultiPar to 1.3.1.3 2021-01-01 12:29:38 +01:00
puzzledsab
ada2f2498e Don't crash if nzf is gone (#1731)
* Don't crash if nzf is gone

* Catch AttributeError and add comment
2020-12-31 17:24:25 +01:00
SABnzbd Automation
c736446872 Update translatable texts 2020-12-31 15:38:07 +00:00
puzzledsab
a1e7d5b36f Pause on full Complete Download Folder and regularly check if there is enough space to resume (#1724)
* Add pause on full Complete Download Folder and optional time limit for full disk pause

* Use nzo.bytes_tried in completed dir disk full check

* It's so black or white

* Don't pause on full download disk until it's necessary and don't apply timed pause to temporary disk

* Simpler ifs

* Compare with downloaded bytes, not remaining

* Fix comparison

* Increase pause check to 90% finished

* Subtract par2 files and increase limit to 95%

* Use checkbox for automatic resume and task scheduler for checking free space

* Make canceling resume task a separate method

* Black

* Replace some logging.debug with logging.info

* Remove sabnzbd.directunpacker.abort_all

* Rewrite explain-fulldisk_autoresume explanation

* Ignore complete_free if 0

* Style changes

* Remove scheduled task if the downloading is continued

* 'Every few minutes'

* Fix unchecking of fulldisk_autoresume in config page and don't do autoresume task if it has been disabled

* Black is rather picky

Co-authored-by: Safihre <safihre@sabnzbd.org>
2020-12-31 16:37:01 +01:00
SABnzbd Automation
24fd5a5e0b Update translatable texts 2020-12-31 14:24:54 +00:00
Sander
bc4557432a Test download 10GB (#1730)
* Test download 10GB

* "1000MB" renamed to "1 GB" in the GUI
2020-12-31 15:24:13 +01:00
Tim Gates
5df4a76367 docs: fix simple typo, sturct -> struct
There is a small typo in sabnzbd/utils/rarfile.py.

Should read `struct` rather than `sturct`.
2020-12-28 23:22:01 +01:00
Safihre
48d566fd98 Form element for Add NZB window was not closed breaking other windows
https://forums.sabnzbd.org/viewtopic.php?f=13&t=25121
2020-12-28 21:42:51 +01:00
Safihre
f9cd328b3a Update encryption check to handle partially assembled files
https://forums.sabnzbd.org/viewtopic.php?f=3&p=123147
In SABnzbd 3.x we write incomplete files to the disk instead of waiting for a file to be 100% complete.
So the password check fails because it will check part001 and automatically continue to part002. Instead of crashing with a "can't find part002" (this we expect) it finds a incomplete part002 and crashes with a different error that we don't catch.
Alternatively it can crash due to starting to check on part002 while part001 isn't there yet. This used to work, but broke now.
2020-12-28 17:35:40 +01:00
SABnzbd Automation
a24c13d8ce Update translatable texts 2020-12-26 12:43:26 +00:00
jcfp
8b5494d0a6 add selecting by nzo_id(s) for api queue and history output (#1718)
* add select by nzo_id to history api

* add select by nzo_id to queue api

* add tests for selecting by nzo_ids

* Do not run codesign step on pull requests

Co-authored-by: Safihre <safihre@sabnzbd.org>
2020-12-26 13:42:42 +01:00
Safihre
7f0e8f5591 Correctly keep track of article statistics 2020-12-26 13:20:40 +01:00
SABnzbd Automation
14f4e09676 Update translatable texts 2020-12-25 22:31:25 +00:00
puzzledsab
c5aa61e191 Use x- instead of X- with lowered line in decoder 2020-12-25 23:30:43 +01:00
SABnzbd Automation
c50efd7efd Update translatable texts 2020-12-25 00:32:40 +00:00
Safihre
c23c239ce9 Show article statistics in Config Servers
Closes #1226
2020-12-25 01:31:51 +01:00
SABnzbd Automation
5a1b92f060 Update translatable texts 2020-12-24 14:09:23 +00:00
Safihre
b7375b5a8e Keep track of article statistics for each server
Basis for #1226, still need to work on displaying the information.
2020-12-24 15:08:38 +01:00
Safihre
c42b5b2bb6 Prevent flash of unstled content of the Add NZB button
Before Knockout is active, the number of columns is 6 because of the foreach-loop.
2020-12-24 10:26:33 +01:00
Safihre
809783cd53 Build binary release for each commit and pull request (#1708)
* Build binary release for each commit and pull request

* Codesign macOS release
2020-12-24 09:57:21 +01:00
SABnzbd Automation
b5c5a18216 Update translatable texts 2020-12-23 22:14:02 +00:00
Safihre
49b4dca12c Improvements to the "Add NZB" modal window
Closes #1560
2020-12-23 23:13:18 +01:00
Safihre
37b03e6e37 RSS error messages with HTML characters would not be displayed 2020-12-23 20:35:59 +01:00
Safihre
70b92b5961 Make sure RSS titles with HTML characters can be modified 2020-12-23 20:23:04 +01:00
Safihre
f31da2a8e6 Make it possible to edit RSS Titles
Closes #1706
2020-12-23 20:22:36 +01:00
SABnzbd Automation
c68ff15f38 Update translatable texts 2020-12-23 16:50:40 +00:00
Safihre
bd1fe2b1cd Notify through Notifications if new version is available 2020-12-23 17:49:42 +01:00
Safihre
a1f3914054 Correct notification category for failed URL fetches 2020-12-23 17:39:15 +01:00
SABnzbd Automation
2d9dc48076 Update translatable texts 2020-12-23 10:43:18 +00:00
puzzledsab
c80c120153 Add multiple extra queue/history columns and option for unlimited width (#1714)
* Add option for unlimited width

* Add skintext

* Select multiple extra columns

* Fix some markup

* Suggested changes

* Retrigger tests

* Make it possible to select multiple history columns as well

* Do not show extra columns on <1200px

* Fix Add NZB-row

Co-authored-by: Safihre <safihre@sabnzbd.org>
2020-12-23 11:42:41 +01:00
Safihre
b75c23772e Remove unused function is_obfuscated_filename 2020-12-23 11:38:50 +01:00
SABnzbd Automation
d9a94bc59c Update translatable texts 2020-12-23 10:37:58 +00:00
Safihre
e446ab4762 Log which filename we are checking for obfuscation 2020-12-23 11:36:57 +01:00
SABnzbd Automation
2a656d437e Update translatable texts 2020-12-22 21:57:44 +00:00
Sander
7473cd2264 Warning for enabling HTTPS (#1715)
* GUI show warning for enabling HTTPS

* GUI show warning for enabling HTTPS. Make black happy

* GUI show warning for enabling HTTPS: warning in separate string

* GUI show warning for enabling HTTPS: Warning embedded

* GUI show warning for enabling HTTPS: proper class stuff
2020-12-22 22:57:05 +01:00
Safihre
9fb1c0fbbb Remove Glitter fade-on-delete
Closes #1710
2020-12-22 17:53:13 +01:00
SABnzbd Automation
4ae0e75dc9 Update translatable texts 2020-12-19 23:26:34 +00:00
Safihre
2632ce537a Refactor of the osxmenu functions
Closes #1683
2020-12-20 00:25:29 +01:00
SABnzbd Automation
4d79261851 Update translatable texts 2020-12-19 12:00:57 +00:00
puzzledsab
fadae5e33e Show per-server speed (issue #1150) (#1704)
* Show current server speed on server config page

* Show server bps on Status and interface page

* Make black happy

* Remove server bps from config page

* Small optimization tweak

Co-authored-by: Safihre <safihre@sabnzbd.org>
2020-12-19 12:59:52 +01:00
puzzledsab
7f702b7025 Make sleep more fine grained and add short sleep when no processing is done (#1697)
* Make sleep more fine grained and add short sleep when no processing is required

* Fix black complaint

* Only calculate sleep time when needed

* Remove empty line

* Add sleep_time variable to Downloader

* Make sure it sleeps in decoder and BPSMeter, even when sleep_time is 0

* Longer sleep for decoder and bandwidth limit delays

* Remove BPSMeter get_stable_speed as it is no longer used

* retrigger checks

* Updates based on feedback

* No more minimum value

* 0.01 it is

Co-authored-by: Safihre <safihre@sabnzbd.org>
2020-12-18 20:01:51 +01:00
SABnzbd Automation
db255a8b7e Update translatable texts 2020-12-15 12:57:36 +00:00
Safihre
47b8d1de39 Don't activate Windows notifications when running as service
Closes #1705
2020-12-15 13:56:33 +01:00
Safihre
01ea1d2910 Keep original priority of duplicate jobs
Closes #1702
2020-12-13 11:46:27 +01:00
193 changed files with 7174 additions and 3412 deletions

View File

View File

@@ -14,6 +14,7 @@ jobs:
sabnzbd
scripts
tools
builder
tests
--line-length=120
--target-version=py36

114
.github/workflows/build_release.yml vendored Normal file
View File

@@ -0,0 +1,114 @@
name: Build binaries and source distribution
on: [push, pull_request]
jobs:
build_windows:
name: Build Windows binary
runs-on: windows-latest
env:
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
steps:
- uses: actions/checkout@v2
- name: Set up Python 3.9 (64bit)
uses: actions/setup-python@v2
with:
python-version: 3.9
architecture: x64
- name: Install Python dependencies (64bit)
run: |
python --version
pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
pip install --upgrade -r builder/requirements.txt
- name: Build source distribution
run: python builder/package.py source
- name: Upload source distribution
uses: actions/upload-artifact@v2
with:
path: "*-src.tar.gz"
name: Source distribution
- name: Build Windows standalone binary and installer (64bit)
run: python builder/package.py installer
- name: Upload Windows standalone binary (64bit)
uses: actions/upload-artifact@v2
with:
path: "*-win64-bin.zip"
name: Windows Windows standalone binary (64bit)
- name: Upload Windows installer (64bit)
uses: actions/upload-artifact@v2
with:
path: "*-win-setup.exe"
name: Windows installer
- name: Set up Python 3.8 (32bit and legacy)
uses: actions/setup-python@v2
with:
python-version: 3.8
architecture: x86
- name: Install Python dependencies (32bit and legacy)
run: |
python --version
pip install --upgrade pip wheel
pip install --upgrade -r requirements.txt
pip install --upgrade -r builder/requirements.txt
- name: Build Windows standalone binary (32bit and legacy)
run: python builder/package.py binary
- name: Upload Windows standalone binary (32bit and legacy)
uses: actions/upload-artifact@v2
with:
path: "*-win32-bin.zip"
name: Windows Windows standalone binary (32bit and legacy)
- name: Prepare official release
if: env.AUTOMATION_GITHUB_TOKEN && !startsWith(github.ref, 'refs/tags/')
run: python builder/package.py release
build_macos:
name: Build macOS binary
runs-on: macos-latest
env:
SIGNING_AUTH: ${{ secrets.SIGNING_AUTH }}
NOTARIZATION_USER: ${{ secrets.NOTARIZATION_USER }}
NOTARIZATION_PASS: ${{ secrets.NOTARIZATION_PASS }}
AUTOMATION_GITHUB_TOKEN: ${{ secrets.AUTOMATION_GITHUB_TOKEN }}
# We need the official Python, because the GA ones only support newer macOS versions
# The deployment target is picked up by the Python build tools automatically
# If updated, make sure to also set LSMinimumSystemVersion in SABnzbd.spec
PYTHON_VERSION: 3.9.1
MACOSX_DEPLOYMENT_TARGET: 10.9
steps:
- uses: actions/checkout@v2
- name: Cache Python download
id: cache-python-download
uses: actions/cache@v2
with:
path: ~/python.pkg
key: macOS-Python-${{ env.PYTHON_VERSION }}
- name: Get Python
if: steps.cache-python-download.outputs.cache-hit != 'true'
run: curl https://www.python.org/ftp/python/${PYTHON_VERSION}/python-${PYTHON_VERSION}-macosx10.9.pkg -o ~/python.pkg
- name: Install Python
run: sudo installer -pkg ~/python.pkg -target /
- name: Install Python dependencies
run: |
python3 --version
pip3 install --upgrade pip wheel
pip3 install --upgrade -r requirements.txt
pip3 install --upgrade -r builder/requirements.txt
- name: Import macOS codesign certificates
uses: apple-actions/import-codesign-certs@v1
if: env.SIGNING_AUTH
with:
p12-file-base64: ${{ secrets.CERTIFICATES_P12 }}
p12-password: ${{ secrets.CERTIFICATES_P12_PASSWORD }}
- name: Build macOS binary
run: |
python3 builder/package.py app
python3 builder/make_dmg.py
- name: Upload macOS binary
uses: actions/upload-artifact@v2
with:
path: "*-osx.dmg"
name: macOS binary (not notarized)
- name: Prepare official release
if: env.AUTOMATION_GITHUB_TOKEN && !startsWith(github.ref, 'refs/tags/')
run: python3 builder/package.py release

View File

@@ -4,16 +4,18 @@ on: [push, pull_request]
jobs:
test:
name: Test ${{ matrix.os }} - Python ${{ matrix.python-version }}
name: Test ${{ matrix.name }} - Python ${{ matrix.python-version }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
python-version: [3.6, 3.7, 3.8, 3.9]
os: [ubuntu-20.04]
include:
- os: macos-latest
- name: macOS
os: macos-latest
python-version: 3.9
- os: windows-latest
- name: Windows
os: windows-latest
python-version: 3.9
steps:

View File

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

View File

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

View File

@@ -14,13 +14,13 @@
For these the server blocking method is not very favourable.
There is an INI-only option that will limit blocks to 1 minute.
no_penalties = 1
See: https://sabnzbd.org/wiki/configuration/3.1/special
See: https://sabnzbd.org/wiki/configuration/3.2/special
- Some third-party utilties try to probe SABnzbd API in such a way that you will
often see warnings about unauthenticated access.
If you are sure these probes are harmless, you can suppress the warnings by
setting the option "api_warnings" to 0.
See: https://sabnzbd.org/wiki/configuration/3.1/special
See: https://sabnzbd.org/wiki/configuration/3.2/special
- On macOS you may encounter downloaded files with foreign characters.
The par2 repair may fail when the files were created on a Windows system.

View File

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

View File

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

View File

@@ -1,11 +1,11 @@
SABnzbd - The automated Usenet download tool
============================================
[![Travis CI](https://travis-ci.org/sabnzbd/sabnzbd.svg?branch=develop)](https://travis-ci.org/sabnzbd/sabnzbd)
[![AppVeryor](https://ci.appveyor.com/api/projects/status/github/sabnzbd/sabnzbd?svg=true&branch=develop)](https://ci.appveyor.com/project/Safihre/sabnzbd)
[![Snap Status](https://build.snapcraft.io/badge/sabnzbd/sabnzbd.svg)](https://snapcraft.io/sabnzbd)
![CI tests](https://github.com/sabnzbd/sabnzbd/workflows/CI%20Tests/badge.svg)
![Build binaries](https://github.com/sabnzbd/sabnzbd/workflows/Build%20binaries%20and%20source%20distribution/badge.svg)
[![License](https://img.shields.io/badge/license-GPL%20v2-blue.svg)](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html)
SABnzbd is an Open Source Binary Newsreader written in Python.
It's totally free, easy to use, and works practically everywhere.

View File

@@ -1,38 +1,73 @@
Release Notes - SABnzbd 3.1.0 Release Candidate 1
Release Notes - SABnzbd 3.2.0 Release Candidate 2
=========================================================
## Changes and bugfixes since 3.1.0 Beta 2
- Deobfuscate final filenames can now be used when job folders are disabled.
- Deobfuscate final filenames will ignore blu-ray disc files.
- Clear error if Complete Folder is set as a subfolder of the Temporary Folder.
- Filtering of history by category would not filter jobs in post-processing.
## Changes and bugfixes since 3.2.0 RC 1
- Added `Auto` option for Glitter that enables `Night` style
based on system settings. Default for new installations.
- Right-to-Left support (Hebrew) for Glitter and Config.
- SSDP and Bonjour could be broadcasted on localhost settings.
- Failed server connections would be retried too slowly.
## Changes since 3.0.2
- Added option to automatically deobfuscate final filenames: after unpacking,
detect and rename obfuscated or meaningless filenames to the job name,
similar to the Deobfuscate.py post-processing script.
- Switched to Transifex as our translations platform:
Help us translate SABnzbd in your language! Add untranslated texts or
improved existing translations here: https://sabnzbd.org/wiki/translate
- Redesigned job availability-check to be more efficient and reliable.
- Skip repair on Retry if all sets were previously successfully verified.
- Passwords included in the filename no longer have to be at the end.
- Restore limit on length of foldernames (`max_foldername_length`).
- Added password input box on the Add NZB screen.
- Show warning that Pyton 3.5 support will be dropped after 3.1.0.
- Windows/macOS: update UnRar to 5.91 and MultiPar to 1.3.1.0.
- Windows: retry `Access Denied` when renaming files on Windows.
## Changes since 3.1.1
- Python 3.6 is the minimum required version.
- The Windows installer can only be used on 64bit Windows 8.1 and
above. For 32bit systems or older Windows versions the
standalone 32bit legacy version can be used.
- Post-processing can be aborted at any stage, including scripts.
- Improvements in the downloader to reduce CPU-load.
- Increased garbage collection rate to reduce memory usage.
- Custom date ranges for server graphs can be selected.
- Keep track of article fetching success-rate of each server.
- Added option to add download quota warning for each server.
- Added option to add expiration waring for each server.
- Added `Minimum Free Space for Completed Download Folder` option.
- Added option to `Auto resume` for both `Minimum Free Space` settings.
- Multiple additional Queue and History columns can be added.
- Added option to always use full screen width.
- Additional interface settings can be stored server-side.
- Using SSDP, SABnzbd instances are now listed in `Network` on Windows.
- Improvements to parsing of job name and filenames listed in the NZB.
- RSS titles can be edited.
- Prospective par2 will add blocks from all sets in a job.
- Sanitize all filenames to a maximum of 245 characters.
- Show commit hash when running from `git` sources.
- Notify through Notifications if new version is available.
- Program shutdown time reduced to almost instant.
- Added `10 GB` test download.
- IPv6 is no longer preferred in HappyEyeballs address selection.
- API-calls `queue` and `history` can now be filtered by `nzo_id`.
- Windows: `Temporary Download` job folders no longer have a maximum length.
- Windows/macOS: Update UnRar to 6.0.0 and MultiPar to 1.3.1.3.
## Bugfixes since 3.0.2
- Assembler crashes could occur due to race condition in `ArticleCache`.
- On HTTP-redirects the scheme/hostname/port were ignored when behind a proxy.
- Strip slash of the end of `url_base` as it could break other code.
- Unpacking with a relative folder set for a category could fail.
- Paused priority of pre-queue script was ignored.
- Duplicate Detection did not check filenames in History.
- Downloaded bytes could show as exceeding the total bytes of a job.
- Windows: non-Latin languages were displayed incorrectly in the installer.
- Windows: could fail to create folders on some network shares.
## Bugfixes since 3.1.1
- Memory could leak after jobs were removed from the queue.
- The active browser URL is used during the wizard.
- Repairing or Retrying jobs could result in a crash.
- API-call `reset_quota` returned nothing.
- New categories were not always forced to lowercase.
- Broken downloads could result in crash during RAR-renaming
- Improved obfuscation detection for `Deobfuscate final filenames`.
- Keep original priority of duplicate jobs.
- Increase Maximum number of connections per server to `1000`.
- Update encryption check to handle partially assembled files.
- Don't activate Windows notifications when running as service.
- Command line option `--console` did not work.
- Crash in API-call to delete history items for non-existing `nzo_id`.
- Prevent repetition of unwanted extension warnings.
- Correct notification category for failed URL fetches.
- Improvements to the `Add NZB` modal window.
- Sort script drop-down list alphabetically.
- Default Bandwidth percentage was not set to `100`.
- Direct Unpack stability fixes.
- macOS: Program shutdown could fail.
- macOS: Tray text was misaligned on macOS 11 (Big Sur).
- Windows: Improved handling of some MultiPar output.
- Windows: Program restart failed.
## Upgrade notices
- The download statistics file `totals10.sab` is updated in this
version. If you downgrade to 3.1.x or lower, detailed download
statistics will be lost.
## Known problems and solutions
- Read the file "ISSUES.txt"
@@ -44,4 +79,4 @@ Release Notes - SABnzbd 3.1.0 Release Candidate 1
that automatically verify, repair, extract and clean up posts downloaded
from Usenet.
(c) Copyright 2007-2020 by "The SABnzbd-team" \<team@sabnzbd.org\>
(c) Copyright 2007-2021 by "The SABnzbd-team" \<team@sabnzbd.org\>

View File

@@ -1,5 +1,5 @@
#!/usr/bin/python3 -OO
# Copyright 2007-2020 The SABnzbd-Team <team@sabnzbd.org>
# Copyright 2007-2021 The SABnzbd-Team <team@sabnzbd.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
@@ -34,6 +34,7 @@ import subprocess
import ssl
import time
import re
import gc
from typing import List, Dict, Any
try:
@@ -67,7 +68,9 @@ from sabnzbd.misc import (
get_serv_parms,
get_from_url,
upload_file_to_sabnzbd,
probablyipv4,
is_ipv4_addr,
is_localhost,
is_lan_addr,
)
from sabnzbd.filesystem import get_ext, real_path, long_path, globber_full, remove_file
from sabnzbd.panic import panic_tmpl, panic_port, panic_host, panic, launch_a_browser
@@ -194,6 +197,7 @@ def print_help():
print(" --no-login Start with username and password reset")
print(" --log-all Log all article handling (for developers)")
print(" --disable-file-log Logging is only written to console")
print(" --console Force logging to console")
print(" --new Run a new instance of SABnzbd")
print()
print("NZB (or related) file:")
@@ -207,7 +211,7 @@ def print_version():
"""
%s-%s
Copyright (C) 2007-2020 The SABnzbd-Team <team@sabnzbd.org>
Copyright (C) 2007-2021 The SABnzbd-Team <team@sabnzbd.org>
SABnzbd comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. It is licensed under the
@@ -531,7 +535,7 @@ def get_webhost(cherryhost, cherryport, https_port):
# Valid user defined name?
info = socket.getaddrinfo(cherryhost, None)
except socket.error:
if cherryhost not in LOCALHOSTS:
if not is_localhost(cherryhost):
cherryhost = "0.0.0.0"
try:
info = socket.getaddrinfo(localhost, None)
@@ -598,7 +602,7 @@ def get_webhost(cherryhost, cherryport, https_port):
except socket.error:
cherryhost = cherryhost.strip("[]")
if ipv6 and ipv4 and browserhost not in LOCALHOSTS:
if ipv6 and ipv4 and not is_localhost(browserhost):
sabnzbd.AMBI_LOCALHOST = True
logging.info("IPV6 has priority on this system, potential Firefox issue")
@@ -844,6 +848,7 @@ def main():
cherrypylogging = None
clean_up = False
logging_level = None
console_logging = False
no_file_log = False
web_dir = None
vista_plus = False
@@ -899,6 +904,8 @@ def main():
if logging_level < -1 or logging_level > 2:
print_help()
exit_sab(1)
elif opt == "--console":
console_logging = True
elif opt in ("-v", "--version"):
print_version()
exit_sab(0)
@@ -940,8 +947,8 @@ def main():
sabnzbd.DIR_LANGUAGE = real_path(sabnzbd.DIR_PROG, DEF_LANGUAGE)
org_dir = os.getcwd()
# Need console logging for SABnzbd.py and SABnzbd-console.exe
console_logging = (not hasattr(sys, "frozen")) or (sabnzbd.MY_NAME.lower().find("-console") > 0)
# Need console logging if requested, for SABnzbd.py and SABnzbd-console.exe
console_logging = console_logging or sabnzbd.MY_NAME.lower().find("-console") > 0 or not hasattr(sys, "frozen")
console_logging = console_logging and not sabnzbd.DAEMON
LOGLEVELS = (logging.FATAL, logging.WARNING, logging.INFO, logging.DEBUG)
@@ -1251,7 +1258,7 @@ def main():
sabnzbd.cfg.web_color.set(sabnzbd.WEB_COLOR)
# Handle the several tray icons
if sabnzbd.cfg.win_menu() and not sabnzbd.DAEMON:
if sabnzbd.cfg.win_menu() and not sabnzbd.DAEMON and not sabnzbd.WIN_SERVICE:
if sabnzbd.WIN32:
import sabnzbd.sabtray
@@ -1484,38 +1491,45 @@ def main():
check_latest_version()
autorestarted = False
# bonjour/zeroconf needs an ip. Lets try to find it.
external_host = localipv4() # IPv4 address of the LAN interface. This is the normal use case
if not external_host:
# None, so no network / default route, so let's set to ...
external_host = "127.0.0.1"
elif probablyipv4(cherryhost) and cherryhost not in LOCALHOSTS + ("0.0.0.0", "::"):
# a hard-configured cherryhost other than the usual, so let's take that (good or wrong)
external_host = cherryhost
logging.debug("bonjour/zeroconf/SSDP using host: %s", external_host)
sabnzbd.zconfig.set_bonjour(external_host, cherryport)
# Start SSDP if SABnzbd is running exposed
if cherryhost not in LOCALHOSTS:
# Set URL for browser for external hosts
if enable_https:
ssdp_url = "https://%s:%s%s" % (external_host, cherryport, sabnzbd.cfg.url_base())
# Start SSDP and Bonjour if SABnzbd isn't listening on localhost only
if sabnzbd.cfg.enable_broadcast() and not is_localhost(cherryhost):
# Try to find a LAN IP address for SSDP/Bonjour
if is_lan_addr(cherryhost):
# A specific listening address was configured, use that
external_host = cherryhost
else:
ssdp_url = "http://%s:%s%s" % (external_host, cherryport, sabnzbd.cfg.url_base())
ssdp.start_ssdp(
external_host,
"SABnzbd",
ssdp_url,
"SABnzbd %s" % sabnzbd.__version__,
"SABnzbd Team",
"https://sabnzbd.org/",
"SABnzbd %s" % sabnzbd.__version__,
)
# Fall back to the IPv4 address of the LAN interface
external_host = localipv4()
logging.debug("Using %s as host address for Bonjour and SSDP", external_host)
if is_lan_addr(external_host):
sabnzbd.zconfig.set_bonjour(external_host, cherryport)
# Set URL for browser for external hosts
ssdp_url = "%s://%s:%s%s" % (
("https" if enable_https else "http"),
external_host,
cherryport,
sabnzbd.cfg.url_base(),
)
ssdp.start_ssdp(
external_host,
"SABnzbd",
ssdp_url,
"SABnzbd %s" % sabnzbd.__version__,
"SABnzbd Team",
"https://sabnzbd.org/",
"SABnzbd %s" % sabnzbd.__version__,
ssdp_broadcast_interval=sabnzbd.cfg.ssdp_broadcast_interval(),
)
# Have to keep this running, otherwise logging will terminate
timer = 0
while not sabnzbd.SABSTOP:
time.sleep(3)
# Wait to be awoken or every 3 seconds
with sabnzbd.SABSTOP_CONDITION:
sabnzbd.SABSTOP_CONDITION.wait(3)
timer += 1
# Check for loglevel changes
if LOG_FLAG:
@@ -1525,9 +1539,15 @@ def main():
if console_logging:
console.setLevel(level)
# 30 sec polling tasks
if timer > 9:
# 300 sec polling tasks
if not timer % 100:
if sabnzbd.LOG_ALL:
logging.debug("Triggering Python garbage collection")
gc.collect()
timer = 0
# 30 sec polling tasks
if not timer % 10:
# Keep OS awake (if needed)
sabnzbd.keep_awake()
# Restart scheduler (if needed)
@@ -1538,48 +1558,42 @@ def main():
if not sabnzbd.check_all_tasks():
autorestarted = True
sabnzbd.TRIGGER_RESTART = True
else:
timer += 1
# 3 sec polling tasks
# Check for auto-restart request
# Or special restart cases like Mac and WindowsService
if sabnzbd.TRIGGER_RESTART:
logging.info("Performing triggered restart")
# Shutdown
sabnzbd.shutdown_program()
# Add arguments and make sure we are in the right directory
if sabnzbd.Downloader.paused:
sabnzbd.RESTART_ARGS.append("-p")
if autorestarted:
sabnzbd.RESTART_ARGS.append("--autorestarted")
sys.argv = sabnzbd.RESTART_ARGS
os.chdir(org_dir)
# If macOS frozen restart of app instead of embedded python
if hasattr(sys, "frozen") and sabnzbd.DARWIN:
# [[NSProcessInfo processInfo] processIdentifier]]
# logging.info("%s" % (NSProcessInfo.processInfo().processIdentifier()))
my_pid = os.getpid()
my_name = sabnzbd.MY_FULLNAME.replace("/Contents/MacOS/SABnzbd", "")
my_args = " ".join(sys.argv[1:])
cmd = 'kill -9 %s && open "%s" --args %s' % (my_pid, my_name, my_args)
logging.info("Launching: %s", cmd)
os.system(cmd)
elif sabnzbd.WIN_SERVICE:
# Use external service handler to do the restart
# Wait 5 seconds to clean up
subprocess.Popen("timeout 5 & sc start SABnzbd", shell=True)
# Binaries require special restart
if hasattr(sys, "frozen"):
if sabnzbd.DARWIN:
# On macOS restart of app instead of embedded python
my_name = sabnzbd.MY_FULLNAME.replace("/Contents/MacOS/SABnzbd", "")
my_args = " ".join(sys.argv[1:])
cmd = 'kill -9 %s && open "%s" --args %s' % (os.getpid(), my_name, my_args)
logging.info("Launching: %s", cmd)
os.system(cmd)
elif sabnzbd.WIN_SERVICE:
# Use external service handler to do the restart
# Wait 5 seconds to clean up
subprocess.Popen("timeout 5 & sc start SABnzbd", shell=True)
elif sabnzbd.WIN32:
# Just a simple restart of the exe
os.execv(sys.executable, ['"%s"' % arg for arg in sys.argv])
else:
# CherryPy has special logic to include interpreter options such as "-OO"
cherrypy.engine._do_execv()
config.save_config()
if sabnzbd.WINTRAY:
sabnzbd.WINTRAY.terminate = True
if sabnzbd.WIN32:
del_connection_info()
# Send our final goodbyes!
notifier.send_notification("SABnzbd", T("SABnzbd shutdown finished"), "startup")
logging.info("Leaving SABnzbd")
@@ -1724,7 +1738,6 @@ if __name__ == "__main__":
main()
elif sabnzbd.DARWIN and sabnzbd.FOUNDATION:
# macOS binary runner
from threading import Thread
from PyObjCTools import AppHelper
@@ -1733,7 +1746,7 @@ if __name__ == "__main__":
# Need to run the main application in separate thread because the eventLoop
# has to be in the main thread. The eventLoop is required for the menu.
# This code is made with trial-and-error, please improve!
# This code is made with trial-and-error, please feel free to improve!
class startApp(Thread):
def run(self):
main()

184
builder/SABnzbd.spec Normal file
View File

@@ -0,0 +1,184 @@
# -*- mode: python -*-
import re
import sys
import pkginfo
from PyInstaller.building.api import EXE, COLLECT, PYZ
from PyInstaller.building.build_main import Analysis
from PyInstaller.building.osx import BUNDLE
# Add extra files in the PyInstaller-spec
extra_pyinstaller_files = []
# Also modify these in "package.py"!
extra_files = [
"README.txt",
"INSTALL.txt",
"LICENSE.txt",
"GPL2.txt",
"GPL3.txt",
"COPYRIGHT.txt",
"ISSUES.txt",
"PKG-INFO",
]
extra_folders = [
"scripts/",
"licenses/",
"locale/",
"email/",
"interfaces/Plush/",
"interfaces/Glitter/",
"interfaces/wizard/",
"interfaces/Config/",
"scripts/",
"icons/",
]
# Get the version
RELEASE_VERSION = pkginfo.Develop(".").version
# Add hidden imports
extra_hiddenimports = ["Cheetah.DummyTransaction", "cheroot.ssl.builtin", "certifi"]
# Add platform specific stuff
if sys.platform == "darwin":
extra_hiddenimports.extend(["pyobjc", "objc", "PyObjCTools"])
# macOS folders
extra_folders += ["osx/par2/", "osx/unrar/", "osx/7zip/"]
# Add NZB-icon file
extra_pyinstaller_files.append(("builder/osx/image/nzbfile.icns", "."))
# Version information is set differently on macOS
version_info = None
else:
# Build would fail on non-Windows
from PyInstaller.utils.win32.versioninfo import (
VSVersionInfo,
FixedFileInfo,
StringFileInfo,
StringTable,
StringStruct,
VarFileInfo,
VarStruct,
)
# Windows
extra_hiddenimports.append("win32timezone")
extra_folders += ["win/multipar/", "win/unrar/", "win/7zip/"]
# Parse the version info
version_regexed = re.search(r"(\d+)\.(\d+)\.(\d+)([a-zA-Z]*)(\d*)", RELEASE_VERSION)
version_tuple = (int(version_regexed.group(1)), int(version_regexed.group(2)), int(version_regexed.group(3)), 0)
# Detailed instructions are in the PyInstaller documentation
# We don't include the alpha/beta/rc in the counters
version_info = VSVersionInfo(
ffi=FixedFileInfo(
filevers=version_tuple,
prodvers=version_tuple,
mask=0x3F,
flags=0x0,
OS=0x40004,
fileType=0x1,
subtype=0x0,
date=(0, 0),
),
kids=[
StringFileInfo(
[
StringTable(
"040904B0",
[
StringStruct("Comments", f"SABnzbd {RELEASE_VERSION}"),
StringStruct("CompanyName", "The SABnzbd-Team"),
StringStruct("FileDescription", f"SABnzbd {RELEASE_VERSION}"),
StringStruct("FileVersion", RELEASE_VERSION),
StringStruct("LegalCopyright", "The SABnzbd-Team"),
StringStruct("ProductName", f"SABnzbd {RELEASE_VERSION}"),
StringStruct("ProductVersion", RELEASE_VERSION),
],
)
]
),
VarFileInfo([VarStruct("Translation", [1033, 1200])]),
],
)
# Process the extra-files and folders
for file_item in extra_files:
extra_pyinstaller_files.append((file_item, "."))
for folder_item in extra_folders:
extra_pyinstaller_files.append((folder_item, folder_item))
pyi_analysis = Analysis(
["SABnzbd.py"],
datas=extra_pyinstaller_files,
hiddenimports=extra_hiddenimports,
excludes=["FixTk", "tcl", "tk", "_tkinter", "tkinter", "Tkinter"],
)
pyz = PYZ(pyi_analysis.pure, pyi_analysis.zipped_data)
exe = EXE(
pyz,
pyi_analysis.scripts,
[],
exclude_binaries=True,
name="SABnzbd",
upx=True,
console=False,
append_pkg=False,
icon="icons/sabnzbd.ico",
version=version_info,
)
coll = COLLECT(exe, pyi_analysis.binaries, pyi_analysis.zipfiles, pyi_analysis.datas, name="SABnzbd")
# We need to run again for the console-app
if sys.platform == "win32":
# Enable console=True for this one
console_exe = EXE(
pyz,
pyi_analysis.scripts,
[],
exclude_binaries=True,
name="SABnzbd-console",
upx=True,
append_pkg=False,
icon="icons/sabnzbd.ico",
version=version_info,
)
console_coll = COLLECT(
console_exe,
pyi_analysis.binaries,
pyi_analysis.zipfiles,
pyi_analysis.datas,
upx=True,
name="SABnzbd-console",
)
# Build the APP on macOS
if sys.platform == "darwin":
info_plist = {
"NSUIElement": 1,
"NSPrincipalClass": "NSApplication",
"CFBundleShortVersionString": RELEASE_VERSION,
"NSHumanReadableCopyright": "The SABnzbd-Team",
"CFBundleIdentifier": "org.sabnzbd.sabnzbd",
"CFBundleDocumentTypes": [
{
"CFBundleTypeExtensions": ["nzb"],
"CFBundleTypeIconFile": "nzbfile.icns",
"CFBundleTypeMIMETypes": ["text/nzb"],
"CFBundleTypeName": "NZB File",
"CFBundleTypeRole": "Viewer",
"LSTypeIsPackage": 0,
"NSPersistentStoreTypeKey": "Binary",
}
],
"LSMinimumSystemVersion": "10.9",
"LSEnvironment": {"LANG": "en_US.UTF-8", "LC_ALL": "en_US.UTF-8"},
}
app = BUNDLE(coll, name="SABnzbd.app", icon="builder/osx/image/sabnzbdplus.icns", info_plist=info_plist)

206
builder/make_dmg.py Normal file
View File

@@ -0,0 +1,206 @@
#!/usr/bin/python3 -OO
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import os
import pkginfo
# We need to call dmgbuild from command-line, so here we can setup how
if __name__ == "__main__":
# Check for DMGBuild
try:
import dmgbuild
except:
print("Requires dmgbuild-module, use pip install dmgbuild")
exit()
# Make sure we are in the src folder
if not os.path.exists("builder"):
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
# Check if signing is possible
authority = os.environ.get("SIGNING_AUTH")
# Extract version info and set DMG path
# Create sub-folder to upload later
release = pkginfo.Develop(".").version
prod = "SABnzbd-" + release
fileDmg = prod + "-osx.dmg"
# Path to app file
apppath = "dist/SABnzbd.app"
# Copy Readme
readmepath = os.path.join(apppath, "Contents/Resources/README.txt")
# Path to background and the icon
backgroundpath = "builder/osx/image/sabnzbd_new_bg.png"
iconpath = "builder/osx/image/sabnzbdplus.icns"
# Make DMG
print("Building DMG")
dmgbuild.build_dmg(
filename=fileDmg,
volume_name=prod,
settings_file="builder/make_dmg.py",
defines={"app": apppath, "readme": readmepath, "background": backgroundpath, "iconpath": iconpath},
)
# Resign APP
if authority:
print("Siging DMG")
os.system('codesign --deep -f -i "org.sabnzbd.SABnzbd" -s "%s" "%s"' % (authority, fileDmg))
print("Signed!")
else:
print("Signing skipped, missing SIGNING_AUTH.")
exit()
### START OF DMGBUILD SETTINGS
### COPIED AND MODIFIED FROM THE EXAMPLE ONLINE
application = defines.get("app", "AppName.app")
readme = defines.get("readme", "ReadMe.rtf")
appname = os.path.basename(application)
# .. Basics ....................................................................
# Volume format (see hdiutil create -help)
format = defines.get("format", "UDBZ")
# Volume size (must be large enough for your files)
size = defines.get("size", "100M")
# Files to include
files = [application, readme]
# Symlinks to create
symlinks = {"Applications": "/Applications"}
# Volume icon
#
# You can either define icon, in which case that icon file will be copied to the
# image, *or* you can define badge_icon, in which case the icon file you specify
# will be used to badge the system's Removable Disk icon
#
badge_icon = defines.get("iconpath", "")
# Where to put the icons
icon_locations = {readme: (70, 160), appname: (295, 220), "Applications": (510, 220)}
# .. Window configuration ......................................................
# Window position in ((x, y), (w, h)) format
window_rect = ((100, 100), (660, 360))
# Background
#
# This is a STRING containing any of the following:
#
# #3344ff - web-style RGB color
# #34f - web-style RGB color, short form (#34f == #3344ff)
# rgb(1,0,0) - RGB color, each value is between 0 and 1
# hsl(120,1,.5) - HSL (hue saturation lightness) color
# hwb(300,0,0) - HWB (hue whiteness blackness) color
# cmyk(0,1,0,0) - CMYK color
# goldenrod - X11/SVG named color
# builtin-arrow - A simple built-in background with a blue arrow
# /foo/bar/baz.png - The path to an image file
#
# Other color components may be expressed either in the range 0 to 1, or
# as percentages (e.g. 60% is equivalent to 0.6).
background = defines.get("background", "builtin-arrow")
show_status_bar = False
show_tab_view = False
show_toolbar = False
show_pathbar = False
show_sidebar = False
sidebar_width = 0
# Select the default view; must be one of
#
# 'icon-view'
# 'list-view'
# 'column-view'
# 'coverflow'
#
default_view = "icon-view"
# General view configuration
show_icon_preview = False
# Set these to True to force inclusion of icon/list view settings (otherwise
# we only include settings for the default view)
include_icon_view_settings = "auto"
include_list_view_settings = "auto"
# .. Icon view configuration ...................................................
arrange_by = None
grid_offset = (0, 0)
grid_spacing = 50
scroll_position = (0, 0)
label_pos = "bottom" # or 'right'
text_size = 16
icon_size = 64
# .. List view configuration ...................................................
# Column names are as follows:
#
# name
# date-modified
# date-created
# date-added
# date-last-opened
# size
# kind
# label
# version
# comments
#
list_icon_size = 16
list_text_size = 12
list_scroll_position = (0, 0)
list_sort_by = "name"
list_use_relative_dates = True
list_calculate_all_sizes = (False,)
list_columns = ("name", "date-modified", "size", "kind", "date-added")
list_column_widths = {
"name": 300,
"date-modified": 181,
"date-created": 181,
"date-added": 181,
"date-last-opened": 181,
"size": 97,
"kind": 115,
"label": 100,
"version": 75,
"comments": 300,
}
list_column_sort_directions = {
"name": "ascending",
"date-modified": "descending",
"date-created": "descending",
"date-added": "descending",
"date-last-opened": "descending",
"size": "descending",
"kind": "ascending",
"label": "ascending",
"version": "ascending",
"comments": "ascending",
}

View File

@@ -0,0 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
<true/>
</dict>
</plist>

View File

Binary file not shown.

View File

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

View File

Binary file not shown.

View File

Binary file not shown.

550
builder/package.py Normal file
View File

@@ -0,0 +1,550 @@
#!/usr/bin/python3 -OO
# Copyright 2008-2017 The SABnzbd-Team <team@sabnzbd.org>
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import glob
import platform
import re
import sys
import os
import time
import shutil
import subprocess
import tarfile
import pkginfo
import github
from distutils.dir_util import copy_tree
VERSION_FILE = "sabnzbd/version.py"
SPEC_FILE = "SABnzbd.spec"
# Also modify these in "SABnzbd.spec"!
extra_files = [
"README.mkd",
"INSTALL.txt",
"LICENSE.txt",
"GPL2.txt",
"GPL3.txt",
"COPYRIGHT.txt",
"ISSUES.txt",
"PKG-INFO",
]
extra_folders = [
"scripts/",
"licenses/",
"locale/",
"email/",
"interfaces/Plush/",
"interfaces/Glitter/",
"interfaces/wizard/",
"interfaces/Config/",
"scripts/",
"icons/",
]
# Support functions
def safe_remove(path):
"""Remove file without erros if the file doesn't exist
Can also handle folders
"""
if os.path.exists(path):
if os.path.isdir(path):
shutil.rmtree(path)
else:
os.remove(path)
def delete_files_glob(name):
""" Delete one file or set of files from wild-card spec """
for f in glob.glob(name):
if os.path.exists(f):
os.remove(f)
def run_external_command(command):
""" Wrapper to ease the use of calling external programs """
process = subprocess.Popen(command, text=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output, _ = process.communicate()
ret = process.wait()
if output:
print(output)
if ret != 0:
raise RuntimeError("Command returned non-zero exit code %s!" % ret)
return output
def run_git_command(parms):
""" Run git command, raise error if it failed """
return run_external_command(["git"] + parms)
def patch_version_file(release_name):
"""Patch in the Git commit hash, but only when this is
an unmodified checkout
"""
git_output = run_git_command(["log", "-1"])
for line in git_output.split("\n"):
if "commit " in line:
commit = line.split(" ")[1].strip()
break
else:
raise TypeError("Commit hash not found")
with open(VERSION_FILE, "r") as ver:
version_file = ver.read()
version_file = re.sub(r'__baseline__\s*=\s*"[^"]*"', '__baseline__ = "%s"' % commit, version_file)
version_file = re.sub(r'__version__\s*=\s*"[^"]*"', '__version__ = "%s"' % release_name, version_file)
with open(VERSION_FILE, "w") as ver:
ver.write(version_file)
if __name__ == "__main__":
# Was any option supplied?
if len(sys.argv) < 2:
raise TypeError("Please specify what to do")
# Make sure we are in the src folder
if not os.path.exists("builder"):
raise FileNotFoundError("Run from the main SABnzbd source folder: python builder/package.py")
# Extract version info
RELEASE_VERSION = pkginfo.Develop(".").version
# Check if we have the needed certificates
try:
import certifi
except ImportError:
raise FileNotFoundError("Need certifi module")
# Define release name
RELEASE_NAME = "SABnzbd-%s" % RELEASE_VERSION
RELEASE_TITLE = "SABnzbd %s" % RELEASE_VERSION
RELEASE_SRC = RELEASE_NAME + "-src.tar.gz"
RELEASE_BINARY_32 = RELEASE_NAME + "-win32-bin.zip"
RELEASE_BINARY_64 = RELEASE_NAME + "-win64-bin.zip"
RELEASE_INSTALLER = RELEASE_NAME + "-win-setup.exe"
RELEASE_MACOS = RELEASE_NAME + "-osx.dmg"
RELEASE_README = "README.mkd"
# Patch release file
patch_version_file(RELEASE_VERSION)
# To draft a release or not to draft a release?
RELEASE_THIS = "draft release" in run_git_command(["log", "-1", "--pretty=format:%b"])
# Rename release notes file
safe_remove("README.txt")
shutil.copyfile(RELEASE_README, "README.txt")
# Compile translations
if not os.path.exists("locale"):
run_external_command([sys.executable, "tools/make_mo.py"])
# Check again if translations exist, fail otherwise
if not os.path.exists("locale"):
raise FileNotFoundError("Failed to compile language files")
# Make sure we remove any existing build-folders
safe_remove("build")
safe_remove("dist")
safe_remove(RELEASE_NAME)
# Copy the specification
shutil.copyfile("builder/%s" % SPEC_FILE, SPEC_FILE)
if "binary" in sys.argv or "installer" in sys.argv:
# Must be run on Windows
if sys.platform != "win32":
raise RuntimeError("Binary should be created on Windows")
# Check what architecture we are on
RELEASE_BINARY = RELEASE_BINARY_32
if platform.architecture()[0] == "64bit":
RELEASE_BINARY = RELEASE_BINARY_64
# Remove any leftovers
safe_remove(RELEASE_BINARY)
# Run PyInstaller and check output
run_external_command([sys.executable, "-O", "-m", "PyInstaller", "SABnzbd.spec"])
# Use special distutils function to merge the main and console directories
copy_tree("dist/SABnzbd-console", "dist/SABnzbd")
safe_remove("dist/SABnzbd-console")
# Remove unwanted DLL's
delete_files_glob("dist/SABnzbd/api-ms-win*.dll")
delete_files_glob("dist/SABnzbd/mfc140u.dll")
delete_files_glob("dist/SABnzbd/ucrtbase.dll")
# Remove other files we don't need
delete_files_glob("dist/SABnzbd/PKG-INFO")
delete_files_glob("dist/SABnzbd/win32ui.pyd")
delete_files_glob("dist/SABnzbd/winxpgui.pyd")
if "installer" in sys.argv:
# Needs to be run on 64 bit
if RELEASE_BINARY != RELEASE_BINARY_64:
raise RuntimeError("Installer should be created on 64bit Python")
# Compile NSIS translations
safe_remove("NSIS_Installer.nsi")
safe_remove("NSIS_Installer.nsi.tmp")
shutil.copyfile("builder/win/NSIS_Installer.nsi", "NSIS_Installer.nsi")
run_external_command([sys.executable, "tools/make_mo.py", "nsis"])
# Remove 32bit external executables
delete_files_glob("dist/SABnzbd/win/par2/multipar/par2j.exe")
delete_files_glob("dist/SABnzbd/win/unrar/UnRAR.exe")
# Run NSIS to build installer
run_external_command(
[
"makensis.exe",
"/V3",
"/DSAB_PRODUCT=%s" % RELEASE_NAME,
"/DSAB_VERSION=%s" % RELEASE_VERSION,
"/DSAB_FILE=%s" % RELEASE_INSTALLER,
"NSIS_Installer.nsi.tmp",
]
)
# Rename the folder
os.rename("dist/SABnzbd", RELEASE_NAME)
# Create the archive
run_external_command(["win/7zip/7za.exe", "a", RELEASE_BINARY, RELEASE_NAME])
if "app" in sys.argv:
# Must be run on macOS
if sys.platform != "darwin":
raise RuntimeError("App should be created on macOS")
# Who will sign and notarize this?
authority = os.environ.get("SIGNING_AUTH")
notarization_user = os.environ.get("NOTARIZATION_USER")
notarization_pass = os.environ.get("NOTARIZATION_PASS")
# Run PyInstaller and check output
run_external_command([sys.executable, "-O", "-m", "PyInstaller", "SABnzbd.spec"])
# Only continue if we can sign
if authority:
files_to_sign = [
"dist/SABnzbd.app/Contents/MacOS/osx/par2/par2-sl64",
"dist/SABnzbd.app/Contents/MacOS/osx/7zip/7za",
"dist/SABnzbd.app/Contents/MacOS/osx/unrar/unrar",
"dist/SABnzbd.app/Contents/MacOS/SABnzbd",
"dist/SABnzbd.app",
]
for file_to_sign in files_to_sign:
print("Signing %s with hardended runtime" % file_to_sign)
run_external_command(
[
"codesign",
"--deep",
"--force",
"--timestamp",
"--options",
"runtime",
"--entitlements",
"builder/osx/entitlements.plist",
"-i",
"org.sabnzbd.sabnzbd",
"-s",
authority,
file_to_sign,
],
)
print("Signed %s!" % file_to_sign)
# Only notarize for real builds that we want to deploy
if notarization_user and notarization_pass and RELEASE_THIS:
# Prepare zip to upload to notarization service
print("Creating zip to send to Apple notarization service")
# We need to use ditto, otherwise the signature gets lost!
notarization_zip = RELEASE_NAME + ".zip"
run_external_command(
["ditto", "-c", "-k", "--sequesterRsrc", "--keepParent", "dist/SABnzbd.app", notarization_zip]
)
# Upload to Apple
print("Sending zip to Apple notarization service")
upload_process = run_external_command(
[
"xcrun",
"altool",
"--notarize-app",
"-t",
"osx",
"-f",
notarization_zip,
"--primary-bundle-id",
"org.sabnzbd.sabnzbd",
"-u",
notarization_user,
"-p",
notarization_pass,
],
)
# Extract the notarization ID
m = re.match(".*RequestUUID = (.*?)\n", upload_process, re.S)
if not m:
raise RuntimeError("No UUID created")
uuid = m.group(1)
print("Checking notarization of UUID: %s (every 30 seconds)" % uuid)
notarization_in_progress = True
while notarization_in_progress:
time.sleep(30)
check_status = run_external_command(
[
"xcrun",
"altool",
"--notarization-info",
uuid,
"-u",
notarization_user,
"-p",
notarization_pass,
],
)
notarization_in_progress = "Status: in progress" in check_status
# Check if success
if "Status: success" not in check_status:
raise RuntimeError("Failed to notarize..")
# Staple the notarization!
print("Approved! Stapling the result to the app")
run_external_command(["xcrun", "stapler", "staple", "dist/SABnzbd.app"])
elif notarization_user and notarization_pass:
print("Notarization skipped, add 'draft release' to the commit message trigger notarization!")
else:
print("Notarization skipped, NOTARIZATION_USER or NOTARIZATION_PASS missing.")
else:
print("Signing skipped, missing SIGNING_AUTH.")
if "source" in sys.argv:
# Prepare Source distribution package.
# We assume the sources are freshly cloned from the repo
# Make sure all source files are Unix format
src_folder = "srcdist"
safe_remove(src_folder)
os.mkdir(src_folder)
# Remove any leftovers
safe_remove(RELEASE_SRC)
# Add extra files and folders need for source dist
extra_folders.extend(["sabnzbd/", "po/", "linux/", "tools/", "tests/"])
extra_files.extend(["SABnzbd.py", "requirements.txt"])
# Copy all folders and files to the new folder
for source_folder in extra_folders:
copy_tree(source_folder, os.path.join(src_folder, source_folder))
# Copy all files
for source_file in extra_files:
shutil.copyfile(source_file, os.path.join(src_folder, source_file))
# Make sure all line-endings are correct
for input_filename in glob.glob("%s/**/*.*" % src_folder, recursive=True):
base, ext = os.path.splitext(input_filename)
if ext.lower() not in (".py", ".txt", ".css", ".js", ".tmpl", ".sh", ".cmd"):
continue
print(input_filename)
with open(input_filename, "rb") as input_data:
data = input_data.read()
data = data.replace(b"\r", b"")
with open(input_filename, "wb") as output_data:
output_data.write(data)
# Create tar.gz file for source distro
with tarfile.open(RELEASE_SRC, "w:gz") as tar_output:
for root, dirs, files in os.walk(src_folder):
for _file in files:
input_path = os.path.join(root, _file)
if sys.platform == "win32":
tar_path = input_path.replace("srcdist\\", RELEASE_NAME + "/").replace("\\", "/")
else:
tar_path = input_path.replace("srcdist/", RELEASE_NAME + "/")
tarinfo = tar_output.gettarinfo(input_path, tar_path)
tarinfo.uid = 0
tarinfo.gid = 0
if _file in ("SABnzbd.py", "Sample-PostProc.sh", "make_mo.py", "msgfmt.py"):
# Force Linux/OSX scripts as executable
tarinfo.mode = 0o755
else:
tarinfo.mode = 0o644
with open(input_path, "rb") as f:
tar_output.addfile(tarinfo, f)
# Remove source folder
safe_remove(src_folder)
# Release to github
if "release" in sys.argv:
# Check if tagged as release and check for token
gh_token = os.environ.get("AUTOMATION_GITHUB_TOKEN", "")
if RELEASE_THIS and gh_token:
gh_obj = github.Github(gh_token)
gh_repo = gh_obj.get_repo("sabnzbd/sabnzbd")
# Read the release notes
with open(RELEASE_README, "r") as readme_file:
readme_data = readme_file.read()
# Pre-releases are longer than 6 characters (e.g. 3.1.0Beta1 vs 3.1.0, but also 3.0.11)
prerelease = len(RELEASE_VERSION) > 5
# We have to manually check if we already created this release
for release in gh_repo.get_releases():
if release.tag_name == RELEASE_VERSION:
gh_release = release
print("Found existing release %s" % gh_release.title)
break
else:
# Did not find it, so create the release, use the GitHub tag we got as input
print("Creating GitHub release SABnzbd %s" % RELEASE_VERSION)
gh_release = gh_repo.create_git_release(
tag=RELEASE_VERSION,
name=RELEASE_TITLE,
message=readme_data,
draft=True,
prerelease=prerelease,
)
# Fetch existing assets, as overwriting is not allowed by GitHub
gh_assets = gh_release.get_assets()
# Upload the assets
files_to_check = (
RELEASE_SRC,
RELEASE_BINARY_32,
RELEASE_BINARY_64,
RELEASE_INSTALLER,
RELEASE_MACOS,
RELEASE_README,
)
for file_to_check in files_to_check:
if os.path.exists(file_to_check):
# Check if this file was previously uploaded
if gh_assets.totalCount:
for gh_asset in gh_assets:
if gh_asset.name == file_to_check:
print("Removing existing asset %s " % gh_asset.name)
gh_asset.delete_asset()
# Upload the new one
print("Uploading %s to release %s" % (file_to_check, gh_release.title))
gh_release.upload_asset(file_to_check)
# Update the website
gh_repo_web = gh_obj.get_repo("sabnzbd/sabnzbd.github.io")
# Check if the branch already exists, only create one if it doesn't
skip_website_update = False
try:
gh_repo_web.get_branch(RELEASE_VERSION)
print("Branch %s on sabnzbd/sabnzbd.github.io already exists, skipping update" % RELEASE_VERSION)
skip_website_update = True
except github.GithubException:
# Create a new branch to have the changes
sb = gh_repo_web.get_branch("master")
print("Creating branch %s on sabnzbd/sabnzbd.github.io" % RELEASE_VERSION)
new_branch = gh_repo_web.create_git_ref(ref="refs/heads/" + RELEASE_VERSION, sha=sb.commit.sha)
# Update the files
if not skip_website_update:
# We need bytes version to interact with GitHub
RELEASE_VERSION_BYTES = RELEASE_VERSION.encode()
# Get all the version files
latest_txt = gh_repo_web.get_contents("latest.txt")
latest_txt_items = latest_txt.decoded_content.split()
new_latest_txt_items = latest_txt_items[:2]
config_yml = gh_repo_web.get_contents("_config.yml")
if prerelease:
# If it's a pre-release, we append to current version in latest.txt
new_latest_txt_items.extend([RELEASE_VERSION_BYTES, latest_txt_items[1]])
# And replace in _config.yml
new_config_yml = re.sub(
b"latest_testing: '[^']*'",
b"latest_testing: '%s'" % RELEASE_VERSION_BYTES,
config_yml.decoded_content,
)
else:
# New stable release, replace the version
new_latest_txt_items[0] = RELEASE_VERSION_BYTES
# And replace in _config.yml
new_config_yml = re.sub(
b"latest_testing: '[^']*'",
b"latest_testing: ''",
config_yml.decoded_content,
)
new_config_yml = re.sub(
b"latest_stable: '[^']*'",
b"latest_stable: '%s'" % RELEASE_VERSION_BYTES,
new_config_yml,
)
# Also update the wiki-settings, these only use x.x notation
new_config_yml = re.sub(
b"wiki_version: '[^']*'",
b"wiki_version: '%s'" % RELEASE_VERSION_BYTES[:3],
new_config_yml,
)
# Update the files
print("Updating latest.txt")
gh_repo_web.update_file(
"latest.txt",
"Release %s: latest.txt" % RELEASE_VERSION,
b"\n".join(new_latest_txt_items),
latest_txt.sha,
RELEASE_VERSION,
)
print("Updating _config.yml")
gh_repo_web.update_file(
"_config.yml",
"Release %s: _config.yml" % RELEASE_VERSION,
new_config_yml,
config_yml.sha,
RELEASE_VERSION,
)
# Create pull-request
print("Creating pull request in sabnzbd/sabnzbd.github.io for the update")
gh_repo_web.create_pull(
title=RELEASE_VERSION,
base="master",
body="Automated update of release files",
head=RELEASE_VERSION,
)
else:
print("To push release to GitHub, add 'draft release' to the commit message.")
print("Or missing the AUTOMATION_GITHUB_TOKEN, cannot push to GitHub without it.")
# Reset!
run_git_command(["reset", "--hard"])
run_git_command(["clean", "-f"])

9
builder/requirements.txt Normal file
View File

@@ -0,0 +1,9 @@
# Basic build requirements
pyinstaller
setuptools
pkginfo
certifi
pygithub
# For the OSX build specific
dmgbuild; sys_platform == 'darwin'

View File

@@ -0,0 +1,405 @@
; -*- coding: utf-8 -*-
;
; Copyright 2008-2015 The SABnzbd-Team <team@sabnzbd.org>
;
; This program is free software; you can redistribute it and/or
; modify it under the terms of the GNU General Public License
; as published by the Free Software Foundation; either version 2
; of the License, or (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
Unicode true
!addplugindir builder\win\nsis\Plugins
!addincludedir builder\win\nsis\Include
!include "MUI2.nsh"
!include "registerExtension.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
!include "WinVer.nsh"
!include "nsProcess.nsh"
!include "x64.nsh"
!include "servicelib.nsh"
;------------------------------------------------------------------
;
; Marco for removing existing and the current installation
; It shared by the installer and the uninstaller.
;
!define RemovePrev "!insertmacro RemovePrev"
!macro RemovePrev idir
; Remove the whole dir
; Users should not be putting stuff here!
RMDir /r "${idir}"
!macroend
;------------------------------------------------------------------
; Define names of the product
Name "${SAB_PRODUCT}"
OutFile "${SAB_FILE}"
InstallDir "$PROGRAMFILES\SABnzbd"
;------------------------------------------------------------------
; Some default compiler settings (uncomment and change at will):
SetCompress auto ; (can be off or force)
SetDatablockOptimize on ; (can be off)
CRCCheck on ; (can be off)
AutoCloseWindow false ; (can be true for the window go away automatically at end)
ShowInstDetails hide ; (can be show to have them shown, or nevershow to disable)
SetDateSave off ; (can be on to have files restored to their orginal date)
WindowIcon on
SpaceTexts none
;------------------------------------------------------------------
; Vista/Win7 redirects $SMPROGRAMS to all users without this
RequestExecutionLevel admin
FileErrorText "If you have no admin rights, try to install into a user directory."
;------------------------------------------------------------------
;Variables
Var MUI_TEMP
Var STARTMENU_FOLDER
Var PREV_INST_DIR
;------------------------------------------------------------------
;Interface Settings
!define MUI_ABORTWARNING
;Show all languages, despite user's codepage
!define MUI_LANGDLL_ALLLANGUAGES
!define MUI_ICON "dist\SABnzbd\icons\sabnzbd.ico"
;--------------------------------
;Pages
!insertmacro MUI_PAGE_LICENSE "dist\SABnzbd\LICENSE.txt"
!define MUI_COMPONENTSPAGE_NODESC
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
;Start Menu Folder Page Configuration
!define MUI_STARTMENUPAGE_REGISTRY_ROOT "HKCU"
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\SABnzbd"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME "Start Menu Folder"
!define MUI_STARTMENUPAGE_DEFAULTFOLDER "SABnzbd"
;Remember the installer language
!define MUI_LANGDLL_REGISTRY_ROOT "HKCU"
!define MUI_LANGDLL_REGISTRY_KEY "Software\SABnzbd"
!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language"
!insertmacro MUI_PAGE_STARTMENU Application $STARTMENU_FOLDER
!insertmacro MUI_PAGE_INSTFILES
; !define MUI_FINISHPAGE_RUN
; !define MUI_FINISHPAGE_RUN_FUNCTION PageFinishRun
; !define MUI_FINISHPAGE_RUN_TEXT $(MsgRunSAB)
!define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\README.txt"
!define MUI_FINISHPAGE_SHOWREADME_TEXT $(MsgShowRelNote)
!define MUI_FINISHPAGE_LINK $(MsgSupportUs)
!define MUI_FINISHPAGE_LINK_LOCATION "https://sabnzbd.org/donate"
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!define MUI_UNPAGE_COMPONENTSPAGE_NODESC
!insertmacro MUI_UNPAGE_COMPONENTS
!insertmacro MUI_UNPAGE_INSTFILES
;------------------------------------------------------------------
; Run as user-level at end of install
; DOES NOT WORK
; Function PageFinishRun
; !insertmacro UAC_AsUser_ExecShell "" "$INSTDIR\SABnzbd.exe" "" "" ""
; FunctionEnd
;------------------------------------------------------------------
; Set supported languages
;
; If you edit this list you also need to edit apireg.py in SABnzbd!
;
!insertmacro MUI_LANGUAGE "English" ;first language is the default language
!insertmacro MUI_LANGUAGE "French"
!insertmacro MUI_LANGUAGE "German"
!insertmacro MUI_LANGUAGE "Dutch"
!insertmacro MUI_LANGUAGE "Finnish"
!insertmacro MUI_LANGUAGE "Polish"
!insertmacro MUI_LANGUAGE "Swedish"
!insertmacro MUI_LANGUAGE "Danish"
!insertmacro MUI_LANGUAGE "Norwegian"
!insertmacro MUI_LANGUAGE "Romanian"
!insertmacro MUI_LANGUAGE "Spanish"
!insertmacro MUI_LANGUAGE "PortugueseBR"
!insertmacro MUI_LANGUAGE "Serbian"
!insertmacro MUI_LANGUAGE "Hebrew"
!insertmacro MUI_LANGUAGE "Russian"
!insertmacro MUI_LANGUAGE "Czech"
!insertmacro MUI_LANGUAGE "SimpChinese"
;------------------------------------------------------------------
;Reserve Files
;If you are using solid compression, files that are required before
;the actual installation should be stored first in the data block,
;because this will make your installer start faster.
!insertmacro MUI_RESERVEFILE_LANGDLL
;------------------------------------------------------------------
; SECTION main program
;
Section "SABnzbd" SecDummy
SetOutPath "$INSTDIR"
;------------------------------------------------------------------
; Make sure old versions are gone (reg-key already read in onInt)
StrCmp $PREV_INST_DIR "" noPrevInstallRemove
${RemovePrev} "$PREV_INST_DIR"
noPrevInstallRemove:
; add files / whatever that need to be installed here.
File /r "dist\SABnzbd\*"
;------------------------------------------------------------------
; Add firewall rules
liteFirewallW::AddRule "$INSTDIR\SABnzbd.exe" "SABnzbd"
liteFirewallW::AddRule "$INSTDIR\SABnzbd-console.exe" "SABnzbd-console"
;------------------------------------------------------------------
; Add to registery
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" "" "$INSTDIR"
WriteRegStr HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" "Installer Language" "$(MsgLangCode)"
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayName" "SABnzbd ${SAB_VERSION}"
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "UninstallString" '"$INSTDIR\uninstall.exe"'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayVersion" '${SAB_VERSION}'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Publisher" 'The SABnzbd Team'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "HelpLink" 'https://forums.sabnzbd.org/'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLInfoAbout" 'https://sabnzbd.org/wiki/'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLUpdateInfo" 'https://sabnzbd.org/'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "Comments" 'The automated Usenet download tool'
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "DisplayIcon" '$INSTDIR\icons\sabnzbd.ico'
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 25674
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoRepair" -1
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "NoModify" -1
; write out uninstaller
WriteUninstaller "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
;Create shortcuts
CreateDirectory "$SMPROGRAMS\$STARTMENU_FOLDER"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\SABnzbd.lnk" "$INSTDIR\SABnzbd.exe"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\SABnzbd - SafeMode.lnk" "$INSTDIR\SABnzbd.exe" "--server 127.0.0.1:8080 -b1 --no-login"
WriteINIStr "$SMPROGRAMS\$STARTMENU_FOLDER\SABnzbd - Documentation.url" "InternetShortcut" "URL" "https://sabnzbd.org/wiki/"
CreateShortCut "$SMPROGRAMS\$STARTMENU_FOLDER\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
!insertmacro MUI_STARTMENU_WRITE_END
SectionEnd ; end of default section
Section $(MsgIcon) desktop
CreateShortCut "$DESKTOP\SABnzbd.lnk" "$INSTDIR\SABnzbd.exe"
SectionEnd ; end of desktop icon section
Section $(MsgAssoc) assoc
${registerExtension} "$INSTDIR\icons\nzb.ico" "$INSTDIR\SABnzbd.exe" ".nzb" "NZB File"
${RefreshShellIcons}
SectionEnd ; end of file association section
Section /o $(MsgRunAtStart) startup
CreateShortCut "$SMPROGRAMS\Startup\SABnzbd.lnk" "$INSTDIR\SABnzbd.exe" "-b0"
SectionEnd ;
;------------------------------------------------------------------
Function .onInit
; We need to modify the dir here for X64
${If} ${RunningX64}
StrCpy $INSTDIR "$PROGRAMFILES64\SABnzbd"
${Else}
MessageBox MB_OK $(MsgOnly64bit)
ExecShell "open" "https://sabnzbd.org/downloads"
Abort
${EndIf}
; Python 3.9 no longer supports Windows 7
${If} ${AtMostWin8}
MessageBox MB_OK $(MsgNoWin7)
ExecShell "open" "https://sabnzbd.org/downloads"
Abort
${EndIf}
;------------------------------------------------------------------
; Change settings based on if SAB was already installed
ReadRegStr $PREV_INST_DIR HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd" ""
StrCmp $PREV_INST_DIR "" noPrevInstall
; We want to use the user's costom dir if he used one
StrCmp $PREV_INST_DIR "$PROGRAMFILES\SABnzbd" noSpecialDir
StrCmp $PREV_INST_DIR "$PROGRAMFILES64\SABnzbd" noSpecialDir
; Set what the user had before
StrCpy $INSTDIR "$PREV_INST_DIR"
noSpecialDir:
;------------------------------------------------------------------
; Check what the user has currently set for install options
IfFileExists "$SMPROGRAMS\Startup\SABnzbd.lnk" 0 endCheckStartup
SectionSetFlags ${startup} 1
endCheckStartup:
IfFileExists "$DESKTOP\SABnzbd.lnk" endCheckDesktop 0
SectionSetFlags ${desktop} 0 ; SAB is installed but desktop-icon not, so uncheck it
endCheckDesktop:
Push $1
ReadRegStr $1 HKCR ".nzb" "" ; read current file association
StrCmp "$1" "NZB File" noPrevInstall 0
SectionSetFlags ${assoc} 0 ; Uncheck it when it wasn't checked before
noPrevInstall:
;--------------------------------
; Display language chooser
!insertmacro MUI_LANGDLL_DISPLAY
;------------------------------------------------------------------
; make sure user terminates sabnzbd.exe or else abort
;
loop:
${nsProcess::FindProcess} "SABnzbd.exe" $R0
StrCmp $R0 0 0 endcheck
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
exitinstall:
${nsProcess::Unload}
Abort
endcheck:
;------------------------------------------------------------------
; make sure both services aren't running
;
!insertmacro SERVICE "running" "SABnzbd" ""
Pop $0 ;response
!insertmacro SERVICE "running" "SABHelper" ""
Pop $1
${If} $0 == true
${OrIf} $1 == true
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgCloseSab) IDOK loop IDCANCEL exitinstall
; exitinstall already defined above
${EndIf}
;------------------------------------------------------------------
; Tell users about the service change
;
!insertmacro SERVICE "installed" "SABHelper" ""
Pop $0 ;response
${If} $0 == true
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION $(MsgServChange) IDOK removeservices IDCANCEL exitinstall
; exitinstall already defined above
removeservices:
!insertmacro SERVICE "delete" "SABHelper" ""
!insertmacro SERVICE "delete" "SABnzbd" ""
${EndIf}
FunctionEnd
;------------------------------------------------------------------
; Show the shortcuts at end of install so user can start SABnzbd
; This is instead of us trying to run SAB from the installer
;
Function .onInstSuccess
ExecShell "open" "$SMPROGRAMS\$STARTMENU_FOLDER"
FunctionEnd
;--------------------------------
; begin uninstall settings/section
UninstallText $(MsgUninstall)
Section "un.$(MsgDelProgram)" Uninstall
;make sure sabnzbd.exe isnt running..if so shut it down
${nsProcess::KillProcess} "SABnzbd.exe" $R0
${nsProcess::Unload}
DetailPrint "Process Killed"
; add delete commands to delete whatever files/registry keys/etc you installed here.
Delete "$INSTDIR\uninstall.exe"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\SABnzbd"
DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd"
${RemovePrev} "$INSTDIR"
!insertmacro MUI_STARTMENU_GETFOLDER Application $MUI_TEMP
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\Uninstall.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - SafeMode.lnk"
Delete "$SMPROGRAMS\$MUI_TEMP\SABnzbd - Documentation.url"
RMDir "$SMPROGRAMS\$MUI_TEMP"
Delete "$SMPROGRAMS\Startup\SABnzbd.lnk"
Delete "$DESKTOP\SABnzbd.lnk"
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
${unregisterExtension} ".nzb" "NZB File"
${RefreshShellIcons}
SectionEnd ; end of uninstall section
Section /o "un.$(MsgDelSettings)" DelSettings
DetailPrint "Uninstall settings $LOCALAPPDATA"
Delete "$LOCALAPPDATA\sabnzbd\sabnzbd.ini"
RMDir /r "$LOCALAPPDATA\sabnzbd"
SectionEnd
; eof
;--------------------------------
;Language strings
LangString MsgShowRelNote ${LANG_ENGLISH} "Show Release Notes"
LangString MsgSupportUs ${LANG_ENGLISH} "Support the project, Donate!"
LangString MsgCloseSab ${LANG_ENGLISH} "Please close $\"SABnzbd.exe$\" first"
LangString MsgServChange ${LANG_ENGLISH} "The SABnzbd Windows Service changed in SABnzbd 3.0.0. $\nYou will need to reinstall the SABnzbd service. $\n$\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
LangString MsgOnly64bit ${LANG_ENGLISH} "The installer only supports 64-bit Windows, use the standalone version to run on 32-bit Windows."
LangString MsgNoWin7 ${LANG_ENGLISH} "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
LangString MsgUninstall ${LANG_ENGLISH} "This will uninstall SABnzbd from your system"
LangString MsgRunAtStart ${LANG_ENGLISH} "Run at startup"
LangString MsgIcon ${LANG_ENGLISH} "Desktop Icon"
LangString MsgAssoc ${LANG_ENGLISH} "NZB File association"
LangString MsgDelProgram ${LANG_ENGLISH} "Delete Program"
LangString MsgDelSettings ${LANG_ENGLISH} "Delete Settings"
LangString MsgRemoveOld ${LANG_ENGLISH} "You cannot overwrite an existing installation. $\n$\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
LangString MsgRemoveOld2 ${LANG_ENGLISH} "Your settings and data will be preserved."
LangString MsgLangCode ${LANG_ENGLISH} "en"
Function un.onInit
!insertmacro MUI_UNGETLANGUAGE
FunctionEnd

View File

@@ -0,0 +1,28 @@
!define nsProcess::FindProcess `!insertmacro nsProcess::FindProcess`
!macro nsProcess::FindProcess _FILE _ERR
nsProcess::_FindProcess /NOUNLOAD `${_FILE}`
Pop ${_ERR}
!macroend
!define nsProcess::KillProcess `!insertmacro nsProcess::KillProcess`
!macro nsProcess::KillProcess _FILE _ERR
nsProcess::_KillProcess /NOUNLOAD `${_FILE}`
Pop ${_ERR}
!macroend
!define nsProcess::CloseProcess `!insertmacro nsProcess::CloseProcess`
!macro nsProcess::CloseProcess _FILE _ERR
nsProcess::_CloseProcess /NOUNLOAD `${_FILE}`
Pop ${_ERR}
!macroend
!define nsProcess::Unload `!insertmacro nsProcess::Unload`
!macro nsProcess::Unload
nsProcess::_Unload
!macroend

View File

@@ -0,0 +1,53 @@
!define registerExtension "!insertmacro registerExtension"
!define unregisterExtension "!insertmacro unregisterExtension"
!define SHCNE_ASSOCCHANGED 0x8000000
!define SHCNF_IDLIST 0
; Source = http://nsis.sourceforge.net/File_Association
; Patched for SABnzbd by swi-tch
!macro registerExtension icon executable extension description
Push "${icon}" ; "full path to icon.ico"
Push "${executable}" ; "full path to my.exe"
Push "${extension}" ; ".mkv"
Push "${description}" ; "MKV File"
Call registerExtension
!macroend
; back up old value of .opt
Function registerExtension
!define Index "Line${__LINE__}"
pop $R0 ; ext name
pop $R1
pop $R2
pop $R3
push $1
push $0
DeleteRegKey HKEY_CURRENT_USER "Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\$R1"
WriteRegStr HKCR $R1 "" $R0
WriteRegStr HKCR $R0 "" $R0
WriteRegStr HKCR "$R0\shell" "" "open"
WriteRegStr HKCR "$R0\DefaultIcon" "" "$R3,0"
WriteRegStr HKCR "$R0\shell\open\command" "" '"$R2" "%1"'
WriteRegStr HKCR "$R0\shell\edit" "" "Edit $R0"
WriteRegStr HKCR "$R0\shell\edit\command" "" '"$R2" "%1"'
pop $0
pop $1
!undef Index
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
FunctionEnd
!macro unregisterExtension extension description
Push "${extension}" ; ".mkv"
Push "${description}" ; "MKV File"
Call un.unregisterExtension
!macroend
Function un.unregisterExtension
pop $R1 ; description
pop $R0 ; extension
!define Index "Line${__LINE__}"
DeleteRegKey HKCR $R0
!undef Index
System::Call 'Shell32::SHChangeNotify(i ${SHCNE_ASSOCCHANGED}, i ${SHCNF_IDLIST}, i 0, i 0)'
FunctionEnd

View File

@@ -0,0 +1,411 @@
; NSIS SERVICE LIBRARY - servicelib.nsh
; Version 1.8.1 - Jun 21th, 2013
; Questions/Comments - dselkirk@hotmail.com
;
; Description:
; Provides an interface to window services
;
; Inputs:
; action - systemlib action ie. create, delete, start, stop, pause,
; continue, installed, running, status
; name - name of service to manipulate
; param - action parameters; usage: var1=value1;var2=value2;...etc.
; (don't forget to add a ';' after the last value!)
;
; Actions:
; create - creates a new windows service
; Parameters:
; path - path to service executable
; autostart - automatically start with system ie. 1|0
; interact - interact with the desktop ie. 1|0
; depend - service dependencies
; user - user that runs the service
; password - password of the above user
; display - display name in service's console
; description - Description of service
; starttype - start type (supersedes autostart)
; servicetype - service type (supersedes interact)
;
; delete - deletes a windows service
; start - start a stopped windows service
; stop - stops a running windows service
; pause - pauses a running windows service
; continue - continues a paused windows service
; installed - is the provided service installed
; Parameters:
; action - if true then invokes the specified action
; running - is the provided service running
; Parameters:
; action - if true then invokes the specified action
; status - check the status of the provided service
;
; Usage:
; Method 1:
; Push "action"
; Push "name"
; Push "param"
; Call Service
; Pop $0 ;response
;
; Method 2:
; !insertmacro SERVICE "action" "name" "param"
;
; History:
; 1.0 - 09/15/2003 - Initial release
; 1.1 - 09/16/2003 - Changed &l to i, thx brainsucker
; 1.2 - 02/29/2004 - Fixed documentation.
; 1.3 - 01/05/2006 - Fixed interactive flag and pop order (Kichik)
; 1.4 - 12/07/2006 - Added display and depend, fixed datatypes (Vitoco)
; 1.5 - 06/25/2008 - Added description of service.(DeSafe.com/liuqixing#gmail.com)
; 1.5.1 - 06/12/2009 - Added use of __UNINSTALL__
; 1.6 - 08/02/2010 - Fixed description implementation (Anders)
; 1.7 - 04/11/2010 - Added get running service process id (Nico)
; 1.8 - 24/03/2011 - Added starttype and servicetype (Sergius)
; 1.8.1 - 21/06/2013 - Added dynamic ASCII & Unicode support (Zinthose)
!ifndef SERVICELIB
!define SERVICELIB
!define SC_MANAGER_ALL_ACCESS 0x3F
!define SC_STATUS_PROCESS_INFO 0x0
!define SERVICE_ALL_ACCESS 0xF01FF
!define SERVICE_CONTROL_STOP 1
!define SERVICE_CONTROL_PAUSE 2
!define SERVICE_CONTROL_CONTINUE 3
!define SERVICE_STOPPED 0x1
!define SERVICE_START_PENDING 0x2
!define SERVICE_STOP_PENDING 0x3
!define SERVICE_RUNNING 0x4
!define SERVICE_CONTINUE_PENDING 0x5
!define SERVICE_PAUSE_PENDING 0x6
!define SERVICE_PAUSED 0x7
!define SERVICE_KERNEL_DRIVER 0x00000001
!define SERVICE_FILE_SYSTEM_DRIVER 0x00000002
!define SERVICE_WIN32_OWN_PROCESS 0x00000010
!define SERVICE_WIN32_SHARE_PROCESS 0x00000020
!define SERVICE_INTERACTIVE_PROCESS 0x00000100
!define SERVICE_BOOT_START 0x00000000
!define SERVICE_SYSTEM_START 0x00000001
!define SERVICE_AUTO_START 0x00000002
!define SERVICE_DEMAND_START 0x00000003
!define SERVICE_DISABLED 0x00000004
## Added by Zinthose for Native Unicode Support
!ifdef NSIS_UNICODE
!define APITAG "W"
!else
!define APITAG "A"
!endif
!macro SERVICE ACTION NAME PARAM
Push '${ACTION}'
Push '${NAME}'
Push '${PARAM}'
!ifdef __UNINSTALL__
Call un.Service
!else
Call Service
!endif
!macroend
!macro FUNC_GETPARAM
Push $0
Push $1
Push $2
Push $3
Push $4
Push $5
Push $6
Push $7
Exch 8
Pop $1 ;name
Exch 8
Pop $2 ;source
StrCpy $0 ""
StrLen $7 $2
StrCpy $3 0
lbl_loop:
IntCmp $3 $7 0 0 lbl_done
StrLen $4 "$1="
StrCpy $5 $2 $4 $3
StrCmp $5 "$1=" 0 lbl_next
IntOp $5 $3 + $4
StrCpy $3 $5
lbl_loop2:
IntCmp $3 $7 0 0 lbl_done
StrCpy $6 $2 1 $3
StrCmp $6 ";" 0 lbl_next2
IntOp $6 $3 - $5
StrCpy $0 $2 $6 $5
Goto lbl_done
lbl_next2:
IntOp $3 $3 + 1
Goto lbl_loop2
lbl_next:
IntOp $3 $3 + 1
Goto lbl_loop
lbl_done:
Pop $5
Pop $4
Pop $3
Pop $2
Pop $1
Exch 2
Pop $6
Pop $7
Exch $0
!macroend
!macro CALL_GETPARAM VAR NAME DEFAULT LABEL
Push $1
Push ${NAME}
Call ${UN}GETPARAM
Pop $6
StrCpy ${VAR} "${DEFAULT}"
StrCmp $6 "" "${LABEL}" 0
StrCpy ${VAR} $6
!macroend
!macro FUNC_SERVICE UN
Push $0
Push $1
Push $2
Push $3
Push $4
Push $5
Push $6
Push $7
Exch 8
Pop $1 ;param
Exch 8
Pop $2 ;name
Exch 8
Pop $3 ;action
;$0 return
;$4 OpenSCManager
;$5 OpenService
StrCpy $0 "false"
System::Call 'advapi32::OpenSCManager${APITAG}(n, n, i ${SC_MANAGER_ALL_ACCESS}) i.r4'
IntCmp $4 0 lbl_done
StrCmp $3 "create" lbl_create
System::Call 'advapi32::OpenService${APITAG}(i r4, t r2, i ${SERVICE_ALL_ACCESS}) i.r5'
IntCmp $5 0 lbl_done
lbl_select:
StrCmp $3 "delete" lbl_delete
StrCmp $3 "start" lbl_start
StrCmp $3 "stop" lbl_stop
StrCmp $3 "pause" lbl_pause
StrCmp $3 "continue" lbl_continue
StrCmp $3 "installed" lbl_installed
StrCmp $3 "running" lbl_running
StrCmp $3 "status" lbl_status
StrCmp $3 "processid" lbl_processid
Goto lbl_done
; create service
lbl_create:
Push $R1 ;depend
Push $R2 ;user
Push $R3 ;password
Push $R4 ;servicetype/interact
Push $R5 ;starttype/autostart
Push $R6 ;path
Push $R7 ;display
Push $R8 ;description
!insertmacro CALL_GETPARAM $R1 "depend" "n" "lbl_depend"
StrCpy $R1 't "$R1"'
lbl_depend:
StrCmp $R1 "n" 0 lbl_machine ;old name of depend param
!insertmacro CALL_GETPARAM $R1 "machine" "n" "lbl_machine"
StrCpy $R1 't "$R1"'
lbl_machine:
!insertmacro CALL_GETPARAM $R2 "user" "n" "lbl_user"
StrCpy $R2 't "$R2"'
lbl_user:
!insertmacro CALL_GETPARAM $R3 "password" "n" "lbl_password"
StrCpy $R3 't "$R3"'
lbl_password:
!insertmacro CALL_GETPARAM $R4 "interact" "${SERVICE_WIN32_OWN_PROCESS}" "lbl_interact"
StrCpy $6 ${SERVICE_WIN32_OWN_PROCESS}
IntCmp $R4 0 +2
IntOp $6 $6 | ${SERVICE_INTERACTIVE_PROCESS}
StrCpy $R4 $6
lbl_interact:
!insertmacro CALL_GETPARAM $R4 "servicetype" "$R4" "lbl_servicetype"
lbl_servicetype:
!insertmacro CALL_GETPARAM $R5 "autostart" "${SERVICE_DEMAND_START}" "lbl_autostart"
StrCpy $6 ${SERVICE_DEMAND_START}
IntCmp $R5 0 +2
StrCpy $6 ${SERVICE_AUTO_START}
StrCpy $R5 $6
lbl_autostart:
!insertmacro CALL_GETPARAM $R5 "starttype" "$R5" "lbl_starttype"
lbl_starttype:
!insertmacro CALL_GETPARAM $R6 "path" "n" "lbl_path"
lbl_path:
!insertmacro CALL_GETPARAM $R7 "display" "$2" "lbl_display"
lbl_display:
!insertmacro CALL_GETPARAM $R8 "description" "$2" "lbl_description"
lbl_description:
System::Call 'advapi32::CreateService${APITAG}(i r4, t r2, t R7, i ${SERVICE_ALL_ACCESS}, \
i R4, i R5, i 0, t R6, n, n, $R1, $R2, $R3) i.r6'
; write description of service (SERVICE_CONFIG_DESCRIPTION)
System::Call 'advapi32::ChangeServiceConfig2${APITAG}(ir6,i1,*t "$R8")i.R7'
strcmp $R7 "error" 0 lbl_descriptioncomplete
WriteRegStr HKLM "SYSTEM\CurrentControlSet\Services\$2" "Description" $R8
lbl_descriptioncomplete:
Pop $R8
Pop $R7
Pop $R6
Pop $R5
Pop $R4
Pop $R3
Pop $R2
Pop $R1
StrCmp $6 0 lbl_done lbl_good
; delete service
lbl_delete:
System::Call 'advapi32::DeleteService(i r5) i.r6'
StrCmp $6 0 lbl_done lbl_good
; start service
lbl_start:
System::Call 'advapi32::StartService${APITAG}(i r5, i 0, i 0) i.r6'
StrCmp $6 0 lbl_done lbl_good
; stop service
lbl_stop:
Push $R1
System::Call '*(i,i,i,i,i,i,i) i.R1'
System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_STOP}, i $R1) i'
System::Free $R1
Pop $R1
StrCmp $6 0 lbl_done lbl_good
; pause service
lbl_pause:
Push $R1
System::Call '*(i,i,i,i,i,i,i) i.R1'
System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_PAUSE}, i $R1) i'
System::Free $R1
Pop $R1
StrCmp $6 0 lbl_done lbl_good
; continue service
lbl_continue:
Push $R1
System::Call '*(i,i,i,i,i,i,i) i.R1'
System::Call 'advapi32::ControlService(i r5, i ${SERVICE_CONTROL_CONTINUE}, i $R1) i'
System::Free $R1
Pop $R1
StrCmp $6 0 lbl_done lbl_good
; is installed
lbl_installed:
!insertmacro CALL_GETPARAM $7 "action" "" "lbl_good"
StrCpy $3 $7
Goto lbl_select
; is service running
lbl_running:
Push $R1
System::Call '*(i,i,i,i,i,i,i) i.R1'
System::Call 'advapi32::QueryServiceStatus(i r5, i $R1) i'
System::Call '*$R1(i, i.r6)'
System::Free $R1
Pop $R1
IntFmt $6 "0x%X" $6
StrCmp $6 ${SERVICE_RUNNING} 0 lbl_done
!insertmacro CALL_GETPARAM $7 "action" "" "lbl_good"
StrCpy $3 $7
Goto lbl_select
lbl_status:
Push $R1
System::Call '*(i,i,i,i,i,i,i) i.R1'
System::Call 'advapi32::QueryServiceStatus(i r5, i $R1) i'
System::Call '*$R1(i, i .r6)'
System::Free $R1
Pop $R1
IntFmt $6 "0x%X" $6
StrCpy $0 "running"
IntCmp $6 ${SERVICE_RUNNING} lbl_done
StrCpy $0 "stopped"
IntCmp $6 ${SERVICE_STOPPED} lbl_done
StrCpy $0 "start_pending"
IntCmp $6 ${SERVICE_START_PENDING} lbl_done
StrCpy $0 "stop_pending"
IntCmp $6 ${SERVICE_STOP_PENDING} lbl_done
StrCpy $0 "running"
IntCmp $6 ${SERVICE_RUNNING} lbl_done
StrCpy $0 "continue_pending"
IntCmp $6 ${SERVICE_CONTINUE_PENDING} lbl_done
StrCpy $0 "pause_pending"
IntCmp $6 ${SERVICE_PAUSE_PENDING} lbl_done
StrCpy $0 "paused"
IntCmp $6 ${SERVICE_PAUSED} lbl_done
StrCpy $0 "unknown"
Goto lbl_done
lbl_processid:
Push $R1
Push $R2
System::Call '*(i,i,i,i,i,i,i,i,i) i.R1'
System::Call '*(i 0) i.R2'
System::Call "advapi32::QueryServiceStatusEx(i r5, i ${SC_STATUS_PROCESS_INFO}, i $R1, i 36, i $R2) i"
System::Call "*$R1(i,i,i,i,i,i,i, i .r0)"
System::Free $R2
System::Free $R1
Pop $R2
Pop $R1
Goto lbl_done
lbl_good:
StrCpy $0 "true"
lbl_done:
IntCmp $5 0 +2
System::Call 'advapi32::CloseServiceHandle(i r5) n'
IntCmp $4 0 +2
System::Call 'advapi32::CloseServiceHandle(i r4) n'
Pop $4
Pop $3
Pop $2
Pop $1
Exch 3
Pop $5
Pop $7
Pop $6
Exch $0
!macroend
Function Service
!insertmacro FUNC_SERVICE ""
FunctionEnd
Function GetParam
!insertmacro FUNC_GETPARAM
FunctionEnd
!undef APITAG
!endif

View File

Binary file not shown.

View File

Binary file not shown.

View File

@@ -4,7 +4,7 @@
#set global $root = '../../'#
#end if#
<!DOCTYPE HTML>
<html lang="$active_lang">
<html lang="$active_lang" #if $rtl#dir="rtl"#end if#>
<head>
<title>
SABnzbd $T('menu-config')

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Folders"#-->
<!--#set global $help_uri="configuration/3.1/folders"#-->
<!--#set global $help_uri="configuration/3.2/folders"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -28,7 +28,7 @@
</div>
<div class="field-pair advanced-settings">
<label class="config" for="download_free">$T('opt-download_free')</label>
<input type="text" name="download_free" id="download_free" value="$download_free" class="smaller_input" />
<input type="text" name="download_free" id="download_free" value="$download_free" class="smaller_input" />
<span class="desc">$T('explain-download_free')</span>
</div>
<div class="field-pair">
@@ -36,6 +36,16 @@
<input type="text" name="complete_dir" id="complete_dir" value="$complete_dir" data-initialdir="$my_home" />
<span class="desc">$T('explain-complete_dir')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="complete_free">$T('opt-complete_free')</label>
<input type="text" name="complete_free" id="complete_free" value="$complete_free" class="smaller_input" />
<span class="desc">$T('explain-download_free') <br>$T('explain-complete_free')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="fulldisk_autoresume">$T('opt-fulldisk_autoresume')</label>
<input type="checkbox" name="fulldisk_autoresume" id="fulldisk_autoresume" value="1" <!--#if int($fulldisk_autoresume) > 0 then 'checked="checked"' else ""#--> />
<span class="desc">$T('explain-fulldisk_autoresume')</span>
</div>
<!--#if not $nt#-->
<div class="field-pair advanced-settings">
<label class="config" for="permissions">$T('opt-permissions')</label>

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="General"#-->
<!--#set global $help_uri="configuration/3.1/general"#-->
<!--#set global $help_uri="configuration/3.2/general"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">
@@ -32,6 +32,7 @@
<label class="config" for="enable_https">$T('opt-enable_https')</label>
<input type="checkbox" name="enable_https" id="enable_https" value="1" <!--#if int($enable_https) > 0 then 'checked="checked" data-original="1"' else ""#-->/>
<span class="desc">$T('explain-enable_https')</span>
<span class="desc"><span class="label label-warning">$T('warning').upper()</span> $T('explain-enable_https_warning')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="web_dir">$T('opt-web_dir')</label>

View File

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

View File

@@ -1,6 +1,7 @@
<!--#set global $pane="RSS"#-->
<!--#set global $help_uri="configuration/3.1/rss"#-->
<!--#set global $help_uri="configuration/3.2/rss"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import html#-->
<div class="colmask">
<!--#if not $active_feed#-->
<div class="section">
@@ -13,7 +14,7 @@
<tr>
<th>&nbsp;</th>
<th>$T('name')</th>
<th>$T('feed') URL</th>
<th>$T('feed') URLs</th>
<th>&nbsp;</th>
</tr>
<tr class="even">
@@ -45,9 +46,10 @@
<!--#set $odd = False#-->
<!--#for $feed_item in $feeds#-->
<!--#set $odd = not $odd#-->
<!--#set $feed_item_html = html.escape($feed_item)#-->
<tr class="data-row <!--#if $odd then " alt " else " "#-->">
<td class="chk">
<input type="checkbox" class="toggleFeedCheckbox" name="enable" value="1" <!--#if int($rss[$feed_item]['enable']) !=0 then 'checked="checked"' else ""#--> rel="$feed_item" />
<input type="checkbox" class="toggleFeedCheckbox" name="enable" value="1" <!--#if int($rss[$feed_item]['enable']) !=0 then 'checked="checked"' else ""#--> rel="$feed_item_html" />
</td>
<td class="title">
<a href="?feed=$rss[$feed_item]['link']" class="subscription-title path feed <!--#if int($rss[$feed_item]['enable']) != 0 then 'feed_enabled' else 'feed_disabled'#-->">
@@ -55,10 +57,10 @@
</a>
</td>
<td class="controls">
<button type="button" class="btn btn-default testFeed" rel="$feed_item"><span class="glyphicon glyphicon-sort"></span> $T('button-preFeed')</button>
<button type="button" class="btn btn-default testFeed" rel="$feed_item_html"><span class="glyphicon glyphicon-sort"></span> $T('button-preFeed')</button>
<input type="hidden" name="uri" value="$rss[$feed_item]['uris']" />
<button type="button" class="btn btn-default editFeed" rel="$feed_item"><span class="glyphicon glyphicon-pencil"></span> $T('Edit')</button>
<button type="button" class="btn btn-default delFeed" rel="$feed_item"><span class="glyphicon glyphicon-trash"></span></button>
<button type="button" class="btn btn-default editFeed" rel="$feed_item_html"><span class="glyphicon glyphicon-pencil"></span> $T('rss-edit')</button>
<button type="button" class="btn btn-default delFeed" rel="$feed_item_html"><span class="glyphicon glyphicon-trash"></span></button>
</td>
</tr>
<!--#for $uri_index, $uri in enumerate($rss[$feed_item]['uri'])#-->
@@ -90,7 +92,7 @@
<label class="config narrow" for="rss_rate">$T('opt-rss_rate')</label>
<input type="number" name="rss_rate" id="rss_rate" value="$rss_rate" min="15" max="1440" />
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> $T('button-save')</button>
<span class="config narrow">&nbsp;&nbsp;$T('Next scan at:')&nbsp;$rss_next</span>
<span class="config narrow">&nbsp;&nbsp;$T('rss-nextscan'): $rss_next</span>
<span class="desc narrow">$T('explain-rss_rate')</span>
</div>
</fieldset>
@@ -106,12 +108,12 @@
<a class="main-helplink" href="$helpuri$help_uri" target="_blank"><span class="glyphicon glyphicon-question-sign"></span></a>
<h2 class="nomargin activeRSS">
<a href="${root}config/rss/">$T('cmenu-rss')</a> &raquo;
<a href="$rss[$active_feed]['uri']" onclick="window.open(this.href); return false;">$active_feed</a>
$active_feed
</h2>
<!--#if $error#-->
<div class="alert alert-danger">
<span class="glyphicon glyphicon-exclamation-sign"></span>
$error
<!--#echo html.escape($error)#-->
</div>
<!--#end if#-->
<form action="upd_rss_feed" method="post">
@@ -508,9 +510,37 @@
</div>
<!--#end if#-->
</div>
</div>
<!-- /colmask -->
<form method="post" action="save_rss_feed" class="modal fade" id="rss_edit_modal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">$T('Edit') <span id="feed_edit_name_label"></span></h4>
</div>
<div class="modal-body">
<div class="form-group">
<label for="feed_edit_new_name">$T('name')</label>
<input type="text" class="form-control" name="feed_new_name" id="feed_edit_new_name" placeholder="$T('name')" size="">
</div>
<div class="form-group">
<label for="feed_edit_url">$T('feed') URLs</label>
<input type="text" class="form-control" name="uri" id="feed_edit_url" placeholder="$T('feed') URLs" size="">
<span class="help-block">$T('addMultipleFeeds')</span>
</div>
<input type="hidden" name="feed" id="feed_edit_old_name" />
<input type="hidden" name="apikey" value="$apikey" />
</div>
<div class="modal-footer">
<button type="button" class="btn btn-danger" data-dismiss="modal"><span class="glyphicon glyphicon-remove"></span> $T('cancel')</button>
<button type="submit" class="btn btn-default"><span class="glyphicon glyphicon-ok"></span> $T('rss-accept')</button>
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</form><!-- /.modal -->
<script type="text/javascript" src="${root}staticcfg/js/jquery.tablesort.min.js"></script>
<script type="text/javascript">
function urlencode(str) {
@@ -537,20 +567,16 @@ function urlencode(str) {
\$('.editFeed').click(function(){
var oldURI = \$(this).prev().val();
var newURI = prompt("$T('feed') URL. \n$T('addMultipleFeeds').", oldURI );
if(newURI != "" && newURI !== null) {
var whichFeed = \$(this).attr("rel");
var isEnabled = \$('.toggleFeedCheckbox[rel="'+whichFeed+'"]').attr('checked') == "checked"? 1 : 0;
\$.ajax({
type: "POST",
url: "save_rss_feed",
data: {feed: whichFeed, uri: newURI, enable: isEnabled, apikey: "$apikey" }
}).done(function( msg ) {
location.reload();
});
} else {
return false;
}
var whichFeed = \$(this).attr("rel");
// Fill the values
\$('#feed_edit_name_label').text(whichFeed)
\$('#feed_edit_old_name').val(whichFeed)
\$('#feed_edit_new_name').val(whichFeed)
\$('#feed_edit_url').val(oldURI)
// Show the modal
\$('#rss_edit_modal').modal('show');
});
\$('.delFeed').click(function(e){

View File

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

View File

@@ -1,13 +1,15 @@
<!--#set global $pane="Servers"#-->
<!--#set global $help_uri="configuration/3.1/servers"#-->
<!--#set global $help_uri="configuration/3.2/servers"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<!--#import json#-->
<!--#import datetime#-->
<script type="text/javascript">
// Define variable needed for the server-plots
var serverData = {}
<script type="text/javascript" xmlns="http://www.w3.org/1999/html">
// Define variable needed for the server-statistics
var serverBandwithData = {}
var serverArticleTries = {}
var serverArticleFailed = {}
</script>
<div class="colmask">
@@ -18,7 +20,7 @@
</label>
<div class="advanced-buttonSeperator"></div>
<div class="chart-selector-container" title="$T('srv-bandwidth')">
<div class="chart-selector-container" title="$T('selectedDates')">
<span class="glyphicon glyphicon-signal"></span>
<!--#set today = datetime.date.today()#-->
<input type="date" name="chart-start" id="chart-start" value="<!--#echo (today-datetime.timedelta(days=30)).strftime('%Y-%m-%d')#-->"> -
@@ -38,6 +40,10 @@
<input type="checkbox" name="enable" id="enable" value="1" checked="checked" />
<span class="desc">$T('srv-enable')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="displayname">$T('srv-displayname')</label>
<input type="text" name="displayname" id="displayname" />
</div>
<div class="field-pair">
<label class="config" for="host">$T('srv-host')</label>
<input type="text" name="host" id="host" required />
@@ -62,7 +68,7 @@
</div>
<div class="field-pair">
<label class="config" for="connections">$T('srv-connections')</label>
<input type="number" name="connections" id="connections" min="1" max="100" value="8" required />
<input type="number" name="connections" id="connections" min="1" max="1000" value="8" required />
</div>
<div class="field-pair">
<label class="config" for="priority">$T('srv-priority')</label>
@@ -102,8 +108,14 @@
<span class="desc">$T('explain-optional')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="displayname">$T('srv-displayname')</label>
<input type="text" name="displayname" id="displayname" />
<label class="config" for="expire_date">$T('srv-expire_date')</label>
<input type="date" name="expire_date" id="expire_date" />
<span class="desc">$T('srv-explain-expire_date')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="quota">$T('swtag-quota')</label>
<input type="text" name="quota" id="quota" class="smaller_input" />
<span class="desc">$T('srv-explain-quota')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="notes">$T('srv-notes')</label>
@@ -153,6 +165,10 @@
<div class="col1" style="display:none;">
<input type="hidden" name="enable" id="enable$cur" value="$int($server['enable'])" />
<fieldset>
<div class="field-pair advanced-settings">
<label class="config" for="displayname$cur">$T('srv-displayname')</label>
<input type="text" name="displayname" id="displayname$cur" value="$server['displayname']" />
</div>
<div class="field-pair">
<label class="config" for="host$cur">$T('srv-host')</label>
<input type="text" name="host" id="host$cur" value="$server['host']" required />
@@ -177,7 +193,7 @@
</div>
<div class="field-pair">
<label class="config" for="connections$cur">$T('srv-connections')</label>
<input type="number" name="connections" id="connections$cur" value="$server['connections']" min="1" max="100" required />
<input type="number" name="connections" id="connections$cur" value="$server['connections']" min="1" max="1000" required />
</div>
<div class="field-pair">
<label class="config" for="priority$cur">$T('srv-priority')</label>
@@ -218,8 +234,14 @@
<span class="desc">$T('srv-explain-send_group')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="displayname$cur">$T('srv-displayname')</label>
<input type="text" name="displayname" id="displayname$cur" value="$server['displayname']" />
<label class="config" for="expire_date$cur">$T('srv-expire_date')</label>
<input type="date" name="expire_date" id="expire_date$cur" value="$server['expire_date']" />
<span class="desc">$T('srv-explain-expire_date')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="quota$cur">$T('swtag-quota')</label>
<input type="text" name="quota" id="quota$cur" value="$server['quota']" class="smaller_input" />
<span class="desc">$T('srv-explain-quota')</span>
</div>
<div class="field-pair advanced-settings">
<label class="config" for="notes$cur">$T('srv-notes')</label>
@@ -238,19 +260,31 @@
<div class="col1" style="display:block;">
<!--#if 'amounts' in $server#-->
<div class="server-amounts-text">
<b>$T('srv-bandwidth'):</b><br/>
$T('total'): $(server['amounts'][0])B<br/>
$T('today'): $(server['amounts'][3])B<br/>
$T('thisWeek'): $(server['amounts'][2])B<br/>
$T('thisMonth'): $(server['amounts'][1])B<br/>
$T('custom'): <span id="server-data-value-${cur}"></span>
<p>
<b>$T('srv-bandwidth'):</b><br/>
$T('total'): $(server['amounts'][0])B<br/>
$T('today'): $(server['amounts'][3])B<br/>
$T('thisWeek'): $(server['amounts'][2])B<br/>
$T('thisMonth'): $(server['amounts'][1])B<br/>
$T('selectedDates'): <span id="server-bandwith-value-${cur}"></span>
</p>
<p title="$T('readwiki')">
<b>$T('srv-article-availability'):</b><br/>
$T('selectedDates'): <span id="server-article-value-${cur}"></span>
</p>
<!--#if $server['quota']#-->
<p><b>$T('quota-left'):</b> $(server['quota_left'])B</p>
<!--#end if#-->
</div>
<div class="server-chart" data-serverid="${cur}"s>
<div class="server-chart" data-serverid="${cur}">
<div id="server-chart-${cur}" class="ct-chart"></div>
</div>
<script type="text/javascript">
// Server data
serverData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
serverBandwithData[${cur}] = <!--#echo json.dumps($server['amounts'][4])#-->
serverArticleTries[${cur}] = <!--#echo json.dumps($server['amounts'][5])#-->
serverArticleFailed[${cur}] = <!--#echo json.dumps($server['amounts'][6])#-->
</script>
<!--#end if#-->
</div>
@@ -297,12 +331,14 @@
const labelStep = Math.round(nrDays/10)
// Save largest value
var maxVal = 0
var maxBandwith = 0
// For each chart
\$('.server-chart').each(function(j, elemn) {
const server_id = \$(elemn).data('serverid')
var totalThisRange = 0
var totalBandwithThisRange = 0
var totalArticlesTriedThisRange = 0
var totalArticlesFailedThisRange = 0
// Fill the data array
var data = {
@@ -326,25 +362,41 @@
const dateCheck = toFormattedDate(checkDate)
// Add data if we have it
if(dateCheck in serverData[server_id]) {
data['series'][0].push(serverData[server_id][dateCheck])
totalThisRange += serverData[server_id][dateCheck]
maxVal = Math.max(maxVal, serverData[server_id][dateCheck])
} else {
if(dateCheck in serverBandwithData[server_id]) {
data['series'][0].push(serverBandwithData[server_id][dateCheck])
totalBandwithThisRange += serverBandwithData[server_id][dateCheck]
maxBandwith = Math.max(maxBandwith, serverBandwithData[server_id][dateCheck])
} else {
data['series'][0].push(0)
}
// Article stats
if(dateCheck in serverArticleTries[server_id]) {
totalArticlesTriedThisRange += serverArticleTries[server_id][dateCheck]
totalArticlesFailedThisRange += serverArticleFailed[server_id][dateCheck]
}
}
// Update the text value
\$('#server-data-value-' + server_id).text(filesize(totalThisRange, {round: 1}))
\$('#server-bandwith-value-' + server_id).text(filesize(totalBandwithThisRange, {round: 1}))
// Save data in a very ugly way, but we need to do this
// Calculate article success ratio, if available
var articleRatio = Math.round(100 * (1 - totalArticlesFailedThisRange/totalArticlesTriedThisRange))
// If values were missing
if(!isNaN(articleRatio)) {
\$('#server-article-value-' + server_id).text('$T("srv-articles-tried")'.replace('%f', articleRatio).replace('%d', totalArticlesTriedThisRange))
} else {
\$('#server-article-value-' + server_id).text('$T("notAvailable")')
}
// Save bandwidth data in a very ugly way, but we need to do this
// so we can calculate the maximum Y-axis for all graphs
\$(elemn).data("chart-data", data)
})
// Set the maximum
chartOptions.axisY.high = maxVal;
chartOptions.axisY.high = maxBandwith
chartOptions.axisY.low = 0
// Update all the axis with the largest value and draw the graph

View File

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

View File

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

View File

@@ -1,5 +1,5 @@
<!--#set global $pane="Switches"#-->
<!--#set global $help_uri="configuration/3.1/switches"#-->
<!--#set global $help_uri="configuration/3.2/switches"#-->
<!--#include $webdir + "/_inc_header_uc.tmpl"#-->
<div class="colmask">

View File

@@ -162,6 +162,7 @@ input[type="checkbox"]+.desc {
float: none;
overflow: hidden;
min-width: 555px;
position: relative;
}
.Key tr:nth-child(odd),
.tab-pane tr:nth-child(odd),
@@ -553,15 +554,10 @@ tr.separator {
h2.activeRSS {
margin-bottom: 10px;
}
.activeRSS a, .activeRSS a:visited {
text-decoration: none;
.activeRSS a,
.activeRSS a:visited {
color: #000;
}
.activeRSS a:hover {
color: #4b4742;
}
.activeRSS a:first-of-type {
text-decoration: underline!important;
text-decoration: underline !important;
}
.favicon {
background-position: center center!important;
@@ -1173,6 +1169,27 @@ input[type="checkbox"] {
100% { transform: rotate(359deg); }
}
/***
RTL Fixes
***/
html[dir="rtl"] .col1 input[type='checkbox'],
html[dir="rtl"] .col2 h3 a {
left: 5px;
}
html[dir="rtl"] .modal-header .close {
float: left;
}
html[dir="rtl"] .Sorting .presets.float-left,
html[dir="rtl"] .checkbox-days {
float: none;
}
html[dir="rtl"] .Scheduling form[action="addSchedule"] input[type="checkbox"] {
right: 5px;
}
@media screen and (min-width: 1200px) {
.Categories input[name="dir"] {
max-width: 240px !important;

View File

@@ -5,8 +5,10 @@
<tr>
<th style="width: 25px;"></th>
<th></th>
<th class="table-status-header" data-bind="css: { 'table-header-status-smaller' : extraHistoryColumn }"></th>
<th class="table-header-extra" data-bind="css: { 'table-extra-header-visible' : extraHistoryColumn }"></th>
<th class="table-status-header" data-bind="css: { 'table-header-status-smaller' : extraHistoryColumns().length }"></th>
<!-- ko foreach: extraHistoryColumns -->
<th class="table-header-extra"></th>
<!-- /ko -->
<th style="width: 130px;"></th>
<th style="width: 60px;"></th>
</tr>
@@ -137,10 +139,11 @@
<!-- /ko -->
</td>
<td class="status row-wrap-text" data-bind="text: statusText()" onclick="showDetails(this)"></td>
<!-- ko foreach: parent.parent.extraHistoryColumns -->
<td class="row-extra-text" onclick="showDetails(this)">
<div class="row-wrap-text" data-bind="text: extraText">
</div>
<div class="row-wrap-text" data-bind="text: \$parent.showColumn(\$data)"></div>
</td>
<!-- /ko -->
<td class="history-completedon row-wrap-text" data-bind="text: completedOn(), attr: { 'data-timestamp': completed }" onclick="showDetails(this)"></td>
<td class="delete">
<div class="dropdown">

View File

@@ -26,13 +26,15 @@
<!-- /ko -->
<!-- ko foreach: allMessages -->
<tr>
<td class="table-messages-label">
<td class="table-messages-label" data-bind="attr: { 'colspan': 1 + !\$data.hasOwnProperty('clear') }">
<span class="label" data-bind="css: 'label-' + css, text: type"></span>
<span class="queue-message-text" data-bind="html: text"></span>
</td>
<!-- ko if: \$data.hasOwnProperty("clear") -->
<td class="table-messages-remove">
<!-- ko if: \$data.hasOwnProperty("clear") --><a href="#" data-bind="click: clear" class="hover-button"><span class="glyphicon glyphicon-remove"></span></a><!-- /ko -->
<a href="#" data-bind="click: clear" class="hover-button"><span class="glyphicon glyphicon-remove"></span></a>
</td>
<!-- /ko -->
</tr>
<!-- /ko -->
<!-- ko if: !hasMessages() && displayTabbed() -->

View File

@@ -152,7 +152,9 @@
<div class="col-sm-6">$T('dashboard-testDownload')</div>
<div class="col-sm-6">
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="100MB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 100 MB</a>
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="1000MB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 1000 MB</a>
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="1000MB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 1 GB</a>
<a href="#" class="btn btn-default" data-bind="click: testDownload" data-size="10GB" data-tooltip="true" data-placement="top" title="$T('dashboard-testDownload-explain')"><span class="glyphicon glyphicon-download-alt"></span> 10 GB</a>
</div>
</div>
<hr />
@@ -217,6 +219,10 @@
<span data-bind="text: servertotalconn"></span>
</div>
</div>
<div class="row">
<div class="col-sm-6">$T('Glitter-speed')</div>
<div class="col-sm-6"><span data-bind="text: serverbps"></span>B/s</div>
</div>
<div class="row" data-bind="visible: servererror()">
<div class="col-sm-12">
<div class="alert alert-danger">
@@ -367,8 +373,7 @@
<span class="label label-warning">&gt; 1200 pixels</span>
</label>
<div class="col-sm-4">
<select name="general-extra-column" class="form-control" data-bind="value: extraQueueColumn">
<option value="">$T('none')</option>
<select name="general-extra-column" class="form-control-multiselect form-control" data-bind="selectedOptions: extraQueueColumns" multiple="true">
<option value="category">$T('category')</option>
<option value="priority">$T('priority')</option>
<option value="processing">$T('swtag-pp')</option>
@@ -383,8 +388,7 @@
<span class="label label-warning">&gt; 1200 pixels</span>
</label>
<div class="col-sm-4">
<select name="general-extra-column" class="form-control" data-bind="value: extraHistoryColumn">
<option value="">$T('none')</option>
<select name="general-extra-column" class="form-control-multiselect form-control" data-bind="selectedOptions: extraHistoryColumns" multiple="true">
<option value="category">$T('category')</option>
<option value="size">$T('size')</option>
<option value="speed">$T('Glitter-speed')</option>
@@ -399,6 +403,14 @@
<input type="checkbox" name="displayCompact" value="true" data-bind="checked: displayCompact" />
</div>
</div>
<div class="form-group form-checkbox">
<label class="col-sm-6 control-label">
$T("Glitter-displayFullWidth")
</label>
<div class="col-sm-4">
<input type="checkbox" name="displayFullWidth" value="true" data-bind="checked: displayFullWidth" />
</div>
</div>
<div class="form-group form-checkbox">
<label class="col-sm-6 control-label">
$T("Glitter-displayTabbed")
@@ -434,14 +446,14 @@
<div id="modal-add-nzb" class="modal fade" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<form class="modal-content" data-bind="submit: addNZB">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal">&times;</button>
<h4 class="modal-title">$T('Glitter-addNZB')</h4>
</div>
<div class="modal-body form-horizontal">
<div class="row">
<form data-bind="submit: addNZBFromURL" class="col-sm-6">
<div class="col-sm-6">
<fieldset>
<legend class="row-wrap-text">$T('Glitter-addFromURL')</legend>
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$file_exts">
@@ -451,8 +463,8 @@
</span>
</div>
</fieldset>
</form>
<form data-bind="submit: addNZBFromFileForm" class="col-sm-6">
</div>
<div class="col-sm-6">
<fieldset>
<legend class="row-wrap-text">$T('Glitter-addFromFile')</legend>
<div class="input-group" data-tooltip="true" data-placement="bottom" title="$file_exts">
@@ -466,7 +478,7 @@
</span>
</div>
</fieldset>
</form>
</div>
</div>
<div class="clearfix"></div>
<hr />
@@ -512,7 +524,7 @@
</div>
<div class="clearfix"></div>
</div>
</div>
</form>
</div>
</div>
@@ -667,7 +679,7 @@
</tbody>
</table>
<hr/>
<p><small>Copyright (C) 2007-2020 The SABnzbd Team &lt;team@sabnzbd.org&gt;<br/>$T('yourRights') </small></p>
<p><small>Copyright (C) 2007-2021 The SABnzbd Team &lt;team@sabnzbd.org&gt;<br/>$T('yourRights') </small></p>
</div>
</div>
</div>

View File

@@ -67,8 +67,10 @@
<tr>
<th style="width: 25px;"></th>
<th></th>
<th class="table-header-extra" data-bind="css: { 'table-extra-header-visible' : extraQueueColumn }"></th>
<th class="table-header-progress" data-bind="css: { 'table-header-progress-smaller' : extraQueueColumn }"></th>
<!-- ko foreach: extraQueueColumns -->
<th class="table-header-extra"></th>
<!-- /ko -->
<th class="table-header-progress" data-bind="css: { 'table-header-progress-smaller' : extraQueueColumns().length }"></th>
<th style="width: 85px;"></th>
<th style="width: 60px;"></th>
</tr>
@@ -76,7 +78,7 @@
<!-- ko if: !hasQueue() -->
<tbody class="no-downloads">
<tr>
<td colspan="6">
<td colspan="6" data-bind="attr: { 'colspan': 5 + extraQueueColumns().length }">
<a href="#modal-add-nzb" class="hover-button" data-toggle="modal">
<span title="$T('Glitter-dragAndDrop')" data-tooltip="true"><span class="glyphicon glyphicon-plus-sign"></span> $T('Glitter-addNZB')</span>
</a>
@@ -118,10 +120,11 @@
<small data-bind="text: avg_age"></small>
</div>
</td>
<!-- ko foreach: parent.parent.extraQueueColumns -->
<td class="row-extra-text">
<div class="row-wrap-text" data-bind="text: extraText">
</div>
<div class="row-wrap-text" data-bind="text: \$parent.showColumn(\$data)"></div>
</td>
<!-- /ko -->
<td class="progress-indicator">
<div class="progress">
<div class="progress-bar progress-bar-info" data-bind="attr: { 'style': 'width: ' + percentage() + '%; background-color: ' + progressColor() + ';' }">

View File

@@ -1,6 +1,6 @@
<!DOCTYPE html>
<!--#set $active_lang=$active_lang.replace('_', '-').lower()#-->
<html lang="$active_lang" id="sabnzbd" data-bind="filedrop: { overlaySelector: '.main-filedrop', onFileDrop: addNZBFromFile }">
<html lang="$active_lang" <!--#if $rtl#-->dir="rtl"<!--#end if#--> id="sabnzbd" data-bind="filedrop: { overlaySelector: '.main-filedrop', onFileDrop: addNZBFromFile }">
<head>
<!--
Glitter V2
@@ -36,7 +36,7 @@
<link rel="stylesheet" type="text/css" href="./static/bootstrap/css/bootstrap.min.css?v=$version" />
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.css?v=$version" />
<link rel="stylesheet" type="text/css" href="./static/stylesheets/glitter.mobile.css?v=$version" media="all and (max-width: 768px)" />
<!--#if $color_scheme not in ('Default', '') #-->
<!--#if $color_scheme not in ('Light', '') #-->
<link rel="stylesheet" type="text/css" href="./static/stylesheets/colorschemes/${color_scheme}.css?v=$version"/>
<!--#end if#-->

View File

@@ -152,11 +152,8 @@ function Fileslisting(parent) {
// Activate with this weird URL "API"
callSpecialAPI("./nzb/" + self.currentItem.id + "/bulk_operation/", dataToSend).then(function() {
// Fade it out
$('.item-files-table input:checked:not(:disabled)').parents('tr').fadeOut(fadeOnDeleteDuration, function() {
// Set state of the check-all
setCheckAllState('#modal-item-files .multioperations-selector input[type="checkbox"]', '#modal-item-files .files-sortable input')
})
// Set state of the check-all
setCheckAllState('#modal-item-files .multioperations-selector input[type="checkbox"]', '#modal-item-files .files-sortable input')
})
}

View File

@@ -333,10 +333,10 @@ function HistoryModel(parent, data) {
return self.script_line();
});
// Extra history column
self.extraText = ko.pureComputed(function() {
// Extra history columns
self.showColumn = function(param) {
// Picked anything?
switch(self.parent.parent.extraHistoryColumn()) {
switch(param) {
case 'speed':
// Anything to calculate?
if(self.historyStatus.bytes() > 0 && self.historyStatus.download_time() > 0) {
@@ -359,7 +359,7 @@ function HistoryModel(parent, data) {
return self.historyStatus.size();
}
return;
})
};
// Format completion time
self.completedOn = ko.pureComputed(function() {
@@ -438,13 +438,10 @@ function HistoryModel(parent, data) {
value: self.nzo_id
}).then(function(response) {
if(response.status) {
// Fade and remove
$(event.currentTarget).parent().parent().fadeOut(fadeOnDeleteDuration, function() {
// Make sure no flickering (if there are more items left) and then remove
self.parent.isLoading(self.parent.totalItems() > 1)
self.parent.historyItems.remove(self);
self.parent.parent.refresh();
})
// Make sure no flickering (if there are more items left) and then remove
self.parent.isLoading(self.parent.totalItems() > 1)
self.parent.historyItems.remove(self);
self.parent.parent.refresh();
}
});
}

View File

@@ -15,10 +15,11 @@ function ViewModel() {
self.dateFormat = ko.observable('fromNow').extend({ persist: 'pageDateFormat' });
self.displayTabbed = ko.observable().extend({ persist: 'displayTabbed' });
self.displayCompact = ko.observable(false).extend({ persist: 'displayCompact' });
self.displayFullWidth = ko.observable(false).extend({ persist: 'displayFullWidth' });
self.confirmDeleteQueue = ko.observable(true).extend({ persist: 'confirmDeleteQueue' });
self.confirmDeleteHistory = ko.observable(true).extend({ persist: 'confirmDeleteHistory' });
self.extraQueueColumn = ko.observable('').extend({ persist: 'extraColumn' });
self.extraHistoryColumn = ko.observable('').extend({ persist: 'extraHistoryColumn' });
self.extraQueueColumns = ko.observableArray([]).extend({ persist: 'extraColumns' });
self.extraHistoryColumns = ko.observableArray([]).extend({ persist: 'extraHistoryColumns' });
self.showActiveConnections = ko.observable(false).extend({ persist: 'showActiveConnections' });
self.speedMetrics = { K: "KB/s", M: "MB/s", G: "GB/s" };
@@ -628,6 +629,37 @@ function ViewModel() {
}
})
// Save the rest in config if global-settings
var saveInterfaceSettings = function(newValue) {
if(self.useGlobalOptions()) {
var interfaceSettings = {
"dateFormat": self.dateFormat,
"extraQueueColumns": self.extraQueueColumns,
"extraHistoryColumns": self.extraHistoryColumns,
"displayCompact": self.displayCompact,
"displayFullWidth": self.displayFullWidth,
"displayTabbed": self.displayTabbed,
"confirmDeleteQueue": self.confirmDeleteQueue,
"confirmDeleteHistory": self.confirmDeleteHistory
};
callAPI({
mode: "set_config",
section: "misc",
keyword: "interface_settings",
value: ko.toJSON(interfaceSettings)
})
}
}
self.dateFormat.subscribe(saveInterfaceSettings);
self.extraQueueColumns.subscribe(saveInterfaceSettings);
self.extraHistoryColumns.subscribe(saveInterfaceSettings);
self.displayCompact.subscribe(saveInterfaceSettings);
self.displayFullWidth.subscribe(saveInterfaceSettings);
self.displayTabbed.subscribe(saveInterfaceSettings);
self.confirmDeleteQueue.subscribe(saveInterfaceSettings);
self.confirmDeleteHistory.subscribe(saveInterfaceSettings);
/***
Add NZB's
***/
@@ -639,55 +671,47 @@ function ViewModel() {
if(fileName) $('.btn-file em').text(fileName)
}
// From the upload
self.addNZBFromFileForm = function(form) {
// Add NZB form
self.addNZB = function(form) {
// Anything?
if(!$(form.nzbFile)[0].files[0]) {
$('.btn-file').attr('style', 'border-color: red !important')
setTimeout(function() { $('.btn-file').css('border-color', '') }, 2000)
if(!$(form.nzbFile)[0].files[0] && !$(form.nzbURL).val()) {
$('.btn-file, input[name="nzbURL"]').attr('style', 'border-color: red !important')
setTimeout(function() { $('.btn-file, input[name="nzbURL"]').css('border-color', '') }, 2000)
return false;
}
// Upload
self.addNZBFromFile($(form.nzbFile)[0].files);
// Hide modal, upload will reset the form
$("#modal-add-nzb").modal("hide");
}
// From URL
self.addNZBFromURL = function(form) {
// Anything?
if(!$(form.nzbURL).val()) {
$(form.nzbURL).attr('style', 'border-color: red !important')
setTimeout(function() { $(form.nzbURL).css('border-color', '') }, 2000)
return false;
}
// Build request
var theCall = {
mode: "addurl",
name: $(form.nzbURL).val(),
nzbname: $('#nzbname').val(),
password: $('#password').val(),
script: $('#modal-add-nzb select[name="Post-processing"]').val(),
priority: $('#modal-add-nzb select[name="Priority"]').val(),
pp: $('#modal-add-nzb select[name="Processing"]').val()
}
// Optional, otherwise they get mis-labeled if left empty
if($('#modal-add-nzb select[name="Category"]').val() != '*') theCall.cat = $('#modal-add-nzb select[name="Category"]').val()
if($('#modal-add-nzb select[name="Processing"]').val()) theCall.pp = $('#modal-add-nzb select[name="Category"]').val()
// Add
callAPI(theCall).then(function(r) {
// Hide and reset/refresh
self.refresh()
// Upload file using the method we also use for drag-and-drop
if($(form.nzbFile)[0].files[0]) {
self.addNZBFromFile($(form.nzbFile)[0].files);
// Hide modal, upload will reset the form
$("#modal-add-nzb").modal("hide");
form.reset()
$('#nzbname').val('')
});
} else if($(form.nzbURL).val()) {
// Or add URL
var theCall = {
mode: "addurl",
name: $(form.nzbURL).val(),
nzbname: $('#nzbname').val(),
password: $('#password').val(),
script: $('#modal-add-nzb select[name="Post-processing"]').val(),
priority: $('#modal-add-nzb select[name="Priority"]').val(),
pp: $('#modal-add-nzb select[name="Processing"]').val()
}
// Optional, otherwise they get mis-labeled if left empty
if($('#modal-add-nzb select[name="Category"]').val() != '*') theCall.cat = $('#modal-add-nzb select[name="Category"]').val()
if($('#modal-add-nzb select[name="Processing"]').val()) theCall.pp = $('#modal-add-nzb select[name="Category"]').val()
// Add
callAPI(theCall).then(function(r) {
// Hide and reset/refresh
self.refresh()
$("#modal-add-nzb").modal("hide");
form.reset()
$('#nzbname').val('')
});
}
}
// From the upload or filedrop
self.addNZBFromFile = function(files, fileindex) {
// First file
@@ -734,14 +758,13 @@ function ViewModel() {
// Refresh
self.refresh();
// Hide notification
hideNotification('.main-notification-box-uploading')
hideNotification(true)
// Reset the form
$('#modal-add-nzb form').trigger('reset');
$('#nzbname').val('')
$('.btn-file em').html(glitterTranslate.chooseFile + '&hellip;')
}
});
}
// Load status info
@@ -749,8 +772,11 @@ function ViewModel() {
// Full refresh? Only on click and for the status-screen
var statusFullRefresh = (event != undefined) && $('#options-status').hasClass('active');
// Make it spin
self.hasStatusInfo(false)
// Make it spin if the user requested it otherwise we don't,
// because browsers use a lot of CPU for the animation
if(statusFullRefresh) {
self.hasStatusInfo(false)
}
// Load the custom status info
callAPI({ mode: 'fullstatus', skip_dashboard: (!statusFullRefresh)*1 }).then(function(data) {
@@ -802,7 +828,8 @@ function ViewModel() {
'serveractiveconn': ko.observable(this.serveractiveconn),
'servererror': ko.observable(this.servererror),
'serveractive': ko.observable(this.serveractive),
'serverconnections': ko.observableArray(this.serverconnections)
'serverconnections': ko.observableArray(this.serverconnections),
'serverbps': ko.observable(this.serverbps)
})
})
} else {
@@ -818,7 +845,8 @@ function ViewModel() {
activeServer.serveractiveconn(this.serveractiveconn),
activeServer.servererror(this.servererror),
activeServer.serveractive(this.serveractive),
activeServer.serverconnections(this.serverconnections)
activeServer.serverconnections(this.serverconnections),
activeServer.serverbps(this.serverbps)
})
}
@@ -890,10 +918,9 @@ function ViewModel() {
clearInterval(connectionRefresh)
return
}
// Only when we show them
if(self.showActiveConnections()) {
self.loadStatusInfo()
}
// Update the server stats (speed/connections)
self.loadStatusInfo()
}, self.refreshRate() * 1000)
})
@@ -937,8 +964,6 @@ function ViewModel() {
callSpecialAPI("./status/" + $(htmlElement.currentTarget).data('action'), {
name: $("<div/>").html(folder).text()
}).then(function() {
// Remove item and load status data
$(htmlElement.currentTarget).parent().parent().fadeOut(fadeOnDeleteDuration)
// Refresh
self.loadStatusInfo(true, true)
// Hide notification
@@ -979,6 +1004,11 @@ function ViewModel() {
$('body').toggleClass('container-compact')
})
// Toggle full width
self.displayFullWidth.subscribe(function() {
$('body').toggleClass('container-full-width')
})
// Toggle Glitter's tabbed modus
self.displayTabbed.subscribe(function() {
$('body').toggleClass('container-tabbed')
@@ -1049,6 +1079,11 @@ function ViewModel() {
$('body').addClass('container-compact')
}
if(localStorageGetItem('displayFullWidth') === 'true') {
// Add extra class
$('body').addClass('container-full-width')
}
// Tabbed layout?
if(localStorageGetItem('displayTabbed') === 'true') {
$('body').addClass('container-tabbed')
@@ -1069,6 +1104,19 @@ function ViewModel() {
// Set queue limit
self.queue.paginationLimit(response.config.misc.queue_limit.toString())
// Import the rest of the settings
if(response.config.misc.interface_settings) {
var interfaceSettings = JSON.parse(response.config.misc.interface_settings);
self.dateFormat(interfaceSettings['dateFormat']);
self.extraQueueColumns(interfaceSettings['extraQueueColumns']);
self.extraHistoryColumns(interfaceSettings['extraHistoryColumns']);
self.displayCompact(interfaceSettings['displayCompact']);
self.displayFullWidth(interfaceSettings['displayFullWidth']);
self.displayTabbed(interfaceSettings['displayTabbed']);
self.confirmDeleteQueue(interfaceSettings['confirmDeleteQueue']);
self.confirmDeleteHistory(interfaceSettings['confirmDeleteHistory']);
}
}
// Set bandwidth limit

View File

@@ -440,7 +440,6 @@ function QueueListModel(parent) {
if(response.status) {
// Make sure the queue doesnt flicker and then fade-out
self.isLoading(true)
$('.delete input:checked').parents('tr').fadeOut(fadeOnDeleteDuration)
self.parent.refresh()
// Empty it
self.multiEditItems.removeAll();
@@ -567,10 +566,9 @@ function QueueModel(parent, data) {
return 'glyphicon-pause'
})
// Extra queue column
self.extraText = ko.pureComputed(function() {
// Picked anything?
switch(self.parent.parent.extraQueueColumn()) {
// Extra queue columns
self.showColumn = function(param) {
switch(param) {
case 'category':
// Exception for *
if(self.category() == "*")
@@ -590,7 +588,7 @@ function QueueModel(parent, data) {
return self.avg_age();
}
return;
})
};
// Every update
self.updateFromData = function(data) {
@@ -738,16 +736,13 @@ function QueueModel(parent, data) {
del_files: 1,
value: item.id
}).then(function(response) {
// Fade and remove
$(event.currentTarget).parent().parent().fadeOut(fadeOnDeleteDuration, function() {
// Make sure no flickering (if there are more items left) and then remove
self.parent.isLoading(self.parent.totalItems() > 1)
parent.queueItems.remove(itemToDelete);
parent.multiEditItems.remove(function(inList) { return inList.id == itemToDelete.id; })
self.parent.parent.refresh();
// Hide notifcation
hideNotification(true)
})
// Make sure no flickering (if there are more items left) and then remove
self.parent.isLoading(self.parent.totalItems() > 1)
parent.queueItems.remove(itemToDelete);
parent.multiEditItems.remove(function(inList) { return inList.id == itemToDelete.id; })
self.parent.parent.refresh();
// Hide notifcation
hideNotification(true)
});
}
};

View File

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

View File

@@ -248,6 +248,13 @@ hr {
border-top: none;
}
.form-control:focus,
input[type="submit"]:focus,
button:focus {
box-shadow: 0 0 0 0.25rem rgba(255, 255, 255, 0.3) !important;
outline: initial;
}
/* Placeholders - Will not work if grouped! */
::-webkit-input-placeholder {
color: #EBEBEB !important;

View File

@@ -1735,7 +1735,6 @@ input[name="nzbURL"] {
.container-compact .search-box .form-control {
height: 28px;
}
.container-compact,
.container-compact .dropdown-menu,
.container-compact .btn,
@@ -1761,6 +1760,9 @@ input[name="nzbURL"] {
.container-compact .form-control {
height: 29px;
}
.container-compact .form-control-multiselect {
height: 60px;
}
.container-compact .modal-header {
padding: 5px 12px;
}
@@ -1840,18 +1842,22 @@ input[name="nzbURL"] {
padding-top: 5px;
}
.container-full-width .container {
width: calc(100% - 60px);
}
/***
Dynamic sizing
***/
@media screen and (min-width: 1200px) {
.queue-table .table-extra-header-visible,
.history-table .table-extra-header-visible {
width: 10%;
.queue-table .table-header-extra,
.history-table .table-header-extra {
width: 6%;
}
.queue-table .table-header-progress-smaller,
.history-table .table-header-progress-smaller {
width: 35%;
width: 25%;
}
#options-interface .label {
@@ -1973,6 +1979,45 @@ input[name="nzbURL"] {
}
}
/***
RTL Fixes
***/
html[dir="rtl"] .navbar-nav {
padding-right: 0;
}
html[dir="rtl"] .queue h2,
html[dir="rtl"] .history h2 {
float: right;
}
html[dir="rtl"] .dropdown-menu {
text-align: right;
direction: rtl;
}
html[dir="rtl"] .speedlimit-dropdown,
html[dir="rtl"] .progress-indicator,
html[dir="rtl"] #modal-item-filelist,
html[dir="rtl"] #modal-item-files .modal-title,
html[dir="rtl"] .info-container-box,
html[dir="rtl"] .queue-table,
html[dir="rtl"] .history-table {
direction: ltr;
}
html[dir="rtl"] .search-box a {
right: initial;
left: 8px;
}
html[dir="rtl"] .navbar-logo,
html[dir="rtl"] .info-container,
html[dir="rtl"] .modal-header .close,
html[dir="rtl"] #modal-options .modal-header a {
float: left;
}
/***
Bootstrap overwrites

View File

@@ -28,7 +28,7 @@
</table>
<div class="sabnzbd_logo main_sprite_container sprite_sabnzbdplus_logo"></div>
<p><strong>SABnzbd $T('version'):</strong> $version</p>
<p><small>Copyright (C) 2008-2020 The SABnzbd Team &lt;team@sabnzbd.org&gt;</small></p>
<p><small>Copyright (C) 2008-2021 The SABnzbd Team &lt;team@sabnzbd.org&gt;</small></p>
<p><small>$T('yourRights')</small></p>
</div>

View File

Binary file not shown.

View File

@@ -1,6 +1,6 @@
#
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file EMAIL
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:

View File

@@ -1,6 +1,6 @@
#
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""
@@ -297,6 +297,10 @@ msgstr ""
msgid "Server address required"
msgstr ""
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -461,6 +465,16 @@ msgstr ""
msgid "Shutting down"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr ""
@@ -680,6 +694,10 @@ msgstr ""
msgid "m"
msgstr ""
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr ""
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1210,10 +1228,6 @@ msgstr ""
msgid "Idle"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr ""
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1238,8 +1252,9 @@ msgstr ""
msgid "Limit Speed"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr ""
#. #: Config->Scheduler
@@ -1288,10 +1303,6 @@ msgstr ""
msgid "History Last 10 Items"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr ""
@@ -1512,6 +1523,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -1903,11 +1918,6 @@ msgstr ""
msgid "hours"
msgstr ""
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr ""
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2003,6 +2013,10 @@ msgstr ""
msgid "This month"
msgstr ""
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr ""
@@ -2015,6 +2029,10 @@ msgstr ""
msgid "Custom"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "on"
msgstr ""
@@ -2813,6 +2831,10 @@ msgstr ""
msgid "Enable accessing the interface from a HTTPS address."
msgstr ""
#: sabnzbd/skintext.py
msgid "Modern web browsers and other clients will not accept self-signed certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr ""
@@ -3042,6 +3064,23 @@ msgstr ""
msgid "Location to store finished, fully processed downloads.<br /><i>Can be overruled by user-defined categories.</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr ""
#: sabnzbd/skintext.py
msgid "Downloading will automatically resume if the minimum free space is available again.<br />Applies to both the Temporary and Complete Download Folder.<br />Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr ""
@@ -3432,11 +3471,6 @@ msgstr ""
msgid "On which day of the month or week (1=Monday) does your ISP reset the quota? (Optionally with hh:mm)"
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr ""
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr ""
@@ -3584,6 +3618,18 @@ msgstr ""
msgid "Timeout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid "Quota for this account, counted from the time it is set. In bytes, optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3673,6 +3719,14 @@ msgstr ""
msgid "Personal notes"
msgstr ""
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3717,6 +3771,16 @@ msgstr ""
msgid "Force Download"
msgstr ""
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4398,11 +4462,11 @@ msgid "Date format"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4485,10 +4549,6 @@ msgstr ""
msgid "View Script Log"
msgstr ""
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr ""
#: sabnzbd/skintext.py
msgid "LocalStorage (cookies) are disabled in your browser, interface settings will be lost after you close the browser!"
msgstr ""
@@ -4502,11 +4562,11 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -1,16 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Pavel C <quoing_transifex@mess.cz>, 2020
# Safihre <safihre@sabnzbd.org>, 2020
# Pavel C <quoing_transifex@mess.cz>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: Pavel C <quoing_transifex@mess.cz>, 2021\n"
"Language-Team: Czech (https://www.transifex.com/sabnzbd/teams/111101/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -42,6 +42,7 @@ msgstr ""
#: 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
@@ -62,15 +63,15 @@ msgstr "Nalezen UNRAR verze %s, doporučujeme verzi %s nebo vyšší. <br />"
#. Error message
#: SABnzbd.py
msgid "unrar binary... NOT found"
msgstr "Program unrar... nenalezeno!"
msgstr "Program unrar... nenalezen!"
#: SABnzbd.py
msgid "7za binary... NOT found!"
msgstr "Program 7za... nenalezeno!"
msgstr "Program 7za... nenalezen!"
#: SABnzbd.py
msgid "unzip binary... NOT found!"
msgstr "Program unizip... nenalezeno!"
msgstr "Program unizip... nenalezen!"
#. Error message
#: SABnzbd.py
@@ -317,6 +318,10 @@ msgstr "%s není validní emailová adresa"
msgid "Server address required"
msgstr "Adresa serveru je vyžadována"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -467,7 +472,7 @@ msgstr "Příliš mnoho spojení k serveru %s"
#. Warning message
#: sabnzbd/downloader.py
msgid "Probable account sharing"
msgstr ""
msgstr "Pravděpodobné sdílení účtu"
#. Error message
#: sabnzbd/downloader.py
@@ -482,12 +487,22 @@ msgstr ""
#. Error message
#: sabnzbd/downloader.py
msgid "Suspect error in downloader"
msgstr ""
msgstr "Nejspíše chyba downloaderu"
#: sabnzbd/downloader.py, sabnzbd/skintext.py
msgid "Shutting down"
msgstr "Vypínání"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Připojení k poštovnímu serveru se nezdařilo"
@@ -510,7 +525,7 @@ msgstr "Žádná použitelná autentizační metoda nenalezena"
#: sabnzbd/emailer.py
msgid "Unknown authentication failure in mail server"
msgstr ""
msgstr "Neznámá chyba přihlášení k poštovnímu serveru"
#: sabnzbd/emailer.py
msgid "Failed to send e-mail"
@@ -522,12 +537,12 @@ msgstr "Nezdařilo se uzavřít spojení pro mail"
#: sabnzbd/emailer.py, sabnzbd/notifier.py, sabnzbd/rating.py
msgid "Cannot send, missing required data"
msgstr ""
msgstr "Nelze odeslat, chybějí požadovaná data"
#. Error message
#: sabnzbd/emailer.py
msgid "Cannot find email templates in %s"
msgstr ""
msgstr "Nepodařilo se najít poštovní šablony v %s"
#: sabnzbd/emailer.py
msgid "No recipients given, no email sent"
@@ -541,7 +556,7 @@ msgstr "Nelze číst %s"
#: sabnzbd/emailer.py
msgid "No email templates found"
msgstr ""
msgstr "Nenalezeny poštovní šablony"
#: sabnzbd/emailer.py
msgid ""
@@ -564,7 +579,7 @@ msgstr "Nelze vytvořit adresář %s"
#: sabnzbd/filesystem.py
msgid "%s directory: %s error accessing"
msgstr ""
msgstr "Adresář %s: chyba přístupu k %s"
#. Error message
#: sabnzbd/filesystem.py
@@ -574,16 +589,16 @@ msgstr "Nelze změnit oprávnění adresáře %s"
#. Error message
#: sabnzbd/filesystem.py
msgid "Failed making (%s)"
msgstr ""
msgstr "Chyba vytváření (%s)"
#. Error message
#: sabnzbd/filesystem.py, sabnzbd/postproc.py
msgid "Failed moving %s to %s"
msgstr ""
msgstr "Chyba přesunu %s do %s"
#: sabnzbd/interface.py
msgid "Refused connection with hostname \"%s\" from:"
msgstr ""
msgstr "Odmítnuté spojení s hostem \"%s\" z:"
#: sabnzbd/interface.py
msgid "User logged in to the web interface"
@@ -647,6 +662,7 @@ 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."
@@ -655,7 +671,7 @@ msgstr "Adresa serveru \"%s:%s\" není správná."
#. Config->RSS, tab header
#: sabnzbd/interface.py, sabnzbd/skintext.py
msgid "Feed"
msgstr ""
msgstr "Kanál"
#: sabnzbd/interface.py
msgid "Daily"
@@ -695,7 +711,7 @@ msgstr "vypnuto"
#: sabnzbd/interface.py
msgid "Undefined server!"
msgstr ""
msgstr "Nedefinovaný server!"
#: sabnzbd/interface.py
msgid ""
@@ -726,6 +742,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Dostupná aktualizace!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -823,7 +843,7 @@ msgstr ""
#: sabnzbd/newsunpack.py
msgid "Unpacking"
msgstr ""
msgstr "Rozbaluji"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, unable to find %s"
@@ -832,44 +852,45 @@ msgstr ""
#. Warning message
#: sabnzbd/newsunpack.py
msgid "ERROR: unable to find \"%s\""
msgstr ""
msgstr "CHYBA: nepodařilo se najít \"%s\""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, CRC error"
msgstr ""
msgstr "Rozbalování selhalo, CRC chyba"
#. Warning message
#: sabnzbd/newsunpack.py
msgid "ERROR: CRC failed in \"%s\""
msgstr ""
msgstr "CHYBA: CRC selhalo pro \"%s\""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, file too large for filesystem (FAT?)"
msgstr ""
"Rozbalování selhalo, soubor je příliš velký pro souborový systém (FAT?)"
#. Error message
#: sabnzbd/newsunpack.py
msgid "ERROR: File too large for filesystem (%s)"
msgstr ""
msgstr "CHYBA: Soubor je příliš velký pro souborový systém (%s)"
#. Error message
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, write error or disk is full?"
msgstr ""
msgstr "Rozbalování selhalo, chyba zápisu nebo plný disk?"
#. Error message
#: sabnzbd/newsunpack.py
msgid "ERROR: write error (%s)"
msgstr ""
msgstr "CHYBA: chyba zápisu (%s)"
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, path is too long"
msgstr ""
msgstr "Rozbalování selhalo, cesta k souboru je příliš dlouhá."
#. Error message
#: sabnzbd/newsunpack.py
msgid "ERROR: path too long (%s)"
msgstr ""
msgstr "CHYBA: cesta k souboru je příliš dlouhá (%s)"
#: sabnzbd/newsunpack.py
msgid "ERROR: %s"
@@ -898,7 +919,7 @@ msgstr ""
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
msgstr ""
msgstr "Zkouším 7zip s heslem \"%s\""
#: sabnzbd/newsunpack.py
msgid "7ZIP set \"%s\" is incomplete, cannot unpack"
@@ -906,11 +927,11 @@ msgstr ""
#: sabnzbd/newsunpack.py
msgid "Could not unpack %s"
msgstr ""
msgstr "Nelze robalit %s"
#: sabnzbd/newsunpack.py
msgid "Quick Checking"
msgstr ""
msgstr "Rychlá kontrola"
#. PP phase "repair"
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
@@ -977,7 +998,7 @@ msgstr "Opravuji"
#: sabnzbd/newsunpack.py
msgid "[%s] Repaired in %s"
msgstr ""
msgstr "[%s] opraveno v %s"
#: sabnzbd/newsunpack.py
msgid "Verifying repair"
@@ -1019,11 +1040,11 @@ msgstr ""
#: sabnzbd/newswrapper.py
msgid "Certificate not valid. This is most probably a server issue."
msgstr ""
msgstr "Certifikát není validní. Pravděpodobně chyba serveru."
#: sabnzbd/newswrapper.py
msgid "Server %s uses an untrusted certificate [%s]"
msgstr ""
msgstr "Server %s používá nedůvěryhodný certifikát [%s]"
#. Main menu item
#: sabnzbd/newswrapper.py, sabnzbd/skintext.py
@@ -1183,7 +1204,7 @@ msgstr "Ignoruji duplikátní NZB \"%s\""
#. Warning message
#: sabnzbd/nzbstuff.py
msgid "Failing duplicate NZB \"%s\""
msgstr ""
msgstr "Nezdařilo se duplikovat NZB \"%s\""
#. Warning message
#: sabnzbd/nzbstuff.py
@@ -1198,7 +1219,7 @@ msgstr "Pozastavuji duplikátní NZB \"%s\""
#. Warning message
#: sabnzbd/nzbstuff.py
msgid "Unwanted Extension in file %s (%s)"
msgstr ""
msgstr "Nechtěná přípona v souboru %s (%s)"
#: sabnzbd/nzbstuff.py
msgid "Aborted, cannot be completed"
@@ -1211,11 +1232,11 @@ msgstr "Chyba při importu %s"
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "DUPLICATE"
msgstr ""
msgstr "DUPLIKÁT"
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "ENCRYPTED"
msgstr ""
msgstr "ŠIFROVANÉ"
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "TOO LARGE"
@@ -1239,16 +1260,16 @@ msgstr "ČEKÁNÍ %s s"
#: sabnzbd/nzbstuff.py
msgid "PROPAGATING %s min"
msgstr ""
msgstr "PROPAGUJI %s min"
#: sabnzbd/nzbstuff.py
msgid "Downloaded in %s at an average of %sB/s"
msgstr ""
msgstr "Staženo do %s s průměrnou rychlostí %s B/s"
#. Job details page, file age column header
#: sabnzbd/nzbstuff.py, sabnzbd/skintext.py
msgid "Age"
msgstr ""
msgstr "Stáří"
#: sabnzbd/nzbstuff.py
msgid "%s articles were malformed"
@@ -1272,10 +1293,6 @@ msgstr "Výstrahy"
msgid "Idle"
msgstr "Nečinný"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Konfigurace"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1300,14 +1317,15 @@ msgstr "Vyprázdnit historii"
msgid "Limit Speed"
msgstr "Omezit rychlost"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr ""
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "minuta"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Scan watched folder"
msgstr ""
msgstr "Zkontrolovat sledovanou složku"
#: sabnzbd/osxmenu.py, sabnzbd/sabtray.py, sabnzbd/sabtraylinux.py
msgid "Read all RSS feeds"
@@ -1345,23 +1363,19 @@ msgstr ""
#: sabnzbd/osxmenu.py
msgid "Empty"
msgstr ""
msgstr "Prázdný"
#: sabnzbd/osxmenu.py
msgid "History Last 10 Items"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr ""
#: sabnzbd/osxmenu.py
msgid "Stopping..."
msgstr ""
msgstr "Zastavuji..."
#: sabnzbd/panic.py
msgid "Problem with"
@@ -1580,6 +1594,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -1974,11 +1992,6 @@ msgstr "hodina"
msgid "hours"
msgstr "hodin"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "minuta"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2074,6 +2087,10 @@ msgstr "Tento týden"
msgid "This month"
msgstr "Tento měsíc"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Dnes"
@@ -2086,6 +2103,10 @@ msgstr "Celkem"
msgid "Custom"
msgstr "Vlastní"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr ""
#: sabnzbd/skintext.py
msgid "on"
msgstr ""
@@ -2239,7 +2260,7 @@ msgstr "Složky"
#. Main menu item
#: sabnzbd/skintext.py
msgid "Switches"
msgstr ""
msgstr "Přepínače"
#. Main menu item
#: sabnzbd/skintext.py
@@ -2254,22 +2275,22 @@ msgstr "RSS"
#. Main menu item
#: sabnzbd/skintext.py
msgid "Notifications"
msgstr ""
msgstr "Upozornění"
#. Main menu item
#: sabnzbd/skintext.py
msgid "Email"
msgstr ""
msgstr "Email"
#. Main menu item
#: sabnzbd/skintext.py
msgid "Categories"
msgstr ""
msgstr "Kategorie"
#. Main menu item
#: sabnzbd/skintext.py
msgid "Sorting"
msgstr ""
msgstr "Řazení"
#. Main menu item
#: sabnzbd/skintext.py
@@ -2318,7 +2339,7 @@ msgstr "Přidat soubor"
#. Job category
#: sabnzbd/skintext.py
msgid "Category"
msgstr ""
msgstr "Kategorie"
#. Queue page table column header
#: sabnzbd/skintext.py
@@ -2333,17 +2354,17 @@ msgstr "Priorita"
#. Post processing pick list
#: sabnzbd/skintext.py
msgid "+Repair"
msgstr ""
msgstr "+Opravit"
#. Post processing pick list
#: sabnzbd/skintext.py
msgid "+Unpack"
msgstr ""
msgstr "+Rozbalit"
#. Post processing pick list
#: sabnzbd/skintext.py
msgid "+Delete"
msgstr ""
msgstr "+Smazat"
#. Post processing pick list: abbreviation for "+Repair"
#: sabnzbd/skintext.py
@@ -2363,12 +2384,12 @@ msgstr ""
#. Priority pick list
#: sabnzbd/skintext.py
msgid "Force"
msgstr ""
msgstr "Vynucené"
#. Priority pick list
#: sabnzbd/skintext.py
msgid "Stop"
msgstr ""
msgstr "Zastaveno"
#. Add NZB Dialog
#: sabnzbd/skintext.py
@@ -2443,7 +2464,7 @@ msgstr "Akce"
#. Queue page table, script selection menu
#: sabnzbd/skintext.py
msgid "Scripts"
msgstr ""
msgstr "Skripty"
#. Confirmation popup
#: sabnzbd/skintext.py
@@ -2453,12 +2474,12 @@ msgstr ""
#. Queue page button
#: sabnzbd/skintext.py
msgid "Purge NZBs"
msgstr ""
msgstr "Vymazat všechny NZB"
#. Queue page button
#: sabnzbd/skintext.py
msgid "Purge NZBs & Delete Files"
msgstr ""
msgstr "Vymazat všechny NZB a smazat soubory"
#. Retry all failed jobs dialog box
#: sabnzbd/skintext.py
@@ -2468,12 +2489,12 @@ msgstr "Opakovat všechny nedokončené úkoly"
#. Queue page button
#: sabnzbd/skintext.py
msgid "Remove NZB"
msgstr ""
msgstr "Odstranit NZB"
#. Queue page button
#: sabnzbd/skintext.py
msgid "Remove NZB & Delete Files"
msgstr ""
msgstr "Odstranit NZB a smazat soubory"
#. Queue page, as in "4G *of* 10G"
#: sabnzbd/skintext.py
@@ -2497,7 +2518,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Reset Quota now"
msgstr ""
msgstr "Vynulovat kvótu"
#. Confirmation popup
#: sabnzbd/skintext.py
@@ -2532,21 +2553,21 @@ msgstr "Velikost"
#. Button to delete all failed jobs in History
#: sabnzbd/skintext.py
msgid "Purge Failed NZBs"
msgstr ""
msgstr "Vymazat všechny selhalé NZB"
#: sabnzbd/skintext.py
msgid "Purge Failed NZBs & Delete Files"
msgstr ""
msgstr "Vymazat všechny selhalé NZB a smazat soubory"
#. Button to delete all completed jobs in History
#: sabnzbd/skintext.py
msgid "Purge Completed NZBs"
msgstr ""
msgstr "Vymazat všechny dokončené NZB"
#. Button to delete jobs on current page in History
#: sabnzbd/skintext.py
msgid "Purge NZBs on the current page"
msgstr ""
msgstr "Vymazat NZB na aktuální stránce"
#. Button to add NZB to failed job in History
#: sabnzbd/skintext.py
@@ -2556,7 +2577,7 @@ msgstr ""
#. Path as displayed in History details
#: sabnzbd/skintext.py
msgid "Path"
msgstr ""
msgstr "Cesta"
#. Retry all failed jobs in History
#: sabnzbd/skintext.py
@@ -2570,7 +2591,7 @@ msgstr "Opakovat všechny"
#: sabnzbd/skintext.py
msgid "Virus/spam"
msgstr ""
msgstr "Virus/spam"
#: sabnzbd/skintext.py
msgid "Out of retention"
@@ -2598,17 +2619,17 @@ msgstr ""
#. Status page button
#: sabnzbd/skintext.py
msgid "Show Logging"
msgstr ""
msgstr "Zobrazit protokol"
#. Status page button
#: sabnzbd/skintext.py
msgid "Test Email"
msgstr ""
msgstr "Otestovat email"
#. Status page selection menu
#: sabnzbd/skintext.py
msgid "Logging"
msgstr ""
msgstr "Protokol"
#. Status page table header
#: sabnzbd/skintext.py
@@ -2618,17 +2639,17 @@ msgstr "Chyby/výstrahy"
#. Status page logging selection value
#: sabnzbd/skintext.py
msgid "+ Info"
msgstr ""
msgstr "+ Info"
#. Status page logging selection value
#: sabnzbd/skintext.py
msgid "+ Debug"
msgstr ""
msgstr "+ Ladění"
#. Status page tab header - Server: amount of connections
#: sabnzbd/skintext.py
msgid "Connections"
msgstr ""
msgstr "Spojení"
#. Status page, table header
#: sabnzbd/skintext.py
@@ -2638,12 +2659,12 @@ msgstr "Poslední výstrahy"
#. Status page button
#: sabnzbd/skintext.py
msgid "clear"
msgstr ""
msgstr "vymazat"
#. Status page button
#: sabnzbd/skintext.py
msgid "Unblock"
msgstr ""
msgstr "Odblokovat"
#. Status page, article identifier
#: sabnzbd/skintext.py
@@ -2669,7 +2690,7 @@ msgstr ""
#. Status page, indicator that server is enabled
#: sabnzbd/skintext.py
msgid "Enabled"
msgstr ""
msgstr "Zapnuto"
#: sabnzbd/skintext.py
msgid "Dashboard"
@@ -2697,7 +2718,7 @@ msgstr "DNS server / DNS dotazy"
#: sabnzbd/skintext.py
msgid "CPU Model"
msgstr ""
msgstr "Model procesoru"
#. Do not translate Pystone
#: sabnzbd/skintext.py
@@ -2730,7 +2751,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Repeat test"
msgstr ""
msgstr "Opakovat test"
#: sabnzbd/skintext.py
msgid "Test download"
@@ -2791,11 +2812,11 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Enable Unzip"
msgstr ""
msgstr "Povolit Unzip"
#: sabnzbd/skintext.py
msgid "Enable 7zip"
msgstr ""
msgstr "Povolit 7zip"
#: sabnzbd/skintext.py
msgid "Multicore Par2"
@@ -2817,7 +2838,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Version"
msgstr ""
msgstr "Verze"
#: sabnzbd/skintext.py
msgid "Uptime"
@@ -2826,7 +2847,7 @@ msgstr ""
#. Indicates that server is Backup server in Status page
#: sabnzbd/skintext.py
msgid "Backup"
msgstr ""
msgstr "Záloha"
#. Notification Script settings
#: sabnzbd/skintext.py
@@ -2863,7 +2884,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Web Interface"
msgstr ""
msgstr "Webové rozhraní"
#: sabnzbd/skintext.py
msgid "Choose a skin."
@@ -2893,31 +2914,37 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Security"
msgstr ""
msgstr "Bezpečnost"
#: sabnzbd/skintext.py
msgid "Enable HTTPS"
msgstr ""
msgstr "Povolit HTTPS"
#: sabnzbd/skintext.py
msgid "not installed"
msgstr ""
msgstr "není nainstalováno"
#: sabnzbd/skintext.py
msgid "Enable accessing the interface from a HTTPS address."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS port"
#: sabnzbd/skintext.py
msgid "If empty, the standard port will only listen to HTTPS."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Certificate"
msgstr ""
msgstr "HTTPS certifikát"
#: sabnzbd/skintext.py
msgid "File name or path to HTTPS Certificate."
@@ -2960,11 +2987,11 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Maximum line speed"
msgstr ""
msgstr "Maximální rychlost linky"
#: sabnzbd/skintext.py
msgid "Percentage of line speed"
msgstr ""
msgstr "Procento rychlosti linky"
#: sabnzbd/skintext.py
msgid "Which percentage of the linespeed should SABnzbd use, e.g. 50"
@@ -3018,19 +3045,19 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Jobs"
msgstr ""
msgstr "Úlohy"
#: sabnzbd/skintext.py
msgid "Save Changes"
msgstr ""
msgstr "Uložit změny"
#: sabnzbd/skintext.py
msgid "Restore Defaults"
msgstr ""
msgstr "Obnovit výchozí"
#: sabnzbd/skintext.py
msgid "Reset"
msgstr ""
msgstr "Reset"
#: sabnzbd/skintext.py
msgid "Language"
@@ -3038,7 +3065,7 @@ msgstr "Jazyk"
#: sabnzbd/skintext.py
msgid "Select a web interface language."
msgstr ""
msgstr "Vyberte jazyk webového rozhraní."
#: sabnzbd/skintext.py
msgid ""
@@ -3062,7 +3089,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Generate New Key"
msgstr ""
msgstr "Generovat nový klíč"
#. Explanation for QR code of APIKEY
#: sabnzbd/skintext.py
@@ -3120,7 +3147,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "User Folders"
msgstr ""
msgstr "Uživatelská složka"
#: sabnzbd/skintext.py
msgid "Browse"
@@ -3160,6 +3187,26 @@ msgid ""
"overruled by user-defined categories.</i>"
msgstr ""
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr ""
@@ -3190,7 +3237,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Scripts Folder"
msgstr ""
msgstr "Složka se skripty"
#: sabnzbd/skintext.py
msgid "Folder containing user scripts."
@@ -3308,7 +3355,7 @@ msgstr ""
#: sabnzbd/skintext.py
msgid "Detect Duplicate Downloads"
msgstr ""
msgstr "Detekovat duplicitní stahování"
#: sabnzbd/skintext.py
msgid ""
@@ -3586,11 +3633,6 @@ msgid ""
"(Optionally with hh:mm)"
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr ""
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr ""
@@ -3742,6 +3784,21 @@ msgstr ""
msgid "Timeout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3833,6 +3890,14 @@ msgstr ""
msgid "Personal notes"
msgstr ""
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3881,6 +3946,16 @@ msgstr ""
msgid "Force Download"
msgstr ""
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4572,11 +4647,11 @@ msgid "Date format"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4659,10 +4734,6 @@ msgstr ""
msgid "View Script Log"
msgstr ""
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4678,11 +4749,11 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -321,6 +321,10 @@ msgstr "%s er ikke en godkendt e-mail adresse"
msgid "Server address required"
msgstr "Kræver serveradresse"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -490,6 +494,16 @@ msgstr "Suspect fejl i downloader"
msgid "Shutting down"
msgstr "Påbegynder lukning af SABnzbd"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Det lykkedes ikke at tilslutte mailserver"
@@ -741,6 +755,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Opdatering tilgængelig!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1284,10 +1302,6 @@ msgstr "Advarsler"
msgid "Idle"
msgstr "Inaktiv"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Opsætning"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1312,9 +1326,10 @@ msgstr "Tøm historik"
msgid "Limit Speed"
msgstr "Hastighedsbegrænsning"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "minut"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1363,10 +1378,6 @@ msgstr "Tom"
msgid "History Last 10 Items"
msgstr "Historik (de 10 seneste poster)"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Ny version tilgængelig"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Gå til guiden"
@@ -1620,6 +1631,10 @@ msgstr "RAR filer kontrolleres med succes"
msgid "RAR files failed to verify"
msgstr "RAR filer kunne ikke bekræfte"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2016,11 +2031,6 @@ msgstr "time"
msgid "hours"
msgstr "timer"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "minut"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2116,6 +2126,10 @@ msgstr "Denne uge"
msgid "This month"
msgstr "Denne måned"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "I dag"
@@ -2128,6 +2142,10 @@ msgstr "Totalt"
msgid "Custom"
msgstr "Tilpasse"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Hastighed"
#: sabnzbd/skintext.py
msgid "on"
msgstr "på"
@@ -2960,6 +2978,12 @@ msgstr "ikke installeret"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Aktiver adgang til interface fra en HTTPS-adresse."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS Port"
@@ -3232,6 +3256,26 @@ msgstr ""
"Sted at opbevare færdige, fuldt forarbejdede downloads.<br /><i>Kan "
"tilsidesættes af bruger-definerede kategorier.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatisk genoptag"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Tilladelser til fuldførte overførsler"
@@ -3689,11 +3733,6 @@ msgstr ""
"På hvilken dag i måneden eller ugen (1 = mandag) nulstiller din "
"internetudbyder kvota? (Valgfrit med tt: mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatisk genoptag"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Skal download genoptages efter kvotaen er nulstillet?"
@@ -3848,6 +3887,21 @@ msgstr "Adgangskode"
msgid "Timeout"
msgstr "Tidsudløb"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3940,6 +3994,14 @@ msgstr "Send gruppe kommandoen, før du anmoder om artikler."
msgid "Personal notes"
msgstr "Personlige notater"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3992,6 +4054,16 @@ msgstr "Læs Feed"
msgid "Force Download"
msgstr "Gennemtving download"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4693,12 +4765,12 @@ msgid "Date format"
msgstr "Datoformat"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Ekstra kø kolonne"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Ekstra kolonne historie"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "page"
@@ -4780,10 +4852,6 @@ msgstr "Skjul/vis komplette filer"
msgid "View Script Log"
msgstr "Vis scriptlog"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Opdatering tilgængelig!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4801,12 +4869,12 @@ msgid "Compact layout"
msgstr "Kompakt layout"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Tabbed layout <br/>(separat kø og historie)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Hastighed"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Tabbed layout <br/>(separat kø og historie)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,19 +1,18 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# N S <reloxx@interia.pl>, 2020
# Safihre <safihre@sabnzbd.org>, 2020
# C E <githubce@eiselt.ch>, 2020
# Nikolai Bohl <n.kay01@gmail.com>, 2020
# hotio, 2020
# reloxx13 <reloxx@interia.pl>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: hotio, 2020\n"
"Last-Translator: reloxx13 <reloxx@interia.pl>, 2021\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -333,6 +332,10 @@ msgstr "%s ist keine gültige E-Mail-Adresse"
msgid "Server address required"
msgstr "Server-Adresse wird benötigt"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -510,6 +513,16 @@ msgstr "Vermute Fehler im Downloader"
msgid "Shutting down"
msgstr "Wird beendet …"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Verbindung zum Mail-Server konnte nicht hergestellt werden"
@@ -769,10 +782,14 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Neue Version verfügbar!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
msgstr "Hochladen der Datei %s fehlgeschlagen"
msgstr "Hochladen fehlgeschlagen: %s"
#. Error message
#: sabnzbd/misc.py
@@ -792,7 +809,7 @@ msgstr ""
#. Warning message
#: sabnzbd/misc.py
msgid "Failed to read the password file %s"
msgstr "Konnte die Passwortdatei %s nicht lesen"
msgstr "Die Passwortdatei %s konnte nicht gelesen werden"
#. Error message
#: sabnzbd/misc.py
@@ -1325,10 +1342,6 @@ msgstr "Warnungen"
msgid "Idle"
msgstr "Leerlauf"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Einstellungen"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1353,9 +1366,10 @@ msgstr "Verlauf leeren"
msgid "Limit Speed"
msgstr "Geschwindigkeit begrenzen"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "Min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "Minuten"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1404,10 +1418,6 @@ msgstr "Leer"
msgid "History Last 10 Items"
msgstr "Verlauf mit den letzten 10 Einträgen"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Neue Version verfügbar"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Assistent öffnen"
@@ -1673,6 +1683,10 @@ msgstr "RAR-Datei erfolgreich überprüft"
msgid "RAR files failed to verify"
msgstr "RAR-Datei konnten nicht überprüft werden"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2069,11 +2083,6 @@ msgstr "Stunde"
msgid "hours"
msgstr "Stunden"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "Minuten"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2169,6 +2178,10 @@ msgstr "Diese Woche"
msgid "This month"
msgstr "Dieser Monat"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr "Ausgewählter Datumsbereich"
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Heute"
@@ -2181,6 +2194,10 @@ msgstr "Gesamt"
msgid "Custom"
msgstr "Benutzerdefiniert"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Geschwindigkeit"
#: sabnzbd/skintext.py
msgid "on"
msgstr "An"
@@ -3028,6 +3045,15 @@ msgstr "nicht installiert"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Zugriff auf die Oberfläche über HTTPS-Adressen erlauben"
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
"Moderne Webbrowser und andere Clients akzeptieren keine selbstsignierten "
"Zertifikate und geben eine Warnung aus und/oder stellen gar keine Verbindung"
" her."
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS-Port"
@@ -3311,6 +3337,31 @@ msgstr ""
"Hier werden fertige, verarbeitete Downloads abgelegt.<br /><i>Kann von "
"benutzerdefinierten Kategorien ausser Kraft gesetzt werden.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Minimaler freier Speicherplatz im Download Ordner"
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
"Funktioniert nicht, wenn sich der Kategorie Ordner auf einer anderen "
"Festplatte befindet."
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatisch fortsetzen"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
"Das Herunterladen wird automatisch fortgesetzt, wenn der minimale freie Speicherplatz wieder verfügbar ist. <br />\n"
"Gilt sowohl für den temporären als auch für den Download Ordner.<br />\n"
"Wird alle paar Minuten überprüft."
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Rechte für fertige Downloads"
@@ -3792,11 +3843,6 @@ msgstr ""
"An welchem Tag des Monats oder der Woche (1=Montag) setzt Ihr ISP das "
"Kontingent zurück (optional mit hh:mm)?"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatisch fortsetzen"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr ""
@@ -3960,6 +4006,21 @@ msgstr "Passwort"
msgid "Timeout"
msgstr "Zeitüberschreitung"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -4053,6 +4114,14 @@ msgstr "Gruppen-Befehl senden, bevor Artikeln angefordert werden."
msgid "Personal notes"
msgstr "Persönliche Notizen"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr "Verfügbarkeit der Artikel"
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr "%f vorhanden von %d angefragten Artikeln"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -4105,6 +4174,16 @@ msgstr "Feed lesen"
msgid "Force Download"
msgstr "Download erzwingen"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4810,12 +4889,12 @@ msgid "Date format"
msgstr "Datumsformat"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Extra Warteschlangen-Spalte"
msgid "Extra queue columns"
msgstr "Weitere Warteschlangen Spalten"
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Extra Verlauf-Spalte"
msgid "Extra history columns"
msgstr "Weitere Verlauf Spalten"
#: sabnzbd/skintext.py
msgid "page"
@@ -4897,10 +4976,6 @@ msgstr "Vollendete Dateien anzeigen/verstecken"
msgid "View Script Log"
msgstr "Skript-Protokoll anzeigen"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Neue Version verfügbar!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4918,12 +4993,12 @@ msgid "Compact layout"
msgstr "Kompaktes Layout"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Tab Layout <br/>(separate Warteschlange und Verlauf)"
msgid "Always use full screen width"
msgstr "Benutze die volle Fensterbreite"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Geschwindigkeit"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Tab Layout <br/>(separate Warteschlange und Verlauf)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,16 +1,17 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Ester Molla Aragones <moarages@gmail.com>, 2020
# Safihre <safihre@sabnzbd.org>, 2020
# 1024mb <angelb2203@gmail.com>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: 1024mb <angelb2203@gmail.com>, 2020\n"
"Language-Team: Spanish (https://www.transifex.com/sabnzbd/teams/111101/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -45,14 +46,15 @@ msgstr ""
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc deshabilitado: ¡no se ha encontrado la versión correcta! (Se ha "
"encontrado v%s, se anticipaba v%s)"
"encontrado la v%s, se esperaba la v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
"Módulo SABYenc... NO encontrado. Se exige v%s - https://sabnzbd.org/sabyenc"
"Módulo SABYenc... ¡NO encontrado! Se esperaba la v%s - "
"https://sabnzbd.org/sabyenc"
#. Error message
#: SABnzbd.py
@@ -333,6 +335,10 @@ msgstr "%s no es una dirección de correo electrónico válida."
msgid "Server address required"
msgstr "Se necesita la dirección del servidor"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -508,6 +514,16 @@ msgstr "Error sospechoso en downloader"
msgid "Shutting down"
msgstr "Apagando"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "No se pudo conectar al servidor de correo"
@@ -762,6 +778,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "¡Actualización Disponible!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1327,10 +1347,6 @@ msgstr "Advertencias"
msgid "Idle"
msgstr "Inactivo"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Configuración"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1355,9 +1371,10 @@ msgstr "Purgar historial"
msgid "Limit Speed"
msgstr "Limitar Velocidad"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "mín."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "mín"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1406,10 +1423,6 @@ msgstr "Vacía"
msgid "History Last 10 Items"
msgstr "Histórico últimos 10 elementos"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Nueva versión disponible"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Ir al Asistente"
@@ -1672,6 +1685,10 @@ msgstr "Los archivos RAR se han verificado con éxito"
msgid "RAR files failed to verify"
msgstr "No se han podido verificar los archivos RAR"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2072,11 +2089,6 @@ msgstr "hora"
msgid "hours"
msgstr "horas"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "mín"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2172,6 +2184,10 @@ msgstr "Esta semana"
msgid "This month"
msgstr "Este mes"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Hoy"
@@ -2184,6 +2200,10 @@ msgstr "Total"
msgid "Custom"
msgstr "Personalizar"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Velocidad"
#: sabnzbd/skintext.py
msgid "on"
msgstr "activado"
@@ -3031,6 +3051,12 @@ msgstr "no instalado"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Habilia el acceso a la interfaz con una dirección HTTPS"
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "Puerto HTTPS"
@@ -3313,6 +3339,26 @@ msgstr ""
"Ubicación donde guardar descargas finalizadas, totalmente procesaddas.<br "
"/><i>Puede ser obviado debido a categorías definidas por el usuario.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Auto reanudar"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Permisos para descargas completadas"
@@ -3789,11 +3835,6 @@ msgstr ""
"En qué día del mes o semana (1=Lunes) resetea tu proveedor la cuota mensual?"
" (Opcional con hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Auto reanudar"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "¿Deberían las descargas resumirse tras reiniciarse la cuota?"
@@ -3954,6 +3995,21 @@ msgstr "Contraseña"
msgid "Timeout"
msgstr "Expiración del plazo (Timeout)"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -4050,6 +4106,14 @@ msgstr "Enviar comando group antes de solicitar los artículos."
msgid "Personal notes"
msgstr "Notas personales"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -4102,6 +4166,16 @@ msgstr "Leer Fuente"
msgid "Force Download"
msgstr "Forzar Descarga"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4809,12 +4883,12 @@ msgid "Date format"
msgstr "Formato de fecha"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Columna de cola extra"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Columna de historia adicional"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "page"
@@ -4896,10 +4970,6 @@ msgstr "Ocultar/Mostrar ficheros completados"
msgid "View Script Log"
msgstr "Ver bitacora de Scripts"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "¡Actualización Disponible!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4917,12 +4987,12 @@ msgid "Compact layout"
msgstr "Diseño compacto"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Diseño de pestañas<br/>(separa la cola de espera y la historia)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Velocidad"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Diseño de pestañas<br/>(separa la cola de espera y la historia)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -318,6 +318,10 @@ msgstr "%s ei ole kelvollinen sähköpostiosoite"
msgid "Server address required"
msgstr "Palvelimen osoite vaaditaan"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -486,6 +490,16 @@ msgstr "Mahdollinen virhe lataajassa"
msgid "Shutting down"
msgstr "Sammutetaan"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Postipalvelimeen yhdistäminen epäonnistui"
@@ -737,6 +751,10 @@ msgstr "t"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Päivitys saatavilla!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1277,10 +1295,6 @@ msgstr "Varoitukset"
msgid "Idle"
msgstr "Toimeton"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Asetukset"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1305,9 +1319,10 @@ msgstr "Tyhjennä historia"
msgid "Limit Speed"
msgstr "Nopeusrajoitus"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "minuutti"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1356,10 +1371,6 @@ msgstr "Tyhjä"
msgid "History Last 10 Items"
msgstr "Vie viimeiset 10 kohdetta historiaan"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Uusi versio saatavilla"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Mene velhoon"
@@ -1613,6 +1624,10 @@ msgstr "RAR arkistot varmennettiin onnistuneesti"
msgid "RAR files failed to verify"
msgstr "RAR arkistoja ei voitu varmentaa"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2007,11 +2022,6 @@ msgstr "tunti"
msgid "hours"
msgstr "tuntia"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "minuutti"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2107,6 +2117,10 @@ msgstr "Tällä viikolla"
msgid "This month"
msgstr "Tässä kuussa"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Tänään"
@@ -2119,6 +2133,10 @@ msgstr "Yhteensä"
msgid "Custom"
msgstr "Mukautettu"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Nopeus"
#: sabnzbd/skintext.py
msgid "on"
msgstr "käytössä"
@@ -2952,6 +2970,12 @@ msgstr "ei asennettu"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Ota käyttöön käyttöliittymän käyttäminen HTTPS-osoitteesta."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS portti"
@@ -3231,6 +3255,26 @@ msgstr ""
"Sijainti jonne tallennetaan valmistuneet ja täysin käsitellyt ladatut "
"kohteet.<br /><i>Käyttäjän asettamat kategoriat voivat kumota tämän.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Jatka automaattisesti"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Käyttöoikeudet valmistuneille latauksille"
@@ -3690,11 +3734,6 @@ msgstr ""
"Minä päivänä kuusta tai viikosta (1=Maanantai) palveluntarjoajasi resetoi "
"rajoituksen? (Voit syöttää kellonajan perään hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Jatka automaattisesti"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Pitäisikö latauksia jatkaa kun latausrajoitus on resetoitu?"
@@ -3848,6 +3887,21 @@ msgstr "Salasana"
msgid "Timeout"
msgstr "Aikakatkaisu"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3939,6 +3993,14 @@ msgstr "Lähettää ryhmäkomennon ennen artikkeleiden pyytämistä."
msgid "Personal notes"
msgstr "Henkilökohtaiset huomautukset"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3991,6 +4053,16 @@ msgstr "Lue syöte"
msgid "Force Download"
msgstr "Pakota lataus"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4694,12 +4766,12 @@ msgid "Date format"
msgstr "Päivämäärän muoto"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Ylimääräisen jonon sarake"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Ylimääräinen historiasarake"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "page"
@@ -4781,10 +4853,6 @@ msgstr "Piilota/näytä valmistuneet tiedostot"
msgid "View Script Log"
msgstr "Näytä skriptien loki"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Päivitys saatavilla!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4803,12 +4871,12 @@ msgid "Compact layout"
msgstr "Tiivis käyttöliittymä"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Välilehditetty käyttöliittymä <br/>(erillinen jono ja historia)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Nopeus"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Välilehditetty käyttöliittymä <br/>(erillinen jono ja historia)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,16 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Fred L <88com88@gmail.com>, 2020
# Fred L <88com88@gmail.com>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2020\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -336,6 +336,10 @@ msgstr "%s n'est pas une adresse email valide"
msgid "Server address required"
msgstr "Adresse du serveur requise"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s n'est pas un script valide"
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -511,6 +515,16 @@ msgstr "Erreur suspecte dans le téléchargeur"
msgid "Shutting down"
msgstr "Arrêt en cours..."
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr "Le serveur %s expirera dans %s jour(s)"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr "Le serveur %s a utilisé le quota spécifié"
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Échec de connexion au serveur de messagerie"
@@ -769,6 +783,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Mise à Jour disponible!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1324,10 +1342,6 @@ msgstr "Avertissements"
msgid "Idle"
msgstr "A l'arrêt"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Configuration"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1352,9 +1366,10 @@ msgstr "Vider l'historique"
msgid "Limit Speed"
msgstr "Limiter la vitesse"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1403,10 +1418,6 @@ msgstr "Vide"
msgid "History Last 10 Items"
msgstr "Historique des 10 derniers articles"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Nouvelle version disponible"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Aller à l'assistant"
@@ -1672,6 +1683,10 @@ msgstr "Fichiers RAR vérifiés avec succès"
msgid "RAR files failed to verify"
msgstr "Echec lors de la vérification des fichiers RAR"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr "Essai avec le renommeur RAR"
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2069,11 +2084,6 @@ msgstr "heure"
msgid "hours"
msgstr "heures"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2169,6 +2179,10 @@ msgstr "Cette semaine"
msgid "This month"
msgstr "Ce mois"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr "Plage de dates sélectionnée"
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Aujourd'hui"
@@ -2181,6 +2195,10 @@ msgstr "Total"
msgid "Custom"
msgstr "Personnalisé"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Vitesse"
#: sabnzbd/skintext.py
msgid "on"
msgstr "oui"
@@ -3029,6 +3047,15 @@ msgstr "non installé"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Active l'accès à l'interface via une adresse HTTPS."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
"Les navigateurs web modernes et les autres clients n'accepteront pas les "
"certificats auto-signés et donneront un avertissement et / ou ne se "
"connecteront pas du tout."
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "Port HTTPS"
@@ -3312,6 +3339,31 @@ msgstr ""
"Emplacement des téléchargements terminés et post-traités.<br /><i>Peut être "
"outrepassé par les catégories définies par l'utilisateur.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Espace libre minimum pour le dossier des téléchargements terminés"
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
"Ne fonctionnera pas si un dossier de catégorie se trouve sur un autre "
"disque."
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Reprise auto"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
"Le téléchargement reprendra automatiquement si l'espace libre minimum est à "
"nouveau disponible.<br />S'applique aux dossiers de téléchargements "
"temporaires et terminés.<br />Vérifié toutes les quelques minutes."
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Permissions pour le dossier de téléchargements terminés"
@@ -3796,11 +3848,6 @@ msgstr ""
"A quel jour du mois ou de la semaine (1=lundi) votre fournisseur "
"réinitialise le quota ? (Optionnel avec hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Reprise auto"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr ""
@@ -3961,6 +4008,24 @@ msgstr "Mot de passe"
msgid "Timeout"
msgstr "Délai d'expiration"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr "Date d'expiration du compte"
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr "Avertir 5 jours avant la date d'expiration du compte."
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
"Quota pour ce compte calculé à partir du moment où il est défini. En octets,"
" éventuellement suivi de K,M,G.<br />Avertir quand il atteint 0, vérifié "
"toutes les quelques minutes."
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -4056,6 +4121,14 @@ msgstr "Envoyer la commande 'group' avant la demande des articles."
msgid "Personal notes"
msgstr "Notes personnelles"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr "Disponibilité de l'article"
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr "%f% disponibles sur %d articles demandés"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -4109,6 +4182,16 @@ msgstr "Lire le flux RSS"
msgid "Force Download"
msgstr "Forcer le téléchargement"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4818,12 +4901,12 @@ msgid "Date format"
msgstr "Format de la date"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Colonne de file d'attente supplémentaire"
msgid "Extra queue columns"
msgstr "Colonnes de file d'attente supplémentaires"
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Colonne d'historique additionnelle"
msgid "Extra history columns"
msgstr "Colonnes d'historique supplémentaires"
#: sabnzbd/skintext.py
msgid "page"
@@ -4905,10 +4988,6 @@ msgstr "Afficher/masquer les fichiers terminés"
msgid "View Script Log"
msgstr "Afficher le journal des scripts"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Mise à Jour disponible!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4928,12 +5007,12 @@ msgid "Compact layout"
msgstr "Affichage compact"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Mise en page par onglets <br/>(file d'attente et historique séparés)"
msgid "Always use full screen width"
msgstr "Toujours utiliser la largeur totale de l'écran"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Vitesse"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Mise en page par onglets <br/>(file d'attente et historique séparés)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -315,6 +315,10 @@ msgstr "%s er ikke en godkjent e-post-adresse"
msgid "Server address required"
msgstr "Krever server-adresse"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -482,6 +486,16 @@ msgstr "Mistenker feil i nedlaster"
msgid "Shutting down"
msgstr "Starter avslutning av SABnzbd.."
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Kunne ikke koble til mailserver"
@@ -733,6 +747,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Oppdatering tilgjengelig"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1274,10 +1292,6 @@ msgstr "Advarsler"
msgid "Idle"
msgstr "Ledig"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Konfigurasjon"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1302,9 +1316,10 @@ msgstr "Slett historikk"
msgid "Limit Speed"
msgstr "Hastighetsbegrensning"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "minutt"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1353,10 +1368,6 @@ msgstr "Tom"
msgid "History Last 10 Items"
msgstr "Historikk (10 siste)"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Ny utgave er tilgjengelig"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Gå til guiden"
@@ -1610,6 +1621,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2004,11 +2019,6 @@ msgstr "time"
msgid "hours"
msgstr "timer"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "minutt"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2104,6 +2114,10 @@ msgstr "Denne uken"
msgid "This month"
msgstr "Denne måneden"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "I dag"
@@ -2116,6 +2130,10 @@ msgstr "Totalt"
msgid "Custom"
msgstr "Tilpasse"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Hastighet"
#: sabnzbd/skintext.py
msgid "on"
msgstr "på"
@@ -2948,6 +2966,12 @@ msgstr "(ikke installert)"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Aktiverer tilgangen til webgrensesnittet med HTTPS adresse."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS-port"
@@ -3217,6 +3241,26 @@ msgstr ""
"Plass for å lagre bearbeidede og ferdige nedlastinger.<br /><i>Kan "
"overstyres av brukerdefinerte kategorier.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Gjenoppta automatisk"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Rettigheter for ferdige nedlastinger"
@@ -3665,11 +3709,6 @@ msgstr ""
"På hvilken dag i måneden eller uken (1=mandag) resetter til nettilbyder "
"kvoten? (Valgfritt med tt:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Gjenoppta automatisk"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Skal nedlasting starte på nytt etter at kvoten er resatt?"
@@ -3824,6 +3863,21 @@ msgstr "Passord"
msgid "Timeout"
msgstr "Tidsavbrudd"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3915,6 +3969,14 @@ msgstr "Send gruppekommando før du ber om artikler."
msgid "Personal notes"
msgstr "Persolige notater"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3967,6 +4029,16 @@ msgstr "Les kilde"
msgid "Force Download"
msgstr "Tving nedlasting"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4665,11 +4737,11 @@ msgid "Date format"
msgstr "Datoformat"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Ekstra kø-kolonne"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4752,10 +4824,6 @@ msgstr "Skjul/vis fullførte filer"
msgid "View Script Log"
msgstr "Se skriptlogg"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Oppdatering tilgjengelig"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4771,12 +4839,12 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Hastighet"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,15 +1,15 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Safihre <safihre@sabnzbd.org>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -327,6 +327,10 @@ msgstr "%s is geen geldig e-mailadres"
msgid "Server address required"
msgstr "Serveradres verplicht"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr "%s is geen geldig script."
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -502,6 +506,16 @@ msgstr "Vedachte fout in downloader"
msgid "Shutting down"
msgstr "Afsluiten"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr "Server %s verloopt over %s dag(en)."
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr "Het beschikbare quotum voor server %s is verbruikt. "
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Verbinding met e-mailserver mislukt"
@@ -757,6 +771,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Update beschikbaar!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1306,10 +1324,6 @@ msgstr "Meldingen"
msgid "Idle"
msgstr "Rust"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Instellingen"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1334,9 +1348,10 @@ msgstr "Wis de volledige geschiedenis"
msgid "Limit Speed"
msgstr "Beperk snelheid"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1385,10 +1400,6 @@ msgstr "Leeg"
msgid "History Last 10 Items"
msgstr "Geschiedenis Laaste 10 Items"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Nieuwe versie beschikbaar"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Ga naar Wizard"
@@ -1647,6 +1658,10 @@ msgstr "RAR bestanden zijn succesvol geverifieerd"
msgid "RAR files failed to verify"
msgstr "RAR bestanden zijn niet verifieerbaar"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr "RAR-hernoeming wordt geprobeerd"
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2043,11 +2058,6 @@ msgstr "uur"
msgid "hours"
msgstr "uren"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2143,6 +2153,10 @@ msgstr "Deze Week"
msgid "This month"
msgstr "Deze Maand"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr "Datumbereik"
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Vandaag"
@@ -2155,6 +2169,10 @@ msgstr "Totaal"
msgid "Custom"
msgstr "Aangepast"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Snelheid"
#: sabnzbd/skintext.py
msgid "on"
msgstr "aan"
@@ -3000,6 +3018,15 @@ msgstr "niet geinstalleerd"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Webinterface beschikbaar via HTTPS"
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
"Self-signed (onofficiële) certificaten worden door moderne webbrowsers en "
"andere programma's meestal niet geaccepteerd waardoor deze een foutmelding "
"geven of helemaal niet kunnen verbinden."
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS Poort"
@@ -3274,6 +3301,29 @@ msgid ""
"overruled by user-defined categories.</i>"
msgstr "(kan aangepast worden door de categorieën)."
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr "Minimale vrije ruimte voor verwerkte downloads map"
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr "Werkt niet als een categorie-pad naar een andere schijf verwijst."
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatisch doorgaan"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
"Het downloaden zal automatisch hervat worden als de minimale vrije ruimte "
"weer beschikbaar is.<br />Is van toepassing op zowel de tijdelijke als "
"verwerkte download map.<br />Wordt elke paar minuten gecontroleerd."
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Toegangsrechten voor verwerkte downloads"
@@ -3749,11 +3799,6 @@ msgstr ""
"Op welke dag van de maand of week (1=maandag) wordt het quotum gereset? "
"(Eventueel met hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatisch doorgaan"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr ""
@@ -3915,6 +3960,25 @@ msgstr "Wachtwoord"
msgid "Timeout"
msgstr "Tijdslimiet"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr "Verloopdatum"
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr "Ontvang 5 dagen voor de verloopdatum een waarschuwing."
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
"Quotum voor dit account, wordt geteld vanaf het moment dat het voor het "
"eerst ingesteld wordt. In bytes, in K,M,G notatie.<br />Er wordt een "
"waarschuwing gegeven als het quotum bereikt is, dit wordt elke paar minuten "
"gecontroleerd."
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -4011,6 +4075,14 @@ msgstr "Verzend de groepsnaam naar de server."
msgid "Personal notes"
msgstr "Persoonlijke aantekeningen"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr "Beschikbaarheid van artikelen"
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr "%f% van %d opgevraagde artikelen"
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -4063,6 +4135,16 @@ msgstr "Uitlezen"
msgid "Force Download"
msgstr "Forceer download"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4768,12 +4850,12 @@ msgid "Date format"
msgstr "Datumnotatie"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Extra kolom aan wachtrij toevoegen"
msgid "Extra queue columns"
msgstr "Extra kolommen aan wachtrij toevoegen"
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Extra kolom aan geschiedenis toevoegen"
msgid "Extra history columns"
msgstr "Extra kolommen aan geschiedenis toevoegen"
#: sabnzbd/skintext.py
msgid "page"
@@ -4855,10 +4937,6 @@ msgstr "Toon/verberg voltooide bestanden"
msgid "View Script Log"
msgstr "Toon Script resultaat"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Update beschikbaar!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4876,12 +4954,12 @@ msgid "Compact layout"
msgstr "Compacte weergave"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Weergave in tabs <br/>(wachtrij en geschiedenis apart weergeven)"
msgid "Always use full screen width"
msgstr "Gebruik de volledige schermbreedte"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Snelheid"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Weergave in tabs <br/>(wachtrij en geschiedenis apart weergeven)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -310,6 +310,10 @@ msgstr "%s nie jest prawidłowym adresem email"
msgid "Server address required"
msgstr "Wymagane jest podanie adresu serwera"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -479,6 +483,16 @@ msgstr "Nieobsługiwany błąd w module pobierania"
msgid "Shutting down"
msgstr "Wyłączanie"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Błąd połączenia z serwerem pocztowym"
@@ -732,6 +746,10 @@ msgstr "g"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Dostępna aktualizacja!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1275,10 +1293,6 @@ msgstr "Ostrzeżenia"
msgid "Idle"
msgstr "Bezczynny"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Konfiguracja"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1303,9 +1317,10 @@ msgstr "Wyczyść historię"
msgid "Limit Speed"
msgstr "Ogranicz prędkość"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "minuta"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1354,10 +1369,6 @@ msgstr "Brak"
msgid "History Last 10 Items"
msgstr "10 ostatnich"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Dostępne jest nowe wydanie"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Uruchom kreatora konfiguracji"
@@ -1615,6 +1626,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2009,11 +2024,6 @@ msgstr "godzina"
msgid "hours"
msgstr "godziny"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "minuta"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2109,6 +2119,10 @@ msgstr "Ten tydzień"
msgid "This month"
msgstr "Ten miesiąc"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Dzisiaj"
@@ -2121,6 +2135,10 @@ msgstr "Razem"
msgid "Custom"
msgstr "Własny"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Prędkość"
#: sabnzbd/skintext.py
msgid "on"
msgstr "włączone"
@@ -2950,6 +2968,12 @@ msgstr "nie zainstalowane"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Włącz dostęp do interfejsu przez HTTPS"
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "Port HTTPS"
@@ -3222,6 +3246,26 @@ msgstr ""
"Miejsce przechowywania ukończonych, przetworzonych plików. <br /><i>Może "
"zostać zmienione przez ustawienia kategorii.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatyczne wznawianie"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Uprawnienia dla ukończonych plików"
@@ -3674,11 +3718,6 @@ msgstr ""
"W którym dniu miesiąca lub tygodnia (1=poniedziałek) twój dostawca resetuje "
"limit pobierania (opcjonalnie z gg:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatyczne wznawianie"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Czy pobieranie powinno zostać automatycznie wznowione w dniu resetu"
@@ -3834,6 +3873,21 @@ msgstr "Hasło"
msgid "Timeout"
msgstr "Limit czasu odpowiedzi"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3925,6 +3979,14 @@ msgstr "Wyślij polecenie GROUP przed żądaniem artykułu"
msgid "Personal notes"
msgstr "Notatki osobiste"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3977,6 +4039,16 @@ msgstr "Pobierz kanał"
msgid "Force Download"
msgstr "Wymuś pobranie"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4675,11 +4747,11 @@ msgid "Date format"
msgstr "Format daty"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Dodatkowa kolumna kolejki"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4762,10 +4834,6 @@ msgstr "Pokaż/ukryj ukończone pliki"
msgid "View Script Log"
msgstr "Zobacz log skryptu"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Dostępna aktualizacja!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4781,12 +4849,12 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Prędkość"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -314,6 +314,10 @@ msgstr "%s não é um endereço de e-mail válido"
msgid "Server address required"
msgstr "Endereço do servidor necessário"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -485,6 +489,16 @@ msgstr "Erro suspeito no downloader"
msgid "Shutting down"
msgstr "Encerrando"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Falha ao conectar ao servidor de e-mail"
@@ -736,6 +750,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Atualização Disponível!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1276,10 +1294,6 @@ msgstr "Alertas"
msgid "Idle"
msgstr "Inativo"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Configuração"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1304,9 +1318,10 @@ msgstr "Limpar Histórico"
msgid "Limit Speed"
msgstr "Limitar Velocidade"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1355,10 +1370,6 @@ msgstr "Esvaziar"
msgid "History Last 10 Items"
msgstr "Histórico dos últimos 10 items"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Nova versão disponível"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Ir para o assistente"
@@ -1617,6 +1628,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2012,11 +2027,6 @@ msgstr "hora"
msgid "hours"
msgstr "horas"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2112,6 +2122,10 @@ msgstr "Esta semana"
msgid "This month"
msgstr "Este mês"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Hoje"
@@ -2124,6 +2138,10 @@ msgstr "Total"
msgid "Custom"
msgstr "Personalizado"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Velocidade"
#: sabnzbd/skintext.py
msgid "on"
msgstr "ligado"
@@ -2955,6 +2973,12 @@ msgstr "não instalado"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Ativar acesso à interface por um endereço HTTPS."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "Porta HTTPS"
@@ -3226,6 +3250,26 @@ msgstr ""
"Local para armazenar downloads concluídos, totalmente processados.<br "
"/><i>Pode ser anulado por categorias definidas pelo usuário.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Retomar automaticamente"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Permissões para downloads concluídos"
@@ -3678,11 +3722,6 @@ msgstr ""
"Em que dia do mês ou da semana (1 = segunda-feira) seu provedor de Internet "
"redefine sua quota? (Opcionalmente com hh: mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Retomar automaticamente"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "O download deve retomar quando a quota for restabelecida?"
@@ -3837,6 +3876,21 @@ msgstr "Senha"
msgid "Timeout"
msgstr "Tempo limite"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3928,6 +3982,14 @@ msgstr "Enviar comando do grupo antes de solicitar artigos."
msgid "Personal notes"
msgstr "Notas pessoais"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3980,6 +4042,16 @@ msgstr "Ler Feed"
msgid "Force Download"
msgstr "Forçar Download"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4678,11 +4750,11 @@ msgid "Date format"
msgstr "Formato da data"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Coluna extra da fila"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4765,10 +4837,6 @@ msgstr "Esconder/Exibir arquivos completos"
msgid "View Script Log"
msgstr "Exibir Log do Script"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Atualização Disponível!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4784,12 +4852,12 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Velocidade"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,15 +1,16 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Eduard Baniceru <war4peace@gmail.com>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:49+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: Eduard Baniceru <war4peace@gmail.com>, 2021\n"
"Language-Team: Romanian (https://www.transifex.com/sabnzbd/teams/111101/ro/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -41,12 +42,15 @@ msgstr "Nu se poate găsi şablon web:%s, se încearcă şablon standard"
#: SABnzbd.py
msgid "SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc dezactivat: nu s-a găsit o versiune corectă! (Găsită v%s, se "
"așteaptă v%s)"
#. Error message
#: SABnzbd.py
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
"Modul SABYenc... NEgăsit! Se așteaptă v%s - https://sabnzbd.org/sabyenc"
#. Error message
#: SABnzbd.py
@@ -76,7 +80,7 @@ msgstr "binar unzip... Negăsit!"
#. Error message
#: SABnzbd.py
msgid "Essential modules are missing, downloading cannot start."
msgstr ""
msgstr "Lipsesc module esențiale, descărcarea nu poate începe."
#. Warning message
#: SABnzbd.py
@@ -98,11 +102,13 @@ msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
"SABnzbd a fost pornit cu encodarea %s, aceasta trebuie să fie UTF-8. Pot "
"apărea probleme cu denumiri de fișiere și directoare Unicode în descărcări."
#. Warning message
#: SABnzbd.py
msgid "Could not load additional certificates from certifi package"
msgstr ""
msgstr "Nu pot încărca certificate adiționale din pachetul certifi"
#. Warning message
#: SABnzbd.py
@@ -112,7 +118,7 @@ msgstr "Dezactivează HTTPS din cauza lipsei fişierelor CERT şi KEY"
#. Warning message
#: SABnzbd.py
msgid "Disabled HTTPS because of invalid CERT and KEY files"
msgstr ""
msgstr "HTTPS dezactivat din cauza fișierelor invalide CERT și KEY"
#. Error message
#: SABnzbd.py
@@ -169,7 +175,7 @@ msgstr "Încărcarea %s nereuşită"
#. Warning message
#: sabnzbd/__init__.py
msgid "Cannot access PID file %s"
msgstr ""
msgstr "Nu pot accesa fișierul PID %s"
#: sabnzbd/api.py, sabnzbd/emailer.py
msgid "Email succeeded"
@@ -228,6 +234,8 @@ msgid ""
"Paused job \"%s\" because of encrypted RAR file (if supplied, all passwords "
"were tried)"
msgstr ""
"Sarcina „%s” a fost întreruptă din cauza fișierului RAR criptat (toate "
"parolele oferite au fost încercate)"
#. Warning message
#: sabnzbd/assembler.py
@@ -235,6 +243,8 @@ msgid ""
"Aborted job \"%s\" because of encrypted RAR file (if supplied, all passwords"
" were tried)"
msgstr ""
"Sarcina „%s” a fost anulată din cauza fișierului RAR criptat (toate parolele"
" oferite au fost încercate)"
#: sabnzbd/assembler.py
msgid "Aborted, encryption detected"
@@ -243,7 +253,7 @@ msgstr "Terminat, encriptare detectată"
#. Warning message
#: sabnzbd/assembler.py
msgid "In \"%s\" unwanted extension in RAR file. Unwanted file is %s "
msgstr ""
msgstr "Extensie nedorită în fișierul RAR al „%s”. Fișierul nedorit este %s"
#: sabnzbd/assembler.py
msgid "Unwanted extension is in rar file %s"
@@ -256,12 +266,12 @@ msgstr "Oprit, extensii nedorite detectate"
#. Warning message
#: sabnzbd/assembler.py
msgid "Paused job \"%s\" because of rating (%s)"
msgstr ""
msgstr "Sarcina \"%s\" întreruptă datorită ratingului (%s)"
#. Warning message
#: sabnzbd/assembler.py
msgid "Aborted job \"%s\" because of rating (%s)"
msgstr ""
msgstr "Sarcina \"%s\" anulată datorită ratingului (%s)"
#: sabnzbd/assembler.py
msgid "Aborted, rating filter matched (%s)"
@@ -271,11 +281,13 @@ msgstr "Abandonat, filtru de rating potrivit (%s)"
#: sabnzbd/assembler.py
msgid "Job \"%s\" is probably encrypted due to RAR with same name inside this RAR"
msgstr ""
"Sarcina „%s” este probabil criptată din cauza unui RAR cu același nume în "
"acest RAR"
#. Warning message
#: sabnzbd/assembler.py
msgid "Job \"%s\" is probably encrypted: \"password\" in filename \"%s\""
msgstr ""
msgstr "Sarcina „%s” este probabil criptată: „parolă” în fișierul „%s”"
#: sabnzbd/assembler.py
msgid "video"
@@ -314,10 +326,14 @@ msgstr "%s nu este o adresă email validă"
msgid "Server address required"
msgstr "Adresă server necesară"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
msgstr ""
msgstr "Configurație blocată, nu pot salva setările"
#. Error message
#: sabnzbd/config.py
@@ -379,11 +395,11 @@ msgstr "Jurnal istoric stagii invalid pentru %s"
#. Warning message
#: sabnzbd/decoder.py
msgid "Decoder failure: Out of memory"
msgstr ""
msgstr "Eroare decodare: lipsă memorie"
#: sabnzbd/decoder.py
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
msgstr "UUencode detectat, este suportată doar codarea yEnc [%s]"
#. Warning message
#: sabnzbd/decoder.py
@@ -392,7 +408,7 @@ msgstr "Eroare Necunoscută în timpul decodării %s"
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
msgid "Direct Unpack"
msgstr ""
msgstr "Dezarhivare directă"
#. PP status - History: job status
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
@@ -406,13 +422,16 @@ msgstr "Dezarhivat %s fişierele/dosarele în %s"
#. Warning message
#: sabnzbd/directunpacker.py
msgid "Direct Unpack was automatically enabled."
msgstr ""
msgstr "Dezarhivarea directă a fost activată automat."
#: sabnzbd/directunpacker.py, sabnzbd/skintext.py
msgid ""
"Jobs will start unpacking during the downloading to reduce post-processing "
"time. Only works for jobs that do not need repair."
msgstr ""
"Sarcinile vor începe dezarhivarea pe parcursul descărcării pentru a reduce "
"timpul de postprocesare, Funcționează doar pentru sarcinile care nu necesită"
" reparare."
#. Error message
#: sabnzbd/dirscanner.py
@@ -484,6 +503,16 @@ msgstr "Eroare suspectă în sistemul de descprcare"
msgid "Shutting down"
msgstr "Închidere"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Conectare server mail nereuşită"
@@ -589,7 +618,7 @@ msgstr "Mutare %s în %s nereuşită"
#: sabnzbd/interface.py
msgid "Refused connection with hostname \"%s\" from:"
msgstr ""
msgstr "Conectare refuzată cu gazda „%s” de la:"
#: sabnzbd/interface.py
msgid "User logged in to the web interface"
@@ -630,7 +659,7 @@ msgstr "Autentificare nereuşită, verifică nume utilizator/parolă."
#: sabnzbd/interface.py
msgid "Unsuccessful login attempt from %s"
msgstr ""
msgstr "Încercare de conectare nereușită de la %s"
#. Bytes (used as postfix, as in "GB", "TB")
#: sabnzbd/interface.py, sabnzbd/skintext.py
@@ -652,6 +681,8 @@ msgid ""
"The Completed Download Folder cannot be the same or a subfolder of the "
"Temporary Download Folder"
msgstr ""
"Directorul de descărcări finalizate nu poate fi același, sau un subdirector "
"al directorului de descărcări temporare"
#: sabnzbd/interface.py
msgid "Warning: LOCALHOST is ambiguous, use numerical IP-address."
@@ -710,6 +741,8 @@ msgstr "Server nedefinit!"
msgid ""
"Category folder cannot be a subfolder of the Temporary Download Folder."
msgstr ""
"Directorul de categorii nu poate fi un subdirector al directorului de "
"descărcări temporare."
#: sabnzbd/interface.py, sabnzbd/skintext.py
msgid "ERROR:"
@@ -735,10 +768,14 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Actualizare Disponibilă!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
msgstr ""
msgstr "Eșuare la încărcarea fișierului: %s"
#. Error message
#: sabnzbd/misc.py
@@ -751,21 +788,23 @@ msgid ""
"Your password file contains more than 30 passwords, testing all these "
"passwords takes a lot of time. Try to only list useful passwords."
msgstr ""
"Fișierul tău cu parole conține peste 30 de parole, verificarea tuturor "
"necesită mult timp. Listează doar parolele utile."
#. Warning message
#: sabnzbd/misc.py
msgid "Failed to read the password file %s"
msgstr ""
msgstr "Eșuare la citirea fișierului cu parole %s"
#. Error message
#: sabnzbd/misc.py
msgid "[%s] The command in build_command is undefined."
msgstr ""
msgstr "[%s] Comanda din build_command este nedefinită."
#. Error message
#: sabnzbd/misc.py
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
msgstr "Scriptul Python „%s” nu are permisiuni de executare (+x)"
#: sabnzbd/newsunpack.py, sabnzbd/postproc.py
msgid "Running script"
@@ -853,11 +892,12 @@ msgstr "EROARE: CRC nereuşit în \"%s\""
#: sabnzbd/newsunpack.py
msgid "Unpacking failed, file too large for filesystem (FAT?)"
msgstr ""
"Dezarhivare eșuată, fișier prea mare pentru sistemul de fișiere (FAT?)"
#. Error message
#: sabnzbd/newsunpack.py
msgid "ERROR: File too large for filesystem (%s)"
msgstr ""
msgstr "EROARE: fișier prea mare pentru sistemul de fișiere (%s)"
#. Error message
#: sabnzbd/newsunpack.py
@@ -888,7 +928,7 @@ msgstr "Fișier RAR ce poate fi folosit"
#: sabnzbd/newsunpack.py
msgid "Corrupt RAR file"
msgstr ""
msgstr "Fișier RAR corupt"
#: sabnzbd/newsunpack.py
msgid "%s files in %s"
@@ -901,7 +941,7 @@ msgstr "Eroare \"%s\" în timpul rulării unzip() pe %s"
#: sabnzbd/newsunpack.py
msgid "No 7za binary found, cannot unpack \"%s\""
msgstr ""
msgstr "Nu s-a găsit binar 7za, nu pot dezarhiva „%s”"
#: sabnzbd/newsunpack.py
msgid "Trying 7zip with password \"%s\""
@@ -964,6 +1004,8 @@ msgstr "[%s] Verificat în %s, reparare necesară"
#: sabnzbd/newsunpack.py
msgid "Invalid par2 files or invalid PAR2 parameters, cannot verify or repair"
msgstr ""
"Fișiere par2 invalide sau parametri PAR2 invalizi, nu pot verifica sau "
"repara"
#: sabnzbd/newsunpack.py
msgid "Fetching %s blocks..."
@@ -987,7 +1029,7 @@ msgstr "[%s] Reparat în %s"
#: sabnzbd/newsunpack.py
msgid "Verifying repair"
msgstr ""
msgstr "Se verifică repararea"
#. Notification
#: sabnzbd/newsunpack.py, sabnzbd/notifier.py
@@ -1000,7 +1042,7 @@ msgstr "Se verifică"
#: sabnzbd/newsunpack.py
msgid "Checking extra files"
msgstr ""
msgstr "Se verifică fișierele extra"
#. PP status
#: sabnzbd/newsunpack.py, sabnzbd/skintext.py
@@ -1020,14 +1062,16 @@ msgid ""
"Certificate hostname mismatch: the server hostname is not listed in the "
"certificate. This is a server issue."
msgstr ""
"Neportivire certificat: denumirea serverului nu este listată în certificat. "
"Aceasta este o problemă de server."
#: sabnzbd/newswrapper.py
msgid "Certificate not valid. This is most probably a server issue."
msgstr ""
msgstr "Certificat invalid. Este cel mai probabil o problemă de server."
#: sabnzbd/newswrapper.py
msgid "Server %s uses an untrusted certificate [%s]"
msgstr ""
msgstr "Serverul %s utilizează un certificat nesigur [%s]"
#. Main menu item
#: sabnzbd/newswrapper.py, sabnzbd/skintext.py
@@ -1087,7 +1131,7 @@ msgstr "Indisponibil"
#: sabnzbd/notifier.py
msgid "Failed to send macOS notification"
msgstr ""
msgstr "Eșuare la trimiterea notificării macOS"
#. Warning message
#: sabnzbd/notifier.py
@@ -1177,7 +1221,7 @@ msgstr "Fişier NZB gol %s"
#: sabnzbd/nzbstuff.py
msgid "Pre-queue script marked job as failed"
msgstr ""
msgstr "Scriptul pre-coadă a marcat sarcina ca nereușită"
#. Warning message
#: sabnzbd/nzbstuff.py
@@ -1187,12 +1231,12 @@ msgstr "Ignorăm duplicat NZB \"%s\""
#. Warning message
#: sabnzbd/nzbstuff.py
msgid "Failing duplicate NZB \"%s\""
msgstr ""
msgstr "Eșuare duplicat NZB „%s”"
#. Warning message
#: sabnzbd/nzbstuff.py
msgid "Duplicate NZB"
msgstr ""
msgstr "NZB duplicat"
#. Warning message
#: sabnzbd/nzbstuff.py
@@ -1202,7 +1246,7 @@ msgstr "Întrerupem duplicat NZB \"%s\""
#. Warning message
#: sabnzbd/nzbstuff.py
msgid "Unwanted Extension in file %s (%s)"
msgstr ""
msgstr "Extensie nedorită în fișierul %s (%s)"
#: sabnzbd/nzbstuff.py
msgid "Aborted, cannot be completed"
@@ -1276,10 +1320,6 @@ msgstr "Atenționări"
msgid "Idle"
msgstr "Inactiv"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Configurare"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1304,9 +1344,10 @@ msgstr "Şterge Istoricul"
msgid "Limit Speed"
msgstr "Limitare de Viteză"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1355,10 +1396,6 @@ msgstr "Gol"
msgid "History Last 10 Items"
msgstr "Istoric Ultimele 10 Obiecte"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Versiune nouă disponibilă"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Dute la vrăjitor"
@@ -1479,6 +1516,8 @@ msgid ""
"Unable to bind to port %s on %s. Some other software uses the port or "
"SABnzbd is already running."
msgstr ""
"Nu pot rezerva portul %s pe %s. Alt software utilizează portul sau SABnzbs "
"rulează deja."
#. Warning message
#: sabnzbd/panic.py
@@ -1506,6 +1545,8 @@ msgid ""
"Completed Download Folder %s is on FAT file system, limiting maximum file "
"size to 4GB"
msgstr ""
"Directorul de descărcări finalizate %s se află pe sistem de fișiere FAT, "
"limitând dimensiunea maximă a fișierului la 4GB"
#: sabnzbd/postproc.py
msgid "Download might fail, only %s of required %s available"
@@ -1564,7 +1605,7 @@ msgstr "vezi fişier jurnal"
#: sabnzbd/postproc.py
msgid "Post-processing was aborted"
msgstr ""
msgstr "Post-procesarea a fost întreruptă"
#: sabnzbd/postproc.py
msgid "Download Failed"
@@ -1598,11 +1639,11 @@ msgstr "Verificare reuşită cu fişierele SFV"
#: sabnzbd/postproc.py
msgid "Trying RAR-based verification"
msgstr ""
msgstr "Încerc verificare RAR"
#: sabnzbd/postproc.py
msgid "[%s] RAR-based verification failed: %s"
msgstr ""
msgstr "[%s] verificarea RAR a eșuat: %s"
#: sabnzbd/postproc.py, sabnzbd/skintext.py
msgid "Passworded"
@@ -1610,10 +1651,14 @@ msgstr "Parolat"
#: sabnzbd/postproc.py
msgid "RAR files verified successfully"
msgstr ""
msgstr "Fișierele RAR verificate cu succes"
#: sabnzbd/postproc.py
msgid "RAR files failed to verify"
msgstr "Verificarea fișierelor RAR a eșuat"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
@@ -2010,11 +2055,6 @@ msgstr "oră"
msgid "hours"
msgstr "ore"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2110,6 +2150,10 @@ msgstr "Săptămâna aceasta"
msgid "This month"
msgstr "Luna aceasta"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Azi"
@@ -2122,6 +2166,10 @@ msgstr "Total"
msgid "Custom"
msgstr "Personalizat"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Viteză"
#: sabnzbd/skintext.py
msgid "on"
msgstr "activat"
@@ -2954,6 +3002,12 @@ msgstr "neinstalat"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Permite acesarea interfeţei de la o adresă HTTPS."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "Port HTTPS"
@@ -3220,6 +3274,26 @@ msgstr ""
"Locație pentru stocare , a descărcărilor procesate complet.<br /><i>Poate fi"
" suprascris de categoriile definite de utilizator.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Auto repornire"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Permisiuni pentru descărcări finalizate"
@@ -3672,11 +3746,6 @@ msgstr ""
"În ce zi a lunii sau săptămână (1=Luni) ISP dumneavoastră resetează cota? "
"(Opțional cu hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Auto repornire"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Se reia descărcarea după resetarea cotei?"
@@ -3832,6 +3901,21 @@ msgstr "Parolă"
msgid "Timeout"
msgstr "Timp Expirare"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3924,6 +4008,14 @@ msgstr "Trimite comanda group înainte de a cere articole."
msgid "Personal notes"
msgstr "Note personale"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3976,6 +4068,16 @@ msgstr "Citeşte Flux"
msgid "Force Download"
msgstr "Descărcare Forţată"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4672,12 +4774,12 @@ msgid "Date format"
msgstr "Format dată"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Coloană extra la Coadă"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "Coloană extra de istoric"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "page"
@@ -4759,10 +4861,6 @@ msgstr "Ascunde/arată fișierele finalizate"
msgid "View Script Log"
msgstr "Vezi Jurnal Script"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Actualizare Disponibilă!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4780,12 +4878,12 @@ msgid "Compact layout"
msgstr "Aspect compact"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Interfață tabelară <br/>(coadă și istoric separate)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Viteză"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "Interfață tabelară <br/>(coadă și istoric separate)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -314,6 +314,10 @@ msgstr "%s не является допустимым адресом элект
msgid "Server address required"
msgstr "Требуется адрес сервера"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -481,6 +485,16 @@ msgstr ""
msgid "Shutting down"
msgstr "Завершение работы"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Не удалось подключиться к почтовому серверу"
@@ -734,6 +748,10 @@ msgstr "ч"
msgid "m"
msgstr "м"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Доступно обновление!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1276,10 +1294,6 @@ msgstr "предупреждений"
msgid "Idle"
msgstr "Бездействие"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Конфигурация"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1304,9 +1318,10 @@ msgstr "Очистить историю"
msgid "Limit Speed"
msgstr "Ограничение скорости"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "мин."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "мин"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1355,10 +1370,6 @@ msgstr "Пусто"
msgid "History Last 10 Items"
msgstr "Последние 10 элементов истории"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Доступна новая версия"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Запустить мастер"
@@ -1614,6 +1625,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2008,11 +2023,6 @@ msgstr "час"
msgid "hours"
msgstr "часов"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "мин"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2108,6 +2118,10 @@ msgstr "за эту неделю"
msgid "This month"
msgstr "за этот месяц"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "за сегодня"
@@ -2120,6 +2134,10 @@ msgstr "всего"
msgid "Custom"
msgstr "Другой"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Скорость"
#: sabnzbd/skintext.py
msgid "on"
msgstr "на"
@@ -2949,6 +2967,12 @@ msgstr "не установлено"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Доступ к интерфейсу по протоколу HTTPS."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "Порт HTTPS"
@@ -3218,6 +3242,26 @@ msgstr ""
"Место для сохранения готовых, полностью обработанных загрузок.<br /><i>Можно"
" переопределить в пользовательских категориях.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Автоматически возобновлять"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Права доступа для завершённых загрузок"
@@ -3664,11 +3708,6 @@ msgstr ""
"День месяца или недели (1 — понедельник), когда провайдер сбрасывает квоту. "
"(дополнительно можно указать чч:мм)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Автоматически возобновлять"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Возобновлять загрузку после сброса квоты?"
@@ -3822,6 +3861,21 @@ msgstr "Пароль"
msgid "Timeout"
msgstr "Время ожидания"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3913,6 +3967,14 @@ msgstr "Отправлять команду группы перед запрос
msgid "Personal notes"
msgstr ""
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3965,6 +4027,16 @@ msgstr "Прочитать ленту"
msgid "Force Download"
msgstr "Загрузить принудительно"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4668,11 +4740,11 @@ msgid "Date format"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4755,10 +4827,6 @@ msgstr ""
msgid "View Script Log"
msgstr "Просмотреть журнал сценария"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Доступно обновление!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4774,12 +4842,12 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Скорость"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -312,6 +312,10 @@ msgstr "%s nije ispravna email adresa"
msgid "Server address required"
msgstr "Потребна је адреса сервера"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -480,6 +484,16 @@ msgstr "Sumnja u grešku u programu za download"
msgid "Shutting down"
msgstr "Гашење"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Неуспешно привезивање на сервер е-поште"
@@ -729,6 +743,10 @@ msgstr "с"
msgid "m"
msgstr "м"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Нова верзија доступна!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1270,10 +1288,6 @@ msgstr "Упозорења"
msgid "Idle"
msgstr "Мирање"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Поставке"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1298,8 +1312,9 @@ msgstr "Очисти хронологију"
msgid "Limit Speed"
msgstr "Ограничење брзине"
#: sabnzbd/osxmenu.py
msgid "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "мин."
#. #: Config->Scheduler
@@ -1349,10 +1364,6 @@ msgstr "Празно"
msgid "History Last 10 Items"
msgstr "Хронологија задњих 10 ставка"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Ново издање је доступно"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Покрени асистент"
@@ -1606,6 +1617,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2000,11 +2015,6 @@ msgstr "сат"
msgid "hours"
msgstr "сата(и)"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "мин."
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2100,6 +2110,10 @@ msgstr "Ове седмице"
msgid "This month"
msgstr "Овог месеца"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "Данас"
@@ -2112,6 +2126,10 @@ msgstr "Укупно"
msgid "Custom"
msgstr "Прилагођено"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Брзина"
#: sabnzbd/skintext.py
msgid "on"
msgstr "укљ."
@@ -2939,6 +2957,12 @@ msgstr "никје инсталирано"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Приступ интерфејсу преко HTTPS адресе."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS порт"
@@ -3206,6 +3230,26 @@ msgstr ""
"Смештај завршених, процесираних преузимања.<br /><i>Може се заобићи у "
"дефинисаним категоријама.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatski nastavi"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Дозволе за фасциклу завршених преузимања"
@@ -3652,11 +3696,6 @@ msgstr ""
"Који дан месеца или недеље (1=понедељак) Ваш провајдер ресетује квоту? "
"(опционо са hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Automatski nastavi"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Да се настави преузимање после ресета квоте?"
@@ -3811,6 +3850,21 @@ msgstr "Лозинка"
msgid "Timeout"
msgstr "Време истекло"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3902,6 +3956,14 @@ msgstr "Послати команду 'group' пре тражења артикл
msgid "Personal notes"
msgstr "Lične zabeleške"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3953,6 +4015,16 @@ msgstr "Читај фид"
msgid "Force Download"
msgstr "Натерај преузимање"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4650,11 +4722,11 @@ msgid "Date format"
msgstr "Формат датума"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Ekstra kolona reda"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4737,10 +4809,6 @@ msgstr "Sakrij/prikaži sve završene datoteke"
msgid "View Script Log"
msgstr "Види извештај скрипта"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Нова верзија доступна!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4756,12 +4824,12 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Брзина"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -312,6 +312,10 @@ msgstr "%s är inte en godkänd e-mail adress"
msgid "Server address required"
msgstr "Kräver serveradress"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -480,6 +484,16 @@ msgstr "Misstänker fel i nedladdare"
msgid "Shutting down"
msgstr "Påbörjar nedstängning av SABnzbd.."
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "Det gick inte att ansluta till mailserver"
@@ -731,6 +745,10 @@ msgstr "h"
msgid "m"
msgstr "m"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Uppdatering tillgänglig"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1274,10 +1292,6 @@ msgstr "Varningar"
msgid "Idle"
msgstr "Inaktiv"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "Konfiguration"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1302,9 +1316,10 @@ msgstr "Töm historik"
msgid "Limit Speed"
msgstr "Hastighetsbegränsning"
#: sabnzbd/osxmenu.py
msgid "min."
msgstr "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. #: Config->Scheduler
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
@@ -1353,10 +1368,6 @@ msgstr "Tom"
msgid "History Last 10 Items"
msgstr "Historik (10 senaste sakerna)"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "Ny utgåva tillgänglig"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "Gå till guiden"
@@ -1612,6 +1623,10 @@ msgstr ""
msgid "RAR files failed to verify"
msgstr ""
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -2006,11 +2021,6 @@ msgstr "timme"
msgid "hours"
msgstr "timmar"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "min"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2106,6 +2116,10 @@ msgstr "Denna vecka"
msgid "This month"
msgstr "Denna månad"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "I dag"
@@ -2118,6 +2132,10 @@ msgstr "Totalt"
msgid "Custom"
msgstr "Anpassa"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Hastighet"
#: sabnzbd/skintext.py
msgid "on"
msgstr "den"
@@ -2947,6 +2965,12 @@ msgstr "inte installerad"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "Aktivera åtkomst till webbkontrollen med HTTPS adress."
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS-port"
@@ -3217,6 +3241,26 @@ msgstr ""
"Plats för att lagra bearbetade och färdiga nedladdningar.<br /><i>Kan "
"åsidosättas av användar-definierade kategorier.</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Autoåterupptagning"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "Rättigheter för färdiga nedladdningar"
@@ -3664,11 +3708,6 @@ msgstr ""
"På vilken dag i månaden eller veckan (1=Måndag) nollställer din ISP din "
"kvot? (Alternativt med hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "Autoåterupptagning"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "Skall nerladdning återupptas efter att kvot är nollställd?"
@@ -3823,6 +3862,21 @@ msgstr "Lösenord"
msgid "Timeout"
msgstr "Tidsgräns"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3914,6 +3968,14 @@ msgstr "Skicka gruppkommando innan du begär artiklar."
msgid "Personal notes"
msgstr "Personliga noteringar"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3966,6 +4028,16 @@ msgstr "Läs flöde"
msgid "Force Download"
msgstr "Tvinga nedladdning"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4662,11 +4734,11 @@ msgid "Date format"
msgstr "Datumformat"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "Extra kökolumn"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
@@ -4749,10 +4821,6 @@ msgstr "Visa/göm färdiga filer"
msgid "View Script Log"
msgstr "Visa skriptlogg"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "Uppdatering tillgänglig"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4768,12 +4836,12 @@ msgid "Compact layout"
msgstr ""
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "Hastighet"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr ""
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file MAIN
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -310,6 +310,10 @@ msgstr "%s 不是有效的电子邮箱地址"
msgid "Server address required"
msgstr "服务器地址必填"
#: sabnzbd/cfg.py
msgid "%s is not a valid script"
msgstr ""
#. Warning message
#: sabnzbd/config.py
msgid "Configuration locked, cannot save settings"
@@ -477,6 +481,16 @@ msgstr "下载器疑似错误"
msgid "Shutting down"
msgstr "正在关闭"
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s is expiring in %s day(s)"
msgstr ""
#. Warning message
#: sabnzbd/downloader.py
msgid "Server %s has used the specified quota"
msgstr ""
#: sabnzbd/emailer.py
msgid "Failed to connect to mail server"
msgstr "无法连接到邮件服务器"
@@ -721,6 +735,10 @@ msgstr "小时"
msgid "m"
msgstr "分钟"
#: sabnzbd/misc.py, sabnzbd/skintext.py
msgid "Update Available!"
msgstr "有更新可用!"
#. Error message
#: sabnzbd/misc.py
msgid "Failed to upload file: %s"
@@ -1260,10 +1278,6 @@ msgstr "警告信息"
msgid "Idle"
msgstr "空闲"
#: sabnzbd/osxmenu.py
msgid "Configuration"
msgstr "配置"
#. Main menu item
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "Queue"
@@ -1288,8 +1302,9 @@ msgstr "清空历史"
msgid "Limit Speed"
msgstr "限速"
#: sabnzbd/osxmenu.py
msgid "min."
#. One minute
#: sabnzbd/osxmenu.py, sabnzbd/skintext.py
msgid "min"
msgstr "分钟"
#. #: Config->Scheduler
@@ -1339,10 +1354,6 @@ msgstr "清空"
msgid "History Last 10 Items"
msgstr "最近十条历史记录"
#: sabnzbd/osxmenu.py
msgid "New release available"
msgstr "新版本可用"
#: sabnzbd/osxmenu.py
msgid "Go to wizard"
msgstr "转到向导"
@@ -1596,6 +1607,10 @@ msgstr "RAR 文件验证成功"
msgid "RAR files failed to verify"
msgstr "RAR 文件验证失败"
#: sabnzbd/postproc.py
msgid "Trying RAR renamer"
msgstr ""
#. Warning message
#: sabnzbd/postproc.py
msgid "No matching earlier rar file for %s"
@@ -1990,11 +2005,6 @@ msgstr "小时"
msgid "hours"
msgstr "小时"
#. One minute
#: sabnzbd/skintext.py
msgid "min"
msgstr "分钟"
#. Multiple minutes
#: sabnzbd/skintext.py
msgid "mins"
@@ -2090,6 +2100,10 @@ msgstr "本周"
msgid "This month"
msgstr "本月"
#: sabnzbd/skintext.py
msgid "Selected date range"
msgstr ""
#: sabnzbd/skintext.py
msgid "Today"
msgstr "今天"
@@ -2102,6 +2116,10 @@ msgstr "总计"
msgid "Custom"
msgstr "自定义"
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "速度"
#: sabnzbd/skintext.py
msgid "on"
msgstr "开"
@@ -2923,6 +2941,12 @@ msgstr "未安装"
msgid "Enable accessing the interface from a HTTPS address."
msgstr "启用 HTTPS 地址访问界面。"
#: sabnzbd/skintext.py
msgid ""
"Modern web browsers and other clients will not accept self-signed "
"certificates and will give a warning and/or won't connect at all."
msgstr ""
#: sabnzbd/skintext.py
msgid "HTTPS Port"
msgstr "HTTPS 端口"
@@ -3174,6 +3198,26 @@ msgid ""
"overruled by user-defined categories.</i>"
msgstr "存储完成且已完全处理的下载数据的位置。<br /><i>可以通过用户定义分类额外调整。</i>"
#: sabnzbd/skintext.py
msgid "Minimum Free Space for Completed Download Folder"
msgstr ""
#: sabnzbd/skintext.py
msgid "Will not work if a category folder is on a different disk."
msgstr ""
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "自动续传"
#: sabnzbd/skintext.py
msgid ""
"Downloading will automatically resume if the minimum free space is available"
" again.<br />Applies to both the Temporary and Complete Download Folder.<br "
"/>Checked every few minutes."
msgstr ""
#: sabnzbd/skintext.py
msgid "Permissions for completed downloads"
msgstr "完成下载权限"
@@ -3601,11 +3645,6 @@ msgid ""
"(Optionally with hh:mm)"
msgstr "您的 ISP 会在每月或每周的哪天 (1=星期一) 重置配额? (可选加上 hh:mm)"
#. Auto-resume download on the reset day
#: sabnzbd/skintext.py
msgid "Auto resume"
msgstr "自动续传"
#: sabnzbd/skintext.py
msgid "Should downloading resume after the quota is reset?"
msgstr "配额重置后是否自动续传下载?"
@@ -3757,6 +3796,21 @@ msgstr "密码"
msgid "Timeout"
msgstr "超时"
#: sabnzbd/skintext.py
msgid "Account expiration date"
msgstr ""
#: sabnzbd/skintext.py
msgid "Warn 5 days in advance of account expiration date."
msgstr ""
#: sabnzbd/skintext.py
msgid ""
"Quota for this account, counted from the time it is set. In bytes, "
"optionally follow with K,M,G.<br />Warn when it reaches 0, checked every few"
" minutes."
msgstr ""
#. Server's retention time in days
#: sabnzbd/skintext.py
msgid "Retention time"
@@ -3848,6 +3902,14 @@ msgstr "请求文章之前发送 group 命令。"
msgid "Personal notes"
msgstr "注释"
#: sabnzbd/skintext.py
msgid "Article availability"
msgstr ""
#: sabnzbd/skintext.py
msgid "%f% available of %d requested articles"
msgstr ""
#. Config->Scheduling
#: sabnzbd/skintext.py
msgid "Add Schedule"
@@ -3898,6 +3960,16 @@ msgstr "读取 Feed"
msgid "Force Download"
msgstr "强制下载"
#. Config->RSS edit button
#: sabnzbd/skintext.py
msgid "Edit"
msgstr ""
#. Config->RSS when will be the next RSS scan
#: sabnzbd/skintext.py
msgid "Next scan at"
msgstr ""
#. Config->RSS table column header
#: sabnzbd/skintext.py
msgid "Filter"
@@ -4593,12 +4665,12 @@ msgid "Date format"
msgstr "日期格式"
#: sabnzbd/skintext.py
msgid "Extra queue column"
msgstr "队列显示更多列"
msgid "Extra queue columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "Extra history column"
msgstr "额外的历史记录列"
msgid "Extra history columns"
msgstr ""
#: sabnzbd/skintext.py
msgid "page"
@@ -4680,10 +4752,6 @@ msgstr "隐藏/显示已完成文件"
msgid "View Script Log"
msgstr "查看脚本日志"
#: sabnzbd/skintext.py
msgid "Update Available!"
msgstr "有更新可用!"
#: sabnzbd/skintext.py
msgid ""
"LocalStorage (cookies) are disabled in your browser, interface settings will"
@@ -4699,12 +4767,12 @@ msgid "Compact layout"
msgstr "精简外观"
#: sabnzbd/skintext.py
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "标签化外观 <br/>(分别显示队列与历史记录)"
msgid "Always use full screen width"
msgstr ""
#: sabnzbd/skintext.py
msgid "Speed"
msgstr "速度"
msgid "Tabbed layout <br/>(separate queue and history)"
msgstr "标签化外观 <br/>(分别显示队列与历史记录)"
#: sabnzbd/skintext.py
msgid "Confirm Queue Deletions"

View File

@@ -1,11 +1,11 @@
#
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: team@sabnzbd.org\n"
"Language-Team: SABnzbd <team@sabnzbd.org>\n"
@@ -13,55 +13,59 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing services or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "The installer only supports 64-bit Windows, use the standalone version to run on 32-bit Windows."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "The installer only supports Windows 8.1 and above, use the standalone legacy version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "You cannot overwrite an existing installation. \\n\\nClick `OK` to remove the previous version or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr ""

View File

@@ -1,10 +1,10 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Language-Team: Czech (https://www.transifex.com/sabnzbd/teams/111101/cs/)\n"
"MIME-Version: 1.0\n"
@@ -13,61 +13,67 @@ msgstr ""
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr ""

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Danish (https://www.transifex.com/sabnzbd/teams/111101/da/)\n"
@@ -17,56 +17,62 @@ msgstr ""
"Language: da\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Vis udgivelsesbemærkninger"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Støt projektet, donér!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Luk venligst \"SABnzbd.exe\" først"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dette vil afinstallere SABnzbd fra dit system"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Kør ved opstart"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Skrivebordsikon"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "NZB-filtilknytning"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Slet program"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Slet indstillinger"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -75,6 +81,6 @@ msgstr ""
"fjerne den tidligere version eller `Annuller` for at annullere "
"opgraderingen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Dine indstillinger og data vil blive bevaret."

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: German (https://www.transifex.com/sabnzbd/teams/111101/de/)\n"
@@ -17,19 +17,19 @@ msgstr ""
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Versionshinweise anzeigen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Bitte unterstützen Sie das Projekt durch eine Spende!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Schliessen Sie bitte zuerst \"SABnzbd.exe\"."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
@@ -38,7 +38,7 @@ msgstr ""
"Aufgrund von Änderungen am SABnzbd Windows Service ab Version 3.0.0 ist es nötig,\\nden Windows Service neu zu installieren.\\n\\n\r\n"
"Drücke `OK` um den existierenden Service zu löschen oder `Abbrechen` um dieses Upgrade abzubrechen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
@@ -46,31 +46,37 @@ msgstr ""
"Der Installer unterstützt nur Windows 64-bit. Benutze die Standalone Version"
" für Windows 32-bit."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dies entfernt SABnzbd von Ihrem System"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Beim Systemstart ausführen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Desktop-Symbol"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "Mit NZB-Dateien verknüpfen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Programm löschen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Einstellungen löschen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -79,6 +85,6 @@ msgstr ""
"Sie 'OK', um die vorherige Version zu entfernen oder 'Abbrechen' um die "
"Aktualisierung abzubrechen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Ihre Einstellungen und Daten bleiben erhalten."

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -8,7 +8,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Ester Molla Aragones <moarages@gmail.com>, 2020\n"
"Language-Team: Spanish (https://www.transifex.com/sabnzbd/teams/111101/es/)\n"
@@ -18,19 +18,19 @@ msgstr ""
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Mostrar notas de la versión"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "¡Apoye el proyecto, haga una donación!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Por favor cierre primero \"SABnzbd.exe\""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
@@ -41,7 +41,7 @@ msgstr ""
"en \"OK\" para eliminar los servicios existentes o \"Cancelar\" para "
"cancelar la actualización."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
@@ -49,31 +49,37 @@ msgstr ""
"El instalador solo admite Windows 64-bit, utilice la versión independiente "
"para ejecutar Windows 32-bit."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Esto desinstalará SABnzbd de su sistema"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Ejecutar al inicio"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Icono del escritorio"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "Asociación de archivos NZB"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Eliminar programa"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Eliminar Ajustes"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -81,6 +87,6 @@ msgstr ""
"No es posible sobrescribir una instalación existente. \\n\\nPresione `OK' "
"para quitar la versión anterior o 'Cancelar' para cancelar la actualización."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Tus ajustes y datos se mantendrán intactos."

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Finnish (https://www.transifex.com/sabnzbd/teams/111101/fi/)\n"
@@ -17,56 +17,62 @@ msgstr ""
"Language: fi\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Näytä julkaisutiedot"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Tue projektia, lahjoita!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Ole hyvä ja sulje \"SABnzbd.exe\" ensin"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Tämä poistaa SABnzbd:n tietokoneestasi"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Suorita käynnistyksen yhteydessä"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Työpöydän kuvake"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "NZB tiedostosidos"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Poista sovellus"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Poista asetukset"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -74,6 +80,6 @@ msgstr ""
"Et voi asentaa tätä vanhan asennuksen päälle. \\n\\nPaina `OK` poistaaksesi "
"edellisen version tai paina `Peruuta` peruuttaaksesi tämän päivityksen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Asetuksiasi ja tietojasi ei poisteta."

View File

@@ -1,15 +1,16 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Fred L <88com88@gmail.com>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: Fred L <88com88@gmail.com>, 2021\n"
"Language-Team: French (https://www.transifex.com/sabnzbd/teams/111101/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,19 +18,19 @@ msgstr ""
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Afficher les notes de version"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Soutenez le projet, faites un don !"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Merci de fermer \"SABnzbd.exe\" avant l'installation"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
@@ -39,7 +40,7 @@ msgstr ""
" réinstaller le service SABnzbd. \\n\\nCliquez sur 'OK' pour supprimer les "
"services existants ou sur 'Annuler' pour annuler cette mise à niveau."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
@@ -47,31 +48,40 @@ msgstr ""
"Le programme d'installation ne prend en charge que Windows 64 bits, utilisez"
" la version standalone pour l'exécuter sur Windows 32 bits."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
"Le programme d'installation ne prend en charge que Windows 8.1 et supérieur,"
" utilisez la version autonome legacy pour les versions antérieures de "
"Windows."
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Ceci désinstallera SABnzbd de votre système"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Lancer au démarrage"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Icône sur le Bureau"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "Association des fichiers NZB"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Supprimer le programme"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Supprimer les paramètres"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -80,6 +90,6 @@ msgstr ""
"pour supprimer la version précédente ou `Annuler` pour annuler cette mise à "
"niveau."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Vos paramètres et données seront conservés."

View File

@@ -1,15 +1,16 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# ION, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: ION, 2021\n"
"Language-Team: Hebrew (https://www.transifex.com/sabnzbd/teams/111101/he/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,29 +18,29 @@ msgstr ""
"Language: he\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "הראה הערות שחרור"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "תמוך במיזם, תרום!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "אנא סגור את \"SABnzbd.exe\" תחילה"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
"שירות SABnzbd Windows השתנה בגרסה SABnzbd 3.0.0. \\nתצטרך להתקין מחדש את "
"השירות SABnzbd. \\n\\nלחץ `אשר` כדי להסיר את השירותים הקיימים או `בטל` כדי "
"לבטל שדרוג זה."
"שירות Windows של SABnzbd השתנה ב־SABnzbd 3.0.0. \\nתצטרך להתקין מחדש את "
"השירות של SABnzbd. \\n\\nלחץ על `אישור` כדי להסיר את השירותים הקיימים או על "
"`ביטול` כדי לבטל שדרוג זה."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
@@ -47,38 +48,46 @@ msgstr ""
"המתקין תומך רק במערכת Windows מסוג 64־סיביות, השתמש בגרסה העצמאית כדי להריץ "
"על Windows מסוג 32־סיביות."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
"המתקין תומך רק במערכת Windows 8.1 ומעלה, השתמש בגרסה העצמאית המיושנת כדי "
"להריץ על גרסת Windows ישנה יותר."
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "זה יסיר את SABnzbd ממערכתך"
msgstr "זה יסיר את SABnzbd מהמערכת שלך"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "הפעלה בהזנק"
msgstr "הרץ בהזנק"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "צלמית שולחן עבודה"
msgstr "צור קיצור דרך בשולחן העבודה"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "NZB שיוך קבצי"
msgstr "NZB שייך קבצי"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "מחק תוכנית"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "מחק הגדרות"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
msgstr ""
"אינך יכול לדרוס התקנה קיימת.\\n\\nלחץ על `אישור` כדי להסיר את הגרסה הקודמת "
"אינך יכול לדרוס התקנה קיימת. \\n\\nלחץ על `אישור` כדי להסיר את הגרסה הקודמת "
"או על `ביטול` כדי לבטל שדרוג זה."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "ההגדרות והנתונים שלך יישמרו."
msgstr "ההגדרות והנתונים שלך ישתמרו."

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Norwegian Bokmål (https://www.transifex.com/sabnzbd/teams/111101/nb/)\n"
@@ -17,56 +17,62 @@ msgstr ""
"Language: nb\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Vis versjonsmerknader"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Støtt prosjektet, donèr!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Vennligst lukk \"SABnzbd.exe\" først"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dette vil avinstallere SABnzbd fra ditt system"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Kjør ved oppstart"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Skrivebordsikon"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "NZB-filassosiering"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Fjern program"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Slett innstillinger"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -75,6 +81,6 @@ msgstr ""
" fjerne tidligere installasjon, eller 'Avbryt' for å avbryte denne "
"oppgraderingen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Dine innstillinger og data vil bli tatt vare på."

View File

@@ -1,15 +1,15 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
# Safihre <safihre@sabnzbd.org>, 2020
# Safihre <safihre@sabnzbd.org>, 2021
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2021\n"
"Language-Team: Dutch (https://www.transifex.com/sabnzbd/teams/111101/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
@@ -17,19 +17,19 @@ msgstr ""
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Toon opmerkingen bij deze uitgave"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Steun het project, doneer!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Sluit \"SABnzbd.exe\" eerst af"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
@@ -38,7 +38,7 @@ msgstr ""
"De SABnzbd Windows Service is aangepast in SABnzbd 3.0.0. Hierdoor zal je de service opnieuw moeten installeren.\\n\\n\n"
"Klik `Ok` om de bestaande services te verwijderen of `Annuleren` om te stoppen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
@@ -46,31 +46,40 @@ msgstr ""
"Alleen 64-bit wordt ondersteund in de installer, download de standalone "
"versie om SABnzbd uit te voeren op 32-bit Windows."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
"Alleen Windows 8.1 en nieuwer worden ondersteund door de installer, download"
" de standalone legacy versie om SABnzbd uit te voeren op oudere versies van "
"Windows."
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "Dit verwijdert SABnzbd van je systeem"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Starten met Windows"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Bureaubladpictogram"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "NZB-bestanden openen met SABnzbd"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Programma verwijderen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Verwijder alle instellingen"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -78,6 +87,6 @@ msgstr ""
"U kunt geen bestaande installatie overschrijven.\\n\\nKlik op `OK` om de "
"vorige versie te verwijderen of op `Annuleren` om te stoppen."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Je instellingen en bestanden blijven behouden."

View File

@@ -1,5 +1,5 @@
# SABnzbd Translation Template file NSIS
# Copyright 2011-2020 The SABnzbd-Team
# Copyright 2011-2021 The SABnzbd-Team
# team@sabnzbd.org
#
# Translators:
@@ -7,7 +7,7 @@
#
msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-3.0.0-develop\n"
"Project-Id-Version: SABnzbd-3.2.0-develop\n"
"PO-Revision-Date: 2020-06-27 15:56+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>, 2020\n"
"Language-Team: Polish (https://www.transifex.com/sabnzbd/teams/111101/pl/)\n"
@@ -17,56 +17,62 @@ msgstr ""
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Show Release Notes"
msgstr "Pokaż informacje o wydaniu"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Support the project, Donate!"
msgstr "Wspomóż projekt!"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Please close \"SABnzbd.exe\" first"
msgstr "Najpierw zamknij SABnzbd.exe"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The SABnzbd Windows Service changed in SABnzbd 3.0.0. \\nYou will need to "
"reinstall the SABnzbd service. \\n\\nClick `OK` to remove the existing "
"services or `Cancel` to cancel this upgrade."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports 64-bit Windows, use the standalone version to "
"run on 32-bit Windows."
msgstr ""
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"The installer only supports Windows 8.1 and above, use the standalone legacy"
" version to run on older Windows version."
msgstr ""
#: builder/win/NSIS_Installer.nsi
msgid "This will uninstall SABnzbd from your system"
msgstr "To odinstaluje SABnzbd z systemu"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Run at startup"
msgstr "Uruchom wraz z systemem"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Desktop Icon"
msgstr "Ikona pulpitu"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "NZB File association"
msgstr "powiązanie pliku NZB"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Program"
msgstr "Usuń program"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Delete Settings"
msgstr "Skasuj obecne ustawienia"
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid ""
"You cannot overwrite an existing installation. \\n\\nClick `OK` to remove "
"the previous version or `Cancel` to cancel this upgrade."
@@ -74,6 +80,6 @@ msgstr ""
"Nie można nadpisać istniejącej instalacji. \\n\\n Naciśnij `OK`, aby usunąć "
"poprzednia wersję lub `Anuluj` aby anulować aktualizację."
#: NSIS_Installer.nsi
#: builder/win/NSIS_Installer.nsi
msgid "Your settings and data will be preserved."
msgstr "Twoje ustawienia i dane zostaną zachowane."

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