From 4c16d3e702741baa74ad63898cef09716a5e3601 Mon Sep 17 00:00:00 2001 From: Bastian Kleineidam Date: Sun, 26 Aug 2012 11:32:17 +0200 Subject: [PATCH] Make 401 unauthorized GET response a warning. --- linkcheck/checker/const.py | 3 + linkcheck/checker/httpurl.py | 59 +++++---- po/de.po | 250 ++++++++++++++++++----------------- po/linkchecker.pot | 242 ++++++++++++++++----------------- 4 files changed, 285 insertions(+), 269 deletions(-) diff --git a/linkcheck/checker/const.py b/linkcheck/checker/const.py index caa38d98..db9acaed 100644 --- a/linkcheck/checker/const.py +++ b/linkcheck/checker/const.py @@ -91,6 +91,7 @@ WARN_HTTP_COOKIE_STORE_ERROR = "http-cookie-store-error" WARN_HTTP_DECOMPRESS_ERROR = "http-decompress-error" WARN_HTTP_UNSUPPORTED_ENCODING = "http-unsupported-encoding" WARN_HTTP_AUTH_UNKNOWN = "http-auth-unknonwn" +WARN_HTTP_AUTH_UNAUTHORIZED = "http-auth-unauthorized" WARN_HTTPS_CERTIFICATE = "https-certificate-error" WARN_IGNORE_URL = "ignore-url" WARN_MAIL_NO_MX_HOST = "mail-no-mx-host" @@ -129,6 +130,8 @@ Warnings = { _("The URL content is encoded with an unknown encoding."), WARN_HTTP_AUTH_UNKNOWN: _("Unsupported HTTP authentication method."), + WARN_HTTP_AUTH_UNAUTHORIZED: + _("Unauthorized access without HTTP authentication."), WARN_HTTPS_CERTIFICATE: _("The SSL certificate is invalid or expired."), WARN_IGNORE_URL: _("The URL has been ignored."), WARN_MAIL_NO_MX_HOST: _("The mail MX host could not be found."), diff --git a/linkcheck/checker/httpurl.py b/linkcheck/checker/httpurl.py index 166ed3ff..fd2c273a 100644 --- a/linkcheck/checker/httpurl.py +++ b/linkcheck/checker/httpurl.py @@ -36,7 +36,7 @@ from .const import WARN_HTTP_ROBOTS_DENIED, \ WARN_HTTP_WRONG_REDIRECT, WARN_HTTP_MOVED_PERMANENT, \ WARN_HTTP_EMPTY_CONTENT, WARN_HTTP_COOKIE_STORE_ERROR, \ WARN_HTTP_DECOMPRESS_ERROR, WARN_HTTP_UNSUPPORTED_ENCODING, \ - WARN_HTTP_AUTH_UNKNOWN + WARN_HTTP_AUTH_UNKNOWN, WARN_HTTP_AUTH_UNAUTHORIZED # assumed HTTP header encoding HEADER_ENCODING = "iso-8859-1" @@ -221,34 +221,19 @@ class HttpUrl (internpaturl.InternPatternUrl, proxysupport.ProxySupport): self.set_result(_("more than %d redirections, aborting") % self.max_redirects, valid=False) return response - # check for fallback - if self.method == "HEAD" and self.method_get_allowed: - # 405 method unallowed - if response.status == 405: - log.debug(LOG_CHECK, "Method HEAD unallowed, falling back to GET") - self.fallback_to_get() - continue - # Some sites do not support HEAD requests, for example - # youtube sends a 404 with HEAD, 200 with GET. Doh. - if response.status >= 400: - log.debug(LOG_CHECK, "Method HEAD error, falling back to GET") - self.fallback_to_get() - continue - # Other sites send 200 with HEAD, but 404 with GET. Bummer. - poweredby = self.getheader('X-Powered-By', u'') - server = self.getheader('Server', u'') - if (poweredby.startswith('Zope') or server.startswith('Zope') - or ('ASP.NET' in poweredby and 'Microsoft-IIS' in server)): - # Zope or IIS server could not get Content-Type with HEAD - # http://intermapper.com.dev4.silvertech.net/bogus.aspx - self.fallback_to_get() - continue + if self.do_fallback(response.status): + self.fallback_to_get() + continue # user authentication if response.status == 401: authenticate = self.getheader('WWW-Authenticate') if authenticate is None: - self.set_result(_("unauthorized access is missing WWW-Authenticate header"), - valid=False) + # Either the server intentionally blocked this request, + # or there is a form on this page which requires + # manual user/password input. + # Either way, this is a warning. + self.add_warning(_("Unauthorized access without HTTP authentication."), + tag=WARN_HTTP_AUTH_UNAUTHORIZED) return if not authenticate.startswith("Basic"): # LinkChecker only supports Basic authorization @@ -264,6 +249,30 @@ class HttpUrl (internpaturl.InternPatternUrl, proxysupport.ProxySupport): break return response + def do_fallback(self, status): + """Check for fallback according to response status. + @param status: The HTTP response status + @ptype status: int + @return: True if checker should use GET, else False + @rtype: bool + """ + if self.method == "HEAD" and self.method_get_allowed: + # Some sites do not support HEAD requests, for example + # youtube sends a 404 with HEAD, 200 with GET. Doh. + # A 405 "Method not allowed" status should also use GET. + if status >= 400: + log.debug(LOG_CHECK, "Method HEAD error %d, falling back to GET", status) + return True + # Other sites send 200 with HEAD, but 404 with GET. Bummer. + poweredby = self.getheader('X-Powered-By', u'') + server = self.getheader('Server', u'') + if (poweredby.startswith('Zope') or server.startswith('Zope') + or ('ASP.NET' in poweredby and 'Microsoft-IIS' in server)): + # Zope or IIS server could not get Content-Type with HEAD + # http://intermapper.com.dev4.silvertech.net/bogus.aspx + return True + return False + def fallback_to_get(self): """Set method to GET and clear aliases.""" self.method = "GET" diff --git a/po/de.po b/po/de.po index a7abb0ea..a729b1b7 100644 --- a/po/de.po +++ b/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-08-23 23:58+0200\n" -"PO-Revision-Date: 2012-08-23 23:59+0100\n" +"POT-Creation-Date: 2012-08-26 10:48+0200\n" +"PO-Revision-Date: 2012-08-26 10:48+0100\n" "Last-Translator: Bastian Kleineidam \n" "Language-Team: de \n" "Language: \n" @@ -390,24 +390,24 @@ msgid "Cache key" msgstr "Cache Schlüssel" #: ../linkcheck/logger/__init__.py:33 -#: ../linkcheck/gui/linkchecker_ui_main.py:785 +#: ../linkcheck/gui/linkchecker_ui_main.py:795 #: ../linkcheck/gui/urlmodel.py:22 msgid "Result" msgstr "Ergebnis" #: ../linkcheck/logger/__init__.py:34 -#: ../linkcheck/gui/linkchecker_ui_main.py:779 +#: ../linkcheck/gui/linkchecker_ui_main.py:789 msgid "Base" msgstr "Basis" #: ../linkcheck/logger/__init__.py:35 -#: ../linkcheck/gui/linkchecker_ui_main.py:777 +#: ../linkcheck/gui/linkchecker_ui_main.py:787 #: ../linkcheck/gui/urlmodel.py:22 msgid "Name" msgstr "Name" #: ../linkcheck/logger/__init__.py:36 -#: ../linkcheck/gui/linkchecker_ui_main.py:778 +#: ../linkcheck/gui/linkchecker_ui_main.py:788 msgid "Parent URL" msgstr "Vater URL" @@ -416,32 +416,32 @@ msgid "Extern" msgstr "Extern" #: ../linkcheck/logger/__init__.py:38 -#: ../linkcheck/gui/linkchecker_ui_main.py:783 +#: ../linkcheck/gui/linkchecker_ui_main.py:793 msgid "Info" msgstr "Info" #: ../linkcheck/logger/__init__.py:39 -#: ../linkcheck/gui/linkchecker_ui_main.py:784 +#: ../linkcheck/gui/linkchecker_ui_main.py:794 msgid "Warning" msgstr "Warnung" #: ../linkcheck/logger/__init__.py:40 -#: ../linkcheck/gui/linkchecker_ui_main.py:781 +#: ../linkcheck/gui/linkchecker_ui_main.py:791 msgid "D/L time" msgstr "D/L Zeit" #: ../linkcheck/logger/__init__.py:41 -#: ../linkcheck/gui/linkchecker_ui_main.py:782 +#: ../linkcheck/gui/linkchecker_ui_main.py:792 msgid "Size" msgstr "Größe" #: ../linkcheck/logger/__init__.py:42 -#: ../linkcheck/gui/linkchecker_ui_main.py:780 +#: ../linkcheck/gui/linkchecker_ui_main.py:790 msgid "Check time" msgstr "Prüfzeit" #: ../linkcheck/logger/__init__.py:43 -#: ../linkcheck/gui/linkchecker_ui_main.py:776 +#: ../linkcheck/gui/linkchecker_ui_main.py:786 #: ../linkcheck/gui/urlmodel.py:22 msgid "URL" msgstr "URL" @@ -497,111 +497,116 @@ 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:105 +#: ../linkcheck/checker/const.py:106 msgid "The effective URL is different from the original." msgstr "Die effektive URL unterscheidet sich vom Original." -#: ../linkcheck/checker/const.py:107 +#: ../linkcheck/checker/const.py:108 msgid "Could not get the content of the URL." msgstr "Konnte den Inhalt der URL nicht bekommen." -#: ../linkcheck/checker/const.py:108 +#: ../linkcheck/checker/const.py:109 msgid "URL anchor was not found." msgstr "URL Anker wurde nicht gefunden." -#: ../linkcheck/checker/const.py:110 +#: ../linkcheck/checker/const.py:111 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:111 +#: ../linkcheck/checker/const.py:112 msgid "The URL content size is too large." msgstr "Der URL Inhalt ist zu groß." -#: ../linkcheck/checker/const.py:112 +#: ../linkcheck/checker/const.py:113 msgid "The URL content size is zero." msgstr "Der URL Inhaltsgrößenangabe ist Null." -#: ../linkcheck/checker/const.py:113 +#: ../linkcheck/checker/const.py:114 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:114 +#: ../linkcheck/checker/const.py:115 msgid "The URL contains leading or trailing whitespace." msgstr "Die URL %(url)s enthält Leerzeichen am Anfang oder Ende." -#: ../linkcheck/checker/const.py:115 +#: ../linkcheck/checker/const.py:116 msgid "The file: URL is missing a trailing slash." msgstr "Der file: URL fehlt ein abschließender Schrägstrich." -#: ../linkcheck/checker/const.py:117 +#: ../linkcheck/checker/const.py:118 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:118 +#: ../linkcheck/checker/const.py:119 msgid "The ftp: URL is missing a trailing slash." msgstr "Der ftp: URL fehlt ein abschließender Schrägstrich." -#: ../linkcheck/checker/const.py:119 +#: ../linkcheck/checker/const.py:120 msgid "The http: URL checking has been denied." msgstr "Die http: URL-Überprüfung wurde verweigert." -#: ../linkcheck/checker/const.py:120 +#: ../linkcheck/checker/const.py:121 msgid "The URL has moved permanently." msgstr "Die URL wurde dauerhaft verschoben." -#: ../linkcheck/checker/const.py:122 +#: ../linkcheck/checker/const.py:123 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:123 +#: ../linkcheck/checker/const.py:124 msgid "The URL had no content." msgstr "Die URL besitzt keinen Inhalt." -#: ../linkcheck/checker/const.py:125 +#: ../linkcheck/checker/const.py:126 msgid "An error occurred while storing a cookie." msgstr "Ein Fehler trat auf während des Speicherns eines Cookies." -#: ../linkcheck/checker/const.py:127 +#: ../linkcheck/checker/const.py:128 msgid "An error occurred while decompressing the URL content." msgstr "Ein Fehler trat beim Dekomprimieren des URL Inhalts auf." -#: ../linkcheck/checker/const.py:129 +#: ../linkcheck/checker/const.py:130 msgid "The URL content is encoded with an unknown encoding." msgstr "Der URL-Inhalt ist in einer unbekannten Kodierung verfasst." -#: ../linkcheck/checker/const.py:131 +#: ../linkcheck/checker/const.py:132 msgid "Unsupported HTTP authentication method." msgstr "Nicht unterstützte HTTP Authentifizierungsmethode." -#: ../linkcheck/checker/const.py:132 +#: ../linkcheck/checker/const.py:134 +#: ../linkcheck/checker/httpurl.py:235 +msgid "Unauthorized access without HTTP authentication." +msgstr "Unauthorisierter Zugriff ohne HTTP-Authentifizierung." + +#: ../linkcheck/checker/const.py:135 msgid "The SSL certificate is invalid or expired." msgstr "Das SSL-Zertifikat ist ungültig oder abgelaufen." -#: ../linkcheck/checker/const.py:133 +#: ../linkcheck/checker/const.py:136 msgid "The URL has been ignored." msgstr "Die URL wurde ignoriert." -#: ../linkcheck/checker/const.py:134 +#: ../linkcheck/checker/const.py:137 msgid "The mail MX host could not be found." msgstr "Der MX Mail-Rechner konnte nicht gefunden werden." -#: ../linkcheck/checker/const.py:136 +#: ../linkcheck/checker/const.py:139 msgid "The mailto: address could not be verified." msgstr "Die mailto: Addresse konnte nicht überprüft werden." -#: ../linkcheck/checker/const.py:138 +#: ../linkcheck/checker/const.py:141 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:139 +#: ../linkcheck/checker/const.py:142 msgid "No NNTP server was found." msgstr "Es wurde kein NNTP Server gefunden." -#: ../linkcheck/checker/const.py:140 +#: ../linkcheck/checker/const.py:143 msgid "The NNTP newsgroup could not be found." msgstr "Die NNTP Nachrichtengruppe konnte nicht gefunden werden." -#: ../linkcheck/checker/const.py:141 +#: ../linkcheck/checker/const.py:144 msgid "The IP is obfuscated." msgstr "Die IP-Adresse ist verschleiert." @@ -797,7 +802,7 @@ msgstr "Verfügbare Anker: %(anchors)s." #: ../linkcheck/checker/urlbase.py:728 #: ../linkcheck/checker/fileurl.py:193 -#: ../linkcheck/checker/httpurl.py:676 +#: ../linkcheck/checker/httpurl.py:685 msgid "File size too large" msgstr "Dateigröße ist zu groß" @@ -956,44 +961,40 @@ msgstr "Erzwungener Proxy `%(name)s' wurde ignoriert, breche ab." msgid "more than %d redirections, aborting" msgstr "mehr als %d Weiterleitungen, breche ab" -#: ../linkcheck/checker/httpurl.py:250 -msgid "unauthorized access is missing WWW-Authenticate header" -msgstr "dem nicht authorisierten Zugriff fehlt der WWW-Authenticate Header" - -#: ../linkcheck/checker/httpurl.py:257 +#: ../linkcheck/checker/httpurl.py:242 #, 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:314 +#: ../linkcheck/checker/httpurl.py:323 #, python-format msgid "Redirected to `%(url)s'." msgstr "Zu `%(url)s' umgeleitet." -#: ../linkcheck/checker/httpurl.py:358 +#: ../linkcheck/checker/httpurl.py:367 #, python-format msgid "Redirection to url `%(newurl)s' is not allowed." msgstr "Umleitung zu `%(newurl)s' ist nicht erlaubt." -#: ../linkcheck/checker/httpurl.py:360 -#: ../linkcheck/checker/httpurl.py:395 -#: ../linkcheck/checker/httpurl.py:429 +#: ../linkcheck/checker/httpurl.py:369 +#: ../linkcheck/checker/httpurl.py:404 +#: ../linkcheck/checker/httpurl.py:438 msgid "syntax OK" msgstr "Syntax OK" -#: ../linkcheck/checker/httpurl.py:380 +#: ../linkcheck/checker/httpurl.py:389 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:382 +#: ../linkcheck/checker/httpurl.py:391 msgid "filtered" msgstr "gefiltert" -#: ../linkcheck/checker/httpurl.py:393 +#: ../linkcheck/checker/httpurl.py:402 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:411 +#: ../linkcheck/checker/httpurl.py:420 #, python-format msgid "" "recursive redirection encountered:\n" @@ -1002,45 +1003,45 @@ msgstr "" "Rekursive Weiterleitung entdeckt:\n" " %(urls)s" -#: ../linkcheck/checker/httpurl.py:424 +#: ../linkcheck/checker/httpurl.py:433 #, 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:439 +#: ../linkcheck/checker/httpurl.py:448 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:481 +#: ../linkcheck/checker/httpurl.py:490 msgid "OK" msgstr "OK" -#: ../linkcheck/checker/httpurl.py:484 +#: ../linkcheck/checker/httpurl.py:493 #, python-format msgid "Last modified %(date)s." msgstr "Letzte Änderung %(date)s." -#: ../linkcheck/checker/httpurl.py:581 +#: ../linkcheck/checker/httpurl.py:590 #, python-format msgid "Sent Cookie: %(cookie)s." msgstr "Gesendetes Cookie: %(cookie)s." -#: ../linkcheck/checker/httpurl.py:587 +#: ../linkcheck/checker/httpurl.py:596 #, python-format msgid "Could not store cookies from headers: %(error)s." msgstr "Konnte Cookies nicht aus Kopfdaten speichern: %(error)s." -#: ../linkcheck/checker/httpurl.py:650 +#: ../linkcheck/checker/httpurl.py:659 #, python-format msgid "Unsupported HTTP url scheme `%(scheme)s'" msgstr "Nicht unterstütztes HTTP URL Schema `%(scheme)s'" -#: ../linkcheck/checker/httpurl.py:696 +#: ../linkcheck/checker/httpurl.py:705 #, python-format msgid "Decompress error %(err)s" msgstr "Entkomprimierungsfehler %(err)s" -#: ../linkcheck/checker/httpurl.py:712 +#: ../linkcheck/checker/httpurl.py:721 #, python-format msgid "Unsupported content encoding `%(encoding)s'." msgstr "Content-Encoding `%(encoding)s' wird nicht unterstützt." @@ -1104,237 +1105,237 @@ msgstr "Laufe als Benutzer root; Privilegien werden aufgegeben indem auf Benutze msgid "LinkChecker debug log" msgstr "LinkChecker Debugausgabe" -#: ../linkcheck/gui/linkchecker_ui_main.py:763 +#: ../linkcheck/gui/linkchecker_ui_main.py:773 msgid "LinkChecker" msgstr "LinkChecker" -#: ../linkcheck/gui/linkchecker_ui_main.py:764 +#: ../linkcheck/gui/linkchecker_ui_main.py:774 msgid "URL:" msgstr "URL:" -#: ../linkcheck/gui/linkchecker_ui_main.py:765 +#: ../linkcheck/gui/linkchecker_ui_main.py:775 msgid "Start checking the given URL." msgstr "Beginne, die gegebene URL zu Prüfen" -#: ../linkcheck/gui/linkchecker_ui_main.py:767 +#: ../linkcheck/gui/linkchecker_ui_main.py:777 msgid "Active:" msgstr "Aktiv:" -#: ../linkcheck/gui/linkchecker_ui_main.py:768 -#: ../linkcheck/gui/linkchecker_ui_main.py:770 -#: ../linkcheck/gui/linkchecker_ui_main.py:772 +#: ../linkcheck/gui/linkchecker_ui_main.py:778 +#: ../linkcheck/gui/linkchecker_ui_main.py:780 +#: ../linkcheck/gui/linkchecker_ui_main.py:782 msgid "0" msgstr "0" -#: ../linkcheck/gui/linkchecker_ui_main.py:769 +#: ../linkcheck/gui/linkchecker_ui_main.py:779 msgid "Queued:" msgstr "Wartend:" -#: ../linkcheck/gui/linkchecker_ui_main.py:771 +#: ../linkcheck/gui/linkchecker_ui_main.py:781 msgid "Checked:" msgstr "Geprüft:" -#: ../linkcheck/gui/linkchecker_ui_main.py:773 +#: ../linkcheck/gui/linkchecker_ui_main.py:783 msgid "Info:" msgstr "Info:" -#: ../linkcheck/gui/linkchecker_ui_main.py:774 +#: ../linkcheck/gui/linkchecker_ui_main.py:784 msgid "-" msgstr "-" -#: ../linkcheck/gui/linkchecker_ui_main.py:775 +#: ../linkcheck/gui/linkchecker_ui_main.py:785 msgid "URL properties" msgstr "URL Eigenschaften" -#: ../linkcheck/gui/linkchecker_ui_main.py:786 +#: ../linkcheck/gui/linkchecker_ui_main.py:796 msgid "Check results" msgstr "Prüfergebnisse" -#: ../linkcheck/gui/linkchecker_ui_main.py:787 +#: ../linkcheck/gui/linkchecker_ui_main.py:797 msgid "Valid URLs" msgstr "Gültige URLs" -#: ../linkcheck/gui/linkchecker_ui_main.py:788 +#: ../linkcheck/gui/linkchecker_ui_main.py:798 msgid "Warnings" msgstr "Warnungen" -#: ../linkcheck/gui/linkchecker_ui_main.py:789 +#: ../linkcheck/gui/linkchecker_ui_main.py:799 msgid "Invalid URLs" msgstr "Ungültige URLs" -#: ../linkcheck/gui/linkchecker_ui_main.py:790 +#: ../linkcheck/gui/linkchecker_ui_main.py:800 msgid "Content type statistics" msgstr "Inhaltstatistik" -#: ../linkcheck/gui/linkchecker_ui_main.py:791 +#: ../linkcheck/gui/linkchecker_ui_main.py:801 msgid "Image" msgstr "Bild" -#: ../linkcheck/gui/linkchecker_ui_main.py:792 +#: ../linkcheck/gui/linkchecker_ui_main.py:802 msgid "Text" msgstr "Text" -#: ../linkcheck/gui/linkchecker_ui_main.py:793 +#: ../linkcheck/gui/linkchecker_ui_main.py:803 msgid "Application" msgstr "Anwendung" -#: ../linkcheck/gui/linkchecker_ui_main.py:794 +#: ../linkcheck/gui/linkchecker_ui_main.py:804 msgid "Audio" msgstr "Audio" -#: ../linkcheck/gui/linkchecker_ui_main.py:795 +#: ../linkcheck/gui/linkchecker_ui_main.py:805 msgid "Video" msgstr "Video" -#: ../linkcheck/gui/linkchecker_ui_main.py:796 +#: ../linkcheck/gui/linkchecker_ui_main.py:806 msgid "Other" msgstr "Andere" -#: ../linkcheck/gui/linkchecker_ui_main.py:797 +#: ../linkcheck/gui/linkchecker_ui_main.py:807 msgid "Mail" msgstr "E-Mail" -#: ../linkcheck/gui/linkchecker_ui_main.py:798 +#: ../linkcheck/gui/linkchecker_ui_main.py:808 msgid "URL statistics" msgstr "URL Statistik" -#: ../linkcheck/gui/linkchecker_ui_main.py:799 +#: ../linkcheck/gui/linkchecker_ui_main.py:809 msgid "Min. length" msgstr "Min. Länge" -#: ../linkcheck/gui/linkchecker_ui_main.py:800 +#: ../linkcheck/gui/linkchecker_ui_main.py:810 msgid "Avg. length" msgstr "Durchschn. Länge" -#: ../linkcheck/gui/linkchecker_ui_main.py:801 +#: ../linkcheck/gui/linkchecker_ui_main.py:811 msgid "Max. length" msgstr "Max. Länge" -#: ../linkcheck/gui/linkchecker_ui_main.py:802 +#: ../linkcheck/gui/linkchecker_ui_main.py:812 msgid "Domains" msgstr "Domains" -#: ../linkcheck/gui/linkchecker_ui_main.py:803 +#: ../linkcheck/gui/linkchecker_ui_main.py:813 msgid "&Edit" msgstr "&Bearbeiten" -#: ../linkcheck/gui/linkchecker_ui_main.py:804 +#: ../linkcheck/gui/linkchecker_ui_main.py:814 #: ../linkcheck/gui/linkchecker_ui_editor.py:34 msgid "&File" msgstr "&Datei" -#: ../linkcheck/gui/linkchecker_ui_main.py:805 -#: ../linkcheck/gui/linkchecker_ui_main.py:808 +#: ../linkcheck/gui/linkchecker_ui_main.py:815 +#: ../linkcheck/gui/linkchecker_ui_main.py:818 msgid "&Help" msgstr "&Hilfe" -#: ../linkcheck/gui/linkchecker_ui_main.py:806 +#: ../linkcheck/gui/linkchecker_ui_main.py:816 msgid "A&bout" msgstr "Ü&ber" -#: ../linkcheck/gui/linkchecker_ui_main.py:807 +#: ../linkcheck/gui/linkchecker_ui_main.py:817 msgid "About" msgstr "Über" -#: ../linkcheck/gui/linkchecker_ui_main.py:809 +#: ../linkcheck/gui/linkchecker_ui_main.py:819 msgid "Help" msgstr "Hilfe" -#: ../linkcheck/gui/linkchecker_ui_main.py:810 +#: ../linkcheck/gui/linkchecker_ui_main.py:820 msgid "View online" msgstr "Online anschauen" -#: ../linkcheck/gui/linkchecker_ui_main.py:811 +#: ../linkcheck/gui/linkchecker_ui_main.py:821 msgid "View URL online" msgstr "URL Online anschauen" -#: ../linkcheck/gui/linkchecker_ui_main.py:812 +#: ../linkcheck/gui/linkchecker_ui_main.py:822 msgid "&Options" msgstr "&Optionen" -#: ../linkcheck/gui/linkchecker_ui_main.py:813 +#: ../linkcheck/gui/linkchecker_ui_main.py:823 #: ../linkcheck/gui/linkchecker_ui_options.py:137 #: /usr/lib/python2.7/optparse.py:1626 msgid "Options" msgstr "Optionen" -#: ../linkcheck/gui/linkchecker_ui_main.py:814 +#: ../linkcheck/gui/linkchecker_ui_main.py:824 msgid "Copy to clipboard" msgstr "URL kopieren" -#: ../linkcheck/gui/linkchecker_ui_main.py:815 +#: ../linkcheck/gui/linkchecker_ui_main.py:825 msgid "Copy URL to clipboard" msgstr "URL in die Zwischenablage kopieren" -#: ../linkcheck/gui/linkchecker_ui_main.py:816 +#: ../linkcheck/gui/linkchecker_ui_main.py:826 msgid "Ctrl+C" msgstr "Strg+C" -#: ../linkcheck/gui/linkchecker_ui_main.py:817 +#: ../linkcheck/gui/linkchecker_ui_main.py:827 msgid "View parent online" msgstr "Vater-URL Online anschauen" -#: ../linkcheck/gui/linkchecker_ui_main.py:818 +#: ../linkcheck/gui/linkchecker_ui_main.py:828 msgid "View parent URL online" msgstr "Vater-URL Online anschauen" -#: ../linkcheck/gui/linkchecker_ui_main.py:819 +#: ../linkcheck/gui/linkchecker_ui_main.py:829 msgid "View parent source" msgstr "Quellcode der Vater-URL anzeigen" -#: ../linkcheck/gui/linkchecker_ui_main.py:820 +#: ../linkcheck/gui/linkchecker_ui_main.py:830 msgid "View parent URL source" msgstr "Quellcode der Vater-URL anzeigen" -#: ../linkcheck/gui/linkchecker_ui_main.py:821 +#: ../linkcheck/gui/linkchecker_ui_main.py:831 msgid "Show debug" msgstr "Zeige Debug" -#: ../linkcheck/gui/linkchecker_ui_main.py:822 +#: ../linkcheck/gui/linkchecker_ui_main.py:832 msgid "View properties" msgstr "Eigenschaften anschauen" -#: ../linkcheck/gui/linkchecker_ui_main.py:823 +#: ../linkcheck/gui/linkchecker_ui_main.py:833 msgid "View URL properties" msgstr "URL Eigenschaften anschauen" -#: ../linkcheck/gui/linkchecker_ui_main.py:824 +#: ../linkcheck/gui/linkchecker_ui_main.py:834 msgid "Save &results..." msgstr "E&rgebnisse speichern..." -#: ../linkcheck/gui/linkchecker_ui_main.py:825 +#: ../linkcheck/gui/linkchecker_ui_main.py:835 msgid "&Quit" msgstr "&Beenden" -#: ../linkcheck/gui/linkchecker_ui_main.py:826 +#: ../linkcheck/gui/linkchecker_ui_main.py:836 msgid "Ctrl+Q" msgstr "Strg+Q" -#: ../linkcheck/gui/linkchecker_ui_main.py:827 +#: ../linkcheck/gui/linkchecker_ui_main.py:837 msgid "Check for updates" msgstr "Prüfe auf Updates" -#: ../linkcheck/gui/linkchecker_ui_main.py:828 +#: ../linkcheck/gui/linkchecker_ui_main.py:838 msgid "Donate" msgstr "Spenden" -#: ../linkcheck/gui/linkchecker_ui_main.py:829 +#: ../linkcheck/gui/linkchecker_ui_main.py:839 msgid "&Open project..." msgstr "&Projekt öffnen..." -#: ../linkcheck/gui/linkchecker_ui_main.py:830 +#: ../linkcheck/gui/linkchecker_ui_main.py:840 msgid "Open project" msgstr "Projekt öffnen" -#: ../linkcheck/gui/linkchecker_ui_main.py:831 +#: ../linkcheck/gui/linkchecker_ui_main.py:841 msgid "Ctrl+O" msgstr "Strg+O" -#: ../linkcheck/gui/linkchecker_ui_main.py:832 +#: ../linkcheck/gui/linkchecker_ui_main.py:842 msgid "&Save project..." msgstr "Projekt &speichern..." -#: ../linkcheck/gui/linkchecker_ui_main.py:833 +#: ../linkcheck/gui/linkchecker_ui_main.py:843 #: ../linkcheck/gui/linkchecker_ui_editor.py:50 msgid "Ctrl+S" msgstr "Strg+S" @@ -2498,6 +2499,9 @@ msgstr "%s Option erfordert %d Argumente" msgid "%s option does not take a value" msgstr "%s Option nimmt kein Wert" +#~ msgid "unauthorized access is missing WWW-Authenticate header" +#~ msgstr "dem nicht authorisierten Zugriff fehlt der WWW-Authenticate Header" + #~ msgid "Amazon servers block HTTP HEAD requests." #~ msgstr "Amazon Server blockieren HTTP HEAD Anfragen." diff --git a/po/linkchecker.pot b/po/linkchecker.pot index dff9f1f4..b769af4e 100644 --- a/po/linkchecker.pot +++ b/po/linkchecker.pot @@ -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-08-23 23:58+0200\n" +"POT-Creation-Date: 2012-08-26 10:48+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -357,22 +357,22 @@ msgid "Cache key" msgstr "" #: ../linkcheck/logger/__init__.py:33 -#: ../linkcheck/gui/linkchecker_ui_main.py:785 ../linkcheck/gui/urlmodel.py:22 +#: ../linkcheck/gui/linkchecker_ui_main.py:795 ../linkcheck/gui/urlmodel.py:22 msgid "Result" msgstr "" #: ../linkcheck/logger/__init__.py:34 -#: ../linkcheck/gui/linkchecker_ui_main.py:779 +#: ../linkcheck/gui/linkchecker_ui_main.py:789 msgid "Base" msgstr "" #: ../linkcheck/logger/__init__.py:35 -#: ../linkcheck/gui/linkchecker_ui_main.py:777 ../linkcheck/gui/urlmodel.py:22 +#: ../linkcheck/gui/linkchecker_ui_main.py:787 ../linkcheck/gui/urlmodel.py:22 msgid "Name" msgstr "" #: ../linkcheck/logger/__init__.py:36 -#: ../linkcheck/gui/linkchecker_ui_main.py:778 +#: ../linkcheck/gui/linkchecker_ui_main.py:788 msgid "Parent URL" msgstr "" @@ -381,32 +381,32 @@ msgid "Extern" msgstr "" #: ../linkcheck/logger/__init__.py:38 -#: ../linkcheck/gui/linkchecker_ui_main.py:783 +#: ../linkcheck/gui/linkchecker_ui_main.py:793 msgid "Info" msgstr "" #: ../linkcheck/logger/__init__.py:39 -#: ../linkcheck/gui/linkchecker_ui_main.py:784 +#: ../linkcheck/gui/linkchecker_ui_main.py:794 msgid "Warning" msgstr "" #: ../linkcheck/logger/__init__.py:40 -#: ../linkcheck/gui/linkchecker_ui_main.py:781 +#: ../linkcheck/gui/linkchecker_ui_main.py:791 msgid "D/L time" msgstr "" #: ../linkcheck/logger/__init__.py:41 -#: ../linkcheck/gui/linkchecker_ui_main.py:782 +#: ../linkcheck/gui/linkchecker_ui_main.py:792 msgid "Size" msgstr "" #: ../linkcheck/logger/__init__.py:42 -#: ../linkcheck/gui/linkchecker_ui_main.py:780 +#: ../linkcheck/gui/linkchecker_ui_main.py:790 msgid "Check time" msgstr "" #: ../linkcheck/logger/__init__.py:43 -#: ../linkcheck/gui/linkchecker_ui_main.py:776 ../linkcheck/gui/urlmodel.py:22 +#: ../linkcheck/gui/linkchecker_ui_main.py:786 ../linkcheck/gui/urlmodel.py:22 msgid "URL" msgstr "" @@ -461,111 +461,115 @@ msgstr "" msgid "URL is unrecognized or has invalid syntax" msgstr "" -#: ../linkcheck/checker/const.py:105 +#: ../linkcheck/checker/const.py:106 msgid "The effective URL is different from the original." msgstr "" -#: ../linkcheck/checker/const.py:107 +#: ../linkcheck/checker/const.py:108 msgid "Could not get the content of the URL." msgstr "" -#: ../linkcheck/checker/const.py:108 +#: ../linkcheck/checker/const.py:109 msgid "URL anchor was not found." msgstr "" -#: ../linkcheck/checker/const.py:110 +#: ../linkcheck/checker/const.py:111 msgid "The warning regular expression was found in the URL contents." msgstr "" -#: ../linkcheck/checker/const.py:111 +#: ../linkcheck/checker/const.py:112 msgid "The URL content size is too large." msgstr "" -#: ../linkcheck/checker/const.py:112 +#: ../linkcheck/checker/const.py:113 msgid "The URL content size is zero." msgstr "" -#: ../linkcheck/checker/const.py:113 +#: ../linkcheck/checker/const.py:114 msgid "The URL content size and download size are unequal." msgstr "" -#: ../linkcheck/checker/const.py:114 +#: ../linkcheck/checker/const.py:115 msgid "The URL contains leading or trailing whitespace." msgstr "" -#: ../linkcheck/checker/const.py:115 +#: ../linkcheck/checker/const.py:116 msgid "The file: URL is missing a trailing slash." msgstr "" -#: ../linkcheck/checker/const.py:117 +#: ../linkcheck/checker/const.py:118 msgid "The file: path is not the same as the system specific path." msgstr "" -#: ../linkcheck/checker/const.py:118 +#: ../linkcheck/checker/const.py:119 msgid "The ftp: URL is missing a trailing slash." msgstr "" -#: ../linkcheck/checker/const.py:119 +#: ../linkcheck/checker/const.py:120 msgid "The http: URL checking has been denied." msgstr "" -#: ../linkcheck/checker/const.py:120 +#: ../linkcheck/checker/const.py:121 msgid "The URL has moved permanently." msgstr "" -#: ../linkcheck/checker/const.py:122 +#: ../linkcheck/checker/const.py:123 msgid "The URL has been redirected to an URL of a different type." msgstr "" -#: ../linkcheck/checker/const.py:123 +#: ../linkcheck/checker/const.py:124 msgid "The URL had no content." msgstr "" -#: ../linkcheck/checker/const.py:125 +#: ../linkcheck/checker/const.py:126 msgid "An error occurred while storing a cookie." msgstr "" -#: ../linkcheck/checker/const.py:127 +#: ../linkcheck/checker/const.py:128 msgid "An error occurred while decompressing the URL content." msgstr "" -#: ../linkcheck/checker/const.py:129 +#: ../linkcheck/checker/const.py:130 msgid "The URL content is encoded with an unknown encoding." msgstr "" -#: ../linkcheck/checker/const.py:131 +#: ../linkcheck/checker/const.py:132 msgid "Unsupported HTTP authentication method." msgstr "" -#: ../linkcheck/checker/const.py:132 +#: ../linkcheck/checker/const.py:134 ../linkcheck/checker/httpurl.py:235 +msgid "Unauthorized access without HTTP authentication." +msgstr "" + +#: ../linkcheck/checker/const.py:135 msgid "The SSL certificate is invalid or expired." msgstr "" -#: ../linkcheck/checker/const.py:133 +#: ../linkcheck/checker/const.py:136 msgid "The URL has been ignored." msgstr "" -#: ../linkcheck/checker/const.py:134 +#: ../linkcheck/checker/const.py:137 msgid "The mail MX host could not be found." msgstr "" -#: ../linkcheck/checker/const.py:136 +#: ../linkcheck/checker/const.py:139 msgid "The mailto: address could not be verified." msgstr "" -#: ../linkcheck/checker/const.py:138 +#: ../linkcheck/checker/const.py:141 msgid "No connection to a MX host could be established." msgstr "" -#: ../linkcheck/checker/const.py:139 +#: ../linkcheck/checker/const.py:142 msgid "No NNTP server was found." msgstr "" -#: ../linkcheck/checker/const.py:140 +#: ../linkcheck/checker/const.py:143 msgid "The NNTP newsgroup could not be found." msgstr "" -#: ../linkcheck/checker/const.py:141 +#: ../linkcheck/checker/const.py:144 msgid "The IP is obfuscated." msgstr "" @@ -766,7 +770,7 @@ msgid "Available anchors: %(anchors)s." msgstr "" #: ../linkcheck/checker/urlbase.py:728 ../linkcheck/checker/fileurl.py:193 -#: ../linkcheck/checker/httpurl.py:676 +#: ../linkcheck/checker/httpurl.py:685 msgid "File size too large" msgstr "" @@ -926,92 +930,88 @@ msgstr "" msgid "more than %d redirections, aborting" msgstr "" -#: ../linkcheck/checker/httpurl.py:250 -msgid "unauthorized access is missing WWW-Authenticate header" -msgstr "" - -#: ../linkcheck/checker/httpurl.py:257 +#: ../linkcheck/checker/httpurl.py:242 #, python-format msgid "" "Unsupported HTTP authentication `%(auth)s', only `Basic' authentication is " "supported." msgstr "" -#: ../linkcheck/checker/httpurl.py:314 +#: ../linkcheck/checker/httpurl.py:323 #, python-format msgid "Redirected to `%(url)s'." msgstr "" -#: ../linkcheck/checker/httpurl.py:358 +#: ../linkcheck/checker/httpurl.py:367 #, python-format msgid "Redirection to url `%(newurl)s' is not allowed." msgstr "" -#: ../linkcheck/checker/httpurl.py:360 ../linkcheck/checker/httpurl.py:395 -#: ../linkcheck/checker/httpurl.py:429 +#: ../linkcheck/checker/httpurl.py:369 ../linkcheck/checker/httpurl.py:404 +#: ../linkcheck/checker/httpurl.py:438 msgid "syntax OK" msgstr "" -#: ../linkcheck/checker/httpurl.py:380 +#: ../linkcheck/checker/httpurl.py:389 msgid "The redirected URL is outside of the domain filter, checked only syntax." msgstr "" -#: ../linkcheck/checker/httpurl.py:382 +#: ../linkcheck/checker/httpurl.py:391 msgid "filtered" msgstr "" -#: ../linkcheck/checker/httpurl.py:393 +#: ../linkcheck/checker/httpurl.py:402 msgid "Access to redirected URL denied by robots.txt, checked only syntax." msgstr "" -#: ../linkcheck/checker/httpurl.py:411 +#: ../linkcheck/checker/httpurl.py:420 #, python-format msgid "" "recursive redirection encountered:\n" " %(urls)s" msgstr "" -#: ../linkcheck/checker/httpurl.py:424 +#: ../linkcheck/checker/httpurl.py:433 #, python-format msgid "" "Redirection to URL `%(newurl)s' with different scheme found; the original URL " "was `%(url)s'." msgstr "" -#: ../linkcheck/checker/httpurl.py:439 +#: ../linkcheck/checker/httpurl.py:448 msgid "HTTP 301 (moved permanent) encountered: you should update this link." msgstr "" -#: ../linkcheck/checker/httpurl.py:481 +#: ../linkcheck/checker/httpurl.py:490 msgid "OK" msgstr "" -#: ../linkcheck/checker/httpurl.py:484 +#: ../linkcheck/checker/httpurl.py:493 #, python-format msgid "Last modified %(date)s." msgstr "" -#: ../linkcheck/checker/httpurl.py:581 +#: ../linkcheck/checker/httpurl.py:590 #, python-format msgid "Sent Cookie: %(cookie)s." msgstr "" -#: ../linkcheck/checker/httpurl.py:587 +#: ../linkcheck/checker/httpurl.py:596 #, python-format msgid "Could not store cookies from headers: %(error)s." msgstr "" -#: ../linkcheck/checker/httpurl.py:650 +#: ../linkcheck/checker/httpurl.py:659 #, python-format msgid "Unsupported HTTP url scheme `%(scheme)s'" msgstr "" -#: ../linkcheck/checker/httpurl.py:696 +#: ../linkcheck/checker/httpurl.py:705 #, python-format msgid "Decompress error %(err)s" msgstr "" -#: ../linkcheck/checker/httpurl.py:712 +#: ../linkcheck/checker/httpurl.py:721 #, python-format msgid "Unsupported content encoding `%(encoding)s'." msgstr "" @@ -1075,237 +1075,237 @@ msgstr "" msgid "LinkChecker debug log" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:763 +#: ../linkcheck/gui/linkchecker_ui_main.py:773 msgid "LinkChecker" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:764 +#: ../linkcheck/gui/linkchecker_ui_main.py:774 msgid "URL:" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:765 +#: ../linkcheck/gui/linkchecker_ui_main.py:775 msgid "Start checking the given URL." msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:767 +#: ../linkcheck/gui/linkchecker_ui_main.py:777 msgid "Active:" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:768 -#: ../linkcheck/gui/linkchecker_ui_main.py:770 -#: ../linkcheck/gui/linkchecker_ui_main.py:772 +#: ../linkcheck/gui/linkchecker_ui_main.py:778 +#: ../linkcheck/gui/linkchecker_ui_main.py:780 +#: ../linkcheck/gui/linkchecker_ui_main.py:782 msgid "0" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:769 +#: ../linkcheck/gui/linkchecker_ui_main.py:779 msgid "Queued:" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:771 +#: ../linkcheck/gui/linkchecker_ui_main.py:781 msgid "Checked:" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:773 +#: ../linkcheck/gui/linkchecker_ui_main.py:783 msgid "Info:" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:774 +#: ../linkcheck/gui/linkchecker_ui_main.py:784 msgid "-" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:775 +#: ../linkcheck/gui/linkchecker_ui_main.py:785 msgid "URL properties" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:786 +#: ../linkcheck/gui/linkchecker_ui_main.py:796 msgid "Check results" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:787 +#: ../linkcheck/gui/linkchecker_ui_main.py:797 msgid "Valid URLs" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:788 +#: ../linkcheck/gui/linkchecker_ui_main.py:798 msgid "Warnings" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:789 +#: ../linkcheck/gui/linkchecker_ui_main.py:799 msgid "Invalid URLs" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:790 +#: ../linkcheck/gui/linkchecker_ui_main.py:800 msgid "Content type statistics" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:791 +#: ../linkcheck/gui/linkchecker_ui_main.py:801 msgid "Image" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:792 +#: ../linkcheck/gui/linkchecker_ui_main.py:802 msgid "Text" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:793 +#: ../linkcheck/gui/linkchecker_ui_main.py:803 msgid "Application" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:794 +#: ../linkcheck/gui/linkchecker_ui_main.py:804 msgid "Audio" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:795 +#: ../linkcheck/gui/linkchecker_ui_main.py:805 msgid "Video" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:796 +#: ../linkcheck/gui/linkchecker_ui_main.py:806 msgid "Other" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:797 +#: ../linkcheck/gui/linkchecker_ui_main.py:807 msgid "Mail" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:798 +#: ../linkcheck/gui/linkchecker_ui_main.py:808 msgid "URL statistics" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:799 +#: ../linkcheck/gui/linkchecker_ui_main.py:809 msgid "Min. length" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:800 +#: ../linkcheck/gui/linkchecker_ui_main.py:810 msgid "Avg. length" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:801 +#: ../linkcheck/gui/linkchecker_ui_main.py:811 msgid "Max. length" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:802 +#: ../linkcheck/gui/linkchecker_ui_main.py:812 msgid "Domains" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:803 +#: ../linkcheck/gui/linkchecker_ui_main.py:813 msgid "&Edit" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:804 +#: ../linkcheck/gui/linkchecker_ui_main.py:814 #: ../linkcheck/gui/linkchecker_ui_editor.py:34 msgid "&File" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:805 -#: ../linkcheck/gui/linkchecker_ui_main.py:808 +#: ../linkcheck/gui/linkchecker_ui_main.py:815 +#: ../linkcheck/gui/linkchecker_ui_main.py:818 msgid "&Help" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:806 +#: ../linkcheck/gui/linkchecker_ui_main.py:816 msgid "A&bout" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:807 +#: ../linkcheck/gui/linkchecker_ui_main.py:817 msgid "About" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:809 +#: ../linkcheck/gui/linkchecker_ui_main.py:819 msgid "Help" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:810 +#: ../linkcheck/gui/linkchecker_ui_main.py:820 msgid "View online" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:811 +#: ../linkcheck/gui/linkchecker_ui_main.py:821 msgid "View URL online" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:812 +#: ../linkcheck/gui/linkchecker_ui_main.py:822 msgid "&Options" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:813 +#: ../linkcheck/gui/linkchecker_ui_main.py:823 #: ../linkcheck/gui/linkchecker_ui_options.py:137 #: /usr/lib/python2.7/optparse.py:1626 msgid "Options" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:814 +#: ../linkcheck/gui/linkchecker_ui_main.py:824 msgid "Copy to clipboard" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:815 +#: ../linkcheck/gui/linkchecker_ui_main.py:825 msgid "Copy URL to clipboard" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:816 +#: ../linkcheck/gui/linkchecker_ui_main.py:826 msgid "Ctrl+C" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:817 +#: ../linkcheck/gui/linkchecker_ui_main.py:827 msgid "View parent online" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:818 +#: ../linkcheck/gui/linkchecker_ui_main.py:828 msgid "View parent URL online" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:819 +#: ../linkcheck/gui/linkchecker_ui_main.py:829 msgid "View parent source" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:820 +#: ../linkcheck/gui/linkchecker_ui_main.py:830 msgid "View parent URL source" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:821 +#: ../linkcheck/gui/linkchecker_ui_main.py:831 msgid "Show debug" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:822 +#: ../linkcheck/gui/linkchecker_ui_main.py:832 msgid "View properties" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:823 +#: ../linkcheck/gui/linkchecker_ui_main.py:833 msgid "View URL properties" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:824 +#: ../linkcheck/gui/linkchecker_ui_main.py:834 msgid "Save &results..." msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:825 +#: ../linkcheck/gui/linkchecker_ui_main.py:835 msgid "&Quit" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:826 +#: ../linkcheck/gui/linkchecker_ui_main.py:836 msgid "Ctrl+Q" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:827 +#: ../linkcheck/gui/linkchecker_ui_main.py:837 msgid "Check for updates" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:828 +#: ../linkcheck/gui/linkchecker_ui_main.py:838 msgid "Donate" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:829 +#: ../linkcheck/gui/linkchecker_ui_main.py:839 msgid "&Open project..." msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:830 +#: ../linkcheck/gui/linkchecker_ui_main.py:840 msgid "Open project" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:831 +#: ../linkcheck/gui/linkchecker_ui_main.py:841 msgid "Ctrl+O" msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:832 +#: ../linkcheck/gui/linkchecker_ui_main.py:842 msgid "&Save project..." msgstr "" -#: ../linkcheck/gui/linkchecker_ui_main.py:833 +#: ../linkcheck/gui/linkchecker_ui_main.py:843 #: ../linkcheck/gui/linkchecker_ui_editor.py:50 msgid "Ctrl+S" msgstr ""