Replace optparse with argparse.

This commit is contained in:
Bastian Kleineidam 2013-02-27 19:35:44 +01:00
parent c7a91f01aa
commit b38317d57b
12 changed files with 632 additions and 560 deletions

View file

@ -10,8 +10,8 @@ _linkcheck() {
cur=${COMP_WORDS[COMP_CWORD]}
prev=${COMP_WORDS[COMP_CWORD-1]}
if type _optcomplete &> /dev/null; then
_optcomplete "$@"
if type _argcomplete &> /dev/null; then
_argcomplete "$@"
else
_filedir
fi

View file

@ -2,6 +2,8 @@
Changes:
- checking: Always use the W3C validator to check HTML or CSS syntax.
- cmdline: Replace argument parsing. No changes in functionality, only
the help text will be formatted different.
8.4 "Frankenweenie" (released 25.01.2013)

View file

@ -51,7 +51,7 @@ First, install the required software.
On Redhat systems, install the package qt-devel.
4. *Optional, for bash-completion:*
optcomplete Python module from http://furius.ca/optcomplete/
argcomplete Python module from https://pypi.python.org/pypi/argcomplete
6. *Optional, for displaying country codes:*
GeoIP from http://www.maxmind.com/app/python

View file

@ -6,7 +6,8 @@ Date: 08.08.2012
OK Python
OK Qt/PyQt
OK mod_wsgi from http://code.google.com/p/modwsgi/
TODO optcomplete from http://furius.ca/optcomplete/
TODO GeoIP from http://www.maxmind.com/app/python
TODO Twill from http://twill.idyll.org/
TODO Python Gtk from http://www.pygtk.org/downloads.html
OK argcomplete from https://pypi.python.org/pypi/argcomplete
OK dnspython (as dnspython3)
TODO(optional) GeoIP from http://www.maxmind.com/app/python
TODO(optional) Twill from http://twill.idyll.org/
TODO(optional) Python Gtk from http://www.pygtk.org/downloads.html

View file

@ -1,5 +1,5 @@
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2000-2012 Bastian Kleineidam
# Copyright (C) 2000-2013 Bastian Kleineidam
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -19,10 +19,9 @@ Utility functions suitable for command line clients.
"""
from __future__ import print_function
import sys
import optparse
from . import fileutil, ansicolor, strformat, checker
from . import checker
from .director import console
from .decorators import notimplemented
def print_version(exit_code=0):
"""Print the program version and exit."""
@ -38,83 +37,6 @@ def print_usage (msg, exit_code=2):
sys.exit(exit_code)
class LCHelpFormatter (optparse.IndentedHelpFormatter, object):
"""Help formatter indenting paragraph-wise."""
def __init__ (self):
"""Set current console width for this formatter."""
width = ansicolor.get_columns(sys.stdout)
super(LCHelpFormatter, self).__init__(width=width)
def format_option (self, option):
"""Customized help display with indentation."""
# The help for each option consists of two parts:
# * the opt strings and metavars
# eg. ("-x", or "-fFILENAME, --file=FILENAME")
# * the user-supplied help string
# eg. ("turn on expert mode", "read data from FILENAME")
# If possible, we write both of these on the same line:
# -x turn on expert mode
# But if the opt string list is too long, we put the help
# string on a second line, indented to the same column it would
# start in if it fit on the first line.
# -fFILENAME, --file=FILENAME
# read data from FILENAME
result = []
opts = self.option_strings[option]
opt_width = self.help_position - self.current_indent - 2
if len(opts) > opt_width:
opts = "%*s%s\n" % (self.current_indent, "", opts)
indent_first = self.help_position
else: # start help on same line as opts
opts = "%*s%-*s " % (self.current_indent, "", opt_width, opts)
indent_first = 0
result.append(opts)
if option.help:
text = strformat.wrap(option.help, self.help_width)
help_lines = text.splitlines()
result.append("%*s%s\n" % (indent_first, "", help_lines[0]))
result.extend(["%*s%s\n" % (self.help_position, "", line)
for line in help_lines[1:]])
elif opts[-1] != "\n":
result.append("\n")
return "".join(result)
class LCOptionParser (optparse.OptionParser, object):
"""Option parser with custom help text layout."""
def __init__ (self, err_exit_code=2):
"""Initializing using our own help formatter class."""
super(LCOptionParser, self).__init__(formatter=LCHelpFormatter())
self.err_exit_code = err_exit_code
def error (self, msg):
"""Print usage info and given message."""
print_usage(msg, exit_code=self.err_exit_code)
@notimplemented
def get_usage (self):
"""Print usage text."""
pass
def print_help_msg (self, s, out):
"""Print a help message to stdout."""
s = console.encode(s)
if fileutil.is_tty(out):
strformat.paginate(s)
else:
print(s, file=out)
sys.exit(0)
@notimplemented
def print_help (self, file=None):
"""Print help text to given file."""
pass
def aggregate_url (aggregate, url, err_exit_code=2):
"""Append given commandline URL to input queue."""
get_url_from = checker.get_url_from

View file

@ -63,7 +63,7 @@ def normpath (path):
# List optional Python modules in the form (module, name)
Modules = (
("PyQt4.Qsci", u"QScintilla"),
("optcomplete", u"Optcomplete"),
("argcomplete", u"Argcomplete"),
("GeoIP", u"GeoIP"), # on Unix systems
("pygeoip", u"GeoIP"), # on Windows systems
("twill", u"Twill"),

View file

@ -25,15 +25,14 @@ import codecs
import re
import os
import pprint
import optparse
import argparse
import getpass
# installs _() and _n() gettext functions into global namespace
import linkcheck
# override optparse gettext method with the one from linkcheck.init_i18n()
optparse._ = _
# override argparse gettext method with the one from linkcheck.init_i18n()
#argparse._ = _
# now import the rest of the linkchecker gang
from linkcheck.cmdline import print_version, print_usage, LCOptionParser, \
aggregate_url
from linkcheck.cmdline import print_version, print_usage, aggregate_url
from linkcheck import log, LOG_CMDLINE, i18n, strformat
import linkcheck.checker
import linkcheck.configuration
@ -42,7 +41,7 @@ import linkcheck.logger
import linkcheck.ansicolor
from linkcheck.director import console, check_urls, get_aggregate
# optional modules
has_optcomplete = linkcheck.fileutil.has_module("optcomplete")
has_argcomplete = linkcheck.fileutil.has_module("argcomplete")
has_profile = linkcheck.fileutil.has_module("cProfile")
has_pstats = linkcheck.fileutil.has_module("pstats")
has_meliae = linkcheck.fileutil.has_module("meliae")
@ -53,8 +52,6 @@ _username = None
_password = None
# usage texts
Usage = _("""USAGE\tlinkchecker [options] [file-or-url]...""")
Notes = _("""NOTES
o URLs on the command line starting with "ftp." are treated like
"ftp://ftp.", URLs starting with "www." are treated like "http://www.".
@ -195,8 +192,10 @@ file entry:
"\n".join([u" o %s - %s" % (tag, desc) \
for tag, desc in sorted(linkcheck.checker.const.Warnings.items())])
Epilog = u"\n".join((Examples, LoggerTypes, RegularExpressions, CookieFormat, ProxySupport, Notes, Retval, Warnings))
def viewprof ():
def viewprof():
"""Print profiling data and exit."""
if not has_pstats:
log.error(LOG_CMDLINE,
@ -235,59 +234,45 @@ def has_encoding (encoding):
return False
# instantiate option parser and configure options
class MyOptionParser (LCOptionParser):
"""Option parser for LinkChecker commandline client."""
argparser = argparse.ArgumentParser(
epilog=Epilog,
formatter_class=argparse.RawDescriptionHelpFormatter
)
def get_usage (self):
"""Return translated usage text."""
return Usage
def print_help (self, file=None):
"""Print translated help text."""
s = u"%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s" % (self.format_help(),
Examples, LoggerTypes, RegularExpressions, CookieFormat,
ProxySupport, Notes, Retval, Warnings)
self.print_help_msg(s, file)
# instantiate option parser and configure options
optparser = MyOptionParser()
# build a config object for this check session
config = linkcheck.configuration.Configuration()
################# general options ##################
group = optparse.OptionGroup(optparser, _("General options"))
group.add_option("-f", "--config", type="string", dest="configfile",
group = argparser.add_argument_group(_("General options"))
group.add_argument("-f", "--config", dest="configfile",
metavar="FILENAME",
help=_(
"""Use FILENAME as configuration file. Per default LinkChecker uses
~/.linkchecker/linkcheckerrc (under Windows
%HOMEPATH%\\.linkchecker\\linkcheckerrc)."""))
group.add_option("-t", "--threads", type="int", dest="threads",
metavar="NUMBER",
%%HOMEPATH%%\\.linkchecker\\linkcheckerrc)."""))
group.add_argument("-t", "--threads", type=int, metavar="NUMBER",
help=_(
"""Generate no more than the given number of threads. Default number
of threads is 10. To disable threading specify a non-positive number."""))
group.add_option("-V", "--version", action="store_true", dest="version",
group.add_argument("-V", "--version", action="store_true",
help=_("""Print version and exit."""))
group.add_option("--stdin", action="store_true", dest="stdin",
group.add_argument("--stdin", action="store_true",
help=_(
"""Read list of white-space separated URLs to check from stdin."""))
optparser.add_option_group(group)
################# output options ##################
group = optparse.OptionGroup(optparser, _("Output options"))
group.add_option("--check-css", action="store_true", dest="checkcss",
group = argparser.add_argument_group(_("Output options"))
group.add_argument("--check-css", action="store_true", dest="checkcss",
help=_(
"""Check syntax of CSS URLs with the W3C online validator."""))
group.add_option("--check-html", action="store_true", dest="checkhtml",
group.add_argument("--check-html", action="store_true", dest="checkhtml",
help=_(
"""Check syntax of HTML URLs with the W3C online validator."""))
group.add_option("--complete", action="store_true", dest="complete",
group.add_argument("--complete", action="store_true", dest="complete",
help=_("""Log all URLs, including duplicates.
Default is to log duplicate URLs only once."""))
group.add_option("-D", "--debug", type="string", action="append",
metavar="STRING",
group.add_argument("-D", "--debug", action="append", metavar="STRING",
help=_("""Print debugging output for the given logger.
Available loggers are %(lognamelist)s.
Specifying 'all' is an alias for specifying all available loggers.
@ -296,8 +281,8 @@ than one logger.
For accurate results, threading will be disabled during debug runs.""") % \
{"lognamelist": linkcheck.lognamelist})
group.add_option("-F", "--file-output", type="string", action="append",
dest="fileoutput", metavar="TYPE[/ENCODING][/FILENAME]",
group.add_argument("-F", "--file-output", action="append",
dest="fileoutput", metavar="TYPE[/ENCODING[/FILENAME]]",
help=_(
"""Output to a file linkchecker-out.TYPE, $HOME/.linkchecker/blacklist for
'blacklist' output, or FILENAME if specified.
@ -311,13 +296,12 @@ are %(loggertypes)s. You can specify this option multiple times to output
to more than one file. Default is no file output. Note that you can
suppress all console output with the option '-o none'.""") % \
{'loggertypes': linkcheck.logger.LoggerKeys})
group.add_option("--no-status", action="store_false", dest="status",
group.add_argument("--no-status", action="store_false", dest="status",
default=True, help=_(
"""Do not print check status messages."""))
group.add_option("--no-warnings", action="store_false", dest="warnings",
group.add_argument("--no-warnings", action="store_false", dest="warnings",
help=_("""Don't log warnings. Default is to log warnings."""))
group.add_option("-o", "--output", type="string", dest="output",
metavar="TYPE[/ENCODING]",
group.add_argument("-o", "--output", dest="output", metavar="TYPE[/ENCODING]",
help=_(
"""Specify output as %(loggertypes)s. Default output type is text.
The ENCODING specifies the output encoding, the default is that of your
@ -325,23 +309,23 @@ locale.
Valid encodings are listed at """ \
"""http://docs.python.org/lib/standard-encodings.html.""") % \
{'loggertypes': linkcheck.logger.LoggerKeys})
group.add_option("--profile", action="store_true", dest="profile",
help=optparse.SUPPRESS_HELP)
group.add_option("-q", "--quiet", action="store_true", dest="quiet",
group.add_argument("--profile", action="store_true", dest="profile",
help=argparse.SUPPRESS)
group.add_argument("-q", "--quiet", action="store_true", dest="quiet",
help=_(
"""Quiet operation, an alias for '-o none'.
This is only useful with -F."""))
group.add_option("--scan-virus", action="store_true", dest="scanvirus",
group.add_argument("--scan-virus", action="store_true", dest="scanvirus",
help=_(
"""Scan content of URLs with ClamAV virus scanner."""))
group.add_option("--trace", action="store_true", dest="trace",
group.add_argument("--trace", action="store_true", dest="trace",
help=_("""Print tracing information."""))
group.add_option("-v", "--verbose", action="store_true", dest="verbose",
group.add_argument("-v", "--verbose", action="store_true", dest="verbose",
help=_(
"""Log all URLs. Default is to log only errors and warnings."""))
group.add_option("--viewprof", action="store_true", dest="viewprof",
help=optparse.SUPPRESS_HELP)
group.add_option("-W", "--warning-regex", type="string", dest="warningregex",
group.add_argument("--viewprof", action="store_true", dest="viewprof",
help=argparse.SUPPRESS)
group.add_argument("-W", "--warning-regex", dest="warningregex",
metavar="REGEX",
help=_(
"""Define a regular expression which prints a warning if it matches
@ -354,99 +338,79 @@ Application error'.
Note that multiple values can be combined in the regular expression,
for example "(This page has moved|Oracle Application error)"."""))
group.add_option("--warning-size-bytes", dest="warningsizebytes",
group.add_argument("--warning-size-bytes", dest="warningsizebytes",
metavar="NUMBER",
help=_(
"""Print a warning if content size info is available and exceeds the
given number of bytes."""))
optparser.add_option_group(group)
################# checking options ##################
group = optparse.OptionGroup(optparser, _("Checking options"))
group.add_option("-a", "--anchors", action="store_true", dest="anchors",
group = argparser.add_argument_group(_("Checking options"))
group.add_argument("-a", "--anchors", action="store_true", dest="anchors",
help=_(
"""Check HTTP anchor references. Default is not to check anchors.
This option enables logging of the warning 'url-anchor-not-found'."""))
group.add_option("-C", "--cookies", action="store_true", dest="cookies",
group.add_argument("-C", "--cookies", action="store_true", dest="cookies",
help=_(
"""Accept and send HTTP cookies according to RFC 2109. Only cookies
which are sent back to the originating server are accepted.
Sent and accepted cookies are provided as additional logging
information."""))
group.add_option("--cookiefile", type="string", dest="cookiefile",
metavar="FILENAME",
group.add_argument("--cookiefile", dest="cookiefile", metavar="FILENAME",
help=_(
"""Read a file with initial cookie data. The cookie data format is
explained below."""))
group.add_option("--ignore-url", type="string", action="append",
metavar="REGEX",
group.add_argument("--ignore-url", action="append", metavar="REGEX",
dest="externstrict", help=_(
"""Only check syntax of URLs matching the given regular expression.
This option can be given multiple times."""))
group.add_option("--no-follow-url", type="string", action="append",
metavar="REGEX",
group.add_argument("--no-follow-url", action="append", metavar="REGEX",
dest="extern", help=_(
"""Check but do not recurse into URLs matching the given regular
expression. This option can be given multiple times."""))
group.add_option("-N", "--nntp-server", type="string", dest="nntpserver",
metavar="STRING",
group.add_argument("-N", "--nntp-server", dest="nntpserver", metavar="STRING",
help=_(
"""Specify an NNTP server for 'news:...' links. Default is the
environment variable NNTP_SERVER. If no host is given,
only the syntax of the link is checked."""))
group.add_option("-p", "--password", action="store_false", dest="password",
group.add_argument("-p", "--password", action="store_false", dest="password",
default=False,
help=_(
"""Read a password from console and use it for HTTP and FTP authorization.
For FTP the default password is 'anonymous@'. For HTTP there is
no default password. See also -u."""))
group.add_option("-P", "--pause", type="int", dest="pause",
group.add_argument("-P", "--pause", type=int, dest="pause",
metavar="NUMBER",
help=_(
"""Pause the given number of seconds between two subsequent connection
requests to the same host. Default is no pause between requests."""))
group.add_option("-r", "--recursion-level", type="int", dest="recursionlevel",
metavar="NUMBER",
group.add_argument("-r", "--recursion-level", type=int,
dest="recursionlevel", metavar="NUMBER",
help=_(
"""Check recursively all links up to given depth. A negative depth
will enable infinite recursion. Default depth is infinite."""))
group.add_option("--timeout", type="int", dest="timeout",
group.add_argument("--timeout", type=int, dest="timeout",
metavar="NUMBER",
help=_(
"""Set the timeout for connection attempts in seconds. The default
timeout is %d seconds.""") % config["timeout"])
group.add_option("-u", "--user", type="string", dest="username",
metavar="STRING",
group.add_argument("-u", "--user", dest="username", metavar="STRING",
help=_(
"""Try the given username for HTTP and FTP authorization.
For FTP the default username is 'anonymous'. For HTTP there is
no default username. See also -p."""))
group.add_option("--user-agent", type="string", dest="useragent",
metavar="STRING",
group.add_argument("--user-agent", dest="useragent", metavar="STRING",
help=_(
"""Specify the User-Agent string to send to the HTTP server, for example
"Mozilla/4.0". The default is "LinkChecker/X.Y" where X.Y is the current
version of LinkChecker."""))
optparser.add_option_group(group)
argparser.add_argument('url', nargs='*')
################# auto completion #####################
if has_optcomplete:
import optcomplete
def FileCompleter (cwd, line, point, prefix, suffix):
"""Completes by listing all possible files, here or matching
substrings"""
startdir = os.path.dirname(prefix)
lhs = os.path.basename(prefix)
if startdir:
listdir = startdir
else:
listdir = cwd
return [os.path.join(startdir, f)
for f in os.listdir(os.path.expanduser(listdir))
if f.startswith(lhs)]
optcomplete.autocomplete(optparser, arg_completer=FileCompleter)
if has_argcomplete:
import argcomplete
argcomplete.autocomplete(argparser)
def read_stdin_urls ():
@ -465,7 +429,8 @@ def read_stdin_urls ():
# read and parse command line options and arguments
(options, args) = optparser.parse_args()
options = argparser.parse_args()
# initialize logging
if options.debug:
allowed_debugs = linkcheck.lognames.keys()
@ -496,9 +461,9 @@ if options.debug and not __debug__:
# apply commandline options and arguments to configuration
constructauth = False
do_profile = False
if options.warnings is not None:
if options.warnings:
config["warnings"] = options.warnings
if options.anchors is not None:
if options.anchors:
config["anchors"] = options.anchors
if options.externstrict:
pats = [linkcheck.get_link_pat(arg, strict=True) \
@ -560,7 +525,7 @@ if options.fileoutput:
config['fileoutput'].append(logger)
if options.nntpserver:
config["nntpserver"] = options.nntpserver
if options.username is not None:
if options.username:
_username = options.username
constructauth = True
if options.password:
@ -577,13 +542,13 @@ if options.pause is not None:
else:
print_usage(_("Illegal argument %(arg)r for option %(option)s") % \
{"arg": options.pause, "option": "'-P, --pause'"})
if options.profile is not None:
if options.profile:
do_profile = options.profile
if options.quiet is not None:
if options.quiet:
config['logger'] = config.logger_new('none')
if options.recursionlevel is not None:
config["recursionlevel"] = options.recursionlevel
if options.status is not None:
if options.status:
config['status'] = options.status
if options.threads is not None:
if options.threads < 1:
@ -595,13 +560,13 @@ if options.timeout is not None:
else:
print_usage(_("Illegal argument %(arg)r for option %(option)s") % \
{"arg": options.timeout, "option": "'--timeout'"})
if options.version is not None:
if options.version:
print_version()
if options.verbose is not None:
if options.verbose:
if options.verbose:
config["verbose"] = True
config["warnings"] = True
if options.complete is not None:
if options.complete:
if options.complete:
config["complete"] = True
config["verbose"] = True
@ -613,18 +578,16 @@ if options.warningregex is not None:
config["warnings"] = True
if options.warningsizebytes is not None:
config["warnsizebytes"] = options.warningsizebytes
if options.cookies is not None:
if options.cookies:
config['storecookies'] = config['sendcookies'] = options.cookies
if options.cookiefile is not None:
config['cookiefile'] = options.cookiefile
config['storecookies'] = config['sendcookies'] = True
if constructauth:
config.add_auth(pattern=".+", user=_username, password=_password)
if options.scanvirus is not None:
config["scanvirus"] = options.scanvirus
# boolean options for syntaxcheck
for option in ("checkhtml", "checkcss"):
if getattr(options, option) is not None:
# boolean options
for option in ("checkhtml", "checkcss", "scanvirus"):
if getattr(options, option):
config[option] = getattr(options, option)
# read missing passwords
for entry in config["authentication"]:
@ -663,8 +626,8 @@ if options.trace:
if options.stdin:
for url in read_stdin_urls():
aggregate_url(aggregate, url)
elif args:
for url in args:
elif options.url:
for url in options.url:
aggregate_url(aggregate, strformat.stripurl(url))
else:
log.warn(LOG_CMDLINE, _("no files or URLs given"))

View file

@ -1,6 +1,6 @@
#!/usr/bin/python -u
# -*- coding: iso-8859-1 -*-
# Copyright (C) 2012 Bastian Kleineidam
# Copyright (C) 2012-2013 Bastian Kleineidam
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@ -23,14 +23,14 @@ Run this file without options to see how it's done.
import sys
import os
import socket
import optparse
import argparse
import pprint
# installs _() and _n() gettext functions into global namespace
import linkcheck
# override optparse gettext method with the one from linkcheck.init_i18n()
optparse._ = _
# override argparse gettext method with the one from linkcheck.init_i18n()
argparse._ = _
# now import the rest of the linkchecker gang
from linkcheck.cmdline import print_version, print_usage, LCOptionParser, \
from linkcheck.cmdline import print_version, print_usage, LCHelpFormatter, \
aggregate_url
from linkcheck import log, LOG_CMDLINE, strformat
import linkcheck.checker
@ -40,9 +40,6 @@ import linkcheck.logger
import linkcheck.ansicolor
from linkcheck.director import console, check_urls, get_aggregate
# usage texts
Usage = _("""USAGE\tlinkchecker-nagios [options] [file-or-url]...""")
Retval = _(r"""RETURN VALUE
0 - everything checked ok without errors or warnings
1 - URL check warnings were found
@ -54,23 +51,16 @@ Examples = _(r"""EXAMPLES
linkchecker-nagios -v www.example.org
""")
Epilog = u"\n".join((Retval, Examples))
class MyOptionParser (LCOptionParser):
"""Option parser for LinkChecker nagios plugin."""
def get_usage (self):
"""Return translated usage text."""
return Usage
def print_help (self, file=None):
"""Print translated help text."""
s = u"%s\n%s\n%s" % (self.format_help(), Examples, Retval)
if file is None:
file = sys.stdout
self.print_help_msg(s, file)
# instantiate option parser and configure options
optparser = MyOptionParser(err_exit_code=3)
class ArgumentParser(argparse.ArgumentParser):
def error(self, message):
self.print_usage(sys.stderr)
self.exit(3, _('%s: error: %s\n') % (self.prog, message))
argparser = ArgumentParser(formatter_class=LCHelpFormatter, epilog=Epilog)
# build a config object for this check session
config = linkcheck.configuration.Configuration()
@ -78,41 +68,40 @@ config = linkcheck.configuration.Configuration()
config['recursionlevel'] = 1
# Standard options
group = optparse.OptionGroup(optparser, _("Standard nagios options"))
group.add_option("-v", "--verbose", action="count", default=0, dest="verbose",
group = argparser.add_argument_group(_("Standard nagios options"))
group.add_argument("-v", "--verbose", action="count", default=0,
help=_("""Increase verbosity. This option can be given multiple times."""))
group.add_option("-V", "--version", action="store_true", dest="version",
group.add_argument("-V", "--version", action="store_true",
help=_("""Print version and exit."""))
group.add_option("-t", "--timeout", type="int", dest="timeout",
metavar="NUMBER",
group.add_argument("-t", "--timeout", type=int, dest="timeout", metavar="NUMBER",
help=_(
"""Set the timeout for connection attempts in seconds. The default
timeout is %d seconds.""") % config["timeout"])
# Checking options
group = optparse.OptionGroup(optparser, _("Checking options"))
group.add_option("-f", "--config", type="string", dest="configfile",
metavar="FILENAME",
group = argparser.add_argument_group(_("Checking options"))
group.add_argument("-f", "--config", dest="configfile", metavar="FILENAME",
help=_(
"""Use FILENAME as configuration file. Per default LinkChecker uses
~/.linkchecker/linkcheckerrc (under Windows
%HOMEPATH%\\.linkchecker\\linkcheckerrc)."""))
argparser.add_argument("url", nargs='+', metavar="FILE_OR_URL")
# read and parse command line options and arguments
(options, args) = optparser.parse_args()
args = argparser.parse_args()
if options.version is not None:
if args.version is not None:
print_version()
if options.timeout is not None:
if options.timeout > 0:
config["timeout"] = options.timeout
if args.timeout is not None:
if args.timeout > 0:
config["timeout"] = args.timeout
else:
print_usage(_("Illegal argument %(arg)r for option %(option)s") % \
{"arg": options.timeout, "option": "'--timeout'"},
{"arg": args.timeout, "option": "'--timeout'"},
exit_code=3)
socket.setdefaulttimeout(config["timeout"])
if options.verbose >= 3:
if args.verbose >= 3:
debug = ['all']
else:
debug = None
@ -123,13 +112,12 @@ log.debug(LOG_CMDLINE, _("Python %(version)s on %(platform)s") % \
# read configuration files
try:
files = []
if options.configfile:
path = linkcheck.configuration.normpath(options.configfile)
if args.configfile:
path = linkcheck.configuration.normpath(args.configfile)
if os.path.isfile(path):
files.append(path)
else:
log.warn(LOG_CMDLINE,
_("Unreadable config file: %r"), options.configfile)
log.warn(LOG_CMDLINE, _("Unreadable config file: %r"), args.configfile)
sys.exit(3)
config.read(files=files)
except linkcheck.LinkCheckerError, msg:
@ -139,12 +127,12 @@ linkcheck.drop_privileges()
socket.setdefaulttimeout(config["timeout"])
if options.verbose < 0:
if args.verbose < 0:
config['logger'] = config.logger_new('none')
else:
config["verbose"] = True
config["warnings"] = True
if options.verbose >= 2:
if args.verbose >= 2:
config["complete"] = True
# check missing passwords
@ -161,12 +149,8 @@ log.debug(LOG_CMDLINE, "configuration: %s",
# prepare checking queue
aggregate = get_aggregate(config)
# add urls to queue
if args:
for url in args:
aggregate_url(aggregate, strformat.stripurl(url), err_exit_code=3)
else:
log.warn(LOG_CMDLINE, _("no files or URLs given"))
sys.exit(3)
for url in args.url:
aggregate_url(aggregate, strformat.stripurl(url), err_exit_code=3)
# finally, start checking
check_urls(aggregate)

View file

@ -2,11 +2,11 @@ XGETTEXT := xgettext
MSGFMT := msgfmt
MSGMERGE := msgmerge
POSOURCES = $(shell find ../linkcheck -name \*.py) \
../linkchecker ../linkchecker-gui /usr/lib/python2.7/optparse.py
../linkchecker ../linkchecker-gui /usr/lib/python2.7/argparse.py
LDIR = ../share/locale
PACKAGE = linkchecker
TEMPLATE = $(PACKAGE).pot
MYMAIL := calvin@users.sourceforge.net
MYMAIL := bastian.kleineidam@web.de
LFILE = LC_MESSAGES/$(PACKAGE).mo
# defined language (add new languages here)
LANGUAGES = de fr es

438
po/de.po
View file

@ -4,8 +4,8 @@
msgid ""
msgstr ""
"Project-Id-Version: $Id$\n"
"Report-Msgid-Bugs-To: calvin@users.sourceforge.net\n"
"POT-Creation-Date: 2013-02-05 14:55+0100\n"
"Report-Msgid-Bugs-To: bastian.kleineidam@web.de\n"
"POT-Creation-Date: 2013-02-27 10:40+0100\n"
"PO-Revision-Date: 2012-11-13 18:13+0100\n"
"Last-Translator: Bastian Kleineidam <calvin@users.sourceforge.net>\n"
"Language-Team: de <de@li.org>\n"
@ -101,7 +101,7 @@ msgstr "Standard Locale:"
msgid "System info:"
msgstr "Systeminformation:"
#: ../linkcheck/director/console.py:145 ../linkchecker:476
#: ../linkcheck/director/console.py:145 ../linkchecker:441
#, python-format
msgid "Python %(version)s on %(platform)s"
msgstr "Python %(version)s auf %(platform)s"
@ -535,128 +535,138 @@ msgstr "%(scheme)s URL ignoriert."
msgid "URL is unrecognized or has invalid syntax"
msgstr "URL ist unbekannt oder besitzt ungültige Syntax"
#: ../linkcheck/checker/const.py:115
#: ../linkcheck/checker/const.py:117
msgid "The effective URL is different from the original."
msgstr "Die effektive URL unterscheidet sich vom Original."
#: ../linkcheck/checker/const.py:117
#: ../linkcheck/checker/const.py:119
msgid "Could not get the content of the URL."
msgstr "Konnte den Inhalt der URL nicht bekommen."
#: ../linkcheck/checker/const.py:118
#: ../linkcheck/checker/const.py:120
msgid "URL anchor was not found."
msgstr "URL Anker wurde nicht gefunden."
#: ../linkcheck/checker/const.py:120
#: ../linkcheck/checker/const.py:122
msgid "The warning regular expression was found in the URL contents."
msgstr ""
"Der reguläre Ausdruck für Warnungen wurde in den URL Inhalten gefunden."
#: ../linkcheck/checker/const.py:121
#: ../linkcheck/checker/const.py:123
msgid "The URL content is a duplicate of another URL."
msgstr "Der URL-Inhalte ist ein Duplikat einer anderen URL."
#: ../linkcheck/checker/const.py:122
#: ../linkcheck/checker/const.py:124
msgid "The URL content size is too large."
msgstr "Der URL Inhalt ist zu groß."
#: ../linkcheck/checker/const.py:123
#: ../linkcheck/checker/const.py:125
msgid "The URL content size is zero."
msgstr "Der URL Inhaltsgrößenangabe ist Null."
#: ../linkcheck/checker/const.py:124
#: ../linkcheck/checker/const.py:126
msgid "The URL content size and download size are unequal."
msgstr ""
"Der URL Inhaltsgrößenangabe und die Download-Größe sind unterschiedlich."
#: ../linkcheck/checker/const.py:125
#: ../linkcheck/checker/const.py:127
msgid "The URL is longer than the recommended size."
msgstr "Die URL ist länger als die empfohlene Länge."
#: ../linkcheck/checker/const.py:126
#: ../linkcheck/checker/const.py:128
msgid "The URL contains leading or trailing whitespace."
msgstr "Die URL %(url)s enthält Leerzeichen am Anfang oder Ende."
#: ../linkcheck/checker/const.py:127
#: ../linkcheck/checker/const.py:129
msgid "The file: URL is missing a trailing slash."
msgstr "Der file: URL fehlt ein abschließender Schrägstrich."
#: ../linkcheck/checker/const.py:129
#: ../linkcheck/checker/const.py:131
msgid "The file: path is not the same as the system specific path."
msgstr "Der file: Pfad ist nicht derselbe wie der Systempfad."
#: ../linkcheck/checker/const.py:130
#: ../linkcheck/checker/const.py:132
msgid "The ftp: URL is missing a trailing slash."
msgstr "Der ftp: URL fehlt ein abschließender Schrägstrich."
#: ../linkcheck/checker/const.py:131
#: ../linkcheck/checker/const.py:133
msgid "The http: URL checking has been denied."
msgstr "Die http: URL-Überprüfung wurde verweigert."
#: ../linkcheck/checker/const.py:132
#: ../linkcheck/checker/const.py:134
msgid "The URL has moved permanently."
msgstr "Die URL wurde dauerhaft verschoben."
#: ../linkcheck/checker/const.py:134
#: ../linkcheck/checker/const.py:136
msgid "The URL has been redirected to an URL of a different type."
msgstr "Die URL wurde zu einem anderen URL-Typ umgeleitet."
#: ../linkcheck/checker/const.py:135
#: ../linkcheck/checker/const.py:137
msgid "The URL had no content."
msgstr "Die URL besitzt keinen Inhalt."
#: ../linkcheck/checker/const.py:137
#: ../linkcheck/checker/const.py:139
msgid "An error occurred while storing a cookie."
msgstr "Ein Fehler trat auf während des Speicherns eines Cookies."
#: ../linkcheck/checker/const.py:139
#: ../linkcheck/checker/const.py:141
msgid "An error occurred while decompressing the URL content."
msgstr "Ein Fehler trat beim Dekomprimieren des URL Inhalts auf."
#: ../linkcheck/checker/const.py:141
#: ../linkcheck/checker/const.py:143
msgid "The URL content is encoded with an unknown encoding."
msgstr "Der URL-Inhalt ist in einer unbekannten Kodierung verfasst."
#: ../linkcheck/checker/const.py:143
#: ../linkcheck/checker/const.py:145
msgid "Unsupported HTTP authentication method."
msgstr "Nicht unterstützte HTTP Authentifizierungsmethode."
#: ../linkcheck/checker/const.py:145 ../linkcheck/checker/httpurl.py:243
#: ../linkcheck/checker/const.py:147 ../linkcheck/checker/httpurl.py:243
msgid "Unauthorized access without HTTP authentication."
msgstr "Unauthorisierter Zugriff ohne HTTP-Authentifizierung."
#: ../linkcheck/checker/const.py:146
#: ../linkcheck/checker/const.py:148
msgid "The SSL certificate is invalid or expired."
msgstr "Das SSL-Zertifikat ist ungültig oder abgelaufen."
#: ../linkcheck/checker/const.py:147
#: ../linkcheck/checker/const.py:149
msgid "The URL has been ignored."
msgstr "Die URL wurde ignoriert."
#: ../linkcheck/checker/const.py:148
#: ../linkcheck/checker/const.py:150
msgid "The mail MX host could not be found."
msgstr "Der MX Mail-Rechner konnte nicht gefunden werden."
#: ../linkcheck/checker/const.py:150
#: ../linkcheck/checker/const.py:152
msgid "The mailto: address could not be verified."
msgstr "Die mailto: Addresse konnte nicht überprüft werden."
#: ../linkcheck/checker/const.py:152
#: ../linkcheck/checker/const.py:154
msgid "No connection to a MX host could be established."
msgstr "Es konnte keine Verbindung zu einem MX-Rechner hergestellt werden."
#: ../linkcheck/checker/const.py:153
#: ../linkcheck/checker/const.py:155
msgid "No NNTP server was found."
msgstr "Es wurde kein NNTP Server gefunden."
#: ../linkcheck/checker/const.py:154
#: ../linkcheck/checker/const.py:156
msgid "The NNTP newsgroup could not be found."
msgstr "Die NNTP Nachrichtengruppe konnte nicht gefunden werden."
#: ../linkcheck/checker/const.py:155
#: ../linkcheck/checker/const.py:157
msgid "The IP is obfuscated."
msgstr "Die IP-Adresse ist verschleiert."
#: ../linkcheck/checker/const.py:158
#, fuzzy
msgid "HTML syntax error."
msgstr "gültige HTML Syntax"
#: ../linkcheck/checker/const.py:159
#, fuzzy
msgid "CSS syntax error."
msgstr "gültige CSS Syntax"
#: ../linkcheck/checker/mailtourl.py:87
#, python-format
msgid "No mail addresses found in `%(url)s'."
@ -930,32 +940,32 @@ msgid "%(w3type)s validation error at line %(line)s col %(column)s: %(msg)s"
msgstr ""
"%(w3type)s Validierungsfehler in Zeile %(line)s Spalte %(column)s: %(msg)s"
#: ../linkcheck/checker/urlbase.py:883
#: ../linkcheck/checker/urlbase.py:882
msgid "valid HTML syntax"
msgstr "gültige HTML Syntax"
#: ../linkcheck/checker/urlbase.py:892
#: ../linkcheck/checker/urlbase.py:890
#, python-format
msgid "HTML W3C validation caused error: %(msg)s "
msgstr "HTML W3C Validierung verursachte Fehler: %(msg)s"
#: ../linkcheck/checker/urlbase.py:919
#: ../linkcheck/checker/urlbase.py:917
msgid "valid CSS syntax"
msgstr "gültige CSS Syntax"
#: ../linkcheck/checker/urlbase.py:927
#: ../linkcheck/checker/urlbase.py:925
#, python-format
msgid "CSS W3C validation caused error: %(msg)s "
msgstr "CSS W3C Validierung verursachte Fehler: %(msg)s"
#: ../linkcheck/checker/urlbase.py:980
#: ../linkcheck/checker/urlbase.py:978
#, python-format
msgid "%(num)d URL parsed."
msgid_plural "%(num)d URLs parsed."
msgstr[0] "%(num)d URL geparst."
msgstr[1] "%(num)d URLs geparst."
#: ../linkcheck/checker/urlbase.py:1126
#: ../linkcheck/checker/urlbase.py:1124
#, python-format
msgid "URL has unparsable domain name: %(domain)s"
msgstr "URL besitzt einen nicht analysierbaren Rechnernamen: %(domain)s"
@ -1406,7 +1416,6 @@ msgstr "&Optionen"
#: ../linkcheck/gui/linkchecker_ui_main.py:845
#: ../linkcheck/gui/linkchecker_ui_options.py:137
#: /usr/lib/python2.7/optparse.py:1626
msgid "Options"
msgstr "Optionen"
@ -1668,7 +1677,7 @@ msgstr ""
msgid "Closing active URLs with timeout %s..."
msgstr "Schließe aktive URLs mit Timeout %s..."
#: ../linkcheck/gui/__init__.py:437 ../linkchecker:698
#: ../linkcheck/gui/__init__.py:437 ../linkchecker:663
msgid "Dumping memory statistics..."
msgstr "Generiere Speicherabzug..."
@ -1676,7 +1685,7 @@ msgstr "Generiere Speicherabzug..."
msgid "LinkChecker memory dump written"
msgstr "LinkChecker Speicherabzug geschrieben"
#: ../linkcheck/gui/__init__.py:440 ../linkchecker:700
#: ../linkcheck/gui/__init__.py:440 ../linkchecker:665
#, python-format
msgid "The memory dump has been written to `%(filename)s'."
msgstr "Der Speicherabzug wurde in Datei `%(filename)s' geschrieben."
@ -1701,7 +1710,7 @@ msgstr[1] "%4d Verknüpfungen ausgewählt"
msgid "LinkChecker internal error"
msgstr "LinkChecker interner Fehler"
#: ../linkcheck/gui/linkchecker_ui_options.py:138 ../linkchecker:366
#: ../linkcheck/gui/linkchecker_ui_options.py:138 ../linkchecker:349
msgid "Checking options"
msgstr "Prüf-Optionen"
@ -1947,11 +1956,7 @@ msgid_plural "%d misses"
msgstr[0] "%d Verfehlung"
msgstr[1] "%d Verfehlungen"
#: ../linkchecker:56
msgid "USAGE\tlinkchecker [options] [file-or-url]..."
msgstr "BENUTZUNG\tlinkchecker [Optionen] [datei-oder-url]..."
#: ../linkchecker:58
#: ../linkchecker:55
msgid ""
"NOTES\n"
" o URLs on the command line starting with \"ftp.\" are treated like\n"
@ -1986,7 +1991,7 @@ msgstr ""
"o Beim Prüfen von 'news:' Links muss der angegebene NNTP Rechner nicht\n"
" unbedingt derselbe wie der des Benutzers sein.\n"
#: ../linkchecker:74
#: ../linkchecker:71
msgid ""
"PROXY SUPPORT\n"
"To use a proxy on Unix or Windows set $http_proxy, $https_proxy or "
@ -2039,7 +2044,7 @@ msgstr ""
" set http_proxy=http://proxy.example.com:8080\n"
"\n"
#: ../linkchecker:98
#: ../linkchecker:95
msgid ""
"REGULAR EXPRESSIONS\n"
"Only Python regular expressions are accepted by LinkChecker.\n"
@ -2057,7 +2062,7 @@ msgstr ""
"Die einzige Hinzufügung ist, dass ein regulärer Ausdruck negiert wird\n"
"falls er mit einem Ausrufezeichen beginnt.\n"
#: ../linkchecker:107
#: ../linkchecker:104
msgid ""
"COOKIE FILES\n"
"A cookie file contains standard RFC 805 header data with the following\n"
@ -2114,7 +2119,7 @@ msgstr ""
"Host: example.com\n"
"Set-cookie: baggage=\"elitist\"; comment=\"hologram\"\n"
#: ../linkchecker:135
#: ../linkchecker:132
msgid ""
"RETURN VALUE\n"
"The return value is non-zero when\n"
@ -2128,7 +2133,7 @@ msgstr ""
" o Warnungen gefunden wurden und Warnungen aktiviert sind\n"
" o ein Programmfehler aufgetreten ist\n"
#: ../linkchecker:142
#: ../linkchecker:139
msgid ""
"EXAMPLES\n"
"The most common use checks the given domain recursively, plus any\n"
@ -2181,7 +2186,7 @@ msgstr ""
"\"ftp.\" beginnt:\n"
" linkchecker -r0 ftp.example.org\n"
#: ../linkchecker:166
#: ../linkchecker:163
msgid ""
"OUTPUT TYPES\n"
"Note that by default only errors and warnings are logged.\n"
@ -2238,7 +2243,7 @@ msgstr ""
"none Gibt nichts aus. Für Debugging oder Prüfen des Rückgabewerts "
"geeignet.\n"
#: ../linkchecker:191
#: ../linkchecker:188
msgid ""
"IGNORE WARNINGS\n"
"The following warnings are recognized in the 'ignorewarnings' config\n"
@ -2248,7 +2253,7 @@ msgstr ""
"Die folgenden Warnungen werden vom Konfigurationseintrag 'ignorewarnings'\n"
"erkannt:\n"
#: ../linkchecker:203
#: ../linkchecker:202
msgid ""
"The `pstats' Python module is not installed, therefore the --viewprof option "
"is disabled."
@ -2256,35 +2261,36 @@ msgstr ""
"Das `pstats' Python Modul ist nicht installiert, deshalb ist die --viewprof "
"Option deaktiviert."
#: ../linkchecker:208
#: ../linkchecker:207
#, python-format
msgid "Could not find profiling file %(file)r."
msgstr "Konnte Profiling-Datei %(file)r nicht finden."
#: ../linkchecker:210
#: ../linkchecker:209
msgid "Please run linkchecker with --profile to generate it."
msgstr "Bitte starten Sie linkchecker mit --profile, um sie zu generieren."
#: ../linkchecker:225
#: ../linkchecker:224
#, python-format
msgid "Syntax error in %(arg)r: %(msg)s"
msgstr "Syntaxfehler in %(arg)r: %(msg)s"
#: ../linkchecker:259
#: ../linkchecker:247
msgid "General options"
msgstr "Allgemeine Optionen"
#: ../linkchecker:263
#: ../linkchecker:251
#, fuzzy, python-format
msgid ""
"Use FILENAME as configuration file. Per default LinkChecker uses\n"
"~/.linkchecker/linkcheckerrc (under Windows\n"
"%HOMEPATH%\\.linkchecker\\linkcheckerrc)."
"%%HOMEPATH%%\\.linkchecker\\linkcheckerrc)."
msgstr ""
"Benutze FILENAME als Konfigurationsdatei. Standardmäßig benutzt\n"
" LinkChecker ~/.linkchecker/linkcheckerrc\n"
"(unter Windows %HOMEPATH%\\.linkchecker\\linkcheckerrc)."
#: ../linkchecker:269
#: ../linkchecker:256
msgid ""
"Generate no more than the given number of threads. Default number\n"
"of threads is 10. To disable threading specify a non-positive number."
@ -2293,35 +2299,35 @@ msgstr ""
"von Threads ist 10. Geben Sie eine negative Zahl an, um Threading zu "
"deaktivieren."
#: ../linkchecker:272
#: ../linkchecker:259
msgid "Print version and exit."
msgstr "Drucke die Version und beende das Programm."
#: ../linkchecker:275
#: ../linkchecker:262
msgid "Read list of white-space separated URLs to check from stdin."
msgstr ""
"Lese eine Liste von URLs zum Prüfen von der Standardeingabe, getrennt durch "
"Leerzeichen."
#: ../linkchecker:279
#: ../linkchecker:265
msgid "Output options"
msgstr "Ausgabeoptionen"
#: ../linkchecker:282
#: ../linkchecker:268
#, fuzzy
msgid "Check syntax of CSS URLs with the W3C online validator."
msgstr ""
"Prüfe Syntax von CSS URLs mit cssutils. Falls es nicht installiert ist,\n"
"prüfe mit dem W3C Online Validator."
#: ../linkchecker:285
#: ../linkchecker:271
#, fuzzy
msgid "Check syntax of HTML URLs with the W3C online validator."
msgstr ""
"Prüfe Syntax von HTML URLs mit HTML tidy. Falls es nicht installiert ist,\n"
"prüfe mit dem W3C Online Validator."
#: ../linkchecker:287
#: ../linkchecker:273
msgid ""
"Log all URLs, including duplicates.\n"
"Default is to log duplicate URLs only once."
@ -2329,7 +2335,7 @@ msgstr ""
"Logge alle URLs, inklusive Duplikate.\n"
"Standard ist, doppelte URLs nur einmal zu loggen."
#: ../linkchecker:291
#: ../linkchecker:276
#, python-format
msgid ""
"Print debugging output for the given logger.\n"
@ -2349,7 +2355,7 @@ msgstr ""
"\n"
"Für exakte Resultate wird Threading während Debugläufen deaktiviert."
#: ../linkchecker:302
#: ../linkchecker:287
#, python-format
msgid ""
"Output to a file linkchecker-out.TYPE, $HOME/.linkchecker/blacklist for\n"
@ -2379,15 +2385,15 @@ msgstr ""
"Standard ist keine Dateiausgabe. Beachten Sie dass die Option\n"
"'-o none' jegliche Ausgaben auf der Konsole verhindert."
#: ../linkchecker:316
#: ../linkchecker:301
msgid "Do not print check status messages."
msgstr "Gebe keine Statusmeldungen aus."
#: ../linkchecker:318
#: ../linkchecker:303
msgid "Don't log warnings. Default is to log warnings."
msgstr "Gebe keine Warnungen aus. Standard ist die Ausgabe von Warnungen."
#: ../linkchecker:322
#: ../linkchecker:306
#, python-format
msgid ""
"Specify output as %(loggertypes)s. Default output type is text.\n"
@ -2402,7 +2408,7 @@ msgstr ""
"Gültige Enkodierungen sind unter http://docs.python.org/lib/standard-"
"encodings.html aufgeführt."
#: ../linkchecker:332
#: ../linkchecker:316
msgid ""
"Quiet operation, an alias for '-o none'.\n"
"This is only useful with -F."
@ -2410,19 +2416,19 @@ msgstr ""
"Keine Ausgabe, ein Alias für '-o none'.\n"
"Dies ist nur in Verbindung mit -F nützlich."
#: ../linkchecker:336
#: ../linkchecker:320
msgid "Scan content of URLs with ClamAV virus scanner."
msgstr "Prüfe Inhalt von URLs mit dem ClamAV Antivirus Programm."
#: ../linkchecker:338
#: ../linkchecker:322
msgid "Print tracing information."
msgstr "Trace-Information ausgeben."
#: ../linkchecker:341
#: ../linkchecker:325
msgid "Log all URLs. Default is to log only errors and warnings."
msgstr "Logge alle URLs. Standard ist es, nur fehlerhafte URLs zu loggen."
#: ../linkchecker:347
#: ../linkchecker:331
msgid ""
"Define a regular expression which prints a warning if it matches\n"
"any content of the checked link. This applies only to valid pages,\n"
@ -2446,7 +2452,7 @@ msgstr ""
"werden können, zum Beispiel \"(Diese Seite ist umgezogen|Oracle "
"Applikationsfehler)\"."
#: ../linkchecker:360
#: ../linkchecker:344
msgid ""
"Print a warning if content size info is available and exceeds the\n"
"given number of bytes."
@ -2454,7 +2460,7 @@ msgstr ""
"Gebe eine Warnung aus wenn die Inhaltsgröße bekannt ist und die\n"
"angegebene Anzahl an Bytes übersteigt."
#: ../linkchecker:369
#: ../linkchecker:352
msgid ""
"Check HTTP anchor references. Default is not to check anchors.\n"
"This option enables logging of the warning 'url-anchor-not-found'."
@ -2462,7 +2468,7 @@ msgstr ""
"Prüfe HTTP Anker Verweise. Standard ist keine Überprüfung.\n"
"Diese Option aktiviert die Ausgabe der Warnung 'url-anchor-not-found'."
#: ../linkchecker:373
#: ../linkchecker:356
msgid ""
"Accept and send HTTP cookies according to RFC 2109. Only cookies\n"
"which are sent back to the originating server are accepted.\n"
@ -2475,7 +2481,7 @@ msgstr ""
"Gesendete und akzeptierte Cookies werden als zusätzlich geloggte\n"
"Information aufgeführt."
#: ../linkchecker:380
#: ../linkchecker:362
msgid ""
"Read a file with initial cookie data. The cookie data format is\n"
"explained below."
@ -2483,7 +2489,7 @@ msgstr ""
"Lese eine Datei mit Cookie-Daten. Das Datenformat\n"
"ist weiter unten erklärt."
#: ../linkchecker:385
#: ../linkchecker:366
msgid ""
"Only check syntax of URLs matching the given regular expression.\n"
" This option can be given multiple times."
@ -2491,7 +2497,7 @@ msgstr ""
"Prüfe lediglich den Syntax der URLs, welche auf den angegebenen regulären "
"Ausdruck zutreffen. Diese Option kann mehrmals angegebenen werden."
#: ../linkchecker:390
#: ../linkchecker:370
msgid ""
"Check but do not recurse into URLs matching the given regular\n"
"expression. This option can be given multiple times."
@ -2499,7 +2505,7 @@ msgstr ""
"Prüfe URLs die auf den angegebenen regulären Ausdruck zutreffen, aber steige "
"nicht rekursiv in sie hinab. Diese Option kann mehrmals angegeben werden."
#: ../linkchecker:395
#: ../linkchecker:374
msgid ""
"Specify an NNTP server for 'news:...' links. Default is the\n"
"environment variable NNTP_SERVER. If no host is given,\n"
@ -2509,7 +2515,7 @@ msgstr ""
"Umgebungsvariable NNTP_SERVER. Falls kein Rechner angegeben ist,\n"
"wird lediglich auf korrekte Syntax des Links geprüft."
#: ../linkchecker:401
#: ../linkchecker:380
msgid ""
"Read a password from console and use it for HTTP and FTP authorization.\n"
"For FTP the default password is 'anonymous@'. For HTTP there is\n"
@ -2521,7 +2527,7 @@ msgstr ""
"Standardpasswort.\n"
"Siehe auch -u."
#: ../linkchecker:407
#: ../linkchecker:386
msgid ""
"Pause the given number of seconds between two subsequent connection\n"
"requests to the same host. Default is no pause between requests."
@ -2531,7 +2537,7 @@ msgstr ""
"Verbindungen zum demselben Rechner. Standard ist keine Pause zwischen "
"Verbindungen."
#: ../linkchecker:412
#: ../linkchecker:391
msgid ""
"Check recursively all links up to given depth. A negative depth\n"
"will enable infinite recursion. Default depth is infinite."
@ -2540,7 +2546,7 @@ msgstr ""
"negative Tiefe erwirkt unendliche Rekursion. Standard Tiefe ist\n"
"unendlich."
#: ../linkchecker:417
#: ../linkchecker:396
#, python-format
msgid ""
"Set the timeout for connection attempts in seconds. The default\n"
@ -2549,7 +2555,7 @@ msgstr ""
"Setze den Timeout für Verbindungen in Sekunden. Der Standard\n"
"Timeout ist %d Sekunden."
#: ../linkchecker:422
#: ../linkchecker:400
msgid ""
"Try the given username for HTTP and FTP authorization.\n"
"For FTP the default username is 'anonymous'. For HTTP there is\n"
@ -2559,7 +2565,7 @@ msgstr ""
"Authorisation. Für FTP ist der Standardname 'anonymous'. Für HTTP gibt es "
"kein Standardnamen. Siehe auch -p."
#: ../linkchecker:428
#: ../linkchecker:405
msgid ""
"Specify the User-Agent string to send to the HTTP server, for example\n"
"\"Mozilla/4.0\". The default is \"LinkChecker/X.Y\" where X.Y is the "
@ -2570,60 +2576,60 @@ msgstr ""
"z.B. \"Mozilla/4.0\". Der Standard ist \"LinkChecker/X.Y\", wobei X.Y\n"
"die aktuelle Version von LinkChecker ist."
#: ../linkchecker:474
#: ../linkchecker:439
#, python-format
msgid "Invalid debug level %(level)r"
msgstr "Ungültiger Debuglevel %(level)r"
#: ../linkchecker:487
#: ../linkchecker:452
#, python-format
msgid "Unreadable config file: %r"
msgstr "Nicht lesbare Konfigurationsdatei: %r"
#: ../linkchecker:495
#: ../linkchecker:460
msgid "Running with python -O disables debugging."
msgstr "Die Option python -O verhindert das Debuggen."
#: ../linkchecker:518 ../linkchecker:550
#: ../linkchecker:483 ../linkchecker:515
#, python-format
msgid "Unknown logger type %(type)r in %(output)r for option %(option)s"
msgstr "Unbekannter Logtyp %(type)r in %(output)r für Option %(option)s"
#: ../linkchecker:522 ../linkchecker:556
#: ../linkchecker:487 ../linkchecker:521
#, python-format
msgid "Unknown encoding %(encoding)r in %(output)r for option %(option)s"
msgstr "Unbekanntes Encoding %(encoding)r in %(output)r für Option %(option)s"
#: ../linkchecker:568
#: ../linkchecker:533
#, python-format
msgid "Enter LinkChecker HTTP/FTP password for user %(user)s:"
msgstr "Gebe LinkChecker HTTP/FTP Passwort für Benutzer %(user)s ein:"
#: ../linkchecker:571
#: ../linkchecker:536
msgid "Enter LinkChecker HTTP/FTP password:"
msgstr "Gebe LinkChecker HTTP/FTP Passwort ein:"
#: ../linkchecker:578 ../linkchecker:596
#: ../linkchecker:543 ../linkchecker:561
#, python-format
msgid "Illegal argument %(arg)r for option %(option)s"
msgstr "Ungültiges Argument %(arg)r für Option %(option)s"
#: ../linkchecker:634
#: ../linkchecker:599
#, python-format
msgid "Enter LinkChecker password for user %(user)s at %(strpattern)s:"
msgstr ""
"Gebe LinkChecker Passwort für Benutzer %(user)s bei %(strpattern)s ein:"
#: ../linkchecker:655
#: ../linkchecker:620
#, python-format
msgid "Could not parse cookie file: %s"
msgstr "Konnte Cookie-Datei nicht parsen: %s"
#: ../linkchecker:670
#: ../linkchecker:635
msgid "no files or URLs given"
msgstr "keine Dateien oder URLs angegeben"
#: ../linkchecker:675
#: ../linkchecker:640
#, python-format
msgid ""
"Overwrite profiling file %(file)r?\n"
@ -2632,11 +2638,11 @@ msgstr ""
"Profildatei %(file)r überschreiben?\n"
"Drücken Sie Strg-C zum Abbrechen, EINGABETASTE zum Fortfahren."
#: ../linkchecker:681
#: ../linkchecker:646
msgid "Canceled."
msgstr "Abgebrochen."
#: ../linkchecker:685
#: ../linkchecker:650
msgid ""
"The `cProfile' Python module is not installed, therefore the --profile "
"option is disabled."
@ -2644,77 +2650,190 @@ msgstr ""
"Das `cProfile' Python Modul ist nicht installiert, deshalb ist die --profile "
"Option deaktiviert."
#: /usr/lib/python2.7/optparse.py:140
#, python-format
msgid "no such option: %s"
msgstr "Keine solche Option: %s"
#: /usr/lib/python2.7/optparse.py:151
#, python-format
msgid "ambiguous option: %s (%s?)"
msgstr "Mehrdeutige Option: %s (%s?)"
#: /usr/lib/python2.7/optparse.py:374
#, python-format
msgid "Usage: %s\n"
#: /usr/lib/python2.7/argparse.py:292
#, fuzzy
msgid "usage: "
msgstr "Syntax: %s\n"
#: /usr/lib/python2.7/optparse.py:393
msgid "Usage"
msgstr "Syntax"
#: /usr/lib/python2.7/argparse.py:800
msgid ".__call__() not defined"
msgstr ""
#: /usr/lib/python2.7/optparse.py:418
msgid "integer"
msgstr "Nummer"
#: /usr/lib/python2.7/optparse.py:419
msgid "long integer"
msgstr "Nummer"
#: /usr/lib/python2.7/optparse.py:420
msgid "floating-point"
msgstr "Fließkommazahl"
#: /usr/lib/python2.7/optparse.py:421
msgid "complex"
msgstr "komplex"
#: /usr/lib/python2.7/optparse.py:429
#: /usr/lib/python2.7/argparse.py:1084
#, python-format
msgid "option %s: invalid %s value: %r"
msgstr "Option %s: Ungültiger %s Wert: %r"
msgid "unknown parser %r (choices: %s)"
msgstr ""
#: /usr/lib/python2.7/optparse.py:437
#: /usr/lib/python2.7/argparse.py:1125
#, python-format
msgid "option %s: invalid choice: %r (choose from %s)"
msgstr "Option %s: ungültige Auswahl: %r (wähle von %s)"
msgid "argument \"-\" with mode %r"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1250
#: /usr/lib/python2.7/argparse.py:1132
#, python-format
msgid "can't open '%s': %s"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1336
#, python-format
msgid "cannot merge actions - two groups are named %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1374
msgid "'required' is an invalid argument for positionals"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1394
#, python-format
msgid "invalid option string %r: must start with a character %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1415
#, python-format
msgid "dest= is required for options like %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1432
#, fuzzy, python-format
msgid "invalid conflict_resolution value: %r"
msgstr "ungültiger \"notAfter\" Zertifikatwert %r"
#: /usr/lib/python2.7/argparse.py:1450
#, python-format
msgid "conflicting option string(s): %s"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1514
msgid "mutually exclusive arguments must be optional"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1584
#, fuzzy
msgid "positional arguments"
msgstr "%s Option erfordert ein Argument"
#: /usr/lib/python2.7/argparse.py:1585
#, fuzzy
msgid "optional arguments"
msgstr "%s Option erfordert ein Argument"
#: /usr/lib/python2.7/argparse.py:1600
msgid "show this help message and exit"
msgstr "Zeige diesen Hilfetext und beende"
#: /usr/lib/python2.7/optparse.py:1255
#: /usr/lib/python2.7/argparse.py:1606
msgid "show program's version number and exit"
msgstr "Zeige Programmversion und beende"
#: /usr/lib/python2.7/optparse.py:1278
msgid "%prog [options]"
msgstr "%prog [Optionen]"
#: /usr/lib/python2.7/argparse.py:1638
msgid "cannot have multiple subparser arguments"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1498 /usr/lib/python2.7/optparse.py:1537
#: /usr/lib/python2.7/argparse.py:1690
#, python-format
msgid "%s option requires an argument"
msgstr "%s Option erfordert ein Argument"
msgid "unrecognized arguments: %s"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1500 /usr/lib/python2.7/optparse.py:1539
#: /usr/lib/python2.7/argparse.py:1790
#, python-format
msgid "%s option requires %d arguments"
msgstr "%s Option erfordert %d Argumente"
msgid "not allowed with argument %s"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1509
#: /usr/lib/python2.7/argparse.py:1836 /usr/lib/python2.7/argparse.py:1850
#, python-format
msgid "%s option does not take a value"
msgstr "%s Option nimmt kein Wert"
msgid "ignored explicit argument %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1940
msgid "too few arguments"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1947
#, python-format
msgid "argument %s is required"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1961
#, python-format
msgid "one of the arguments %s is required"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2007
msgid "expected one argument"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2008
msgid "expected at most one argument"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2009
msgid "expected at least one argument"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2011
#, python-format
msgid "expected %s argument(s)"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2068
#, fuzzy, python-format
msgid "ambiguous option: %s could match %s"
msgstr "Mehrdeutige Option: %s (%s?)"
#: /usr/lib/python2.7/argparse.py:2130
#, python-format
msgid "unexpected option string: %s"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2234
#, python-format
msgid "%r is not callable"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2250
#, fuzzy, python-format
msgid "invalid %s value: %r"
msgstr "Option %s: Ungültiger %s Wert: %r"
#: /usr/lib/python2.7/argparse.py:2260
#, fuzzy, python-format
msgid "invalid choice: %r (choose from %s)"
msgstr "Option %s: ungültige Auswahl: %r (wähle von %s)"
#: /usr/lib/python2.7/argparse.py:2353
#, fuzzy, python-format
msgid "%s: error: %s\n"
msgstr "ignore%d: Syntaxfehler %s\n"
#~ msgid "USAGE\tlinkchecker [options] [file-or-url]..."
#~ msgstr "BENUTZUNG\tlinkchecker [Optionen] [datei-oder-url]..."
#~ msgid "no such option: %s"
#~ msgstr "Keine solche Option: %s"
#~ msgid "Usage"
#~ msgstr "Syntax"
#~ msgid "integer"
#~ msgstr "Nummer"
#~ msgid "long integer"
#~ msgstr "Nummer"
#~ msgid "floating-point"
#~ msgstr "Fließkommazahl"
#~ msgid "complex"
#~ msgstr "komplex"
#~ msgid "%prog [options]"
#~ msgstr "%prog [Optionen]"
#~ msgid "%s option requires %d arguments"
#~ msgstr "%s Option erfordert %d Argumente"
#~ msgid "%s option does not take a value"
#~ msgstr "%s Option nimmt kein Wert"
#~ msgid "tidy HTML parsing caused error: %(msg)s "
#~ msgstr "tidy HTML Parser verursachte Fehler: %(msg)s"
@ -3151,6 +3270,3 @@ msgstr "%s Option nimmt kein Wert"
#~ msgid "nofollow%d: syntax error %s\n"
#~ msgstr "nofollow%d: Syntaxfehler %s\n"
#~ msgid "ignore%d: syntax error %s\n"
#~ msgstr "ignore%d: Syntaxfehler %s\n"

View file

@ -1,5 +1,5 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR Bastian Kleineidam <calvin@users.sourceforge.net>
# Copyright (C) YEAR Bastian Kleineidam <bastian.kleineidam@web.de>
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
@ -7,8 +7,8 @@
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: calvin@users.sourceforge.net\n"
"POT-Creation-Date: 2013-02-05 14:55+0100\n"
"Report-Msgid-Bugs-To: bastian.kleineidam@web.de\n"
"POT-Creation-Date: 2013-02-27 10:40+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -87,7 +87,7 @@ msgstr ""
msgid "System info:"
msgstr ""
#: ../linkcheck/director/console.py:145 ../linkchecker:476
#: ../linkcheck/director/console.py:145 ../linkchecker:441
#, python-format
msgid "Python %(version)s on %(platform)s"
msgstr ""
@ -509,126 +509,134 @@ msgstr ""
msgid "URL is unrecognized or has invalid syntax"
msgstr ""
#: ../linkcheck/checker/const.py:115
#: ../linkcheck/checker/const.py:117
msgid "The effective URL is different from the original."
msgstr ""
#: ../linkcheck/checker/const.py:117
#: ../linkcheck/checker/const.py:119
msgid "Could not get the content of the URL."
msgstr ""
#: ../linkcheck/checker/const.py:118
#: ../linkcheck/checker/const.py:120
msgid "URL anchor was not found."
msgstr ""
#: ../linkcheck/checker/const.py:120
#: ../linkcheck/checker/const.py:122
msgid "The warning regular expression was found in the URL contents."
msgstr ""
#: ../linkcheck/checker/const.py:121
#: ../linkcheck/checker/const.py:123
msgid "The URL content is a duplicate of another URL."
msgstr ""
#: ../linkcheck/checker/const.py:122
#: ../linkcheck/checker/const.py:124
msgid "The URL content size is too large."
msgstr ""
#: ../linkcheck/checker/const.py:123
#: ../linkcheck/checker/const.py:125
msgid "The URL content size is zero."
msgstr ""
#: ../linkcheck/checker/const.py:124
#: ../linkcheck/checker/const.py:126
msgid "The URL content size and download size are unequal."
msgstr ""
#: ../linkcheck/checker/const.py:125
#: ../linkcheck/checker/const.py:127
msgid "The URL is longer than the recommended size."
msgstr ""
#: ../linkcheck/checker/const.py:126
#: ../linkcheck/checker/const.py:128
msgid "The URL contains leading or trailing whitespace."
msgstr ""
#: ../linkcheck/checker/const.py:127
#: ../linkcheck/checker/const.py:129
msgid "The file: URL is missing a trailing slash."
msgstr ""
#: ../linkcheck/checker/const.py:129
#: ../linkcheck/checker/const.py:131
msgid "The file: path is not the same as the system specific path."
msgstr ""
#: ../linkcheck/checker/const.py:130
#: ../linkcheck/checker/const.py:132
msgid "The ftp: URL is missing a trailing slash."
msgstr ""
#: ../linkcheck/checker/const.py:131
#: ../linkcheck/checker/const.py:133
msgid "The http: URL checking has been denied."
msgstr ""
#: ../linkcheck/checker/const.py:132
#: ../linkcheck/checker/const.py:134
msgid "The URL has moved permanently."
msgstr ""
#: ../linkcheck/checker/const.py:134
#: ../linkcheck/checker/const.py:136
msgid "The URL has been redirected to an URL of a different type."
msgstr ""
#: ../linkcheck/checker/const.py:135
#: ../linkcheck/checker/const.py:137
msgid "The URL had no content."
msgstr ""
#: ../linkcheck/checker/const.py:137
#: ../linkcheck/checker/const.py:139
msgid "An error occurred while storing a cookie."
msgstr ""
#: ../linkcheck/checker/const.py:139
#: ../linkcheck/checker/const.py:141
msgid "An error occurred while decompressing the URL content."
msgstr ""
#: ../linkcheck/checker/const.py:141
#: ../linkcheck/checker/const.py:143
msgid "The URL content is encoded with an unknown encoding."
msgstr ""
#: ../linkcheck/checker/const.py:143
#: ../linkcheck/checker/const.py:145
msgid "Unsupported HTTP authentication method."
msgstr ""
#: ../linkcheck/checker/const.py:145 ../linkcheck/checker/httpurl.py:243
#: ../linkcheck/checker/const.py:147 ../linkcheck/checker/httpurl.py:243
msgid "Unauthorized access without HTTP authentication."
msgstr ""
#: ../linkcheck/checker/const.py:146
#: ../linkcheck/checker/const.py:148
msgid "The SSL certificate is invalid or expired."
msgstr ""
#: ../linkcheck/checker/const.py:147
#: ../linkcheck/checker/const.py:149
msgid "The URL has been ignored."
msgstr ""
#: ../linkcheck/checker/const.py:148
#: ../linkcheck/checker/const.py:150
msgid "The mail MX host could not be found."
msgstr ""
#: ../linkcheck/checker/const.py:150
#: ../linkcheck/checker/const.py:152
msgid "The mailto: address could not be verified."
msgstr ""
#: ../linkcheck/checker/const.py:152
#: ../linkcheck/checker/const.py:154
msgid "No connection to a MX host could be established."
msgstr ""
#: ../linkcheck/checker/const.py:153
#: ../linkcheck/checker/const.py:155
msgid "No NNTP server was found."
msgstr ""
#: ../linkcheck/checker/const.py:154
#: ../linkcheck/checker/const.py:156
msgid "The NNTP newsgroup could not be found."
msgstr ""
#: ../linkcheck/checker/const.py:155
#: ../linkcheck/checker/const.py:157
msgid "The IP is obfuscated."
msgstr ""
#: ../linkcheck/checker/const.py:158
msgid "HTML syntax error."
msgstr ""
#: ../linkcheck/checker/const.py:159
msgid "CSS syntax error."
msgstr ""
#: ../linkcheck/checker/mailtourl.py:87
#, python-format
msgid "No mail addresses found in `%(url)s'."
@ -881,32 +889,32 @@ msgstr ""
msgid "%(w3type)s validation error at line %(line)s col %(column)s: %(msg)s"
msgstr ""
#: ../linkcheck/checker/urlbase.py:883
#: ../linkcheck/checker/urlbase.py:882
msgid "valid HTML syntax"
msgstr ""
#: ../linkcheck/checker/urlbase.py:892
#: ../linkcheck/checker/urlbase.py:890
#, python-format
msgid "HTML W3C validation caused error: %(msg)s "
msgstr ""
#: ../linkcheck/checker/urlbase.py:919
#: ../linkcheck/checker/urlbase.py:917
msgid "valid CSS syntax"
msgstr ""
#: ../linkcheck/checker/urlbase.py:927
#: ../linkcheck/checker/urlbase.py:925
#, python-format
msgid "CSS W3C validation caused error: %(msg)s "
msgstr ""
#: ../linkcheck/checker/urlbase.py:980
#: ../linkcheck/checker/urlbase.py:978
#, python-format
msgid "%(num)d URL parsed."
msgid_plural "%(num)d URLs parsed."
msgstr[0] ""
msgstr[1] ""
#: ../linkcheck/checker/urlbase.py:1126
#: ../linkcheck/checker/urlbase.py:1124
#, python-format
msgid "URL has unparsable domain name: %(domain)s"
msgstr ""
@ -1336,7 +1344,6 @@ msgstr ""
#: ../linkcheck/gui/linkchecker_ui_main.py:845
#: ../linkcheck/gui/linkchecker_ui_options.py:137
#: /usr/lib/python2.7/optparse.py:1626
msgid "Options"
msgstr ""
@ -1580,7 +1587,7 @@ msgstr ""
msgid "Closing active URLs with timeout %s..."
msgstr ""
#: ../linkcheck/gui/__init__.py:437 ../linkchecker:698
#: ../linkcheck/gui/__init__.py:437 ../linkchecker:663
msgid "Dumping memory statistics..."
msgstr ""
@ -1588,7 +1595,7 @@ msgstr ""
msgid "LinkChecker memory dump written"
msgstr ""
#: ../linkcheck/gui/__init__.py:440 ../linkchecker:700
#: ../linkcheck/gui/__init__.py:440 ../linkchecker:665
#, python-format
msgid "The memory dump has been written to `%(filename)s'."
msgstr ""
@ -1613,7 +1620,7 @@ msgstr[1] ""
msgid "LinkChecker internal error"
msgstr ""
#: ../linkcheck/gui/linkchecker_ui_options.py:138 ../linkchecker:366
#: ../linkcheck/gui/linkchecker_ui_options.py:138 ../linkchecker:349
msgid "Checking options"
msgstr ""
@ -1838,11 +1845,7 @@ msgid_plural "%d misses"
msgstr[0] ""
msgstr[1] ""
#: ../linkchecker:56
msgid "USAGE\tlinkchecker [options] [file-or-url]..."
msgstr ""
#: ../linkchecker:58
#: ../linkchecker:55
msgid ""
"NOTES\n"
" o URLs on the command line starting with \"ftp.\" are treated like\n"
@ -1861,7 +1864,7 @@ msgid ""
" same as the host of the user browsing your pages.\n"
msgstr ""
#: ../linkchecker:74
#: ../linkchecker:71
msgid ""
"PROXY SUPPORT\n"
"To use a proxy on Unix or Windows set $http_proxy, $https_proxy or "
@ -1888,7 +1891,7 @@ msgid ""
"\n"
msgstr ""
#: ../linkchecker:98
#: ../linkchecker:95
msgid ""
"REGULAR EXPRESSIONS\n"
"Only Python regular expressions are accepted by LinkChecker.\n"
@ -1899,7 +1902,7 @@ msgid ""
"the regular expression.\n"
msgstr ""
#: ../linkchecker:107
#: ../linkchecker:104
msgid ""
"COOKIE FILES\n"
"A cookie file contains standard RFC 805 header data with the following\n"
@ -1929,7 +1932,7 @@ msgid ""
"Set-cookie: baggage=\"elitist\"; comment=\"hologram\"\n"
msgstr ""
#: ../linkchecker:135
#: ../linkchecker:132
msgid ""
"RETURN VALUE\n"
"The return value is non-zero when\n"
@ -1938,7 +1941,7 @@ msgid ""
" o a program error occurred\n"
msgstr ""
#: ../linkchecker:142
#: ../linkchecker:139
msgid ""
"EXAMPLES\n"
"The most common use checks the given domain recursively, plus any\n"
@ -1964,7 +1967,7 @@ msgid ""
" linkchecker -r0 ftp.example.org\n"
msgstr ""
#: ../linkchecker:166
#: ../linkchecker:163
msgid ""
"OUTPUT TYPES\n"
"Note that by default only errors and warnings are logged.\n"
@ -1991,77 +1994,78 @@ msgid ""
"none Logs nothing. Suitable for debugging or checking the exit code.\n"
msgstr ""
#: ../linkchecker:191
#: ../linkchecker:188
msgid ""
"IGNORE WARNINGS\n"
"The following warnings are recognized in the 'ignorewarnings' config\n"
"file entry:\n"
msgstr ""
#: ../linkchecker:203
#: ../linkchecker:202
msgid ""
"The `pstats' Python module is not installed, therefore the --viewprof option "
"is disabled."
msgstr ""
#: ../linkchecker:208
#: ../linkchecker:207
#, python-format
msgid "Could not find profiling file %(file)r."
msgstr ""
#: ../linkchecker:210
#: ../linkchecker:209
msgid "Please run linkchecker with --profile to generate it."
msgstr ""
#: ../linkchecker:225
#: ../linkchecker:224
#, python-format
msgid "Syntax error in %(arg)r: %(msg)s"
msgstr ""
#: ../linkchecker:259
#: ../linkchecker:247
msgid "General options"
msgstr ""
#: ../linkchecker:263
#: ../linkchecker:251
#, python-format
msgid ""
"Use FILENAME as configuration file. Per default LinkChecker uses\n"
"~/.linkchecker/linkcheckerrc (under Windows\n"
"%HOMEPATH%\\.linkchecker\\linkcheckerrc)."
"%%HOMEPATH%%\\.linkchecker\\linkcheckerrc)."
msgstr ""
#: ../linkchecker:269
#: ../linkchecker:256
msgid ""
"Generate no more than the given number of threads. Default number\n"
"of threads is 10. To disable threading specify a non-positive number."
msgstr ""
#: ../linkchecker:272
#: ../linkchecker:259
msgid "Print version and exit."
msgstr ""
#: ../linkchecker:275
#: ../linkchecker:262
msgid "Read list of white-space separated URLs to check from stdin."
msgstr ""
#: ../linkchecker:279
#: ../linkchecker:265
msgid "Output options"
msgstr ""
#: ../linkchecker:282
#: ../linkchecker:268
msgid "Check syntax of CSS URLs with the W3C online validator."
msgstr ""
#: ../linkchecker:285
#: ../linkchecker:271
msgid "Check syntax of HTML URLs with the W3C online validator."
msgstr ""
#: ../linkchecker:287
#: ../linkchecker:273
msgid ""
"Log all URLs, including duplicates.\n"
"Default is to log duplicate URLs only once."
msgstr ""
#: ../linkchecker:291
#: ../linkchecker:276
#, python-format
msgid ""
"Print debugging output for the given logger.\n"
@ -2073,7 +2077,7 @@ msgid ""
"For accurate results, threading will be disabled during debug runs."
msgstr ""
#: ../linkchecker:302
#: ../linkchecker:287
#, python-format
msgid ""
"Output to a file linkchecker-out.TYPE, $HOME/.linkchecker/blacklist for\n"
@ -2090,15 +2094,15 @@ msgid ""
"suppress all console output with the option '-o none'."
msgstr ""
#: ../linkchecker:316
#: ../linkchecker:301
msgid "Do not print check status messages."
msgstr ""
#: ../linkchecker:318
#: ../linkchecker:303
msgid "Don't log warnings. Default is to log warnings."
msgstr ""
#: ../linkchecker:322
#: ../linkchecker:306
#, python-format
msgid ""
"Specify output as %(loggertypes)s. Default output type is text.\n"
@ -2108,25 +2112,25 @@ msgid ""
"html."
msgstr ""
#: ../linkchecker:332
#: ../linkchecker:316
msgid ""
"Quiet operation, an alias for '-o none'.\n"
"This is only useful with -F."
msgstr ""
#: ../linkchecker:336
#: ../linkchecker:320
msgid "Scan content of URLs with ClamAV virus scanner."
msgstr ""
#: ../linkchecker:338
#: ../linkchecker:322
msgid "Print tracing information."
msgstr ""
#: ../linkchecker:341
#: ../linkchecker:325
msgid "Log all URLs. Default is to log only errors and warnings."
msgstr ""
#: ../linkchecker:347
#: ../linkchecker:331
msgid ""
"Define a regular expression which prints a warning if it matches\n"
"any content of the checked link. This applies only to valid pages,\n"
@ -2140,19 +2144,19 @@ msgid ""
"for example \"(This page has moved|Oracle Application error)\"."
msgstr ""
#: ../linkchecker:360
#: ../linkchecker:344
msgid ""
"Print a warning if content size info is available and exceeds the\n"
"given number of bytes."
msgstr ""
#: ../linkchecker:369
#: ../linkchecker:352
msgid ""
"Check HTTP anchor references. Default is not to check anchors.\n"
"This option enables logging of the warning 'url-anchor-not-found'."
msgstr ""
#: ../linkchecker:373
#: ../linkchecker:356
msgid ""
"Accept and send HTTP cookies according to RFC 2109. Only cookies\n"
"which are sent back to the originating server are accepted.\n"
@ -2160,208 +2164,288 @@ msgid ""
"information."
msgstr ""
#: ../linkchecker:380
#: ../linkchecker:362
msgid ""
"Read a file with initial cookie data. The cookie data format is\n"
"explained below."
msgstr ""
#: ../linkchecker:385
#: ../linkchecker:366
msgid ""
"Only check syntax of URLs matching the given regular expression.\n"
" This option can be given multiple times."
msgstr ""
#: ../linkchecker:390
#: ../linkchecker:370
msgid ""
"Check but do not recurse into URLs matching the given regular\n"
"expression. This option can be given multiple times."
msgstr ""
#: ../linkchecker:395
#: ../linkchecker:374
msgid ""
"Specify an NNTP server for 'news:...' links. Default is the\n"
"environment variable NNTP_SERVER. If no host is given,\n"
"only the syntax of the link is checked."
msgstr ""
#: ../linkchecker:401
#: ../linkchecker:380
msgid ""
"Read a password from console and use it for HTTP and FTP authorization.\n"
"For FTP the default password is 'anonymous@'. For HTTP there is\n"
"no default password. See also -u."
msgstr ""
#: ../linkchecker:407
#: ../linkchecker:386
msgid ""
"Pause the given number of seconds between two subsequent connection\n"
"requests to the same host. Default is no pause between requests."
msgstr ""
#: ../linkchecker:412
#: ../linkchecker:391
msgid ""
"Check recursively all links up to given depth. A negative depth\n"
"will enable infinite recursion. Default depth is infinite."
msgstr ""
#: ../linkchecker:417
#: ../linkchecker:396
#, python-format
msgid ""
"Set the timeout for connection attempts in seconds. The default\n"
"timeout is %d seconds."
msgstr ""
#: ../linkchecker:422
#: ../linkchecker:400
msgid ""
"Try the given username for HTTP and FTP authorization.\n"
"For FTP the default username is 'anonymous'. For HTTP there is\n"
"no default username. See also -p."
msgstr ""
#: ../linkchecker:428
#: ../linkchecker:405
msgid ""
"Specify the User-Agent string to send to the HTTP server, for example\n"
"\"Mozilla/4.0\". The default is \"LinkChecker/X.Y\" where X.Y is the current\n"
"version of LinkChecker."
msgstr ""
#: ../linkchecker:474
#: ../linkchecker:439
#, python-format
msgid "Invalid debug level %(level)r"
msgstr ""
#: ../linkchecker:487
#: ../linkchecker:452
#, python-format
msgid "Unreadable config file: %r"
msgstr ""
#: ../linkchecker:495
#: ../linkchecker:460
msgid "Running with python -O disables debugging."
msgstr ""
#: ../linkchecker:518 ../linkchecker:550
#: ../linkchecker:483 ../linkchecker:515
#, python-format
msgid "Unknown logger type %(type)r in %(output)r for option %(option)s"
msgstr ""
#: ../linkchecker:522 ../linkchecker:556
#: ../linkchecker:487 ../linkchecker:521
#, python-format
msgid "Unknown encoding %(encoding)r in %(output)r for option %(option)s"
msgstr ""
#: ../linkchecker:568
#: ../linkchecker:533
#, python-format
msgid "Enter LinkChecker HTTP/FTP password for user %(user)s:"
msgstr ""
#: ../linkchecker:571
#: ../linkchecker:536
msgid "Enter LinkChecker HTTP/FTP password:"
msgstr ""
#: ../linkchecker:578 ../linkchecker:596
#: ../linkchecker:543 ../linkchecker:561
#, python-format
msgid "Illegal argument %(arg)r for option %(option)s"
msgstr ""
#: ../linkchecker:634
#: ../linkchecker:599
#, python-format
msgid "Enter LinkChecker password for user %(user)s at %(strpattern)s:"
msgstr ""
#: ../linkchecker:655
#: ../linkchecker:620
#, python-format
msgid "Could not parse cookie file: %s"
msgstr ""
#: ../linkchecker:670
#: ../linkchecker:635
msgid "no files or URLs given"
msgstr ""
#: ../linkchecker:675
#: ../linkchecker:640
#, python-format
msgid ""
"Overwrite profiling file %(file)r?\n"
"Press Ctrl-C to cancel, RETURN to continue."
msgstr ""
#: ../linkchecker:681
#: ../linkchecker:646
msgid "Canceled."
msgstr ""
#: ../linkchecker:685
#: ../linkchecker:650
msgid ""
"The `cProfile' Python module is not installed, therefore the --profile option "
"is disabled."
msgstr ""
#: /usr/lib/python2.7/optparse.py:140
#: /usr/lib/python2.7/argparse.py:292
msgid "usage: "
msgstr ""
#: /usr/lib/python2.7/argparse.py:800
msgid ".__call__() not defined"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1084
#, python-format
msgid "no such option: %s"
msgid "unknown parser %r (choices: %s)"
msgstr ""
#: /usr/lib/python2.7/optparse.py:151
#: /usr/lib/python2.7/argparse.py:1125
#, python-format
msgid "ambiguous option: %s (%s?)"
msgid "argument \"-\" with mode %r"
msgstr ""
#: /usr/lib/python2.7/optparse.py:374
#: /usr/lib/python2.7/argparse.py:1132
#, python-format
msgid "Usage: %s\n"
msgid "can't open '%s': %s"
msgstr ""
#: /usr/lib/python2.7/optparse.py:393
msgid "Usage"
msgstr ""
#: /usr/lib/python2.7/optparse.py:418
msgid "integer"
msgstr ""
#: /usr/lib/python2.7/optparse.py:419
msgid "long integer"
msgstr ""
#: /usr/lib/python2.7/optparse.py:420
msgid "floating-point"
msgstr ""
#: /usr/lib/python2.7/optparse.py:421
msgid "complex"
msgstr ""
#: /usr/lib/python2.7/optparse.py:429
#: /usr/lib/python2.7/argparse.py:1336
#, python-format
msgid "option %s: invalid %s value: %r"
msgid "cannot merge actions - two groups are named %r"
msgstr ""
#: /usr/lib/python2.7/optparse.py:437
#: /usr/lib/python2.7/argparse.py:1374
msgid "'required' is an invalid argument for positionals"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1394
#, python-format
msgid "option %s: invalid choice: %r (choose from %s)"
msgid "invalid option string %r: must start with a character %r"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1250
#: /usr/lib/python2.7/argparse.py:1415
#, python-format
msgid "dest= is required for options like %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1432
#, python-format
msgid "invalid conflict_resolution value: %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1450
#, python-format
msgid "conflicting option string(s): %s"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1514
msgid "mutually exclusive arguments must be optional"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1584
msgid "positional arguments"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1585
msgid "optional arguments"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1600
msgid "show this help message and exit"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1255
#: /usr/lib/python2.7/argparse.py:1606
msgid "show program's version number and exit"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1278
msgid "%prog [options]"
#: /usr/lib/python2.7/argparse.py:1638
msgid "cannot have multiple subparser arguments"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1498 /usr/lib/python2.7/optparse.py:1537
#: /usr/lib/python2.7/argparse.py:1690
#, python-format
msgid "%s option requires an argument"
msgid "unrecognized arguments: %s"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1500 /usr/lib/python2.7/optparse.py:1539
#: /usr/lib/python2.7/argparse.py:1790
#, python-format
msgid "%s option requires %d arguments"
msgid "not allowed with argument %s"
msgstr ""
#: /usr/lib/python2.7/optparse.py:1509
#: /usr/lib/python2.7/argparse.py:1836 /usr/lib/python2.7/argparse.py:1850
#, python-format
msgid "%s option does not take a value"
msgid "ignored explicit argument %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1940
msgid "too few arguments"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1947
#, python-format
msgid "argument %s is required"
msgstr ""
#: /usr/lib/python2.7/argparse.py:1961
#, python-format
msgid "one of the arguments %s is required"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2007
msgid "expected one argument"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2008
msgid "expected at most one argument"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2009
msgid "expected at least one argument"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2011
#, python-format
msgid "expected %s argument(s)"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2068
#, python-format
msgid "ambiguous option: %s could match %s"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2130
#, python-format
msgid "unexpected option string: %s"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2234
#, python-format
msgid "%r is not callable"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2250
#, python-format
msgid "invalid %s value: %r"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2260
#, python-format
msgid "invalid choice: %r (choose from %s)"
msgstr ""
#: /usr/lib/python2.7/argparse.py:2353
#, python-format
msgid "%s: error: %s\n"
msgstr ""

View file

@ -111,7 +111,7 @@ py_includes = ['dns.rdtypes.IN.*', 'dns.rdtypes.ANY.*',
'twill.other_packages.*', 'twill.other_packages._mechanize_dist.*',
]
# basic excludes for py2exe and py2app
py_excludes = ['doctest', 'unittest', 'optcomplete', 'Tkinter',
py_excludes = ['doctest', 'unittest', 'argcomplete', 'Tkinter',
'PyQt4.QtDesigner', 'PyQt4.QtNetwork', 'PyQt4.QtOpenGL',
'PyQt4.QtScript', 'PyQt4.QtTest', 'PyQt4.QtWebKit', 'PyQt4.QtXml',
'PyQt4.phonon',
@ -951,7 +951,7 @@ o a command line, GUI and web interface
# "IP country info": ['GeoIP'], # http://www.maxmind.com/app/python
# "Login form": ['twill'], # http://twill.idyll.org/
# "GNOME proxies": ['pygtk'], # http://www.pygtk.org/downloads.html
# "Bash completion": ['optcomplete'], # http://furius.ca/optcomplete/
# "Bash completion": ['argcomplete'], # https://pypi.python.org/pypi/argcomplete
# "Memory debugging": ['meliae'], # https://launchpad.net/meliae
#}
)