mirror of
https://github.com/Hopiu/linkchecker.git
synced 2026-03-16 22:10:26 +00:00
Allow memory dumps to be written.
This commit is contained in:
parent
837ab22d01
commit
2dee223555
17 changed files with 796 additions and 563 deletions
|
|
@ -153,6 +153,13 @@
|
|||
# Pause the given number of seconds between two subsequent connection
|
||||
# requests to the same host.
|
||||
#pause=0
|
||||
# When checking finishes, write a memory dump to a temporary file.
|
||||
# The memory dump is written both when checking finishes normally
|
||||
# and when checking gets canceled.
|
||||
# The memory dump only works if the python-meliae package is installed.
|
||||
# Otherwise a warning is printed to install it.
|
||||
#debugmemory=0
|
||||
|
||||
|
||||
##################### filtering options ##########################
|
||||
[filtering]
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ Fixes:
|
|||
Features:
|
||||
- installation: Support RPM building with cx_Freeze.
|
||||
- installation: Added .desktop files for POSIX systems.
|
||||
- checking: Allow writing of a memory dump file.
|
||||
|
||||
|
||||
7.8 "Gangster Exchange" (released 12.5.2012)
|
||||
|
|
|
|||
|
|
@ -109,6 +109,17 @@ Pausiere die angegebene Anzahl von Sekunden zwischen zwei aufeinander
|
|||
folgenden Verbindungen zum demselben Rechner.
|
||||
.br
|
||||
Kommandozeilenoption: \fB\-\-pause\fP
|
||||
.TP
|
||||
\fBdebugmemory=\fP[\fB0\fP|\fB1\fP]
|
||||
Schreibe einen Speicherabzug in eine temporäre Datei wenn die Prüfung
|
||||
endet. Der Speicherabzug wird sowohl beim normalen Beenden der Prüfung als
|
||||
auch wenn die Prüfung abgebrochen wird geschrieben.
|
||||
.br
|
||||
Der Speicherabzug funktioniert nur falls das Paket python\-meliae installiert
|
||||
ist. Andernfalls wird eine Warnung angezeigt mit dem Hinweis dieses Paket zu
|
||||
installieren.
|
||||
.br
|
||||
Kommandozeilenoption: keine
|
||||
.SS [filtering]
|
||||
.TP
|
||||
\fBignore=\fP\fIREGEX\fP (MULTILINE)
|
||||
|
|
|
|||
|
|
@ -103,6 +103,16 @@ Pause the given number of seconds between two subsequent connection
|
|||
requests to the same host.
|
||||
.br
|
||||
Command line option: \fB\-\-pause\fP
|
||||
.TP
|
||||
\fBdebugmemory=\fP[\fB0\fP|\fB1\fP]
|
||||
When checking finishes, write a memory dump to a temporary file.
|
||||
The memory dump is written both when checking finishes normally
|
||||
and when checking gets canceled.
|
||||
.br
|
||||
The memory dump only works if the python-meliae package is installed.
|
||||
Otherwise a warning is printed to install it.
|
||||
.br
|
||||
Command line option: none
|
||||
.SS \fB[filtering]\fP
|
||||
.TP
|
||||
\fBignore=\fP\fIREGEX\fP (MULTILINE)
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -258,7 +258,6 @@ class HttpUrl (internpaturl.InternPatternUrl, proxysupport.ProxySupport):
|
|||
if (self.headers and self.method == "HEAD" and
|
||||
self.method_get_allowed):
|
||||
# test for HEAD support
|
||||
mime = self.get_content_type()
|
||||
poweredby = self.getheader('X-Powered-By', u'')
|
||||
server = self.getheader('Server', u'')
|
||||
if (poweredby.startswith('Zope') or server.startswith('Zope')
|
||||
|
|
|
|||
|
|
@ -192,6 +192,7 @@ class Configuration (dict):
|
|||
self["scanvirus"] = False
|
||||
self["clamavconf"] = clamav.canonical_clamav_conf()
|
||||
self["useragent"] = UserAgent
|
||||
self["debugmemory"] = False
|
||||
from ..logger import Loggers
|
||||
self.loggers = dict(**Loggers)
|
||||
|
||||
|
|
|
|||
|
|
@ -147,6 +147,7 @@ class LCConfigParser (ConfigParser.RawConfigParser, object):
|
|||
self.read_boolean_option(section, "checkcss")
|
||||
self.read_boolean_option(section, "scanvirus")
|
||||
self.read_boolean_option(section, "clamavconf")
|
||||
self.read_boolean_option(section, "debugmemory")
|
||||
if self.has_option(section, "cookies"):
|
||||
self.config["sendcookies"] = self.config["storecookies"] = \
|
||||
self.getboolean(section, "cookies")
|
||||
|
|
|
|||
|
|
@ -182,6 +182,8 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
def set_idle ():
|
||||
"""Set application status to idle."""
|
||||
self.status = Status.idle
|
||||
if self.config["debugmemory"]:
|
||||
self.dump_memory()
|
||||
self.set_statusmsg(_("Check finished."))
|
||||
self.controlButton.clicked.disconnect(self.checker.cancel)
|
||||
self.checker.finished.connect(set_idle)
|
||||
|
|
@ -253,6 +255,7 @@ class LinkCheckerMain (QtGui.QMainWindow, Ui_MainWindow):
|
|||
self.config["threads"] = 1
|
||||
else:
|
||||
self.config.reset_loglevel()
|
||||
self.config["debugmemory"] = data["debugmemory"]
|
||||
if data["warninglines"]:
|
||||
lines = data["warninglines"].splitlines()
|
||||
ro = re.compile(warninglines2regex(lines))
|
||||
|
|
@ -427,6 +430,17 @@ Version 2 or later.
|
|||
else:
|
||||
raise ValueError("Invalid application status %r" % self.status)
|
||||
|
||||
def dump_memory (self):
|
||||
"""Dump memory to temporary file and inform user with a modal
|
||||
dialog where the file is."""
|
||||
from .. import memoryutil
|
||||
self.set_statusmsg(_(u"Dumping memory statistics..."))
|
||||
filename = memoryutil.write_memory_dump()
|
||||
title = _(u"LinkChecker memory dump written")
|
||||
message = _(u"The memory dump has been written to `%(filename)s'.")
|
||||
attrs = dict(filename=filename)
|
||||
QtGui.QMessageBox.information(self, title, message % attrs)
|
||||
|
||||
def get_url (self):
|
||||
"""Return URL to check from the urlinput widget."""
|
||||
url = strformat.stripurl(unicode(self.urlinput.text()))
|
||||
|
|
|
|||
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
# Form implementation generated from reading ui file 'ui/options.ui'
|
||||
#
|
||||
# Created: Thu Mar 15 21:43:48 2012
|
||||
# Created: Sun Jun 10 11:51:42 2012
|
||||
# by: PyQt4 UI code generator 4.9.1
|
||||
#
|
||||
# WARNING! All changes made in this file will be lost!
|
||||
|
|
@ -60,6 +60,14 @@ class Ui_Options(object):
|
|||
self.debug.setText(_fromUtf8(""))
|
||||
self.debug.setObjectName(_fromUtf8("debug"))
|
||||
self.formLayout.setWidget(2, QtGui.QFormLayout.FieldRole, self.debug)
|
||||
self.label_7 = QtGui.QLabel(self.widget)
|
||||
self.label_7.setToolTip(_fromUtf8(""))
|
||||
self.label_7.setObjectName(_fromUtf8("label_7"))
|
||||
self.formLayout.setWidget(3, QtGui.QFormLayout.LabelRole, self.label_7)
|
||||
self.debugmemory = QtGui.QCheckBox(self.widget)
|
||||
self.debugmemory.setText(_fromUtf8(""))
|
||||
self.debugmemory.setObjectName(_fromUtf8("debugmemory"))
|
||||
self.formLayout.setWidget(3, QtGui.QFormLayout.FieldRole, self.debugmemory)
|
||||
self.verticalLayout.addWidget(self.widget)
|
||||
spacerItem = QtGui.QSpacerItem(20, 10, QtGui.QSizePolicy.Minimum, QtGui.QSizePolicy.Expanding)
|
||||
self.verticalLayout.addItem(spacerItem)
|
||||
|
|
@ -135,6 +143,7 @@ class Ui_Options(object):
|
|||
self.label_2.setText(_("Verbose output"))
|
||||
self.verbose.setToolTip(_("Log all checked URLs once. Default is to log only errors and warnings."))
|
||||
self.label_4.setText(_("Debug"))
|
||||
self.label_7.setText(_("Debug memory usage"))
|
||||
self.label_5.setText(_("Warn when one of these strings are found (one per line):"))
|
||||
self.label_6.setText(_("Ignore URLs matching one of these patterns (one per line):"))
|
||||
self.groupBox.setTitle(_("Configuration file"))
|
||||
|
|
|
|||
|
|
@ -19,7 +19,7 @@ import os
|
|||
from PyQt4 import QtGui
|
||||
from .linkchecker_ui_options import Ui_Options
|
||||
from .editor import EditorWindow
|
||||
from ..fileutil import is_writable
|
||||
from ..fileutil import is_writable, has_module
|
||||
from .. import configuration
|
||||
|
||||
|
||||
|
|
@ -46,6 +46,11 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
self.recursionlevel.setValue(-1)
|
||||
self.verbose.setChecked(False)
|
||||
self.debug.setChecked(False)
|
||||
self.debugmemory.setChecked(False)
|
||||
if not has_module("meliae"):
|
||||
self.debugmemory.setEnabled(False)
|
||||
from ..memoryutil import MemoryDebugMsg
|
||||
self.debugmemory.setTooltip(MemoryDebugMsg)
|
||||
self.warninglines.setPlainText(u"")
|
||||
self.ignorelines.setPlainText(u"")
|
||||
|
||||
|
|
@ -64,6 +69,7 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
"""Return option data as dictionary."""
|
||||
return dict(
|
||||
debug=self.debug.isChecked(),
|
||||
debugmemory=self.debugmemory.isChecked(),
|
||||
verbose=self.verbose.isChecked(),
|
||||
recursionlevel=self.recursionlevel.value(),
|
||||
warninglines=unicode(self.warninglines.toPlainText()),
|
||||
|
|
@ -74,6 +80,8 @@ class LinkCheckerOptions (QtGui.QDialog, Ui_Options):
|
|||
"""Set GUI options from given data."""
|
||||
if data.get("debug") is not None:
|
||||
self.debug.setChecked(data["debug"])
|
||||
if data.get("debugmemory") is not None:
|
||||
self.debugmemory.setChecked(data["debugmemory"])
|
||||
if data.get("verbose") is not None:
|
||||
self.verbose.setChecked(data["verbose"])
|
||||
if data.get("recursionlevel") is not None:
|
||||
|
|
|
|||
|
|
@ -104,6 +104,23 @@
|
|||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="0">
|
||||
<widget class="QLabel" name="label_7">
|
||||
<property name="toolTip">
|
||||
<string extracomment="When checking finishes, write a memory dump to a temporary file. The memory dump is written both when checking finishes normally and when checking gets canceled."/>
|
||||
</property>
|
||||
<property name="text">
|
||||
<string>Debug memory usage</string>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item row="3" column="1">
|
||||
<widget class="QCheckBox" name="debugmemory">
|
||||
<property name="text">
|
||||
<string/>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
</layout>
|
||||
</widget>
|
||||
</item>
|
||||
|
|
|
|||
53
linkcheck/memoryutil.py
Normal file
53
linkcheck/memoryutil.py
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
# -*- coding: iso-8859-1 -*-
|
||||
# Copyright (C) 2012 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
|
||||
# the Free Software Foundation; either version 2 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License along
|
||||
# with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
"""
|
||||
Memory utilities.
|
||||
"""
|
||||
import sys
|
||||
from . import strformat
|
||||
from .fileutil import get_temp_file
|
||||
|
||||
# Message to display when meliae package is not installed
|
||||
MemoryDebugMsg = strformat.format_feature_warning(module=u'meliae',
|
||||
feature=u'memory debugging',
|
||||
url=u'https://launchpad.net/meliae')
|
||||
|
||||
|
||||
def write_memory_dump():
|
||||
"""Dump memory to a temporary filename with the meliae package.
|
||||
@return: JSON filename where memory dump has been written to
|
||||
@rtype: string
|
||||
"""
|
||||
from meliae import scanner
|
||||
fo, filename = get_temp_file(mode='wb', suffix='.json', prefix='lcdump_')
|
||||
try:
|
||||
scanner.dump_all_objects(fo)
|
||||
finally:
|
||||
fo.close()
|
||||
return filename
|
||||
|
||||
|
||||
def print_memory_dump(filename, out=sys.stdout):
|
||||
"""Print a memory dump to given output stream.
|
||||
@param filename: memory dump file
|
||||
@ptype filename: string
|
||||
@param out: output stream, default: stdout
|
||||
@ptype out: open file object
|
||||
"""
|
||||
from meliae import loader
|
||||
om = loader.load(filename)
|
||||
print >>out, om.summarize()
|
||||
10
linkchecker
10
linkchecker
|
|
@ -44,6 +44,7 @@ from linkcheck.director import console, check_urls, get_aggregate
|
|||
has_optcomplete = linkcheck.fileutil.has_module("optcomplete")
|
||||
has_profile = linkcheck.fileutil.has_module("profile")
|
||||
has_pstats = linkcheck.fileutil.has_module("pstats")
|
||||
has_meliae = linkcheck.fileutil.has_module("meliae")
|
||||
|
||||
# default profiling filename
|
||||
_profile = "linkchecker.prof"
|
||||
|
|
@ -790,6 +791,15 @@ if do_profile:
|
|||
profile.run("check_urls(aggregate)", _profile)
|
||||
else:
|
||||
check_urls(aggregate)
|
||||
if config["debugmemory"]:
|
||||
import linkcheck.memoryutil
|
||||
if has_meliae:
|
||||
log.info(LOG_CMDLINE, _(u"Dumping memory statistics..."))
|
||||
filename = linkcheck.memoryutil.write_memory_dump()
|
||||
message = _(u"The memory dump has been written to `%(filename)s'.")
|
||||
log.info(LOG_CMDLINE, message % dict(filename=filename))
|
||||
else:
|
||||
log.warn(LOG_CMDLINE, memoryutil.MemoryDebugMsg)
|
||||
|
||||
stats = config['logger'].stats
|
||||
# on internal errors, exit with status 2
|
||||
|
|
|
|||
193
po/de.po
193
po/de.po
|
|
@ -5,8 +5,8 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: $Id$\n"
|
||||
"Report-Msgid-Bugs-To: calvin@users.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2012-04-22 21:50+0200\n"
|
||||
"PO-Revision-Date: 2012-04-22 21:52+0100\n"
|
||||
"POT-Creation-Date: 2012-06-10 12:22+0200\n"
|
||||
"PO-Revision-Date: 2012-06-10 12:24+0100\n"
|
||||
"Last-Translator: Bastian Kleineidam <calvin@users.sourceforge.net>\n"
|
||||
"Language-Team: de <de@li.org>\n"
|
||||
"Language: \n"
|
||||
|
|
@ -102,38 +102,34 @@ msgstr "Python %(version)s auf %(platform)s"
|
|||
msgid "Local time:"
|
||||
msgstr "Uhrzeit:"
|
||||
|
||||
#: ../linkcheck/director/__init__.py:37
|
||||
msgid "Could not import twill for login URL visit"
|
||||
msgstr "Konnte twill nicht importieren, um die Login URL zu besuchen."
|
||||
|
||||
#: ../linkcheck/director/__init__.py:44
|
||||
#: ../linkcheck/director/__init__.py:48
|
||||
#, python-format
|
||||
msgid "Error visiting login URL %(url)s."
|
||||
msgstr "Fehler beim Besuchen der Login URL %(url)s."
|
||||
|
||||
#: ../linkcheck/director/__init__.py:49
|
||||
#: ../linkcheck/director/__init__.py:53
|
||||
#, python-format
|
||||
msgid "Error posting form at login URL %(url)s."
|
||||
msgstr "Fehler beim Abschicken des Formulars bei Login URL %(url)s."
|
||||
|
||||
#: ../linkcheck/director/__init__.py:126
|
||||
#: ../linkcheck/director/__init__.py:130
|
||||
#, python-format
|
||||
msgid "Error using login URL: %(msg)s."
|
||||
msgstr "Fehler bei Login URL: %(msg)s."
|
||||
|
||||
#: ../linkcheck/director/__init__.py:142
|
||||
#: ../linkcheck/director/__init__.py:146
|
||||
msgid "Could not start a new thread. Check that the current user is allowed to start new threads."
|
||||
msgstr "Konnte keinen neuen Thread starten. Überprüfen sie, ob der aktuelle Benutzer neue Threads starten darf."
|
||||
|
||||
#: ../linkcheck/director/__init__.py:175
|
||||
#: ../linkcheck/director/__init__.py:179
|
||||
msgid "user interrupt; waiting for active threads to finish"
|
||||
msgstr "Benutzerabbruch; warte auf Beendigung von aktiven Verbindungen"
|
||||
|
||||
#: ../linkcheck/director/__init__.py:177
|
||||
#: ../linkcheck/director/__init__.py:181
|
||||
msgid "another interrupt will exit immediately"
|
||||
msgstr "ein weiter Abbruch beendet dieses Programm sofort"
|
||||
|
||||
#: ../linkcheck/director/__init__.py:193
|
||||
#: ../linkcheck/director/__init__.py:197
|
||||
msgid "user abort; force shutdown"
|
||||
msgstr "Benutzerabbruch; erzwinge Programmende"
|
||||
|
||||
|
|
@ -151,72 +147,72 @@ msgstr "konnte Rechnernamen %(host)r nicht parsen: %(msg)s"
|
|||
msgid "Error parsing configuration: %s"
|
||||
msgstr "Fehler beim Parsen der Konfiguration: %s"
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:116
|
||||
#: ../linkcheck/configuration/confparse.py:119
|
||||
#, python-format
|
||||
msgid "invalid negative value for timeout: %d\n"
|
||||
msgstr "ungültiger negativer Wert für timeout: %d\n"
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:138
|
||||
#: ../linkcheck/configuration/confparse.py:140
|
||||
#, python-format
|
||||
msgid "invalid negative value for pause: %d\n"
|
||||
msgstr "ungültiger negativer Wert für pause: %d\n"
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:171
|
||||
#: ../linkcheck/configuration/confparse.py:170
|
||||
#, python-format
|
||||
msgid "missing auth part in entry %(val)r"
|
||||
msgstr "fehlende Authentifizierung in entry %(val)r"
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:177
|
||||
#: ../linkcheck/configuration/confparse.py:176
|
||||
#, python-format
|
||||
msgid "invalid login URL `%s'. Only HTTP and HTTPS URLs are supported."
|
||||
msgstr "ungültige Login URL `%s'. Nur HTTP und HTTPS URLs sind unterstützt."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:286
|
||||
#: ../linkcheck/configuration/__init__.py:288
|
||||
msgid "missing user or URL pattern in authentication data."
|
||||
msgstr "Fehlender Benutzer oder regulärer URL Ausdruck in Authentifizierungsdaten."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:332
|
||||
#: ../linkcheck/configuration/__init__.py:334
|
||||
msgid "activating text logger output."
|
||||
msgstr "aktiviere Loggerausgabe text."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:342
|
||||
#: ../linkcheck/configuration/__init__.py:344
|
||||
msgid "Clamav could not be initialized"
|
||||
msgstr "Clamav konnte nicht initialisiert werden"
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:348
|
||||
#: ../linkcheck/configuration/__init__.py:350
|
||||
msgid "activating sendcookies."
|
||||
msgstr "aktiviere Option sendcookies."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:351
|
||||
#: ../linkcheck/configuration/__init__.py:353
|
||||
msgid "activating storecookies."
|
||||
msgstr "aktiviere Option storecookies."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:360
|
||||
#: ../linkcheck/configuration/__init__.py:362
|
||||
msgid "no CGI password fieldname given for login URL."
|
||||
msgstr " kein CGI Passwort Feldname für Login URL angegeben."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:364
|
||||
#: ../linkcheck/configuration/__init__.py:366
|
||||
msgid "no CGI user fieldname given for login URL."
|
||||
msgstr "kein CGI Benutzer Feldname für Login URL angegeben."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:368
|
||||
#: ../linkcheck/configuration/__init__.py:370
|
||||
msgid "no user/password authentication data found for login URL."
|
||||
msgstr "keine Benutzer/Passwort-Authentifizierung für Login URL gefunden."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:371
|
||||
#: ../linkcheck/configuration/__init__.py:373
|
||||
msgid "login URL is not a HTTP URL."
|
||||
msgstr "Login URL ist keine HTTP URL."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:375
|
||||
#: ../linkcheck/configuration/__init__.py:377
|
||||
msgid "login URL is incomplete."
|
||||
msgstr "Login URL ist unvollständig."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:379
|
||||
#: ../linkcheck/configuration/__init__.py:381
|
||||
#, python-format
|
||||
msgid "disabling login URL %(url)s."
|
||||
msgstr "deaktiviere Login URL %(url)s."
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:419
|
||||
#: ../linkcheck/configuration/__init__.py:421
|
||||
#, python-format
|
||||
msgid "could not copy initial configuration file %(src)r to %(dst)r: %(errmsg)r"
|
||||
msgstr "Konnte initiale Konfigurationsdatei %(src)r nicht nach %(dst)r kopieren: %(errmsg)r"
|
||||
|
|
@ -788,7 +784,7 @@ msgstr "Verfügbare Anker: %(anchors)s."
|
|||
|
||||
#: ../linkcheck/checker/urlbase.py:711
|
||||
#: ../linkcheck/checker/fileurl.py:190
|
||||
#: ../linkcheck/checker/httpurl.py:683
|
||||
#: ../linkcheck/checker/httpurl.py:666
|
||||
msgid "File size too large"
|
||||
msgstr "Dateigröße ist zu groß"
|
||||
|
||||
|
|
@ -917,45 +913,45 @@ msgstr "unbekannt"
|
|||
msgid "Server `%(name)s' did not support HEAD request; a GET request was used instead."
|
||||
msgstr "Server `%(name)s' unterstützte keine HEAD Anfrage; eine GET Anfrage wurde stattdessen verwendet."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:209
|
||||
#: ../linkcheck/checker/httpurl.py:205
|
||||
#, python-format
|
||||
msgid "Enforced proxy `%(name)s'."
|
||||
msgstr "Erzwungener Proxy `%(name)s'."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:214
|
||||
#: ../linkcheck/checker/httpurl.py:210
|
||||
#, python-format
|
||||
msgid "Enforced proxy `%(name)s' ignored, aborting."
|
||||
msgstr "Erzwungener Proxy `%(name)s' wurde ignoriert, breche ab."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:245
|
||||
#: ../linkcheck/checker/httpurl.py:237
|
||||
#, python-format
|
||||
msgid "more than %d redirections, aborting"
|
||||
msgstr "mehr als %d Weiterleitungen, breche ab"
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:255
|
||||
#: ../linkcheck/checker/httpurl.py:247
|
||||
#, python-format
|
||||
msgid "Unsupported HTTP authentication `%(auth)s', only `Basic' authentication is supported."
|
||||
msgstr "Nicht unterstützte HTTP Authentifizierungsmethode `%(auth)s', nur `Basic' Authentifizierung ist unterstützt."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:325
|
||||
#: ../linkcheck/checker/httpurl.py:308
|
||||
#, python-format
|
||||
msgid "Redirected to `%(url)s'."
|
||||
msgstr "Zu `%(url)s' umgeleitet."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:367
|
||||
#: ../linkcheck/checker/httpurl.py:350
|
||||
#, python-format
|
||||
msgid "Redirection to url `%(newurl)s' is not allowed."
|
||||
msgstr "Umleitung zu `%(newurl)s' ist nicht erlaubt."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:388
|
||||
#: ../linkcheck/checker/httpurl.py:371
|
||||
msgid "The redirected URL is outside of the domain filter, checked only syntax."
|
||||
msgstr "Die Weiterleitungs-URL ist außerhalb des Domain Filters; prüfe lediglich Syntax."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:401
|
||||
#: ../linkcheck/checker/httpurl.py:384
|
||||
msgid "Access to redirected URL denied by robots.txt, checked only syntax."
|
||||
msgstr "Zugriff zur Weiterleitungs-URL verweigert durch robots.txt; prüfe lediglich Syntax."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:419
|
||||
#: ../linkcheck/checker/httpurl.py:402
|
||||
#, python-format
|
||||
msgid ""
|
||||
"recursive redirection encountered:\n"
|
||||
|
|
@ -964,41 +960,41 @@ msgstr ""
|
|||
"Rekursive Weiterleitung entdeckt:\n"
|
||||
" %(urls)s"
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:436
|
||||
#: ../linkcheck/checker/httpurl.py:419
|
||||
#, python-format
|
||||
msgid "Redirection to URL `%(newurl)s' with different scheme found; the original URL was `%(url)s'."
|
||||
msgstr "Weiterleitung zu URL `%(newurl)s' mit anderem Schema gefunden; die Original-URL war `%(url)s'."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:448
|
||||
#: ../linkcheck/checker/httpurl.py:431
|
||||
msgid "HTTP 301 (moved permanent) encountered: you should update this link."
|
||||
msgstr "HTTP 301 (moved permanent) gefunden: sie sollten diesen Link aktualisieren."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:493
|
||||
#: ../linkcheck/checker/httpurl.py:476
|
||||
#, python-format
|
||||
msgid "Last modified %(date)s."
|
||||
msgstr "Letzte Änderung %(date)s."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:591
|
||||
#: ../linkcheck/checker/httpurl.py:574
|
||||
#, python-format
|
||||
msgid "Sent Cookie: %(cookie)s."
|
||||
msgstr "Gesendetes Cookie: %(cookie)s."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:597
|
||||
#: ../linkcheck/checker/httpurl.py:580
|
||||
#, python-format
|
||||
msgid "Could not store cookies from headers: %(error)s."
|
||||
msgstr "Konnte Cookies nicht aus Kopfdaten speichern: %(error)s."
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:657
|
||||
#: ../linkcheck/checker/httpurl.py:640
|
||||
#, python-format
|
||||
msgid "Unsupported HTTP url scheme `%(scheme)s'"
|
||||
msgstr "Nicht unterstütztes HTTP URL Schema `%(scheme)s'"
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:703
|
||||
#: ../linkcheck/checker/httpurl.py:686
|
||||
#, python-format
|
||||
msgid "Decompress error %(err)s"
|
||||
msgstr "Entkomprimierungsfehler %(err)s"
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:719
|
||||
#: ../linkcheck/checker/httpurl.py:702
|
||||
#, python-format
|
||||
msgid "Unsupported content encoding `%(encoding)s'."
|
||||
msgstr "Content-Encoding `%(encoding)s' wird nicht unterstützt."
|
||||
|
|
@ -1211,7 +1207,7 @@ msgid "&Options"
|
|||
msgstr "&Optionen"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:813
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:129
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:137
|
||||
#: /usr/lib/python2.7/optparse.py:1626
|
||||
msgid "Options"
|
||||
msgstr "Optionen"
|
||||
|
|
@ -1355,16 +1351,16 @@ msgstr "Ein Fehler ist während der Update-Prüfung von %(app)s aufgetreten: %(e
|
|||
msgid "Insert %(browser)s bookmark file"
|
||||
msgstr "%(browser)s Favoritendatei einfügen"
|
||||
|
||||
#: ../linkcheck/gui/options.py:105
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:144
|
||||
#: ../linkcheck/gui/options.py:113
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:153
|
||||
msgid "Edit"
|
||||
msgstr "Bearbeiten"
|
||||
|
||||
#: ../linkcheck/gui/options.py:107
|
||||
#: ../linkcheck/gui/options.py:115
|
||||
msgid "Read"
|
||||
msgstr "Lesen"
|
||||
|
||||
#: ../linkcheck/gui/options.py:110
|
||||
#: ../linkcheck/gui/options.py:118
|
||||
msgid "File not found"
|
||||
msgstr "Datei nicht gefunden"
|
||||
|
||||
|
|
@ -1401,28 +1397,28 @@ msgid "&Save"
|
|||
msgstr "&Speichern"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:158
|
||||
#: ../linkcheck/gui/__init__.py:483
|
||||
#: ../linkcheck/gui/__init__.py:499
|
||||
msgid "Ready."
|
||||
msgstr "Bereit."
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:185
|
||||
#: ../linkcheck/gui/__init__.py:187
|
||||
msgid "Check finished."
|
||||
msgstr "Prüfung beendet."
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:294
|
||||
#: ../linkcheck/gui/__init__.py:297
|
||||
msgid "Start"
|
||||
msgstr "Start"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:319
|
||||
#: ../linkcheck/gui/__init__.py:322
|
||||
msgid "Stop"
|
||||
msgstr "Anhalten"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:367
|
||||
#: ../linkcheck/gui/__init__.py:370
|
||||
#, python-format
|
||||
msgid "About %(appname)s"
|
||||
msgstr "Über %(appname)s"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:368
|
||||
#: ../linkcheck/gui/__init__.py:371
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<qt><center>\n"
|
||||
|
|
@ -1451,89 +1447,108 @@ msgstr ""
|
|||
"<a href=\"%(donateurl)s\">Spende</a> in Betracht ziehen. Vielen Dank!\n"
|
||||
"</qt>"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:418
|
||||
#: ../linkcheck/gui/__init__.py:423
|
||||
msgid "Closing pending connections..."
|
||||
msgstr "Schließe aktuelle Verbindungen..."
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:452
|
||||
#: ../linkcheck/gui/__init__.py:439
|
||||
#: ../linkchecker:795
|
||||
msgid "Dumping memory statistics..."
|
||||
msgstr "Generiere Speicherabzug..."
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:441
|
||||
msgid "LinkChecker memory dump written"
|
||||
msgstr "LinkChecker Speicherabzug geschrieben"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:442
|
||||
#: ../linkchecker:797
|
||||
#, python-format
|
||||
msgid "The memory dump has been written to `%(filename)s'."
|
||||
msgstr "Der Speicherabzug wurde in Datei `%(filename)s' geschrieben."
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:468
|
||||
msgid "Error, empty URL"
|
||||
msgstr "Fehler, leere URL"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:454
|
||||
#: ../linkcheck/gui/__init__.py:470
|
||||
#, python-format
|
||||
msgid "Checking '%s'."
|
||||
msgstr "Prüfe '%s'"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:460
|
||||
#: ../linkcheck/gui/__init__.py:476
|
||||
#, python-format
|
||||
msgid "Error, invalid URL `%s'."
|
||||
msgstr "Fehler, ungültige URL `%s'."
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:480
|
||||
#: ../linkcheck/gui/__init__.py:496
|
||||
#, python-format
|
||||
msgid "%d URL selected."
|
||||
msgid_plural "%d URLs selected"
|
||||
msgstr[0] "%4d Verknüpfung ausgewählt"
|
||||
msgstr[1] "%4d Verknüpfungen ausgewählt"
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:561
|
||||
#: ../linkcheck/gui/__init__.py:577
|
||||
msgid "LinkChecker internal error"
|
||||
msgstr "LinkChecker interner Fehler"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:130
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:138
|
||||
#: ../linkchecker:440
|
||||
msgid "Checking options"
|
||||
msgstr "Prüf-Optionen"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:131
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:133
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:139
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:141
|
||||
msgid "Check recursively all links up to given depth. A negative depth will enable infinite recursion."
|
||||
msgstr ""
|
||||
"Prüfe rekursiv alle Verknüpfungen bis zu der angegebenen Tiefe. Eine\n"
|
||||
"negative Tiefe erwirkt unendliche Rekursion."
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:132
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:140
|
||||
msgid "Recursive depth"
|
||||
msgstr "Rekursionstiefe"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:134
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:136
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:142
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:144
|
||||
msgid "Log all checked URLs once. Default is to log only errors and warnings."
|
||||
msgstr "Gebe alle URLs aus. Standard ist es, nur fehlerhafte URLs und Warnungen auszugeben."
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:135
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:143
|
||||
msgid "Verbose output"
|
||||
msgstr "Ausführliche Ausgabe"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:137
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:145
|
||||
msgid "Debug"
|
||||
msgstr "Debug"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:138
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:146
|
||||
msgid "Debug memory usage"
|
||||
msgstr "Speicherverbrauch debuggen"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:147
|
||||
msgid "Warn when one of these strings are found (one per line):"
|
||||
msgstr "Warne wenn einer dieser Zeichenketten gefunden wurde (eine pro Zeile):"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:139
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:148
|
||||
msgid "Ignore URLs matching one of these patterns (one per line):"
|
||||
msgstr "Ignoriere URLs die auf einen dieser Ausdrücke passen (einer pro Zeile):"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:140
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:149
|
||||
msgid "Configuration file"
|
||||
msgstr "Konfigurationsdatei"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:141
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:150
|
||||
msgid "The configuration file holds advanced options and can be edited with an integrated text editor."
|
||||
msgstr "Die Konfigurationsdatei enthält fortgeschrittene Optionen und kann mit einem integrierten Texteditor bearbeitet werden."
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:142
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:151
|
||||
msgid "Overrides system wide configuration file settings."
|
||||
msgstr "Überschreibt systemweite Konfiguration."
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:143
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:152
|
||||
msgid "/home/user/.linkchecker/linkcheckerrc"
|
||||
msgstr "/home/user/.linkchecker/linkcheckerrc"
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:145
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:154
|
||||
msgid "Close"
|
||||
msgstr "Schließen"
|
||||
|
||||
|
|
@ -1642,46 +1657,51 @@ msgstr ""
|
|||
"enthält: <code>A-Za-z0-9./_~-</code><br><br>Fehler werden geloggt.\n"
|
||||
"</blockquote></body></html>"
|
||||
|
||||
#: ../linkcheck/strformat.py:230
|
||||
#: ../linkcheck/strformat.py:237
|
||||
#, python-format
|
||||
msgid "%(prefix)s%(duration).02f seconds"
|
||||
msgstr "%(prefix)s%(duration).02f Sekunden"
|
||||
|
||||
#: ../linkcheck/strformat.py:233
|
||||
#: ../linkcheck/strformat.py:240
|
||||
#, python-format
|
||||
msgid "%d second"
|
||||
msgid_plural "%d seconds"
|
||||
msgstr[0] "%d Sekunde"
|
||||
msgstr[1] "%d Sekunden"
|
||||
|
||||
#: ../linkcheck/strformat.py:234
|
||||
#: ../linkcheck/strformat.py:241
|
||||
#, python-format
|
||||
msgid "%d minute"
|
||||
msgid_plural "%d minutes"
|
||||
msgstr[0] "%d Minute"
|
||||
msgstr[1] "%d Minuten"
|
||||
|
||||
#: ../linkcheck/strformat.py:235
|
||||
#: ../linkcheck/strformat.py:242
|
||||
#, python-format
|
||||
msgid "%d hour"
|
||||
msgid_plural "%d hours"
|
||||
msgstr[0] "%d Stunde"
|
||||
msgstr[1] "%d Stunden"
|
||||
|
||||
#: ../linkcheck/strformat.py:236
|
||||
#: ../linkcheck/strformat.py:243
|
||||
#, python-format
|
||||
msgid "%d day"
|
||||
msgid_plural "%d days"
|
||||
msgstr[0] "%d Tag"
|
||||
msgstr[1] "%d Tage"
|
||||
|
||||
#: ../linkcheck/strformat.py:237
|
||||
#: ../linkcheck/strformat.py:244
|
||||
#, python-format
|
||||
msgid "%d year"
|
||||
msgid_plural "%d years"
|
||||
msgstr[0] "%d Jahr"
|
||||
msgstr[1] "%d Jahre"
|
||||
|
||||
#: ../linkcheck/strformat.py:313
|
||||
#, python-format
|
||||
msgid "Could not import %(module)s for %(feature)s. Install %(module)s from %(url)s to use this feature."
|
||||
msgstr "Konnte Modul %(module)s für %(feature)s nicht importieren. Installieren Sie %(module)s von %(url)s, um dieses Feature zu nutzen."
|
||||
|
||||
#: ../linkchecker:54
|
||||
msgid "USAGE\tlinkchecker [options] [file-or-url]..."
|
||||
msgstr "BENUTZUNG\tlinkchecker [Optionen] [datei-oder-url]..."
|
||||
|
|
@ -2441,6 +2461,9 @@ msgstr "%s Option erfordert %d Argumente"
|
|||
msgid "%s option does not take a value"
|
||||
msgstr "%s Option nimmt kein Wert"
|
||||
|
||||
#~ msgid "Could not import twill for login URL visit"
|
||||
#~ msgstr "Konnte twill nicht importieren, um die Login URL zu besuchen."
|
||||
|
||||
#~ msgid "invalid %s option syntax"
|
||||
#~ msgstr "ungültige Option %s"
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
# SOME DESCRIPTIVE TITLE.
|
||||
# Copyright (C) 2012 Bastian Kleineidam <calvin@users.sourceforge.net>
|
||||
# Copyright (C) YEAR Bastian Kleineidam <calvin@users.sourceforge.net>
|
||||
# This file is distributed under the same license as the PACKAGE package.
|
||||
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
|
||||
#
|
||||
|
|
@ -8,7 +8,7 @@ msgid ""
|
|||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\n"
|
||||
"Report-Msgid-Bugs-To: calvin@users.sourceforge.net\n"
|
||||
"POT-Creation-Date: 2012-04-22 21:50+0200\n"
|
||||
"POT-Creation-Date: 2012-06-10 12:22+0200\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"
|
||||
|
|
@ -89,40 +89,36 @@ msgstr ""
|
|||
msgid "Local time:"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:37
|
||||
msgid "Could not import twill for login URL visit"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:44
|
||||
#: ../linkcheck/director/__init__.py:48
|
||||
#, python-format
|
||||
msgid "Error visiting login URL %(url)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:49
|
||||
#: ../linkcheck/director/__init__.py:53
|
||||
#, python-format
|
||||
msgid "Error posting form at login URL %(url)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:126
|
||||
#: ../linkcheck/director/__init__.py:130
|
||||
#, python-format
|
||||
msgid "Error using login URL: %(msg)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:142
|
||||
#: ../linkcheck/director/__init__.py:146
|
||||
msgid ""
|
||||
"Could not start a new thread. Check that the current user is allowed to start "
|
||||
"new threads."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:175
|
||||
#: ../linkcheck/director/__init__.py:179
|
||||
msgid "user interrupt; waiting for active threads to finish"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:177
|
||||
#: ../linkcheck/director/__init__.py:181
|
||||
msgid "another interrupt will exit immediately"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/director/__init__.py:193
|
||||
#: ../linkcheck/director/__init__.py:197
|
||||
msgid "user abort; force shutdown"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -140,72 +136,72 @@ msgstr ""
|
|||
msgid "Error parsing configuration: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:116
|
||||
#: ../linkcheck/configuration/confparse.py:119
|
||||
#, python-format
|
||||
msgid "invalid negative value for timeout: %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:138
|
||||
#: ../linkcheck/configuration/confparse.py:140
|
||||
#, python-format
|
||||
msgid "invalid negative value for pause: %d\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:171
|
||||
#: ../linkcheck/configuration/confparse.py:170
|
||||
#, python-format
|
||||
msgid "missing auth part in entry %(val)r"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/confparse.py:177
|
||||
#: ../linkcheck/configuration/confparse.py:176
|
||||
#, python-format
|
||||
msgid "invalid login URL `%s'. Only HTTP and HTTPS URLs are supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:286
|
||||
#: ../linkcheck/configuration/__init__.py:288
|
||||
msgid "missing user or URL pattern in authentication data."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:332
|
||||
#: ../linkcheck/configuration/__init__.py:334
|
||||
msgid "activating text logger output."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:342
|
||||
#: ../linkcheck/configuration/__init__.py:344
|
||||
msgid "Clamav could not be initialized"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:348
|
||||
#: ../linkcheck/configuration/__init__.py:350
|
||||
msgid "activating sendcookies."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:351
|
||||
#: ../linkcheck/configuration/__init__.py:353
|
||||
msgid "activating storecookies."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:360
|
||||
#: ../linkcheck/configuration/__init__.py:362
|
||||
msgid "no CGI password fieldname given for login URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:364
|
||||
#: ../linkcheck/configuration/__init__.py:366
|
||||
msgid "no CGI user fieldname given for login URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:368
|
||||
#: ../linkcheck/configuration/__init__.py:370
|
||||
msgid "no user/password authentication data found for login URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:371
|
||||
#: ../linkcheck/configuration/__init__.py:373
|
||||
msgid "login URL is not a HTTP URL."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:375
|
||||
#: ../linkcheck/configuration/__init__.py:377
|
||||
msgid "login URL is incomplete."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:379
|
||||
#: ../linkcheck/configuration/__init__.py:381
|
||||
#, python-format
|
||||
msgid "disabling login URL %(url)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/configuration/__init__.py:419
|
||||
#: ../linkcheck/configuration/__init__.py:421
|
||||
#, python-format
|
||||
msgid "could not copy initial configuration file %(src)r to %(dst)r: %(errmsg)r"
|
||||
msgstr ""
|
||||
|
|
@ -757,7 +753,7 @@ msgid "Available anchors: %(anchors)s."
|
|||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/urlbase.py:711 ../linkcheck/checker/fileurl.py:190
|
||||
#: ../linkcheck/checker/httpurl.py:683
|
||||
#: ../linkcheck/checker/httpurl.py:666
|
||||
msgid "File size too large"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -889,90 +885,90 @@ msgid ""
|
|||
"instead."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:209
|
||||
#: ../linkcheck/checker/httpurl.py:205
|
||||
#, python-format
|
||||
msgid "Enforced proxy `%(name)s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:214
|
||||
#: ../linkcheck/checker/httpurl.py:210
|
||||
#, python-format
|
||||
msgid "Enforced proxy `%(name)s' ignored, aborting."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:245
|
||||
#: ../linkcheck/checker/httpurl.py:237
|
||||
#, python-format
|
||||
msgid "more than %d redirections, aborting"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:255
|
||||
#: ../linkcheck/checker/httpurl.py:247
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Unsupported HTTP authentication `%(auth)s', only `Basic' authentication is "
|
||||
"supported."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:325
|
||||
#: ../linkcheck/checker/httpurl.py:308
|
||||
#, python-format
|
||||
msgid "Redirected to `%(url)s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:367
|
||||
#: ../linkcheck/checker/httpurl.py:350
|
||||
#, python-format
|
||||
msgid "Redirection to url `%(newurl)s' is not allowed."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:388
|
||||
#: ../linkcheck/checker/httpurl.py:371
|
||||
msgid "The redirected URL is outside of the domain filter, checked only syntax."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:401
|
||||
#: ../linkcheck/checker/httpurl.py:384
|
||||
msgid "Access to redirected URL denied by robots.txt, checked only syntax."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:419
|
||||
#: ../linkcheck/checker/httpurl.py:402
|
||||
#, python-format
|
||||
msgid ""
|
||||
"recursive redirection encountered:\n"
|
||||
" %(urls)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:436
|
||||
#: ../linkcheck/checker/httpurl.py:419
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Redirection to URL `%(newurl)s' with different scheme found; the original URL "
|
||||
"was `%(url)s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:448
|
||||
#: ../linkcheck/checker/httpurl.py:431
|
||||
msgid "HTTP 301 (moved permanent) encountered: you should update this link."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:493
|
||||
#: ../linkcheck/checker/httpurl.py:476
|
||||
#, python-format
|
||||
msgid "Last modified %(date)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:591
|
||||
#: ../linkcheck/checker/httpurl.py:574
|
||||
#, python-format
|
||||
msgid "Sent Cookie: %(cookie)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:597
|
||||
#: ../linkcheck/checker/httpurl.py:580
|
||||
#, python-format
|
||||
msgid "Could not store cookies from headers: %(error)s."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:657
|
||||
#: ../linkcheck/checker/httpurl.py:640
|
||||
#, python-format
|
||||
msgid "Unsupported HTTP url scheme `%(scheme)s'"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:703
|
||||
#: ../linkcheck/checker/httpurl.py:686
|
||||
#, python-format
|
||||
msgid "Decompress error %(err)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/checker/httpurl.py:719
|
||||
#: ../linkcheck/checker/httpurl.py:702
|
||||
#, python-format
|
||||
msgid "Unsupported content encoding `%(encoding)s'."
|
||||
msgstr ""
|
||||
|
|
@ -1185,7 +1181,7 @@ msgid "&Options"
|
|||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_main.py:813
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:129
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:137
|
||||
#: /usr/lib/python2.7/optparse.py:1626
|
||||
msgid "Options"
|
||||
msgstr ""
|
||||
|
|
@ -1333,16 +1329,16 @@ msgstr ""
|
|||
msgid "Insert %(browser)s bookmark file"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/options.py:105
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:144
|
||||
#: ../linkcheck/gui/options.py:113
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:153
|
||||
msgid "Edit"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/options.py:107
|
||||
#: ../linkcheck/gui/options.py:115
|
||||
msgid "Read"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/options.py:110
|
||||
#: ../linkcheck/gui/options.py:118
|
||||
msgid "File not found"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1378,28 +1374,28 @@ msgstr ""
|
|||
msgid "&Save"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:158 ../linkcheck/gui/__init__.py:483
|
||||
#: ../linkcheck/gui/__init__.py:158 ../linkcheck/gui/__init__.py:499
|
||||
msgid "Ready."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:185
|
||||
#: ../linkcheck/gui/__init__.py:187
|
||||
msgid "Check finished."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:294
|
||||
#: ../linkcheck/gui/__init__.py:297
|
||||
msgid "Start"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:319
|
||||
#: ../linkcheck/gui/__init__.py:322
|
||||
msgid "Stop"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:367
|
||||
#: ../linkcheck/gui/__init__.py:370
|
||||
#, python-format
|
||||
msgid "About %(appname)s"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:368
|
||||
#: ../linkcheck/gui/__init__.py:371
|
||||
#, python-format
|
||||
msgid ""
|
||||
"<qt><center>\n"
|
||||
|
|
@ -1416,90 +1412,107 @@ msgid ""
|
|||
"</center></qt>"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:418
|
||||
#: ../linkcheck/gui/__init__.py:423
|
||||
msgid "Closing pending connections..."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:452
|
||||
#: ../linkcheck/gui/__init__.py:439 ../linkchecker:795
|
||||
msgid "Dumping memory statistics..."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:441
|
||||
msgid "LinkChecker memory dump written"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:442 ../linkchecker:797
|
||||
#, python-format
|
||||
msgid "The memory dump has been written to `%(filename)s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:468
|
||||
msgid "Error, empty URL"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:454
|
||||
#: ../linkcheck/gui/__init__.py:470
|
||||
#, python-format
|
||||
msgid "Checking '%s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:460
|
||||
#: ../linkcheck/gui/__init__.py:476
|
||||
#, python-format
|
||||
msgid "Error, invalid URL `%s'."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:480
|
||||
#: ../linkcheck/gui/__init__.py:496
|
||||
#, python-format
|
||||
msgid "%d URL selected."
|
||||
msgid_plural "%d URLs selected"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/gui/__init__.py:561
|
||||
#: ../linkcheck/gui/__init__.py:577
|
||||
msgid "LinkChecker internal error"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:130 ../linkchecker:440
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:138 ../linkchecker:440
|
||||
msgid "Checking options"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:131
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:133
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:139
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:141
|
||||
msgid ""
|
||||
"Check recursively all links up to given depth. A negative depth will enable "
|
||||
"infinite recursion."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:132
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:140
|
||||
msgid "Recursive depth"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:134
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:136
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:142
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:144
|
||||
msgid "Log all checked URLs once. Default is to log only errors and warnings."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:135
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:143
|
||||
msgid "Verbose output"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:137
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:145
|
||||
msgid "Debug"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:138
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:146
|
||||
msgid "Debug memory usage"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:147
|
||||
msgid "Warn when one of these strings are found (one per line):"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:139
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:148
|
||||
msgid "Ignore URLs matching one of these patterns (one per line):"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:140
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:149
|
||||
msgid "Configuration file"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:141
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:150
|
||||
msgid ""
|
||||
"The configuration file holds advanced options and can be edited with an "
|
||||
"integrated text editor."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:142
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:151
|
||||
msgid "Overrides system wide configuration file settings."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:143
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:152
|
||||
msgid "/home/user/.linkchecker/linkcheckerrc"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:145
|
||||
#: ../linkcheck/gui/linkchecker_ui_options.py:154
|
||||
msgid "Close"
|
||||
msgstr ""
|
||||
|
||||
|
|
@ -1600,46 +1613,53 @@ msgid ""
|
|||
"</html>"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/strformat.py:230
|
||||
#: ../linkcheck/strformat.py:237
|
||||
#, python-format
|
||||
msgid "%(prefix)s%(duration).02f seconds"
|
||||
msgstr ""
|
||||
|
||||
#: ../linkcheck/strformat.py:233
|
||||
#: ../linkcheck/strformat.py:240
|
||||
#, python-format
|
||||
msgid "%d second"
|
||||
msgid_plural "%d seconds"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/strformat.py:234
|
||||
#: ../linkcheck/strformat.py:241
|
||||
#, python-format
|
||||
msgid "%d minute"
|
||||
msgid_plural "%d minutes"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/strformat.py:235
|
||||
#: ../linkcheck/strformat.py:242
|
||||
#, python-format
|
||||
msgid "%d hour"
|
||||
msgid_plural "%d hours"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/strformat.py:236
|
||||
#: ../linkcheck/strformat.py:243
|
||||
#, python-format
|
||||
msgid "%d day"
|
||||
msgid_plural "%d days"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/strformat.py:237
|
||||
#: ../linkcheck/strformat.py:244
|
||||
#, python-format
|
||||
msgid "%d year"
|
||||
msgid_plural "%d years"
|
||||
msgstr[0] ""
|
||||
msgstr[1] ""
|
||||
|
||||
#: ../linkcheck/strformat.py:313
|
||||
#, python-format
|
||||
msgid ""
|
||||
"Could not import %(module)s for %(feature)s. Install %(module)s from %(url)s "
|
||||
"to use this feature."
|
||||
msgstr ""
|
||||
|
||||
#: ../linkchecker:54
|
||||
msgid "USAGE\tlinkchecker [options] [file-or-url]..."
|
||||
msgstr ""
|
||||
|
|
|
|||
Loading…
Reference in a new issue