Compare commits

...

41 Commits
2.0.0 ... 2.0.x

Author SHA1 Message Date
Safihre
e69eeebdd8 Merge branch 'develop' - Update to 2.0.1 2017-05-24 12:14:56 +02:00
Safihre
be5bebb574 Update text files 2.0.1 - Nr2 2017-05-23 13:12:02 +02:00
Safihre
4ca2a7a65e Also match 'proof' when ignoring samples 2017-05-22 22:07:33 +02:00
Safihre
eed8c9bf50 Update text files for 2.0.1 2017-05-22 21:14:17 +02:00
Safihre
11d5855430 Always show Script box on Categories config page
Otherwise people might not be aware of it
2017-05-22 21:10:17 +02:00
Safihre
b13413b1e5 Only perform end-of-queue action when one is set 2017-05-22 10:38:52 +02:00
Safihre
9809474615 Remove cache from first Config page
It's a dynamic thing, not static like the Config. It can be observed live from the Status and Interface window.
2017-05-21 21:23:10 +02:00
Safihre
9ee3a61ae9 Convert HTML " in Repair confirmation 2017-05-21 21:05:12 +02:00
Safihre
c71ffa02f8 Remove ending \ in extraction path after long-path unrar retry
So, turns out that when not using the \\?\ notation, Unrar does not like the \ at the end of the path (which it does need otherwise). Linked #771
2017-05-21 13:53:38 +02:00
Safihre
2e862da292 Remember all unpack/repair info, no more overwrite
Keeps forgetting all the previous stages, no idea why that's usefull
2017-05-21 13:00:20 +02:00
Safihre
08d762c6c9 No longer try to verify using SFV and/or RAR-check when Par2 failed 2017-05-21 12:23:06 +02:00
Safihre
2ef6f9e0e7 Repair would be skipped if first par2-file was not downloaded 2017-05-20 19:14:04 +02:00
Safihre
b8f84cf18d Renames of QuickCheck were not saved if following files failed
Now we do as much as possible in QuickCheck before moving on, much faster then letting par2 do it
2017-05-20 15:52:36 +02:00
Safihre
7e88af7047 Small cleanup of par2repair code 2017-05-20 14:52:18 +02:00
Safihre
2fc365dd57 Update text-files for 2.0.1RC2 2017-05-20 11:45:59 +02:00
Jonathon Saine
434170862c Upgrade moment 2.10.6 -> 2.18.1 (inc locales). Corrected filename to reflect its minified.
> https://github.com/moment/moment/blob/develop/CHANGELOG.md
2017-05-20 09:51:18 +02:00
Safihre
1eb6c426fd Correctly handle already bound port with proper command-line message
Closes #921 
Closes #923
2017-05-20 00:03:57 +02:00
Safihre
e2c46d73e4 Remove unused panic message 2017-05-19 23:44:05 +02:00
Safihre
eef02ac7ce Properly handle Queue-finish-action in Glitter
Could get lost, now it sticks of first try. Closes #924
2017-05-19 23:27:20 +02:00
Safihre
0d9614755e Make DateJS bugfix more general for m/h/d etc notations 2017-05-19 23:07:42 +02:00
Safihre
aa0557656c Optional tag on dark theme not visible
Closes #905
2017-05-19 23:03:28 +02:00
Safihre
2c750f98cb Do not remove folder on re-use
This can cause issues on some file-systems, resulting in infinite loops: https://forums.sabnzbd.org/viewtopic.php?f=2&t=22637#p111875
2017-05-19 15:14:52 +02:00
Alishan Ladhani
82cf2b33cf Fix bug with DateJS
Fix DateJS bug where sometimes >12 minutes/hours/days converts into the wrong timestamp. Removing the space makes DateJS work properly.
2017-05-19 14:36:10 +02:00
Phil R
b9cfe0d6f0 URL Grabber crashes on unhandled socket exceptions
URL grabber handles `httplib.IncompleteRequest` exceptions.
This exception is not returned when the HTTP responses closes in the body, rather than the headers.
2017-05-19 13:57:33 +02:00
Safihre
a0166a4011 Correct command-line parameters 2017-04-21 15:53:24 +02:00
Safihre
c9f765813c Exit more cleanly when ports are occupied 2017-04-21 15:35:10 +02:00
Safihre
2f52590587 Update translations 2017-04-19 16:09:15 +02:00
Safihre
fd581fffa5 Prepare text-files for 2.0.1RC1 2017-04-19 15:58:43 +02:00
Safihre
fcdac1cb32 On retry, make sure we also do a check for failed recursive unpacks
Closes #900
2017-04-19 11:26:00 +02:00
Safihre
a824fa617b Proper messages in case of 7zip encryption 2017-04-19 11:05:24 +02:00
Safihre
1fd0c23e55 Apply overwrite_files() setting also to 7zip 2017-04-19 11:04:27 +02:00
Safihre
884d4ee91b Remove Special-switch prospective_par_download
It works, no need to disable anymore.

Possibly also fixes #903
2017-04-18 21:28:29 +02:00
Safihre
0c7d303568 Stop further Assembler processing after IOError 2017-04-18 21:15:49 +02:00
Safihre
a8ac8609d6 Revert "Don't use decoder for missing articles"
Turns out that it is really slow for some people

https://forums.sabnzbd.org/viewtopic.php?f=2&t=22592
2017-04-18 15:43:54 +02:00
Safihre
0d98a24c67 Only search for free port when SAB is started for first time
Closes #875. Removed 'fixed_ports' from Specials because now it's just an internal variable.
2017-04-18 13:56:21 +02:00
Safihre
31eeb5e539 Filter out tab-char (\t) for filenames on Windows
Closes #897
2017-04-18 13:29:46 +02:00
Safihre
82dacda359 Need to wait longer after restart is triggered in Config 2017-04-18 13:15:55 +02:00
Safihre
c3f82e49bf Log X-Forwarded-For in API calls and logins
Closes #884. But we don't overwrite the other found IP otherwise it might be used to remove correct logging.
2017-04-18 13:00:17 +02:00
Safihre
86a0e734b1 Avoid ZeroDivisionError in PP-script call
See #900
2017-04-18 09:00:17 +02:00
Safihre
934db752bf Restore Downloader-slowdown to more conservative value
More slowdown was causing problems for some users
2017-04-14 17:07:54 +02:00
Safihre
ed379da657 Update versioning file
On to 2.1.0!
2017-04-09 12:39:36 +02:00
57 changed files with 2215 additions and 2016 deletions

View File

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

View File

@@ -1,4 +1,4 @@
SABnzbd 2.0.0
SABnzbd 2.0.1
-------------------------------------------------------------------------------
0) LICENSE

View File

@@ -1,7 +1,7 @@
Metadata-Version: 1.0
Name: SABnzbd
Version: 2.0.0
Summary: SABnzbd-2.0.0
Version: 2.0.1
Summary: SABnzbd-2.0.1
Home-page: http://sabnzbd.org
Author: The SABnzbd Team
Author-email: team@sabnzbd.org

View File

@@ -1,57 +1,34 @@
Release Notes - SABnzbd 2.0.0
Release Notes - SABnzbd 2.0.1
=========================================================
## New in 2.0.0: SABYenc
- To improve SABnzbd's performance on systems where CPU power is limiting
download speed, we developed a new C-module called SABYenc to accelerate the
decoding of usenet articles that can use multiple threads and is more efficient.
Not only low-powered systems like NAS's or Raspberry Pi's benefit, with this
new module speeds can increase up to 2x compared to 1.x.x releases on any
system where the connection/newsserver capacity was not fully used.
The Windows and macOS releases automatically include this module, for other
platforms an installation guide can be found here: https://sabnzbd.org/sabyenc
## Changes since 2.0.0
- No longer change ports if the configured port is not available during startup.
- 'Proof' files also ignored when Ignore Samples is enabled.
- Redundant SFV and RAR checks no longer performed if par2 verification failed.
- More repair/unpack info is retained in the History information.
- Windows: remove option to start SABnzbd from installer, it would start the
program as administrator.
## Changes/improvements in 2.0.0:
- Windows and macOS releases now also come in 64bit versions.
The installers will install the appropriate version automatically.
Therefore, on 64bit Windows the installation directory will change to
'Program Files' instead of 'Program Files (x86)'.
On Windows our tests showed an additional 5-10% gain in download speed
when using 64bit SABnzbd on 64bit Windows.
- Linux: Detect if Multicore Par2 is installed.
Multicore Par2 is now easily available through the PPA and other channels:
https://sabnzbd.org/wiki/installation/multicore-par2
- Post-processing scripts now get additional job information via SAB environment
variables. https://sabnzbd.org/wiki/scripts/post-processing-scripts
- Certificate Validation set to 'Strict' for newly added newsservers
The insecure Certificate Verification level 'Default' is now called 'Minimal'.
In case of problems, see: https://sabnzbd.org/certificate-errors
- Removed Secondary Web Interface option.
## Bugfixes since 2.0.0
- Some users experienced slower download speeds.
- Revert changes to handling of missing articles introduced in 2.0.0 that
turned out to be slow for some users.
- Missing first par2-file would cause repair to be skipped.
- Better handling of 7zip unpacking.
- Log X-Forwarded-For of API calls and logins.
- Handle more URLGrabber exceptions.
- Command-line parameters were not listed correctly.
- Queue-finish-action picker in Glitter more stable.
- Custom Pause interpreter in Glitter more reliable.
- Pre-check would fail if download was on SMBv3 share.
- Windows: NZB-icon association lost sometimes.
- Windows: Unrar could fail on some archives containing very long paths.
## Smaller changes/improvements in 2.0.0
- Schedule items can now be enabled and disabled
- HTTP-redirects in interface are now relative URL's
- Moved some lesser used settings to Config->Specials
- Cache usage is now updated continuously in the Status Window
- On macOS SABnzbd was set to have low IO-priority, this is now set to normal
- Previously set password is now shown on Retry
- Remove listquote module dependency
- Warn if Complete folder is on FAT filesystem (4GB size limit)
## Bug fixes in 2.0.0
- Malformed articles could break the Downloader
- Unexpected characters in CRC part of an article could crash the Decoder
- Retry ADMIN-data saving 3x before giving error
- Checking for encryption during downloading could fail
- QuickCheck could crash when renaming already renamed files
- `skip_dashboard` set to 1 by default in `fullstatus` API-call
- Top-only switch now really only downloads top job
- Unblock Server button did not work
- par2cmdline would fail to repair jobs with split posts (.001, etc)
- Fixed QuickCheck renaming issues
- Show warning if job is paused because it appears cloaked
- Linux: Warn in case encoding is not set to UTF-8
- Windows: Incomplete folders would sometimes end in a dot
## Upgrading from 0.7.x and older
- Finish queue
- Stop SABnzbd
- Install new version
- Start SABnzbd
## Upgrade notices
- Windows: When starting the Post-Processing script, the path to the job folder
@@ -60,18 +37,9 @@ Release Notes - SABnzbd 2.0.0
- Schedule items are converted when upgrading to 2.x.x and will break when
reverted back to pre-2.x.x releases.
- The organization of the download queue is different from 0.7.x releases.
So 2.x.x will not see the existing queue, but you can go to Status->QueueRepair
So 2.x.x will not see the existing queue, but you can go to Status->Queue Repair
and "Repair" the old queue.
## Upgrading from 0.7.x and older
- Finish queue
- Stop SABnzbd
- Install new version
- Start SABnzbd
## IMPORTANT INFORMATION about release 2.x.x
<https://sabnzbd.org/wiki/new-features-and-changes>
## Known problems and solutions
- Read the file "ISSUES.txt"

View File

@@ -91,7 +91,7 @@ from sabnzbd.misc import real_path, \
split_host, get_ext, create_https_certificates, \
windows_variant, ip_extract, set_serv_parms, get_serv_parms, globber_full
from sabnzbd.panic import panic_tmpl, panic_port, panic_host, panic_fwall, \
panic_sqlite, panic, launch_a_browser, panic_xport
panic_sqlite, panic, launch_a_browser
import sabnzbd.scheduler as scheduler
import sabnzbd.config as config
import sabnzbd.cfg
@@ -184,7 +184,6 @@ def print_help():
print " -f --config-file <ini> Location of config file"
print " -s --server <srv:port> Listen on server:port [*]"
print " -t --templates <templ> Template directory [*]"
print " -2 --template2 <templ> Secondary template dir [*]"
print
print " -l --logging <0..2> Set logging level (-1=off, 0= least, 2= most) [*]"
print " -w --weblogging Enable cherrypy access logging"
@@ -197,7 +196,6 @@ def print_help():
print " --pid <path> Create a PID file in the given folder (full path)"
print " --pidfile <path> Create a PID file with the given name (full path)"
print
print " --force Discard web-port timeout (see Wiki!)"
print " -h --help Print this message"
print " -v --version Print version information"
print " -c --clean Remove queue, cache and logs"
@@ -206,6 +204,7 @@ def print_help():
print " --repair-all Try to reconstruct the queue from the incomplete folder"
print " with full data reconstruction"
print " --https <port> Port to use for HTTPS server"
print " --no-login Start with username and password reset"
print " --log-all Log all article handling (for developers)"
print " --console Force console logging for OSX app"
print " --new Run a new instance of SABnzbd"
@@ -256,9 +255,7 @@ def Bail_Out(browserhost, cherryport, err=''):
""" Abort program because of CherryPy troubles """
logging.error(T('Failed to start web-interface') + ' : ' + str(err))
if not sabnzbd.DAEMON:
if '13' in err:
panic_xport(browserhost, cherryport)
elif '49' in err:
if '49' in err:
panic_host(browserhost, cherryport)
else:
panic_port(browserhost, cherryport)
@@ -844,7 +841,6 @@ def main():
web_dir = None
vista_plus = False
vista64 = False
force_web = False
repair = 0
api_url = None
no_login = False
@@ -903,9 +899,6 @@ def main():
exit_sab(0)
elif opt in ('-p', '--pause'):
pause = True
elif opt in ('--force',):
force_web = True
sabnzbd.RESTART_ARGS.append(opt)
elif opt in ('--https',):
https_port = int(arg)
sabnzbd.RESTART_ARGS.append(opt)
@@ -1023,13 +1016,13 @@ def main():
if sabnzbd.DAEMON:
if enable_https and https_port:
try:
cherrypy.process.servers.check_port(cherryhost, https_port, timeout=0.025)
cherrypy.process.servers.check_port(cherryhost, https_port, timeout=0.05)
except IOError, error:
Bail_Out(browserhost, cherryport)
except:
Bail_Out(browserhost, cherryport, '49')
try:
cherrypy.process.servers.check_port(cherryhost, cherryport, timeout=0.025)
cherrypy.process.servers.check_port(cherryhost, cherryport, timeout=0.05)
except IOError, error:
Bail_Out(browserhost, cherryport)
except:
@@ -1042,58 +1035,62 @@ def main():
if url and check_for_sabnzbd(url, upload_nzbs, autobrowser):
exit_sab(0)
# If an instance of sabnzbd(same version) is already running on this port, launch the browser
# If another program or sabnzbd version is on this port, try 10 other ports going up in a step of 5
# If 'Port is not bound' (firewall) do not do anything (let the script further down deal with that).
notify_port_change = False
# SSL
if enable_https:
port = https_port or cherryport
try:
cherrypy.process.servers.check_port(browserhost, port, timeout=0.025)
cherrypy.process.servers.check_port(browserhost, port, timeout=0.05)
except IOError, error:
if str(error) == 'Port not bound.':
pass
else:
if not url:
url = 'https://%s:%s/sabnzbd/api?' % (browserhost, port)
if not sabnzbd.cfg.fixed_ports():
if new_instance or not check_for_sabnzbd(url, upload_nzbs, autobrowser):
newport = find_free_port(browserhost, port)
if newport > 0:
notify_port_change = True
# Save the new port
if https_port:
https_port = newport
sabnzbd.cfg.https_port.set(newport)
else:
# In case HTTPS == HTTP port
http_port = newport
sabnzbd.cfg.port.set(newport)
if new_instance or not check_for_sabnzbd(url, upload_nzbs, autobrowser):
# Bail out if we have fixed our ports after first start-up
if sabnzbd.cfg.fixed_ports():
Bail_Out(browserhost, cherryport)
# Find free port to bind
newport = find_free_port(browserhost, port)
if newport > 0:
# Save the new port
if https_port:
https_port = newport
sabnzbd.cfg.https_port.set(newport)
else:
# In case HTTPS == HTTP port
http_port = newport
sabnzbd.cfg.port.set(newport)
except:
# Something else wrong, probably badly specified host
Bail_Out(browserhost, cherryport, '49')
# NonSSL check if there's no HTTPS or we only use 1 port
if not (enable_https and not https_port):
try:
cherrypy.process.servers.check_port(browserhost, cherryport, timeout=0.025)
cherrypy.process.servers.check_port(browserhost, cherryport, timeout=0.05)
except IOError, error:
if str(error) == 'Port not bound.':
pass
else:
if not url:
url = 'http://%s:%s/sabnzbd/api?' % (browserhost, cherryport)
if not sabnzbd.cfg.fixed_ports():
if new_instance or not check_for_sabnzbd(url, upload_nzbs, autobrowser):
port = find_free_port(browserhost, cherryport)
if port > 0:
sabnzbd.cfg.cherryport.set(port)
notify_port_change = True
cherryport = port
if new_instance or not check_for_sabnzbd(url, upload_nzbs, autobrowser):
# Bail out if we have fixed our ports after first start-up
if sabnzbd.cfg.fixed_ports():
Bail_Out(browserhost, cherryport)
# Find free port to bind
port = find_free_port(browserhost, cherryport)
if port > 0:
sabnzbd.cfg.cherryport.set(port)
cherryport = port
except:
# Something else wrong, probably badly specified host
Bail_Out(browserhost, cherryport, '49')
# We found a port, now we never check again
sabnzbd.cfg.fixed_ports.set(True)
if logging_level is None:
logging_level = sabnzbd.cfg.log_level()
else:
@@ -1386,10 +1383,6 @@ def main():
# Set authentication for CherryPy
sabnzbd.interface.set_auth(cherrypy.config)
# Notify if port was changed
if notify_port_change:
logging.warning(T('Could not bind to configured port. Port changed to %s') % cherryport)
logging.info('Starting web-interface on %s:%s', cherryhost, cherryport)
sabnzbd.cfg.log_level.callback(guard_loglevel)

View File

@@ -19,10 +19,6 @@
<th scope="row">$T('confgFile'): </th>
<td>$configfn</td>
</tr>
<tr>
<th scope="row">$T('cache').capitalize(): </th>
<td><!--#set $msg=$T('ft-buffer@2')%($cache_art, $cache_size)#-->$msg</td>
</tr>
<tr>
<th scope="row">$T('parameters'): </th>
<td>$cmdline</td>

View File

@@ -17,9 +17,7 @@
<th>$T('category')</th>
<th>$T('priority')</th>
<th>$T('mode')</th>
<!--#if $scripts#-->
<th>$T('script')</th>
<!--#end if#-->
<th>$T('catFolderPath')</th>
<th colspan="2">$T('catTags')</th>
</tr>
@@ -61,8 +59,8 @@
<option value="3" <!--#if $slot.pp=="3" then 'selected="selected"' else ""#-->>$T('pp-delete')</option>
</select>
</td>
<!--#if $scripts#-->
<td>
<!--#if $scripts#-->
<select name="script">
<!--#for $sc in $scripts#-->
<!--#if not ($sc == 'Default' and $slot.name == '*')#-->
@@ -70,8 +68,12 @@
<!--#end if#-->
<!--#end for#-->
</select>
<!--#else#-->
<select name="script" disabled>
</select>
<!--#end if#-->
</td>
<!--#end if#-->
<td class="nowrap">
<input type="text" name="dir" class="fileBrowserSmall" value="$slot.dir" size="20" data-initialdir="$defdir" data-title="$T('catFolderPath')" title="$T('explain-catTags2')" />
</td>

View File

@@ -265,6 +265,11 @@ function do_restart() {
// Now we try untill we can connect
var refreshInterval = setInterval(function() {
// We skip the first one
if(failureCounter == 0) {
failureCounter = failureCounter+1;
return
}
$.ajax({ url: urlTotal,
success: function() {
// Back to base

View File

@@ -101,7 +101,7 @@
<li class="divider"></li>
<li class="dropdown-header"><span class="glyphicon glyphicon-off"></span> $T('Glitter-onFinish'):</li>
<li>
<select data-bind="value: onQueueFinish" class="form-control">
<select data-bind="value: onQueueFinish, event: { change: setOnQueueFinish }" class="form-control">
<option value=""></option>
<optgroup label="$T('eoq-actions')">
<option value="shutdown_program">$T('shutdownSab')</option>
@@ -111,9 +111,11 @@
<option value="hibernate_pc">$T('hibernatePc')</option>
<!--#end if#-->
</optgroup>
<optgroup label="$T('eoq-scripts')">
<optgroup label="$T('eoq-scripts')" data-bind="visible: queue.scriptsList().length > 1">
<!-- ko foreach: queue.scriptsList -->
<option data-bind="text: \$data, attr: { value: 'script_'+\$data } " ></option>
<!-- ko if: \$data != glitterTranslate.noneText -->
<option data-bind="text: \$data, attr: { value: 'script_'+\$data } " ></option>
<!-- /ko -->
<!-- /ko -->
</optgroup>
</select>

View File

@@ -184,7 +184,7 @@
<div class="col-sm-6">$T('swtag-server')</div>
<div class="col-sm-6">
<span data-bind="text: servername"></span>
<span class="label label-default" data-bind="visible: serveroptional">$T('optional').capitalize()</span>
<span class="label label-warning" data-bind="visible: serveroptional">$T('optional').capitalize()</span>
</div>
</div>
<div class="row">

View File

@@ -59,7 +59,7 @@
glitterTranslate.minutes = "$T('mins')"
glitterTranslate.shutdown = "$T('shutdownOK?')";
glitterTranslate.restart = "$T('explain-Restart')".replace(/<br \/>/g, "\n");
glitterTranslate.repair = "$T('explain-Repair')".replace(/<br \/>/g, "\n");
glitterTranslate.repair = "$T('explain-Repair')".replace(/<br \/>/g, "\n").replace(/&quot;/g,'"');
glitterTranslate.removeDown = "$T('Glitter-confirmClearDownloads')";
glitterTranslate.removeDow1 = "$T('Glitter-confirmClear1Download')";
glitterTranslate.encrypted = "$T('Glitter-encrypted')";
@@ -125,7 +125,7 @@
<!--#include raw $webdir + "/static/javascripts/jquery.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/jquery-ui.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/jquery.peity.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/moment.js"#-->
<!--#include raw $webdir + "/static/javascripts/moment.min.js"#-->
<!--#include raw $webdir + "/static/javascripts/knockout-latest.js"#-->
<!--#include raw $webdir + "/static/javascripts/knockout-extensions.js"#-->
<!--#include raw $webdir + "/static/bootstrap/js/bootstrap.min.js"#-->

View File

@@ -471,6 +471,12 @@ function ViewModel() {
return;
}
// Fix DateJS bug it has some strange problem with the current day-of-month + 1
// Removing the space makes DateJS work properly
newValue = newValue.replace(/\s*h|\s*m|\s*d/g, function(match) {
return match.trim()
});
// Parse
var pauseParsed = Date.parse(newValue);
@@ -593,7 +599,7 @@ function ViewModel() {
}
// Shutdown options
self.onQueueFinish.subscribe(function(newValue) {
self.setOnQueueFinish = function(model, event) {
// Ignore updates before the page is done
if(!self.hasStatusInfo()) return;
@@ -601,9 +607,12 @@ function ViewModel() {
callAPI({
mode: 'queue',
name: 'change_complete_action',
value: newValue
value: $(event.target).val()
})
})
// Top stop blinking while the API is calling
self.onQueueFinish($(event.target).val())
}
// Use global settings or device-specific?
self.useGlobalOptions.subscribe(function(newValue) {

View File

File diff suppressed because one or more lines are too long

View File

File diff suppressed because one or more lines are too long

View File

@@ -1,59 +1,60 @@
//! moment.js locale configuration
//! locale : danish (da)
//! locale : Danish [da]
//! author : Ulrik Nielsen : https://github.com/mrbase
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var da = moment.defineLocale('da', {
months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY HH:mm',
LLLL : 'dddd [d.] D. MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[I dag kl.] LT',
nextDay : '[I morgen kl.] LT',
nextWeek : 'dddd [kl.] LT',
lastDay : '[I går kl.] LT',
lastWeek : '[sidste] dddd [kl] LT',
sameElse : 'L'
},
relativeTime : {
future : 'om %s',
past : '%s siden',
s : 'få sekunder',
m : 'et minut',
mm : '%d minutter',
h : 'en time',
hh : '%d timer',
d : 'en dag',
dd : '%d dage',
M : 'en måned',
MM : '%d måneder',
y : 'et år',
yy : '%d år'
},
ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
var da = moment.defineLocale('da', {
months : 'januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
weekdaysShort : 'søn_man_tir_ons_tor_fre_lør'.split('_'),
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY HH:mm',
LLLL : 'dddd [d.] D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
sameDay : '[i dag kl.] LT',
nextDay : '[i morgen kl.] LT',
nextWeek : 'dddd [kl.] LT',
lastDay : '[i går kl.] LT',
lastWeek : '[i] dddd[s kl.] LT',
sameElse : 'L'
},
relativeTime : {
future : 'om %s',
past : '%s siden',
s : 'få sekunder',
m : 'et minut',
mm : '%d minutter',
h : 'en time',
hh : '%d timer',
d : 'en dag',
dd : '%d dage',
M : 'en måned',
MM : '%d måneder',
y : 'et år',
yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return da;
return da;
}));
})));

View File

@@ -1,74 +1,78 @@
//! moment.js locale configuration
//! locale : german (de)
//! locale : German [de]
//! author : lluchs : https://github.com/lluchs
//! author: Menelion Elensúle: https://github.com/Oire
//! author : Mikolaj Dadela : https://github.com/mik01aj
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
'h': ['eine Stunde', 'einer Stunde'],
'd': ['ein Tag', 'einem Tag'],
'dd': [number + ' Tage', number + ' Tagen'],
'M': ['ein Monat', 'einem Monat'],
'MM': [number + ' Monate', number + ' Monaten'],
'y': ['ein Jahr', 'einem Jahr'],
'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];
function processRelativeTime(number, withoutSuffix, key, isFuture) {
var format = {
'm': ['eine Minute', 'einer Minute'],
'h': ['eine Stunde', 'einer Stunde'],
'd': ['ein Tag', 'einem Tag'],
'dd': [number + ' Tage', number + ' Tagen'],
'M': ['ein Monat', 'einem Monat'],
'MM': [number + ' Monate', number + ' Monaten'],
'y': ['ein Jahr', 'einem Jahr'],
'yy': [number + ' Jahre', number + ' Jahren']
};
return withoutSuffix ? format[key][0] : format[key][1];
}
var de = moment.defineLocale('de', {
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
monthsParseExact : true,
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY HH:mm',
LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[heute um] LT [Uhr]',
sameElse: 'L',
nextDay: '[morgen um] LT [Uhr]',
nextWeek: 'dddd [um] LT [Uhr]',
lastDay: '[gestern um] LT [Uhr]',
lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sekunden',
m : processRelativeTime,
mm : '%d Minuten',
h : processRelativeTime,
hh : '%d Stunden',
d : processRelativeTime,
dd : processRelativeTime,
M : processRelativeTime,
MM : processRelativeTime,
y : processRelativeTime,
yy : processRelativeTime
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
var de = moment.defineLocale('de', {
months : 'Januar_Februar_März_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember'.split('_'),
monthsShort : 'Jan._Febr._Mrz._Apr._Mai_Jun._Jul._Aug._Sept._Okt._Nov._Dez.'.split('_'),
weekdays : 'Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag'.split('_'),
weekdaysShort : 'So._Mo._Di._Mi._Do._Fr._Sa.'.split('_'),
weekdaysMin : 'So_Mo_Di_Mi_Do_Fr_Sa'.split('_'),
longDateFormat : {
LT: 'HH:mm',
LTS: 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY HH:mm',
LLLL : 'dddd, D. MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Heute um] LT [Uhr]',
sameElse: 'L',
nextDay: '[Morgen um] LT [Uhr]',
nextWeek: 'dddd [um] LT [Uhr]',
lastDay: '[Gestern um] LT [Uhr]',
lastWeek: '[letzten] dddd [um] LT [Uhr]'
},
relativeTime : {
future : 'in %s',
past : 'vor %s',
s : 'ein paar Sekunden',
m : processRelativeTime,
mm : '%d Minuten',
h : processRelativeTime,
hh : '%d Stunden',
d : processRelativeTime,
dd : processRelativeTime,
M : processRelativeTime,
MM : processRelativeTime,
y : processRelativeTime,
yy : processRelativeTime
},
ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return de;
return de;
}));
})));

View File

@@ -1,78 +1,83 @@
//! moment.js locale configuration
//! locale : spanish (es)
//! locale : Spanish [es]
//! author : Julio Napurí : https://github.com/julionc
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var monthsShortDot = 'Ene._Feb._Mar._Abr._May._Jun._Jul._Ago._Sep._Oct._Nov._Dic.'.split('_'),
monthsShort = 'Ene_Feb_Mar_Abr_May_Jun_Jul_Ago_Sep_Oct_Nov_Dic'.split('_');
var monthsShortDot = 'ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.'.split('_');
var monthsShort = 'ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic'.split('_');
var es = moment.defineLocale('es', {
months : 'Enero_Febrero_Marzo_Abril_Mayo_Junio_Julio_Agosto_Septiembre_Octubre_Noviembre_Diciembre'.split('_'),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
return monthsShort[m.month()];
} else {
return monthsShortDot[m.month()];
}
},
weekdays : 'Domingo_Lunes_Martes_Miércoles_Jueves_Viernes_Sábado'.split('_'),
weekdaysShort : 'Dom._Lun._Mar._Mié._Jue._Vie._Sáb.'.split('_'),
weekdaysMin : 'Do_Lu_Ma_Mi_Ju_Vi_Sá'.split('_'),
longDateFormat : {
LT : 'H:mm',
LTS : 'H:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY H:mm',
LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
},
calendar : {
sameDay : function () {
return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
nextDay : function () {
return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
nextWeek : function () {
return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
lastDay : function () {
return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
lastWeek : function () {
return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
sameElse : 'L'
},
relativeTime : {
future : 'en %s',
past : 'hace %s',
s : 'unos segundos',
m : 'un minuto',
mm : '%d minutos',
h : 'una hora',
hh : '%d horas',
d : 'un día',
dd : '%d días',
M : 'un mes',
MM : '%d meses',
y : 'un año',
yy : '%d años'
},
ordinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
var es = moment.defineLocale('es', {
months : 'enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre'.split('_'),
monthsShort : function (m, format) {
if (!m) {
return monthsShortDot;
} else if (/-MMM-/.test(format)) {
return monthsShort[m.month()];
} else {
return monthsShortDot[m.month()];
}
});
},
monthsParseExact : true,
weekdays : 'domingo_lunes_martes_miércoles_jueves_viernes_sábado'.split('_'),
weekdaysShort : 'dom._lun._mar._mié._jue._vie._sáb.'.split('_'),
weekdaysMin : 'do_lu_ma_mi_ju_vi_sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'H:mm',
LTS : 'H:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY H:mm',
LLLL : 'dddd, D [de] MMMM [de] YYYY H:mm'
},
calendar : {
sameDay : function () {
return '[hoy a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
nextDay : function () {
return '[mañana a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
nextWeek : function () {
return 'dddd [a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
lastDay : function () {
return '[ayer a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
lastWeek : function () {
return '[el] dddd [pasado a la' + ((this.hours() !== 1) ? 's' : '') + '] LT';
},
sameElse : 'L'
},
relativeTime : {
future : 'en %s',
past : 'hace %s',
s : 'unos segundos',
m : 'un minuto',
mm : '%d minutos',
h : 'una hora',
hh : '%d horas',
d : 'un día',
dd : '%d días',
M : 'un mes',
MM : '%d meses',
y : 'un año',
yy : '%d años'
},
dayOfMonthOrdinalParse : /\d{1,2}º/,
ordinal : '%dº',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return es;
return es;
}));
})));

View File

@@ -1,22 +1,23 @@
//! moment.js locale configuration
//! locale : finnish (fi)
//! locale : Finnish [fi]
//! author : Tarmo Aidantausta : https://github.com/bleadof
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' '),
numbersFuture = [
'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
numbersPast[7], numbersPast[8], numbersPast[9]
];
function translate(number, withoutSuffix, key, isFuture) {
var result = '';
switch (key) {
var numbersPast = 'nolla yksi kaksi kolme neljä viisi kuusi seitsemän kahdeksan yhdeksän'.split(' ');
var numbersFuture = [
'nolla', 'yhden', 'kahden', 'kolmen', 'neljän', 'viiden', 'kuuden',
numbersPast[7], numbersPast[8], numbersPast[9]
];
function translate(number, withoutSuffix, key, isFuture) {
var result = '';
switch (key) {
case 's':
return isFuture ? 'muutaman sekunnin' : 'muutama sekunti';
case 'm':
@@ -44,63 +45,63 @@
case 'yy':
result = isFuture ? 'vuoden' : 'vuotta';
break;
}
result = verbalNumber(number, isFuture) + ' ' + result;
return result;
}
function verbalNumber(number, isFuture) {
return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
result = verbalNumber(number, isFuture) + ' ' + result;
return result;
}
function verbalNumber(number, isFuture) {
return number < 10 ? (isFuture ? numbersFuture[number] : numbersPast[number]) : number;
}
var fi = moment.defineLocale('fi', {
months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
longDateFormat : {
LT : 'HH.mm',
LTS : 'HH.mm.ss',
L : 'DD.MM.YYYY',
LL : 'Do MMMM[ta] YYYY',
LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
l : 'D.M.YYYY',
ll : 'Do MMM YYYY',
lll : 'Do MMM YYYY, [klo] HH.mm',
llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
},
calendar : {
sameDay : '[tänään] [klo] LT',
nextDay : '[huomenna] [klo] LT',
nextWeek : 'dddd [klo] LT',
lastDay : '[eilen] [klo] LT',
lastWeek : '[viime] dddd[na] [klo] LT',
sameElse : 'L'
},
relativeTime : {
future : '%s päästä',
past : '%s sitten',
s : translate,
m : translate,
mm : translate,
h : translate,
hh : translate,
d : translate,
dd : translate,
M : translate,
MM : translate,
y : translate,
yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
var fi = moment.defineLocale('fi', {
months : 'tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kesäkuu_heinäkuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu'.split('_'),
monthsShort : 'tammi_helmi_maalis_huhti_touko_kesä_heinä_elo_syys_loka_marras_joulu'.split('_'),
weekdays : 'sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai'.split('_'),
weekdaysShort : 'su_ma_ti_ke_to_pe_la'.split('_'),
weekdaysMin : 'su_ma_ti_ke_to_pe_la'.split('_'),
longDateFormat : {
LT : 'HH.mm',
LTS : 'HH.mm.ss',
L : 'DD.MM.YYYY',
LL : 'Do MMMM[ta] YYYY',
LLL : 'Do MMMM[ta] YYYY, [klo] HH.mm',
LLLL : 'dddd, Do MMMM[ta] YYYY, [klo] HH.mm',
l : 'D.M.YYYY',
ll : 'Do MMM YYYY',
lll : 'Do MMM YYYY, [klo] HH.mm',
llll : 'ddd, Do MMM YYYY, [klo] HH.mm'
},
calendar : {
sameDay : '[tänään] [klo] LT',
nextDay : '[huomenna] [klo] LT',
nextWeek : 'dddd [klo] LT',
lastDay : '[eilen] [klo] LT',
lastWeek : '[viime] dddd[na] [klo] LT',
sameElse : 'L'
},
relativeTime : {
future : '%s päästä',
past : '%s sitten',
s : translate,
m : translate,
mm : translate,
h : translate,
hh : translate,
d : translate,
dd : translate,
M : translate,
MM : translate,
y : translate,
yy : translate
},
ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return fi;
return fi;
}));
})));

View File

@@ -1,61 +1,83 @@
//! moment.js locale configuration
//! locale : french (fr)
//! locale : French [fr]
//! author : John Fischer : https://github.com/jfroffice
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var fr = moment.defineLocale('fr', {
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Aujourd\'hui à] LT',
nextDay: '[Demain à] LT',
nextWeek: 'dddd [à] LT',
lastDay: '[Hier à] LT',
lastWeek: 'dddd [dernier à] LT',
sameElse: 'L'
},
relativeTime : {
future : 'dans %s',
past : 'il y a %s',
s : 'quelques secondes',
m : 'une minute',
mm : '%d minutes',
h : 'une heure',
hh : '%d heures',
d : 'un jour',
dd : '%d jours',
M : 'un mois',
MM : '%d mois',
y : 'un an',
yy : '%d ans'
},
ordinalParse: /\d{1,2}(er|)/,
ordinal : function (number) {
return number + (number === 1 ? 'er' : '');
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
var fr = moment.defineLocale('fr', {
months : 'janvier_février_mars_avril_mai_juin_juillet_août_septembre_octobre_novembre_décembre'.split('_'),
monthsShort : 'janv._févr._mars_avr._mai_juin_juil._août_sept._oct._nov._déc.'.split('_'),
monthsParseExact : true,
weekdays : 'dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi'.split('_'),
weekdaysShort : 'dim._lun._mar._mer._jeu._ven._sam.'.split('_'),
weekdaysMin : 'Di_Lu_Ma_Me_Je_Ve_Sa'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay : '[Aujourdhui à] LT',
nextDay : '[Demain à] LT',
nextWeek : 'dddd [à] LT',
lastDay : '[Hier à] LT',
lastWeek : 'dddd [dernier à] LT',
sameElse : 'L'
},
relativeTime : {
future : 'dans %s',
past : 'il y a %s',
s : 'quelques secondes',
m : 'une minute',
mm : '%d minutes',
h : 'une heure',
hh : '%d heures',
d : 'un jour',
dd : '%d jours',
M : 'un mois',
MM : '%d mois',
y : 'un an',
yy : '%d ans'
},
dayOfMonthOrdinalParse: /\d{1,2}(er|)/,
ordinal : function (number, period) {
switch (period) {
// TODO: Return 'e' when day of month > 1. Move this case inside
// block for masculine words below.
// See https://github.com/moment/moment/issues/3375
case 'D':
return number + (number === 1 ? 'er' : '');
// Words with masculine grammatical gender: mois, trimestre, jour
default:
case 'M':
case 'Q':
case 'DDD':
case 'd':
return number + (number === 1 ? 'er' : 'e');
// Words with feminine grammatical gender: semaine
case 'w':
case 'W':
return number + (number === 1 ? 're' : 'e');
}
});
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return fr;
return fr;
}));
})));

View File

@@ -1,60 +1,63 @@
//! moment.js locale configuration
//! locale : norwegian bokmål (nb)
//! locale : Norwegian Bokmål [nb]
//! authors : Espen Hovlandsdal : https://github.com/rexxars
//! Sigurd Gartmann : https://github.com/sigurdga
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var nb = moment.defineLocale('nb', {
months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des'.split('_'),
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
weekdaysShort : 'søn_man_tirs_ons_tors_fre_lør'.split('_'),
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
longDateFormat : {
LT : 'H.mm',
LTS : 'H.mm.ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY [kl.] H.mm',
LLLL : 'dddd D. MMMM YYYY [kl.] H.mm'
},
calendar : {
sameDay: '[i dag kl.] LT',
nextDay: '[i morgen kl.] LT',
nextWeek: 'dddd [kl.] LT',
lastDay: '[i går kl.] LT',
lastWeek: '[forrige] dddd [kl.] LT',
sameElse: 'L'
},
relativeTime : {
future : 'om %s',
past : 'for %s siden',
s : 'noen sekunder',
m : 'ett minutt',
mm : '%d minutter',
h : 'en time',
hh : '%d timer',
d : 'en dag',
dd : '%d dager',
M : 'en måned',
MM : '%d måneder',
y : 'ett år',
yy : '%d år'
},
ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
var nb = moment.defineLocale('nb', {
months : 'januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember'.split('_'),
monthsShort : 'jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.'.split('_'),
monthsParseExact : true,
weekdays : 'søndag_mandag_tirsdag_onsdag_torsdag_fredag_lørdag'.split('_'),
weekdaysShort : 'sø._ma._ti._on._to._fr._lø.'.split('_'),
weekdaysMin : 'sø_ma_ti_on_to_fr_lø'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D. MMMM YYYY',
LLL : 'D. MMMM YYYY [kl.] HH:mm',
LLLL : 'dddd D. MMMM YYYY [kl.] HH:mm'
},
calendar : {
sameDay: '[i dag kl.] LT',
nextDay: '[i morgen kl.] LT',
nextWeek: 'dddd [kl.] LT',
lastDay: '[i går kl.] LT',
lastWeek: '[forrige] dddd [kl.] LT',
sameElse: 'L'
},
relativeTime : {
future : 'om %s',
past : '%s siden',
s : 'noen sekunder',
m : 'ett minutt',
mm : '%d minutter',
h : 'en time',
hh : '%d timer',
d : 'en dag',
dd : '%d dager',
M : 'en måned',
MM : '%d måneder',
y : 'ett år',
yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return nb;
return nb;
}));
})));

View File

@@ -1,70 +1,88 @@
//! moment.js locale configuration
//! locale : dutch (nl)
//! author : Joris Röling : https://github.com/jjupiter
//! locale : Dutch [nl]
//! author : Joris Röling : https://github.com/jorisroling
//! author : Jacob Middag : https://github.com/middagj
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_'),
monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
var monthsShortWithDots = 'jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.'.split('_');
var monthsShortWithoutDots = 'jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec'.split('_');
var nl = moment.defineLocale('nl', {
months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
monthsShort : function (m, format) {
if (/-MMM-/.test(format)) {
return monthsShortWithoutDots[m.month()];
} else {
return monthsShortWithDots[m.month()];
}
},
weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD-MM-YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[vandaag om] LT',
nextDay: '[morgen om] LT',
nextWeek: 'dddd [om] LT',
lastDay: '[gisteren om] LT',
lastWeek: '[afgelopen] dddd [om] LT',
sameElse: 'L'
},
relativeTime : {
future : 'over %s',
past : '%s geleden',
s : 'een paar seconden',
m : 'één minuut',
mm : '%d minuten',
h : 'één uur',
hh : '%d uur',
d : 'één dag',
dd : '%d dagen',
M : 'één maand',
MM : '%d maanden',
y : 'één jaar',
yy : '%d jaar'
},
ordinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
var monthsParse = [/^jan/i, /^feb/i, /^maart|mrt.?$/i, /^apr/i, /^mei$/i, /^jun[i.]?$/i, /^jul[i.]?$/i, /^aug/i, /^sep/i, /^okt/i, /^nov/i, /^dec/i];
var monthsRegex = /^(januari|februari|maart|april|mei|april|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;
var nl = moment.defineLocale('nl', {
months : 'januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december'.split('_'),
monthsShort : function (m, format) {
if (!m) {
return monthsShortWithDots;
} else if (/-MMM-/.test(format)) {
return monthsShortWithoutDots[m.month()];
} else {
return monthsShortWithDots[m.month()];
}
});
},
return nl;
monthsRegex: monthsRegex,
monthsShortRegex: monthsRegex,
monthsStrictRegex: /^(januari|februari|maart|mei|ju[nl]i|april|augustus|september|oktober|november|december)/i,
monthsShortStrictRegex: /^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,
}));
monthsParse : monthsParse,
longMonthsParse : monthsParse,
shortMonthsParse : monthsParse,
weekdays : 'zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag'.split('_'),
weekdaysShort : 'zo._ma._di._wo._do._vr._za.'.split('_'),
weekdaysMin : 'Zo_Ma_Di_Wo_Do_Vr_Za'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD-MM-YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[vandaag om] LT',
nextDay: '[morgen om] LT',
nextWeek: 'dddd [om] LT',
lastDay: '[gisteren om] LT',
lastWeek: '[afgelopen] dddd [om] LT',
sameElse: 'L'
},
relativeTime : {
future : 'over %s',
past : '%s geleden',
s : 'een paar seconden',
m : 'één minuut',
mm : '%d minuten',
h : 'één uur',
hh : '%d uur',
d : 'één dag',
dd : '%d dagen',
M : 'één maand',
MM : '%d maanden',
y : 'één jaar',
yy : '%d jaar'
},
dayOfMonthOrdinalParse: /\d{1,2}(ste|de)/,
ordinal : function (number) {
return number + ((number === 1 || number === 8 || number >= 20) ? 'ste' : 'de');
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return nl;
})));

View File

@@ -1,22 +1,23 @@
//! moment.js locale configuration
//! locale : polish (pl)
//! locale : Polish [pl]
//! author : Rafal Hirsz : https://github.com/evoL
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_'),
monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
function plural(n) {
return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
}
function translate(number, withoutSuffix, key) {
var result = number + ' ';
switch (key) {
var monthsNominative = 'styczeń_luty_marzec_kwiecień_maj_czerwiec_lipiec_sierpień_wrzesień_październik_listopad_grudzień'.split('_');
var monthsSubjective = 'stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_września_października_listopada_grudnia'.split('_');
function plural(n) {
return (n % 10 < 5) && (n % 10 > 1) && ((~~(n / 10) % 10) !== 1);
}
function translate(number, withoutSuffix, key) {
var result = number + ' ';
switch (key) {
case 'm':
return withoutSuffix ? 'minuta' : 'minutę';
case 'mm':
@@ -29,41 +30,43 @@
return result + (plural(number) ? 'miesiące' : 'miesięcy');
case 'yy':
return result + (plural(number) ? 'lata' : 'lat');
}
}
}
var pl = moment.defineLocale('pl', {
months : function (momentToFormat, format) {
if (format === '') {
// Hack: if format empty we know this is used to generate
// RegExp by moment. Give then back both valid forms of months
// in RegExp ready format.
return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
} else if (/D MMMM/.test(format)) {
return monthsSubjective[momentToFormat.month()];
} else {
return monthsNominative[momentToFormat.month()];
}
},
monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
weekdaysShort : 'nie_pon_wt_śr_czw_pt_sb'.split('_'),
weekdaysMin : 'N_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Dziś o] LT',
nextDay: '[Jutro o] LT',
nextWeek: '[W] dddd [o] LT',
lastDay: '[Wczoraj o] LT',
lastWeek: function () {
switch (this.day()) {
var pl = moment.defineLocale('pl', {
months : function (momentToFormat, format) {
if (!momentToFormat) {
return monthsNominative;
} else if (format === '') {
// Hack: if format empty we know this is used to generate
// RegExp by moment. Give then back both valid forms of months
// in RegExp ready format.
return '(' + monthsSubjective[momentToFormat.month()] + '|' + monthsNominative[momentToFormat.month()] + ')';
} else if (/D MMMM/.test(format)) {
return monthsSubjective[momentToFormat.month()];
} else {
return monthsNominative[momentToFormat.month()];
}
},
monthsShort : 'sty_lut_mar_kwi_maj_cze_lip_sie_wrz_paź_lis_gru'.split('_'),
weekdays : 'niedziela_poniedziałek_wtorek_środa_czwartek_piątek_sobota'.split('_'),
weekdaysShort : 'ndz_pon_wt_śr_czw_pt_sob'.split('_'),
weekdaysMin : 'Nd_Pn_Wt_Śr_Cz_Pt_So'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd, D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Dziś o] LT',
nextDay: '[Jutro o] LT',
nextWeek: '[W] dddd [o] LT',
lastDay: '[Wczoraj o] LT',
lastWeek: function () {
switch (this.day()) {
case 0:
return '[W zeszłą niedzielę o] LT';
case 3:
@@ -72,33 +75,33 @@
return '[W zeszłą sobotę o] LT';
default:
return '[W zeszły] dddd [o] LT';
}
},
sameElse: 'L'
}
},
relativeTime : {
future : 'za %s',
past : '%s temu',
s : 'kilka sekund',
m : translate,
mm : translate,
h : translate,
hh : translate,
d : '1 dzień',
dd : '%d dni',
M : 'miesiąc',
MM : translate,
y : 'rok',
yy : translate
},
ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
sameElse: 'L'
},
relativeTime : {
future : 'za %s',
past : '%s temu',
s : 'kilka sekund',
m : translate,
mm : translate,
h : translate,
hh : translate,
d : '1 dzień',
dd : '%d dni',
M : 'miesiąc',
MM : translate,
y : 'rok',
yy : translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return pl;
return pl;
}));
})));

View File

@@ -1,59 +1,61 @@
//! moment.js locale configuration
//! locale : brazilian portuguese (pt-br)
//! locale : Portuguese (Brazil) [pt-br]
//! author : Caio Ribeiro Pereira : https://github.com/caio-ribeiro-pereira
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var pt_br = moment.defineLocale('pt-br', {
months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
weekdays : 'Domingo_Segunda-Feira_Terça-Feira_Quarta-Feira_Quinta-Feira_Sexta-Feira_Sábado'.split('_'),
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin : 'Dom_2ª_3ª_4ª_5ª_6ª_Sáb'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
var ptBr = moment.defineLocale('pt-br', {
months : 'Janeiro_Fevereiro_Março_Abril_Maio_Junho_Julho_Agosto_Setembro_Outubro_Novembro_Dezembro'.split('_'),
monthsShort : 'Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez'.split('_'),
weekdays : 'Domingo_Segunda-feira_Terça-feira_Quarta-feira_Quinta-feira_Sexta-feira_Sábado'.split('_'),
weekdaysShort : 'Dom_Seg_Ter_Qua_Qui_Sex_Sáb'.split('_'),
weekdaysMin : 'Do_2ª_3ª_4ª_5ª_6ª_Sá'.split('_'),
weekdaysParseExact : true,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD/MM/YYYY',
LL : 'D [de] MMMM [de] YYYY',
LLL : 'D [de] MMMM [de] YYYY [às] HH:mm',
LLLL : 'dddd, D [de] MMMM [de] YYYY [às] HH:mm'
},
calendar : {
sameDay: '[Hoje às] LT',
nextDay: '[Amanhã às] LT',
nextWeek: 'dddd [às] LT',
lastDay: '[Ontem às] LT',
lastWeek: function () {
return (this.day() === 0 || this.day() === 6) ?
'[Último] dddd [às] LT' : // Saturday + Sunday
'[Última] dddd [às] LT'; // Monday - Friday
},
calendar : {
sameDay: '[Hoje às] LT',
nextDay: '[Amanhã às] LT',
nextWeek: 'dddd [às] LT',
lastDay: '[Ontem às] LT',
lastWeek: function () {
return (this.day() === 0 || this.day() === 6) ?
'[Último] dddd [às] LT' : // Saturday + Sunday
'[Última] dddd [às] LT'; // Monday - Friday
},
sameElse: 'L'
},
relativeTime : {
future : 'em %s',
past : '%s atrás',
s : 'poucos segundos',
m : 'um minuto',
mm : '%d minutos',
h : 'uma hora',
hh : '%d horas',
d : 'um dia',
dd : '%d dias',
M : 'um mês',
MM : '%d meses',
y : 'um ano',
yy : '%d anos'
},
ordinalParse: /\d{1,2}º/,
ordinal : '%dº'
});
sameElse: 'L'
},
relativeTime : {
future : 'em %s',
past : '%s atrás',
s : 'poucos segundos',
m : 'um minuto',
mm : '%d minutos',
h : 'uma hora',
hh : '%d horas',
d : 'um dia',
dd : '%d dias',
M : 'um mês',
MM : '%d meses',
y : 'um ano',
yy : '%d anos'
},
dayOfMonthOrdinalParse: /\d{1,2}º/,
ordinal : '%dº'
});
return pt_br;
return ptBr;
}));
})));

View File

@@ -1,73 +1,75 @@
//! moment.js locale configuration
//! locale : romanian (ro)
//! locale : Romanian [ro]
//! author : Vlad Gurdiga : https://github.com/gurdiga
//! author : Valentin Agachi : https://github.com/avaly
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': 'minute',
'hh': 'ore',
'dd': 'zile',
'MM': 'luni',
'yy': 'ani'
},
separator = ' ';
if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
separator = ' de ';
}
return number + separator + format[key];
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': 'minute',
'hh': 'ore',
'dd': 'zile',
'MM': 'luni',
'yy': 'ani'
},
separator = ' ';
if (number % 100 >= 20 || (number >= 100 && number % 100 === 0)) {
separator = ' de ';
}
return number + separator + format[key];
}
var ro = moment.defineLocale('ro', {
months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
longDateFormat : {
LT : 'H:mm',
LTS : 'H:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY H:mm',
LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
sameDay: '[azi la] LT',
nextDay: '[mâine la] LT',
nextWeek: 'dddd [la] LT',
lastDay: '[ieri la] LT',
lastWeek: '[fosta] dddd [la] LT',
sameElse: 'L'
},
relativeTime : {
future : 'peste %s',
past : '%s în urmă',
s : 'câteva secunde',
m : 'un minut',
mm : relativeTimeWithPlural,
h : 'o oră',
hh : relativeTimeWithPlural,
d : 'o zi',
dd : relativeTimeWithPlural,
M : 'o lună',
MM : relativeTimeWithPlural,
y : 'un an',
yy : relativeTimeWithPlural
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
var ro = moment.defineLocale('ro', {
months : 'ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie'.split('_'),
monthsShort : 'ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays : 'duminică_luni_marți_miercuri_joi_vineri_sâmbătă'.split('_'),
weekdaysShort : 'Dum_Lun_Mar_Mie_Joi_Vin_Sâm'.split('_'),
weekdaysMin : 'Du_Lu_Ma_Mi_Jo_Vi_Sâ'.split('_'),
longDateFormat : {
LT : 'H:mm',
LTS : 'H:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY H:mm',
LLLL : 'dddd, D MMMM YYYY H:mm'
},
calendar : {
sameDay: '[azi la] LT',
nextDay: '[mâine la] LT',
nextWeek: 'dddd [la] LT',
lastDay: '[ieri la] LT',
lastWeek: '[fosta] dddd [la] LT',
sameElse: 'L'
},
relativeTime : {
future : 'peste %s',
past : '%s în urmă',
s : 'câteva secunde',
m : 'un minut',
mm : relativeTimeWithPlural,
h : 'o oră',
hh : relativeTimeWithPlural,
d : 'o zi',
dd : relativeTimeWithPlural,
M : 'o lună',
MM : relativeTimeWithPlural,
y : 'un an',
yy : relativeTimeWithPlural
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
return ro;
return ro;
}));
})));

View File

@@ -1,90 +1,110 @@
//! moment.js locale configuration
//! locale : russian (ru)
//! locale : Russian [ru]
//! author : Viktorminator : https://github.com/Viktorminator
//! Author : Menelion Elensúle : https://github.com/Oire
//! author : Коренберг Марк : https://github.com/socketpair
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
function plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
function plural(word, num) {
var forms = word.split('_');
return num % 10 === 1 && num % 100 !== 11 ? forms[0] : (num % 10 >= 2 && num % 10 <= 4 && (num % 100 < 10 || num % 100 >= 20) ? forms[1] : forms[2]);
}
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
'hh': асасаасов',
'dd': ень_дня_дней',
'MM': есяц_месяцаесяцев',
'yy': 'год_годает'
};
if (key === 'm') {
return withoutSuffix ? 'минута' : 'минуту';
}
function relativeTimeWithPlural(number, withoutSuffix, key) {
var format = {
'mm': withoutSuffix ? 'минута_минуты_минут' : 'минуту_минуты_минут',
'hh': асасаасов',
'dd': ень_дня_дней',
'MM': есяц_месяцаесяцев',
'yy': 'год_годает'
};
if (key === 'm') {
return withoutSuffix ? 'минута' : 'минуту';
}
else {
return number + ' ' + plural(format[key], +number);
}
}
function monthsCaseReplace(m, format) {
var months = {
'nominative': 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_'),
'accusative': 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_')
},
nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
'accusative' :
'nominative';
return months[nounCase][m.month()];
}
function monthsShortCaseReplace(m, format) {
var monthsShort = {
'nominative': 'янв_фев_март_апрай_июнь_июль_авг_сен_окт_ноя_дек'.split('_'),
'accusative': 'янв_фев_мар_апрая_июня_июля_авг_сен_окт_ноя_дек'.split('_')
},
nounCase = (/D[oD]?(\[[^\[\]]*\]|\s+)+MMMM?/).test(format) ?
'accusative' :
'nominative';
return monthsShort[nounCase][m.month()];
}
function weekdaysCaseReplace(m, format) {
var weekdays = {
'nominative': оскресенье_понедельник_вторник_средаетверг_пятница_суббота'.split('_'),
'accusative': оскресенье_понедельник_вторник_средуетверг_пятницу_субботу'.split('_')
},
nounCase = (/\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/).test(format) ?
'accusative' :
'nominative';
return weekdays[nounCase][m.day()];
else {
return number + ' ' + plural(format[key], +number);
}
}
var monthsParse = [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[йя]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i];
var ru = moment.defineLocale('ru', {
months : monthsCaseReplace,
monthsShort : monthsShortCaseReplace,
weekdays : weekdaysCaseReplace,
weekdaysShort : с_пн_вт_ср_чт_пт_сб'.split('_'),
weekdaysMin : с_пн_вт_ср_чт_пт_сб'.split('_'),
monthsParse : [/^янв/i, /^фев/i, /^мар/i, /^апр/i, /^ма[й|я]/i, /^июн/i, /^июл/i, /^авг/i, /^сен/i, /^окт/i, /^ноя/i, /^дек/i],
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY г.',
LLL : 'D MMMM YYYY г., HH:mm',
LLLL : 'dddd, D MMMM YYYY г., HH:mm'
// http://new.gramota.ru/spravka/rules/139-prop : § 103
// Сокращения месяцев: http://new.gramota.ru/spravka/buro/search-answer?s=242637
// CLDR data: http://www.unicode.org/cldr/charts/28/summary/ru.html#1753
var ru = moment.defineLocale('ru', {
months : {
format: 'января_февраля_марта_апреля_мая_июня_июля_августа_сентября_октября_ноября_декабря'.split('_'),
standalone: 'январь_февраль_март_апрель_май_июнь_июль_август_сентябрь_октябрь_ноябрь_декабрь'.split('_')
},
monthsShort : {
// по CLDR именно "июл." и "июн.", но какой смысл менять букву на точку ?
format: 'янв._февр._мар._апр._мая_июня_июля_авг._сент._окт._нояб._дек.'.split('_'),
standalone: 'янв._февр._март_апр._май_июнь_июль_авг._сент._окт._нояб._дек.'.split('_')
},
weekdays : {
standalone: оскресенье_понедельник_вторник_средаетверг_пятница_суббота'.split('_'),
format: оскресенье_понедельник_вторник_средуетверг_пятницу_субботу'.split('_'),
isFormat: /\[ ?[Вв] ?(?:прошлую|следующую|эту)? ?\] ?dddd/
},
weekdaysShort : с_пн_вт_ср_чт_пт_сб'.split('_'),
weekdaysMin : с_пн_вт_ср_чт_пт_сб'.split('_'),
monthsParse : monthsParse,
longMonthsParse : monthsParse,
shortMonthsParse : monthsParse,
// полные названия с падежами, по три буквы, для некоторых, по 4 буквы, сокращения с точкой и без точки
monthsRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
// копия предыдущего
monthsShortRegex: /^(январ[ья]|янв\.?|феврал[ья]|февр?\.?|марта?|мар\.?|апрел[ья]|апр\.?|ма[йя]|июн[ья]|июн\.?|июл[ья]|июл\.?|августа?|авг\.?|сентябр[ья]|сент?\.?|октябр[ья]|окт\.?|ноябр[ья]|нояб?\.?|декабр[ья]|дек\.?)/i,
// полные названия с падежами
monthsStrictRegex: /^(январ[яь]|феврал[яь]|марта?|апрел[яь]|ма[яй]|июн[яь]|июл[яь]|августа?|сентябр[яь]|октябр[яь]|ноябр[яь]|декабр[яь])/i,
// Выражение, которое соотвествует только сокращённым формам
monthsShortStrictRegex: /^(янв\.|февр?\.|мар[т.]|апр\.|ма[яй]|июн[ья.]|июл[ья.]|авг\.|сент?\.|окт\.|нояб?\.|дек\.)/i,
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'DD.MM.YYYY',
LL : 'D MMMM YYYY г.',
LLL : 'D MMMM YYYY г., HH:mm',
LLLL : 'dddd, D MMMM YYYY г., HH:mm'
},
calendar : {
sameDay: '[Сегодня в] LT',
nextDay: '[Завтра в] LT',
lastDay: '[Вчера в] LT',
nextWeek: function (now) {
if (now.week() !== this.week()) {
switch (this.day()) {
case 0:
return '[В следующее] dddd [в] LT';
case 1:
case 2:
case 4:
return '[В следующий] dddd [в] LT';
case 3:
case 5:
case 6:
return '[В следующую] dddd [в] LT';
}
} else {
if (this.day() === 2) {
return '[Во] dddd [в] LT';
} else {
return '[В] dddd [в] LT';
}
}
},
calendar : {
sameDay: '[Сегодня в] LT',
nextDay: '[Завтра в] LT',
lastDay: '[Вчера в] LT',
nextWeek: function () {
return this.day() === 2 ? '[Во] dddd [в] LT' : '[В] dddd [в] LT';
},
lastWeek: function (now) {
if (now.week() !== this.week()) {
switch (this.day()) {
lastWeek: function (now) {
if (now.week() !== this.week()) {
switch (this.day()) {
case 0:
return '[В прошлое] dddd [в] LT';
case 1:
@@ -95,50 +115,50 @@
case 5:
case 6:
return '[В прошлую] dddd [в] LT';
}
} else {
if (this.day() === 2) {
return '[Во] dddd [в] LT';
} else {
return '[В] dddd [в] LT';
}
}
},
sameElse: 'L'
},
relativeTime : {
future : 'через %s',
past : '%s назад',
s : 'несколько секунд',
m : relativeTimeWithPlural,
mm : relativeTimeWithPlural,
h : 'час',
hh : relativeTimeWithPlural,
d : 'день',
dd : relativeTimeWithPlural,
M : 'месяц',
MM : relativeTimeWithPlural,
y : 'год',
yy : relativeTimeWithPlural
},
meridiemParse: /ночи|утра|дня|вечера/i,
isPM : function (input) {
return /^(дня|вечера)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'ночи';
} else if (hour < 12) {
return 'утра';
} else if (hour < 17) {
return 'дня';
} else {
return 'вечера';
if (this.day() === 2) {
return '[Во] dddd [в] LT';
} else {
return '[В] dddd [в] LT';
}
}
},
ordinalParse: /\d{1,2}-(й|го|я)/,
ordinal: function (number, period) {
switch (period) {
sameElse: 'L'
},
relativeTime : {
future : 'через %s',
past : '%s назад',
s : 'несколько секунд',
m : relativeTimeWithPlural,
mm : relativeTimeWithPlural,
h : 'час',
hh : relativeTimeWithPlural,
d : 'день',
dd : relativeTimeWithPlural,
M : 'месяц',
MM : relativeTimeWithPlural,
y : 'год',
yy : relativeTimeWithPlural
},
meridiemParse: /ночи|утра|дня|вечера/i,
isPM : function (input) {
return /^(дня|вечера)$/.test(input);
},
meridiem : function (hour, minute, isLower) {
if (hour < 4) {
return 'ночи';
} else if (hour < 12) {
return 'утра';
} else if (hour < 17) {
return 'дня';
} else {
return 'вечера';
}
},
dayOfMonthOrdinalParse: /\d{1,2}-(й|го|я)/,
ordinal: function (number, period) {
switch (period) {
case 'M':
case 'd':
case 'DDD':
@@ -150,14 +170,14 @@
return number + '-я';
default:
return number;
}
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
return ru;
return ru;
}));
})));

View File

@@ -1,107 +1,110 @@
//! moment.js locale configuration
//! locale : Serbian-cyrillic (sr-cyrl)
//! locale : Serbian [sr]
//! author : Milan Janačković<milanjanackovic@gmail.com> : https://github.com/milan-j
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var translator = {
words: { //Different grammatical cases
m: ['један минут', 'једне минуте'],
mm: ['минут', 'минуте', 'минута'],
h: ['један сат', 'једног сата'],
hh: ['сат', 'сата', 'сати'],
dd: ['дан', 'дана', 'дана'],
MM: ['месец', 'месеца', 'месеци'],
yy: ['година', 'године', 'година']
},
correctGrammaticalCase: function (number, wordKey) {
return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
var wordKey = translator.words[key];
if (key.length === 1) {
return withoutSuffix ? wordKey[0] : wordKey[1];
} else {
return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
}
var translator = {
words: { //Different grammatical cases
m: ['jedan minut', 'jedne minute'],
mm: ['minut', 'minute', 'minuta'],
h: ['jedan sat', 'jednog sata'],
hh: ['sat', 'sata', 'sati'],
dd: ['dan', 'dana', 'dana'],
MM: ['mesec', 'meseca', 'meseci'],
yy: ['godina', 'godine', 'godina']
},
correctGrammaticalCase: function (number, wordKey) {
return number === 1 ? wordKey[0] : (number >= 2 && number <= 4 ? wordKey[1] : wordKey[2]);
},
translate: function (number, withoutSuffix, key) {
var wordKey = translator.words[key];
if (key.length === 1) {
return withoutSuffix ? wordKey[0] : wordKey[1];
} else {
return number + ' ' + translator.correctGrammaticalCase(number, wordKey);
}
};
}
};
var sr_cyrl = moment.defineLocale('sr-cyrl', {
months: ['јануар', 'фебруар', 'март', 'април', 'мај', 'јун', 'јул', 'август', 'септембар', 'октобар', 'новембар', 'децембар'],
monthsShort: ['јан.', 'феб.', 'мар.', 'апр.', 'мај', 'јун', 'јул', 'авг.', 'сеп.', 'окт.', 'нов.', 'дец.'],
weekdays: ['недеља', 'понедељак', 'уторак', 'среда', 'четвртак', 'петак', 'субота'],
weekdaysShort: ['нед.', 'пон.', 'уто.', 'сре.', 'чет.', 'пет.', 'суб.'],
weekdaysMin: ['не', 'по', 'ут', 'ср', 'че', 'пе', 'су'],
longDateFormat: {
LT: 'H:mm',
LTS : 'H:mm:ss',
L: 'DD. MM. YYYY',
LL: 'D. MMMM YYYY',
LLL: 'D. MMMM YYYY H:mm',
LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
sameDay: '[данас у] LT',
nextDay: '[сутра у] LT',
nextWeek: function () {
switch (this.day()) {
var sr = moment.defineLocale('sr', {
months: 'januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar'.split('_'),
monthsShort: 'jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.'.split('_'),
monthsParseExact: true,
weekdays: 'nedelja_ponedeljak_utorak_sreda_četvrtak_petak_subota'.split('_'),
weekdaysShort: 'ned._pon._uto._sre._čet._pet._sub.'.split('_'),
weekdaysMin: 'ne_po_ut_sr_če_pe_su'.split('_'),
weekdaysParseExact : true,
longDateFormat: {
LT: 'H:mm',
LTS : 'H:mm:ss',
L: 'DD.MM.YYYY',
LL: 'D. MMMM YYYY',
LLL: 'D. MMMM YYYY H:mm',
LLLL: 'dddd, D. MMMM YYYY H:mm'
},
calendar: {
sameDay: '[danas u] LT',
nextDay: '[sutra u] LT',
nextWeek: function () {
switch (this.day()) {
case 0:
return '[у] [недељу] [у] LT';
return '[u] [nedelju] [u] LT';
case 3:
return '[у] [среду] [у] LT';
return '[u] [sredu] [u] LT';
case 6:
return '[у] [суботу] [у] LT';
return '[u] [subotu] [u] LT';
case 1:
case 2:
case 4:
case 5:
return '[у] dddd [у] LT';
}
},
lastDay : '[јуче у] LT',
lastWeek : function () {
var lastWeekDays = [
'[прошле] [недеље] [у] LT',
'[прошлог] [понедељка] [у] LT',
'[прошлог] [уторка] [у] LT',
'[прошле] [среде] [у] LT',
'[прошлог] [четвртка] [у] LT',
'[прошлог] [петка] [у] LT',
'[прошле] [суботе] [у] LT'
];
return lastWeekDays[this.day()];
},
sameElse : 'L'
return '[u] dddd [u] LT';
}
},
relativeTime : {
future : 'за %s',
past : 'пре %s',
s : 'неколико секунди',
m : translator.translate,
mm : translator.translate,
h : translator.translate,
hh : translator.translate,
d : 'дан',
dd : translator.translate,
M : 'месец',
MM : translator.translate,
y : 'годину',
yy : translator.translate
lastDay : '[juče u] LT',
lastWeek : function () {
var lastWeekDays = [
'[prošle] [nedelje] [u] LT',
'[prošlog] [ponedeljka] [u] LT',
'[prošlog] [utorka] [u] LT',
'[prošle] [srede] [u] LT',
'[prošlog] [četvrtka] [u] LT',
'[prošlog] [petka] [u] LT',
'[prošle] [subote] [u] LT'
];
return lastWeekDays[this.day()];
},
ordinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
sameElse : 'L'
},
relativeTime : {
future : 'za %s',
past : 'pre %s',
s : 'nekoliko sekundi',
m : translator.translate,
mm : translator.translate,
h : translator.translate,
hh : translator.translate,
d : 'dan',
dd : translator.translate,
M : 'mesec',
MM : translator.translate,
y : 'godinu',
yy : translator.translate
},
dayOfMonthOrdinalParse: /\d{1,2}\./,
ordinal : '%d.',
week : {
dow : 1, // Monday is the first day of the week.
doy : 7 // The week that contains Jan 1st is the first week of the year.
}
});
return sr_cyrl;
return sr;
}));
})));

View File

@@ -1,66 +1,69 @@
//! moment.js locale configuration
//! locale : swedish (sv)
//! locale : Swedish [sv]
//! author : Jens Alm : https://github.com/ulmus
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var sv = moment.defineLocale('sv', {
months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'YYYY-MM-DD',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY HH:mm',
LLLL : 'dddd D MMMM YYYY HH:mm'
},
calendar : {
sameDay: '[Idag] LT',
nextDay: '[Imorgon] LT',
lastDay: '[Igår] LT',
nextWeek: '[På] dddd LT',
lastWeek: '[I] dddd[s] LT',
sameElse: 'L'
},
relativeTime : {
future : 'om %s',
past : 'för %s sedan',
s : 'några sekunder',
m : 'en minut',
mm : '%d minuter',
h : 'en timme',
hh : '%d timmar',
d : 'en dag',
dd : '%d dagar',
M : 'en månad',
MM : '%d månader',
y : 'ett år',
yy : '%d år'
},
ordinalParse: /\d{1,2}(e|a)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'e' :
(b === 1) ? 'a' :
(b === 2) ? 'a' :
(b === 3) ? 'e' : 'e';
return number + output;
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
var sv = moment.defineLocale('sv', {
months : 'januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december'.split('_'),
monthsShort : 'jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec'.split('_'),
weekdays : 'söndag_måndag_tisdag_onsdag_torsdag_fredag_lördag'.split('_'),
weekdaysShort : 'sön_mån_tis_ons_tor_fre_lör'.split('_'),
weekdaysMin : 'sö_må_ti_on_to_fr_lö'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'YYYY-MM-DD',
LL : 'D MMMM YYYY',
LLL : 'D MMMM YYYY [kl.] HH:mm',
LLLL : 'dddd D MMMM YYYY [kl.] HH:mm',
lll : 'D MMM YYYY HH:mm',
llll : 'ddd D MMM YYYY HH:mm'
},
calendar : {
sameDay: '[Idag] LT',
nextDay: '[Imorgon] LT',
lastDay: '[Igår] LT',
nextWeek: '[På] dddd LT',
lastWeek: '[I] dddd[s] LT',
sameElse: 'L'
},
relativeTime : {
future : 'om %s',
past : 'för %s sedan',
s : 'några sekunder',
m : 'en minut',
mm : '%d minuter',
h : 'en timme',
hh : '%d timmar',
d : 'en dag',
dd : '%d dagar',
M : 'en månad',
MM : '%d månader',
y : 'ett år',
yy : '%d år'
},
dayOfMonthOrdinalParse: /\d{1,2}(e|a)/,
ordinal : function (number) {
var b = number % 10,
output = (~~(number % 100 / 10) === 1) ? 'e' :
(b === 1) ? 'a' :
(b === 2) ? 'a' :
(b === 3) ? 'e' : 'e';
return number + output;
},
week : {
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return sv;
return sv;
}));
})));

View File

@@ -1,91 +1,76 @@
//! moment.js locale configuration
//! locale : chinese (zh-cn)
//! locale : Chinese (China) [zh-cn]
//! author : suupic : https://github.com/suupic
//! author : Zeno Zeng : https://github.com/zenozeng
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['moment'], factory) :
;(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined'
&& typeof require === 'function' ? factory(require('../moment')) :
typeof define === 'function' && define.amd ? define(['../moment'], factory) :
factory(global.moment)
}(this, function (moment) { 'use strict';
}(this, (function (moment) { 'use strict';
var zh_cn = moment.defineLocale('zh-cn', {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
LT : 'Ah点mm',
LTS : 'Ah点m分s秒',
L : 'YYYY-MM-DD',
LL : 'YYYY年MMMD日',
LLL : 'YYYY年MMMD日Ah点mm分',
LLLL : 'YYYY年MMMD日ddddAh点mm分',
l : 'YYYY-MM-DD',
ll : 'YYYY年MMMD日',
lll : 'YYYY年MMMD日Ah点mm',
llll : 'YYYY年MMMD日ddddAh点mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (hour, meridiem) {
if (hour === 12) {
hour = 0;
}
if (meridiem === '凌晨' || meridiem === '早上' ||
meridiem === '上午') {
return hour;
} else if (meridiem === '下午' || meridiem === '晚上') {
return hour + 12;
} else {
// '中午'
return hour >= 11 ? hour : hour + 12;
}
},
meridiem : function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '早上';
} else if (hm < 1130) {
return '上午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '下午';
} else {
return '晚上';
}
},
calendar : {
sameDay : function () {
return this.minutes() === 0 ? '[今天]Ah[点整]' : '[天]LT';
},
nextDay : function () {
return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
},
lastDay : function () {
return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
},
nextWeek : function () {
var startOfWeek, prefix;
startOfWeek = moment().startOf('week');
prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
lastWeek : function () {
var startOfWeek, prefix;
startOfWeek = moment().startOf('week');
prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
sameElse : 'LL'
},
ordinalParse: /\d{1,2}(日|月|周)/,
ordinal : function (number, period) {
switch (period) {
var zhCn = moment.defineLocale('zh-cn', {
months : '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort : '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays : '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort : '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin : '日_一_二_三_四_五_六'.split('_'),
longDateFormat : {
LT : 'HH:mm',
LTS : 'HH:mm:ss',
L : 'YYYYMMMD日',
LL : 'YYYY年MMMD日',
LLL : 'YYYY年MMMD日Ah点mm分',
LLLL : 'YYYY年MMMD日ddddAh点mm分',
l : 'YYYYMMMD日',
ll : 'YYYY年MMMD日',
lll : 'YYYY年MMMD日 HH:mm',
llll : 'YYYY年MMMD日dddd HH:mm'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (hour, meridiem) {
if (hour === 12) {
hour = 0;
}
if (meridiem === '凌晨' || meridiem === '早上' ||
meridiem === '上午') {
return hour;
} else if (meridiem === '下午' || meridiem === '晚上') {
return hour + 12;
} else {
// '中午'
return hour >= 11 ? hour : hour + 12;
}
},
meridiem : function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '早上';
} else if (hm < 1130) {
return '上午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '下午';
} else {
return '晚上';
}
},
calendar : {
sameDay : '[今天]LT',
nextDay : '[天]LT',
nextWeek : '[下]ddddLT',
lastDay : '[昨天]LT',
lastWeek : '[上]ddddLT',
sameElse : 'L'
},
dayOfMonthOrdinalParse: /\d{1,2}(日|月|周)/,
ordinal : function (number, period) {
switch (period) {
case 'd':
case 'D':
case 'DDD':
@@ -97,30 +82,30 @@
return number + '周';
default:
return number;
}
},
relativeTime : {
future : '%s内',
past : '%s前',
s : '几秒',
m : '1 分钟',
mm : '%d 分钟',
h : '1 小时',
hh : '%d 小时',
d : '1 天',
dd : '%d 天',
M : '1 个月',
MM : '%d 个月',
y : '1 年',
yy : '%d 年'
},
week : {
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
},
relativeTime : {
future : '%s内',
past : '%s前',
s : '几秒',
m : '1 分钟',
mm : '%d 分钟',
h : '1 小时',
hh : '%d 小时',
d : '1 天',
dd : '%d 天',
M : '1 个月',
MM : '%d 个月',
y : '1 年',
yy : '%d 年'
},
week : {
// GB/T 7408-1994《数据元和交换格式·信息交换·日期和时间表示法》与ISO 8601:1988等效
dow : 1, // Monday is the first day of the week.
doy : 4 // The week that contains Jan 4th is the first week of the year.
}
});
return zh_cn;
return zhCn;
}));
})));

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2017-03-14 16:16+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: 2017-04-05 07:18+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:46+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,31 +25,41 @@ msgstr "Kunne ikke starte web-interface"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Kan ikke finde webskabeloner: %s, forsøger med standardskabelon"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc modul... IKKE fundet!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 binær... IKKE fundet!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr "Din Unrar version er %s, vi anbefaler version %s eller højere.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar binær... IKKE fundet!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip binær... IKKE fundet!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za binary... IKKE fundet!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -57,11 +67,11 @@ msgstr ""
"Vær opmærksom på at 0.0.0.0 værtsnavn har brug for en IPv6-adresse for "
"ekstern adgang"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP og HTTPS porte kan ikke være de samme"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
@@ -69,35 +79,35 @@ msgstr ""
"SABnzbd blev startet med kodning %s, dette bør være UTF-8. Forvent "
"problemer med Unicoded fil- og mappenavne i downloads."
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS fejlede på grund af manglende CERT og KEY filer"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr "Kunne ikke bindes til konfigurerede port. Port ændres til %s"
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Kunne ikke starte web-grænseflade: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Kan ikke nå SABHelper tjeneste"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s startet"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Advarsel"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Fejl"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd lukning udført."
@@ -226,7 +236,6 @@ msgid "None"
msgstr "Ingen"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Standard"
@@ -406,27 +415,27 @@ msgstr "Det lykkedes ikke at lukke databasen, se logg"
msgid "Invalid stage logging in history for %s"
msgstr "Forkert loggning i historiken av %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Afkodning af %s mislykkedes"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr "Dekoder fejl: Ikke mere hukommelse"
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC Fejl i %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Forkert udformet yEnc artikel i %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Ukendt fejl under afkodning af %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "UUENCODE detekteret, kun yEnc kodning understøttes [%s]"
@@ -963,32 +972,32 @@ msgstr "Hovedarkiv mangler..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Ugyldig PAR2 filer, kan ikke kontrollere eller reparere"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Reparation mislykkedes, ikke nok reparation blokke (%s mangler)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Henter %s block..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Henter"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Reparerer"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Repareret i %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Bekræfter"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python script '%s' har ikke udfør (+x) tilladelsessæt"
@@ -3562,17 +3571,18 @@ msgstr "Certifikatkontrol"
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
"Standard: når SSL er aktiveret, skal du kontrollere identiteten på serveren "
"ved hjælp af dets certifikater. Strenge: kontrollere og håndhæve tilsvarende "
"værtsnavn."
#: sabnzbd/skintext.py:547 # sabnzbd/skintext.py:782 # sabnzbd/skintext.py:895
msgid "Disabled"
msgstr "Deaktiveret"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr "Streng"

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2017-02-19 14:23+0000\n"
"Last-Translator: René <Unknown>\n"
"Language-Team: German <de@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:18+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -27,32 +27,42 @@ msgstr ""
"Konnte Web-Vorlage nicht finden: %s Versuche die Standard-Vorlage zu "
"verwenden."
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc-Modul nicht gefunden!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2-Programmdatei nicht gefunden!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Deine UNRAR-Version ist %s, Wir empfehlen Version %s oder höher.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar-Programmdatei nicht gefunden!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip-Programmdatei nicht gefunden!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za-Programm … NICHT gefunden!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -60,45 +70,45 @@ msgstr ""
"Bitte beachten Sie, dass der 0.0.0.0-Hostname eine IPv6-Adresse benötigen "
"wird für den externen Zugriff."
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP und HTTPS Ports dürfen nicht Identisch sein!"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS wegen fehlenden Zertifikats- und Schlüsseldateien deaktiviert."
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr "Konfigurierter Port funktioniert nicht. Port gewechselt zu %s"
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Fehler beim Starten der Web-Oberfläche "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "SABHelper-Dienst kann nicht erreicht werden"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s gestartet"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Achtung"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Fehler"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd wurde beendet"
@@ -231,7 +241,6 @@ msgid "None"
msgstr "Nichts"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Standard"
@@ -415,27 +424,27 @@ msgstr ""
msgid "Invalid stage logging in history for %s"
msgstr "Ungültiges Stufen-Protokoll im Verlauf für %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Fehler beim Dekodieren von %s."
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr "Decoder Fehler: Nicht genügend Speicher"
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC-Fehler in %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Ungültiger yEnc-Artikel in %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Unbekannter Fehler %s beim Dekodieren"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "UUencode gefunden, nur yEnc Codierung wir unterstützt [%s]"
@@ -977,34 +986,34 @@ msgstr "Hauptpaket nicht gefunden …"
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Ungültige PAR2-Dateien. Überprüfung oder Reparatur nicht möglich."
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr ""
"Reparatur fehlgeschlagen. Nicht genug Reparatur-Blöcke vorhanden (%s zu "
"wenig)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "%s Blöcke werden abgerufen …"
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Abrufen"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Reparieren"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Repariert in %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Überprüfen"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Dem Pythonskript \"%s\" fehlen die Ausführenrechte (+x)"
@@ -3620,17 +3629,18 @@ msgstr "Zertifikat überprüfung"
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
"Standart: Wenn SSL aktiviert ist, wird die Server-Identität mittels "
"Zertifikat überprüft. Strikt: Übereinstimmende Hostnamen überprüfen und "
"erzwingen."
#: sabnzbd/skintext.py:547 # sabnzbd/skintext.py:782 # sabnzbd/skintext.py:895
msgid "Disabled"
msgstr "Deaktiviert"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr "Strikt"

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2016-09-26 12:51+0000\n"
"Last-Translator: David Calvo <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: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -27,32 +27,42 @@ msgstr ""
"No se puede encontrar la plantilla web: %s, intentando con la plantilla "
"estandar"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "módulo _yenc... NO encontrado!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 binario... NO encontrado!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Su versión UnRAR es %s, recomendamos la versión %s o superior. <br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar binario... NO encontrado"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip binario... NO encontrado!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "No se encontró el binario de 7za"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -60,45 +70,45 @@ msgstr ""
"Tenga en cuenta que el nombre de equipo 0.0.0.0 necesitará una dirección "
"IPv6 para el acceso externo"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "Los puertos de HTTP y de HTTPS no pueden ser iguales"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS deshabilitado debido a la falta de archivos CERT y KEY"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Error al iniciar la interfaz web: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "No se ha podido conectar con el servicio SABHelper"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s comenzó"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Advertencia"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Se ha producido un error"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "Cierre de SABnzbd terminado"
@@ -226,7 +236,6 @@ msgid "None"
msgstr "Ninguno"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Predeterminado"
@@ -407,27 +416,27 @@ msgstr "No se pudo cerrar el base de datos, vea el registro"
msgid "Invalid stage logging in history for %s"
msgstr "Registro de etapa invalido para transferencia terminada %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Descodificación %s fallo"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "Error CRC en %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Articulo yEnc corrupto en %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Error inespecifico mientras descodificando %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "UUencode detectada, la única codificación válida es Enc [%s]"
@@ -969,34 +978,34 @@ msgstr "Paquete principal no encontrado..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Ficheros par2 inválidos, no se puede verificar o reparar"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr ""
"Ha fallado la reparación, no existen bloques de reparación suficientes (%s "
"short)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Recuperando %s bloques..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Recuperando"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Reparando"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Reparado en %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Verificando"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3586,7 +3595,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3594,6 +3603,10 @@ msgstr ""
msgid "Disabled"
msgstr "Deshabilitado"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2017-04-02 07:48+0000\n"
"Last-Translator: Paavo Rissanen <paavo.rissanen@outlook.com>\n"
"Language-Team: Finnish <fi@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:18+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,33 +25,43 @@ msgstr "Web-käyttöliittymän käynnistys epäonnistui"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Web-mallia %s ei löydy, yritetään käyttää oletusmallia"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc moduulia... EI löydy!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 ohjelmaa... EI löydy!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"UNRAR versiosi on %s, suosittelemme käyttämään versiota %s tai uudempaa.<br "
"/>"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar ohjelmaa... EI löydy!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip ohjelmaa... EI löydy!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za ohjelmaa... EI löydy!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -59,11 +69,11 @@ msgstr ""
"Huomioithan, että 0.0.0.0 isäntänimi vaatii IPv6 osoitteen jotta pääset "
"ulkoverkkoon"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP- ja HTTPS-portit eivät voi olla samoja"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
@@ -72,35 +82,35 @@ msgstr ""
"Unicode-merkkejä tiedosto- ja kansionimissä sisältävät lataukset voivat "
"aiheuttaa ongelmia."
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS poistettu käytöstä puuttuvien CERT ja KEY tiedostojen vuoksi"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Web-käyttöliittymän käynnistys epäonnistui : "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "SABHelper palvelua ei voitu tavoittaa"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s käynnistetty"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Varoitus"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Virhe"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd sammutus valmis"
@@ -229,7 +239,6 @@ msgid "None"
msgstr "Ei mitään"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Oletus"
@@ -406,27 +415,27 @@ msgstr "Tietokannan sulkeminen epäonnistui, katso loki"
msgid "Invalid stage logging in history for %s"
msgstr "Virheellinen tila lokihistoriassa kohteelle %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Kohteen %s dekoodaus epäonnistui"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC virhe tiedostossa %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Huonosti muotoiltu yEnc artikkeli %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Tuntematon virhe dekoodattaessa %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "UUencode-koodaus havaittiin, vain yEnc-koodausta tuetaan [%s]"
@@ -961,32 +970,32 @@ msgstr "Pääpakettia ei löydy..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Virheelliset par2 arkistot, varmennus ja korjaus ei mahdollista"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Korjaaminen epäonnistui, ei tarpeeksi korjauslohkoja (%s puuttuu)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Noudetaan %s lohkoa..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Noudetaan"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Korjataan"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Korjattiin ajassa %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Varmennetaan"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3576,17 +3585,18 @@ msgstr "Sertifikaatin varmennus"
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
"Oletus: kun SSL on päällä, varmennetaan palvelimen identiteetti sen antaman "
"sertifikaatin avulla. Tiukka: varmennetaan kuten edellä ja vaaditaan lisäksi "
"sertifikaattia vastaava isäntänimi (hostname)."
#: sabnzbd/skintext.py:547 # sabnzbd/skintext.py:782 # sabnzbd/skintext.py:895
msgid "Disabled"
msgstr "Ei käytössä"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr "Tiukka"

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: 2017-04-02 15:51+0000\n"
"PO-Revision-Date: 2017-04-07 09:49+0000\n"
"Last-Translator: Fred <88com88@gmail.com>\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2017-04-11 08:33+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: French <fr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-08 06:06+0000\n"
"X-Generator: Launchpad (build 18343)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -27,32 +27,45 @@ msgstr ""
"Impossible de trouver le template de l'interface web : %s, nouvelle "
"tentative avec le template standard"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc désactivé: aucune version correcte n'a été trouvée ! (v%s trouvée, "
"v%s attendue)"
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
"Module SABYenc... NON trouvé! v%s attendue - https://sabnzbd.org/sabyenc"
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "module _yenc... Introuvable!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "binaire par2... Introuvable!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Votre version de UNRAR est %s, nous recommandons la version %s ou plus.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "binaire unrar... Introuvable!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "binaire unzip... Introuvable!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "Binaire 7za ... Introuvable!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -60,11 +73,11 @@ msgstr ""
"S'il vous plaît soyez conscient que l'Hôte 0.0.0.0 aura besoin d'une adresse "
"IPv6 pour les accès externes"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "Les ports HTTP et HTTPS ne peuvent pas être identiques"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
@@ -73,35 +86,35 @@ msgstr ""
"Attendez-vous à des problèmes avec les noms de fichiers et de répertoires "
"Unicode dans les téléchargements."
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
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:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr "Impossible de relier le port configuré. Port modifié à %s"
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Impossible de démarrer l'interface web : "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Impossible d'accéder au service SABHelper"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s démarré"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Avertissement"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Erreur"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "Arrêt de SABnzbd terminé"
@@ -235,7 +248,6 @@ msgid "None"
msgstr "Aucun"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Par défaut"
@@ -315,14 +327,14 @@ msgstr "%s manquant(s)"
msgid ""
"Job \"%s\" is probably encrypted due to RAR with same name inside this RAR"
msgstr ""
"La tâche \"% est probablement chiffrée en raison d'un RAR ayant le même nom "
"à l'intérieur de ce RAR"
"La tâche \"%s\" est probablement chiffrée en raison d'un RAR ayant le même "
"nom à l'intérieur de ce RAR"
#: sabnzbd/assembler.py:302 [Warning message]
msgid "Job \"%s\" is probably encrypted: \"password\" in filename \"%s\""
msgstr ""
"La tâche \"% est probablement chiffrée : \"password\" dans le nom de fichier "
"\"%s\""
"La tâche \"%s\" est probablement chiffrée : \"password\" dans le nom de "
"fichier \"%s\""
#: sabnzbd/assembler.py:425
msgid "video"
@@ -424,27 +436,27 @@ msgstr "Impossible de fermer la base de données, voir le journal"
msgid "Invalid stage logging in history for %s"
msgstr "Étape de journalisation invalide dans l'historique pour %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Échec du décodage de %s"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr "Échec du décodeur : mémoire insuffisante"
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "Erreur CRC dans %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Article yEnc mal construit dans %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Erreur inconnue lors du décodage de %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "UUencode détecté, seul l'encodage yEnc est compatible [%s]"
@@ -993,32 +1005,32 @@ msgstr "Paquet principal introuvable..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Fichiers par2 non valides, impossible de vérifier ou réparer"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Échec de la réparation, pas assez de blocs de réparation (manque %s)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Récupération de %s blocs..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Récupération en cours"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Réparation en cours"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Réparé(s) dans %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Vérification en cours"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
"Le script Python \"%s\" n'est pas configuré avec les permissions dexécution "
@@ -3649,16 +3661,20 @@ msgstr "Vérification du certificat"
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
"Par défaut : lorsque SSL est activé, vérifie l'identité du serveur à l'aide "
"de ses certificats. Strict : vérifie et applique le nom d'hôte correspondant."
"Minimal: lorsque SSL est activé, vérifier l'identité du serveur à l'aide de "
"ses certificats. Strict: vérifier et imposer le nom d'hôte correspondant."
#: sabnzbd/skintext.py:547 # sabnzbd/skintext.py:782 # sabnzbd/skintext.py:895
msgid "Disabled"
msgstr "Désactivé"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr "Minimal"
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr "Strict"

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2016-07-16 16:44+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Norwegian Bokmal <nb@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:18+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,77 +25,87 @@ msgstr "Kunne ikke starte webgrensesnittet"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Kan ikke finne webmal: %s, prøver standardmal"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc-modul... IKKE funnet!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2-binærfil... IKKE funnet!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Din Unrar-versjon er %s, vi anbefaler versjon %s eller høyere. <br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar-binærfil... IKKE funnet!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip-binærfil... IKKE funnet!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za-binærfil... IKKE funnet!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
msgstr ""
"Husk at vertsnavnet 0.0.0.0 krever en IPv6-adresse for ekstern tilgang"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP og HTTPS-portene kan ikke være det samme"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Deaktiverte HTTPS på grunn av manglende CERT- og KEY-filer."
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Kunne ikke starte webgrensesnittet: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Kan ikke nå SABHelper-tjenesten"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s startet"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Advarsel"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Feil"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd er nå avsluttet"
@@ -223,7 +233,6 @@ msgid "None"
msgstr "Ingen"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Standard"
@@ -397,27 +406,27 @@ msgstr "Kunne ikke stenge databasen, se logg"
msgid "Invalid stage logging in history for %s"
msgstr "Ugyldig scenen logging i historien for %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Dekoding av %s mislyktes"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC-feil i %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Feilaktigt utformet yEnc artikkel i %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Ukjent feil oppstod under dekoding av %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -951,33 +960,33 @@ msgstr "Hovedarkiv mangler..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Ugyldige par2-filer, kan ikke kontrollere eller reparere"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr ""
"Mislykket reparasjon, finner ikke nødvendige reparasjonsblokker (%s mangler)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Henter %s blokker..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Henter"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Reparerer"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Reparert på %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Verifiserer"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3529,7 +3538,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3537,6 +3546,10 @@ msgstr ""
msgid "Disabled"
msgstr "Deaktivert"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

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: 2017-04-02 15:51+0000\n"
"PO-Revision-Date: 2017-03-18 21:41+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2017-04-13 12:42+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: 2017-04-05 07:18+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,32 +25,45 @@ msgstr "Webinterface kan niet gestart worden"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Websjabloon %s niet te vinden; het standaardsjabloon wordt gebruikt."
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
"SABYenc uitgeschakeld, geen bruikbare versie gevonden! (V%s gevonden, V%s "
"verwacht)"
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
"SABYenc module... NIET gevonden! Verwacht V%s - https://sabnzbd.org/sabyenc"
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc-module niet gevonden."
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2-programma niet gevonden."
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"De UNRAR-versie is %s, we adviseren versie %s of hoger te gebruiken.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar-programma niet gevonden."
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip-programma niet gevonden."
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za-programma niet gevonden."
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -58,11 +71,11 @@ msgstr ""
"Let op: als je 0.0.0.0 als hostnaam gebruikt, heb je voor externe toegang "
"een IPv6-adres nodig"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP- en HTTPS-poort kunnen niet hetzelfde zijn"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
@@ -71,36 +84,36 @@ msgstr ""
"bij het downloaden, problemen krijgen met Unicode namen van bestanden en "
"mappen."
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS is uitgeschakeld vanwege ontbrekende CERT- en KEY-bestanden"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
"Kan geen verbinding maken met ingestelde poort. Poort gewijzigd in %s"
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Gebruikersinterface kon niet gestart worden: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Geen verbinding mogelijk met de SABHelper-service"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s is gestart"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Waarschuwing"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Fout"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd is afgesloten"
@@ -231,7 +244,6 @@ msgid "None"
msgstr "Geen"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Standaard"
@@ -310,10 +322,14 @@ msgstr "%s ontbreekt"
msgid ""
"Job \"%s\" is probably encrypted due to RAR with same name inside this RAR"
msgstr ""
"Opdracht \"%s\" is waarschijnlijk versleuteld omdat en een RAR met dezelfde "
"naam in de hoofd RAR zit."
#: sabnzbd/assembler.py:302 [Warning message]
msgid "Job \"%s\" is probably encrypted: \"password\" in filename \"%s\""
msgstr ""
"Opdracht \"%s\" is waarschijnlijk versleuteld, omdat \"password\" in de naam "
"\"%s\" voor komt."
#: sabnzbd/assembler.py:425
msgid "video"
@@ -414,27 +430,27 @@ msgstr "Het lukt niet om de database te sluiten, zie log"
msgid "Invalid stage logging in history for %s"
msgstr "Ongeldig loggen van fase in geschiedenis voor %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Decoderen van %s mislukt"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr "Decoder fout: onvoldoende geheugen"
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC-fout in %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Slecht opgemaakt yEnc-artikel in %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Onbekende fout tijdens het decoderen van %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "UUencode gevonden, SABnzbd verwerkt alleen yEnc-codering [%s]"
@@ -852,11 +868,11 @@ msgstr "FOUT: onjuiste CRC in \"%s\""
#: sabnzbd/newsunpack.py:658 # sabnzbd/newsunpack.py:659
msgid "Unpacking failed, file too large for filesystem (FAT?)"
msgstr ""
msgstr "Uitplakken mislukt, bestand te groot voor het bestandssysteem (FAT?)"
#: sabnzbd/newsunpack.py:662 [Error message]
msgid "ERROR: File too large for filesystem (%s)"
msgstr ""
msgstr "FOUT: bestand te groot voor het bestandssysteem (%s)"
#: sabnzbd/newsunpack.py:666 # sabnzbd/newsunpack.py:667
#: sabnzbd/newsunpack.py:685 # sabnzbd/newsunpack.py:686
@@ -970,32 +986,32 @@ msgstr "Hoofdpakket niet gevonden..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Ongeldige par2-bestanden, verificatie of reparatie niet mogelijk"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Reparatie mislukt, te weinig herstelblokken (%s tekort)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Ophalen van %s blokken..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Ophalen"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Repareren"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Reparatie in %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Verifiëren"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python-script '%s' heeft geen uitvoerpermissie (+x)"
@@ -3585,17 +3601,20 @@ msgstr "Certificaat verificatie"
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
"Standaard: wanneer SSL aktief is, verifieer de identiteit van de server "
"m.b.v. diens certificaten. Strikt: verifieer ook of de server naam "
"overeenkomt met het certificaat."
"Minimaal: wanneer SSL een staat, controleer de identiteit van de server "
"m.b.v. de certificaten. Strikt: controleer en eis een correcte server naam."
#: sabnzbd/skintext.py:547 # sabnzbd/skintext.py:782 # sabnzbd/skintext.py:895
msgid "Disabled"
msgstr "Uit"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr "Minimaal"
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr "Strikt"

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2015-12-28 10:22+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Polish <pl@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,75 +25,85 @@ msgstr "Nie udało się uruchomić interfejsu WWW"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Nie znaleziono szablonu: %s, próbuję użyć standardowego szablonu"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "Moduł _yenc... NIE znaleziono!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "Program par2 ... NIE znaleziono!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr "Twoja wersja unrar to %s, zalecana jest wersja %s lub wyższa.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "Program unrar ... NIE znaleziono!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "Program unzip ... NIE znaleziono!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "Program 7za... NIE znaleziono!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
msgstr "Nazwa hosta 0.0.0.0 wymaga adresu IPv6 do dostępu z zewnątrz"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "Porty dla HTTP i HTTPS nie mogą być takie same"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Wyłączono HTTPS z powodu braku plików CERT oraz KEY"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Nie udało się uruchomić interfejsu WWW: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Nie można połączyć się z usługą SABHelper"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "Uruchomiono SABnzbd %s"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Ostrzeżenie"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Błąd"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd został wyłączony"
@@ -226,7 +236,6 @@ msgid "None"
msgstr "Brak"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Domyślne"
@@ -402,27 +411,27 @@ msgstr "Błąd zamykania bazy danych, sprawdź logi"
msgid "Invalid stage logging in history for %s"
msgstr "Nieprawidłowy log etapu w historii dla %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Błąd dekodowania %s"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "Błąd CRC w %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Źle zbudowany artykuł yEnc w %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Nieznany błąd podczas dekodowania %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -960,34 +969,34 @@ msgstr "Główny pakiet nieznaleziony..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Nieprawidłowe pliki par2, nie można zweryfikować lub naprawić"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr ""
"Naprawa nie powiodła się, brak wystarczającej ilości bloków naprawczych "
"(brakuje %s)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Pobieranie %s bloków..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Pobieranie"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Naprawianie"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Naprawiono w %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Weryfikowanie"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3553,7 +3562,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3561,6 +3570,10 @@ msgstr ""
msgid "Disabled"
msgstr "Wyłączone"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2016-01-01 22:58+0000\n"
"Last-Translator: lrrosa <Unknown>\n"
"Language-Team: Brazilian Portuguese <pt_BR@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:48+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -26,32 +26,42 @@ msgid "Cannot find web template: %s, trying standard template"
msgstr ""
"Não foi possível encontrar o template web: %s. Tentando o template padrão"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "módulo _yenc... NÃO encontrado!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "aplicativo par2... NÃO encontrado!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Sua versão UNRAR é %s, nós recomendamos a versão %s ou superior.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "aplicativo unrar... NÃO encontrado!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "aplicativo unzip... NÃO encontrado!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "aplicativo 7za... NÃO encontrado!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -59,45 +69,45 @@ msgstr ""
"Esteja ciente de que o nome de host 0.0.0.0 vai precisar de um endereço IPv6 "
"para acesso externo"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "Portas HTTP e HTTPS não podem ser iguais"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS desabilitado pela falta de arquivos CERT e KEY"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Falha ao iniciar a interface web "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Não foi possível localizar o serviço SABHelper"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s iniciado"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Alerta"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Erro"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "Encerramento do SABnzbd concluído"
@@ -226,7 +236,6 @@ msgid "None"
msgstr "Nenhum"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Padrão"
@@ -404,27 +413,27 @@ msgstr "Falha ao fechar o banco de dados. Consulte o log"
msgid "Invalid stage logging in history for %s"
msgstr "Registro inválido de etapa no histórico para %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Falha ao decodificar %s"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "Erro de CRC em %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Artigo yEnc mal formado em %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Erro desconhecido ao decodificar %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -959,32 +968,32 @@ msgstr "Pacote principal não encontrado..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Arquivos PAR2 inválidos. Não é possível verificar ou reparar"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Reparação falhou. Blocos de reparação insuficientes (faltam %s)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Obtendo %s blocos..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Obtendo"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Reparando"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Reparado em %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Verificando"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3552,7 +3561,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3560,6 +3569,10 @@ msgstr ""
msgid "Disabled"
msgstr "Desativado"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2016-07-29 16:20+0000\n"
"Last-Translator: nicusor <Unknown>\n"
"Language-Team: Romanian <ro@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,33 +25,43 @@ msgstr "Pornirea interfeţei-web nereuşită"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Nu se poate găsi şablon web:%s, se încearcă şablon standard"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "modulul _yenc ... Negăsit!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "binar par2 ... Negăsit!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Versiunea ta de UNRAR este %s, noi recomandăm versiunea %s sau mai mare.<br "
"/>"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "binar unrar... Negăsit!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "binar unzip... Negăsit!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "Fişier executabil 7za ... Indisponibil!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -59,45 +69,45 @@ msgstr ""
"Vă rugăm să fiţi conştienţi că numele gazdei 0.0.0.0 va avea nevoie de o "
"adresa IPv6 pentru acces extern"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "Porturile HTTP și HTTPS nu pot fi aceleași"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Dezactivează HTTPS din cauza lipsei fişierelor CERT şi KEY"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Nu am putu porni interfața web: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Nu pot contacta serviciul SABHelper"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s pornit"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Avertisment"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Eroare"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "Închidere SABnzbd terminată"
@@ -229,7 +239,6 @@ msgid "None"
msgstr "Niciunul"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Implicit"
@@ -406,27 +415,27 @@ msgstr "Închidere bază de date nereuşită, vedeţi jurnal"
msgid "Invalid stage logging in history for %s"
msgstr "Jurnal istoric stagii invalid pentru %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Decodarea %s nereuşită"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "Eroare CRC în %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Articoul yEnc invalid în %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Eroare Necunoscută în timpul decodării %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -963,32 +972,32 @@ msgstr "Pachet principal negăsit..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Fișier par2 invalid, nu pot verifica sau repara"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Reparare nereuşită, blocuri reparare insuficiente (%s mai puţin)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Descărcare %s blocuri..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Descărcare"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Se repară"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Reparat în %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Se verifică"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3555,7 +3564,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3563,6 +3572,10 @@ msgstr ""
msgid "Disabled"
msgstr "Dezactivat"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

View File

@@ -2,15 +2,15 @@ msgid ""
msgstr ""
"Project-Id-Version: SABnzbd-0.7.x\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2013-05-05 14:50+0000\n"
"Last-Translator: Pavel Maryanov <Unknown>\n"
"Language-Team: Russian <gmu@mx.ru>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
"Generated-By: pygettext.py 1.5\n"
#: SABnzbd.py:257 [Error message]
@@ -23,31 +23,41 @@ msgstr ""
"Не удаётся найти шаблон веб-интерфейса: %s. Выполняется попытка использовать "
"стандартный шаблон"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "Модуль _yenc... НЕ найден"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "Исполняемый файл par2... НЕ найден"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "Исполняемый файл unrar... НЕ найден"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "Исполняемый файл unzip... НЕ найден"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr ""
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
@@ -55,45 +65,45 @@ msgstr ""
"Учтите, что для имени компьютера 0.0.0.0 потребуется IPv6-адрес для внешнего "
"доступа"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr ""
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS отключён, поскольку отсутствуют файлы CERT и KEY"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr ""
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr ""
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr ""
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Предупреждение"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr ""
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "Завершение работы SABnzbd закончено"
@@ -221,7 +231,6 @@ msgid "None"
msgstr "Ничего"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "по умолчанию"
@@ -395,27 +404,27 @@ msgstr "Не удалось закрыть базу данных (см. журн
msgid "Invalid stage logging in history for %s"
msgstr "Недопустимый этап ведения журнала для %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Ошибка декодирования %s"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "Ошибка CRC в %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Неверно сформированная статья yEnc в %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Неизвестная ошибка декодирования %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -950,33 +959,33 @@ msgstr "Главный пакет не найден..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Недопустимые PAR2-файлы. Нельзя выполнить проверку или исправление"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr ""
"Ошибка исправления: недостаточно блоков восстановления (не хватает %s)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "загрузка %s блоков..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Загрузка"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Исправление"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Исправлено за %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Проверка"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3524,7 +3533,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3532,6 +3541,10 @@ msgstr ""
msgid "Disabled"
msgstr "отключено"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

View File

@@ -7,15 +7,15 @@ msgid ""
msgstr ""
"Project-Id-Version: sabnzbd\n"
"Report-Msgid-Bugs-To: ОZZII <ozzii.translate@gmail.com>\n"
"POT-Creation-Date: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2015-12-28 10:25+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Serbian <sr@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,77 +25,87 @@ msgstr "Neuspešno pokretanje web interfejsa"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Немогуће наћи веб модел: %s, програм покушава са стандардним моделом"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc modul... NIJE pronađen!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 program...NIJE pronađen!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Verzija vašeg UNRAR-a je %s, mi preporučujemo verziju %s ili noviju.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar program...NIJE pronađen!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip program...NIJE pronađen"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za program...NIJE pronađen"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
msgstr ""
"Obratite pažnju, hostu 0.0.0.0 će trebati IPv6 adresa za pristup spolja"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP i HTTPS portovi ne mogu biti isti"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "HTTPS onemogućen zbog nedostajućih CERT i KEY datoteka"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Neuspešno pokretanje web interfejsa: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Nemoguće pristupiti SABHelper servisu"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s покренут"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Упозорење"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Грeшкa"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "Гашење SABnzbd је завршено"
@@ -223,7 +233,6 @@ msgid "None"
msgstr "Ниједно"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Подразумевано"
@@ -399,27 +408,27 @@ msgstr "Неуспешно затварање базе, видети извеш
msgid "Invalid stage logging in history for %s"
msgstr "Погрешне етапе извештаја можете наћи у хронологији за %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Dešifrovanje %s neuspešno"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC грешка у %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Лоше формиран yEnc артикал у %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Nepoznata greška pri dešifrovanju %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -952,32 +961,32 @@ msgstr "Главни пакет није нађен..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Погрешне par2 дат., не може да се провери/поправи"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "Погрешна поправка, нема довољно блокова за поправку (фали %s)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Учитавање %s блокова..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Добављам"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Поправљање"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Поправљено за %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Проверавање"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3519,7 +3528,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3527,6 +3536,10 @@ msgstr ""
msgid "Disabled"
msgstr "Онемогућено"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2016-02-20 20:34+0000\n"
"Last-Translator: shypike <Unknown>\n"
"Language-Team: Swedish <sv@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:47+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,77 +25,87 @@ msgstr "Det gick inte att starta webbgränssnittet"
msgid "Cannot find web template: %s, trying standard template"
msgstr "Hittar inte webbmall: %s, försöker med standardmall"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc modul... EJ funnen!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 binär... EJ funnen!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr ""
"Din UNRAR version är %s, vi rekommenderar version %s eller högre.<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar binär... EJ funnen!"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip binär... EJ funnen!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za binär... EJ funnen!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
msgstr ""
"Tänk på att värdnamnet 0.0.0.0 behöver en IPv6-adress för extern åtkomst"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP och HTTPS portar kan inte vara likadana"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "Avaktiverade HTTPS då CERT och KEY -filer saknas"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr ""
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "Misslyckades att starta webbgränsnitt: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "Kan inte nå SABHelper tjänsten"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s startad"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "Varning"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "Fel"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd nedstängning utförd."
@@ -224,7 +234,6 @@ msgid "None"
msgstr "Ingen"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "Standard"
@@ -400,27 +409,27 @@ msgstr "Det gick inte att stänga databasen, se logg"
msgid "Invalid stage logging in history for %s"
msgstr "Felaktig loggning i historiken av %s"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "Avkodning av %s misslyckades"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr ""
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC Fel i %s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "Felaktigt utformad yEnc artikel i %s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "Okänt fel under avkodning av %s"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr ""
@@ -956,33 +965,33 @@ msgstr "Huvudarkiv saknas..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "Korrupta par2 filer, kan inte verifiera eller reparera"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr ""
"Misslyckad reparation, finns ej tillräckligt med reparationsblock (%s saknas)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "Hämtar %s block..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "Hämtar"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "Reparerar"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] Reparerad i %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "Verifierar"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr ""
@@ -3535,7 +3544,7 @@ msgstr ""
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr ""
@@ -3543,6 +3552,10 @@ msgstr ""
msgid "Disabled"
msgstr "Avaktiverad"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
msgstr ""

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: 2017-04-02 15:51+0000\n"
"POT-Creation-Date: 2017-04-08 07:51+0000\n"
"PO-Revision-Date: 2017-02-24 12:59+0000\n"
"Last-Translator: ninjai <ninjai.us@gmail.com>\n"
"Language-Team: Chinese (Simplified) <zh_CN@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-04-05 07:19+0000\n"
"X-Generator: Launchpad (build 18335)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:48+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: SABnzbd.py:257 [Error message]
msgid "Failed to start web-interface"
@@ -25,75 +25,85 @@ msgstr "web 界面启动失败"
msgid "Cannot find web template: %s, trying standard template"
msgstr "无法找到 web 模板: %s正在尝试标准模板"
#: SABnzbd.py:416 [Error message]
#: SABnzbd.py:415 [Warning message]
msgid ""
"SABYenc disabled: no correct version found! (Found v%s, expecting v%s)"
msgstr ""
#: SABnzbd.py:418 [Warning message]
msgid ""
"SABYenc module... NOT found! Expecting v%s - https://sabnzbd.org/sabyenc"
msgstr ""
#: SABnzbd.py:424 [Error message]
msgid "_yenc module... NOT found!"
msgstr "_yenc 模块... *未* 找到!"
#: SABnzbd.py:426 [Error message]
#: SABnzbd.py:434 [Error message]
msgid "par2 binary... NOT found!"
msgstr "par2 可执行程序... *未* 找到!"
#: SABnzbd.py:438 [Warning message]
#: SABnzbd.py:446 [Warning message]
msgid "Your UNRAR version is %s, we recommend version %s or higher.<br />"
msgstr "您的 UNRAR 程序版本为 %s我们建议使用 %s 或更高版本。<br />"
#: SABnzbd.py:442 [Error message]
#: SABnzbd.py:450 [Error message]
msgid "unrar binary... NOT found"
msgstr "unrar 可执行程序... *未* 找到"
#: SABnzbd.py:447
#: SABnzbd.py:455
msgid "unzip binary... NOT found!"
msgstr "unzip 可执行程序... *未* 找到!"
#: SABnzbd.py:452
#: SABnzbd.py:460
msgid "7za binary... NOT found!"
msgstr "7za 可执行程序... *未*找到!"
#: SABnzbd.py:602 [Warning message]
#: SABnzbd.py:610 [Warning message]
msgid ""
"Please be aware the 0.0.0.0 hostname will need an IPv6 address for external "
"access"
msgstr "请注意 0.0.0.0 主机名需要 IPv6 地址才能从外部访问"
#: SABnzbd.py:632 [Error message]
#: SABnzbd.py:640 [Error message]
msgid "HTTP and HTTPS ports cannot be the same"
msgstr "HTTP 与 HTTPS 端口不能相同"
#: SABnzbd.py:1190 [Warning message]
#: SABnzbd.py:1198 [Warning message]
msgid ""
"SABnzbd was started with encoding %s, this should be UTF-8. Expect problems "
"with Unicoded file and directory names in downloads."
msgstr ""
#: SABnzbd.py:1284 [Warning message]
#: SABnzbd.py:1292 [Warning message]
msgid "Disabled HTTPS because of missing CERT and KEY files"
msgstr "由于缺少 CERT 及 KEY 文件,已禁用 HTTPS"
#: SABnzbd.py:1383 [Warning message]
#: SABnzbd.py:1391 [Warning message]
msgid "Could not bind to configured port. Port changed to %s"
msgstr "无法绑定到设定的端口。端口变更为 %s"
#: SABnzbd.py:1392 [Error message]
#: SABnzbd.py:1400 [Error message]
msgid "Failed to start web-interface: "
msgstr "无法启动 web 界面: "
#: SABnzbd.py:1413 [Error message]
#: SABnzbd.py:1421 [Error message]
msgid "Cannot reach the SABHelper service"
msgstr "无法连接 SABHelper 服务"
#: SABnzbd.py:1449
#: SABnzbd.py:1457
msgid "SABnzbd %s started"
msgstr "SABnzbd %s 已启动"
#: SABnzbd.py:1460 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
#: SABnzbd.py:1468 # sabnzbd/notifier.py:71 [Notification] # sabnzbd/skintext.py:279 [Status page, table column header, actual message]
msgid "Warning"
msgstr "警告"
#: SABnzbd.py:1464 # sabnzbd/notifier.py:72 [Notification]
#: SABnzbd.py:1472 # sabnzbd/notifier.py:72 [Notification]
msgid "Error"
msgstr "错误"
#: SABnzbd.py:1563 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: SABnzbd.py:1571 # sabnzbd/interface.py:438 # sabnzbd/interface.py:904
#: sabnzbd/osxmenu.py:772
msgid "SABnzbd shutdown finished"
msgstr "SABnzbd 关闭完成"
@@ -220,7 +230,6 @@ msgid "None"
msgstr "无"
#: sabnzbd/api.py:1590 # sabnzbd/interface.py:117 # sabnzbd/skintext.py:90 [Default value, used in dropdown menus]
#: sabnzbd/skintext.py:548
msgid "Default"
msgstr "默认"
@@ -394,27 +403,27 @@ msgstr "无法关闭数据库,参见日志"
msgid "Invalid stage logging in history for %s"
msgstr "%s 历史信息中 stage 日志无效"
#: sabnzbd/decoder.py:118
#: sabnzbd/decoder.py:119
msgid "Decoding %s failed"
msgstr "%s 解码失败"
#: sabnzbd/decoder.py:128
#: sabnzbd/decoder.py:129
msgid "Decoder failure: Out of memory"
msgstr "解码器失败:内存不足"
#: sabnzbd/decoder.py:140
#: sabnzbd/decoder.py:141
msgid "CRC Error in %s (%s -> %s)"
msgstr "CRC 错误:%s (%s -> %s)"
#: sabnzbd/decoder.py:172
#: sabnzbd/decoder.py:173
msgid "Badly formed yEnc article in %s"
msgstr "yEnc 文章格式错误:%s"
#: sabnzbd/decoder.py:182
#: sabnzbd/decoder.py:183
msgid "Unknown Error while decoding %s"
msgstr "解码 %s 时发生未知错误"
#: sabnzbd/decoder.py:250
#: sabnzbd/decoder.py:251
msgid "UUencode detected, only yEnc encoding is supported [%s]"
msgstr "检测到 UUencode但是仅有 yEnc 编码受支持 [%s]"
@@ -937,32 +946,32 @@ msgstr "主数据包未找到..."
msgid "Invalid par2 files, cannot verify or repair"
msgstr "par2 文件无效,无法验证或修复"
#: sabnzbd/newsunpack.py:1380 # sabnzbd/newsunpack.py:1415
#: sabnzbd/newsunpack.py:1391 # sabnzbd/newsunpack.py:1426
msgid "Repair failed, not enough repair blocks (%s short)"
msgstr "修复失败,修复块不足 (缺 %s 块)"
#: sabnzbd/newsunpack.py:1410
#: sabnzbd/newsunpack.py:1421
msgid "Fetching %s blocks..."
msgstr "正在装取 %s 块..."
#: sabnzbd/newsunpack.py:1412
#: sabnzbd/newsunpack.py:1423
msgid "Fetching"
msgstr "正在装取"
#: sabnzbd/newsunpack.py:1423 # sabnzbd/newsunpack.py:1428
#: sabnzbd/newsunpack.py:1434 # sabnzbd/newsunpack.py:1439
msgid "Repairing"
msgstr "正在修复"
#: sabnzbd/newsunpack.py:1432
#: sabnzbd/newsunpack.py:1443
msgid "[%s] Repaired in %s"
msgstr "[%s] 已修复,耗时 %s"
#: sabnzbd/newsunpack.py:1485 # sabnzbd/newsunpack.py:1500
#: sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1503 # sabnzbd/newsunpack.py:1518
#: sabnzbd/newsunpack.py:1536
msgid "Verifying"
msgstr "正在验证"
#: sabnzbd/newsunpack.py:1622 [Error message]
#: sabnzbd/newsunpack.py:1640 [Error message]
msgid "Python script \"%s\" does not have execute (+x) permission set"
msgstr "Python 脚本 \"%s\" 不具有执行 (+x) 权限"
@@ -3458,14 +3467,18 @@ msgstr "证书验证"
#: sabnzbd/skintext.py:546
msgid ""
"Default: when SSL is enabled, verify the identity of the server using its "
"Minimal: when SSL is enabled, verify the identity of the server using its "
"certificates. Strict: verify and enforce matching hostname."
msgstr "默认:当 SSL 启用时,使用其证书来验证服务器身份。严格:验证并强制主机名一致。"
msgstr ""
#: sabnzbd/skintext.py:547 # sabnzbd/skintext.py:782 # sabnzbd/skintext.py:895
msgid "Disabled"
msgstr "禁用"
#: sabnzbd/skintext.py:548
msgid "Minimal"
msgstr ""
#: sabnzbd/skintext.py:549
msgid "Strict"
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: 2017-03-18 21:42+0000\n"
"PO-Revision-Date: 2017-03-14 16:11+0000\n"
"Last-Translator: Rene <Unknown>\n"
"PO-Revision-Date: 2017-04-10 11:28+0000\n"
"Last-Translator: Safihre <safihre@sabnzbd.org>\n"
"Language-Team: Danish <da@li.org>\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Launchpad-Export-Date: 2017-03-19 06:37+0000\n"
"X-Generator: Launchpad (build 18332)\n"
"X-Launchpad-Export-Date: 2017-04-14 05:48+0000\n"
"X-Generator: Launchpad (build 18352)\n"
#: NSIS_Installer.nsi:473
msgid "Show Release Notes"
@@ -38,7 +38,7 @@ msgid ""
"The installation directory has changed (now in \"Program Files\"). \\nIf you "
"run SABnzbd as a service, you need to update the service settings."
msgstr ""
"Installationsmappen er ændret (nu i \"Program Files \"). \\Hvis du kører "
"Installationsmappen er ændret (nu i \"Program Files \"). \\nHvis du kører "
"SABnzbd som en tjeneste, skal du opdatere tjenesteindstillingerne."
#: NSIS_Installer.nsi:483

View File

@@ -83,10 +83,8 @@ class Assembler(Thread):
try:
filepath = _assemble(nzf, filepath, dupe)
except IOError, (errno, strerror):
if nzo.is_gone():
# Job was deleted, ignore error
pass
else:
# If job was deleted, ignore error
if not nzo.is_gone():
# 28 == disk full => pause downloader
if errno == 28:
logging.error(T('Disk full! Forcing Pause'))
@@ -94,6 +92,7 @@ class Assembler(Thread):
logging.error(T('Disk error on creating file %s'), clip_path(filepath))
# Pause without saving
sabnzbd.downloader.Downloader.do.pause(save=False)
continue
except:
logging.error(T('Fatal error in Assembler'), exc_info=True)
break
@@ -105,6 +104,11 @@ class Assembler(Thread):
if pack:
nzo.md5packs[setname] = pack
logging.debug('Got md5pack for set %s', setname)
# Valid md5pack, so use this par2-file as main par2 file for the set
if setname in nzo.partable:
# First copy the set of extrapars, we need them later
nzf.extrapars = nzo.partable[setname].extrapars
nzo.partable[setname] = nzf
rar_encrypted, unwanted_file = check_encrypted_and_unwanted_files(nzo, filepath)
if rar_encrypted:

View File

@@ -380,7 +380,6 @@ osx_speed = OptionBool('misc', 'osx_speed', True)
keep_awake = OptionBool('misc', 'keep_awake', True)
win_menu = OptionBool('misc', 'win_menu', True)
allow_incomplete_nzb = OptionBool('misc', 'allow_incomplete_nzb', False)
prospective_par_download = OptionBool('misc', 'prospective_par_download', True)
marker_file = OptionStr('misc', 'nomedia_marker', '')
wait_ext_drive = OptionNumber('misc', 'wait_ext_drive', 5, 1, 60)
queue_limit = OptionNumber('misc', 'queue_limit', 20, 0)

View File

@@ -127,7 +127,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_])' # something-sample.avi
sample_match = r'((^|[\W_])(sample|proof))' # something-sample or something-proof
class Status():

View File

@@ -178,7 +178,7 @@ class Decoder(Thread):
logging.info(logme)
if not found or killed:
new_server_found = sabnzbd.downloader.Downloader.do.search_new_server(article)
new_server_found = self.__search_new_server(article)
if new_server_found:
register = False
logme = None
@@ -187,7 +187,7 @@ class Decoder(Thread):
logme = T('Unknown Error while decoding %s') % art_id
logging.info(logme)
logging.info("Traceback: ", exc_info=True)
new_server_found = sabnzbd.downloader.Downloader.do.search_new_server(article)
new_server_found = self.__search_new_server(article)
if new_server_found:
register = False
logme = None
@@ -199,7 +199,7 @@ class Decoder(Thread):
nzo.inc_log('bad_art_log', art_id)
else:
new_server_found = sabnzbd.downloader.Downloader.do.search_new_server(article)
new_server_found = self.__search_new_server(article)
if new_server_found:
register = False
elif nzo.precheck:
@@ -211,6 +211,23 @@ class Decoder(Thread):
if register:
sabnzbd.nzbqueue.NzbQueue.do.register_article(article, found)
def __search_new_server(self, article):
# Search new server
article.add_to_try_list(article.fetcher)
for server in self.servers:
if server.active and not article.server_in_try_list(server):
if server.priority >= article.fetcher.priority:
article.fetcher = None
article.tries = 0
# Allow all servers for this nzo and nzf again (but not for this article)
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article.nzf, article.nzf.nzo)
return True
msg = T('%s => missing from all servers, discarding') % article
logging.debug(msg)
article.nzf.nzo.inc_log('missing_art_log', msg)
return False
YDEC_TRANS = ''.join([chr((i + 256 - 42) % 256) for i in xrange(256)])
def decode(article, data, raw_data):

View File

@@ -270,7 +270,6 @@ class Downloader(Thread):
""" Pause the downloader, optionally saving admin """
if not self.paused:
self.paused = True
self.can_be_slowed = None
logging.info("Pausing")
notifier.send_notification("SABnzbd", T('Paused'), 'download')
if self.is_paused():
@@ -327,7 +326,6 @@ class Downloader(Thread):
else:
self.speed_set()
logging.info("Speed limit set to %s B/s", self.bandwidth_limit)
self.can_be_slowed = None
def get_limit(self):
return self.bandwidth_perc
@@ -533,7 +531,7 @@ class Downloader(Thread):
# Why check so often when so few things happened?
if self.can_be_slowed and len(readkeys) >= 8 and len(read) <= 2:
time.sleep(0.05)
time.sleep(0.01)
# Need to initialize the check during first 20 seconds
if self.can_be_slowed is None or self.can_be_slowed_timer:
@@ -613,7 +611,6 @@ class Downloader(Thread):
if nzo:
nzo.update_download_stats(BPSMeter.do.get_bps(), server.id, bytes)
to_decoder = True
if not done and nw.status_code != '222':
if not nw.connected or nw.status_code == '480':
done = False
@@ -717,12 +714,9 @@ class Downloader(Thread):
elif nw.status_code in ('411', '423', '430'):
done = True
to_decoder = False
logging.debug('Thread %s@%s: Article %s missing (error=%s)',
logging.info('Thread %s@%s: Article %s missing (error=%s)',
nw.thrdnum, nw.server.id, article.article, nw.status_code)
# Search for new article
if not self.search_new_server(article):
sabnzbd.nzbqueue.NzbQueue.do.register_article(article, False)
nw.clear_data()
elif nw.status_code == '480':
if server.active:
@@ -750,10 +744,7 @@ class Downloader(Thread):
server.errormsg = server.warning = ''
if sabnzbd.LOG_ALL:
logging.debug('Thread %s@%s: %s done', nw.thrdnum, server.id, article.article)
# Missing articles are not decoded
if to_decoder:
self.decode(article, nw.lines, nw.data)
self.decode(article, nw.lines, nw.data)
nw.soft_reset()
server.busy_threads.remove(nw)
@@ -844,23 +835,6 @@ class Downloader(Thread):
logging.info("Traceback: ", exc_info=True)
self.__reset_nw(nw, "server broke off connection", quit=False)
def search_new_server(self, article):
# Search new server
article.add_to_try_list(article.fetcher)
for server in self.servers:
if server.active and not article.server_in_try_list(server):
if server.priority >= article.fetcher.priority:
article.fetcher = None
article.tries = 0
# Allow all servers for this nzo and nzf again (but not for this article)
sabnzbd.nzbqueue.NzbQueue.do.reset_try_lists(article.nzf, article.nzf.nzo)
return True
msg = T('%s => missing from all servers, discarding') % article
logging.debug(msg)
article.nzf.nzo.inc_log('missing_art_log', msg)
return False
#------------------------------------------------------------------------------
# Timed restart of servers admin.
# For each server all planned events are kept in a list.

View File

@@ -257,7 +257,12 @@ def check_apikey(kwargs, nokey=False):
Return None when OK, otherwise an error message
"""
def log_warning(txt):
txt = '%s %s>%s' % (txt, cherrypy.request.remote.ip, cherrypy.request.headers.get('User-Agent', '??'))
# Was it proxy forwarded?
xff = cherrypy.request.headers.get('X-Forwarded-For')
if xff:
txt = '%s %s (X-Forwarded-For: %s)>%s' % (txt, cherrypy.request.remote.ip, xff, cherrypy.request.headers.get('User-Agent', '??'))
else:
txt = '%s %s>%s' % (txt, cherrypy.request.remote.ip, cherrypy.request.headers.get('User-Agent', '??'))
logging.warning('%s', txt)
output = kwargs.get('output')
@@ -482,8 +487,14 @@ class MainPage(object):
def api(self, **kwargs):
""" Handler for API over http, with explicit authentication parameters """
if cfg.api_logging():
logging.debug('API-call from %s [%s] %s', cherrypy.request.remote.ip,
cherrypy.request.headers.get('User-Agent', '??'), kwargs)
# Was it proxy forwarded?
xff = cherrypy.request.headers.get('X-Forwarded-For')
if xff:
logging.debug('API-call from %s (X-Forwarded-For: %s) [%s] %s', cherrypy.request.remote.ip,
xff, cherrypy.request.headers.get('User-Agent', '??'), kwargs)
else:
logging.debug('API-call from %s [%s] %s', cherrypy.request.remote.ip,
cherrypy.request.headers.get('User-Agent', '??'), kwargs)
mode = kwargs.get('mode', '')
if isinstance(mode, list):
mode = mode[0]
@@ -561,18 +572,27 @@ class LoginPage(object):
if check_login():
raise Raiser(cherrypy.request.script_name + '/')
# Was it proxy forwarded?
xff = cherrypy.request.headers.get('X-Forwarded-For')
# Check login info
if kwargs.get('username') == cfg.username() and kwargs.get('password') == cfg.password():
# Save login cookie
set_login_cookie(remember_me=kwargs.get('remember_me', False))
# Log the succes
logging.info('Successful login from %s', cherrypy.request.remote.ip)
if xff:
logging.info('Successful login from %s (X-Forwarded-For: %s)', cherrypy.request.remote.ip, xff)
else:
logging.info('Successful login from %s', cherrypy.request.remote.ip)
# Redirect
raise Raiser(cherrypy.request.script_name + '/')
elif kwargs.get('username') or kwargs.get('password'):
info['error'] = T('Authentication failed, check username/password.')
# Warn about the potential security problem
logging.warning(T('Unsuccessful login attempt from %s') % cherrypy.request.remote.ip)
fail_msg = T('Unsuccessful login attempt from %s') % cherrypy.request.remote.ip
if xff:
fail_msg = '%s (X-Forwarded-For: %s)' % (fail_msg, xff)
logging.warning(fail_msg)
# Show login
template = Template(file=os.path.join(sabnzbd.WEB_DIR_CONFIG, 'login', 'main.tmpl'),
@@ -1443,12 +1463,12 @@ SPECIAL_BOOL_LIST = \
('start_paused', 'no_penalties', 'ignore_wrong_unrar', 'overwrite_files', 'create_group_folders',
'queue_complete_pers', 'quick_check', 'api_warnings', 'allow_64bit_tools', 'ampm',
'enable_unrar', 'enable_unzip', 'enable_7zip', 'enable_filejoin', 'enable_tsjoin',
'prospective_par_download', 'never_repair', 'allow_streaming', 'ignore_unrar_dates',
'never_repair', 'allow_streaming', 'ignore_unrar_dates',
'osx_menu', 'osx_speed', 'win_menu', 'use_pickle', 'allow_incomplete_nzb',
'rss_filenames', 'ipv6_hosting', 'keep_awake', 'empty_postproc', 'html_login',
'wait_for_dfolder', 'warn_empty_nzb', 'enable_bonjour','allow_duplicate_files',
'warn_dupl_jobs', 'backup_for_duplicates', 'enable_par_cleanup', 'disable_api_key',
'api_logging', 'fixed_ports', 'enable_meta'
'api_logging', 'enable_meta'
)
SPECIAL_VALUE_LIST = \
('size_limit', 'folder_max_length', 'fsys_type', 'movie_rename_limit', 'nomedia_marker',

View File

@@ -252,11 +252,11 @@ def has_win_device(p):
if sabnzbd.WIN32:
# the colon should be here too, but we'll handle that separately
CH_ILLEGAL = r'\/<>?*|"'
CH_LEGAL = r'++{}!@#`'
CH_ILLEGAL = '\/<>?*|"\t'
CH_LEGAL = '++{}!@#`+'
else:
CH_ILLEGAL = r'/'
CH_LEGAL = r'+'
CH_ILLEGAL = '/'
CH_LEGAL = '+'
def sanitize_filename(name, allow_win_devices=False):

View File

@@ -120,9 +120,8 @@ def find_programs(curdir):
if sabnzbd.WIN64 and cfg.allow_64bit_tools.get():
sabnzbd.newsunpack.PAR2_COMMAND = check(curdir, 'win/par2/x64/par2.exe')
sabnzbd.newsunpack.RAR_COMMAND = check(curdir, 'win/unrar/x64/UnRAR.exe')
if not sabnzbd.newsunpack.PAR2_COMMAND:
else:
sabnzbd.newsunpack.PAR2_COMMAND = check(curdir, 'win/par2/par2.exe')
if not sabnzbd.newsunpack.RAR_COMMAND:
sabnzbd.newsunpack.RAR_COMMAND = check(curdir, 'win/unrar/UnRAR.exe')
sabnzbd.newsunpack.PAR2C_COMMAND = check(curdir, 'win/par2/par2cmdline.exe')
sabnzbd.newsunpack.ZIP_COMMAND = check(curdir, 'win/unzip/unzip.exe')
@@ -172,7 +171,7 @@ def external_processing(extern_proc, nzo, complete_dir, nicename, status):
'complete_dir': complete_dir,
'pp_status': status,
'download_time': nzo.nzo_info.get('download_time', ''),
'avg_bps': int(nzo.avg_bps_total / nzo.avg_bps_freq),
'avg_bps': int(nzo.avg_bps_total / nzo.avg_bps_freq) if nzo.avg_bps_freq else 0,
'age': calc_age(nzo.avg_date),
'version': sabnzbd.__version__}
@@ -285,6 +284,10 @@ def unpack_magic(nzo, workdir, workdir_complete, dele, one_folder, joinables, zi
nzo.set_action_line()
rerun = not error
# During a Retry we might miss files that failed during recursive unpack
if nzo.reuse and depth == 1 and any(build_filelists(workdir, workdir_complete)):
rerun = True
if rerun and (cfg.enable_recursive() or new_ts or new_joins):
z, y = unpack_magic(nzo, workdir, workdir_complete, dele, one_folder,
xjoinables, xzips, xrars, xsevens, xts, depth)
@@ -572,6 +575,10 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
# See: https://github.com/sabnzbd/sabnzbd/pull/771
command = ['%s' % RAR_COMMAND, action, '-idp', overwrite, rename, '-ai', password_command,
'%s' % clip_path(rarfile_path), '%s\\' % extraction_path]
# If this is the retry without leading \\.\, we need to remove the \ at the end (yes..)
if not extraction_path.startswith('\\\\?\\'):
command[-1] = command[-1][:-1]
elif RAR_PROBLEM:
# Use only oldest options (specifically no "-or")
command = ['%s' % RAR_COMMAND, action, '-idp', overwrite, password_command,
@@ -616,7 +623,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
p.kill()
msg = T('PostProcessing was aborted (%s)') % T('Unpack')
nzo.fail_msg = msg
nzo.set_unpack_info('Unpack', msg, set=setname)
nzo.set_unpack_info('Unpack', msg)
nzo.status = Status.FAILED
return fail, (), ()
@@ -642,7 +649,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
filename = os.path.basename(TRANS(line[19:]))
nzo.fail_msg = T('Unpacking failed, unable to find %s') % unicoder(filename)
msg = (u'[%s] ' + T('Unpacking failed, unable to find %s')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
logging.warning(T('ERROR: unable to find "%s"'), filename)
fail = 1
@@ -650,14 +657,14 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
filename = TRANS(line[:-12].strip())
nzo.fail_msg = T('Unpacking failed, CRC error')
msg = (u'[%s] ' + T('ERROR: CRC failed in "%s"')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
logging.warning(T('ERROR: CRC failed in "%s"'), setname)
fail = 2 # Older unrar versions report a wrong password as a CRC error
elif line.startswith('File too large'):
nzo.fail_msg = T('Unpacking failed, file too large for filesystem (FAT?)')
msg = (u'[%s] ' + T('Unpacking failed, file too large for filesystem (FAT?)')) % setname
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
# ERROR: File too large for file system (bigfile-5000MB)
logging.error(T('ERROR: File too large for filesystem (%s)'), setname)
fail = 1
@@ -665,7 +672,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
elif line.startswith('Write error'):
nzo.fail_msg = T('Unpacking failed, write error or disk is full?')
msg = (u'[%s] ' + T('Unpacking failed, write error or disk is full?')) % setname
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
logging.error(T('ERROR: write error (%s)'), line[11:])
fail = 1
@@ -685,14 +692,14 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
nzo.fail_msg = T('Unpacking failed, write error or disk is full?')
msg = u'[%s] %s: %s' % (T('Unpacking failed, write error or disk is full?'), setname, unicoder(line[13:]))
logging.error(T('ERROR: write error (%s)'), unicoder(line[13:]))
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 1
elif line.startswith('ERROR: '):
nzo.fail_msg = T('Unpacking failed, see log')
logging.warning(T('ERROR: %s'), (unicoder(line[7:])))
msg = (u'[%s] ' + T('ERROR: %s')) % (setname, line[7:])
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 1
elif 'The specified password is incorrect' in line or \
@@ -711,7 +718,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
filename = os.path.split(rarfile_path)[1]
nzo.fail_msg = T('Unpacking failed, archive requires a password')
msg = (u'[%s][%s] ' + T('Unpacking failed, archive requires a password')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 2
elif 'is not RAR archive' in line:
@@ -723,7 +730,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
filename = '???'
nzo.fail_msg = T('Unusable RAR file')
msg = ('[%s][%s] ' + T('Unusable RAR file')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 3
elif 'checksum error' in line:
@@ -736,7 +743,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
filename = '???'
nzo.fail_msg = T('Corrupt RAR file')
msg = ('[%s][%s] ' + T('Corrupt RAR file')) % (setname, filename)
nzo.set_unpack_info('Unpack', unicoder(msg), set=setname)
nzo.set_unpack_info('Unpack', unicoder(msg))
fail = 3
else:
@@ -764,7 +771,7 @@ def rar_extract_core(rarfile_path, numrars, one_folder, nzo, setname, extraction
logging.debug('UNRAR output %s', '\n'.join(lines))
nzo.fail_msg = ''
msg = T('Unpacked %s files/folders in %s') % (str(len(extracted)), format_time_string(time() - start))
nzo.set_unpack_info('Unpack', '[%s] %s' % (unicoder(setname), msg), set=setname)
nzo.set_unpack_info('Unpack', '[%s] %s' % (unicoder(setname), msg))
logging.info('%s', msg)
return 0, extracted, rarfiles
@@ -880,7 +887,7 @@ def unseven(nzo, workdir, workdir_complete, delete, one_folder, sevens):
for seven in sets:
extensions = sets[seven]
logging.info("Starting extract on 7zip set/file: %s ", seven)
nzo.set_action_line(T('Unpacking'), '%s' % unicoder(seven))
nzo.set_action_line(T('Unpacking'), '%s' % unicoder(os.path.basename(seven)))
if workdir_complete and seven.startswith(workdir):
extraction_path = workdir_complete
@@ -920,7 +927,9 @@ def seven_extract(nzo, sevenset, extensions, extraction_path, one_folder, delete
nzo.fail_msg = ''
if fail == 2:
logging.error(u'%s (%s)', T('Unpacking failed, archive requires a password'), os.path.split(sevenset)[1])
msg = '%s (%s)' % (T('Unpacking failed, archive requires a password'), os.path.basename(sevenset))
nzo.fail_msg = msg
logging.error(msg)
return fail, msg
@@ -936,6 +945,10 @@ def seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete
case = '-ssc-' # Case insensitive
else:
case = '-ssc' # Case sensitive
if cfg.overwrite_files():
overwrite = '-aoa'
else:
overwrite = '-aou'
if password:
password = '-p%s' % password
else:
@@ -951,7 +964,7 @@ def seven_extract_core(sevenset, extensions, extraction_path, one_folder, delete
if not os.path.exists(name):
return 1, T('7ZIP set "%s" is incomplete, cannot unpack') % unicoder(sevenset)
command = [SEVEN_COMMAND, method, '-y', '-aou', parm, case, password,
command = [SEVEN_COMMAND, method, '-y', overwrite, parm, case, password,
'-o%s' % extraction_path, name]
stup, need_shell, command, creationflags = build_command(command)
@@ -1016,7 +1029,7 @@ def par2_repair(parfile_nzf, nzo, workdir, setname, single):
qc_result = QuickCheck(setname, nzo)
if qc_result and cfg.quick_check():
logging.info("Quick-check for %s is OK, skipping repair", setname)
nzo.set_unpack_info('Repair', T('[%s] Quick Check OK') % unicoder(setname), set=setname)
nzo.set_unpack_info('Repair', T('[%s] Quick Check OK') % unicoder(setname))
pars = setpars
result = True
@@ -1141,8 +1154,6 @@ _RE_LOADED_PAR2 = re.compile(r'Loaded (\d+) new packets')
def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, single=False):
""" Run par2 on par-set """
import sabnzbd # Python bug requires import here
import sabnzbd.assembler
if cfg.never_repair():
cmd = 'v'
else:
@@ -1262,7 +1273,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
p.kill()
msg = T('PostProcessing was aborted (%s)') % T('Repair')
nzo.fail_msg = msg
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
readd = False
break
@@ -1286,19 +1297,19 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
if line.startswith('Invalid option specified') or line.startswith('Cannot specify recovery file count'):
msg = T('[%s] PAR2 received incorrect options, check your Config->Switches settings') % unicoder(setname)
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
elif line.startswith('All files are correct'):
msg = T('[%s] Verified in %s, all files correct') % (unicoder(setname), format_time_string(time() - start))
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
logging.info('Verified in %s, all files correct',
format_time_string(time() - start))
finished = 1
elif line.startswith('Repair is required'):
msg = T('[%s] Verified in %s, repair is required') % (unicoder(setname), format_time_string(time() - start))
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
logging.info('Verified in %s, repair is required',
format_time_string(time() - start))
start = time()
@@ -1341,7 +1352,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
msg = T('Invalid par2 files, cannot verify or repair')
nzo.fail_msg = msg
msg = u'[%s] %s' % (unicoder(setname), msg)
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
elif line.startswith('You need'):
@@ -1391,7 +1402,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
msg = T('Repair failed, not enough repair blocks (%s short)') % str(int(needed_blocks - avail_blocks))
nzo.fail_msg = msg
msg = u'[%s] %s' % (unicoder(setname), msg)
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FETCHING
needed_blocks = avail_blocks
force = True
@@ -1426,7 +1437,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
msg = T('Repair failed, not enough repair blocks (%s short)') % str(needed_blocks)
nzo.fail_msg = msg
msg = u'[%s] %s' % (unicoder(setname), msg)
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
elif line.startswith('Repair is possible'):
@@ -1441,7 +1452,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
elif line.startswith('Repair complete'):
msg = T('[%s] Repaired in %s') % (unicoder(setname), format_time_string(time() - start))
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
logging.info('Repaired in %s', format_time_string(time() - start))
finished = 1
@@ -1485,7 +1496,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
msg = unicoder(line.strip())
nzo.fail_msg = msg
msg = u'[%s] %s' % (unicoder(setname), msg)
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
# File: "oldname.rar" - is a match for "newname.rar".
@@ -1510,7 +1521,7 @@ def PAR_Verify(parfile, parfile_nzf, nzo, setname, joinables, classic=False, sin
msg = unicoder(line.strip())
nzo.fail_msg = msg
msg = u'[%s] %s' % (unicoder(setname), msg)
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
nzo.status = Status.FAILED
elif not verified:
@@ -1777,12 +1788,13 @@ def build_filelists(workdir, workdir_complete=None, check_rar=True):
def QuickCheck(set, nzo):
""" Check all on-the-fly md5sums of a set """
md5pack = nzo.md5packs.get(set)
if md5pack is None:
return False
result = False
# We use bitwise assigment (&=) so False always wins in case of failure
# This way the renames always get saved!
result = True
nzf_list = nzo.finished_files
renames = {}
@@ -1799,14 +1811,14 @@ def QuickCheck(set, nzo):
found = True
if (nzf.md5sum is not None) and nzf.md5sum == md5pack[file]:
logging.debug('Quick-check of file %s OK', file)
result = True
result &= True
elif file_to_ignore:
# We don't care about these files
logging.debug('Quick-check ignoring file %s', file)
result = True
result &= True
else:
logging.info('Quick-check of file %s failed!', file)
return False # When any file fails, just stop
result = False
break
# Now lets do obfuscation check
@@ -1816,7 +1828,7 @@ def QuickCheck(set, nzo):
renamer(os.path.join(nzo.downpath, nzf.filename), os.path.join(nzo.downpath, file_platform))
renames[file_platform] = nzf.filename
nzf.filename = file_platform
result = True
result &= True
found = True
break
except IOError:
@@ -1830,7 +1842,7 @@ def QuickCheck(set, nzo):
continue
logging.info('Cannot Quick-check missing file %s!', file)
return False # Missing file is failure
result = False
# Save renames
if renames:

View File

@@ -75,7 +75,6 @@ class Article(TryList):
def __init__(self, article, bytes, partnum, nzf):
TryList.__init__(self)
self.fetcher = None
self.article = article
self.art_id = None
@@ -671,8 +670,8 @@ class NzbObject(TryList):
duplicate = series = 0
if reuse:
remove_all(adir, 'SABnzbd_nz?_*')
remove_all(adir, 'SABnzbd_article_*')
remove_all(adir, 'SABnzbd_nz?_*', True)
remove_all(adir, 'SABnzbd_article_*', True)
else:
wdir = trim_win_path(wdir)
wdir = get_unique_path(wdir, create_dir=True)
@@ -1014,14 +1013,14 @@ class NzbObject(TryList):
sabnzbd.LAST_HISTORY_UPDATE = time.time()
return True, True
if not found:
# Add extra parfiles when there was a damaged article and not pre-checking
if cfg.prospective_par_download() and self.extrapars and not self.precheck:
self.prospective_add(nzf)
if file_done:
self.handle_par2(nzf, file_done)
if not found:
# Add extra parfiles when there was a damaged article and not pre-checking
if self.extrapars and not self.precheck:
self.prospective_add(nzf)
post_done = False
if not self.files:
post_done = True
@@ -1526,9 +1525,8 @@ class NzbObject(TryList):
return self.files_table[nzf_id]
@synchronized(IO_LOCK)
def set_unpack_info(self, key, msg, set='', unique=False):
def set_unpack_info(self, key, msg, unique=False):
""" Builds a dictionary containing the stage name (key) and a message
If set is present, it will overwrite any other messages from the set of the same stage
If unique is present, it will only have a single line message
"""
found = False
@@ -1536,15 +1534,7 @@ class NzbObject(TryList):
if not unique:
if key not in self.unpack_info:
self.unpack_info[key] = []
# If set is present, look for previous message from that set and replace
if set:
set = unicoder('[%s]' % set)
for x in xrange(len(self.unpack_info[key])):
if set in self.unpack_info[key][x]:
self.unpack_info[key][x] = msg
found = True
if not found:
self.unpack_info[key].append(msg)
self.unpack_info[key].append(msg)
else:
self.unpack_info[key] = [msg]

View File

@@ -36,7 +36,6 @@ PANIC_TEMPL = 2
PANIC_QUEUE = 3
PANIC_FWALL = 4
PANIC_OTHER = 5
PANIC_XPORT = 6
PANIC_SQLITE = 7
PANIC_HOST = 8
@@ -85,21 +84,6 @@ def MSG_BAD_PORT():
Ta(r'If you get this error message again, please try a different number.<br>')
def MSG_ILL_PORT():
return Ta(r'''
SABnzbd needs a free tcp/ip port for its internal web server.<br>
Port %s on %s was tried , but the account used for SABnzbd has no permission to use it.<br>
On OSX and Linux systems, normal users must use ports above 1023.<br>
<br>
Please restart SABnzbd with a different port number.''') + \
'''<br>
<br>
%s<br>
&nbsp;&nbsp;&nbsp;&nbsp;%s --server %s:%s<br>
<br>''' + \
Ta(r'If you get this error message again, please try a different number.<br>')
def MSG_BAD_HOST():
return Ta(r'''
SABnzbd needs a valid host address for its internal web server.<br>
@@ -174,13 +158,6 @@ def panic_message(panic, a=None, b=None):
newport = int(b) + 1
newport = "%s" % newport
msg = MSG_BAD_PORT() % (b, a, os_str, prog_path, a, newport)
elif panic == PANIC_XPORT:
if int(b) < 1023:
newport = 1024
else:
newport = int(b) + 1
newport = "%s" % newport
msg = MSG_ILL_PORT() % (b, a, os_str, prog_path, a, newport)
elif panic == PANIC_TEMPL:
msg = MSG_BAD_TEMPL() % a
elif panic == PANIC_QUEUE:
@@ -217,6 +194,7 @@ def panic_fwall(vista):
def panic_port(host, port):
print "\n%s:\n %s" % (T('Fatal error'), T('Unable to bind to port %s on %s. Some other software uses the port or SABnzbd is already running.') % (port, host))
launch_a_browser(panic_message(PANIC_PORT, host, port))
@@ -224,11 +202,6 @@ def panic_host(host, port):
launch_a_browser(panic_message(PANIC_HOST, host, port))
def panic_xport(host, port):
launch_a_browser(panic_message(PANIC_XPORT, host, port))
logging.error(T('You have no permission to use port %s'), port)
def panic_queue(name):
launch_a_browser(panic_message(PANIC_QUEUE, name, 0))

View File

@@ -52,6 +52,8 @@ import sabnzbd.notifier as notifier
import sabnzbd.utils.rarfile as rarfile
import sabnzbd.utils.checkdir
# Match samples
RE_SAMPLE = re.compile(sample_match, re.I)
class PostProcessor(Thread):
""" PostProcessor thread, designed as Singleton """
@@ -641,7 +643,7 @@ def parring(nzo, workdir):
if repair_sets:
for setname in repair_sets:
if cfg.ignore_samples() and 'sample' in setname.lower():
if cfg.ignore_samples() and RE_SAMPLE.search(setname.lower()):
continue
if not verified.get(setname, False):
logging.info("Running verification and repair on set %s", setname)
@@ -656,10 +658,6 @@ def parring(nzo, workdir):
break
re_add = re_add or need_re_add
if not res and not need_re_add and cfg.sfv_check():
res = try_sfv_check(nzo, workdir, setname)
if not res and not need_re_add and cfg.enable_unrar():
res = try_rar_check(nzo, workdir, setname)
verified[setname] = res
else:
continue
@@ -776,7 +774,7 @@ def try_rar_check(nzo, workdir, setname):
# Test
if rars:
nzo.status = Status.VERIFYING
nzo.set_unpack_info('Repair', T('Trying RAR-based verification'), set=setname)
nzo.set_unpack_info('Repair', T('Trying RAR-based verification'))
nzo.set_action_line(T('Trying RAR-based verification'), '...')
try:
# Set path to unrar and open the file
@@ -787,20 +785,20 @@ def try_rar_check(nzo, workdir, setname):
# Skip if it's encrypted
if zf.needs_password():
msg = T('[%s] RAR-based verification failed: %s') % (unicoder(os.path.basename(rars[0])), T('Passworded'))
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
return True
# Will throw exception if something is wrong
zf.testrar()
# Success!
msg = T('RAR files verified successfully')
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
logging.info(msg)
return True
except rarfile.Error as e:
nzo.fail_msg = T('RAR files failed to verify')
msg = T('[%s] RAR-based verification failed: %s') % (unicoder(os.path.basename(rars[0])), unicoder(e.message.replace('\r\n', ' ')))
nzo.set_unpack_info('Repair', msg, set=setname)
nzo.set_unpack_info('Repair', msg)
logging.info(msg)
return False
else:
@@ -827,14 +825,16 @@ def handle_empty_queue():
""" Check if empty queue calls for action """
if sabnzbd.nzbqueue.NzbQueue.do.actives() == 0:
sabnzbd.save_state()
logging.info("Queue has finished, launching: %s (%s)",
sabnzbd.QUEUECOMPLETEACTION, sabnzbd.QUEUECOMPLETEARG)
if sabnzbd.QUEUECOMPLETEARG:
sabnzbd.QUEUECOMPLETEACTION(sabnzbd.QUEUECOMPLETEARG)
else:
Thread(target=sabnzbd.QUEUECOMPLETEACTION).start()
sabnzbd.change_queue_complete_action(cfg.queue_complete(), new=False)
# Perform end-of-queue action when one is set
if sabnzbd.QUEUECOMPLETEACTION:
logging.info("Queue has finished, launching: %s (%s)",
sabnzbd.QUEUECOMPLETEACTION, sabnzbd.QUEUECOMPLETEARG)
if sabnzbd.QUEUECOMPLETEARG:
sabnzbd.QUEUECOMPLETEACTION(sabnzbd.QUEUECOMPLETEARG)
else:
Thread(target=sabnzbd.QUEUECOMPLETEACTION).start()
sabnzbd.change_queue_complete_action(cfg.queue_complete(), new=False)
def cleanup_list(wdir, skip_nzb):
@@ -928,7 +928,6 @@ def get_last_line(txt):
def remove_samples(path):
""" Remove all files that match the sample pattern """
RE_SAMPLE = re.compile(sample_match, re.I)
for root, _dirs, files in os.walk(path):
for file_ in files:
if RE_SAMPLE.search(file_):

View File

@@ -213,7 +213,7 @@ class URLGrabber(Thread):
if not data:
try:
data = fn.read()
except IncompleteRead, e:
except (IncompleteRead, IOError):
bad_fetch(future_nzo, url, T('Server could not complete request'))
fn.close()

View File

@@ -4,5 +4,5 @@
# You MUST use double quotes (so " and not ')
__version__ = "2.0.0"
__baseline__ = "55c4bef5247d51fa92db1c08ce3af6ec6601fdbf"
__version__ = "2.0.1"
__baseline__ = "be5bebb5741eeaffed552807929248ee603e6bf1"