Compare commits

...

98 Commits
0.7.0 ... 0.7.3

Author SHA1 Message Date
ShyPike
e24aedc6ac Update text files for 0.7.3 Final. 2012-08-04 11:05:58 +02:00
ShyPike
d10d69e44b Correct typo in dirscanner.py. 2012-08-04 10:54:40 +02:00
ShyPike
af5c01ee3a Update Windows install size. 2012-08-03 22:58:34 +02:00
ShyPike
bf350cddc8 Update text files for 0.7.3
Fix package.py for README.mkd handling.
2012-08-03 22:28:44 +02:00
ShyPike
9bc4d909b5 Use 'pandoc' to generate README.rtf from README.mkd. 2012-08-03 21:05:08 +02:00
ShyPike
42236de5bd Update text files for 0.7.3 Final 2012-08-03 19:41:17 +02:00
ShyPike
02e2fe2cc8 Correct errors in Danish email templates. 2012-08-03 19:27:30 +02:00
ShyPike
b75bcb90f4 Server 502 message about expired subscription will now block server. 2012-08-03 19:08:21 +02:00
shypike
56b88eb406 Update translations 2012-08-03 16:01:20 +02:00
ShyPike
93741ea9ab SFV-check: don't issue a warning for each problem file, but just list in History entry. 2012-08-03 11:57:13 +02:00
ShyPike
f7509132fc Rename 'random_server_ip' to 'randomize_server_ip' and make the default 'False'.
This is to avoid confusing speed loss with some providers. Now the user has to enable this consciously.
2012-08-02 21:18:03 +02:00
ShyPike
2d0d62ec00 The "watched folder" scan should ignore all files starting with a period (hidden on Linux and OSX). 2012-08-01 00:27:23 +02:00
ShyPike
4e07a84102 Update POT files. 2012-08-01 00:25:35 +02:00
ShyPike
32a048a879 Update text files for 0.7.3 Beta2 2012-07-30 16:08:48 +02:00
shypike
caac28fcbc Try to keep OSX Mountain Lion awake as long as downloading/postprocessing runs.
Quick & Dirty solution by launching 'caffeinate' every 5 minutes.
2012-07-30 15:40:13 +02:00
ShyPike
5b0bbf57c6 Prevent queue deadlock in case of fatally damaged par2 files.
Basic problem: prevent par2 files that have already been downloaded from re-entering the queue.
The issue was introduced after removing the habit of 0.6.x to download a part of each par2 file.
The advantage of the 0.6.x method was that more was known about the par2 files,
the disadvantage that quite some data was downloaded that was never used.

Add job flag that prevents further QuickCheck attempts on known to be damaged jobs.
The method of inspecting large par2 files is time-consuming if nothing is ever found.
2012-07-30 12:41:55 +02:00
ShyPike
072af938c2 Prevent deadlock in fetching more par2 files when first par2 file is so corrupt that no info can be retrieved. 2012-07-29 14:48:27 +02:00
ShyPike
9e8202371e Add filter-enable check-boxes to Classic, Plush and smpl skinms.
Necessary because new filters created with those skins were not enabled.
2012-07-29 00:09:53 +02:00
ShyPike
27dd253c5d Fix UI crash on saving parameters of an already enabled server in Config->Servers. 2012-07-28 23:35:12 +02:00
ShyPike
8d651af2f8 Add some forward compatibility with changes coming to Scheduler in 0.8.x 2012-07-28 14:05:27 +02:00
ShyPike
6358312272 Replaced a few missed strings to be substituted with constants.Status values. 2012-07-24 21:35:03 +02:00
ShyPike
42c8367e13 Extend "check for release" with option "Also test releases". 2012-07-24 20:38:44 +02:00
ShyPike
c1e38b5e81 Update text files for 0.7.3 Beta1 2012-07-24 15:06:49 +02:00
ShyPike
1b4ce24037 Config->Servers: optimize layout 2012-07-24 11:17:40 +02:00
ShyPike
cf440750b6 Config->Servers: hide server details initially and have a simple checkbox to enable/disable servers quickly. 2012-07-24 09:14:02 +02:00
ShyPike
30c480df36 Add unofficial support for nzbmatrix's adult cousin. 2012-07-23 14:29:02 +02:00
ShyPike
9c3dbd39ef Make detection of samples less aggressive. 2012-07-22 16:35:34 +02:00
ShyPike
1af2f92828 Improve the Sort functions.
- Renaming secondary files after the main file didn't always work
- Collapsing folder structures could fail
- Joined (instead of unpacked) media files were not seen as candidates for renaming
- Presence of DVD/BRD special folders will now block collapsing
- Non-functional improvements: coding std, removed unused code and needless access functions, added doc-strings.
2012-07-22 15:43:26 +02:00
ShyPike
45277bb00f Add another keyword for canceled article detection. 2012-07-20 19:31:31 +02:00
ShyPike
10e21a3af9 Remove extra '\r' in Windows logging. 2012-07-20 19:16:35 +02:00
ShyPike
19cbadd420 Plush: fix odd formatting of multi-line warnings on Status page. 2012-07-20 19:11:52 +02:00
ShyPike
a28cbe52b9 Recovery from corrupt totals9.sab doesn't always remove bad entry. 2012-07-19 21:00:01 +02:00
shypike
37f1d64e46 Fix incorrect explanation of --no_ipv6 flag. 2012-07-18 18:00:39 +03:00
ShyPike
7170325df5 Update text files for 0.7.2 Final 2012-07-17 21:46:17 +02:00
ShyPike
c44d98da66 When localhost resolves to ['127.0.0.1', '::1'] instead of ['::1', '127.0.0.1'], SABnzbd would try to register twice on '::1'. 2012-07-17 21:29:33 +02:00
ShyPike
018410afb0 Validate the values read from totals9.sab 2012-07-17 19:38:49 +02:00
ShyPike
fc47238a7a Temporary fix for missing NZB icon when associating NZB files on a system that had a 0.7.0 release installed. 2012-07-16 18:51:39 +02:00
ShyPike
9561b8a64e Update text files for 0.7.2 RC2 2012-07-14 17:01:07 +02:00
ShyPike
7b0e56b55f Fix little anomaly in Wizard-Four. 2012-07-14 15:16:30 +02:00
ShyPike
c6d5a79776 Improve web-host address selection on systems where the hostname does not resolve to an IP address. 2012-07-14 14:27:18 +02:00
ShyPike
faa4cacd3e Improve detection of bad articles.
For now, don't let precheck use "HEAD" until method is improved.
2012-07-14 13:12:22 +02:00
ShyPike
56e417eea1 Change nzbsrus support to use their API response codes. 2012-07-14 09:40:46 +02:00
ShyPike
5f02ec00f9 Don't show nonsense NZB age when still trying to get it from an indexer. 2012-07-13 21:29:37 +02:00
ShyPike
5ea35db922 Add limited API support for nzbsrus.com 2012-07-13 21:19:09 +02:00
ShyPike
5dcf26a56c Update text files for 0.7.2RC1 2012-07-12 21:45:13 +02:00
ShyPike
35b598d10e Improve detection (and ignoring) of invalid articles.
This also requires reading headers during pre-check instead of just asking for article presence.
2012-07-12 21:24:38 +02:00
ShyPike
5e7b27c4ef Prevent potential crash in NzbQueue.repair_job() 2012-07-12 18:28:17 +02:00
ShyPike
9ed408d35b Windows Installer: don't uninstall settings by default. 2012-07-12 18:19:19 +02:00
ShyPike
6c782fe255 Fix nzbrus.com fatal error (when <nzb is not within the first 100 characters of the file). 2012-07-10 23:01:11 +02:00
ShyPike
1689323dc3 Fix sorting of files in a job so that .rar comes before .r00 again. 2012-07-10 22:12:04 +02:00
ShyPike
a3c50a907a Fix wrapping problem of queue titles in Plush skin by inserting zero-width spaces in titles. 2012-07-10 19:59:59 +02:00
ShyPike
36a3792846 After setting quota for the first time, the initial "quota left" was set to the already consumed amount of the current period, instead of the actual still available amount (which is quota-consumed). 2012-07-08 11:45:09 +02:00
ShyPike
4cd0c0691a Windows installer: fix NZB association so that a Windows reboot is not required to register the NZB icon. 2012-07-08 11:33:57 +02:00
ShyPike
6ac98dcacd Handle incorrect regular expression in RSS filters.
Ignore during scanning and signal in user interface.
2012-07-08 10:45:57 +02:00
ShyPike
0a0d00930a Update text files for 0.7.1 Final. 2012-07-06 16:50:00 +02:00
ShyPike
28a0d041f9 Correction on fix 7258e56a20.
nzf.completed is a @property attribute and should not be set directly.
2012-07-06 16:40:36 +02:00
ShyPike
85bb91a7ea Disable VC90 check in Windows Installer as long as we're still on Python 2.5 2012-07-04 21:10:49 +02:00
ShyPike
6561e0abfa Make Windows path joining of base and category paths more robust to work around different behaviors in Python and Windows versions combinations. 2012-07-04 20:36:52 +02:00
ShyPike
6715e61a68 Try to check for "maintenance" mode of nzbsrus.com 2012-07-04 19:34:00 +02:00
ShyPike
a886b284b6 Prevent "not committed" flag in baseline variable for official builds. 2012-07-04 19:09:55 +02:00
ShyPike
a349c82b6f Update text files for 0.7.1RC5 2012-07-03 21:38:20 +02:00
ShyPike
1f4df0ebf4 Only send "bad fetch" emails when emails are enabled. 2012-07-03 21:28:59 +02:00
ShyPike
0221e7bf93 Add some support for nzbsrus.com's awkward non-VIP limiting. 2012-07-03 21:14:30 +02:00
ShyPike
f9cf14e7d8 Update text files for 0.7.1 Final. 2012-07-03 19:59:36 +02:00
ShyPike
7258e56a20 When retrying a job, existing files were not flagged properly as "completed", leading to an endless loop in par2 fetching. 2012-07-03 19:58:02 +02:00
ShyPike
90bd495d44 Update text files fr 0.7.1 Final. 2012-07-03 17:54:18 +02:00
shypike
6c216d6dfe Update translations 2012-07-03 17:49:10 +02:00
ShyPike
e1f3fae6c7 Windows installer: detect incompatible older version by looking for python27.dll. 2012-07-02 22:31:28 +02:00
ShyPike
29f126ca47 Make warning about Python3 easier to read. 2012-07-02 22:13:01 +02:00
shypike
8b4b742466 Remove remaining .py files from OSX DMG image, to prevent invalid signatures after first run. 2012-07-02 18:44:36 +02:00
ShyPike
57a9d362bc Update text files for 0.7.1RC4 2012-07-01 17:26:00 +02:00
ShyPike
b7d54c2bea Fix failure to grab NZBs from indexers that send compressed files. 2012-07-01 17:23:16 +02:00
ShyPike
59f9833076 Update text files for 0.7.1 RC3 2012-07-01 14:03:59 +02:00
ShyPike
8e360fe53e Improve retry handling of URL fetches.
Add detection of error messages from nzbsrus.com and handle retries accordingly.
2012-07-01 13:49:24 +02:00
ShyPike
afc5005382 Make sure that badly formatted or otherwise incorrect articles are retried on other servers (if fail_on_crc option is on).
Make default of fail_on_crc True.
2012-07-01 13:47:55 +02:00
ShyPike
3a531c6d2b API calls "addurl" and "addid" can use the same code so that either will take newzbin IDs or regular URLs. 2012-07-01 12:53:54 +02:00
ShyPike
f056ad6347 Solve problem of stalling par2 fetching.
The attributes of the vol-par files were analyzed to late,
leading to a race condition.
2012-07-01 10:01:56 +02:00
ShyPike
5c1342a663 Tell user that Python 3.0 won't work. 2012-07-01 09:12:25 +02:00
ShyPike
dfe8a47a2a Verification/repair would not be executed properly when one more RAR files missed their first article. 2012-06-26 23:26:38 +02:00
ShyPike
e293a439dd Don't set __verified__ flag file when more par2 files need to be fetched. 2012-06-26 22:24:01 +02:00
ShyPike
7e0027922a Prevent QuickCheck crash when expected par2 file wasn't downloaded (due to missing articles). 2012-06-26 19:12:56 +02:00
shypike
00b5302ba9 Update text files for 0.7.1 Final. 2012-06-25 22:40:39 +02:00
shypike
79488c4785 Add option to suppress listening on web host address ::1 2012-06-25 22:34:07 +02:00
ShyPike
c3d0438250 Update texts for 0.7.1 RC2 2012-06-23 12:31:14 +02:00
ShyPike
2909d4636b Fix parameter bug in Swedish translation. 2012-06-23 12:28:57 +02:00
shypike
a1ee8b6af4 Update translations 2012-06-23 12:20:05 +02:00
ShyPike
cfe3b58f7f On Windows, the Python runtime starts the wrong browser when using http://::1:8080/sabnzbd. Convert URL to http://[::1]:8080/sabnzbd. 2012-06-23 12:05:38 +02:00
ShyPike
ff6b87ef5b Improve the INI file handling.
Simplify and make the save more robust.
Use the INI.BAK file when the INI file is missing or corrupt.
2012-06-21 21:46:14 +02:00
ShyPike
8fbcfd0d5a Update text files for 0.7.1RC1 2012-06-20 20:54:53 +02:00
shypike
347ba999b4 Reduce amount of info requested when updating Windows Tray icon and OSX top menu.
The Windows Tray icon queried for free diskspace, while it is never shown.
The OSX top menu should query for no more queue entries than it will show (10).
The OSX top menu queue didn't show accented characters properly.
2012-06-20 20:48:55 +02:00
ShyPike
503bcf64c9 Prevent problems on systems that don't bother to resolve "localhost". 2012-06-19 22:31:47 +02:00
ShyPike
2a667470a1 Add retries when creating "final folder" to allow for slow activation of mounted volumes. 2012-06-19 19:05:33 +02:00
ShyPike
c61165b840 Plush: fix Speedlimit, Pause and Options pulldown menus for Mobile Safari. 2012-06-18 22:17:09 +02:00
ShyPike
3672189bc8 Remove another unwanted Windows DLL when building on Windows 7. 2012-06-16 13:41:44 +02:00
ShyPike
5b38c772fb When the "uname -n" name of a system doesn't resolve to an IP, only use 0.0.0.0 as hostname when the user hadn't set "localhost", "127.0.0.1" or "::1" as the hostname.
Otherwise any such system will still listen on the external IP despite the fact that user didn't want this.
2012-06-16 12:18:12 +02:00
ShyPike
f28bc4dd9c Windows: the installer did not set an icon for NZB files (association). 2012-06-16 10:45:04 +02:00
ShyPike
e16cc49a17 Config-skin: "server" field in Config->Servers should have html5 tag "text" instead of "url". 2012-06-16 10:44:48 +02:00
ShyPike
f686cc94fd Modify server test to please very critical Usenet server. 2012-06-16 10:44:32 +02:00
61 changed files with 3189 additions and 2587 deletions

View File

@@ -1,5 +1,5 @@
*******************************************
*** This is SABnzbd 0.7.0 ***
*** This is SABnzbd 0.7.3 ***
*******************************************
SABnzbd is an open-source cross-platform binary newsreader.
It simplifies the process of downloading from Usenet dramatically,

View File

@@ -1,3 +1,97 @@
-------------------------------------------------------------------------------
0.7.3Final by The SABnzbd-Team
-------------------------------------------------------------------------------
- Rename Special "random_server_ip" to "randomize_server_ip" so that we
can force the default to "Off". "On" kills speed on some servers.
- Ignore pseudo NZB files that start with a period in the name
- SFV failure now listed in History instead of issuing warnings
- Translation updates
- "502" errors about payments/credits will now block a server
-------------------------------------------------------------------------------
0.7.3Beta2 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Try to keep OSX Mountain Lion awake as long as downloading/postprocessing runs
- Prevent queue deadlock in case of fatally damaged par2 files
- Add RSS filter-enable checkboxes to Plush, Smpl and Classic skins
- Fix problem with saving modified paramters of an already enabled server
- Extend "check new release" option with test releases
-------------------------------------------------------------------------------
0.7.3Beta1 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Correct several errors in Sort function
- Improve organization of Config->Servers
- Support for nzbxxx.com
- Make detection of samples less aggressive
- Some minor corrections
-------------------------------------------------------------------------------
0.7.2Final by The SABnzbd-Team
-------------------------------------------------------------------------------
- Fix for NZB-icon issue when 0.7.0 was previously installed
- Check validity of totals9.sab file
- Fix startup problem when localhost has unexpected order of IP addresses
-------------------------------------------------------------------------------
0.7.2RC2 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Improve support for nzbsrus.com
- Don't try to show NZB age when not known yet
- Prevent systems with unresolvable hostnames from always using 0.0.0.0
-------------------------------------------------------------------------------
0.7.2RC1 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Fix fatal error in nzbsrus.com support
- Initial "quota left" was not set correctly when enabling quota
- Report incorrect RSS filter expressions (instead of aborting analysis)
- Improve detection of invalid articles (so that backup server will be tried)
- Windows installer: improve NZB association so that a reboot isn't needed
- Windows installer: don't remove settimngs by default when uninstalling
- Fix sorting of rar files in job so that .rar preceeds .r00
-------------------------------------------------------------------------------
0.7.1Final by The SABnzbd-Team
-------------------------------------------------------------------------------
- Disable VC90 check in Windows Installer as long as we're still on Python 2.5
- Windows: make sure \\server\share notation is never seen as a relative path
-------------------------------------------------------------------------------
0.7.1RC5 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Fix signing of OSX DMG
- Fix endless par2-fetch loop after retrying failed job
- Don't send "bad fetch" email when emailing is off
- Add some support for nzbrus.com's non-VIP limiting
-------------------------------------------------------------------------------
0.7.1RC4 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Fix failure to grab NZBs from indexers that send compressed files.
-------------------------------------------------------------------------------
0.7.1RC3 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Fixed stalling par2 fetches (after first verification run)
- Fixed retry behaviour of NZB fetching from URL
and add handling of nzbsrus.com error codes
- Make sure that all malformed articles are retried on another server
- Add no_ipv6 option that suppresses listing on ::1
(to be used if your system cannot handle that)
- Prevent crash in QuickCheck when expected par2 file wasn't downloaded
- Verification/repair would not be executed properly when one more RAR files
missed their first article.
- API calls "addurl" and "addid" (newzbin) can be used interchangeably
(Fixes a problem in Qouch)
-------------------------------------------------------------------------------
0.7.1RC2 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Improved backup of sabnzbd.ini file
Will use backup when original is gone or become corrupt
- Windows: Using ::1 as single webhost address would start IE instead of default browser
-------------------------------------------------------------------------------
0.7.1RC1 by The SABnzbd-Team
-------------------------------------------------------------------------------
- Plush skin: fix problems with pull-down menus in Mobile Safari
- On some Linux and OSX systems using localhost would still make SABnzbd
give access to other computers
- Windows: the installer did not set an icon when associating NZB files with SABnzbd
- Fix problem that the Opera browser had with Config->Servers
- Retry a few times when accessing a mounted drive to create the
final destination folder
- Reduce load caused by WinTray and OSX topmenu
-------------------------------------------------------------------------------
0.7.0Final by The SABnzbd-Team
-------------------------------------------------------------------------------

View File

@@ -1,4 +1,4 @@
SABnzbd 0.7.0
SABnzbd 0.7.3
-------------------------------------------------------------------------------
0) LICENSE

View File

@@ -21,6 +21,7 @@
!include "MUI2.nsh"
!include "registerExtension.nsh"
!include "FileFunc.nsh"
!include "LogicLib.nsh"
!include "WinVer.nsh"
!include "WinSxSQuery.nsh"
@@ -245,6 +246,7 @@ Function .onInit
;--------------------------------
;make sure that the requires MS Runtimes are installed
;
goto nodownload ; Not needed while still using Python25
runtime_loop:
push 'msvcr90.dll'
push 'Microsoft.VC90.CRT,version="9.0.21022.8",type="win32",processorArchitecture="x86",publicKeyToken="1fc8b3b9a1e18e3b"'
@@ -297,7 +299,7 @@ SetOutPath "$INSTDIR"
;------------------------------------------------------------------
; Make sure old versions are gone
IfFileExists $INSTDIR\sabnzbd.exe 0 endWarnExist
IfFileExists $INSTDIR\python25.dll 0 endWarnExist
IfFileExists $INSTDIR\python27.dll 0 endWarnExist
MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION "$(MsgRemoveOld)$\n$\n$(MsgRemoveOld2)" IDOK uninst
Abort
uninst:
@@ -318,7 +320,7 @@ WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninst
WriteRegStr HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "URLUpdateInfo" 'http://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\interfaces\Classic\templates\static\images\favicon.ico'
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 18400
WriteRegDWORD HKEY_LOCAL_MACHINE "Software\Microsoft\Windows\CurrentVersion\Uninstall\SABnzbd" "EstimatedSize" 29622
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
@@ -349,8 +351,8 @@ Section $(MsgIcon) desktop
SectionEnd ; end of desktop icon section
Section /o $(MsgAssoc) assoc
${registerExtension} "$INSTDIR\nzb.ico" "$INSTDIR\SABnzbd.exe" ".nzb" "NZB File"
;${registerExtension} "$INSTDIR\SABnzbd.exe" ".nzb" "NZB File"
${registerExtension} "$INSTDIR\icons\nzb.ico" "$INSTDIR\SABnzbd.exe" ".nzb" "NZB File"
${RefreshShellIcons}
SectionEnd ; end of file association section
; begin uninstall settings/section
@@ -406,11 +408,11 @@ Section "un.$(MsgDelProgram)" Uninstall
DeleteRegKey HKEY_CURRENT_USER "Software\SABnzbd"
${unregisterExtension} ".nzb" "NZB File"
${RefreshShellIcons}
SectionEnd ; end of uninstall section
Section "un.$(MsgDelSettings)" DelSettings
Section /o "un.$(MsgDelSettings)" DelSettings
DetailPrint "Uninstall settings $LOCALAPPDATA"
Delete "$LOCALAPPDATA\sabnzbd\sabnzbd.ini"
RMDir /r "$LOCALAPPDATA\sabnzbd"

View File

@@ -1,8 +1,8 @@
Metadata-Version: 1.0
Name: SABnzbd
Version: 0.7.0
Summary: SABnzbd-0.7.0
Home-page: http://sourceforge.net/projects/sabnzbdplus
Version: 0.7.3
Summary: SABnzbd-0.7.3
Home-page: http://sabnzbd.org
Author: The SABnzbd Team
Author-email: team@sabnzbd.org
License: GNU General Public License 2 (GPL2 or later)

76
README.mkd Normal file
View File

@@ -0,0 +1,76 @@
Release Notes - SABnzbd 0.7.3
===============================
## Fixes in 0.7.3
- Prevent queue deadlock in case of fatally damaged par2 files
- Try to keep OSX Mountain Lion awake as long as downloading and postprocessing run
- Add RSS filter-enable checkboxes to Plush, Smpl and Classic skins
- Fix problem with saving modified parameters of an already enabled server
- Extend "check new release" option with test releases
- Correct several errors in Sort function
- Improve organization of Config->Servers
- Make detection of samples less aggressive
- Ignore pseudo NZB files that start with a period in the name
The Special option "random_server_ip" has been renamed to "randomize_server_ip"
and the default is now "Off".
The reason is that this option kills the speed of some Usenet providers.
If you really need this feature, you have to re-enable it.
## What's new in 0.7.0
- Download quota management
- Windows: simple system tray menu
- Multi-platform Growl support
- NotifyOSD support for Linux distros that have it
- Option to set maximum number of retries for servers (prevents deadlock)
- Pre-download check to estimate completeness (reliability is limited)
- Prevent partial downloading of par2 files that are not needed yet
- Config->Special for settings previously only available in the sabnzbd.ini file
- For Usenet servers with multiple IP addresses, pick a random one per connection
- Add pseudo-priority "Stop" that will send the job immediately to the post-processing queue
- Allow jobs still waiting for post-processing to be deleted too
- More persistent retries for unreliable indexers
- Single Configuration skin for all others skins (there is an option for the old style)
- Config->Special for settings that were previously only changeable in the sabnzbd.ini file
- Add Spanish, Portuguese (Brazil) and Polish translations
- Individual RSS filter toggle
- Unified OSX DMG
## About
SABnzbd is an open-source cross-platform binary newsreader.
It simplifies the process of downloading from Usenet dramatically,
thanks to its web-based user interface and advanced
built-in post-processing options that automatically verify, repair,
extract and clean up posts downloaded from Usenet.
(c) Copyright 2007-2012 by "The SABnzbd-team" \<team@sabnzbd.org\>
### IMPORTANT INFORMATION about release 0.7.x
<http://wiki.sabnzbd.org/introducing-0-7-0>
### Known problems and solutions
- Read the file "ISSUES.txt"
### Upgrading from 0.6.x
- Stop SABnzbd
- Install new version
- Start SABnzbd
### Upgrading from 0.5.x
- Stop SABnzbd
- Install new version
- Start SABnzbd.
The organization of the download queue is different from 0.5.x.
0.7.x will finish downloading an existing queue, but you
cannot go back to an older version without losing your queue.
Also, your sabnzbd.ini file will be upgraded, making it
incompatible with release 0.5.x
### Upgrading from 0.4.x
Download your current queue before upgrading.

View File

@@ -1,97 +0,0 @@
{\rtf1\ansi\ansicpg1252\cocoartf1138\cocoasubrtf320
{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw11900\paperh16840\vieww16360\viewh15680\viewkind0
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720
\f0\b\fs48 \cf0 SABnzbd 0.7.0\
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
\b0\fs26 \cf0 \
\b What's new
\b0 \
- Download quota management\
- Windows: simple system tray menu\
- Multi-platform Growl support\
- NotifyOSD support for Linux distros that have it\
- Option to set maximum number of retries for servers (prevents deadlock)\
- Pre-download check to estimate completeness (reliability is limited)\
- Prevent partial downloading of par2 files that are not needed yet\
- Config->Special for settings previously only available in the sabnzbd.ini file\
- For Usenet servers with multiple IP addresses, pick a random one per connection\
- Add pseudo-priority "Stop" that will send the job immediately to the post-processing queue\
- Allow jobs still waiting for post-processing to be deleted too\
- More persistent retries for unreliable indexers\
- Single Configuration skin for all others skins (there is an option for the old style)\
- Config->Special for settings that were previously only changeable in the sabnzbd.ini file\
- Add Spanish, Portuguese (Brazil) and Polish translations\
- Individual RSS filter toggle\
- Unified OSX DMG\
\
\b About
\b0 \
SABnzbd is an open-source cross-platform binary newsreader.\
It simplifies the process of downloading from Usenet dramatically,\
thanks to its web-based user interface and advanced\
built-in post-processing options that automatically verify, repair,\
extract and clean up posts downloaded from Usenet.\
SABnzbd also has a fully customizable user interface,\
and offers a complete API for third-party applications to hook into.\
\
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>\
\
There is an extensive Wiki on the use of SABnzbd.\
{\field{\*\fldinst{HYPERLINK "http://wiki.sabnzbd.org/"}}{\fldrslt http://wiki.sabnzbd.org/}}\
\
\b IMPORTANT INFORMATION
\b0 about release 0.7.0:\
{\field{\*\fldinst{HYPERLINK "http://wiki.sabnzbd.org/introducing-0-7-0"}}{\fldrslt http://wiki.sabnzbd.org/introducing-0-7-0}}\
\
\b Known problems and solutions\
\b0 Read the file "ISSUES.txt"
\b \
\b0 \
\
\b\fs40 Upgrading from 0.6.x
\b0\fs26 \
Stop SABnzbd.\
Install new version\
Start SABnzbd.\
\
\b\fs40 Upgrading from 0.5.x
\b0\fs26 \
Stop SABnzbd.\
Uninstall current version, keeping the data.\
Install new version\
Start SABnzbd.\
\
The organization of the download queue is different from 0.5.x.\
0.6.x will finish downloading an existing queue, but you\
cannot go back to an older version without losing your queue.\
Also, your sabnzbd.ini file will be upgraded, making it\
incompatible with release 0.5.x\
\
\b\fs40 \
Upgrading from 0.4.x
\b0\fs26 \
\
\b PLEASE DOWNLOAD YOUR CURRENT QUEUE BEFORE UPGRADING
\b0 \
\
When upgrading from a 0.4.x release such as 0.4.12 your old settings will be kept.\
You will however be given a fresh queue and history. If you have items in your queue\
from the older version of SABnzbd, you can either re-import the nzb files if you kept\
an nzb backup folder, or temporarily go back to 0.4.x until your queue is complete.\
The history is now stored in a better format meaning future upgrades should be backwards\
compatible.\
}

View File

@@ -1,31 +0,0 @@
************************ SABnzbd 0.7.0 ************************
What's new:
- Download quota management
- Windows: simple system tray menu
- Multi-platform Growl support
- NotifyOSD support for Linux distros that have it
- Option to set maximum number of retries for servers (prevents deadlock)
- Pre-download check to estimate completeness (reliability is limited)
- Prevent partial downloading of par2 files that are not needed yet
- Config->Special for settings previously only available in the sabnzbd.ini file
- For Usenet servers with multiple IP addresses, pick a random one per connection
- Add pseudo-priority "Stop" that will send the job immediately to the post-processing queue
- Allow jobs still waiting for post-processing to be deleted too
- More persistent retries for unreliable indexers
- Single Configuration skin for all others skins (there is an option for the old style)
- Config->Special for settings that were previously only changeable in the sabnzbd.ini file
- Add Spanish, Portuguese (Brazil) and Polish translations
- Individual RSS filter toggle
- Unified OSX DMG
About:
SABnzbd is an open-source cross-platform binary newsreader.
It simplifies the process of downloading from Usenet dramatically,
thanks to its web-based user interface and advanced
built-in post-processing options that automatically verify, repair,
extract and clean up posts downloaded from Usenet.
(c) Copyright 2007-2012 by "The SABnzbd-team" <team@sabnzbd.org>

View File

@@ -16,8 +16,8 @@
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
import sys
if sys.version_info < (2,5):
print "Sorry, requires Python 2.5 or higher."
if sys.version_info < (2, 5):
print "Sorry, requires Python 2.5, 2.6 or 2.7."
sys.exit(1)
import logging
@@ -253,6 +253,7 @@ def print_help():
print " --log-all Log all article handling (for developers)"
print " --console Force console logging for OSX app"
print " --new Run a new instance of SABnzbd"
print " --no_ipv6 Do not listen on IPv6 address [::1]"
def print_version():
print """
@@ -524,30 +525,24 @@ def all_localhosts():
return ips
def ipv_localhost(v):
""" Return True if localhost resolves to some IPV4 ('4') or IPV6 ('6') address
def check_resolve(host):
""" Return True if 'host' resolves
"""
try:
info = socket.getaddrinfo('localhost', None)
info = socket.getaddrinfo(host, None)
except:
# localhost does not resolve
# Does not resolve
return False
for item in info:
item = item[4][0]
if v == '4' and ':' not in item:
return True
elif v == '6' and ':' in item:
return True
return False
return True
#------------------------------------------------------------------------------
def get_webhost(cherryhost, cherryport, https_port):
""" Determine the webhost address and port,
return (host, port, browserhost)
"""
if cherryhost == '0.0.0.0' and not ipv_localhost('4'):
if cherryhost == '0.0.0.0' and not check_resolve('127.0.0.1'):
cherryhost = ''
elif cherryhost == '::' and not ipv_localhost('6'):
elif cherryhost == '::' and not check_resolve('::1'):
cherryhost = ''
if cherryhost is None:
@@ -562,9 +557,18 @@ def get_webhost(cherryhost, cherryport, https_port):
try:
info = socket.getaddrinfo(socket.gethostname(), None)
except:
# Hostname does not resolve, use 0.0.0.0
cherryhost = '0.0.0.0'
info = socket.getaddrinfo(localhost, None)
# Hostname does not resolve
try:
# Valid user defined name?
info = socket.getaddrinfo(cherryhost, None)
except:
if cherryhost not in ('localhost', '127.0.0.1', '::1'):
cherryhost = '0.0.0.0'
try:
info = socket.getaddrinfo(localhost, None)
except:
info = socket.getaddrinfo('127.0.0.1', None)
localhost = '127.0.0.1'
for item in info:
ip = str(item[4][0])
if ip.startswith('169.254.'):
@@ -670,13 +674,14 @@ def get_webhost(cherryhost, cherryport, https_port):
def attach_server(host, port, cert=None, key=None):
""" Define and attach server, optionally HTTPS
"""
http_server = _cpwsgi_server.CPWSGIServer()
http_server.bind_addr = (host, port)
if cert and key:
http_server.ssl_certificate = cert
http_server.ssl_private_key = key
adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr)
adapter.subscribe()
if not (sabnzbd.cfg.no_ipv6() and '::1' in host):
http_server = _cpwsgi_server.CPWSGIServer()
http_server.bind_addr = (host, port)
if cert and key:
http_server.ssl_certificate = cert
http_server.ssl_private_key = key
adapter = _cpserver.ServerAdapter(cherrypy.engine, http_server, http_server.bind_addr)
adapter.subscribe()
def is_sabnzbd_running(url):
@@ -773,7 +778,7 @@ def evaluate_inipath(path):
inipath = os.path.join(path, DEF_INI_FILE)
if os.path.isdir(path):
return inipath
elif os.path.isfile(path):
elif os.path.isfile(path) or os.path.isfile(path + '.bak'):
return path
else:
dirpart, name = os.path.split(path)
@@ -836,7 +841,7 @@ def commandline_handler(frozen=True):
try:
opts, args = getopt.getopt(info, "phdvncw:l:s:f:t:b:2:",
['pause', 'help', 'daemon', 'nobrowser', 'clean', 'logging=',
'weblogging=', 'server=', 'templates',
'weblogging=', 'server=', 'templates', 'no_ipv6',
'template2', 'browser=', 'config-file=', 'force',
'version', 'https=', 'autorestarted', 'repair', 'repair-all',
'log-all', 'no-login', 'pid=', 'new', 'sessions', 'console',
@@ -914,6 +919,7 @@ def main():
new_instance = False
force_sessions = False
osx_console = False
no_ipv6 = False
service, sab_opts, serv_opts, upload_nzbs = commandline_handler()
@@ -1000,6 +1006,8 @@ def main():
elif opt in ('--console',):
re_argv.append(opt)
osx_console = True
elif opt in ('--no_ipv6',):
no_ipv6 = True
sabnzbd.MY_FULLNAME = os.path.normpath(os.path.abspath(sabnzbd.MY_FULLNAME))
sabnzbd.MY_NAME = os.path.basename(sabnzbd.MY_FULLNAME)
@@ -1053,7 +1061,7 @@ def main():
GetProfileInfo(vista_plus)
# Find out where INI file is
inifile = os.path.abspath(sabnzbd.DIR_PROG + '/' + DEF_INI_FILE)
if not os.path.exists(inifile):
if not os.path.exists(inifile) and not os.path.exists(inifile + '.bak'):
inifile = os.path.abspath(sabnzbd.DIR_LCLDATA + '/' + DEF_INI_FILE)
if sabnzbd.DARWIN:
copy_old_files(sabnzbd.DIR_LCLDATA)
@@ -1065,7 +1073,7 @@ def main():
# All system data dirs are relative to the place we found the INI file
sabnzbd.DIR_LCLDATA = os.path.dirname(inifile)
if not os.path.exists(inifile) and not os.path.exists(sabnzbd.DIR_LCLDATA):
if not os.path.exists(inifile) and not os.path.exists(inifile + '.bak') and not os.path.exists(sabnzbd.DIR_LCLDATA):
try:
os.makedirs(sabnzbd.DIR_LCLDATA)
except IOError:
@@ -1082,6 +1090,9 @@ def main():
# Set root folders for HTTPS server file paths
sabnzbd.cfg.set_root_folders2()
if no_ipv6:
sabnzbd.cfg.no_ipv6.set(True)
# Determine web host address
cherryhost, cherryport, browserhost, https_port = get_webhost(cherryhost, cherryport, https_port)
enable_https = sabnzbd.cfg.enable_https()
@@ -1200,8 +1211,6 @@ def main():
sabnzbd.cfg.log_backups())
format = '%(asctime)s::%(levelname)s::[%(module)s:%(lineno)d] %(message)s'
if sabnzbd.WIN32:
format += '\r'
rollover_log.setFormatter(logging.Formatter(format))
rollover_log.addFilter(FilterCP3())
sabnzbd.LOGHANDLER = rollover_log
@@ -1359,8 +1368,8 @@ def main():
hosts[1] = '::1'
# The Windows binary requires numeric localhost as primary address
if multilocal and cherryhost == 'localhost' and hosts[1] == '127.0.0.1':
cherryhost = '::1'
if multilocal and cherryhost == 'localhost':
cherryhost = hosts[0]
if enable_https:
if https_port:
@@ -1804,4 +1813,4 @@ if __name__ == '__main__':
main()
else:
main()
main()

View File

@@ -73,6 +73,7 @@
<table>
<tr>
<th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th>
<th>&nbsp;</th>
<th>$T('rss-order')</th>
<th>$T('rss-type')</th>
<th>$T('rss-filter')</th>
@@ -86,6 +87,7 @@
<form action="upd_rss_filter" method="get">
<tr class="odd">
<td></td>
<td><input type="checkbox" name="enabled" value="1" checked="checked" /></td>
<td></td>
<td>
<select name="filter_type">
@@ -152,6 +154,10 @@
</td>
<form action="upd_rss_filter" method="get">
<td>
<input type="checkbox" name="enabled" value="1" <!--#if $filter[6] == '1' then 'checked="checked"' else ""#--> />
</td>
<td>
<input type="text" size="3" name="new_index" value=$fnum>
</td>
@@ -208,6 +214,7 @@
<input type="hidden" name="feed" value="$feed"/>
<input type="hidden" name="session" value="$session">
<input type="submit" value="$T('button-save')"/>
<!--#if not $rss[$feed].filter_states[$fnum]#-->&nbsp;&nbsp;$T('Incorrect filter')<!--#end if#-->
</td>
</form>
</tr>

View File

@@ -50,7 +50,9 @@
\$(document).ready(function () {
\$('.col2 H3').click(function () { \$(this).parent().next().toggle() });
#if $pane != "Servers"#
\$('.col2 H3').click(function () { \$(this).parent().next().toggle() });
#end if#
\$('.sabnzbd_restart').click(function () {
\$('.sabnzbd_restart').each(function () {
@@ -97,7 +99,7 @@
});
});
</script>
</head>

View File

@@ -100,7 +100,7 @@
</fieldset>
</div><!-- /col1 -->
</form>
</div>
</div>
<!--#end if#-->
@@ -341,6 +341,7 @@
<td>
<input type="submit" class="Save" value="$T('button-save')" />
<input type="button" class="delFilter" value="$T('button-x')" />
<!--#if not $rss[$feed].filter_states[$fnum]#-->&nbsp;&nbsp;$T('Incorrect filter')<!--#end if#-->
</td>
</tr>
</tbody>
@@ -510,7 +511,7 @@
}).done(function( msg ) {
location.reload();
});
} else {
} else {
return false;
}
});

View File

@@ -23,7 +23,7 @@
</div>
<div class="field-pair">
<label class="config" for="host">$T('srv-host')</label>
<input type="url" name="host" id="host" size="40" />
<input type="text" name="host" id="host" size="40" />
</div>
<div class="field-pair alt">
<label class="config" for="port">$T('srv-port')</label>
@@ -86,18 +86,16 @@
<div class="section">
<div class="col2">
<h3>$servers[$server]['name']</h3>
<!--#if 'amounts' in $servers[$server]#-->
<p>
<b>$T('srv-bandwidth'):</b><br/>
$T('total'): $servers[$server]['amounts'][0]<br/>
$T('today'): $servers[$server]['amounts'][3]<br/>
$T('thisWeek'): $servers[$server]['amounts'][2]<br/>
$T('thisMonth'): $servers[$server]['amounts'][1]
<table><tr>
<td><input type="checkbox" class="toggleServerCheckbox" name="q_enable" value="1" <!--#if int($servers[$server]['enable']) != 0 then 'checked="checked"' else ""#--> rel="$server" /></td>
<td>&nbsp;$T('enabled')</td>
</tr></table>
</p>
<input type="button" value="$T('button-clrServer')" class="clrServer" />
<!--#end if#-->
<input type="button" value="$T('showDetails')" class="showserver" />
</div><!-- /col2 -->
<div class="col1">
<div class="col1" style="display:none;">
<fieldset>
<div class="field-pair alt">
<label class="config" for="enable$cur">$T('srv-enable')</label>
@@ -106,7 +104,7 @@
</div>
<div class="field-pair">
<label class="config" for="host$cur">$T('srv-host')</label>
<input type="url" name="host" id="host$cur" value="$servers[$server]['host']" size="40" />
<input type="text" name="host" id="host$cur" value="$servers[$server]['host']" size="40" />
</div>
<div class="field-pair alt">
<label class="config" for="port$cur">$T('srv-port')</label>
@@ -154,6 +152,15 @@
</div>
</fieldset>
</div><!-- /col1 -->
<div class="col2" style="display:block;">
<!--#if 'amounts' in $servers[$server]#-->
<b>$T('srv-bandwidth'):</b><br/>
$T('total'): $servers[$server]['amounts'][0]<br/>
$T('today'): $servers[$server]['amounts'][3]<br/>
$T('thisWeek'): $servers[$server]['amounts'][2]<br/>
$T('thisMonth'): $servers[$server]['amounts'][1]
<!--#end if#-->
</div>
</div><!-- /section -->
</form>
<!--#end for#-->
@@ -162,6 +169,15 @@
<script>
\$(document).ready(function(){
\$('.showserver').click(function () {
\$(this).parent().next().toggle();
\$(this).parent().next().next().toggle();
if (\$(this).attr("value") == "$T('showDetails')") {
\$(this).attr("value", "$T('hideDetails')");
} else {
\$(this).attr("value", "$T('showDetails')");
}
});
\$('#addServerButton').click(function(){
\$('#addServer').hide();
\$('#addServerContent').show();
@@ -188,6 +204,16 @@
\$(this).parents('form:first').attr('action','clrServer').submit();
return false;
});
\$('.toggleServerCheckbox').click(function(){
var whichServer = \$(this).attr("rel");
\$.ajax({
type: "POST",
url: "toggleServer",
data: {server: whichServer, session: "$session" }
}).done(function() {
location.reload();
});
});
});
</script>

View File

@@ -13,7 +13,11 @@
<fieldset>
<div class="field-pair alt">
<label class="config" for="check_new_rel">$T('opt-check_new_rel')</label>
<input type="checkbox" name="check_new_rel" id="check_new_rel" value="1" <!--#if int($check_new_rel) > 0 then 'checked="checked"' else ""#--> />
<select name="check_new_rel" id="check_new_rel">
<option value="0" <!--#if $check_new_rel == "1" then 'selected="selected" class="selected"' else ""#--> >$T('off')</option>
<option value="1" <!--#if $check_new_rel == "2" then 'selected="selected" class="selected"' else ""#--> >$T('on')</option>
<option value="2" <!--#if $check_new_rel == "3" then 'selected="selected" class="selected"' else ""#--> >$T('also-test')</option>
</select>
<span class="desc">$T('explain-check_new_rel')</span>
</div>
<div class="field-pair">

View File

@@ -174,6 +174,7 @@ $T('explain-RSS')
<table class="rssTable">
<tr>
<th>$T('Plush-rss-delete')</th>
<th>&nbsp;</th>
<th>$T('rss-order')</th>
<th>$T('rss-type')</th>
<th>$T('rss-filter')</th>
@@ -187,6 +188,7 @@ $T('explain-RSS')
<form action="upd_rss_filter" method="get">
<tr class="odd">
<td></td>
<td><input type="checkbox" name="enabled" value="1" checked="checked" /></td>
<td></td>
<td>
<select name="filter_type">
@@ -255,7 +257,10 @@ $T('explain-RSS')
</td>
<form action="upd_rss_filter" method="get">
<td>
<td>
<input type="checkbox" name="enabled" value="1" <!--#if $filter[6] == '1' then 'checked="checked"' else ""#--> />
</td>
<td>
<input type="text" size="3" name="new_index" value=$fnum>
</td>
<td>
@@ -310,6 +315,7 @@ $T('explain-RSS')
<input type="hidden" name="feed" value="$feed"/>
<input type="hidden" name="session" value="$session">
<input type="submit" class="juiButton" value="$T('button-save')"/>
<!--#if not $rss[$feed].filter_states[$fnum]#-->&nbsp;&nbsp;$T('Incorrect filter')<!--#end if#-->
</td>
</form>
</tr>

View File

@@ -56,7 +56,7 @@
</td>
<td class="download-title">
<a href="nzb/$slot.nzo_id/" title="$T('status'): $T('post-'+$slot.status)<br/>$T('nzo-age'): $slot.avg_age<br/><!--#if $slot.missing#-->$T('missingArt'): $slot.missing<!--#end if#-->">$slot.filename</a>
<a href="nzb/$slot.nzo_id/" title="$T('status'): $T('post-'+$slot.status)<br/>$T('nzo-age'): $slot.avg_age<br/><!--#if $slot.missing#-->$T('missingArt'): $slot.missing<!--#end if#-->">$slot.filename.replace('.', '.&#8203;').replace('_', '_&#8203;')</a>
</td>
<td>

View File

@@ -118,15 +118,19 @@ jQuery(function($){
// fix for touch devices -- toggle visibility
$('.sprite_q_menu_pausefor').bind('touchend', function(e) {
e.preventDefault();
if( $(this).hasClass('sprite_q_menu_pauseforsfHover') ) {
$(this).find("ul").toggle();
if (! $.browser.safari) {
e.preventDefault();
if( $(this).hasClass('sprite_q_menu_pauseforsfHover') ) {
$(this).find("ul").toggle();
}
}
});
$('.sprite_q_queue').bind('touchend', function(e) {
e.preventDefault();
if( $(this).hasClass('sprite_q_queuesfHover') ) {
$(this).find("ul").toggle();
if (! $.browser.safari) {
e.preventDefault();
if( $(this).hasClass('sprite_q_queuesfHover') ) {
$(this).find("ul").toggle();
}
}
});

View File

@@ -31,7 +31,7 @@
<!--#for $warn in $warnings#-->
<!--#set $odd = not $odd#-->
<tr class="<!--#if $odd then "odd" else "even"#-->">
<td>$warn.replace("\n","</td><td>")</td></tr>
<td>$warn.replace("\n","</td><td>", 2)</td></tr>
<!--#end for#-->
</table>
<!--#else#-->

View File

@@ -79,6 +79,7 @@ MochiKit.DOM.addLoadEvent(location = "../../#config-rss");
<thead>
<tr>
<th>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</th>
<th>&nbsp;</th>
<th>$T('rss-order')</th>
<th>$T('rss-type')</th>
<th>$T('rss-filter')</th>
@@ -92,6 +93,7 @@ MochiKit.DOM.addLoadEvent(location = "../../#config-rss");
<tbody>
<tr id="$feed+new_filter">
<td></td>
<td><input type="checkbox" name="enabled" value="1" checked="checked" /></td>
<td></td>
<td>
<select name="filter_type">
@@ -157,7 +159,9 @@ MochiKit.DOM.addLoadEvent(location = "../../#config-rss");
<td>
<input type="submit" value="$T('rss-delFilter')" onclick="javascript:lr('config/rss/del_rss_filter','index=$fnum&feed=$feed')" />
</td>
<td>
<input type="checkbox" name="enabled" value="1" <!--#if $filter[6] == '1' then 'checked="checked"' else ""#--> />
</td>
<td>
<input type="text" size="3" name="new_index" value=$fnum>
</td>
@@ -213,6 +217,7 @@ MochiKit.DOM.addLoadEvent(location = "../../#config-rss");
<input type="hidden" name="index" value="$fnum"/>
<input type="hidden" name="feed" value="$feed"/>
<input type="submit" value="$T('button-save')" onclick="javascript:submitconfig('config/rss/upd_rss_filter', this,'$feed+$fnum','1' )"/>
<!--#if not $rss[$feed].filter_states[$fnum]#-->&nbsp;&nbsp;$T('Incorrect filter')<!--#end if#-->
</td>
</tr>

View File

@@ -8,9 +8,8 @@
<br/>
<div id="tips" class="hidden">
$T('wizard-tip1') <span class="bold">$T('wizard-tip2')</span><br/>
<!--#if len($urls) > 1#--><!--#set $s = 's'#--><!--#else#--><!--#set $s = ''#--><!--#end if#-->
<!--#set $tip3 = $T('wizard-tip3') % $s#-->
$tip3:<br/><br/>
<!--#set $tip3 = $T('wizard-tip3') % ''#-->
$tip3<br/><br/>
<div class="quoteBlock">
<!--#set $i = 0#-->
<!--#for $url in $urls#-->

View File

@@ -95,7 +95,7 @@ def PatchVersion(name):
try:
pipe = subprocess.Popen(GitStatus, shell=True, stdout=subprocess.PIPE).stdout
for line in pipe.read().split('\n'):
if 'nothing to commit' in line:
if 'nothing to commit' in line or 'nothing added to commit' in line:
state = ''
break
pipe.close()
@@ -207,7 +207,7 @@ def Dos2Unix(name):
def Unix2Dos(name):
""" Read file, remove \r, replace \n by \r\n and write back """
base, ext = os.path.splitext(name)
if ext.lower() not in ('.py', '.txt', '.css', '.js', '.tmpl', '.sh', '.cmd'):
if ext.lower() not in ('.py', '.txt', '.css', '.js', '.tmpl', '.sh', '.cmd', '.mkd'):
return
print name
@@ -246,6 +246,11 @@ print sys.argv[0]
Git = CheckPath('git')
ZipCmd = CheckPath('zip')
UnZipCmd = CheckPath('unzip')
if os.name != 'nt':
PanDoc = CheckPath('pandoc')
else:
PanDoc = None
if os.name == 'nt':
msg = 'Requires the standard version of NSIS'
NSIS = CheckPath('makensis')
@@ -305,7 +310,7 @@ PatchVersion(release)
# List of data elements, directories end with a '/'
data_files = [
'ABOUT.txt',
'README.txt',
'README.mkd',
'INSTALL.txt',
'GPL2.txt',
'GPL3.txt',
@@ -351,6 +356,11 @@ if target == 'app':
os.system(GitRevertVersion)
exit(1)
if not PanDoc:
print "Sorry, requires pandoc in the $PATH"
os.system(GitRevertVersion)
exit(1)
# Check which Python flavour
apple_py = 'ActiveState' not in sys.copyright
@@ -429,9 +439,16 @@ if target == 'app':
else:
os.system("cp -pR osx/unrar/unrar-leopard dist/SABnzbd.app/Contents/Resources/osx/unrar/unrar >/dev/null")
os.system("cp icons/sabnzbd.ico dist/SABnzbd.app/Contents/Resources >/dev/null")
os.system("cp README.rtf dist/SABnzbd.app/Contents/Resources/Credits.rtf >/dev/null")
os.system("pandoc -f markdown -t rtf -s -o dist/SABnzbd.app/Contents/Resources/Credits.rtf README.mkd >/dev/null")
os.system("find dist/SABnzbd.app -name .git | xargs rm -rf")
# Remove source files to prevent re-compilation, which would invalidate signing
py_ver = '%s.%s' % (sys.version_info[0], sys.version_info[1])
os.system("find dist/SABnzbd.app/Contents/Resources/lib/python%s/Cheetah -name '*.py' | xargs rm" % py_ver)
os.system("find dist/SABnzbd.app/Contents/Resources/lib/python%s/xml -name '*.py' | xargs rm" % py_ver)
os.remove('dist/SABnzbd.app/Contents/Resources/site.py')
os.system("sleep 5")
if OSX_LION:
# Sign the App if possible
authority = os.environ.get('SIGNING_AUTH')
@@ -447,15 +464,11 @@ if target == 'app':
print 'Create src %s' % fileOSr
os.system('tar -czf %s --exclude ".git*" --exclude "sab*.zip" --exclude "SAB*.tar.gz" --exclude "*.cmd" --exclude "*.pyc" '
'--exclude "*.sparseimage" --exclude "dist" --exclude "build" --exclude "*.nsi" --exclude "win" --exclude "*.dmg" '
'--exclude "*.sparseimage*" --exclude "dist" --exclude "build" --exclude "*.nsi" --exclude "win" --exclude "*.dmg" '
'./ >/dev/null' % (fileOSr) )
# Copy README.txt
os.system("cp README.rtf /Volumes/%s/" % volume)
# Remove site.py to prevent re-compilation (otherwise the OSX Firewall may complain)
os.remove('/Volumes/%s/OS X 10.6 and Above/SABnzbd.app/Contents/Resources/site.py' % volume)
os.remove('/Volumes/%s/OS X 10.5 and Below/SABnzbd.app/Contents/Resources/site.py' % volume)
# Generate README.rtf
os.system("cp dist/SABnzbd.app/Contents/Resources/Credits.rtf /Volumes/%s/README.rtf" % volume)
#Unmount sparseimage
os.system("hdiutil eject /Volumes/%s/>/dev/null" % volume)
@@ -518,7 +531,7 @@ elif target in ('binary', 'installer'):
for tup in options['data_files']:
for file in tup[1]:
name, ext = os.path.splitext(file)
if ext.lower() in ('.txt', '.cmd'):
if ext.lower() in ('.txt', '.cmd', '.mkd'):
Unix2Dos("dist/%s" % file)
DeleteFiles('dist/Sample-PostProc.sh')
DeleteFiles('dist/PKG-INFO')
@@ -563,6 +576,7 @@ elif target in ('binary', 'installer'):
DeleteFiles(r'dist\lib\API-MS-Win-*.dll')
DeleteFiles(r'dist\lib\MSWSOCK.DLL')
DeleteFiles(r'dist\lib\POWRPROF.DLL')
DeleteFiles(r'dist\lib\KERNELBASE.dll')
############################
# Remove .git residue
@@ -574,6 +588,13 @@ elif target in ('binary', 'installer'):
# Curl for Python 2.5
os.system(r'unzip -o win\curl\curl.zip -d dist\lib')
############################
# Fix icon issue with NZB association
os.system(r'copy dist\icons\nzb.ico dist')
############################
# Rename MKD file
rename_file('dist', 'README.mkd', 'README.txt')
############################
if target == 'installer':
@@ -652,6 +673,10 @@ else:
shutil.copy2(file, dest)
Dos2Unix(fullname)
############################
# Rename MKD file
rename_file(root, 'README.mkd', 'README.txt')
os.chdir(root)
os.chdir('..')

View File

@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-04-28 12:01+0000\n"
"PO-Revision-Date: 2012-03-14 04:51+0000\n"
"PO-Revision-Date: 2012-07-07 04:53+0000\n"
"Last-Translator: Rene <Unknown>\n"
"Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-04-29 05:17+0000\n"
"X-Generator: Launchpad (build 15149)\n"
"X-Launchpad-Export-Date: 2012-07-08 04:55+0000\n"
"X-Generator: Launchpad (build 15558)\n"
#: email/email.tmpl:1
msgid ""
@@ -65,42 +65,42 @@ msgid ""
"<!--#end if#-->\n"
msgstr ""
"##\n"
"## Default Email template for SABnzbd\n"
"## This a Cheetah template\n"
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
"## Standard Email skabelon til SABnzbd\n"
"## Dette er en Cheetah skabelon\n"
"## Dokumentation: http://sabnzbd.wikidot.com/email-templates\n"
"##\n"
"## Newlines and whitespace are significant!\n"
"## Linjeskift og blanktegn er betydelig!\n"
"##\n"
"## These are the email headers\n"
"## Disse er e-mail-headerne \n"
"To: $to\n"
"From: $from\n"
"Date: $date\n"
"Subject: SABnzbd has <!--#if $status then \"completed\" else \"failed\" #--> "
"job $name\n"
"Subject: SABnzbd har <!--#if $status then \"hentet\" else \"fejlet\" #--> job "
"$name\n"
"X-priority: 5\n"
"X-MS-priority: 5\n"
"## After this comes the body, the empty line is required!\n"
"## Efter dette kommer body, den tomme linje kræves!\n"
"\n"
"Hej,\n"
"<!--#if $status #-->\n"
"SABnzbd har downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
"\"(newzbin #\" + $msgid + \")\"#-->\n"
"SABnzbd har hentet \"$name\" <!--#if $msgid==\"\" then \"\" else \"(newzbin "
"#\" + $msgid + \")\"#-->\n"
"<!--#else#-->\n"
"SABnzbd har ikke downloaded \"$name\" <!--#if $msgid==\"\" then \"\" else "
"SABnzbd kunne ikke hente \"$name\" <!--#if $msgid==\"\" then \"\" else "
"\"(newzbin #\" + $msgid + \")\"#-->\n"
"<!--#end if#-->\n"
"Færdig kl. $end_time\n"
"Downloaded $size\n"
"Hentet $size\n"
"\n"
"Resultat af job:\n"
"<!--#for $stage in $stages #-->\n"
"Stage $stage <!--#slurp#-->\n"
"Etape $stage <!--#slurp#-->\n"
"<!--#for $result in $stages[$stage]#-->\n"
" $result <!--#slurp#-->\n"
"<!--#end for#-->\n"
"<!--#end for#-->\n"
"<!--#if $script!=\"\" #-->\n"
"Output from user script \"$script\" (Exit code = $script_ret):\n"
"Output fra bruger script \"$script\" (Exit code = $script_ret):\n"
"$script_output\n"
"<!--#end if#-->\n"
"<!--#if $status #-->\n"
@@ -138,20 +138,20 @@ msgid ""
"Bye\n"
msgstr ""
"##\n"
"## RSS Email template for SABnzbd\n"
"## This a Cheetah template\n"
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
"## RSS Email skabelon til SABnzbd\n"
"## Dette er Cheetah skabelon\n"
"## Dokumentation: http://sabnzbd.wikidot.com/email-templates\n"
"##\n"
"## Newlines and whitespace are significant!\n"
"## Linjeskift og blanktegn er betydelig!\n"
"##\n"
"## These are the email headers\n"
"## Dette er email headers\n"
"To: $to\n"
"From: $from\n"
"Date: $date\n"
"Subject: SABnzbd har tilføjet $antal jobs til køen\n"
"X-priority: 5\n"
"X-MS-priority: 5\n"
"## After this comes the body, the empty line is required!\n"
"## Efter dette kommer body, den tomme linje kræves!\n"
"\n"
"Hej,\n"
"\n"
@@ -189,24 +189,24 @@ msgid ""
"Bye\n"
msgstr ""
"##\n"
"## Bad URL Fetch Email template for SABnzbd\n"
"## This a Cheetah template\n"
"## Documentation: http://sabnzbd.wikidot.com/email-templates\n"
"## Dårlig URL Fetch E-mail skabelon for SABnzbd\n"
"## Dette er en Cheetah skabelon\n"
"## Dokumentation: http://sabnzbd.wikidot.com/email-templates\n"
"##\n"
"## Newlines and whitespace are significant!\n"
"## Linjeskift og blanktegn er betydelig!\n"
"##\n"
"## These are the email headers\n"
"## Dette er email headers\n"
"To: $to\n"
"From: $from\n"
"Date: $date\n"
"Subject: SABnzbd failed to fetch an NZB\n"
"Subject: SABnzbd kunne ikke hente en NZB\n"
"X-priority: 5\n"
"X-MS-priority: 5\n"
"## After this comes the body, the empty line is required!\n"
"## Efter dette kommer body, den tomme linje kræves!\n"
"\n"
"Hi,\n"
"Hej,\n"
"\n"
"SABnzbd has failed to retrieve the NZB from $url.\n"
"The error message was: $msg\n"
"SABnzbd kunne ikke hente NZB fra $url.\n"
"Fejl meddelelsen er: $msg\n"
"\n"
"Bye\n"
"Farvel\n"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-05-09 04:42+0000\n"
"Last-Translator: Rene <Unknown>\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 18:27+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-10 05:55+0000\n"
"X-Generator: Launchpad (build 15213)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:11+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -53,7 +53,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS fejlede på grund af manglende CERT og KEY filer"
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd lukning udført."
@@ -110,15 +110,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Det lykkedes ikke at tilslutte (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s modtaget, gemmer og lukker..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "henter msgid %s fra www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -126,31 +126,31 @@ msgstr ""
"Fejl ved hentning af msgid %s fra www.newzbin2.es - Kontroller, at dit "
"brugernavn og din adgangskode er korrekt"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Forsøger at hente NZB fra %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Kan ikke oprette temp fil for %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Forsøger at sætte status på ikke eksisterende server %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "For lidt diskplads tvinger system i PAUSE"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Fejl i tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Gemmes %s mislykkedes"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Downloadning af %s mislykkedes"
@@ -158,7 +158,7 @@ msgstr "Downloadning af %s mislykkedes"
msgid "Test Notification"
msgstr "Afprøv notifikation"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Ingen"
@@ -167,31 +167,31 @@ msgstr "Ingen"
msgid "Default"
msgstr "Standard"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "ADVARSEL:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "FEJL:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "Ukendt"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Det lykkedes ikke at kompilere regex for søgestreng: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -219,7 +219,7 @@ msgstr "Kvote brugt, pause downloading"
msgid "%s is not a valid email address"
msgstr "%s er ikke en godkendt e-mail adresse"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Kræver serveradresse"
@@ -291,19 +291,19 @@ msgstr "Ukendt fejl under afkodning af %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => mangler fra alle servere, afviser"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Fejl ved fjernelse af %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Kan ikke læse %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Kan ikke læse overvåget mappe %s"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Sat på pause"
@@ -507,85 +507,85 @@ msgstr ""
"derefter på knappen nedenunder..<br /><br /><strong><a "
"href=\"..\">Opdater</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Feed"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Daglig"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Mandag"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Tirsdag"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Onsdag"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Torsdag"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Fredag"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Lørdag"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "Søndag"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "slået fra"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp; Server løsning"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Fejl parameter"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Tilbage"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "Job \"%s\" er genoptaget i køen"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "Jobs markeret med '*' vil ikke blive hentet automatisk."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Matchede"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Matchede ikke"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Hentet"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Hentet indtil videre"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Fejl værdi før %s: %s"
@@ -613,7 +613,7 @@ msgstr "Kunne ikke læse nøgler i registreringsdatabasen for specielle mapper"
msgid "Failed making (%s)"
msgstr "Oprettelse af (%s) mislykkedes"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Det lykkedes ikke at flytte %s til %s"
@@ -629,15 +629,15 @@ msgstr "Forsøg igen"
msgid "URL Fetching failed; %s"
msgstr "URL hentning mislykkedes; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "pyopenssl modul mangler, du skal installere for HTTPS-adgang"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Fejl ved oprettelse af SSL-nøgle og certifikat."
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Det lykkedes ikke at ændre rettigheder på %s"
@@ -959,111 +959,112 @@ msgstr "%s artikler havde ikke-matchende dubletter"
msgid "Error importing %s"
msgstr "Det lykkedes ikke at importere %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Advarsler"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Inaktiv"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Opsætning"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Kø"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Rens køen"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Historik"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Tøm historik"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Hastighedsbegrænsning"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pause"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Genoptag"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Henter Newzbin bogmærker"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Scan overvåget mappe"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Færdig mappe"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Ufuldstændig mappe"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Fejlfinding"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Genstart"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Genstart uden login"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Afslut"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Kø (de første 10 poster)"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Tom"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Historik (de 10 seneste poster)"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Ny version tilgænglig"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Gå til guiden"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Standser"
@@ -1262,107 +1263,107 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Det lykkedes ikke at fjerne nzo fra efterbehandlings køen (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr "Overførslen kan mislykkes, kun %s af det krævet %s tilgængelige"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "Hentning mislykkedes Findes ikke hos din server's retention?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Kan ikke oprette endelig mappe %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Ingen efterbehandling på grund af mislykket bekræftigelse"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Flytter"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "Sendt %s til kø"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Det lykkedes ikke at omdøbe \"%s\" til \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Kunne ikke flytte filer"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Køre script"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Kør bruger script %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "Kørte %s"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Mere"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Vis script udlæsning"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Overførsel fuldført"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Download mislykkedes"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Efterbehandling mislykkedes for %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "se logfil"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Efterbehandling blev afbrudt (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Fjernelse af %s mislykkedes."
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Det lykkedes ikke at fjerne arbejdsmappen (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Efterbehandling"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Forsøger SFV verifikation"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Some files failed to verify against \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Kontrolleret korrekt ved hjælp af SFV filer"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Ingen par2 sæt"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Fjernelse af%s mislykkedes"
@@ -1414,12 +1415,12 @@ msgstr "Vis grænseflade"
msgid "Open complete folder"
msgstr "Åben færdig mappe"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Luk ned"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Tilbageværende"
@@ -4218,7 +4219,15 @@ msgstr "Trin fem"
msgid "E.g. 119 or 563 for SSL"
msgstr "F.eks. 119 eller 563 for SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Afslut SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr ""
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4234,31 +4243,31 @@ msgstr ""
"Den er licenseret under GNU General Public License version 2 eller (efter "
"eget valg) enhver senere version\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Det lykkedes ikke at hente TV info (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Det lykkedes ikke at omdøbe: %s til %s"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Kunne ikke omdøbe lignende fil: %s til %s"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Ugyldigt nzbmatrix rapport nummer %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Du skal bruge en nzbmatrix VIP konto for at bruge API'EN"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Ugyldig nzbmatrix legitimationsoplysninger"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Problem at få adgang til nzbmatrix server (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-06-04 16:01+0000\n"
"Last-Translator: Thomas Lucke (Lucky) <Unknown>\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 18:33+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-05 05:13+0000\n"
"X-Generator: Launchpad (build 15353)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:11+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -55,7 +55,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS wegen fehlenden Zertifikats- und Schlüsseldateien deaktiviert."
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd wurde beendet"
@@ -116,45 +116,47 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Die Verbindung konnte nicht überprüft werden. (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s erkannt. Speichern und beenden..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr ""
msgstr "Hole msgid %s von www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
msgstr ""
"Fehler beim Abrufen msgid %s from www.newzbin2.es - Bitte stelle sicher das "
"Benutzername und Passwort korrekt eingestellt sind"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Versuche NZB-Datei von %s abzurufen"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Temporäre Datei für %s konnte nicht angelegt werden"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Versuche Status für nicht existierenden Server %s zu setzen"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Angehalten wegen zu wenig freiem Speicherplatz"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Fehler in tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Fehler beim Speichern von %s"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Fehler beim Laden von %s"
@@ -162,7 +164,7 @@ msgstr "Fehler beim Laden von %s"
msgid "Test Notification"
msgstr "Benachrichtigungen testen"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Nichts"
@@ -171,32 +173,32 @@ msgstr "Nichts"
msgid "Default"
msgstr "Standard"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "WARNUNG:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "FEHLER:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "unbekannt"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr ""
"Kompilieren des regulären Ausdrucks für den Suchbegriff %s fehlgeschlagen."
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "t"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -224,7 +226,7 @@ msgstr "Kontingent aufgebraucht, Downloads werden angehalten"
msgid "%s is not a valid email address"
msgstr "%s ist keine gültige E-Mail-Adresse"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Server-Adresse wird benötigt"
@@ -299,19 +301,19 @@ msgstr "Unbekannter Fehler %s beim Dekodieren"
msgid "%s => missing from all servers, discarding"
msgstr "%s wurde auf keinem Server gefunden und daher übersprungen"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Fehler beim Entfernen von %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "%s kann nicht gelesen werden"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Überwachter Ordner %s kann nicht gelesen werden"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Angehalten"
@@ -520,87 +522,87 @@ msgstr ""
"danach auf folgenden Knopf.<br /><br /><strong><a "
"href=\"..\">Aktualisieren</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Feed"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Täglich"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Montag"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Dienstag"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Mittwoch"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Donnerstag"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Freitag"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Samstag"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "Sonntag"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "Aus"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Adresse wird aufgelöst..."
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Fehlerhafter Parameter"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Zurück"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "Auftrag \"%s\" wurde wieder zur Warteschlange hinzugefügt"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr ""
"Aufträge, die mit '*' markiert sind, werden nicht automatisch "
"heruntergeladen."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Entspricht"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Entspricht nicht"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Heruntergeladen"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Bis jetzt heruntergeladen"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Fehlerhafter Wert für %s: %s"
@@ -630,7 +632,7 @@ msgstr "Lesen der Registry-Schlüssel für spezielle Ordner fehlgeschlagen."
msgid "Failed making (%s)"
msgstr "Erstellen von %s fehlgeschlagen"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Verschieben von %s nach %s fehlgeschlagen"
@@ -646,15 +648,15 @@ msgstr "Erneut versuchen"
msgid "URL Fetching failed; %s"
msgstr "Abrufen der URL fehlgeschlagen; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "pyopenssl-Modul fehlt. Bitte installieren für SSL-Unterstützung."
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Fehler beim Anlegen des SSL-Schlüssels und -Zertifikats."
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Rechte von %s konnten nicht geändert werden"
@@ -983,111 +985,112 @@ msgstr "%s Artikel hatten nicht übereinstimmende Duplikate"
msgid "Error importing %s"
msgstr "Fehler beim Importieren von %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Warnungen"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Leerlauf"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Einstellungen"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Warteschlange"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Warteschlange leeren"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Verlauf"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Verlauf leeren"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Geschwindigkeit begrenzen"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Anhalten"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "Min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Fortsetzen"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Newzbin-Lesezeichen abrufen"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Überwachter Ordner lesen"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Fertige Downloads"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Unfertige Download"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Fehler suchen"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Neu starten"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Neustart ohne Anmeldung"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Beenden"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Warteschlange mit den 10 obersten Einträgen"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Leer"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Verlauf mit den letzten 10 Einträgen"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Neue Version verfügbar"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Assistent öffnen"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Beenden..."
@@ -1300,108 +1303,108 @@ msgstr ""
"Fehler beim Entfernen der NZB-Datei von der Nachbearbeitungs-Warteschlange "
"(id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr ""
"Download wahrscheinlich fehlgeschlagen, nur %s von benötigten %s verfügbar"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "Fehler beim Herunterladen. Ist die Datei zu alt?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Konnte Download-Ordner %s nicht anlegen"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Keine Nachbearbeitung wegen fehlgeschlagener Überprüfung"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Verschieben"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "%s wurde an die Warteschlange gesendet"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Fehler beim Umbenennen von \"%s\" nach \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Dateien verschieben fehlgeschlagen"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Ausführen des Skripts"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Ausführen des Benutzer-Skripts %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "%s ausgeführt"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Mehr"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Skript-Ausgabe anzeigen"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Download fertig"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Download Fehlgeschlagen"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Nachbearbeitung von %s fehlgeschlagen (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "Beachten Sie die Protokolldatei"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Nachbearbeitung wurde abgebrochen (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Aufräumen von %s fehlgeschlagen"
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Fehler beim Entfernen des Arbeitsverzeichnisses %s."
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Nachbearbeitung"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Versuche SFV-Überprüfung"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Überprüfung einiger Dateien mittels %s fehlgeschlagen"
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Überprüfung mit SFV-Datei(en) erfolgreich"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Keine PAR2-Sätze"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Entfernen von %s fehlgeschlagen"
@@ -1453,12 +1456,12 @@ msgstr "Interface anzeigen"
msgid "Open complete folder"
msgstr "Öffne Zielverzeichnis"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Beenden"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Verbleibend"
@@ -4297,7 +4300,15 @@ msgstr "Schritt 5"
msgid "E.g. 119 or 563 for SSL"
msgstr "Z.B. 119 oder 563 für SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "SABnzbd beenden"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Assistenten starten"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4313,31 +4324,31 @@ msgstr ""
"Sie steht unter der GNU GENERAL PUBLIC LICENSE Version 2 oder (nach Ihrer "
"Option) jeder späteren Version.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Fehler beim Abrufen der TV-Informationen: %s"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Umbenennen von %s nach %s fehlgeschlagen."
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Umbenennen der gleichen Datei von %s nach %s fehlgeschlagen."
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Ungültige nzbmatrix.com-Bericht-ID %s."
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Sie benötigen einen NZBMatrix VIP-Konto, um die API zu nutzen"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Fehlerhafte nzbmatrix Anmeldedaten"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Problem beim Zugriff auf den nzbmatrix.com-Server: %s"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-05-09 21:05+0000\n"
"Last-Translator: Jabroni <asskick@gmail.com>\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 18:36+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-10 05:55+0000\n"
"X-Generator: Launchpad (build 15213)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:12+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -55,7 +55,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS deshabilitado debido a la falta de archivos CERT y KEY"
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "Cierre de SABnzbd terminado"
@@ -112,15 +112,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "No se pudo determinar el resultado de la conexión (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Señal %s capturado, guardando y saliendo..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "Obteniendo msgid %s desde www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -128,31 +128,31 @@ msgstr ""
"Error al obtener msgid %s desde www.newzbin2.es - Por favor asegurese que su "
"nombre de usuario y contraseña estan configurados"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Tratando de buscar NZB de %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "No se puede crear el archivo temporal para %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Intentando cambiar el estado de servidor inexistente %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Muy poco espacio en disco forzando PAUSA"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Fallo en tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Guardar de %s no se pudo completar."
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Cargar de %s no se pudo completar."
@@ -160,7 +160,7 @@ msgstr "Cargar de %s no se pudo completar."
msgid "Test Notification"
msgstr "Notificación de prueba"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Ninguno"
@@ -169,31 +169,31 @@ msgstr "Ninguno"
msgid "Default"
msgstr "Predeterminado"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "AVISO:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "ERROR:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "desconocido"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Compilación de regex para término fallo: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -221,7 +221,7 @@ msgstr "Quota gastado, pausando cola"
msgid "%s is not a valid email address"
msgstr "%s no es una dirección de correo electrónico válida."
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Se necesita la dirección del servidor"
@@ -293,19 +293,19 @@ msgstr "Error inespecifico mientras descodificando %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => faltando de todos servidores, desechando"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Error al quitar %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "No se puede leer %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Directorio Watched %s no se puede leer"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "En pausa"
@@ -510,85 +510,85 @@ msgstr ""
"seleccione el boton abajo.<br /><br /><strong><a "
"href=\"..\">Refrescar</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Canal"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Diariamente"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Lunes"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Martes"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Miércoles"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Jueves"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Viernes"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Sábado"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "domingo"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "desactivado"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Resolviendo sitio"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Parámetro incorrecto"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Atrás"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "La tarea \"%s\" ha sido re-agregada a la cola"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "Tareas marcadas con un '*' no serán descargadas automaticamente."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Encontrado(s)"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "No encontrado(s)"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Descargado"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Descargado hasta ahora"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Valor incorrecto para %s: %s"
@@ -617,7 +617,7 @@ msgstr "Falla al leer las llaves de registro para los directorios especiales"
msgid "Failed making (%s)"
msgstr "Error al crear (%s)"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Error al mover %s a %s"
@@ -633,15 +633,15 @@ msgstr "Inténtelo de nuevo"
msgid "URL Fetching failed; %s"
msgstr "Error al recuperar la URL; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "Falta el módulo pyopensll, favor de instalarlo para acceso https"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Error al crear la llave SSL y el certificado"
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "No se puede cambiar los permisos de %s"
@@ -969,111 +969,112 @@ msgstr "%s artículos contenían duplicados inconexos"
msgid "Error importing %s"
msgstr "Error importando %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Advertencias"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Inactivo"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Configuración"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Cola"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Limpiar Cola"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Historial"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Purgar historial"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Limitar Velocidad"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pausar"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "mín."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Reanudar"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Obtener favoritos de Newzbin"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Escanear directorio bajo observación"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Carpeta Completa"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Carpeta Incompleta"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Resolver un problema"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Reiniciar"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Reiniciar sin sesión iniciada"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Salir"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Encolar los primeros 10 elementos"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Vacía"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Histórico últimos 10 elementos"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Nueva versión disponible"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Ir al Asistente"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Deteniendo..."
@@ -1281,109 +1282,109 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Error al eliminar nzo desde la cola de postprocesado (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr "La descarga fallo, solo %s de los %s requeridos estan disponibles"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr ""
"Error en la descarga - ¡Tal vez está fuera del límite de retención de tu "
"proveedor?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Imposible crear directorio final %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "No se ha podido post-procesar debido a un fallo en la verificación"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Moviendo"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "Enviado(s) %s a la cola"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Error al renombrar \"%s\" a \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Error al mover ficheros"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Ejecutando script"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Ejecutando script de usuario %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "Se ejecutó %s"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Más"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Ver salida del script"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Descarga Completada"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "La descarga falló"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Error al post-procesar %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "ver fichero de log"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Se ha abortado el PostProcesamiento (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Ha fallado la limpieza de %s"
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Error al eliminar el directorio de trabajo (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Post-Procesado"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Intentando verificación por SFV"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Han fallado algunos ficheros al verificarse \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Se ha verificado correctamente utilizando ficheros SFV"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] No hay conjuntos par2"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Error al eliminar %s"
@@ -1435,12 +1436,12 @@ msgstr "Mostrar interfaz"
msgid "Open complete folder"
msgstr "Abrir todo el folder"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Apagar"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Restante"
@@ -3121,7 +3122,7 @@ msgstr "Necesita"
#: sabnzbd/skintext.py:512 [Config->RSS filter-type selection menu]
msgid "RequiresCat"
msgstr ""
msgstr "RequiereCat"
#: sabnzbd/skintext.py:515 [Config->RSS section header]
msgid "Not Matched"
@@ -3793,11 +3794,11 @@ msgstr "Renombrar"
#: sabnzbd/skintext.py:705
msgid "Left"
msgstr "Izquierda"
msgstr "Restante"
#: sabnzbd/skintext.py:706 # sabnzbd/skintext.py:720
msgid "Purge the History?"
msgstr "¿Limpiar el historial?"
msgstr "¿Vaciar el historial?"
#: sabnzbd/skintext.py:710
msgid "Changes have not been saved, and will be lost."
@@ -4266,7 +4267,15 @@ msgstr "Quinto Paso"
msgid "E.g. 119 or 563 for SSL"
msgstr "P.ej. 119 ó 563 si es SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Salir SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Iniciar Asistente"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4282,31 +4291,31 @@ msgstr ""
"Está licenciado bajo la versión 2 ó posterior de GNU GENERAL PUBLIC "
"LICENSE.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Error al recuperar info de la serie (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Error al renombrar: %s a %s"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Error al renombrar ficheros similares: %s a %s"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Número de informe de nzbmatrix incorrecto: %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Necesitas una cuenta VIP en nzbmatrix para usar la API"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Credenciales de nzbmatrix incorrectas"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Error al acceder al servidor de nzbmatrix (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-06-04 06:35+0000\n"
"Last-Translator: BigKids <bigkids@live.com>\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 18:28+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-05 05:13+0000\n"
"X-Generator: Launchpad (build 15353)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:11+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -55,7 +55,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS désactivé car le certificat et la clé n'ont pas été trouvés"
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "Arrêt terminé de SABnzbd"
@@ -117,15 +117,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Impossible de déterminer le résultat de la connexion (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s intercepté, enregistrement et fermeture en cours..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "Récupération msgid %s from www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -133,31 +133,31 @@ msgstr ""
"Erreur d'obtention msgid %s à partir de www.newzbin2.es - S'il vous plaît "
"assurez-vous que votre nom d'utilisateur et mot de passe soient définit"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Essai de récupération du NZB depuis %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Ne peut créer le fichier temporaire pour %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Essayer de définir l'état du serveur %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Espace disque faible PAUSE forcée"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Échec dans tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Enregistrement %s echoué"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Chargement %s echoué"
@@ -165,7 +165,7 @@ msgstr "Chargement %s echoué"
msgid "Test Notification"
msgstr "Test de Notification"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Aucun"
@@ -174,31 +174,31 @@ msgstr "Aucun"
msgid "Default"
msgstr "Par défaut"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "AVERTISSEMENT:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "ERREUR:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "inconnu"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Echec de la compilation de regex pour la recherche du terme : %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "j"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -227,7 +227,7 @@ msgstr "Quota atteint, téléchargement mis en pause"
msgid "%s is not a valid email address"
msgstr "%s n'est pas une adresse email valide"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Adresse du serveur requis"
@@ -300,19 +300,19 @@ msgstr "Erreur inconnue lors du décodage de %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => absents de tous les serveurs, rejeté"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Erreur lors de la suppression de %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Ne peut lire %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Impossible de lire le dossier a surveillé %s"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "En pause"
@@ -521,86 +521,86 @@ msgstr ""
"secondes et cliquer sur le bouton ci-dessous.<br /><br /><strong><a "
"href=\"..\">Rafraîchir</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Flux RSS"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Quotidien"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Lundi"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Mardi"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Mercredi"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Jeudi"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Vendredi"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Samedi"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "Dimanche"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "non"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Résoudre l'adresse"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Paramètre incorrect"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Retour"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "%s a été remis en file d'attente"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr ""
"Les éléments marqués avec '*' ne seront pas automatiquement téléchargés."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Correspond"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Ne correspond pas"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Téléchargé"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Téléchargé jusqu'à présent"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Valeur incorrecte pour %s: %s"
@@ -628,7 +628,7 @@ msgstr "Échec de la lecture des clés de registre pour les dossiers spéciaux"
msgid "Failed making (%s)"
msgstr "Échec lors de la création de (%s)"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Échec lors du déplacement de %s vers %s"
@@ -644,15 +644,15 @@ msgstr "Réessayer"
msgid "URL Fetching failed; %s"
msgstr "Échec de récupération de l'URL; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "module pyopenssl manquant, nécessaire pour l'accès HTTPS"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Erreur lors de la création de la clé et du certificat SSL"
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Impossible de changer les permissions pour %s"
@@ -976,111 +976,112 @@ msgstr "%s articles ne correspondaient pas a la copie"
msgid "Error importing %s"
msgstr "Erreur lors de l'importation de %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Avertissements"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Inactif"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Configuration"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "File d'attente"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Vider file d'attente"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Historique"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Vider l'historique"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Vitesse limite"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pause"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Reprendre"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Récupérer favoris Newzbin"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Analyser le dossier des Nzbs"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Dossier complet"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Dossier incomplet"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Résoudre les problèmes"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Redémarrer"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Redémarrer sans se connecter"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Quitter"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Mettre en file d'attente les 10 premiers articles"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Vide"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Historique les 10 derniers articles"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Nouvelle version disponible"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Aller à l'assistant"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Arrêt en cours..."
@@ -1291,109 +1292,109 @@ msgid "Failed to remove nzo from postproc queue (id)"
msgstr ""
"Échec de la suppression du nzo de la file d'attente de post-traitement (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr ""
"Le téléchargement pourrait échouer, seulement %s des requis %s sont "
"disponibles"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "Échec de téléchargement - Rétention du serveur dépassée ?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Impossible de créer le dossier %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Pas de post-traitement car la vérification a echoué"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Déplacement"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "%s mis en file d'attente"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Erreur lors du renommage de \"%s\" en \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Impossible de déplacer les fichiers"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Exécution de script"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Exécution du script utilisateur %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "%s exécuté"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Plus"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Voir le résultat du script"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Téléchargement terminé"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Téléchargement échoué"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Échec du post-traitement pour %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "voir le fichier journal"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Post-traitement interrompu (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Échec du nettoyage de %s."
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Erreur lors de la suppression du dossier de travail (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Post-traitement"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Essai vérification SFV"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Certains fichiers n'ont pas pu être vérifiés \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Vérifié avec succès en utilisant des fichiers SFV"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Pas de fichiers par2"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Échec de la suppression de %s"
@@ -1445,12 +1446,12 @@ msgstr "Afficher linterface"
msgid "Open complete folder"
msgstr "Ouvrir le dossier terminé"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Arrêter"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Restant"
@@ -4291,7 +4292,15 @@ msgstr "Étape 5"
msgid "E.g. 119 or 563 for SSL"
msgstr "Ex: 119 ou 563 pour le SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Quitter SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Démarrer l'Assistant"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4307,31 +4316,31 @@ msgstr ""
"Il est distribué sous licence GNU GENERAL PUBLIC LICENSE Version 2 ou toute "
"autre version ultérieure.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Erreur lors de l'obtention des information TV (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Échec du renommage : %s en %s"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Impossible de renommer le fichier similaire : %s en %s"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Numéro de rapport nzbmatrix invalide %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Vous avez besoin d'un compte VIP NZBMatrix pour utiliser l'API"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Identification NZBMatrix invalide"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Problème d'accès au serveur nzbmatrix (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-03-24 11:05+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-08 05:38+0000\n"
"X-Generator: Launchpad (build 15204)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:12+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -52,7 +52,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Deaktiverte HTTPS på grunn av manglende CERT- og KEY-filer."
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd er nå avsluttet"
@@ -109,15 +109,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Kunne ikke koble til (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Signal %s mottatt, lagrer og avslutter..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "henter meldings-id %s fra www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -125,31 +125,31 @@ msgstr ""
"Feil under henting av meldings-id %s fra www.newzbin2.es - Kontrollér at "
"brukernavn og passord er satt"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Forsøker å hente NZB fra %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Kan ikke lage midlertidig fil for %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Forsøker å sette status på ikke-eksisterende server %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "For lite diskplass, nedlasting satt på pause"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Feil i tempfil.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Lagring av %s mislyktes"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Lasting av %s mislyktes"
@@ -157,7 +157,7 @@ msgstr "Lasting av %s mislyktes"
msgid "Test Notification"
msgstr "Test varslingen"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Ingen"
@@ -166,31 +166,31 @@ msgstr "Ingen"
msgid "Default"
msgstr "Standard"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "ADVARSEL:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "FEIL:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "ukjent"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Kunne ikke lage regex for søkestreng: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -218,7 +218,7 @@ msgstr "Kvote oppbrukt, setter nedlasting på pause"
msgid "%s is not a valid email address"
msgstr "%s er ikke en godkjent e-post-adresse"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Krever server-adresse"
@@ -290,19 +290,19 @@ msgstr "Ukjent feil oppstod under dekoding av %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => mangler på alle servere, fjerner"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Feil ved fjerning av %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Kan ikke lese %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Kan ikke lese den overvåkede mappen %s"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Pauset"
@@ -506,85 +506,85 @@ msgstr ""
"deretter på knappen under.<br /><br /><strong><a href=\"..\">Last på "
"nytt</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "RSS-kilde"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Daglig"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Mandag"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Tirsdag"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Onsdag"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Torsdag"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Fredag"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Lørdag"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "Søndag"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "av"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Løs adresse"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Feil parameter"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Tilbake"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "\"%s\" jobber er igjen i køen"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "Nedlasting markert med '*' kommer ikke å bli lastet ned automatisk."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Like"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Ulike"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Nedlastet"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Nedlastet en så lenge"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Feil verdi for %s: %s"
@@ -612,7 +612,7 @@ msgstr "Kunne ikke lese registernøkkel for spesialmapper"
msgid "Failed making (%s)"
msgstr "Opprettelse av (%s) mislyktes"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Kunne ikke flytte %s til %s"
@@ -628,15 +628,15 @@ msgstr "Forsøk igjen"
msgid "URL Fetching failed; %s"
msgstr "URL henting mislyktes; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "pyopenssl modul mangler, vennligst installer den for https tilgang"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Kunne ikke lage SSL-nøkkel eller sertifikat."
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Kunne ikke endre rettigheter på %s"
@@ -958,111 +958,112 @@ msgstr "%s artikler hadde ulike duplikater"
msgid "Error importing %s"
msgstr "Kunne ikke importere %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Advarsler"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Ledig"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Konfigurasjon"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Kø"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Slett kø"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Historikk"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Slett historikk"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Hastighetsbegrensning"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Stans midlertidig"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Gjenoppta"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Hente Newzbin bokmerker"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Sjekk overvåkingsmappe"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Ferdig mappe"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Ufullstendig mappe"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Feilsøking"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Starte på nytt"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Restart uten å logge inn"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Avslutte"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Kø (10 første)"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Tom"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Historikk (10 siste)"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Ny utgave er tilgjengelig"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Gå til guiden"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Avslutter..."
@@ -1263,107 +1264,107 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Kunne ikke fjerne nzo fra etterbehandlings køen (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr ""
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "Henting mislyktes - Overskrevet din servers retensjon?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Kan ikke opprette mappe %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Ingen etterbehandling, på grunn av misslykket verifisering"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Flytter"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "Sendte %s til køen"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Kunne ikke endre navn fra \"%s\" til \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Klarte ikke å flytte filer"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Kjører skript"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Kjør brukerskript %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "Kjørte i %s"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Mer"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Vis skript kjøringen"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Nedlasting ferdig"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Nedlasting mislyktes"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Etterbehandling mislyktes for %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "se loggfil"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Etterbehandling ble avbrutt (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Rensning av %s mislyktes"
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Kunne ikke fjerne arbeidsmappe (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Etterbehandling"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Prøver SFV-verifisering"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Some files failed to verify against \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Verifisering med SFV-filer var vellykket"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Ingen par2 deler"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Fjerning av %s mislyktes"
@@ -1415,12 +1416,12 @@ msgstr "Vis grensesnitt"
msgid "Open complete folder"
msgstr ""
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Avslutt"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Gjenstår"
@@ -4189,7 +4190,15 @@ msgstr "Steg fem"
msgid "E.g. 119 or 563 for SSL"
msgstr ""
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr ""
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr ""
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4199,31 +4208,31 @@ msgid ""
"option) any later version.\n"
msgstr ""
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Kunne ikke hente TV info (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Kunne ikke endre navn fra: %s til %s"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Kunne ikke endre navn på lik fil: %s til %s"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Ugyldig nzbmatrix rapporteringsnummer %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr ""
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr ""
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Oppkoblingsproblem til nzbmatrix server (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-06-06 09:39+0000\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 18:22+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: Dutch <nl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-07 05:04+0000\n"
"X-Generator: Launchpad (build 15353)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:11+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -23,9 +23,7 @@ msgstr "Kan web interface niet starten"
#: SABnzbd.py:339 [Warning message]
msgid "Cannot find web template: %s, trying standard template"
msgstr ""
"Kan bedieningsstijl bestanden niet vinden: %s, De standaard stijl wordt "
"gebruikt."
msgstr "Kan web sjabloon %s niet vinden, standaard sjabloon wordt gebruikt"
#: SABnzbd.py:464 [Error message]
msgid "_yenc module... NOT found!"
@@ -33,7 +31,7 @@ msgstr "_yenc module niet gevonden!"
#: SABnzbd.py:471 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 propgramma niet gevonden!"
msgstr "par2 programma niet gevonden!"
#: SABnzbd.py:479 [Warning message]
msgid "unrar binary... NOT found"
@@ -55,13 +53,13 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS is uitgeschakeld vanwege ontbrekende CERT en KEY bestanden."
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd is afgesloten"
#: sabnzbd/utils/servertests.py:35
msgid "The hostname is not set."
msgstr "Geen host naam opgegeven."
msgstr "Geen hostnaam opgegeven."
#: sabnzbd/utils/servertests.py:41
msgid "There are no connections set. Please set at least one connection."
@@ -70,11 +68,11 @@ msgstr ""
#: sabnzbd/utils/servertests.py:74
msgid "Password masked in ******, please re-enter"
msgstr "Geen password opnieuw in"
msgstr "Wachtwoord gemaskeerd met ******, voer opnieuw in"
#: sabnzbd/utils/servertests.py:78
msgid "Invalid server details"
msgstr "Ongeldige server gegevens"
msgstr "Ongeldige servergegevens"
#: sabnzbd/utils/servertests.py:90
msgid "Timed out: Try enabling SSL or connecting on a different port."
@@ -87,7 +85,7 @@ msgstr "Tijdslimiet overschreden"
#: sabnzbd/utils/servertests.py:97
msgid "Invalid server address."
msgstr "Ongeldige server naam"
msgstr "Ongeldige servernaam"
#: sabnzbd/utils/servertests.py:101
msgid "Server quit during login sequence."
@@ -99,7 +97,7 @@ msgstr "Server heeft een gebruikersnaam en een wachtwoord nodig."
#: sabnzbd/utils/servertests.py:126
msgid "Connection Successful!"
msgstr "Verbinding is gelukt."
msgstr "Succesvol verbonden!"
#: sabnzbd/utils/servertests.py:129
msgid "Authentication failed, check username/password."
@@ -114,47 +112,47 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Kan verbindingsresultaat niet bepalen (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Signaal %s ontvangen, opslaan en afluiten..."
msgstr "Signaal %s ontvangen, opslaan en afsluiten..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "Ophalen van rapport %s bij newzbin2.es"
msgstr "msgid %s aan het ophalen van www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
msgstr ""
"Fout bij ophalen van rapport %s van www.newzbin2.es - Controleer je "
"gebruikersnaam en wachtwoord."
"Fout tijdens ophalen van msgid %s van www.newzbin2.es - Zorg dat je "
"gebruikersnaam en wachtwoord goed zijn ingesteld"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Probeer NZB op te halen van %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Kan geen tijdelijk bestand %s aanmaken"
msgstr "Kan geen tijdelijk bestand maken voor %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Poging om status van niet bestaande server %s te wijzigen"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Te weinig schijf ruimte, forceer Pauze"
msgstr "Te weinig schijfruimte, pauze geforceerd"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Probleem met tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Opslaan van %s lukt niet"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Inlezen van %s lukt niet"
@@ -162,7 +160,7 @@ msgstr "Inlezen van %s lukt niet"
msgid "Test Notification"
msgstr "Test Melding"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Geen"
@@ -171,31 +169,31 @@ msgstr "Geen"
msgid "Default"
msgstr "Standaard"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "WAARSCHUWING:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "FOUT:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "onbekend"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Samenstellen van reguliere expressie lukt niet: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -223,7 +221,7 @@ msgstr "Quotum verbruikt, downloaded is gestopt"
msgid "%s is not a valid email address"
msgstr "%s is geen geldig email adres"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Server adres verplicht"
@@ -295,19 +293,19 @@ msgstr "Onbekende fout tijdens het decoderen van %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => ontbreekt op alle servers, overslaan"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Fout bij verwijderen van %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Kan %s niet lezen"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Kan Bewaakte Map %s niet lezen"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Pauze"
@@ -513,85 +511,85 @@ msgstr ""
"dan op onderstaande knop.<br /><br /><strong><a "
"href=\"..\">Verversen</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Feed"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "dagelijks"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "maandag"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "dinsdag"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "woensdag"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "donderdag"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "vrijdag"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "zaterdag"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "zondag"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "uit"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Adres opzoeken"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Foute instelling"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Terug"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "Opdracht \"%s\" terug naar de wachtrij"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "Items met een ster '*' worden niet automatisch gedownload."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Geselecteerd"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Niet geselecteerd"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Gedaan"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Tot nu toe gedaan"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Foute waarde voor %s: %s"
@@ -619,7 +617,7 @@ msgstr "Kan register sleutels voor speciale mappen niet lezen"
msgid "Failed making (%s)"
msgstr "Aanmaken %s mislukt"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Verplaatsen van %s naar %s mislukt"
@@ -635,15 +633,15 @@ msgstr "Opnieuw"
msgid "URL Fetching failed; %s"
msgstr "URL ophalen mislukt; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "Module \"pyopenssl\" ontbreekt, geen HTTPS mogelijk"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Fout bij aanmaken van SSL sleutel en certificaat"
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Kan beveiliging van %s niet aanpassen"
@@ -963,111 +961,112 @@ msgstr "%s artikelen hadden afwijkende duplicaten"
msgid "Error importing %s"
msgstr "Fout bij importeren van %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Meldingen"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Rust"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Instellen"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Wachtrij"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Wis wachtrij"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Geschiedenis"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Wis de volledige geschiedenis"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Beperk snelheid"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pauze"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Doorgaan"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Haal Newzbin Bladwijzers op"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Bewaakte map uitlezen"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Map voltooid"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Map download"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Probleemoplosser"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Herstarten"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Herstarten zonder login"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Afsluiten"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Wachtrij Eerste 10 Items"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Leeg"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Geschiedenis Laaste 10 Items"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Nieuwe versie beschikbaar"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Ga naar Wizard"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Afsluiten..."
@@ -1271,108 +1270,108 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Verwijderen van nzo van nabewerkingswachtrij mislukt"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr ""
"Download mislukt waarschijnlijk, slechts %s van de benodigde %s beschikbaar"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "Download mislukt - Buiten de server bewaartijd?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Kan bestemmingsmap %s niet maken"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Geen nabewerking vanwege mislukte verificatie"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Verplaatsen"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "%s naar de wachtrij gestuurd"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Fout bij hernoemen van \"%s\" tot \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Verplaatsen van bestanden mislukt"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Script uitvoeren"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Gebruiker script %s loopt"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "%s is klaar"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Meer"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Toon script resultaat"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Download voltooid"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Download mislukt"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Nabewerking van %s mislukt (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "zie logbestand"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Nabewerking is afgebroken (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Opschonen van %s mislukt"
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Fout bij verwijderen van werkmap %s"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Nabewerking"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Probeer SFV verificatie"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Sommige bestanden konden niet geverifieerd worden met \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Verificatie m.b.v. SFV bestanden is gelukt"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Geen par2 groepen"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Verwijderen van %s mislukt"
@@ -1424,12 +1423,12 @@ msgstr "Toon Interface"
msgid "Open complete folder"
msgstr "Open map met voltooide downloads"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Afsluiten"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Nog te doen"
@@ -3805,7 +3804,7 @@ msgstr "Plush instellingen"
#: sabnzbd/skintext.py:726
msgid "Update Available!"
msgstr "Beschikbare Update!"
msgstr "Update beschikbaar!"
#: sabnzbd/skintext.py:733 # sabnzbd/skintext.py:793
msgid "Pause for how many minutes?"
@@ -4234,7 +4233,15 @@ msgstr "Stap Vijf"
msgid "E.g. 119 or 563 for SSL"
msgstr "Bv. 119 of 563 voor SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Stop SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Wizard starten"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4250,32 +4257,32 @@ msgstr ""
"De licentie is de GNU GENERAL PUBLIC LICENSE Versie 2 of (naar eigen keuze) "
"een latere versie.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Fout bij ophalen TV info (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Hernoemen van %s tot %s mislukt"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Hernoemen van gelijkaardig bestand %s tot %s mislukt"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Ongeldig nzbmatrix rapport nummer %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr ""
"Je hebt een nzbmatrix VIP account nodig om de API te kunnen gebruiken"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Ongeldige nzbmatrix gegevens"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Geen toegang tot nzbmatrix (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-05-31 09:53+0000\n"
"Last-Translator: Tomasz 'Zen' Napierala <tomasz@napierala.org>\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 18:35+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-01 05:45+0000\n"
"X-Generator: Launchpad (build 15342)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:12+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -51,7 +51,7 @@ msgstr "Nazwa hosta 0.0.0.0 wymaga adresu IPv6 do dostępu z zewnątrz"
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Wyłączono HTTPS z powodu braku plików CERT oraz KEY"
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "SABnabd został wyłączony"
@@ -113,15 +113,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Nie można określić rezultatu połączenia (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Odebrano sygnał %s. Zapisywanie i i zamykanie programu..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "pobieranie wiadomości %s z www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -129,31 +129,31 @@ msgstr ""
"Błąd pobierania %s z www.newzbin2.es - Upewnij się, że ustawiłeś nazwę "
"użytkownika i hasło"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Próba pobrania NZB z %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Nie można utworzyć tymczasowego pliku dla %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Próba ustawienia statusu nieistniejącego serwera %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Zbyt mało miejsca, wymuszanie WSTRZYMANIA"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Błąd w tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Nie udało się zapisać %s"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Nie udało się wczytać %s"
@@ -161,7 +161,7 @@ msgstr "Nie udało się wczytać %s"
msgid "Test Notification"
msgstr "Powiadomienie testowe"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Brak"
@@ -170,31 +170,31 @@ msgstr "Brak"
msgid "Default"
msgstr "Domyślny"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "UWAGA:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "BŁĄD:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "nieznany"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Błąd kompilacji wyrażenia regularnego dla wyszukiwania: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "g"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -222,7 +222,7 @@ msgstr "Przekroczono limit, zatrzymywanie pobierania"
msgid "%s is not a valid email address"
msgstr "%s nie jest prawidłowym adresem mail"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Wymagane jest podanie adresu serwera"
@@ -294,19 +294,19 @@ msgstr "Nieznany błąd podczas dekodowania %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => nie znaleziono na żadnym serwerze, porzucam zadanie"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Błąd podczas usuwania %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Nie można odczytać %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Nie można przeczytać Obserwowanego Katalogu %s"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Wstrzymano"
@@ -510,85 +510,85 @@ msgstr ""
"&nbsp<br />SABnzbd został wyłączony.<br />Zaczekaj około 5 sekund i kliknij "
"guzik poniżej.<br /><br /><strong><a href=\"..\">Odśwież</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Kanał"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Codziennie"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Poniedziałek"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Wtorek"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Środa"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Czwartek"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Piątek"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Sobota"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "Niedziela"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "wyłączone"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Rozwiązywanie odresu"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Błędny parametr"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Powrót"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "Zadanie \"%s\" zostało dodane ponownie do kolejki"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "Zadanie oznaczone jako '*' nie zostanie automatycznie pobrane."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Dopasowano"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Nie dopasowano"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Pobrane"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Dotychczas pobrano"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Nieprawidłowa wartość %s: %s"
@@ -616,7 +616,7 @@ msgstr "Nie udało się odczytac kluczy rejestru dla katalogów specjalnych"
msgid "Failed making (%s)"
msgstr "Nie udało się utworzyć (%s)"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Nie udało się przenieść %s do %s"
@@ -632,15 +632,15 @@ msgstr "Spróbuj ponownie"
msgid "URL Fetching failed; %s"
msgstr "Pobieranie URL nie powiodło się; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "brak modułu pyopenssl, należy go zainstalować w celu dostępu https"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Błąd tworzenie certyfikatu i klucza SSL"
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Nie można zmienić uprawnień %s"
@@ -965,111 +965,112 @@ msgstr "%s artykułów posiada niepasujące duplikaty"
msgid "Error importing %s"
msgstr "Błąd importu %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Ostrzeżenia"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Bezczynny"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Konfiguracja"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Kolejka"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Czyszczenie kolejki"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Historia"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "usunięcie historii"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Ograniczenie prędkości"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pauza"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Wznów"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Pobierz zakładki z Newzbin"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Przeszukaj obserwowany katalog"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Folder zakończonych"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Folder niezakończonych"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Rozwiąż problem"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Uruchom ponownie"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Restart bez logowania"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Zakończ"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Zakolejkuj 10 pierwszych"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Brak"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Historia ostatnich 10"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Dostępne jest nowe wydanie"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Uruchom kreatora"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Zatrzymywanie..."
@@ -1269,108 +1270,108 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Nie udało sie usunąć nzo z kolejki przetwarzania (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr ""
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr ""
"Pobieranie nie powiodło się - Poza okresem przechowywania twojego serwera?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Nie można utworzyć końcowego katalogu %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Brak przetwarzania końcowego z powodu nieudanej weryfikacji"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Przenoszenie"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "Wysłano %s do kolejki"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Błąd zmiany nazwy \"%s\" na \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Nie udało się przenieść plików"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Uruchamianie skryptu"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Uruchamianie skryptu użytkownika %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "Uruchomiono %s"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Więcej"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Zobacz komunikaty wyjścia skryptu"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Zakończono pobieranie"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Pobieranie nie powiodło się"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Przetwarzanie końcowe nie powiodło się dla %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "sprawdź plik dziennika"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Przetwarzanie zostało przerwane (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Czyszczenie %s nie powiodło się"
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Błąd usuwania katalogu roboczego (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Przetwarzanie końcowe"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Próba weryfikacji SFV"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Weryfikacja niektórych plików względem \"%s\" nie powiodła się"
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Poprawnie zweryfikowano z użyciem plików SFV"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s} Brak zestawów par2"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Usuwanie %s nie powiodło się"
@@ -1422,12 +1423,12 @@ msgstr "Pokaż interfejs"
msgid "Open complete folder"
msgstr "Otwórz katalog z pobranymi plikami"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Zakończ"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Pozostało"
@@ -4229,7 +4230,15 @@ msgstr "Krok piąty"
msgid "E.g. 119 or 563 for SSL"
msgstr "Np. 119 lub 563 dla SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Wyjście SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Uruchom Asystenta"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4245,31 +4254,31 @@ msgstr ""
"Program jest wydany na licencji GNU GENERAL PUBLIC LICENSE wersja 2 lub (dla "
"twojego wyboru) każda późniejsza wersja.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Błąd pobieranie informacji TV (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Nie udało się zmienić nazwy: %s na %s"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Nie udało się zmienić nazwy podobnego pliku: %s na %s"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Nieprawidłowy numer raportu nzbmatrix %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Dostęp do API wymaga konta VIP nzbmatrix"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Nieprawidłowe dane uwierzytelniające nzbmatrix."
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Problem z dostępem do serwera nzbmatrix (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-05-26 00:41+0000\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-03 02:19+0000\n"
"Last-Translator: lrrosa <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-27 04:57+0000\n"
"X-Generator: Launchpad (build 15288)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:12+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -54,7 +54,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS desabilitado pela falta de arquivos CERT e KEY"
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "Encerramento do SABnzbd concluído"
@@ -112,15 +112,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Não foi possível determinar o resultado da conexão (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Sinal %s encontrado. Salvando e saindo..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "obtendo msgid %s de www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -128,31 +128,31 @@ msgstr ""
"Erro ao obter msgid %s de www.newzbin2.es - Por favor, tenha certeza que seu "
"usuário e senha estão corretos."
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Tentando obter NZB de %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Não é possível criar um arquivo temporário para %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Tentando definir o status do servidor inexistente %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Muito pouco espaço em disco. Forçando PAUSE"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Falha em tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Falha ao salvar %s"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Falha ao carregar %s"
@@ -160,7 +160,7 @@ msgstr "Falha ao carregar %s"
msgid "Test Notification"
msgstr "Notificação de teste"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Nenhum"
@@ -169,31 +169,31 @@ msgstr "Nenhum"
msgid "Default"
msgstr "Padrão"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "AVISO:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "ERRO:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "desconhecido"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Falha ao compilar a expressão para o termo pesquisado: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -222,7 +222,7 @@ msgstr "Quota esgotada, pausando o download"
msgid "%s is not a valid email address"
msgstr "%s não é um endereço de e-mail válido"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Endereço do servidor necessário"
@@ -294,19 +294,19 @@ msgstr "Erro desconhecido ao decodificar %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => faltando em todos os servidores. Descartando"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Erro ao remover %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Não é possível ler %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Não é possível ler a Pasta de Assistidos %s"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Pausado"
@@ -513,85 +513,85 @@ msgstr ""
"segundos e, em seguida, clique no botão abaixo.<br /><br /><strong><a "
"href=\"..\">Atualizar</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Feed"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Diariamente"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "segunda-feira"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "terça-feira"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "quarta-feira"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "quinta-feira"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "sexta-feira"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "sábado"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "domingo"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "desligado"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Resolvendo endereço"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Parâmetro incorreto"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Voltar"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "A tarefa \"%s\" foi adicionada novamente à fila"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "As tarefas marcadas com um '*' não serão baixadas automaticamente."
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Correspondido"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Não correspondido"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Baixados"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Baixados até agora"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Valor incorreto para %s: %s"
@@ -619,7 +619,7 @@ msgstr "Falha ao ler chaves de registro para pastas especiais"
msgid "Failed making (%s)"
msgstr "Falha ao criar (%s)"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Falha ao mover %s para %s"
@@ -635,15 +635,15 @@ msgstr "Tente novamente"
msgid "URL Fetching failed; %s"
msgstr "A busca da URL falhou; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "Módulo pyOpenSSL ausente. Instale-o para obter acesso https"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Erro ao criar chave SSL e certificado"
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Não é possível alterar permissões de %s"
@@ -653,7 +653,7 @@ msgstr "Unindo"
#: sabnzbd/newsunpack.py:359
msgid "Incomplete sequence of joinable files"
msgstr "Sequência incompleta de arquivos acopláveis."
msgstr "Sequência de arquivos multiparte incompleta"
#: sabnzbd/newsunpack.py:360 # sabnzbd/newsunpack.py:368
msgid "File join of %s failed"
@@ -751,7 +751,7 @@ msgstr "A descompactação falhou. Este(s) arquivo(s) estão faltando:"
#: sabnzbd/newsunpack.py:668
msgid "Unpacked %s files/folders in %s"
msgstr "Descompactando %s arquivos/pastas em %s"
msgstr "Descompactados %s arquivos/pastas em %s"
#: sabnzbd/newsunpack.py:702
msgid "%s files in %s"
@@ -964,111 +964,112 @@ msgstr "%s artigos tinham duplicatas não-correspondentes"
msgid "Error importing %s"
msgstr "Erro ao importar %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Alertas"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Inativo"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Configuração"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Fila"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Limpar Fila"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Histórico"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Limpar Histórico"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Limitar Velocidade"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pausar"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Continuar"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Obter Favoritos Newzbin"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Varrer pasta de assistidos"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Pasta de Finalizados"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Pasta de Não-Finalizados"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Resolução de problemas"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Reiniciar"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Reinicie sem login"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Sair"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Fila dos primeiros 10 items"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Esvaziar"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Histórico dos últimos 10 items"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Nova versão disponível"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Ir para o assistente"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Parando..."
@@ -1274,108 +1275,108 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Falha ao remover nzb da fila de pós-processamento (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr ""
"O download pode falhar. Somente %s de %s necessários estão disponíveis"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "O download falhou - Fora da retenção do seu servidor?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Não é possível criar a pasta final %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Sem pós-processamento por causa de falha na verificação"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Movendo"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "Enviados %s para a fila"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Erro ao renomear \"%s\" para \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Falha ao mover arquivos"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Executando script"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Executando script de usuário %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "%s executado"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Mais"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Ver saída do script"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Download concluído"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "O download falhou"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "O pós-processamento falhou para %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "veja o arquivo de log"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "O pós-processamento foi interrompido (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "A limpeza de %s falhou."
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Erro ao remover a pasta de trabalho (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Pós-processamento"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Tentando verificação SFV"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Alguns arquivos falharam na verificação de \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Verificado com sucesso usando arquivos SFV"
msgstr "Verificado com sucesso. Usando arquivos SFV."
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Nenhum conjunto par2"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "A remoção de %s falhou"
@@ -1427,12 +1428,12 @@ msgstr "Exibir interface"
msgid "Open complete folder"
msgstr "Abrir pasta de finalizados"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Encerrar"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Restante"
@@ -1466,7 +1467,7 @@ msgstr "Script"
#: sabnzbd/skintext.py:31 [PP Source of the NZB (path or URL)] # sabnzbd/skintext.py:101 [Where to find the SABnzbd sourcecode]
msgid "Source"
msgstr "Origem"
msgstr "Código fonte"
#: sabnzbd/skintext.py:32 [PP Failure message]
msgid "Failure"
@@ -1654,7 +1655,7 @@ msgstr "Parâmetros:"
#: sabnzbd/skintext.py:99
msgid "Python Version"
msgstr "Versão Python"
msgstr "Versão do Python"
#: sabnzbd/skintext.py:100 [Home page of the SABnzbd project]
msgid "Home page"
@@ -1890,7 +1891,7 @@ msgstr "Ordenar pelo nome"
#: sabnzbd/skintext.py:181 [Queue page button]
msgid "Sort by age"
msgstr "Ordenar por data"
msgstr "Ordenar por idade"
#: sabnzbd/skintext.py:182 [Queue page button]
msgid "Sort by size"
@@ -1950,7 +1951,7 @@ msgstr "Estimado"
#: sabnzbd/skintext.py:197 [Queue page table column header, "age of the NZB"]
msgid "AGE"
msgstr "DATA"
msgstr "IDADE"
#: sabnzbd/skintext.py:198 [Queue page table, "Delete" button]
msgid "Del"
@@ -2793,11 +2794,11 @@ msgstr "Enviar comando do grupo antes de solicitar artigos."
#: sabnzbd/skintext.py:414
msgid "Sort by Age"
msgstr "Ordernar por Data"
msgstr "Ordernar por Idade"
#: sabnzbd/skintext.py:415
msgid "Automatically sort items by (average) age."
msgstr "Classificar automaticamente os itens por média de data."
msgstr "Classificar automaticamente os itens por (média de) idade."
#: sabnzbd/skintext.py:416
msgid "Check for New Release"
@@ -3655,7 +3656,7 @@ msgstr "Assunto"
#: sabnzbd/skintext.py:669 [Job details page, file age column header] # sabnzbd/skintext.py:817
msgid "Age"
msgstr "Data"
msgstr "Idade"
#: sabnzbd/skintext.py:670 [Job details page, section header]
msgid "Selection"
@@ -3748,11 +3749,11 @@ msgstr "Pausar por 24 horas"
#: sabnzbd/skintext.py:698
msgid "Sort by Age <small>Oldest&rarr;Newest</small>"
msgstr "Ordenar por Data <small>Mais antigo&rarr;Mais novo</small>"
msgstr "Ordenar por Idade <small>Mais antigo&rarr;Mais novo</small>"
#: sabnzbd/skintext.py:699
msgid "Sort by Age <small>Newest&rarr;Oldest</small>"
msgstr "Ordenar por Data <small>Mais novo&rarr;Mais antigo</small>"
msgstr "Ordenar por Idade <small>Mais novo&rarr;Mais antigo</small>"
#: sabnzbd/skintext.py:700
msgid "Sort by Name <small>A&rarr;Z</small>"
@@ -3800,7 +3801,7 @@ msgstr "Armazenamento"
#: sabnzbd/skintext.py:717
msgid "View Script Log"
msgstr "Exibir Log de Script"
msgstr "Exibir Log do Script"
#: sabnzbd/skintext.py:721
msgid "You must enable JavaScript for Plush to function!"
@@ -3840,11 +3841,11 @@ msgstr "Ao Concluir"
#: sabnzbd/skintext.py:739
msgid "Sort by Age <small>(Oldest&rarr;Newest)</small>"
msgstr "Ordenar por Data <small>(Mais antigo&rarr;Mais novo)</small>"
msgstr "Ordenar por Idade <small>(Mais antigo&rarr;Mais novo)</small>"
#: sabnzbd/skintext.py:740
msgid "Sort by Age <small>(Newest&rarr;Oldest)</small>"
msgstr "Ordenar por Data <small>(Mais novo&rarr;Mais antigo)</small>"
msgstr "Ordenar por Idade <small>(Mais novo&rarr;Mais antigo)</small>"
#: sabnzbd/skintext.py:741
msgid "Sort by Name <small>(A&rarr;Z)</small>"
@@ -4052,7 +4053,7 @@ msgstr "Obter Favoritos"
#: sabnzbd/skintext.py:809
msgid "Are you sure you want to restart SABnzbd?"
msgstr "Tem certeza que deseja reiniciar SABnzbd?"
msgstr "Tem certeza que deseja reiniciar o SABnzbd?"
#: sabnzbd/skintext.py:810
msgid "Refresh rate"
@@ -4097,11 +4098,11 @@ msgstr "Acesso"
#: sabnzbd/skintext.py:825
msgid "I want SABnzbd to be viewable by any pc on my network."
msgstr ""
"Quero que SABnzbd seja acessado de qualquer computador em minha rede."
"Quero que o SABnzbd seja acessado de qualquer computador em minha rede."
#: sabnzbd/skintext.py:826
msgid "I want SABnzbd to be viewable from my pc only."
msgstr "Quero que SABnzbd seja acessado somente pelo meu computador."
msgstr "Quero que o SABnzbd seja acessado somente pelo meu computador."
#: sabnzbd/skintext.py:827
msgid "Password protect access to SABnzbd (recommended)"
@@ -4199,23 +4200,23 @@ msgstr "SABnzbd agora será executado em segundo plano."
#: sabnzbd/skintext.py:850 [Wizard tip]
msgid "Closing any browser windows/tabs will NOT close SABnzbd."
msgstr "Fechar qualquer janela/aba do navegador NÃO vai fechar SABnzbd."
msgstr "Fechar qualquer janela/aba do navegador NÃO vai fechar o SABnzbd."
#: sabnzbd/skintext.py:851 [Wizard tip]
msgid ""
"After SABnzbd has finished restarting you will be able to access it at the "
"following location: %s"
msgstr ""
"Após SABnzbd ter reiniciado você será capaz de acessá-lo no seguinte local: "
"%s"
"Após o SABnzbd ter reiniciado você será capaz de acessá-lo no seguinte "
"local: %s"
#: sabnzbd/skintext.py:852 [Wizard tip]
msgid ""
"It is recommended you right click and bookmark this location and use this "
"bookmark to access SABnzbd when it is running in the background."
msgstr ""
"Recomenda-se que você adicione este local como favorito para acessar SABnzbd "
"quando ele estiver sendo executado em segundo plano."
"Recomenda-se que você adicione este local como favorito para acessar o "
"SABnzbd quando ele estiver sendo executado em segundo plano."
#: sabnzbd/skintext.py:853 [Will be appended with a wiki-link, adjust word order accordingly]
msgid "Further help can be found on our"
@@ -4223,7 +4224,7 @@ msgstr "Mais ajuda pode ser encontrada em nosso"
#: sabnzbd/skintext.py:854 [Wizard step]
msgid "Go to SABnzbd"
msgstr "Ir para SABnzbd"
msgstr "Ir para o SABnzbd"
#: sabnzbd/skintext.py:855 [Wizard step] # sabnzbd/wizard.py:86
msgid "Step One"
@@ -4249,7 +4250,15 @@ msgstr "Quinto Passo"
msgid "E.g. 119 or 563 for SSL"
msgstr "Ex. 119 ou 563 para SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Sair do SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Iniciar o Assistente"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4265,31 +4274,31 @@ msgstr ""
"Está licenciado sob a LICENÇA PÚBLICA GERAL GNU Versão 2 ou (a seu critério) "
"qualquer versão posterior.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Erro ao obter informações de TV (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Falha ao renomear: %s para %s"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Falha ao renomear arquivo similar: %s para %s"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Número de registro nzbmatrix %s inválido"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Você precisa de uma conta VIP nzbmatrix para usar a API"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Credenciais nzbmatrix inválidas"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Problema ao acessar o servidor nzbmatrix (%s)"

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-07 20:21+0000\n"
"PO-Revision-Date: 2012-05-11 13:52+0000\n"
"POT-Creation-Date: 2012-08-02 12:51+0000\n"
"PO-Revision-Date: 2012-08-02 15:29+0000\n"
"Last-Translator: nicusor <Unknown>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-12 06:19+0000\n"
"X-Generator: Launchpad (build 15225)\n"
"X-Launchpad-Export-Date: 2012-08-03 06:12+0000\n"
"X-Generator: Launchpad (build 15734)\n"
#: SABnzbd.py:301 [Error message]
msgid "Failed to start web-interface"
@@ -53,7 +53,7 @@ msgstr ""
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Dezactivează HTTPS din cauza lipsei fişierelor CERT şi KEY"
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:768
#: SABnzbd.py:1641 # sabnzbd/osxmenu.py:770
msgid "SABnzbd shutdown finished"
msgstr "Închidere SABnzbd terminată"
@@ -114,15 +114,15 @@ msgstr ""
msgid "Could not determine connection result (%s)"
msgstr "Nu pot determina reultatul conexiunii (%s)"
#: sabnzbd/__init__.py:160 [Warning message]
#: sabnzbd/__init__.py:161 [Warning message]
msgid "Signal %s caught, saving and exiting..."
msgstr "Semnal %s prins, salvez şi ies..."
#: sabnzbd/__init__.py:463
#: sabnzbd/__init__.py:464
msgid "fetching msgid %s from www.newzbin2.es"
msgstr "descarc msgid %s from www.newzbin2.es"
#: sabnzbd/__init__.py:469 [Error message]
#: sabnzbd/__init__.py:470 [Error message]
msgid ""
"Error Fetching msgid %s from www.newzbin2.es - Please make sure your "
"Username and Password are set"
@@ -130,31 +130,31 @@ msgstr ""
"Eroare descărcare msgid %s de la www.newzbin2.es - Vă rugăm asiguraţi-vă că "
"Nume de Utilizator şi Parolă sunt setate"
#: sabnzbd/__init__.py:481
#: sabnzbd/__init__.py:482
msgid "Trying to fetch NZB from %s"
msgstr "Încerc să descarc NZB de la %s"
#: sabnzbd/__init__.py:604 [Error message]
#: sabnzbd/__init__.py:605 [Error message]
msgid "Cannot create temp file for %s"
msgstr "Nu pot crea fişier temporar pentru %s"
#: sabnzbd/__init__.py:621 [Warning message] # sabnzbd/__init__.py:633 [Warning message]
#: sabnzbd/__init__.py:622 [Warning message] # sabnzbd/__init__.py:634 [Warning message]
msgid "Trying to set status of non-existing server %s"
msgstr "Încerc să setez starea unui server nexistent %s"
#: sabnzbd/__init__.py:766 [Warning message]
#: sabnzbd/__init__.py:767 [Warning message]
msgid "Too little diskspace forcing PAUSE"
msgstr "Prea puţin spaţiu disc forţez PAUZĂ"
#: sabnzbd/__init__.py:792 [Error message]
#: sabnzbd/__init__.py:793 [Error message]
msgid "Failure in tempfile.mkstemp"
msgstr "Eroare în tempfile.mkstemp"
#: sabnzbd/__init__.py:822 [Error message] # sabnzbd/__init__.py:893 [Error message]
#: sabnzbd/__init__.py:823 [Error message] # sabnzbd/__init__.py:894 [Error message]
msgid "Saving %s failed"
msgstr "Salvarea %s nereuşită"
#: sabnzbd/__init__.py:852 [Error message] # sabnzbd/__init__.py:922 [Error message]
#: sabnzbd/__init__.py:853 [Error message] # sabnzbd/__init__.py:923 [Error message]
msgid "Loading %s failed"
msgstr "Încărcarea %s nereuşită"
@@ -162,7 +162,7 @@ msgstr "Încărcarea %s nereuşită"
msgid "Test Notification"
msgstr "Notificări Test"
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:190 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/api.py:1507 # sabnzbd/osxmenu.py:189 # sabnzbd/skintext.py:68 [No value, used in dropdown menus]
#: sabnzbd/skintext.py:665 [Job details page, select no files]
msgid "None"
msgstr "Niciunul"
@@ -171,31 +171,31 @@ msgstr "Niciunul"
msgid "Default"
msgstr "Implicit"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284
msgid "WARNING:"
msgstr "ATENŢIE:"
#: sabnzbd/api.py:1565 # sabnzbd/interface.py:2282 # sabnzbd/interface.py:2382
#: sabnzbd/api.py:1568 # sabnzbd/interface.py:2284 # sabnzbd/interface.py:2384
msgid "ERROR:"
msgstr "EROARE:"
#: sabnzbd/api.py:1630
#: sabnzbd/api.py:1633
msgid "unknown"
msgstr "necunoscut"
#: sabnzbd/api.py:1653 [Error message]
#: sabnzbd/api.py:1656 [Error message]
msgid "Failed to compile regex for search term: %s"
msgstr "Compilarea unei căutări regex nereuşită: %s"
#: sabnzbd/api.py:1840 [Single letter abbreviation of day]
#: sabnzbd/api.py:1843 [Single letter abbreviation of day]
msgid "d"
msgstr "d"
#: sabnzbd/api.py:1841 [Single letter abbreviation of hour]
#: sabnzbd/api.py:1844 [Single letter abbreviation of hour]
msgid "h"
msgstr "h"
#: sabnzbd/api.py:1842 [Single letter abbreviation of minute]
#: sabnzbd/api.py:1845 [Single letter abbreviation of minute]
msgid "m"
msgstr "m"
@@ -224,7 +224,7 @@ msgstr "Cotă epuizată, întrerupem descărcarea"
msgid "%s is not a valid email address"
msgstr "%s nu este o adresă email validă"
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1532
#: sabnzbd/cfg.py:54 # sabnzbd/interface.py:1534
msgid "Server address required"
msgstr "Adresă server necesară"
@@ -296,19 +296,19 @@ msgstr "Eroare Necunoscută în timpul decodării %s"
msgid "%s => missing from all servers, discarding"
msgstr "%s => lipsă de pe toate serverele, ignorare"
#: sabnzbd/dirscanner.py:122 [Error message] # sabnzbd/dirscanner.py:190 [Error message]
#: sabnzbd/dirscanner.py:120 [Error message] # sabnzbd/dirscanner.py:186 [Error message]
msgid "Error removing %s"
msgstr "Eroare ştergere %s"
#: sabnzbd/dirscanner.py:160 [Warning message]
#: sabnzbd/dirscanner.py:158 [Warning message]
msgid "Cannot read %s"
msgstr "Nu pot citi %s"
#: sabnzbd/dirscanner.py:290 [Error message] # sabnzbd/dirscanner.py:373 [Error message]
#: sabnzbd/dirscanner.py:286 [Error message] # sabnzbd/dirscanner.py:369 [Error message]
msgid "Cannot read Watched Folder %s"
msgstr "Nu pot citi Dosar Urnărire %s"
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:445 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/downloader.py:218 # sabnzbd/osxmenu.py:444 # sabnzbd/skintext.py:37 [PP status]
#: sabnzbd/skintext.py:174 # sabnzbd/skintext.py:794
msgid "Paused"
msgstr "Întrerupt"
@@ -513,85 +513,85 @@ msgstr ""
"secunde şi apoi faceţi clic pe butonul de mai jos.<br /><br /><strong><a "
"href=\"..\">Reîmprospătează</a></strong><br />"
#: sabnzbd/interface.py:1647 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
#: sabnzbd/interface.py:1649 [Used as default Feed name in Config->RSS] # sabnzbd/skintext.py:500 [Config->RSS, tab header]
msgid "Feed"
msgstr "Flux"
#: sabnzbd/interface.py:1885 # sabnzbd/skintext.py:83
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:83
msgid "Daily"
msgstr "Zilnic"
#: sabnzbd/interface.py:1886 # sabnzbd/skintext.py:84
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:84
msgid "Monday"
msgstr "Luni"
#: sabnzbd/interface.py:1887 # sabnzbd/skintext.py:85
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:85
msgid "Tuesday"
msgstr "Marţi"
#: sabnzbd/interface.py:1888 # sabnzbd/skintext.py:86
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:86
msgid "Wednesday"
msgstr "Miercuri"
#: sabnzbd/interface.py:1889 # sabnzbd/skintext.py:87
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:87
msgid "Thursday"
msgstr "Joi"
#: sabnzbd/interface.py:1890 # sabnzbd/skintext.py:88
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:88
msgid "Friday"
msgstr "Vineri"
#: sabnzbd/interface.py:1891 # sabnzbd/skintext.py:89
#: sabnzbd/interface.py:1893 # sabnzbd/skintext.py:89
msgid "Saturday"
msgstr "Sâmbătă"
#: sabnzbd/interface.py:1892 # sabnzbd/skintext.py:90
#: sabnzbd/interface.py:1894 # sabnzbd/skintext.py:90
msgid "Sunday"
msgstr "Duminică"
#: sabnzbd/interface.py:1920 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
#: sabnzbd/interface.py:1922 ["Off" value for speedlimit in scheduler] # sabnzbd/skintext.py:97
msgid "off"
msgstr "dezactivat"
#: sabnzbd/interface.py:2274
#: sabnzbd/interface.py:2276
msgid "&nbsp;Resolving address"
msgstr "&nbsp;Reolvare adresă"
#: sabnzbd/interface.py:2382
#: sabnzbd/interface.py:2384
msgid "Incorrect parameter"
msgstr "Parametru Incorect"
#: sabnzbd/interface.py:2382 # sabnzbd/interface.py:2408
#: sabnzbd/interface.py:2432 # sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2534 # sabnzbd/interface.py:2553 # sabnzbd/skintext.py:108 [Generic "Back" button]
#: sabnzbd/interface.py:2384 # sabnzbd/interface.py:2410
#: sabnzbd/interface.py:2434 # sabnzbd/interface.py:2451
#: sabnzbd/interface.py:2536 # sabnzbd/interface.py:2555 # sabnzbd/skintext.py:108 [Generic "Back" button]
msgid "Back"
msgstr "Înapoi"
#: sabnzbd/interface.py:2449
#: sabnzbd/interface.py:2451
msgid "Job \"%s\" was re-added to the queue"
msgstr "Sarcina \"%s\" a fost re-adăugată în coadă"
#: sabnzbd/interface.py:2534
#: sabnzbd/interface.py:2536
msgid "Jobs marked with a '*' will not be automatically downloaded."
msgstr "Sarcinile selectate cu '*' vor fi descărcate automat"
#: sabnzbd/interface.py:2534 # sabnzbd/skintext.py:514 [Config->RSS section header]
#: sabnzbd/interface.py:2536 # sabnzbd/skintext.py:514 [Config->RSS section header]
msgid "Matched"
msgstr "Potrivite"
#: sabnzbd/interface.py:2535
#: sabnzbd/interface.py:2537
msgid "Not matched"
msgstr "Nepotrivite"
#: sabnzbd/interface.py:2535 # sabnzbd/skintext.py:516 [Config->RSS section header]
#: sabnzbd/interface.py:2537 # sabnzbd/skintext.py:516 [Config->RSS section header]
msgid "Downloaded"
msgstr "Descărcate"
#: sabnzbd/interface.py:2553
#: sabnzbd/interface.py:2555
msgid "Downloaded so far"
msgstr "Decărcat până acum"
#: sabnzbd/interface.py:2601 # sabnzbd/interface.py:2605
#: sabnzbd/interface.py:2603 # sabnzbd/interface.py:2607
msgid "Incorrect value for %s: %s"
msgstr "Valoare incorectă pentru %s: %s"
@@ -619,7 +619,7 @@ msgstr "Citire valoare registru pentru dosare speciale nereuşită"
msgid "Failed making (%s)"
msgstr "Facere nereuşită (%s)"
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:354
#: sabnzbd/misc.py:794 [Error message] # sabnzbd/postproc.py:367
msgid "Failed moving %s to %s"
msgstr "Mutare %s în %s nereuşită"
@@ -635,15 +635,15 @@ msgstr "Încercați din nou"
msgid "URL Fetching failed; %s"
msgstr "Descărcare URL nereuşită; %s"
#: sabnzbd/misc.py:1085 [Warning message]
#: sabnzbd/misc.py:1088 [Warning message]
msgid "pyopenssl module missing, please install for https access"
msgstr "modul pyopenssl lipsă, instalaţi-l pentru acces https"
#: sabnzbd/misc.py:1103 [Error message]
#: sabnzbd/misc.py:1106 [Error message]
msgid "Error creating SSL key and certificate"
msgstr "Eroare la crearea cheiei şi certificatlui SSL"
#: sabnzbd/misc.py:1281 [Error message]
#: sabnzbd/misc.py:1284 [Error message]
msgid "Cannot change permissions of %s"
msgstr "Nu pot schimba permisiunile lui %s"
@@ -966,111 +966,112 @@ msgstr "%s articolele au avut duplicate diferite"
msgid "Error importing %s"
msgstr "Eroare importare %s"
#: sabnzbd/osxmenu.py:124 # sabnzbd/osxmenu.py:424 # sabnzbd/osxmenu.py:432
#: sabnzbd/osxmenu.py:123 # sabnzbd/osxmenu.py:423 # sabnzbd/osxmenu.py:431
#: sabnzbd/skintext.py:257 [Footer: indicator of warnings] # sabnzbd/skintext.py:677 # sabnzbd/skintext.py:806
msgid "Warnings"
msgstr "Atenționări"
#: sabnzbd/osxmenu.py:135 # sabnzbd/osxmenu.py:466 # sabnzbd/skintext.py:796
#: sabnzbd/osxmenu.py:134 # sabnzbd/osxmenu.py:468 # sabnzbd/skintext.py:796
msgid "Idle"
msgstr "Inactiv"
#: sabnzbd/osxmenu.py:142 # sabnzbd/skintext.py:261
#: sabnzbd/osxmenu.py:141 # sabnzbd/skintext.py:261
msgid "Configuration"
msgstr "Configurare"
#: sabnzbd/osxmenu.py:151 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
#: sabnzbd/osxmenu.py:150 # sabnzbd/skintext.py:115 [Main menu item] # sabnzbd/skintext.py:439
msgid "Queue"
msgstr "Coadă"
#: sabnzbd/osxmenu.py:158 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
#: sabnzbd/osxmenu.py:157 # sabnzbd/skintext.py:204 [Queue page button] # sabnzbd/skintext.py:688
msgid "Purge Queue"
msgstr "Goleşte Coadă"
#: sabnzbd/osxmenu.py:167 # sabnzbd/skintext.py:116 [Main menu item]
#: sabnzbd/osxmenu.py:166 # sabnzbd/skintext.py:116 [Main menu item]
msgid "History"
msgstr "Istoric"
#: sabnzbd/osxmenu.py:174 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
#: sabnzbd/osxmenu.py:173 # sabnzbd/skintext.py:217 [History page button] # sabnzbd/skintext.py:707
msgid "Purge History"
msgstr "Şterge Istoricul"
#: sabnzbd/osxmenu.py:186
#: sabnzbd/osxmenu.py:185
msgid "Limit Speed"
msgstr "Limitare de Viteză"
#: sabnzbd/osxmenu.py:206 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:205 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:56 [#: Config->Scheduler]
#: sabnzbd/skintext.py:151 # sabnzbd/skintext.py:200 [Queue page button] # sabnzbd/skintext.py:386 [Three way switch for duplicates]
#: sabnzbd/skintext.py:492
msgid "Pause"
msgstr "Pauză"
#: sabnzbd/osxmenu.py:212
#: sabnzbd/osxmenu.py:211
msgid "min."
msgstr "min."
#: sabnzbd/osxmenu.py:222 # sabnzbd/sabtray.py:61 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:221 # sabnzbd/sabtray.py:62 # sabnzbd/skintext.py:55 [#: Config->Scheduler]
#: sabnzbd/skintext.py:152 # sabnzbd/skintext.py:199 [Queue page button] # sabnzbd/skintext.py:491
msgid "Resume"
msgstr "Reia"
#: sabnzbd/osxmenu.py:232
#: sabnzbd/osxmenu.py:231
msgid "Get Newzbin Bookmarks"
msgstr "Descarcă Semne de Carte Newzbin"
#: sabnzbd/osxmenu.py:242 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
#: sabnzbd/osxmenu.py:241 # sabnzbd/skintext.py:63 [#: Config->Scheduler]
msgid "Scan watched folder"
msgstr "Scanează dosar urmărire"
#: sabnzbd/osxmenu.py:255 # sabnzbd/osxmenu.py:614
#: sabnzbd/osxmenu.py:254 # sabnzbd/osxmenu.py:616
msgid "Complete Folder"
msgstr "Dosar Complet"
#: sabnzbd/osxmenu.py:260 # sabnzbd/osxmenu.py:615
#: sabnzbd/osxmenu.py:259 # sabnzbd/osxmenu.py:617
msgid "Incomplete Folder"
msgstr "Dosar Incomplet"
#: sabnzbd/osxmenu.py:273
#: sabnzbd/osxmenu.py:272 # sabnzbd/sabtray.py:59
msgid "Troubleshoot"
msgstr "Depanare"
#: sabnzbd/osxmenu.py:275 # sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
#: sabnzbd/sabtray.py:116 # sabnzbd/sabtray.py:125 # sabnzbd/skintext.py:58 [#: Config->Scheduler]
#: sabnzbd/skintext.py:265 # sabnzbd/skintext.py:494
#: sabnzbd/osxmenu.py:274 # sabnzbd/osxmenu.py:275 # sabnzbd/sabtray.py:59
#: sabnzbd/sabtray.py:61 # sabnzbd/sabtray.py:114 # sabnzbd/sabtray.py:123
#: sabnzbd/sabtray.py:132 # sabnzbd/skintext.py:58 [#: Config->Scheduler] # sabnzbd/skintext.py:265
#: sabnzbd/skintext.py:494
msgid "Restart"
msgstr "Repornește"
#: sabnzbd/osxmenu.py:277 # sabnzbd/sabtray.py:59
#: sabnzbd/osxmenu.py:276 # sabnzbd/sabtray.py:60
msgid "Restart without login"
msgstr "Reporneşte fără autorizare"
#: sabnzbd/osxmenu.py:290
#: sabnzbd/osxmenu.py:289
msgid "Quit"
msgstr "Ieșire"
#: sabnzbd/osxmenu.py:343
#: sabnzbd/osxmenu.py:342
msgid "Queue First 10 Items"
msgstr "Pune la Coadă Primele 10 Obiecte"
#: sabnzbd/osxmenu.py:367 # sabnzbd/osxmenu.py:408
#: sabnzbd/osxmenu.py:366 # sabnzbd/osxmenu.py:407
msgid "Empty"
msgstr "Gol"
#: sabnzbd/osxmenu.py:384
#: sabnzbd/osxmenu.py:383
msgid "History Last 10 Items"
msgstr "Istoric Ultimele 10 Obiecte"
#: sabnzbd/osxmenu.py:527
#: sabnzbd/osxmenu.py:529
msgid "New release available"
msgstr "Versiune nouă disponibilă"
#: sabnzbd/osxmenu.py:566
#: sabnzbd/osxmenu.py:568
msgid "Go to wizard"
msgstr "Dute la vrăjitor"
#: sabnzbd/osxmenu.py:716 # sabnzbd/osxmenu.py:719 # sabnzbd/osxmenu.py:727
#: sabnzbd/osxmenu.py:730 # sabnzbd/osxmenu.py:736 # sabnzbd/osxmenu.py:739
#: sabnzbd/osxmenu.py:760
#: sabnzbd/osxmenu.py:718 # sabnzbd/osxmenu.py:721 # sabnzbd/osxmenu.py:729
#: sabnzbd/osxmenu.py:732 # sabnzbd/osxmenu.py:738 # sabnzbd/osxmenu.py:741
#: sabnzbd/osxmenu.py:762
msgid "Stopping..."
msgstr "Se oprește..."
@@ -1277,107 +1278,107 @@ msgstr ""
msgid "Failed to remove nzo from postproc queue (id)"
msgstr "Ştergere nzo din coadă post-procesare nereuşită (id)"
#: sabnzbd/postproc.py:260
#: sabnzbd/postproc.py:264
msgid "Download might fail, only %s of required %s available"
msgstr "Descărcarea ar putea eşua, doar %s din %s disponibil"
#: sabnzbd/postproc.py:262
#: sabnzbd/postproc.py:266
msgid "Download failed - Out of your server's retention?"
msgstr "Descărcare nereuşită - Retenţie server depăşită ?"
#: sabnzbd/postproc.py:316
#: sabnzbd/postproc.py:329
msgid "Cannot create final folder %s"
msgstr "Nu pot crea dosar final %s"
#: sabnzbd/postproc.py:338
#: sabnzbd/postproc.py:351
msgid "No post-processing because of failed verification"
msgstr "Nici o post-procesare din cauza verificării nereuşite"
#: sabnzbd/postproc.py:346
#: sabnzbd/postproc.py:359
msgid "Moving"
msgstr "Mutare"
#: sabnzbd/postproc.py:372
#: sabnzbd/postproc.py:385
msgid "Sent %s to queue"
msgstr "Trimis %s în coadă"
#: sabnzbd/postproc.py:391 [Error message]
#: sabnzbd/postproc.py:404 [Error message]
msgid "Error renaming \"%s\" to \"%s\""
msgstr "Eroare redenumire \"%s\" în \"%s\""
#: sabnzbd/postproc.py:407
#: sabnzbd/postproc.py:420
msgid "Failed to move files"
msgstr "Nu am putu muta fişier"
#: sabnzbd/postproc.py:415
#: sabnzbd/postproc.py:428
msgid "Running script"
msgstr "Rulare script"
#: sabnzbd/postproc.py:416
#: sabnzbd/postproc.py:429
msgid "Running user script %s"
msgstr "Rulare script utilizator %s"
#: sabnzbd/postproc.py:425
#: sabnzbd/postproc.py:438
msgid "Ran %s"
msgstr "Durată %s"
#: sabnzbd/postproc.py:446
#: sabnzbd/postproc.py:459
msgid "More"
msgstr "Mai mult"
#: sabnzbd/postproc.py:450
#: sabnzbd/postproc.py:463
msgid "View script output"
msgstr "Vezi rezultat script"
#: sabnzbd/postproc.py:464
#: sabnzbd/postproc.py:477
msgid "Download Completed"
msgstr "Descărcare terminată"
#: sabnzbd/postproc.py:467 # sabnzbd/postproc.py:476
#: sabnzbd/postproc.py:480 # sabnzbd/postproc.py:489
msgid "Download Failed"
msgstr "Descărcarea a eșuat"
#: sabnzbd/postproc.py:471 [Error message]
#: sabnzbd/postproc.py:484 [Error message]
msgid "Post Processing Failed for %s (%s)"
msgstr "Post Procesare Nereuşită pentru %s (%s)"
#: sabnzbd/postproc.py:474
#: sabnzbd/postproc.py:487
msgid "see logfile"
msgstr "vezi fişier jurnal"
#: sabnzbd/postproc.py:475
#: sabnzbd/postproc.py:488
msgid "PostProcessing was aborted (%s)"
msgstr "Post-Procesarea a fost abandonată (%s)"
#: sabnzbd/postproc.py:509 [Error message]
#: sabnzbd/postproc.py:522 [Error message]
msgid "Cleanup of %s failed."
msgstr "Ştergerea lui %s nereuşită."
#: sabnzbd/postproc.py:519 [Error message]
#: sabnzbd/postproc.py:538 [Error message]
msgid "Error removing workdir (%s)"
msgstr "Eroare ştergere dosar curent (%s)"
#: sabnzbd/postproc.py:531
#: sabnzbd/postproc.py:550
msgid "Post-processing"
msgstr "Post-procesare"
#: sabnzbd/postproc.py:571
#: sabnzbd/postproc.py:590
msgid "Trying SFV verification"
msgstr "Încerc verificare SFV"
#: sabnzbd/postproc.py:574
#: sabnzbd/postproc.py:593
msgid "Some files failed to verify against \"%s\""
msgstr "Unele fişiere nu au fost verificate corect cu \"%s\""
#: sabnzbd/postproc.py:577
#: sabnzbd/postproc.py:596
msgid "Verified successfully using SFV files"
msgstr "Verificare reuşită cu fişierele SFV"
#: sabnzbd/postproc.py:580
#: sabnzbd/postproc.py:599
msgid "[%s] No par2 sets"
msgstr "[%s] Niciun set par2"
#: sabnzbd/postproc.py:637 [Error message] # sabnzbd/postproc.py:712 [Error message]
#: sabnzbd/postproc.py:656 [Error message] # sabnzbd/postproc.py:731 [Error message]
msgid "Removing %s failed"
msgstr "Ştergerea %s nereuşită"
@@ -1429,12 +1430,12 @@ msgstr "Arată interfața"
msgid "Open complete folder"
msgstr "Deschide dosar descărcări complete"
#: sabnzbd/sabtray.py:62 # sabnzbd/sabtray.py:131 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/sabtray.py:63 # sabnzbd/sabtray.py:138 # sabnzbd/skintext.py:57 [#: Config->Scheduler]
#: sabnzbd/skintext.py:150 # sabnzbd/skintext.py:493
msgid "Shutdown"
msgstr "Închidere"
#: sabnzbd/sabtray.py:84 # sabnzbd/skintext.py:766
#: sabnzbd/sabtray.py:85 # sabnzbd/skintext.py:766
msgid "Remaining"
msgstr "Rămas"
@@ -4244,7 +4245,15 @@ msgstr "Pasul Cinci"
msgid "E.g. 119 or 563 for SSL"
msgstr "De ex. 119 sau 563 pentru SSL"
#: sabnzbd/skintext.py:863
#: sabnzbd/skintext.py:861 [Wizard EXIT button on first page]
msgid "Exit SABnzbd"
msgstr "Închide SABnzbd"
#: sabnzbd/skintext.py:862 [Wizard START button on first page]
msgid "Start Wizard"
msgstr "Porneşte Vrăjitor"
#: sabnzbd/skintext.py:865
msgid ""
"\n"
"SABnzbd comes with ABSOLUTELY NO WARRANTY.\n"
@@ -4260,31 +4269,31 @@ msgstr ""
"Este licenţiat sub GNU General Public License versiunea 2 sau (la opţiunea "
"dumneavoastră) orice versiune ulterioară.\n"
#: sabnzbd/tvsort.py:309 [Error message]
#: sabnzbd/tvsort.py:315 [Error message]
msgid "Error getting TV info (%s)"
msgstr "Eroare obţinere info TV (%s)"
#: sabnzbd/tvsort.py:671 [Error message] # sabnzbd/tvsort.py:694 [Error message] # sabnzbd/tvsort.py:879 [Error message]
#: sabnzbd/tvsort.py:677 [Error message] # sabnzbd/tvsort.py:700 [Error message] # sabnzbd/tvsort.py:885 [Error message]
msgid "Failed to rename: %s to %s"
msgstr "Redenumire:%s în %s nereuşită"
#: sabnzbd/tvsort.py:1076 [Error message]
#: sabnzbd/tvsort.py:1082 [Error message]
msgid "Failed to rename similar file: %s to %s"
msgstr "Redenumire fişiere similare : %s în %s nereuşită"
#: sabnzbd/urlgrabber.py:280 # sabnzbd/urlgrabber.py:298
#: sabnzbd/urlgrabber.py:281 # sabnzbd/urlgrabber.py:299
msgid "Invalid nzbmatrix report number %s"
msgstr "Număr report invalid nzbmatrix %s"
#: sabnzbd/urlgrabber.py:286
#: sabnzbd/urlgrabber.py:287
msgid "You need an nzbmatrix VIP account to use the API"
msgstr "Aveţi nevoie de un cont VIP la nzbmatrix pentru a utiliza API"
#: sabnzbd/urlgrabber.py:288
#: sabnzbd/urlgrabber.py:289
msgid "Invalid nzbmatrix credentials"
msgstr "Credenţiale invalide nzbmatrix"
#: sabnzbd/urlgrabber.py:306
#: sabnzbd/urlgrabber.py:307
msgid "Problem accessing nzbmatrix server (%s)"
msgstr "Probleme la accesarea server nzbmatrix (%s)"

View File

File diff suppressed because it is too large Load Diff

View File

@@ -13,71 +13,71 @@ msgstr ""
"Content-Type: text/plain; charset=ASCII\n"
"Content-Transfer-Encoding: 7bit\n"
#: NSIS_Installer.nsi:417
#: NSIS_Installer.nsi:425
msgid "Go to the SABnzbd Wiki"
msgstr ""
#: NSIS_Installer.nsi:419
#: NSIS_Installer.nsi:427
msgid "Show Release Notes"
msgstr ""
#: NSIS_Installer.nsi:421
#: NSIS_Installer.nsi:429
msgid "Support the project, Donate!"
msgstr ""
#: NSIS_Installer.nsi:423
#: NSIS_Installer.nsi:431
msgid "Please close \"SABnzbd.exe\" first"
msgstr ""
#: NSIS_Installer.nsi:425
#: NSIS_Installer.nsi:433
msgid " >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the release notes or go to http://wiki.sabnzbd.org/introducing-0-7-0 !"
msgstr ""
#: NSIS_Installer.nsi:427
#: NSIS_Installer.nsi:435
msgid "This will uninstall SABnzbd from your system"
msgstr ""
#: NSIS_Installer.nsi:429
#: NSIS_Installer.nsi:437
msgid "Run at startup"
msgstr ""
#: NSIS_Installer.nsi:431
#: NSIS_Installer.nsi:439
msgid "Desktop Icon"
msgstr ""
#: NSIS_Installer.nsi:433
#: NSIS_Installer.nsi:441
msgid "NZB File association"
msgstr ""
#: NSIS_Installer.nsi:435
#: NSIS_Installer.nsi:443
msgid "Delete Program"
msgstr ""
#: NSIS_Installer.nsi:437
#: NSIS_Installer.nsi:445
msgid "Delete Settings"
msgstr ""
#: NSIS_Installer.nsi:439
#: NSIS_Installer.nsi:447
msgid "This system requires the Microsoft runtime library VC90 to be installed first. Do you want to do that now?"
msgstr ""
#: NSIS_Installer.nsi:441
#: NSIS_Installer.nsi:449
msgid "Downloading Microsoft runtime installer..."
msgstr ""
#: NSIS_Installer.nsi:443
#: NSIS_Installer.nsi:451
msgid "Download error, retry?"
msgstr ""
#: NSIS_Installer.nsi:445
#: NSIS_Installer.nsi:453
msgid "Cannot install without runtime library, retry?"
msgstr ""
#: NSIS_Installer.nsi:447
#: NSIS_Installer.nsi:455
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:449
#: NSIS_Installer.nsi:457
msgid "Your settings and data will be preserved."
msgstr ""

View File

@@ -8,14 +8,14 @@ msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-01 18:51+0000\n"
"PO-Revision-Date: 2012-06-07 03:07+0000\n"
"Last-Translator: Carlos Hernandez <imaginingdreamer@yahoo.com>\n"
"PO-Revision-Date: 2012-07-30 09:38+0000\n"
"Last-Translator: Victor Herrero <victorhera@gmail.com>\n"
"Language-Team: Spanish <es@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-06-08 05:13+0000\n"
"X-Generator: Launchpad (build 15376)\n"
"X-Launchpad-Export-Date: 2012-07-31 05:17+0000\n"
"X-Generator: Launchpad (build 15702)\n"
#: NSIS_Installer.nsi:417
msgid "Go to the SABnzbd Wiki"
@@ -38,6 +38,8 @@ msgid ""
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
"release notes or go to http://wiki.sabnzbd.org/introducing-0-7-0 !"
msgstr ""
" >>>> ATENCION <<<<\\r\\n\\r\\nPor favor, compruebe las "
"notas de version o visite http://wiki.sabnzbd.org/introducing-0-7-0 !"
#: NSIS_Installer.nsi:427
msgid "This will uninstall SABnzbd from your system"

View File

@@ -8,18 +8,18 @@ msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
"POT-Creation-Date: 2012-05-01 18:51+0000\n"
"PO-Revision-Date: 2012-05-04 14:13+0000\n"
"Last-Translator: shypike <Unknown>\n"
"PO-Revision-Date: 2012-06-17 03:09+0000\n"
"Last-Translator: lrrosa <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2012-05-05 05:41+0000\n"
"X-Generator: Launchpad (build 15195)\n"
"X-Launchpad-Export-Date: 2012-06-18 05:39+0000\n"
"X-Generator: Launchpad (build 15419)\n"
#: NSIS_Installer.nsi:417
msgid "Go to the SABnzbd Wiki"
msgstr "Vá para a Wiki SABnzbd"
msgstr "Vá para a Wiki do SABnzbd"
#: NSIS_Installer.nsi:419
msgid "Show Release Notes"
@@ -38,9 +38,8 @@ msgid ""
" >>>> WARNING <<<<\\r\\n\\r\\nPlease, first check the "
"release notes or go to http://wiki.sabnzbd.org/introducing-0-7-0 !"
msgstr ""
" >>>> ATENÇÃO <<<<\\\\r\\\\n\\\\r\\\\nPor favor, verifique "
"primeiro as notas de lançamento ou vá até "
"http://wiki.sabnzbd.org/introducing-0-7-0 !"
" >>>> ATENÇÃO <<<<\\r\\n\\r\\nPor favor, verifique primeiro "
"as notas de lançamento ou vá até http://wiki.sabnzbd.org/introducing-0-7-0 !"
#: NSIS_Installer.nsi:427
msgid "This will uninstall SABnzbd from your system"

View File

@@ -59,6 +59,10 @@ elif os.name == 'posix':
pass
if platform.machine() == 'i386':
DARWIN_INTEL = True
if DARWIN:
DARWIN_ML = [int(n) for n in platform.mac_ver()[0].split('.')] >= [10, 8]
else:
DARWIN_ML = False
#------------------------------------------------------------------------
@@ -341,6 +345,11 @@ def start():
logging.debug('Starting urlgrabber')
URLGrabber.do.start()
if DARWIN_ML:
logging.debug('Starting OSX keep-awake service')
osxmenu.OsxAwake()
osxmenu.OsxAwake.do.start()
@synchronized(INIT_LOCK)
def halt():
@@ -400,6 +409,9 @@ def halt():
except:
logging.error('Fatal error at saving state', exc_info=True)
if DARWIN_ML:
osxmenu.OsxAwake.do.stop()
# The Scheduler cannot be stopped when the stop was scheduled.
# Since all warm-restarts have been removed, it's not longer
@@ -754,11 +766,14 @@ def empty_queues():
def keep_awake():
""" If we still have work to do, keep Windows system awake
"""
global KERNEL32
if KERNEL32 and not sabnzbd.downloader.Downloader.do.paused:
if (not PostProcessor.do.empty()) or not NzbQueue.do.is_empty():
# set ES_SYSTEM_REQUIRED
KERNEL32.SetThreadExecutionState(ctypes.c_int(0x00000001))
if KERNEL32 or DARWIN_ML:
if not sabnzbd.downloader.Downloader.do.paused:
if (not PostProcessor.do.empty()) or not NzbQueue.do.is_empty():
if KERNEL32:
# set ES_SYSTEM_REQUIRED
KERNEL32.SetThreadExecutionState(ctypes.c_int(0x00000001))
else:
osxmenu.OsxAwake.do.stay_awake = True
def CheckFreeSpace():

View File

@@ -461,33 +461,6 @@ def _api_get_files(name, output, kwargs):
else:
return report(output, _MSG_NO_VALUE)
def _api_addurl(names, output, kwargs):
""" API: accepts name, output, pp, script, cat, priority, nzbname """
pp = kwargs.get('pp')
script = kwargs.get('script')
cat = kwargs.get('cat')
priority = kwargs.get('priority')
nzbnames = kwargs.get('nzbname')
if not isinstance(names, list):
names = [names]
if not isinstance(nzbnames, list):
nzbnames = [nzbnames]
for n in xrange(len(names)):
name = names[n]
if n < len(nzbnames):
nzbname = nzbnames[n]
else:
nzbname = ''
if name:
name = name.strip()
sabnzbd.add_url(name, pp, script, cat, priority, nzbname)
if len(names) > 0:
return report(output)
else:
return report(output, _MSG_NO_VALUE)
_RE_NEWZBIN_URL = re.compile(r'/browse/post/(\d+)')
def _api_addid(names, output, kwargs):
@@ -796,7 +769,7 @@ _api_table = {
'fullstatus' : _api_fullstatus,
'history' : _api_history,
'get_files' : _api_get_files,
'addurl' : _api_addurl,
'addurl' : _api_addid,
'addid' : _api_addid,
'pause' : _api_pause,
'resume' : _api_resume,
@@ -1165,7 +1138,11 @@ def build_queue(web_dir=None, root=None, verbose=False, prim=True, webdir='', ve
datestart = datetime.datetime.now()
slot['eta'] = 'unknown'
slot['avg_age'] = calc_age(average_date, bool(trans))
if status == Status.GRABBING:
slot['avg_age'] = '---'
else:
slot['avg_age'] = calc_age(average_date, bool(trans))
slot['verbosity'] = ""
if web_dir:
finished = []
@@ -1252,6 +1229,16 @@ def build_queue(web_dir=None, root=None, verbose=False, prim=True, webdir='', ve
return info, pnfo_list, bytespersec, verbose_list, dictn
#------------------------------------------------------------------------------
def fast_queue():
""" Return paused, bytes_left, bpsnow, time_left """
bytes_left = NzbQueue.do.remaining()
paused = Downloader.do.paused
bpsnow = BPSMeter.do.get_bps()
time_left = calc_timeleft(bytes_left, bpsnow)
return paused, bytes_left, bpsnow, time_left
#------------------------------------------------------------------------------
def qstatus_data():
"""Build up the queue status as a nested object and output as a JSON object
@@ -1279,16 +1266,16 @@ def qstatus_data():
state = "IDLE"
if Downloader.do.paused:
state = "PAUSED"
state = Status.PAUSED
elif qnfo[QNFO_BYTES_LEFT_FIELD] / MEBI > 0:
state = "DOWNLOADING"
state = Status.DOWNLOADING
status = {
"state" : state,
"paused" : Downloader.do.paused,
"pause_int" : scheduler.pause_int(),
"kbpersec" : BPSMeter.do.get_bps() / KIBI,
"speed" : to_units(BPSMeter.do.get_bps(), dec_limit=1),
"kbpersec" : bpsnow / KIBI,
"speed" : to_units(bpsnow, dec_limit=1),
"mbleft" : qnfo[QNFO_BYTES_LEFT_FIELD] / MEBI,
"mb" : qnfo[QNFO_BYTES_FIELD] / MEBI,
"noofslots" : len(pnfo_list),

View File

@@ -35,7 +35,8 @@ except:
import sabnzbd
from sabnzbd.misc import get_filepath, sanitize_filename, get_unique_path, renamer, \
set_permissions
set_permissions, flag_file
from sabnzbd.constants import QCHECK_FILE
import sabnzbd.cfg as cfg
from sabnzbd.articlecache import ArticleCache
from sabnzbd.postproc import PostProcessor
@@ -60,18 +61,18 @@ class Assembler(Thread):
def stop(self):
self.process(None)
def process(self, nzf):
self.queue.put(nzf)
def process(self, job):
self.queue.put(job)
def run(self):
import sabnzbd.nzbqueue
while 1:
nzo_nzf_tuple = self.queue.get()
if not nzo_nzf_tuple:
job = self.queue.get()
if not job:
logging.info("Shutting down")
break
nzo, nzf = nzo_nzf_tuple
nzo, nzf = job
if nzf:
sabnzbd.CheckFreeSpace()
@@ -174,7 +175,7 @@ def _assemble(nzf, path, dupe):
fout.flush()
fout.close()
set_permissions(path)
set_permissions(path)
if md5:
nzf.md5sum = md5.digest()
del md5
@@ -206,29 +207,30 @@ def GetMD5Hashes(fname):
"""
new_encoding = False
table = {}
try:
f = open(fname, 'rb')
except:
return table
if not flag_file(os.path.split(fname)[0], QCHECK_FILE):
try:
f = open(fname, 'rb')
except:
return table, new_encoding
try:
header = f.read(8)
while header:
name, hash = ParseFilePacket(f, header)
new_encoding |= is_utf8(name)
if name:
table[name] = hash
try:
header = f.read(8)
while header:
name, hash = ParseFilePacket(f, header)
new_encoding |= is_utf8(name)
if name:
table[name] = hash
header = f.read(8)
except (struct.error, IndexError):
logging.info('Cannot use corrupt par2 file for QuickCheck, "%s"', fname)
table = {}
except:
logging.debug('QuickCheck parser crashed in file %s', fname)
logging.info('Traceback: ', exc_info = True)
table = {}
except (struct.error, IndexError):
logging.info('Cannot use corrupt par2 file for QuickCheck, "%s"', fname)
table = {}
except:
logging.debug('QuickCheck parser crashed in file %s', fname)
logging.info('Traceback: ', exc_info = True)
table = {}
f.close()
f.close()
return table, new_encoding

View File

@@ -136,8 +136,25 @@ class BPSMeter(object):
sabnzbd.save_admin(data, BYTES_FILE_NAME)
def defaults(self):
""" Get the latest data from the database and assign to a fake server
"""
logging.debug('Setting default BPS meter values')
grand, month, week = sabnzbd.proxy_get_history_size()
self.grand_total = {}
self.month_total = {}
self.week_total = {}
self.day_total = {}
if grand: self.grand_total['x'] = grand
if month: self.month_total['x'] = month
if week: self.week_total['x'] = week
self.quota = self.left = cfg.quota_size.get_float()
def read(self):
""" Read admin from disk """
""" Read admin from disk, return True when pause is needed
"""
res = False
quota = self.left = cfg.quota_size.get_float() # Quota for this period
self.have_quota = bool(cfg.quota_size())
data = sabnzbd.load_admin(BYTES_FILE_NAME)
@@ -155,16 +172,14 @@ class BPSMeter(object):
self.quota = self.left = cfg.quota_size.get_float()
res = self.reset_quota()
except:
# Get the latest data from the database and assign to a fake server
logging.debug('Setting default BPS meter values')
grand, month, week = sabnzbd.proxy_get_history_size()
if grand: self.grand_total['x'] = grand
if month: self.month_total['x'] = month
if week: self.week_total['x'] = week
self.quota = self.left = cfg.quota_size.get_float()
res = False
# Force update of counters
self.update()
self.defaults()
# Force update of counters and validate data
try:
for server in self.grand_total:
self.update(server)
except TypeError:
self.defaults()
self.update()
return res
@@ -330,7 +345,12 @@ class BPSMeter(object):
self.have_quota = bool(cfg.quota_size())
if self.have_quota:
quota = cfg.quota_size.get_float()
self.left = quota - (self.quota - self.left)
if self.quota:
# Quota change, recalculate amount left
self.left = quota - (self.quota - self.left)
else:
# If previously no quota, self.left holds this period's usage
self.left = quota - self.left
self.quota = quota
else:
self.quota = self.left = 0L

View File

@@ -65,7 +65,7 @@ else:
# Configuration instances
#
quick_check = OptionBool('misc', 'quick_check', True)
fail_on_crc = OptionBool('misc', 'fail_on_crc', False)
fail_on_crc = OptionBool('misc', 'fail_on_crc', True)
send_group = OptionBool('misc', 'send_group', False)
sfv_check = OptionBool('misc', 'sfv_check', True)
@@ -79,7 +79,7 @@ email_full = OptionBool('misc', 'email_full', False)
email_dir = OptionDir('misc', 'email_dir', create=True)
email_rss = OptionBool('misc', 'email_rss', False)
version_check = OptionBool('misc', 'check_new_rel', True)
version_check = OptionNumber('misc', 'check_new_rel', 1)
autobrowser = OptionBool('misc', 'auto_browser', True)
replace_illegal = OptionBool('misc', 'replace_illegal', True)
pre_script = OptionStr('misc', 'pre_script', 'None')
@@ -151,6 +151,8 @@ date_categories = OptionStr('misc', 'date_categories', ['tv'])
matrix_username = OptionStr('nzbmatrix', 'username')
matrix_apikey = OptionStr('nzbmatrix', 'apikey')
matrix_del_bookmark = OptionBool('nzbmatrix', 'del_bookmark', True)
xxx_username = OptionStr('nzbxxx', 'username')
xxx_apikey = OptionStr('nzbxxx', 'apikey')
configlock = OptionBool('misc', 'config_lock', 0)
@@ -209,7 +211,7 @@ language = OptionStr('misc', 'language', 'en')
ssl_type = OptionStr('misc', 'ssl_type', 'v23')
unpack_check = OptionBool('misc', 'unpack_check', True)
no_penalties = OptionBool('misc', 'no_penalties', False)
random_server_ip = OptionBool('misc', 'random_server_ip', True)
randomize_server_ip = OptionBool('misc', 'randomize_server_ip', False)
# Internal options, not saved in INI file
debug_delay = OptionNumber('misc', 'debug_delay', 0, add=False)
@@ -221,6 +223,7 @@ api_warnings = OptionBool('misc', 'api_warnings', True)
max_art_tries = OptionNumber('misc', 'max_art_tries', 3, 2)
max_art_opt = OptionBool('misc', 'max_art_opt', False)
use_pickle = OptionBool('misc', 'use_pickle', False)
no_ipv6 = OptionBool('misc', 'no_ipv6', False)
growl_server = OptionStr('growl', 'growl_server')
growl_password = OptionPassword('growl', 'growl_password')
@@ -238,6 +241,7 @@ win_menu = OptionBool('misc', 'win_menu', True)
uniconfig = OptionBool('misc', 'uniconfig', True)
allow_incomplete_nzb = OptionBool('misc', 'allow_incomplete_nzb', False)
marker_file = OptionStr('misc', 'nomedia_marker', '')
wait_ext_drive = OptionNumber('misc', 'wait_ext_drive', 5, 1, 60)
#------------------------------------------------------------------------------
# Set root folders for Folder config-items

View File

@@ -22,6 +22,7 @@ sabnzbd.config - Configuration Support
import os
import logging
import threading
import shutil
import sabnzbd.misc
from sabnzbd.constants import CONFIG_VERSION, NORMAL_PRIORITY, DEFAULT_PRIORITY
from sabnzbd.utils import listquote
@@ -633,11 +634,26 @@ def delete(section, keyword):
@synchronized(SAVE_CONFIG_LOCK)
def read_config(path):
""" Read the complete INI file and check its version number
if OK, pass values to config-database
"""
return _read_config(path)
def _read_config(path, try_backup=False):
""" Read the complete INI file and check its version number
if OK, pass values to config-database
"""
global CFG, database, modified
if try_backup or not os.path.exists(path):
# Not found, try backup
try:
shutil.copyfile(path + '.bak', path)
try_backup = True
except IOError:
pass
if not os.path.exists(path):
# No file found, create default INI file
try:
@@ -659,7 +675,10 @@ def read_config(path):
except (KeyError, ValueError):
CFG['__version__'] = CONFIG_VERSION
except configobj.ConfigObjError, strerror:
return False, '"%s" is not a valid configuration file<br>Error message: %s' % (path, strerror)
if try_backup:
return False, '"%s" is not a valid configuration file<br>Error message: %s' % (path, strerror)
else:
return _read_config(path, True)
CFG['__version__'] = CONFIG_VERSION
@@ -731,46 +750,32 @@ def save_config(force=False):
else:
CFG[sec][kw] = value
res = False
filename = CFG.filename
bakname = filename + '.bak'
# Check if file is writable
if not sabnzbd.misc.is_writable(filename):
logging.error(Ta('Cannot write to INI file %s'), filename)
return res
# copy current file to backup
try:
# Check if file is writable
if not sabnzbd.misc.is_writable(filename):
logging.error(Ta('Cannot write to INI file %s'), filename)
modified = False
return False
shutil.copyfile(filename, bakname)
except:
# Something wrong with the backup,
logging.warning(Ta('Cannot create backup file for %s'), bakname)
logging.info("Traceback: ", exc_info = True)
# Read current content
f = open(filename)
data = f.read()
f.close()
tmpname = filename + '.tmp'
bakname = filename + '.bak'
# Write new file
f = open(tmpname, 'w')
f.write(data)
f.close()
# Update temp file content
CFG.filename = tmpname
# Write new config file
try:
CFG.write()
# Rename to backup
if os.path.isfile(bakname):
os.remove(bakname)
os.rename(filename, bakname)
# Rename temp file, overwriting old one
os.rename(tmpname, filename)
modified = False
res = True
except:
logging.error(Ta('Cannot create backup file for %s'), filename)
logging.error(Ta('Cannot write to INI file %s'), filename)
logging.info("Traceback: ", exc_info = True)
res = False
CFG.filename = filename
return res

View File

@@ -63,6 +63,7 @@ TERM_FLAG_FILE = 'running.sab'
FUTURE_Q_FOLDER = 'future'
JOB_ADMIN = '__ADMIN__'
VERIFIED_FILE = '__verified__'
QCHECK_FILE = '__skip_qcheck__'
ATTRIB_FILE = 'SABnzbd_attrib'
REPAIR_REQUEST = 'repair-all.sab'
@@ -139,7 +140,7 @@ date_match = [r'(\d{4})\W(\d{1,2})\W(\d{1,2})', #2008-10-16
year_match = r'[\W]([1|2]\d{3})([^\w]|$)' # Something '(YYYY)' or '.YYYY.' or ' YYYY '
sample_match = r'((^|[\W_])sample\d*[\W_])|(-s\.)' # something-sample.avi something-s.avi
sample_match = r'((^|[\W_])sample\d*[\W_])|(-s\.\w+$)' # something-sample.avi something-s.avi
class Status():
COMPLETED = 'Completed'

View File

@@ -37,6 +37,7 @@ from sabnzbd.articlecache import ArticleCache
import sabnzbd.downloader
import sabnzbd.cfg as cfg
from sabnzbd.encoding import name_fixer
from sabnzbd.misc import match_str
#-------------------------------------------------------------------------------
@@ -85,18 +86,19 @@ class Decoder(Thread):
data = None
register = True # Finish article
found = True # Article found (only relevant for precheck)
found = False # Proper article found
if lines:
logme = None
try:
if nzo.precheck and '223' in lines[0]:
raise IndexError
if nzo.precheck:
raise BadYenc
register = True
logging.debug("Decoding %s", article)
data = decode(article, lines)
nzf.article_count += 1
found = True
except IOError, e:
logme = Ta('Decoding %s failed') % article
logging.info(logme)
@@ -120,25 +122,45 @@ class Decoder(Thread):
register = False
logme = None
except BadYenc, e:
logme = Ta('Badly formed yEnc article in %s') % article
logging.info(logme)
except BadYenc:
# Handles precheck and badly formed articles
killed = False
found = False
if nzo.precheck and lines and lines[0].startswith('223 '):
# STAT was used, so we only get a status code
found = True
else:
# Examine headers (for precheck) or body (for download)
# And look for DMCA clues (while skipping "X-" headers)
for line in lines:
if not line.startswith('X-') and match_str(line.lower(), ('dmca', 'removed', 'cancel', 'blocked')):
logging.info('Article removed from server (%s)', article)
killed = True
break
if nzo.precheck:
if found or not killed:
# Pre-check, proper article found, just register
logging.debug('Server has article %s', article)
register = True
elif not killed and not found:
logme = Ta('Badly formed yEnc article in %s') % article
logging.info(logme)
if cfg.fail_on_crc():
if not found:
new_server_found = self.__search_new_server(article)
if new_server_found:
register = False
logme = None
except IndexError:
# Pre-check, article found, just register
register = True
except:
logme = Ta('Unknown Error while decoding %s') % article
logging.info(logme)
logging.info("Traceback: ", exc_info = True)
pass
new_server_found = self.__search_new_server(article)
if new_server_found:
register = False
logme = None
if logme:
article.nzf.nzo.inc_log('bad_art_log', logme)
@@ -211,19 +233,22 @@ def decode(article, data):
#Deal with non-yencoded posts
if not ybegin:
found = False
for i in xrange(10):
if data[i].startswith('begin '):
nzf.filename = name_fixer(data[i].split(None, 2)[2])
nzf.type = 'uu'
found = True
break
if found:
for n in xrange(i+1):
data.pop(0)
if data[-1] == 'end':
data.pop()
if data[-1] == '`':
try:
for i in xrange(10):
if data[i].startswith('begin '):
nzf.filename = name_fixer(data[i].split(None, 2)[2])
nzf.type = 'uu'
found = True
break
if found:
for n in xrange(i+1):
data.pop(0)
if data[-1] == 'end':
data.pop()
if data[-1] == '`':
data.pop()
except IndexError:
raise BadYenc()
decoded_data = '\r\n'.join(data)

View File

@@ -289,7 +289,7 @@ class DirScanner(threading.Thread):
for filename in files:
path = os.path.join(folder, filename)
if os.path.isdir(path) or path in self.ignored:
if os.path.isdir(path) or path in self.ignored or filename[0] == '.':
continue
ext = os.path.splitext(path)[1].lower()

View File

@@ -86,7 +86,7 @@ class Server(object):
def hostip(self):
""" Return a random entry from the possible IPs
"""
if cfg.random_server_ip() and self.info and len(self.info) > 1:
if cfg.randomize_server_ip() and self.info and len(self.info) > 1:
rnd = random.randint(0, len(self.info)-1)
ip = self.info[rnd][4][0]
logging.debug('For server %s, using IP %s' % (self.host, ip))
@@ -531,7 +531,10 @@ class Downloader(Thread):
if server.active:
server.errormsg = Ta('Cannot connect to server %s [%s]') % ('', display_msg)
logging.warning(Ta('Cannot connect to server %s [%s]'), '%s:%s' % (server.host, server.port), msg)
penalty = _PENALTY_502
if clues_pay(msg):
penalty = _PENALTY_PERM
else:
penalty = _PENALTY_502
block = True
else:
# Unknown error, just keep trying
@@ -818,3 +821,13 @@ def clues_too_many_ip(text):
if clue in text:
return True
return False
def clues_pay(text):
""" Check for messages about payments
"""
text = text.lower()
for clue in ('credits', 'paym', 'expired'):
if clue in text:
return True
return False

View File

@@ -1188,11 +1188,11 @@ SPECIAL_BOOL_LIST = \
'queue_complete_pers', 'api_warnings', 'allow_64bit_tools', 'par2_multicore',
'never_repair', 'allow_streaming', 'ignore_unrar_dates', 'rss_filenames',
'osx_menu', 'osx_speed', 'win_menu', 'uniconfig', 'use_pickle', 'allow_incomplete_nzb',
'random_server_ip'
'randomize_server_ip', 'no_ipv6'
)
SPECIAL_VALUE_LIST = \
( 'size_limit', 'folder_max_length', 'fsys_type', 'movie_rename_limit', 'nomedia_marker',
'req_completion_rate'
'req_completion_rate', 'wait_ext_drive'
)
class ConfigSpecial(object):
@@ -1506,6 +1506,18 @@ class ConfigServer(object):
BPSMeter.do.clear_server(server)
raise dcRaiser(self.__root, kwargs)
@cherrypy.expose
def toggleServer(self, **kwargs):
msg = check_session(kwargs)
if msg: return msg
server = kwargs.get('server')
if server:
svr = config.get_config('servers', server)
svr.enable.set(not svr.enable())
config.save_config()
Downloader.do.update_server(server, server)
raise dcRaiser(self.__root, kwargs)
#------------------------------------------------------------------------------
def unique_svr_name(server):
@@ -1616,6 +1628,7 @@ class ConfigRss(object):
rss[feed] = feeds[feed].get_dict()
filters = feeds[feed].filters()
rss[feed]['filters'] = filters
rss[feed]['filter_states'] = [bool(sabnzbd.rss.convert_filter(f[4])) for f in filters]
rss[feed]['filtercount'] = len(filters)
rss[feed]['pick_cat'] = pick_cat
@@ -1929,7 +1942,7 @@ class ConfigScheduling(object):
act = ''
if act in ('enable_server', 'disable_server'):
action = Ttemplate("sch-" + act) + ' ' + server
item = (snum, '%02d' % int(h), '%02d' % int(m), days.get(day, '**'), '%s %s' % (action, value))
item = (snum, '%02d' % int(h), '%02d' % int(m), days.get(day, day), '%s %s' % (action, value))
conf['taskinfo'].append(item)
snum += 1

View File

@@ -259,10 +259,10 @@ def sanitize_foldername(name):
#------------------------------------------------------------------------------
def verified_flag_file(path, create=False):
def flag_file(path, flag, create=False):
""" Create verify flag file or return True if it already exists """
path = os.path.join(path, JOB_ADMIN)
path = os.path.join(path, VERIFIED_FILE)
path = os.path.join(path, flag)
if create:
try:
f = open(path, 'w')
@@ -317,6 +317,8 @@ def real_path(loc, path):
When 'path' is absolute, return normalized path
A path starting with ~ will be located in the user's Home folder
"""
# The Windows part is a bit convoluted because
# os.path.join() doesn't behave the same for all Python versions
if path:
path = path.strip()
else:
@@ -325,9 +327,15 @@ def real_path(loc, path):
if not sabnzbd.WIN32 and path.startswith('~/'):
path = path.replace('~', sabnzbd.DIR_HOME, 1)
if sabnzbd.WIN32:
if path[0].isalpha() and len(path) > 1 and path[1] == ':':
if len(path) == 2 or path[2] not in '\\/':
path = path.replace('/', '\\')
if len(path) > 1 and path[0].isalpha() and path[1] == ':':
if len(path) == 2 or path[2] != '\\':
path = path.replace(':', ':\\', 1)
elif path.startswith('\\\\'):
pass
elif path.startswith('\\'):
if len(loc) > 1 and loc[0].isalpha() and loc[1] == ':':
path = loc[:2] + path
else:
path = os.path.join(loc, path)
elif path[0] != '/':
@@ -582,11 +590,20 @@ def check_latest_version():
logging.debug("Checked for a new release, cur= %s, latest= %s (on %s)", current, latest, url)
if latest_test and cfg.version_check() > 1:
# User always wants to see the latest test release
latest = latest_test
url = url_beta
if testver and current < latest:
# This is a test version, but user has't seen the
# "Final" of this one yet, so show the Final
sabnzbd.NEW_VERSION = "%s;%s" % (latest_label, url)
elif current < latest:
# This one is behind, show latest final
sabnzbd.NEW_VERSION = "%s;%s" % (latest_label, url)
elif testver and current < latest_test:
# This is a test version beyond the latest Final, so show latest Alpha/Beta/RC
sabnzbd.NEW_VERSION = "%s;%s" % (latest_testlabel, url_beta)
@@ -713,15 +730,22 @@ def hostname():
#------------------------------------------------------------------------------
def check_mount(path):
""" Return False if volume isn't mounted on Linux or OSX
Retry 6 times with an interval of 1 sec.
"""
if sabnzbd.DARWIN:
m = re.search(r'^(/Volumes/[^/]+)/', path, re.I)
elif not sabnzbd.WIN32:
m = re.search(r'^(/(?:mnt|media)/[^/]+)/', path)
elif sabnzbd.WIN32:
m = re.search(r'^([a-z]:\\)', path, re.I)
else:
m = None
return (not m) or os.path.exists(m.group(1))
m = re.search(r'^(/(?:mnt|media)/[^/]+)/', path)
if m:
for n in xrange(cfg.wait_ext_drive() or 1):
if os.path.exists(m.group(1)):
return True
logging.debug('Waiting for %s to come online', m.group(1))
time.sleep(1)
return not m
#------------------------------------------------------------------------------
# Locked directory operations
@@ -814,6 +838,10 @@ def cleanup_empty_directories(path):
pass
if not repeat:
break
try:
remove_dir(path)
except:
pass
@synchronized(DIR_LOCK)
@@ -932,8 +960,9 @@ def bad_fetch(nzo, url, msg='', retry=False, content=False):
if isinstance(url, int) or url.isdigit():
url = 'Newzbin #%s' % url
growler.send_notification(T('URL Fetching failed; %s') % '', '%s\n%s' % (msg, url), 'other')
#import sabnzbd.emailer
sabnzbd.emailer.badfetch_mail(msg, url)
if cfg.email_endjob() > 0:
#import sabnzbd.emailer
sabnzbd.emailer.badfetch_mail(msg, url)
from sabnzbd.nzbqueue import NzbQueue
assert isinstance(NzbQueue.do, NzbQueue)

View File

@@ -31,10 +31,11 @@ import sabnzbd
from sabnzbd.encoding import TRANS, UNTRANS, unicode2local, name_fixer, \
reliable_unpack_names, unicoder, latin1, platform_encode
from sabnzbd.utils.rarfile import RarFile, is_rarfile
from sabnzbd.misc import format_time_string, find_on_path, make_script_path, int_conv
from sabnzbd.misc import format_time_string, find_on_path, make_script_path, int_conv, \
flag_file
from sabnzbd.tvsort import SeriesSorter
import sabnzbd.cfg as cfg
from constants import Status
from constants import Status, QCHECK_FILE
if sabnzbd.WIN32:
try:
@@ -353,7 +354,7 @@ def file_join(nzo, workdir, workdir_complete, delete, joinables):
# Finish up
joined_file.flush()
joined_file.close()
newfiles.append(joinable_set)
newfiles.append(filename)
if seq_error:
msg = T('Incomplete sequence of joinable files')
@@ -779,6 +780,7 @@ def par2_repair(parfile_nzf, nzo, workdir, setname):
result = True
if not result:
flag_file(workdir, QCHECK_FILE, True)
nzo.status = Status.REPAIRING
result = False
readd = False
@@ -971,7 +973,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False):
verified = 1
elif line.startswith('Main packet not found'):
## Initialparfile probaly didn't decode properly,
## Initialparfile probably didn't decode properly,
logging.info(Ta('Main packet not found...'))
extrapars = parfile_nzf.extrapars
@@ -981,7 +983,8 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False):
## Look for the smallest par2file
block_table = {}
for nzf in extrapars:
block_table[int_conv(nzf.blocks)] = nzf
if not nzf.completed:
block_table[int_conv(nzf.blocks)] = nzf
if block_table:
nzf = block_table[min(block_table.keys())]
@@ -989,6 +992,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False):
logging.info("Found new par2file %s", nzf.filename)
nzo.add_parfile(nzf)
extrapars.remove(nzf)
## mark for readd
readd = True
else:
@@ -1050,7 +1054,9 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False):
extrapar_list = block_table[block_size]
if extrapar_list:
nzo.add_parfile(extrapar_list.pop())
new_nzf = extrapar_list.pop()
nzo.add_parfile(new_nzf)
extrapars.remove(new_nzf)
added_blocks += block_size
else:
@@ -1254,7 +1260,10 @@ def build_filelists(workdir, workdir_complete, check_rar=True):
zips = [f for f in filelist if ZIP_RE.search(f)]
rars = [f for f in filelist if RAR_RE.search(f) and is_rarfile(f)]
if check_rar:
rars = [f for f in filelist if RAR_RE.search(f) and is_rarfile(f)]
else:
rars = [f for f in filelist if RAR_RE.search(f)]
ts = [f for f in filelist if TS_RE.search(f) and f not in joinables]
@@ -1334,32 +1343,35 @@ def unrar_check(rar):
def sfv_check(sfv_path):
""" Verify files using SFV file,
input: full path of sfv, file are assumed to be relative to sfv
returns: True when all files verified OK
returns: List of failing files or [] when all is OK
"""
failed = []
try:
fp = open(sfv_path, 'r')
except:
logging.info('Cannot open SFV file %s', sfv_path)
return False
failed.append(unicoder(sfv_path))
return failed
root = os.path.split(sfv_path)[0]
status = True
for line in fp:
line = line.strip('\n\r ')
if line[0] != ';':
x = line.rfind(' ')
filename = line[:x].strip()
filename = platform_encode(line[:x].strip())
checksum = line[x:].strip()
path = os.path.join(root, platform_encode(filename))
path = os.path.join(root, filename)
if os.path.exists(path):
if crc_check(path, checksum):
logging.debug('File %s passed SFV check', path)
else:
logging.warning('File %s did not pass SFV check', latin1(path))
status = False
logging.info('File %s did not pass SFV check', latin1(path))
failed.append(unicoder(filename))
else:
logging.warning('File %s mssing in SFV check', latin1(path))
logging.info('File %s missing in SFV check', latin1(path))
failed.append(unicoder(filename))
fp.close()
return status
return failed
def crc_check(path, target_crc):

View File

@@ -27,14 +27,14 @@ import datetime
import sabnzbd
from sabnzbd.trylist import TryList
from sabnzbd.nzbstuff import NzbObject
from sabnzbd.misc import exit_sab, cat_to_opts, verified_flag_file, \
from sabnzbd.misc import exit_sab, cat_to_opts, flag_file, \
get_admin_path, remove_all, globber
from sabnzbd.panic import panic_queue
import sabnzbd.database as database
from sabnzbd.decorators import NZBQUEUE_LOCK, synchronized, synchronized_CV
from sabnzbd.constants import QUEUE_FILE_NAME, QUEUE_VERSION, FUTURE_Q_FOLDER, JOB_ADMIN, \
LOW_PRIORITY, NORMAL_PRIORITY, HIGH_PRIORITY, TOP_PRIORITY, \
REPAIR_PRIORITY, STOP_PRIORITY, \
REPAIR_PRIORITY, STOP_PRIORITY, VERIFIED_FILE, \
PNFO_BYTES_FIELD, PNFO_BYTES_LEFT_FIELD, Status
import sabnzbd.cfg as cfg
from sabnzbd.articlecache import ArticleCache
@@ -150,10 +150,12 @@ class NzbQueue(TryList):
""" Reconstruct admin for a single job folder, optionally with new NZB """
name = os.path.basename(folder)
path = os.path.join(folder, JOB_ADMIN)
if new_nzb is None or not new_nzb.filename:
if verified_flag_file(folder):
filename = ''
else:
if hasattr(new_nzb, 'filename'):
filename = new_nzb.filename
else:
filename = ''
if not filename:
if not flag_file(folder, VERIFIED_FILE):
filename = globber(path, '*.gz')
if len(filename) > 0:
logging.debug('Repair job %s by reparsing stored NZB', latin1(name))
@@ -164,7 +166,7 @@ class NzbQueue(TryList):
self.add(nzo)
else:
remove_all(path, '*.gz')
logging.debug('Repair job %s with new NZB (%s)', latin1(name), latin1(new_nzb.filename))
logging.debug('Repair job %s with new NZB (%s)', latin1(name), latin1(filename))
sabnzbd.add_nzbfile(new_nzb, pp=None, script=None, cat=None, priority=None, nzbname=name, reuse=True)
@@ -673,7 +675,7 @@ class NzbQueue(TryList):
nzf = article.nzf
nzo = nzf.nzo
if nzo.deleted or nzf.deleted:
if nzf.deleted:
logging.debug("Discarding article %s, no longer in queue", article.article)
return
@@ -715,7 +717,9 @@ class NzbQueue(TryList):
sabnzbd.downloader.Downloader.do.disconnect()
# Notify assembler to call postprocessor
Assembler.do.process((nzo, None))
if not nzo.deleted:
nzo.deleted = True
Assembler.do.process((nzo, None))
@synchronized(NZBQUEUE_LOCK)
@@ -733,19 +737,34 @@ class NzbQueue(TryList):
@synchronized(NZBQUEUE_LOCK)
def queue_info(self, for_cli = False):
def queue_info(self, for_cli=False, max_jobs=0):
bytes_left = 0
bytes = 0
pnfo_list = []
n = 0
for nzo in self.__nzo_list:
pnfo = nzo.gather_info(for_cli = for_cli)
if nzo.status != 'Paused':
bytes += pnfo[PNFO_BYTES_FIELD]
bytes_left += pnfo[PNFO_BYTES_LEFT_FIELD]
pnfo_list.append(pnfo)
n += 1
if max_jobs and n >= max_jobs:
break
return (bytes, bytes_left, pnfo_list)
@synchronized(NZBQUEUE_LOCK)
def remaining(self):
""" Return bytes left in the queue by non-paused items
"""
bytes_left = 0
for nzo in self.__nzo_list:
if nzo.status != 'Paused':
bytes_left += nzo.remaining()
return bytes_left
@synchronized(NZBQUEUE_LOCK)
def is_empty(self):
empty = True

View File

@@ -54,7 +54,7 @@ RE_NORMAL = re.compile(r"(.+)(\.nzb)", re.I)
SUBJECT_FN_MATCHER = re.compile(r'"([^"]*)"')
RE_SAMPLE = re.compile(sample_match, re.I)
PROBABLY_PAR2_RE = re.compile(r'(.*)\.vol(\d*)\+(\d*)\.par2', re.I)
REJECT_PAR2_RE = re.compile(r'\.par2\.\d+', re.I) # Reject duplicate par2 files
################################################################################
# Article #
@@ -272,7 +272,7 @@ class NzbFile(TryList):
@property
def completed(self):
""" Is this file completed? """
return not bool(self.articles)
return self.import_finished and not bool(self.articles)
@property
def lowest_partnum(self):
@@ -810,6 +810,7 @@ class NzbObject(TryList):
if nzf in self.files:
self.files.remove(nzf)
self.finished_files.append(nzf)
nzf.import_finished = True
nzf.deleted = True
return not bool(self.files)
@@ -818,38 +819,35 @@ class NzbObject(TryList):
nzf.reset_all_try_lists()
self.reset_try_list()
def postpone_pars(self, nzf, head):
""" Move all vol-par files matching 'head' to the extrapars table """
self.partable[head] = nzf
self.extrapars[head] = []
nzf.extrapars = self.extrapars[head]
def postpone_pars(self, nzf, parset):
""" Move all vol-par files matching 'parset' to the extrapars table """
self.partable[parset] = nzf
self.extrapars[parset] = []
nzf.extrapars = self.extrapars[parset]
lparset = parset.lower()
for xnzf in self.files[:]:
name = xnzf.filename
name = xnzf.filename or platform_encode(xnzf.subject)
# Move only when not current NZF and filename was extractable from subject
if name and nzf is not xnzf:
name = name.lower()
if head.lower() in name and '.vol' in name and name.endswith('.par2'):
self.extrapars[head].append(xnzf)
head, vol, block = analyse_par2(name)
# When only subject is known, it's enough that that 'parset' is in subject
if head and lparset in head.lower():
xnzf.set_par2(parset, vol, block)
self.extrapars[parset].append(xnzf)
self.files.remove(xnzf)
def handle_par2(self, nzf, file_done):
## Special treatment for first part of par2 file
""" Check if file is a par2 and build up par2 collection
"""
fn = nzf.filename
if fn:
# We have a real filename now
fn = fn.strip()
lfn = fn.lower()
if (not nzf.is_par2) and fn and lfn.endswith('.par2'):
par2match = PROBABLY_PAR2_RE.search(fn)
if par2match:
head = par2match.group(1)
vol = par2match.group(2)
block = par2match.group(3)
elif lfn.endswith('.par2'):
head = os.path.splitext(fn)[0]
vol = block = 0
par2match = True
if not nzf.is_par2:
head, vol, block = analyse_par2(fn)
## Is a par2file and repair mode activated
if par2match and (self.repair or cfg.allow_streaming()):
if head and (self.repair or cfg.allow_streaming()):
nzf.set_par2(head, vol, block)
## Already got a parfile for this set?
if head in self.partable:
@@ -867,10 +865,12 @@ class NzbObject(TryList):
## This file either has more blocks,
## or initialparfile is already decoded
else:
if not file_done:
nzf.reset_try_list()
if file_done:
if nzf in self.files: self.files.remove(nzf)
self.extrapars[head].append(nzf)
if nzf not in self.extrapars[head]: self.extrapars[head].append(nzf)
else:
nzf.reset_try_list()
## No par2file in this set yet, set this as
## initialparfile
else:
@@ -894,7 +894,8 @@ class NzbObject(TryList):
if reset:
self.reset_try_list()
self.handle_par2(nzf, file_done)
if file_done:
self.handle_par2(nzf, file_done)
post_done = False
if not self.files:
@@ -924,6 +925,7 @@ class NzbObject(TryList):
subject = sanitize_filename(latin1(nzf.subject))
if (nzf.filename == filename) or (subject == filename) or (filename in subject):
nzf.filename = filename
nzf.completed = True
self.handle_par2(nzf, file_done=True)
self.remove_nzf(nzf)
nzfs.remove(nzf)
@@ -1007,11 +1009,10 @@ class NzbObject(TryList):
self.incomplete = False
def add_parfile(self, parfile):
self.files.append(parfile)
if parfile.extrapars:
if parfile not in self.files:
self.files.append(parfile)
if parfile.extrapars and parfile in parfile.extrapars:
parfile.extrapars.remove(parfile)
else:
logging.debug('PARFILE without EXTRAPARS %s', parfile.filename or parfile.subject)
def remove_parset(self, setname):
self.partable.pop(setname)
@@ -1110,8 +1111,14 @@ class NzbObject(TryList):
if article:
break
# Remove all files for which admin could not be read
for nzf in nzf_remove_list:
nzf.deleted = True
nzf.completed = True
self.files.remove(nzf)
# If cleanup emptied the active files list, end this job
if nzf_remove_list and not self.files:
sabnzbd.NzbQueue.do.end_job(self)
if not article:
# No articles for this server, block for next time
@@ -1228,6 +1235,13 @@ class NzbObject(TryList):
except:
pass
def remaining(self):
""" Return remaining bytes """
bytes_left = 0
for nzf in self.files:
bytes_left += nzf.bytes_left
return bytes_left
def gather_info(self, for_cli = False):
bytes_left_all = 0
@@ -1385,7 +1399,7 @@ def nzf_cmp_date(nzf1, nzf2):
return nzf_cmp_name(nzf1, nzf2, name=False)
RE_RAR = re.compile(r'(\.rar|\.r\d\d)|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d', re.I)
RE_RAR = re.compile(r'(\.rar|\.r\d\d|\.s\d\d|\.t\d\d|\.u\d\d|\.v\d\d)$', re.I)
def nzf_cmp_name(nzf1, nzf2, name=True):
# The comparison will sort .par2 files to the top of the queue followed by .rar files,
@@ -1532,3 +1546,22 @@ def set_attrib_file(path, attribs):
f.write('%s\n' % item)
f.close()
def analyse_par2(name):
""" Check if file is a par2-file and determine vol/block
return head, vol, block
head is empty when not a par2 file
"""
head = None
vol = block = 0
if name and not REJECT_PAR2_RE.search(name):
m = PROBABLY_PAR2_RE.search(name)
if m:
head = m.group(1)
vol = m.group(2)
block = m.group(3)
elif name.lower().find('.par2') > 0:
head = os.path.splitext(name)[0]
else:
head = None
return head, vol, block

View File

@@ -23,16 +23,17 @@ from Foundation import *
from AppKit import *
from PyObjCTools import AppHelper
from objc import YES, NO, nil
from threading import Thread
import os
import subprocess
from threading import Thread
import cherrypy
import Cheetah.DummyTransaction
import sys
import time
import logging
import logging.handlers
import sabnzbd
import sabnzbd.cfg
@@ -42,6 +43,7 @@ from sabnzbd.misc import get_filename, get_ext, diskfree, to_units
from sabnzbd.panic import launch_a_browser
import sabnzbd.growler as growler
from sabnzbd.api import fast_queue
from sabnzbd.nzbqueue import NzbQueue
import sabnzbd.config as config
import sabnzbd.scheduler as scheduler
@@ -50,6 +52,7 @@ import sabnzbd.dirscanner as dirscanner
from sabnzbd.bpsmeter import BPSMeter
from sabnzbd.newzbin import Bookmarks
from sabnzbd.database import get_history_handle
from sabnzbd.encoding import unicoder
status_icons = {'idle':'../Resources/sab_idle.png','pause':'../Resources/sab_pause.png','clicked':'../Resources/sab_clicked.png'}
start_time = NSDate.date()
@@ -328,7 +331,7 @@ class SABnzbdDelegate(NSObject):
def queueUpdate(self):
try:
qnfo = NzbQueue.do.queue_info()
qnfo = NzbQueue.do.queue_info(max_jobs=10)
pnfo_list = qnfo[QNFO_PNFO_LIST_FIELD]
bytesleftprogess = 0
@@ -347,7 +350,7 @@ class SABnzbdDelegate(NSObject):
for pnfo in pnfo_list:
if job_nb > 10:
break
filename = pnfo[PNFO_FILENAME_FIELD]
filename = unicoder(pnfo[PNFO_FILENAME_FIELD])
msgid = pnfo[PNFO_MSGID_FIELD]
bytesleft = pnfo[PNFO_BYTES_LEFT_FIELD] / MEBI
bytesleftprogess += pnfo[PNFO_BYTES_LEFT_FIELD]
@@ -438,24 +441,23 @@ class SABnzbdDelegate(NSObject):
def stateUpdate(self):
try:
qnfo = NzbQueue.do.queue_info()
bpsnow = BPSMeter.do.get_bps()
if sabnzbd.downloader.Downloader.do.paused:
paused, bytes_left, bpsnow, time_left = fast_queue()
if paused:
self.state = T('Paused')
if sabnzbd.scheduler.pause_int() != "0":
self.setMenuTitle("\n\n%s\n" % (sabnzbd.scheduler.pause_int()))
else:
self.setMenuTitle("")
elif qnfo[QNFO_BYTES_LEFT_FIELD] / MEBI > 0:
elif bytes_left > 0:
self.state = ""
speed = to_units(bpsnow, dec_limit=1) + 'B/s'
speed = to_units(bpsnow, dec_limit=1)
# "10.1 MB/s" doesn't fit, remove space char
if 'M' in speed and len(speed) > 8:
if 'M' in speed and len(speed) > 5:
speed = speed.replace(' ', '')
timeleft = (bpsnow>10 and self.calc_timeleft(qnfo[QNFO_BYTES_LEFT_FIELD],bpsnow)) or "--"
time_left = (bpsnow>10 and time_left) or "------"
statusbarText = "\n\n%s\n%s\n" % (timeleft, speed)
statusbarText = "\n\n%s\n%sB/s\n" % (time_left, speed)
if sabnzbd.SABSTOP:
statusbarText = "..."
@@ -786,3 +788,40 @@ def notify(notificationName, message):
nc.postNotificationName_object_(notificationName, message)
del pool
#------------------------------------------------------------------------------
class OsxAwake(Thread):
""" Keep running 'caffeinate' as long as the 'stay_awake' flag is set
"""
do = None
def __init__(self):
Thread.__init__(self)
self.stay_awake = False
self.__stop_now = False
self.__proc = None
logging.info('Starting caffeinate task')
OsxAwake.do = self
def run(self):
command = ['caffeinate', '-i', '-s', '-t300']
while not self.__stop_now:
if self.stay_awake:
self.stay_awake = False
logging.debug('Launching caffeinate')
self.__proc = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=False)
self.__proc.wait()
self.__proc = None
else:
time.sleep(30)
def stop(self):
logging.info('Stopping caffeinate task')
self.__stop_now = True
self.stay_awake = False
if self.__proc:
logging.debug('Stopping caffeinate')
try:
self.__proc.terminate()
except:
pass

View File

@@ -236,6 +236,10 @@ def launch_a_browser(url, force=False):
if not force and not cfg.autobrowser() or sabnzbd.DAEMON:
return
if '::1' in url and not '[::1]' in url:
# Get around ideosyncrasy in Python runtime
url = url.replace('::1', '[::1]')
if cfg.enable_https() and not cfg.https_port.get_int():
# Must use https, because http is not available
url = url.replace('http:', 'https:')

View File

@@ -31,12 +31,12 @@ import re
from sabnzbd.newsunpack import unpack_magic, par2_repair, external_processing, sfv_check
from threading import Thread
from sabnzbd.misc import real_path, get_unique_path, create_dirs, move_to_path, \
get_unique_filename, make_script_path, verified_flag_file, \
get_unique_filename, make_script_path, flag_file, \
on_cleanup_list, renamer, remove_dir, remove_all, globber, \
set_permissions
from sabnzbd.tvsort import Sorter
from sabnzbd.constants import REPAIR_PRIORITY, POSTPROC_QUEUE_FILE_NAME, \
POSTPROC_QUEUE_VERSION, sample_match, JOB_ADMIN, Status
POSTPROC_QUEUE_VERSION, sample_match, JOB_ADMIN, Status, VERIFIED_FILE
from sabnzbd.encoding import TRANS, unicoder
from sabnzbd.newzbin import Bookmarks
import sabnzbd.emailer as emailer
@@ -311,7 +311,7 @@ def process_job(nzo):
## TV/Movie/Date Renaming code part 1 - detect and construct paths
file_sorter = Sorter(cat)
complete_dir = file_sorter.detect(dirname, complete_dir)
if file_sorter.is_sortfile():
if file_sorter.sort_file:
one_folder = False
if one_folder:
@@ -358,6 +358,7 @@ def process_job(nzo):
path = os.path.join(root, file_)
new_path = path.replace(workdir, tmp_workdir_complete)
new_path = get_unique_filename(new_path)
newfiles.append(new_path)
if not move_to_path(path, new_path, unique=False):
nzo.set_unpack_info('Unpack', T('Failed moving %s to %s') % (unicoder(path), unicoder(new_path)))
all_ok = False
@@ -409,7 +410,7 @@ def process_job(nzo):
remove_samples(workdir_complete)
## TV/Movie/Date Renaming code part 2 - rename and move files to parent folder
if all_ok and file_sorter.is_sortfile():
if all_ok and file_sorter.sort_file:
if newfiles:
file_sorter.rename(newfiles, workdir_complete)
workdir_complete, ok = file_sorter.move(workdir_complete)
@@ -539,6 +540,7 @@ def process_job(nzo):
def parring(nzo, workdir):
""" Perform par processing. Returns: (par_error, re_add)
"""
assert isinstance(nzo, sabnzbd.nzbstuff.NzbObject)
filename = nzo.final_name
growler.send_notification(T('Post-processing'), nzo.final_name, 'pp')
logging.info('Par2 check starting on %s', filename)
@@ -561,8 +563,7 @@ def parring(nzo, workdir):
need_re_add, res = par2_repair(parfile_nzf, nzo, workdir, set_)
if need_re_add:
re_add = True
else:
par_error = par_error or not res
par_error = par_error or not res
if re_add:
logging.info('Readded %s to queue', filename)
@@ -582,8 +583,12 @@ def parring(nzo, workdir):
par_error = False
nzo.set_unpack_info('Repair', T('Trying SFV verification'))
for sfv in sfvs:
if not sfv_check(sfv):
nzo.set_unpack_info('Repair', T('Some files failed to verify against "%s"') % unicoder(os.path.basename(sfv)))
failed = sfv_check(sfv)
if failed:
msg = T('Some files failed to verify against "%s"') % unicoder(os.path.basename(sfv))
msg += '; '
msg += '; '.join(failed)
nzo.set_unpack_info('Repair', msg)
par_error = True
if not par_error:
nzo.set_unpack_info('Repair', T('Verified successfully using SFV files'))
@@ -592,7 +597,7 @@ def parring(nzo, workdir):
nzo.set_unpack_info('Repair', T('[%s] No par2 sets') % unicoder(filename))
if not par_error:
verified_flag_file(workdir, create=True)
flag_file(workdir, VERIFIED_FILE, create=True)
return par_error, re_add

View File

@@ -125,7 +125,7 @@ def convert_filter(text):
try:
return re.compile(txt, re.I)
except:
logging.error(Ta('Could not compile regex: %s'), text)
logging.debug('Could not compile regex: %s', text)
return None
_EXPIRE_SEC = 3*24*3600 # 3 days
@@ -407,7 +407,10 @@ class RSSQueue(object):
result = False
break
else:
found = re.search(regexes[n], title)
if regexes[n]:
found = re.search(regexes[n], title)
else:
found = False
if reTypes[n] == 'M' and not found:
logging.debug("Filter rejected on rule %d", n)
result = False

View File

@@ -29,6 +29,8 @@ import sabnzbd.api as api
import sabnzbd.scheduler as scheduler
from sabnzbd.downloader import Downloader
import sabnzbd.cfg as cfg
from sabnzbd.constants import MEBI
from sabnzbd.misc import to_units
import os
import cherrypy
@@ -71,23 +73,19 @@ class SABTrayThread(SysTrayIconThread):
""" Update menu info, once every 10 calls """
self.counter += 1
if self.counter > 10:
status = api.qstatus_data()
state = status.get('state', "SABnzbd")
self.sabpaused = status.get('paused', False)
self.sabpaused, bytes_left, bpsnow, time_left = api.fast_queue()
mb_left = to_units(bytes_left, dec_limit=1)
speed = to_units(bpsnow, dec_limit=1)
if state == 'IDLE':
self.hover_text = T('Idle')
self.icon = self.sabicons['default']
elif state == 'PAUSED':
if self.sabpaused:
self.hover_text = T('Paused')
self.icon = self.sabicons['pause']
elif state == 'DOWNLOADING':
self.hover_text = "%sB/s %s: %s MB (%s)" % (status.get('speed', "---"), T('Remaining'), str(int(status.get('mbleft', "0"))), status.get('timeleft', "---"))
elif bytes_left > 0:
self.hover_text = "%sB/s %s: %sB (%s)" % (speed, T('Remaining'), mb_left, time_left)
self.icon = self.sabicons['green']
else:
self.hover_text = '??'
self.icon = self.sabicons['pause']
self.hover_text = T('Idle')
self.icon = self.sabicons['default']
self.refresh_icon()
self.counter = 0

View File

@@ -82,7 +82,7 @@ def init():
continue
if d.isdigit():
d = [int(d)]
d = [int(i) for i in d]
else:
d = range(1, 8)

View File

@@ -415,6 +415,7 @@ SKIN_TEXT = {
'explain-auto_sort' : TT('Automatically sort items by (average) age.'),
'opt-check_new_rel' : TT('Check for New Release'),
'explain-check_new_rel' : TT('Weekly check for new SABnzbd release.'),
'also-test' : TT('Also test releases'), #: Pick list for weekly test for new releases
'opt-replace_spaces' : TT('Replace Spaces in Foldername'),
'explain-replace_spaces' : TT('Replace spaces with underscores in folder names.'),
'opt-replace_dots' : TT('Replace dots in Foldername'),

View File

@@ -28,7 +28,7 @@ import re
import sabnzbd
from sabnzbd.misc import move_to_path, cleanup_empty_directories, get_unique_path, \
get_unique_filename, get_ext, renamer, remove_dir, sanitize_foldername
get_unique_filename, get_ext, renamer, sanitize_foldername
from sabnzbd.constants import series_match, date_match, year_match, sample_match
import sabnzbd.cfg as cfg
from sabnzbd.encoding import titler
@@ -37,8 +37,8 @@ RE_SAMPLE = re.compile(sample_match, re.I)
# Do not rename .vob files as they are usually DVD's
EXCLUDED_FILE_EXTS = ('.vob', '.bin')
LOWERCASE = ('the','of','and','at','vs','a','an','but','nor','for','on',\
'so','yet')
LOWERCASE = ('the', 'of', 'and', 'at', 'vs', 'a', 'an', 'but', 'nor', 'for', 'on', \
'so', 'yet')
UPPERCASE = ('III', 'II', 'IV')
REPLACE_AFTER = {
@@ -63,33 +63,38 @@ COUNTRY_REP = ('(US)', '(UK)', '(EU)', '(CA)', '(YU)', '(VE)', '(TR)', '(CH)', \
_RE_ENDEXT = re.compile(r'\.%ext[{}]*$', re.I)
def endswith_ext(path):
m = _RE_ENDEXT.search(path)
return m is not None
""" Return True when path ends with '.%ext'
"""
return _RE_ENDEXT.search(path) is not None
def move_to_parent_folder(workdir):
""" Move content of 'workdir' to 'workdir/..' (except marker file)
""" Move all in 'workdir' into 'workdir/..'
"""
path1 = os.path.abspath(os.path.normpath(os.path.join(workdir, '..'))) #move things to the folder below
# Determine 'folder'/..
workdir = os.path.abspath(os.path.normpath(workdir))
dest = os.path.normpath(os.path.join(workdir, '..'))
# Check for DVD folders and stop if found
for item in os.listdir(workdir):
if item.lower() in ('video_ts', 'audio_ts', 'bdmv'):
return workdir, True
for root, dirs, files in os.walk(workdir):
for _file in files:
path = os.path.join(root, _file)
new_path = path.replace(workdir, path1)
new_path = path.replace(workdir, dest)
new_path = get_unique_filename(new_path)
if not move_to_path(path, new_path, False):
return path1, False
return dest, False
cleanup_empty_directories(workdir)
try:
remove_dir(workdir)
except:
pass
return path1, True
return dest, True
class Sorter(object):
""" Generic Sorter class
"""
def __init__(self, cat):
self.sorter = None
self.type = None
@@ -98,22 +103,24 @@ class Sorter(object):
self.ext = ''
def detect(self, dirname, complete_dir):
""" Detect which kind of sort applies
"""
self.sorter = SeriesSorter(dirname, complete_dir, self.cat)
if self.sorter.is_match():
if self.sorter.matched:
complete_dir = self.sorter.get_final_path()
self.type = 'tv'
self.sort_file = True
return complete_dir
self.sorter = DateSorter(dirname, complete_dir, self.cat)
if self.sorter.is_match():
if self.sorter.matched:
complete_dir = self.sorter.get_final_path()
self.type = 'date'
self.sort_file = True
return complete_dir
self.sorter = GenericSorter(dirname, complete_dir, self.cat)
if self.sorter.is_match():
if self.sorter.matched:
complete_dir = self.sorter.get_final_path()
self.type = 'movie'
self.sort_file = True
@@ -123,12 +130,15 @@ class Sorter(object):
return complete_dir
def rename(self, newfiles, workdir_complete):
if self.sorter.should_rename():
""" Rename files of the job
"""
if self.sorter.rename_or_not:
self.sorter.rename(newfiles, workdir_complete)
def rename_with_ext(self, workdir_complete):
""" Special renamer for %ext """
if self.sorter.should_rename() and '%ext' in workdir_complete and self.ext:
""" Special renamer for %ext
"""
if self.sorter.rename_or_not and '%ext' in workdir_complete and self.ext:
# Replace %ext with extension
newpath = workdir_complete.replace('%ext', self.ext)
try:
@@ -167,10 +177,10 @@ class Sorter(object):
ok = False
return workdir_complete, ok
def is_sortfile(self):
return self.sort_file
class SeriesSorter(object):
""" Methods for Series Sorting
"""
def __init__(self, dirname, path, cat):
self.matched = False
@@ -181,6 +191,7 @@ class SeriesSorter(object):
self.cats = cfg.tv_categories()
self.filename_set = ''
self.fname = '' # Value for %fn substitution in folders
self.final_path = ''
self.match_obj = None
self.extras = None
@@ -199,7 +210,7 @@ class SeriesSorter(object):
if force or (cfg.enable_tv_sorting() and cfg.tv_sort_string()):
if force or (not self.cats) or (self.cat and self.cat.lower() in self.cats) or (not self.cat and 'None' in self.cats):
#First check if the show matches TV episode regular expressions. Returns regex match object
self.match_obj, self.extras = check_regexs(self.original_dirname, series_match, double=True)
self.match_obj, self.extras = check_regexs(self.original_dirname, series_match)
if self.match_obj:
logging.debug("Found TV Show - Starting folder sort (%s)", self.original_dirname)
self.matched = True
@@ -211,7 +222,8 @@ class SeriesSorter(object):
def get_final_path(self):
# Collect and construct all the variables such as episode name, show names
""" Collect and construct all the variables such as episode name, show names
"""
if self.get_values():
# Get the final path
path = self.construct_path()
@@ -239,8 +251,8 @@ class SeriesSorter(object):
def get_shownames(self):
''' Get the show name from the match object and format it '''
# Get the formatted title and alternate title formats
self.show_info['show_tname'], self.show_info['show_tname_two'], self.show_info['show_tname_three'] = getTitles(self.match_obj, self.original_dirname, True)
self.show_info['show_name'], self.show_info['show_name_two'], self.show_info['show_name_three'] = getTitles(self.match_obj, self.original_dirname)
self.show_info['show_tname'], self.show_info['show_tname_two'], self.show_info['show_tname_three'] = get_titles(self.match_obj, self.original_dirname, True)
self.show_info['show_name'], self.show_info['show_name_two'], self.show_info['show_name_three'] = get_titles(self.match_obj, self.original_dirname)
def get_seasons(self):
@@ -289,7 +301,7 @@ class SeriesSorter(object):
def get_showdescriptions(self):
''' Get the show descriptions from the match object and format them '''
self.show_info['ep_name'], self.show_info['ep_name_two'], self.show_info['ep_name_three'] = getDescriptions(self.match_obj, self.original_dirname)
self.show_info['ep_name'], self.show_info['ep_name_two'], self.show_info['ep_name_three'] = get_descriptions(self.match_obj, self.original_dirname)
def get_values(self):
@@ -367,10 +379,10 @@ class SeriesSorter(object):
path = path.replace(key, name)
# Lowercase all characters encased in {}
path = toLowercase(path)
path = to_lowercase(path)
# Strip any extra ' ' '.' or '_' around foldernames
path = stripFolders(path)
path = strip_folders(path)
# Split the last part of the path up for the renamer
if extension:
@@ -382,12 +394,10 @@ class SeriesSorter(object):
return os.path.normpath(head)
def should_rename(self):
return self.rename_or_not
def rename(self, files, current_path):
""" Rename for Series
"""
logging.debug("Renaming Series")
renamed = None
largest = (None, None, 0)
def to_filepath(f, current_path):
@@ -419,18 +429,18 @@ class SeriesSorter(object):
self.fname = tmp
newname = "%s%s" % (self.filename_set, self.ext)
# Replace %fn with the original filename
newname = newname.replace('%fn',tmp)
newname = newname.replace('%fn', tmp)
newpath = os.path.join(current_path, newname)
# Replace %ext with extension
newpath = newpath.replace('%ext', self.ext)
if not os.path.exists(newpath):
try:
logging.debug("Rename: %s to %s", filepath,newpath)
renamer(filepath,newpath)
logging.debug("Rename: %s to %s", filepath, newpath)
renamer(filepath, newpath)
except:
logging.error("Failed to rename: %s to %s", current_path, newpath)
logging.info("Traceback: ", exc_info = True)
rename_similar(current_path, file, self.filename_set)
rename_similar(current_path, self.ext, self.filename_set)
else:
logging.debug('Current path already exists, skipping rename, %s', newpath)
else:
@@ -443,6 +453,8 @@ _RE_MULTIPLE = ( \
re.compile(r'\w\W([\w\d])\W', re.I) # blah-1-ok.avi blah-a-ok.avi
)
def check_for_multiple(files):
""" Return list of files that looks like a multi-part post
"""
for regex in _RE_MULTIPLE:
matched_files = check_for_sequence(regex, files)
if matched_files:
@@ -451,6 +463,8 @@ def check_for_multiple(files):
def check_for_sequence(regex, files):
""" Return list of files that looks like a sequence, using 'regex'
"""
matches = {}
prefix = None
# Build up a dictionary of matches
@@ -502,6 +516,8 @@ def check_for_sequence(regex, files):
class GenericSorter(object):
""" Methods for Generic Sorting
"""
def __init__(self, dirname, path, cat):
self.matched = False
@@ -513,6 +529,7 @@ class GenericSorter(object):
self.cat = cat
self.filename_set = ''
self.fname = '' # Value for %fn substitution in folders
self.final_path = ''
self.match_obj = None
@@ -525,7 +542,8 @@ class GenericSorter(object):
def match(self, force=False):
''' Checks the category for a match, if so set self.match to true '''
""" Checks the category for a match, if so set self.match to true
"""
if force or (cfg.enable_movie_sorting() and self.sort_string):
#First check if the show matches TV episode regular expressions. Returns regex match object
if force or (self.cat and self.cat.lower() in self.cats) or (not self.cat and 'None' in self.cats):
@@ -533,14 +551,9 @@ class GenericSorter(object):
self.matched = True
def is_match(self):
''' Returns whether there was a match or not '''
return self.matched
def get_final_path(self):
# Collect and construct all the variables such as episode name, show names
""" Collect and construct all the variables such as episode name, show names
"""
if self.get_values():
# Get the final path
path = self.construct_path()
@@ -551,32 +564,33 @@ class GenericSorter(object):
return os.path.join(self.original_path, self.original_dirname)
def get_values(self):
""" Collect and construct all the values needed for path replacement """
""" Collect and construct all the values needed for path replacement
"""
## - Get Year
dirname = self.original_dirname.replace('_', ' ')
RE_YEAR = re.compile(year_match, re.I)
year_m = RE_YEAR.search(dirname)
if year_m:
# Find the last matched date
# Keep year_m to use in getTitles
# Keep year_m to use in get_titles
year = RE_YEAR.findall(dirname)[-1][0]
self.movie_info['year'] = year
else:
self.movie_info['year'] = ''
## - Get Decades
self.movie_info['decade'], self.movie_info['decade_two'] = getDecades(self.movie_info['year'])
self.movie_info['decade'], self.movie_info['decade_two'] = get_decades(self.movie_info['year'])
## - Get Title
self.movie_info['ttitle'], self.movie_info['ttitle_two'], self.movie_info['ttitle_three'] = getTitles(year_m, self.original_dirname, True)
self.movie_info['title'], self.movie_info['title_two'], self.movie_info['title_three'] = getTitles(year_m, self.original_dirname)
self.movie_info['ttitle'], self.movie_info['ttitle_two'], self.movie_info['ttitle_three'] = get_titles(year_m, self.original_dirname, True)
self.movie_info['title'], self.movie_info['title_two'], self.movie_info['title_three'] = get_titles(year_m, self.original_dirname)
return True
def construct_path(self):
""" Return path reconstructed from orginal and sort expression
"""
sorter = self.sort_string.replace('\\', '/')
mapping = []
@@ -618,10 +632,10 @@ class GenericSorter(object):
# Lowercase all characters encased in {}
path = toLowercase(path)
path = to_lowercase(path)
# Strip any extra ' ' '.' or '_' around foldernames
path = stripFolders(path)
path = strip_folders(path)
# Split the last part of the path up for the renamer
if extension:
@@ -633,10 +647,10 @@ class GenericSorter(object):
return os.path.normpath(head)
def should_rename(self):
return self.rename_or_not
def rename(self, _files, current_path):
""" Rename for Generic files
"""
logging.debug("Renaming Generic file")
def filter_files(_file, current_path):
if is_full_path(_file):
@@ -650,8 +664,7 @@ class GenericSorter(object):
return True
return False
renamed = False
# remove any files below 300MB from this list
# remove any files below the limit from this list
files = [_file for _file in _files if filter_files(_file, current_path)]
length = len(files)
@@ -665,16 +678,16 @@ class GenericSorter(object):
if os.path.exists(filepath):
tmp, ext = os.path.splitext(file)
self.fname = tmp
newname = "%s%s" % (self.filename_set,ext)
newname = newname.replace('%fn',tmp)
newname = "%s%s" % (self.filename_set, ext)
newname = newname.replace('%fn', tmp)
newpath = os.path.join(current_path, newname)
try:
logging.debug("Rename: %s to %s", filepath,newpath)
renamer(filepath,newpath)
logging.debug("Rename: %s to %s", filepath, newpath)
renamer(filepath, newpath)
except:
logging.error(Ta('Failed to rename: %s to %s'), filepath, newpath)
logging.info("Traceback: ", exc_info = True)
rename_similar(current_path, file, self.filename_set)
rename_similar(current_path, ext, self.filename_set)
## Sequence File Handling
# if there is more than one extracted file check for CD1/1/A in the title
@@ -688,21 +701,23 @@ class GenericSorter(object):
tmp, ext = os.path.splitext(file)
self.fname = tmp
name = '%s%s' % (self.filename_set, self.extra)
name = name.replace('%1', str(index)).replace('%fn',tmp)
name = name.replace('%1', str(index)).replace('%fn', tmp)
name = name + ext
newpath = os.path.join(current_path, name)
try:
logging.debug("Rename: %s to %s", filepath,newpath)
renamer(filepath,newpath)
logging.debug("Rename: %s to %s", filepath, newpath)
renamer(filepath, newpath)
except:
logging.error(Ta('Failed to rename: %s to %s'), filepath, newpath)
logging.info("Traceback: ", exc_info = True)
rename_similar(current_path, file, self.filename_set)
rename_similar(current_path, ext, self.filename_set)
else:
logging.debug("Movie files not in sequence %s", _files)
class DateSorter(object):
""" Methods for Date Sorting
"""
def __init__(self, dirname, path, cat):
self.matched = False
@@ -731,7 +746,7 @@ class DateSorter(object):
if force or (cfg.enable_date_sorting() and self.sort_string):
#First check if the show matches TV episode regular expressions. Returns regex match object
if force or (self.cat and self.cat.lower() in self.cats) or (not self.cat and 'None' in self.cats):
self.match_obj, self.date_type = checkForDate(self.original_dirname, date_match)
self.match_obj, self.date_type = check_for_date(self.original_dirname, date_match)
if self.match_obj:
logging.debug("Date Sorting - Starting folder sort (%s)", self.original_dirname)
self.matched = True
@@ -743,7 +758,8 @@ class DateSorter(object):
def get_final_path(self):
# Collect and construct all the variables such as episode name, show names
""" Collect and construct all the variables such as episode name, show names
"""
if self.get_values():
# Get the final path
path = self.construct_path()
@@ -769,25 +785,26 @@ class DateSorter(object):
self.date_info['date_two'] = self.date_info['date'].rjust(2,'0')
## - Get Decades
self.date_info['decade'], self.date_info['decade_two'] = getDecades(self.date_info['year'])
self.date_info['decade'], self.date_info['decade_two'] = get_decades(self.date_info['year'])
## - Get Title
self.date_info['ttitle'], self.date_info['ttitle_two'], self.date_info['ttitle_three'] = getTitles(self.match_obj, self.original_dirname, True)
self.date_info['title'], self.date_info['title_two'], self.date_info['title_three'] = getTitles(self.match_obj, self.original_dirname)
self.date_info['ttitle'], self.date_info['ttitle_two'], self.date_info['ttitle_three'] = get_titles(self.match_obj, self.original_dirname, True)
self.date_info['title'], self.date_info['title_two'], self.date_info['title_three'] = get_titles(self.match_obj, self.original_dirname)
self.date_info['ep_name'], self.date_info['ep_name_two'], self.date_info['ep_name_three'] = getDescriptions(self.match_obj, self.original_dirname)
self.date_info['ep_name'], self.date_info['ep_name_two'], self.date_info['ep_name_three'] = get_descriptions(self.match_obj, self.original_dirname)
return True
def construct_path(self):
""" Return path reconstructed from orginal and sort expression
"""
sorter = self.sort_string.replace('\\', '/')
mapping = []
if endswith_ext(sorter):
extension = True
sorter= sorter.replace(".%ext", '')
sorter = sorter.replace(".%ext", '')
else:
extension = False
@@ -838,10 +855,10 @@ class DateSorter(object):
path = path.replace(key, name)
# Lowercase all characters encased in {}
path = toLowercase(path)
path = to_lowercase(path)
# Strip any extra ' ' '.' or '_' around foldernames
path = stripFolders(path)
path = strip_folders(path)
# Split the last part of the path up for the renamer
if extension:
@@ -853,12 +870,11 @@ class DateSorter(object):
return os.path.normpath(head)
def should_rename(self):
return self.rename_or_not
def rename(self, files, current_path):
""" Renaming Date file
"""
logging.debug("Renaming Date file")
renamed = None
#find the master file to rename
for file in files:
if is_full_path(file):
@@ -868,21 +884,21 @@ class DateSorter(object):
if os.path.exists(filepath):
size = os.stat(filepath).st_size
if size > 130000000:
if size > cfg.movie_rename_limit.get_int():
if 'sample' not in file:
tmp, ext = os.path.splitext(file)
self.fname = tmp
newname = "%s%s" % (self.filename_set,ext)
newname = newname.replace('%fn',tmp)
newname = "%s%s" % (self.filename_set, ext)
newname = newname.replace('%fn', tmp)
newpath = os.path.join(current_path, newname)
if not os.path.exists(newpath):
try:
logging.debug("Rename: %s to %s", filepath,newpath)
renamer(filepath,newpath)
logging.debug("Rename: %s to %s", filepath, newpath)
renamer(filepath, newpath)
except:
logging.error(Ta('Failed to rename: %s to %s'), current_path, newpath)
logging.info("Traceback: ", exc_info = True)
rename_similar(current_path, file, self.filename_set)
rename_similar(current_path, ext, self.filename_set)
break
@@ -909,7 +925,7 @@ def path_subst(path, mapping):
return ''.join(newpath)
def getTitles(match, name, titleing=False):
def get_titles(match, name, titleing=False):
'''
The title will be the part before the match
Clean it up and title() it
@@ -989,7 +1005,7 @@ def replace_word(input, one, two):
input = input.replace(one, two)
return input
def getDescriptions(match, name):
def get_descriptions(match, name):
'''
If present, get a description from the nzb name.
A description has to be after the matched item, seperated either
@@ -1010,7 +1026,9 @@ def getDescriptions(match, name):
return ep_name, ep_name2, ep_name3
def getDecades(year):
def get_decades(year):
""" Return 4 digit and 2 digit decades given 'year'
"""
if year:
try:
decade = year[2:3]+'0'
@@ -1023,14 +1041,18 @@ def getDecades(year):
decade2 = ''
return decade, decade2
def check_for_folder(path):
""" Return True if any folder is found in the tree at 'path'
"""
for root, dirs, files in os.walk(path):
if dirs:
return True
return False
_RE_LOWERCASE = re.compile(r'{([^{]*)}')
def toLowercase(path):
def to_lowercase(path):
''' Lowercases any characters enclosed in {} '''
while True:
m = _RE_LOWERCASE.search(path)
@@ -1043,17 +1065,25 @@ def toLowercase(path):
path = path.replace('}', '')
return path
def stripFolders(folders):
f = folders.strip('/').split('/')
def strip_folders(path):
""" Return 'path' without leading and trailing spaces and underscores in each element
For Windows, also remove leading and trailing dots
"""
f = path.strip('/').split('/')
# For path beginning with a slash, insert empty element to prevent loss
if folders.strip()[0] in '/\\':
if path.strip()[0] in '/\\':
f.insert(0, '')
def strip_all(x):
""" Strip all leading/trailing underscores
also dots for Windows
"""
x = x.strip().strip('_')
if sabnzbd.WIN32:
# Don't want to strip . from folders such as /.sabnzbd/
# OSX and Linux should keep dots, because leading dots are significant
# while Windows cannot handle trailing dots
x = x.strip('.')
x = x.strip()
return x
@@ -1061,41 +1091,44 @@ def stripFolders(folders):
return os.path.normpath('/'.join([strip_all(x) for x in f]))
def rename_similar(path, file, name):
logging.debug('Renaming files similar to: %s to %s', file, name)
file_prefix, ext = os.path.splitext(file)
file_prefix = file_prefix.lower()
for root, dirs, files in os.walk(path):
for _file in files:
fpath = os.path.join(root, _file)
tmp, ext = os.path.splitext(_file)
if tmp.lower() == file_prefix:
newname = "%s%s" % (name,ext)
newname = newname.replace('%fn',tmp)
newpath = os.path.join(path, newname)
if not os.path.exists(newpath):
try:
logging.debug("Rename: %s to %s", fpath,newpath)
renamer(fpath,newpath)
except:
logging.error(Ta('Failed to rename similar file: %s to %s'), path, newpath)
logging.info("Traceback: ", exc_info = True)
def rename_similar(folder, skip_ext, name):
""" Rename all other files in the 'folder' hierarchy after 'name'
and move them to the root of 'folder'.
Files having extension 'skip_ext' will be moved, but not renamed.
"""
logging.debug('Give files in set "%s" matching names.', name)
folder = os.path.normpath(folder)
skip_ext = skip_ext.lower()
for root, dirs, files in os.walk(folder):
for f in files:
path = os.path.join(root, f)
org, ext = os.path.splitext(f)
if ext.lower() == skip_ext:
# Move file, but do not rename
newpath = os.path.join(folder, f)
else:
# Move file and rename
newname = "%s%s" % (name, ext)
newname = newname.replace('%fn', org)
newpath = os.path.join(folder, newname)
if path != newpath:
newpath = get_unique_filename(newpath)
try:
logging.debug("Rename: %s to %s", path, newpath)
renamer(path, newpath)
except:
logging.error(Ta('Failed to rename similar file: %s to %s'), path, newpath)
logging.info("Traceback: ", exc_info=True)
cleanup_empty_directories(folder)
def check_regexs(filename, matchers, double=False):
def check_regexs(filename, matchers):
"""
Regular Expression match for a list of regexes
Returns the MatchObject if a match is made
This version checks for an additional match
"""
#if double:
# matcher, extramatchers = matchers
#else:
# matcher = matchers
# extramatchers = []
extras = []
for expressions in matchers:
expression, extramatchers = expressions
@@ -1104,7 +1137,7 @@ def check_regexs(filename, matchers, double=False):
if match1:
for m in extramatchers:
regex = re.compile(m)
match2 = regex.findall(filename,match1.end())
match2 = regex.findall(filename, match1.end())
if match2:
for match in match2:
if type(match) == type(()) and len(match) > 1:
@@ -1116,12 +1149,11 @@ def check_regexs(filename, matchers, double=False):
return None, None
def checkForDate(filename, matcher):
def check_for_date(filename, matcher):
"""
Regular Expression match for date based files
Returns the MatchObject if a match is made
"""
match2 = None
x = 0
if matcher:
for expression in matcher:
@@ -1133,6 +1165,8 @@ def checkForDate(filename, matcher):
return None, 0
def is_full_path(file):
""" Return True if path is absolute
"""
if file.startswith('\\') or file.startswith('/'):
return True
try:

View File

@@ -49,7 +49,6 @@ class URLGrabber(Thread):
def __init__(self):
Thread.__init__(self)
now = time.time()
self.queue = Queue.Queue()
for tup in NzbQueue.do.get_urls():
url, nzo = tup
@@ -115,7 +114,10 @@ class URLGrabber(Thread):
logging.info('Removing nzbmatrix bookmark %s', matrix_id)
else:
logging.info('Grabbing URL %s', url)
opener = urllib.FancyURLopener({})
if '.nzbsrus.' in url:
opener = urllib.URLopener({})
else:
opener = urllib.FancyURLopener({})
opener.prompt_user_passwd = None
opener.addheaders = []
opener.addheader('User-Agent', 'SABnzbd+/%s' % sabnzbd.version.__version__)
@@ -165,19 +167,20 @@ class URLGrabber(Thread):
misc.bad_fetch(future_nzo, clean_matrix_url(url), msg, retry=True)
continue
category = _MATRIX_MAP.get(category, category)
if del_bookmark:
# No retries of nzbmatrix bookmark removals
continue
else:
msg = ''
retry = True
if del_bookmark:
# No retries of nzbmatrix bookmark removals
continue
# Check if the filepath is specified, if not, check if a retry is allowed.
if not fn:
logging.info('Retry URL %s', url)
self.add(url, future_nzo, 5)
continue
fn, msg, retry, wait = _analyse_others(fn, url)
if not fn:
if retry:
logging.info('Retry URL %s', url)
self.add(url, future_nzo, wait)
else:
misc.bad_fetch(future_nzo, url, msg, retry=True)
continue
if not filename:
filename = os.path.basename(url) + '.nzb'
@@ -228,7 +231,8 @@ class URLGrabber(Thread):
#-------------------------------------------------------------------------------
_RE_NZBMATRIX = re.compile(r'nzbmatrix.com/(.*)[\?&]id=(\d+)', re.I)
_RE_NZBMATRIX = re.compile(r'nzbmatrix\.com/(.*)[\?&]id=(\d+)', re.I)
_RE_NZBXXX = re.compile(r'nzbxxx\.com/(.*)[\?&]id=(\d+)', re.I)
_RE_NZBMATRIX_USER = re.compile(r'&username=([^&=]+)', re.I)
_RE_NZBMATRIX_API = re.compile(r'&apikey=([^&=]+)', re.I)
@@ -237,22 +241,38 @@ def _matrix_url(url):
matrix_id = 0
m = _RE_NZBMATRIX.search(url)
if not m:
mx = _RE_NZBXXX.search(url)
if m:
site = 'nzbmatrix.com'
user = urllib.quote_plus(cfg.matrix_username())
key = urllib.quote_plus(cfg.matrix_apikey())
elif mx:
site = 'nzbxxx.com'
user = urllib.quote_plus(cfg.xxx_username())
key = urllib.quote_plus(cfg.xxx_apikey())
m = mx
if m:
matrix_id = m.group(2)
if not _RE_NZBMATRIX_USER.search(url) or not _RE_NZBMATRIX_API.search(url):
user = urllib.quote_plus(cfg.matrix_username())
key = urllib.quote_plus(cfg.matrix_apikey())
url = '%s://api.nzbmatrix.com/v1.1/download.php?id=%s&username=%s&apikey=%s' % \
(_PROTOCOL, matrix_id, user, key)
url = '%s://api.%s/v1.1/download.php?id=%s&username=%s&apikey=%s' % \
(_PROTOCOL, site, matrix_id, user, key)
return url, matrix_id
def clean_matrix_url(url):
''' Return nzbmatrix url without user credentials '''
site = 'nzbmatrix.com'
m = _RE_NZBMATRIX.search(url)
if not m:
m = _RE_NZBXXX.search(url)
site = 'nzbxxx.com'
if m:
matrix_id = m.group(2)
url = '%s://api.nzbmatrix.com/v1.1/download.php?id=%s' % (_PROTOCOL, matrix_id)
url = '%s://api.%s/v1.1/download.php?id=%s' % (_PROTOCOL, site, matrix_id)
return url
@@ -313,6 +333,50 @@ def _analyse_matrix(fn, matrix_id):
return fn, msg, False, 0
RUS_FATAL = ('DENIED_MISSING_CREDENTIALS', 'DENIED_NO_ACCOUNT',
'DENIED_INVALID_CREDENTIALS', 'INCORRECT_URL',
'NZB_DELETED', 'POST_NUKED', 'FILE_UNAVAILABLE'
)
RUS_15M = ('SQL_ERROR', 'SERVICE_OFFLINE')
RUS_60M = ('MAX_DOWNLOAD_REACHED_UPGRADE_TO_VIP', 'MAX_DOWNLOAD_REACHED')
def _analyse_others(fn, url):
""" Analyse respons of indexer
returns fn|None, error-message|None, retry, wait-seconds
"""
msg = ''
wait = 0
if not fn:
logging.debug('No response from indexer, retry after 60 sec')
return None, msg, True, 60
try:
f = open(fn, 'r')
data = f.read(100)
f.close()
except:
logging.debug('Problem with tempfile %s from indexer, retry after 60 sec', fn)
return None, msg, True, 60
# Check for an error response
if not data:
logging.debug('Received nothing from indexer, retry after 60 sec')
return None, msg, True, 60
if '.nzbsrus.' in url:
# Partial support for nzbsrus.com's API
if misc.match_str(data, RUS_FATAL):
logging.debug('nzbsrus says: %s, abort', data)
return None, data, False, 0
if misc.match_str(data, RUS_15M):
logging.debug('nzbsrus says: %s, wait 15m', data)
return None, data, True, 900
if misc.match_str(data, RUS_60M):
logging.debug('nzbsrus says: %s, wait 60m', data)
return None, data, True, 3600
return fn, msg, False, 0
#------------------------------------------------------------------------------
_MATRIX_MAP = {
'28' : 'anime.all',

View File

@@ -105,7 +105,7 @@ def test_nntp_server(host, port, server=None, username=None, password=None, ssl=
if not username or not password:
nw.nntp.sock.sendall('ARTICLE test\r\n')
nw.nntp.sock.sendall('ARTICLE test@home\r\n')
try:
nw.lines = []
nw.recv_chunk(block=True)