diff --git a/linkcheck/HtmlParser/htmlparse.c b/linkcheck/HtmlParser/htmlparse.c
index b1de1b70..a962e077 100644
--- a/linkcheck/HtmlParser/htmlparse.c
+++ b/linkcheck/HtmlParser/htmlparse.c
@@ -2204,7 +2204,7 @@ static void parser_dealloc (parser_object* self) {
PyMem_Del(self->userData->buf);
PyMem_Del(self->userData->tmp_buf);
PyMem_Del(self->userData);
- self->ob_type->tp_free((PyObject*)self);
+ Py_TYPE(self)->tp_free((PyObject*)self);
}
diff --git a/linkcheck/HtmlParser/htmlparse.y b/linkcheck/HtmlParser/htmlparse.y
index 08869464..3087ea06 100644
--- a/linkcheck/HtmlParser/htmlparse.y
+++ b/linkcheck/HtmlParser/htmlparse.y
@@ -575,7 +575,7 @@ static void parser_dealloc (parser_object* self) {
PyMem_Del(self->userData->buf);
PyMem_Del(self->userData->tmp_buf);
PyMem_Del(self->userData);
- self->ob_type->tp_free((PyObject*)self);
+ Py_TYPE(self)->tp_free((PyObject*)self);
}
diff --git a/linkcheck/__init__.py b/linkcheck/__init__.py
index 56248556..25f0afcc 100644
--- a/linkcheck/__init__.py
+++ b/linkcheck/__init__.py
@@ -65,11 +65,11 @@ def get_install_data ():
return configdata.install_data
-class LinkCheckerError (StandardError):
+class LinkCheckerError(Exception):
"""Exception to be raised on linkchecker-specific check errors."""
pass
-class LinkCheckerInterrupt (StandardError):
+class LinkCheckerInterrupt(Exception):
"""Used for testing."""
pass
diff --git a/linkcheck/cache/urlqueue.py b/linkcheck/cache/urlqueue.py
index e006c197..53c28280 100644
--- a/linkcheck/cache/urlqueue.py
+++ b/linkcheck/cache/urlqueue.py
@@ -23,11 +23,11 @@ from time import time as _time
from .. import log, LOG_CACHE
-class Timeout (StandardError):
+class Timeout(Exception):
"""Raised by join()"""
pass
-class Empty (StandardError):
+class Empty(Exception):
"""Exception raised by get()."""
pass
diff --git a/linkcheck/checker/fileurl.py b/linkcheck/checker/fileurl.py
index 00645bbe..37485094 100644
--- a/linkcheck/checker/fileurl.py
+++ b/linkcheck/checker/fileurl.py
@@ -20,9 +20,17 @@ Handle local file: links.
import re
import os
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import urllib
-import urllib2
+try:
+ from urllib2 import urlopen
+except ImportError:
+ # Python 3
+ from urllib.request import urlopen
from datetime import datetime
from . import urlbase, get_index_html
diff --git a/linkcheck/checker/mailtourl.py b/linkcheck/checker/mailtourl.py
index 2671adf1..36f56ca4 100644
--- a/linkcheck/checker/mailtourl.py
+++ b/linkcheck/checker/mailtourl.py
@@ -20,7 +20,11 @@ Handle for mailto: links.
import re
import urllib
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
from email._parseaddr import AddressList
from . import urlbase
diff --git a/linkcheck/checker/proxysupport.py b/linkcheck/checker/proxysupport.py
index 26431cb9..d06c80d6 100644
--- a/linkcheck/checker/proxysupport.py
+++ b/linkcheck/checker/proxysupport.py
@@ -18,7 +18,11 @@
Mixin class for URLs that can be fetched over a proxy.
"""
import urllib
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import os
from .. import LinkCheckerError, log, LOG_CHECK, url as urlutil, httputil
diff --git a/linkcheck/checker/urlbase.py b/linkcheck/checker/urlbase.py
index f1a81ff1..aa4adc4a 100644
--- a/linkcheck/checker/urlbase.py
+++ b/linkcheck/checker/urlbase.py
@@ -19,14 +19,26 @@ Base URL handler.
"""
import sys
import os
-import urlparse
-import urllib2
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
+try:
+ from urllib2 import urlopen
+except ImportError:
+ # Python 3
+ from urllib.request import urlopen
import urllib
import time
import errno
import socket
import select
-from cStringIO import StringIO
+try:
+ from cStringIO import StringIO
+except ImportError:
+ # Python 3
+ from io import StringIO
from . import absolute_url, get_url_from
from .. import (log, LOG_CHECK,
@@ -506,10 +518,10 @@ class UrlBase (object):
def check_connection (self):
"""
- The basic connection check uses urllib2.urlopen to initialize
+ The basic connection check uses urlopen to initialize
a connection object.
"""
- self.url_connection = urllib2.urlopen(self.url)
+ self.url_connection = urlopen(self.url)
def add_size_info (self):
"""Set size of URL content (if any)..
diff --git a/linkcheck/configuration/__init__.py b/linkcheck/configuration/__init__.py
index 27153a02..2b050d46 100644
--- a/linkcheck/configuration/__init__.py
+++ b/linkcheck/configuration/__init__.py
@@ -21,7 +21,11 @@ Store metadata and options.
import os
import re
import urllib
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import shutil
import socket
import _LinkChecker_configdata as configdata
@@ -366,7 +370,7 @@ def get_plugin_folders():
if not os.path.exists(defaultfolder) and not Portable:
try:
make_userdir(defaultfolder)
- except StandardError as errmsg:
+ except Exception as errmsg:
msg = _("could not create plugin directory %(dirname)r: %(errmsg)r")
args = dict(dirname=defaultfolder, errmsg=errmsg)
log.warn(LOG_CHECK, msg % args)
@@ -405,7 +409,7 @@ def get_user_config():
try:
make_userdir(userconf)
shutil.copy(initialconf, userconf)
- except StandardError as errmsg:
+ except Exception as errmsg:
msg = _("could not copy initial configuration file %(src)r to %(dst)r: %(errmsg)r")
args = dict(src=initialconf, dst=userconf, errmsg=errmsg)
log.warn(LOG_CHECK, msg % args)
@@ -427,7 +431,7 @@ def get_gconf_http_proxy ():
if not port:
port = 8080
return "%s:%d" % (host, port)
- except StandardError as msg:
+ except Exception as msg:
log.debug(LOG_CHECK, "error getting HTTP proxy from gconf: %s", msg)
pass
return None
@@ -447,7 +451,7 @@ def get_gconf_ftp_proxy ():
if not port:
port = 8080
return "%s:%d" % (host, port)
- except StandardError as msg:
+ except Exception as msg:
log.debug(LOG_CHECK, "error getting FTP proxy from gconf: %s", msg)
pass
return None
@@ -462,7 +466,7 @@ def get_kde_http_proxy ():
try:
data = read_kioslaverc(config_dir)
return data.get("http_proxy")
- except StandardError as msg:
+ except Exception as msg:
log.debug(LOG_CHECK, "error getting HTTP proxy from KDE: %s", msg)
pass
@@ -476,7 +480,7 @@ def get_kde_ftp_proxy ():
try:
data = read_kioslaverc(config_dir)
return data.get("ftp_proxy")
- except StandardError as msg:
+ except Exception as msg:
log.debug(LOG_CHECK, "error getting FTP proxy from KDE: %s", msg)
pass
diff --git a/linkcheck/director/aggregator.py b/linkcheck/director/aggregator.py
index 74fed09e..eb433a50 100644
--- a/linkcheck/director/aggregator.py
+++ b/linkcheck/director/aggregator.py
@@ -21,7 +21,11 @@ import threading
import thread
import requests
import time
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import random
from .. import log, LOG_CHECK, strformat, LinkCheckerError
from ..decorators import synchronized
diff --git a/linkcheck/gui/contextmenu.py b/linkcheck/gui/contextmenu.py
index 259fb474..0b909bef 100644
--- a/linkcheck/gui/contextmenu.py
+++ b/linkcheck/gui/contextmenu.py
@@ -16,7 +16,11 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
from PyQt4 import QtGui
import os
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
from linkcheck.checker.fileurl import get_os_filename
class ContextMenu (QtGui.QMenu):
diff --git a/linkcheck/gui/editor.py b/linkcheck/gui/editor.py
index d4b55126..d65b89fb 100644
--- a/linkcheck/gui/editor.py
+++ b/linkcheck/gui/editor.py
@@ -16,7 +16,11 @@
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
import os
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
from PyQt4 import QtGui, QtCore
from .linkchecker_ui_editor import Ui_EditorDialog
from ..checker.fileurl import get_os_filename
diff --git a/linkcheck/gui/projects.py b/linkcheck/gui/projects.py
index d9174e7e..d2904441 100644
--- a/linkcheck/gui/projects.py
+++ b/linkcheck/gui/projects.py
@@ -111,7 +111,7 @@ def saveproject(parent, url):
"""Save a project file."""
try:
msg = saveproject_msg(parent, url)
- except StandardError as errmsg:
+ except Exception as errmsg:
msg = str(errmsg)
parent.set_statusmsg(msg)
@@ -165,7 +165,7 @@ def openproject (parent):
"""Select and load a project file."""
try:
msg = openproject_msg(parent)
- except StandardError as errmsg:
+ except Exception as errmsg:
msg = str(errmsg)
parent.set_statusmsg(msg)
@@ -189,7 +189,7 @@ def loadproject(parent, filename):
"""Load a project file."""
try:
msg = loadproject_msg(parent, filename)
- except StandardError as errmsg:
+ except Exception as errmsg:
args = dict(filename=filename, err=errmsg)
msg = _("Could not load project %(filename)s: %(err)s") % args
parent.set_statusmsg(msg)
diff --git a/linkcheck/htmlutil/linkparse.py b/linkcheck/htmlutil/linkparse.py
index 1c1c7a37..d84644f3 100644
--- a/linkcheck/htmlutil/linkparse.py
+++ b/linkcheck/htmlutil/linkparse.py
@@ -95,7 +95,7 @@ def strip_c_comments (text):
return c_comment_re.sub('', text)
-class StopParse (StandardError):
+class StopParse(Exception):
"""Raised when parsing should stop."""
pass
diff --git a/linkcheck/i18n.py b/linkcheck/i18n.py
index 8e9cd22e..1bfd2da6 100644
--- a/linkcheck/i18n.py
+++ b/linkcheck/i18n.py
@@ -33,15 +33,21 @@ default_domain = None
def install_builtin (translator, do_unicode):
"""Install _() and _n() gettext methods into default namespace."""
- import __builtin__
- if do_unicode:
- __builtin__.__dict__['_'] = translator.ugettext
+ try:
+ import __builtin__ as builtins
+ except ImportError:
+ # Python 3
+ import builtins
+ # Python 3 has no ugettext
+ has_unicode = hasattr(translator, 'ugettext')
+ if do_unicode and has_unicode:
+ builtins.__dict__['_'] = translator.ugettext
# also install ngettext
- __builtin__.__dict__['_n'] = translator.ungettext
+ builtins.__dict__['_n'] = translator.ungettext
else:
- __builtin__.__dict__['_'] = translator.gettext
+ builtins.__dict__['_'] = translator.gettext
# also install ngettext
- __builtin__.__dict__['_n'] = translator.ngettext
+ builtins.__dict__['_n'] = translator.ngettext
class Translator (gettext.GNUTranslations):
"""A translation class always installing its gettext methods into the
diff --git a/linkcheck/lc_cgi.py b/linkcheck/lc_cgi.py
index 8c21d94e..3cba2d04 100644
--- a/linkcheck/lc_cgi.py
+++ b/linkcheck/lc_cgi.py
@@ -24,7 +24,11 @@ import threading
import locale
import re
import time
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
from . import configuration, strformat, checker, director, get_link_pat, \
init_i18n, url as urlutil
from .decorators import synchronized
@@ -67,7 +71,7 @@ lang_locale = {
}
_is_level = re.compile(r'^(0|1|2|3|-1)$').match
-class LCFormError (StandardError):
+class LCFormError(Exception):
"""Form related errors."""
pass
diff --git a/linkcheck/log.py b/linkcheck/log.py
index f787fcaa..993bd793 100644
--- a/linkcheck/log.py
+++ b/linkcheck/log.py
@@ -23,9 +23,12 @@ import os
import inspect
import traceback
try:
- from cStringIO import StringIO
+ from io import StringIO
except ImportError:
- from StringIO import StringIO
+ try:
+ from cStringIO import StringIO
+ except ImportError:
+ from StringIO import StringIO
# memory leak debugging
#import gc
@@ -53,7 +56,7 @@ def _stack_format (stack):
try:
s.write(repr(value))
s.write(os.linesep)
- except StandardError:
+ except Exception:
s.write("error in repr() call%s" % os.linesep)
return s.getvalue()
diff --git a/linkcheck/mimeutil.py b/linkcheck/mimeutil.py
index e76cecb9..19f711c3 100644
--- a/linkcheck/mimeutil.py
+++ b/linkcheck/mimeutil.py
@@ -32,7 +32,7 @@ def init_mimedb():
global mimedb
try:
mimedb = mimetypes.MimeTypes(strict=False)
- except StandardError as msg:
+ except Exception as msg:
log.error(LOG_CHECK, "could not initialize MIME database: %s" % msg)
return
# For Opera bookmark files (opera6.adr)
diff --git a/linkcheck/plugins/parseword.py b/linkcheck/plugins/parseword.py
index 778daab6..ff2b5529 100755
--- a/linkcheck/plugins/parseword.py
+++ b/linkcheck/plugins/parseword.py
@@ -25,7 +25,7 @@ try:
Error = pythoncom.com_error
except ImportError:
has_win32com = False
- Error = StandardError
+ Error = Exception
from .. import fileutil, log, LOG_PLUGIN
diff --git a/linkcheck/robotparser2.py b/linkcheck/robotparser2.py
index e8f2fdf7..91b9548c 100644
--- a/linkcheck/robotparser2.py
+++ b/linkcheck/robotparser2.py
@@ -20,7 +20,11 @@ Robots.txt parser.
The robots.txt Exclusion Protocol is implemented as specified in
http://www.robotstxt.org/wc/norobots-rfc.html
"""
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import urllib
import time
import requests
diff --git a/linkcheck/strformat.py b/linkcheck/strformat.py
index 8ab9ae1c..52a69a74 100644
--- a/linkcheck/strformat.py
+++ b/linkcheck/strformat.py
@@ -33,7 +33,11 @@ import codecs
import os
import math
import time
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import locale
import pydoc
from . import i18n
diff --git a/linkcheck/trace.py b/linkcheck/trace.py
index eac56f26..b9225365 100644
--- a/linkcheck/trace.py
+++ b/linkcheck/trace.py
@@ -19,7 +19,6 @@ import re
import linecache
import time
import sys
-import thread
import threading
# tracing
@@ -78,8 +77,9 @@ def _trace_line (frame, event, arg):
if filename.endswith((".pyc", ".pyo")):
filename = filename[:-1]
line = linecache.getline(filename, lineno)
- tid = thread.get_ident()
- tname = threading.currentThread().getName()
+ currentThread = threading.currentThread()
+ tid = currentThread.ident
+ tname = currentThread.getName()
args = (tid, tname, time.time(), line.rstrip(), name, lineno)
print("THREAD(%d) %r %.2f %s # %s:%d" % args)
diff --git a/linkcheck/url.py b/linkcheck/url.py
index 2b35e0dd..6263fb74 100644
--- a/linkcheck/url.py
+++ b/linkcheck/url.py
@@ -20,7 +20,11 @@ Functions for parsing and matching URL strings.
import re
import os
-import urlparse
+try:
+ import urlparse
+except ImportError:
+ # Python 3
+ from urllib import parse as urlparse
import urllib
import requests
from . import log, LOG_CHECK
diff --git a/po/de.po b/po/de.po
index d845dddb..2c048312 100644
--- a/po/de.po
+++ b/po/de.po
@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: $Id$\n"
"Report-Msgid-Bugs-To: bastian.kleineidam@web.de\n"
-"POT-Creation-Date: 2014-09-11 21:18+0200\n"
+"POT-Creation-Date: 2014-09-12 19:26+0200\n"
"PO-Revision-Date: 2012-11-13 18:13+0100\n"
"Last-Translator: Bastian Kleineidam \n"
"Language-Team: de \n"
@@ -15,11 +15,11 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
-#: ../linkcheck/director/aggregator.py:150
+#: ../linkcheck/director/aggregator.py:154
msgid "These URLs are still active:"
msgstr "Folgende URLs sind noch aktiv:"
-#: ../linkcheck/director/aggregator.py:157
+#: ../linkcheck/director/aggregator.py:161
#, python-format
msgid ""
"%(num)d URLs are still active. After a timeout of %(timeout)s the active "
@@ -204,56 +204,56 @@ msgstr ""
"Siehe http://support.microsoft.com/kb/308419 für mehr Informationen über das "
"Setzen von Dateiberechtigungen."
-#: ../linkcheck/configuration/__init__.py:242
+#: ../linkcheck/configuration/__init__.py:246
#, python-format
msgid "Configuration file %r does not exist."
msgstr "Konfigurationsdatei %r existiert nicht."
-#: ../linkcheck/configuration/__init__.py:244
+#: ../linkcheck/configuration/__init__.py:248
#, python-format
msgid "Configuration file %r is not readable."
msgstr "Konfigurationsdatei %r ist nicht lesbar."
-#: ../linkcheck/configuration/__init__.py:254
+#: ../linkcheck/configuration/__init__.py:258
msgid "missing user or URL pattern in authentication data."
msgstr ""
"Fehlender Benutzer oder regulärer URL Ausdruck in Authentifizierungsdaten."
-#: ../linkcheck/configuration/__init__.py:293
+#: ../linkcheck/configuration/__init__.py:297
msgid "activating text logger output."
msgstr "aktiviere Loggerausgabe text."
-#: ../linkcheck/configuration/__init__.py:303
+#: ../linkcheck/configuration/__init__.py:307
msgid "no CGI password fieldname given for login URL."
msgstr " kein CGI Passwort Feldname für Login URL angegeben."
-#: ../linkcheck/configuration/__init__.py:307
+#: ../linkcheck/configuration/__init__.py:311
msgid "no CGI user fieldname given for login URL."
msgstr "kein CGI Benutzer Feldname für Login URL angegeben."
-#: ../linkcheck/configuration/__init__.py:311
+#: ../linkcheck/configuration/__init__.py:315
msgid "no user/password authentication data found for login URL."
msgstr "keine Benutzer/Passwort-Authentifizierung für Login URL gefunden."
-#: ../linkcheck/configuration/__init__.py:314
+#: ../linkcheck/configuration/__init__.py:318
msgid "login URL is not a HTTP URL."
msgstr "Login URL ist keine HTTP URL."
-#: ../linkcheck/configuration/__init__.py:318
+#: ../linkcheck/configuration/__init__.py:322
msgid "login URL is incomplete."
msgstr "Login URL ist unvollständig."
-#: ../linkcheck/configuration/__init__.py:322
+#: ../linkcheck/configuration/__init__.py:326
#, python-format
msgid "disabling login URL %(url)s."
msgstr "deaktiviere Login URL %(url)s."
-#: ../linkcheck/configuration/__init__.py:370
+#: ../linkcheck/configuration/__init__.py:374
#, fuzzy, python-format
msgid "could not create plugin directory %(dirname)r: %(errmsg)r"
msgstr "Konnte Projekt %(filename)s nicht laden: %(err)s"
-#: ../linkcheck/configuration/__init__.py:409
+#: ../linkcheck/configuration/__init__.py:413
#, python-format
msgid ""
"could not copy initial configuration file %(src)r to %(dst)r: %(errmsg)r"
@@ -687,17 +687,17 @@ msgstr "Die IP-Adresse ist verschleiert."
msgid "XML could not be parsed."
msgstr "Der MX Mail-Rechner konnte nicht gefunden werden."
-#: ../linkcheck/checker/mailtourl.py:86
+#: ../linkcheck/checker/mailtourl.py:90
#, fuzzy, python-format
msgid "No mail addresses or email subject found in `%(url)s'."
msgstr "Keine Adressen wurden in `%(url)s' gefunden."
-#: ../linkcheck/checker/mailtourl.py:127
+#: ../linkcheck/checker/mailtourl.py:131
#, python-format
msgid "Error parsing CGI values: %s"
msgstr "Fehler beim Parsen der CGI-Werte: %s"
-#: ../linkcheck/checker/mailtourl.py:150
+#: ../linkcheck/checker/mailtourl.py:154
#, python-format
msgid ""
"Mail address `%(addr)s' too long. Allowed 256 chars, was %(length)d chars."
@@ -705,22 +705,22 @@ msgstr ""
"E-Mail-Adresse `%(addr)s' ist zu lang. Erlaubt sind 256 Zeichen, es waren "
"aber %(length)d Zeichen."
-#: ../linkcheck/checker/mailtourl.py:154
+#: ../linkcheck/checker/mailtourl.py:158
#, python-format
msgid "Missing `@' in mail address `%(addr)s'."
msgstr "Fehlendes `@' in E-Mail-Adresse `%(addr)s'."
-#: ../linkcheck/checker/mailtourl.py:160
+#: ../linkcheck/checker/mailtourl.py:164
#, python-format
msgid "Missing local part of mail address `%(addr)s'."
msgstr "Fehlender lokaler Teil der E-Mail-Adresse `%(addr)s'."
-#: ../linkcheck/checker/mailtourl.py:164
+#: ../linkcheck/checker/mailtourl.py:168
#, python-format
msgid "Missing domain part of mail address `%(addr)s'."
msgstr "Fehlender Domänen-Teil der E-Mail-Adresse `%(addr)s'."
-#: ../linkcheck/checker/mailtourl.py:168
+#: ../linkcheck/checker/mailtourl.py:172
#, python-format
msgid ""
"Local part of mail address `%(addr)s' too long. Allowed 64 chars, was "
@@ -729,7 +729,7 @@ msgstr ""
"Lokaler Teil der E-Mail-Adresse `%(addr)s' ist zu lang. Erlaubt sind 64 "
"Zeichen, es waren aber %(length)d Zeichen."
-#: ../linkcheck/checker/mailtourl.py:172
+#: ../linkcheck/checker/mailtourl.py:176
#, python-format
msgid ""
"Domain part of mail address `%(addr)s' too long. Allowed 255 chars, was "
@@ -738,35 +738,35 @@ msgstr ""
"Domänen-Teil der E-Mail-Adresse `%(addr)s' ist zu lang. Erlaubt sind 255 "
"Zeichen, es waren aber %(length)d Zeichen."
-#: ../linkcheck/checker/mailtourl.py:181
+#: ../linkcheck/checker/mailtourl.py:185
#, python-format
msgid "Unquoted double quote or backslash in mail address `%(addr)s'."
msgstr ""
"Nicht kodiertes doppeltes Anführungszeichen oder Escape in E-Mail-Adresse `"
"%(addr)s'."
-#: ../linkcheck/checker/mailtourl.py:186
+#: ../linkcheck/checker/mailtourl.py:190
#, python-format
msgid "Local part of mail address `%(addr)s' may not start with a dot."
msgstr ""
"Der lokale Teil der E-Mail-Adresse `%(addr)s' darf nicht mit einem Punkt "
"beginnen."
-#: ../linkcheck/checker/mailtourl.py:190
+#: ../linkcheck/checker/mailtourl.py:194
#, python-format
msgid "Local part of mail address `%(addr)s' may not end with a dot."
msgstr ""
"Der lokale Teil der E-Mail-Adresse `%(addr)s' darf nicht mit einem Punkt "
"enden."
-#: ../linkcheck/checker/mailtourl.py:194
+#: ../linkcheck/checker/mailtourl.py:198
#, python-format
msgid "Local part of mail address `%(addr)s' may not contain two dots."
msgstr ""
"Der lokale Teil der E-Mail-Adresse `%(addr)s' darf nicht zwei Punkte "
"beinhalten."
-#: ../linkcheck/checker/mailtourl.py:199
+#: ../linkcheck/checker/mailtourl.py:203
#, python-format
msgid ""
"Local part of mail address `%(addr)s' contains unquoted character `%(char)s."
@@ -774,134 +774,134 @@ msgstr ""
"Lokaler Teil der E-Mail-Adresse `%(addr)s' beinhaltet ein nicht kodiertes "
"Zeichen `%(char)s."
-#: ../linkcheck/checker/mailtourl.py:211
+#: ../linkcheck/checker/mailtourl.py:215
#, python-format
msgid "Domain part of mail address `%(addr)s' has invalid IP."
msgstr ""
"Domänen-Teil der E-Mail-Adresse `%(addr)s' besitzt eine ungültige IP-Adresse."
-#: ../linkcheck/checker/mailtourl.py:217
+#: ../linkcheck/checker/mailtourl.py:221
#, python-format
msgid "Invalid domain part of mail address `%(addr)s'."
msgstr "Ungültige Domänen-Teil der E-Mail-Adresse `%(addr)s'."
-#: ../linkcheck/checker/mailtourl.py:221
+#: ../linkcheck/checker/mailtourl.py:225
#, python-format
msgid "Invalid top level domain part of mail address `%(addr)s'."
msgstr "Ungültige Toplevel-Domänen-Teil der E-Mail-Adresse `%(addr)s'."
-#: ../linkcheck/checker/mailtourl.py:254
+#: ../linkcheck/checker/mailtourl.py:258
#, python-format
msgid "No MX mail host for %(domain)s found."
msgstr "Kein MX mail host für %(domain)s gefunden."
-#: ../linkcheck/checker/mailtourl.py:262
+#: ../linkcheck/checker/mailtourl.py:266
#, python-format
msgid "No host for %(domain)s found."
msgstr "Kein Rechner für %(domain)s gefunden."
-#: ../linkcheck/checker/mailtourl.py:276
+#: ../linkcheck/checker/mailtourl.py:280
#, python-format
msgid "Got invalid DNS answer %(answer)s for %(domain)s."
msgstr "Ungültige DNS Antwort %(answer)s für %(domain)s erhalten."
-#: ../linkcheck/checker/mailtourl.py:288
+#: ../linkcheck/checker/mailtourl.py:292
#, fuzzy
msgid "Valid mail address syntax"
msgstr "Ungültige Mail Syntax"
-#: ../linkcheck/checker/urlbase.py:64
+#: ../linkcheck/checker/urlbase.py:68
#, python-format
msgid "URL has unparsable domain name: %(name)s"
msgstr "URL besitzt einen nicht analysierbaren Rechnernamen: %(name)s"
-#: ../linkcheck/checker/urlbase.py:123
+#: ../linkcheck/checker/urlbase.py:127
#, fuzzy
msgid "The 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/urlbase.py:126
+#: ../linkcheck/checker/urlbase.py:130
msgid "filtered"
msgstr "gefiltert"
-#: ../linkcheck/checker/urlbase.py:162
+#: ../linkcheck/checker/urlbase.py:166
#, python-format
msgid "Leading or trailing whitespace in URL `%(url)s'."
msgstr "Die URL %(url)s enthält Leerzeichen am Anfang oder Ende."
-#: ../linkcheck/checker/urlbase.py:320
+#: ../linkcheck/checker/urlbase.py:324
msgid "URL is empty"
msgstr "URL ist leer"
-#: ../linkcheck/checker/urlbase.py:334
+#: ../linkcheck/checker/urlbase.py:338
#, python-format
msgid "Effective URL %(url)r."
msgstr "Effektive URL %(url)r."
-#: ../linkcheck/checker/urlbase.py:340
+#: ../linkcheck/checker/urlbase.py:344
#, fuzzy, python-format
msgid "URL length %(len)d is longer than %(max)d."
msgstr "URL-Länge %(len)d ist länger als %(warn)d."
-#: ../linkcheck/checker/urlbase.py:384
+#: ../linkcheck/checker/urlbase.py:388
#, python-format
msgid "URL host %(host)r has invalid port"
msgstr "URL Rechner %(host)r hat eine ungültige Portnummer"
-#: ../linkcheck/checker/urlbase.py:391
+#: ../linkcheck/checker/urlbase.py:395
msgid "URL has empty hostname"
msgstr "URL hat leeren Rechnernamen"
-#: ../linkcheck/checker/urlbase.py:415
+#: ../linkcheck/checker/urlbase.py:419
#, python-format
msgid "URL %(url)s has obfuscated IP address %(ip)s"
msgstr "URL %(url)s besitzt die verschleierte IP-Adresse %(ip)s"
-#: ../linkcheck/checker/urlbase.py:450
+#: ../linkcheck/checker/urlbase.py:454
msgid "Hostname not found"
msgstr "Rechnername nicht gefunden"
-#: ../linkcheck/checker/urlbase.py:453
+#: ../linkcheck/checker/urlbase.py:457
#, fuzzy, python-format
msgid "Bad hostname %(host)r: %(msg)s"
msgstr "konnte Rechnernamen %(host)r nicht parsen: %(msg)s"
-#: ../linkcheck/checker/urlbase.py:469
+#: ../linkcheck/checker/urlbase.py:473
#, python-format
msgid "could not get content: %(msg)s"
msgstr "konnte Inhalt nicht lesen: %(msg)s"
-#: ../linkcheck/checker/urlbase.py:520
+#: ../linkcheck/checker/urlbase.py:524
#, fuzzy, python-format
msgid "Content size %(size)s is larger than %(maxbytes)s."
msgstr "Inhalt %(dlsize)s is größer als %(maxbytes)s."
-#: ../linkcheck/checker/urlbase.py:615
+#: ../linkcheck/checker/urlbase.py:619
msgid "Content size is zero."
msgstr "Größe des Inhalts ist Null."
-#: ../linkcheck/checker/urlbase.py:627 ../linkcheck/checker/httpurl.py:309
+#: ../linkcheck/checker/urlbase.py:631 ../linkcheck/checker/httpurl.py:309
msgid "File size too large"
msgstr "Dateigröße ist zu groß"
-#: ../linkcheck/checker/urlbase.py:693
+#: ../linkcheck/checker/urlbase.py:697
#, python-format
msgid "URL has unparsable domain name: %(domain)s"
msgstr "URL besitzt einen nicht analysierbaren Rechnernamen: %(domain)s"
-#: ../linkcheck/checker/proxysupport.py:44
+#: ../linkcheck/checker/proxysupport.py:48
#, python-format
msgid "Proxy value `%(proxy)s' must start with 'http:' or 'https:'."
msgstr "Proxy `%(proxy)s' muss mit 'http:' oder 'https:' beginnen."
-#: ../linkcheck/checker/proxysupport.py:50
+#: ../linkcheck/checker/proxysupport.py:54
#, python-format
msgid "Ignoring proxy setting `%(proxy)s'."
msgstr "Ignoriere Proxy Einstellung `%(proxy)s'"
-#: ../linkcheck/checker/proxysupport.py:55
+#: ../linkcheck/checker/proxysupport.py:59
#, python-format
msgid "Using proxy `%(proxy)s'."
msgstr "Verwende Proxy `%(proxy)s'."
@@ -937,16 +937,16 @@ msgstr "Fehlender / am Ende der FTP url."
msgid "FTP file size too large"
msgstr "FTP Dateigröße ist zu groß"
-#: ../linkcheck/checker/fileurl.py:119
+#: ../linkcheck/checker/fileurl.py:123
#, python-format
msgid "Could not get current working directory: %(msg)s"
msgstr "Konnte aktuelles Arbeitsverzeichnis nicht ermitteln: %(msg)s"
-#: ../linkcheck/checker/fileurl.py:153
+#: ../linkcheck/checker/fileurl.py:157
msgid "Added trailing slash to directory."
msgstr "Schrägstrich wurde zu Verzeichnis hinzugefügt."
-#: ../linkcheck/checker/fileurl.py:175
+#: ../linkcheck/checker/fileurl.py:179
msgid ""
"local files are only checked without parent URL or when the parent URL is "
"also a file"
@@ -954,11 +954,11 @@ msgstr ""
"lokale Dateien werden nur ohne Vater-URL geprüft oder wenn die Vater-URL "
"auch eine Datei ist"
-#: ../linkcheck/checker/fileurl.py:178
+#: ../linkcheck/checker/fileurl.py:182
msgid "directory"
msgstr "Verzeichnis"
-#: ../linkcheck/checker/fileurl.py:195
+#: ../linkcheck/checker/fileurl.py:199
#, python-format
msgid ""
"The URL path %(path)r is not the same as the system path %(realpath)r. You "
@@ -1282,23 +1282,23 @@ msgstr "Projekt &speichern..."
msgid "Ctrl+S"
msgstr "Strg+S"
-#: ../linkcheck/gui/editor.py:104
+#: ../linkcheck/gui/editor.py:108
msgid "Save file?"
msgstr "Datei speichern?"
-#: ../linkcheck/gui/editor.py:105
+#: ../linkcheck/gui/editor.py:109
msgid "The document has been modified."
msgstr "Das Dokument wurde verändert."
-#: ../linkcheck/gui/editor.py:106
+#: ../linkcheck/gui/editor.py:110
msgid "Do you want to save your changes?"
msgstr "Wollen Sie Ihre Änderungen speichern?"
-#: ../linkcheck/gui/editor.py:115
+#: ../linkcheck/gui/editor.py:119
msgid "Save File As"
msgstr "Speichern unter"
-#: ../linkcheck/gui/editor.py:158
+#: ../linkcheck/gui/editor.py:162
msgid "readonly"
msgstr "nur lesen"
@@ -1618,35 +1618,35 @@ msgstr "Fehler: %(msg)s"
msgid "Execute '%(program)s -h' for help"
msgstr "Führen Sie '%(program)s -h' aus, um Hilfe zu erhalten"
-#: ../linkcheck/lc_cgi.py:206
+#: ../linkcheck/lc_cgi.py:210
#, python-format
msgid "unsupported language %r"
msgstr "nicht unterstützte Sprache %r"
-#: ../linkcheck/lc_cgi.py:211
+#: ../linkcheck/lc_cgi.py:215
msgid "empty url was given"
msgstr "leere URL wurde angegeben"
-#: ../linkcheck/lc_cgi.py:213
+#: ../linkcheck/lc_cgi.py:217
#, python-format
msgid "disallowed url %r was given"
msgstr "ungültige URL %r wurde angegeben"
-#: ../linkcheck/lc_cgi.py:215
+#: ../linkcheck/lc_cgi.py:219
msgid "no url was given"
msgstr "keine URL wurde angegeben"
-#: ../linkcheck/lc_cgi.py:220
+#: ../linkcheck/lc_cgi.py:224
#, python-format
msgid "invalid recursion level %r"
msgstr "ungültiger Rekursionslevel %r"
-#: ../linkcheck/lc_cgi.py:226
+#: ../linkcheck/lc_cgi.py:230
#, python-format
msgid "invalid %s option %r"
msgstr "ungültige %s Option %r"
-#: ../linkcheck/lc_cgi.py:250
+#: ../linkcheck/lc_cgi.py:254
#, fuzzy, python-format
msgid ""
"\n"
@@ -1677,47 +1677,47 @@ msgstr ""
"enthält: A-Za-z0-9./_~-
Fehler werden geloggt.\n"
"