diff --git a/bin/locale/de_DE.qm b/bin/locale/de_DE.qm index 887fadfd..a2f6ef97 100644 Binary files a/bin/locale/de_DE.qm and b/bin/locale/de_DE.qm differ diff --git a/src/tools/globalfunctions.cpp b/src/tools/globalfunctions.cpp index 14270a31..2f2aaef3 100644 --- a/src/tools/globalfunctions.cpp +++ b/src/tools/globalfunctions.cpp @@ -1,176 +1,197 @@ /* ============================================================ * QupZilla - WebKit based browser * Copyright (C) 2010-2011 David Rosca * * 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 3 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, see . * ============================================================ */ #include "globalfunctions.h" QByteArray qz_pixmapToByteArray(const QPixmap &pix) { QByteArray bytes; QBuffer buffer(&bytes); buffer.open(QIODevice::WriteOnly); if (pix.save(&buffer, "PNG")) return buffer.buffer().toBase64(); return QByteArray(); } +QPixmap qz_pixmapFromByteArray(const QByteArray &data) +{ + QPixmap image; + QByteArray bArray = QByteArray::fromBase64(data); + image.loadFromData(bArray); + + return image; +} + QByteArray qz_readAllFileContents(const QString &filename) { QFile file(filename); file.open(QFile::ReadOnly); QByteArray a = file.readAll(); file.close(); return a; } void qz_centerWidgetOnScreen(QWidget *w) { const QRect screen = QApplication::desktop()->screenGeometry(); const QRect &size = w->geometry(); w->move( (screen.width()-size.width())/2, (screen.height()-size.height())/2 ); } // Very, very, very simplified QDialog::adjustPosition from qdialog.cpp void qz_centerWidgetToParent(QWidget* w, QWidget* parent) { if (!parent || !w) return; QPoint p; parent = parent->window(); QPoint pp = parent->mapToGlobal(QPoint(0,0)); p = QPoint(pp.x() + parent->width()/2, pp.y() + parent->height()/ 2); p = QPoint(p.x()-w->width()/2, p.y()-w->height()/2 - 20); w->move(p); } QString qz_samePartOfStrings(const QString &one, const QString &other) { int i = 0; int maxSize = qMin(one.size(), other.size()); while (one.at(i) == other.at(i)) { i++; if (i == maxSize) break; } return one.left(i); } QUrl qz_makeRelativeUrl(const QUrl &baseUrl, const QUrl &rUrl) { QString baseUrlPath = baseUrl.path(); QString rUrlPath = rUrl.path(); QString samePart = qz_samePartOfStrings(baseUrlPath, rUrlPath); QUrl returnUrl; if (samePart.isEmpty()) { returnUrl = rUrl; } else if (samePart == "/") { returnUrl = QUrl(rUrl.path()); } else { samePart = samePart.left(samePart.lastIndexOf("/") + 1); int slashCount = samePart.count("/") + 1; if (samePart.startsWith("/")) slashCount--; if (samePart.endsWith("/")) slashCount--; rUrlPath.remove(samePart); rUrlPath.prepend(QString("..""/").repeated(slashCount)); returnUrl = QUrl(rUrlPath); } return returnUrl; } QString qz_ensureUniqueFilename(const QString &pathToFile) { if (!QFile::exists(pathToFile)) return pathToFile; QString tmpFileName = pathToFile; int i = 1; while (QFile::exists(tmpFileName)) { tmpFileName = pathToFile; int index = tmpFileName.lastIndexOf("."); if (index == -1) { tmpFileName.append("("+QString::number(i)+")"); - } else { + } + else { tmpFileName = tmpFileName.mid(0, index) + "("+QString::number(i)+")" + tmpFileName.mid(index); } i++; } return tmpFileName; } +QString qz_getFileNameFromUrl(const QUrl &url) +{ + QString fileName = url.toString(QUrl::RemoveFragment | QUrl::RemoveQuery | QUrl::RemoveScheme | QUrl::RemovePort); + if (fileName.indexOf("/") != -1) { + int pos = fileName.lastIndexOf("/"); + fileName = fileName.mid(pos); + fileName.remove("/"); + } + return fileName; +} + QString qz_buildSystem() { #ifdef Q_OS_LINUX return "Linux"; #endif #ifdef Q_OS_UNIX return "Unix"; #endif #ifdef Q_OS_BSD4 return "BSD 4.4"; #endif #ifdef Q_OS_BSDI return "BSD/OS"; #endif #ifdef Q_OS_FREEBSD return "FreeBSD"; #endif #ifdef Q_OS_HPUX return "HP-UX"; #endif #ifdef Q_OS_HURD return "GNU Hurd"; #endif #ifdef Q_OS_LYNX return "LynxOS"; #endif #ifdef Q_OS_MAC return "MAC OS"; #endif #ifdef Q_OS_NETBSD return "NetBSD"; #endif #ifdef Q_OS_OS2 return "OS/2"; #endif #ifdef Q_OS_OPENBSD return "OpenBSD"; #endif #ifdef Q_OS_OSF return "HP Tru64 UNIX"; #endif #ifdef Q_OS_SOLARIS return "Sun Solaris"; #endif #ifdef Q_OS_UNIXWARE return "UnixWare 7 / Open UNIX 8"; #endif #ifdef Q_OS_WIN32 return "Windows"; #endif } diff --git a/src/tools/globalfunctions.h b/src/tools/globalfunctions.h index d3f3bcf1..c6338f3e 100644 --- a/src/tools/globalfunctions.h +++ b/src/tools/globalfunctions.h @@ -1,43 +1,47 @@ /* ============================================================ * QupZilla - WebKit based browser * Copyright (C) 2010-2011 David Rosca * * 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 3 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, see . * ============================================================ */ #ifndef GLOBALFUNCTIONS_H #define GLOBALFUNCTIONS_H #include #include #include #include #include #include #include #include +#include QByteArray qz_pixmapToByteArray(const QPixmap &pix); +QPixmap qz_pixmapFromByteArray(const QByteArray &data); + QByteArray qz_readAllFileContents(const QString &filename); void qz_centerWidgetOnScreen(QWidget* w); void qz_centerWidgetToParent(QWidget* w, QWidget* parent); QString qz_samePartOfStrings(const QString &one, const QString &other); QUrl qz_makeRelativeUrl(const QUrl &baseUrl, const QUrl &rUrl); QString qz_ensureUniqueFilename(const QString &name); +QString qz_getFileNameFromUrl(const QUrl &url); QString qz_buildSystem(); #endif // GLOBALFUNCTIONS_H diff --git a/src/webview/siteinfo.cpp b/src/webview/siteinfo.cpp index 05ab7f4d..d287a1d2 100644 --- a/src/webview/siteinfo.cpp +++ b/src/webview/siteinfo.cpp @@ -1,219 +1,218 @@ /* ============================================================ * QupZilla - WebKit based browser * Copyright (C) 2010-2011 David Rosca * * 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 3 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, see . * ============================================================ */ #include "siteinfo.h" #include "ui_siteinfo.h" #include "qupzilla.h" #include "webview.h" #include "webpage.h" #include "downloaditem.h" #include "certificateinfowidget.h" +#include "globalfunctions.h" +#include "iconprovider.h" QString SiteInfo::showCertInfo(const QString &string) { if (string.isEmpty()) return tr(""); else return string; } SiteInfo::SiteInfo(QupZilla* mainClass, QWidget* parent) : QDialog(parent) , ui(new Ui::SiteInfo) , p_QupZilla(mainClass) , m_certWidget(0) { ui->setupUi(this); WebView* view = p_QupZilla->weView(); QWebFrame* frame = view->page()->mainFrame(); QString title = view->title(); QSslCertificate cert = view->webPage()->sslCertificate(); //GENERAL ui->heading->setText(QString("%1:").arg(title)); ui->siteAddress->setText(frame->baseUrl().toString()); ui->sizeLabel->setText( DownloadItem::fileSizeToString(view->webPage()->totalBytes()) ); QString encoding; //Meta QWebElementCollection meta = frame->findAllElements("meta"); for (int i = 0; itreeImages); item->setText(0, alt); item->setText(1, src); ui->treeImages->addTopLevelItem(item); } //SECURITY if (cert.isValid()) { ui->securityLabel->setText(tr("Connection is Encrypted.")); ui->certLabel->setText(tr("Your connection to this page is secured with this certificate: ")); m_certWidget = new CertificateInfoWidget(cert); ui->certFrame->addWidget(m_certWidget); } else { ui->securityLabel->setText(tr("Connection Not Encrypted.")); ui->certLabel->setText(tr("Your connection to this page is not secured!")); } connect(ui->listWidget, SIGNAL(currentItemChanged(QListWidgetItem*,QListWidgetItem*)), this, SLOT(itemChanged(QListWidgetItem*))); connect(ui->secDetailsButton, SIGNAL(clicked()), this, SLOT(securityDetailsClicked())); connect(ui->treeImages, SIGNAL(currentItemChanged(QTreeWidgetItem*,QTreeWidgetItem*)), this, SLOT(showImagePreview(QTreeWidgetItem*))); ui->treeImages->setContextMenuPolicy(Qt::CustomContextMenu); connect(ui->treeImages, SIGNAL(customContextMenuRequested(const QPoint&)), this, SLOT(imagesCustomContextMenuRequested(const QPoint&))); } void SiteInfo::imagesCustomContextMenuRequested(const QPoint& p) { QTreeWidgetItem* item = ui->treeImages->itemAt(p); if (!item) return; QMenu menu; menu.addAction(QIcon::fromTheme("edit-copy"), tr("Copy Image Location"), this, SLOT(copyActionData()))->setData(item->text(1)); menu.addAction(tr("Copy Image Name"), this, SLOT(copyActionData()))->setData(item->text(0)); menu.addSeparator(); menu.addAction(QIcon::fromTheme("document-save"), tr("Save Image to Disk"), this, SLOT(downloadImage()))->setData(ui->treeImages->indexOfTopLevelItem(item)); menu.exec(QCursor::pos()); } void SiteInfo::copyActionData() { if (QAction* action = qobject_cast(sender())) { qApp->clipboard()->setText(action->data().toString()); } } void SiteInfo::downloadImage() { if (QAction* action = qobject_cast(sender())) { QTreeWidgetItem* item = ui->treeImages->topLevelItem(action->data().toInt()); if (!item) return; - QUrl imageUrl = item->text(1); - if (imageUrl.host().isEmpty()) { - imageUrl.setHost(QUrl(ui->siteAddress->text()).host()); - imageUrl.setScheme(QUrl(ui->siteAddress->text()).scheme()); - } - QIODevice* cacheData = mApp->networkCache()->data(imageUrl); - if (!cacheData) { + if (m_activePixmap.isNull()) { QMessageBox::warning(this, tr("Error!"), tr("This preview is not available!")); return; } - QString filePath = QFileDialog::getSaveFileName(this, tr("Save image..."), QDir::homePath()+"/"+item->text(0)); + QString imageFileName = qz_getFileNameFromUrl(QUrl(item->text(1))); + + QString filePath = QFileDialog::getSaveFileName(this, tr("Save image..."), QDir::homePath() + "/" + imageFileName); if (filePath.isEmpty()) return; - QFile file(filePath); - if (!file.open(QFile::WriteOnly)) { + if (!m_activePixmap.save(filePath)) { QMessageBox::critical(this, tr("Error!"), tr("Cannot write to file!")); return; } - file.write(cacheData->readAll()); - file.close(); } } void SiteInfo::showImagePreview(QTreeWidgetItem *item) { if (!item) return; QUrl imageUrl = item->text(1); - if (imageUrl.host().isEmpty()) { - imageUrl.setHost(QUrl(ui->siteAddress->text()).host()); - imageUrl.setScheme(QUrl(ui->siteAddress->text()).scheme()); - } - QIODevice* cacheData = mApp->networkCache()->data(imageUrl); - QPixmap pixmap; - bool invalidPixmap = false; QGraphicsScene* scene = new QGraphicsScene(ui->mediaPreview); - if (!cacheData) - invalidPixmap = true; + if (imageUrl.scheme() == "data") { + QByteArray encodedUrl = item->text(1).toAscii(); + QByteArray imageData = encodedUrl.mid(encodedUrl.indexOf(",") + 1); + m_activePixmap = qz_pixmapFromByteArray(imageData); + } else { - pixmap.loadFromData(cacheData->readAll()); - if (pixmap.isNull()) - invalidPixmap = true; + if (imageUrl.host().isEmpty()) { + imageUrl.setHost(QUrl(ui->siteAddress->text()).host()); + imageUrl.setScheme(QUrl(ui->siteAddress->text()).scheme()); + } + + QIODevice* cacheData = mApp->networkCache()->data(imageUrl); + if (!cacheData) + m_activePixmap = QPixmap(); + else + m_activePixmap.loadFromData(cacheData->readAll()); } - if (invalidPixmap) + + if (m_activePixmap.isNull()) scene->addText(tr("Preview not available")); else - scene->addPixmap(pixmap); + scene->addPixmap(m_activePixmap); ui->mediaPreview->setScene(scene); } void SiteInfo::securityDetailsClicked() { ui->listWidget->setCurrentRow(2); } void SiteInfo::itemChanged(QListWidgetItem *item) { if (!item) return; int index = item->whatsThis().toInt(); ui->stackedWidget->setCurrentIndex(index); } SiteInfo::~SiteInfo() { delete ui; if (m_certWidget) delete m_certWidget; } diff --git a/src/webview/siteinfo.h b/src/webview/siteinfo.h index 45dd7436..82cd3cf4 100644 --- a/src/webview/siteinfo.h +++ b/src/webview/siteinfo.h @@ -1,57 +1,59 @@ /* ============================================================ * QupZilla - WebKit based browser * Copyright (C) 2010-2011 David Rosca * * 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 3 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, see . * ============================================================ */ #ifndef SITEINFO_H #define SITEINFO_H #include #include #include #include namespace Ui { class SiteInfo; } class QupZilla; class CertificateInfoWidget; class SiteInfo : public QDialog { Q_OBJECT public: explicit SiteInfo(QupZilla* mainClass, QWidget* parent = 0); ~SiteInfo(); static QString showCertInfo(const QString &string); private slots: void itemChanged(QListWidgetItem* item); void showImagePreview(QTreeWidgetItem* item); void securityDetailsClicked(); void imagesCustomContextMenuRequested(const QPoint& p); void copyActionData(); void downloadImage(); private: Ui::SiteInfo* ui; QupZilla* p_QupZilla; CertificateInfoWidget* m_certWidget; + + QPixmap m_activePixmap; }; #endif // SITEINFO_H diff --git a/src/webview/webview.cpp b/src/webview/webview.cpp index be03a843..26e64372 100644 --- a/src/webview/webview.cpp +++ b/src/webview/webview.cpp @@ -1,841 +1,848 @@ /* ============================================================ * QupZilla - WebKit based browser * Copyright (C) 2010-2011 David Rosca * * 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 3 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, see . * ============================================================ */ #include "webview.h" #include "qupzilla.h" #include "webpage.h" #include "tabwidget.h" #include "historymodel.h" #include "locationbar.h" #include "downloadmanager.h" #include "networkmanager.h" #include "autofillmodel.h" #include "networkmanagerproxy.h" #include "networkmanager.h" #include "mainapplication.h" #include "tabbar.h" #include "pluginproxy.h" #include "iconprovider.h" #include "webtab.h" #include "statusbarmessage.h" #include "progressbar.h" #include "navigationbar.h" #include "searchenginesmanager.h" WebView::WebView(QupZilla* mainClass, WebTab* webTab) : QWebView(webTab) , p_QupZilla(mainClass) , m_aboutToLoadUrl(QUrl()) , m_lastUrl(QUrl()) , m_progress(0) , m_currentZoom(100) , m_page(new WebPage(this, p_QupZilla)) , m_webTab(webTab) , m_locationBar(0) , m_mouseTrack(false) , m_navigationVisible(false) , m_mouseWheelEnabled(true) , m_wantsClose(false) , m_isLoading(false) , m_hasRss(false) , m_rssChecked(false) // , m_loadingTimer(0) { m_networkProxy = new NetworkManagerProxy(p_QupZilla); m_networkProxy->setPrimaryNetworkAccessManager(mApp->networkManager()); m_networkProxy->setPage(m_page) ; m_networkProxy->setView(this); m_page->setNetworkAccessManager(m_networkProxy); m_page->setView(this); setPage(m_page); connect(this, SIGNAL(loadStarted()), this, SLOT(loadStarted())); connect(this, SIGNAL(loadProgress(int)), this, SLOT(setProgress(int))); connect(this, SIGNAL(loadFinished(bool)), this, SLOT(loadFinished(bool))); connect(this, SIGNAL(linkClicked(QUrl)), this, SLOT(linkClicked(QUrl))); connect(this, SIGNAL(urlChanged(QUrl)), this, SLOT(urlChanged(QUrl))); connect(this, SIGNAL(titleChanged(QString)), this, SLOT(titleChanged())); connect(this, SIGNAL(iconChanged()), this, SLOT(slotIconChanged())); connect(this, SIGNAL(statusBarMessage(QString)), p_QupZilla->statusBar(), SLOT(showMessage(QString))); connect(page(), SIGNAL(linkHovered(QString, QString, QString)), this, SLOT(linkHovered(QString, QString, QString))); connect(page(), SIGNAL(windowCloseRequested()), this, SLOT(closeTab())); connect(page(), SIGNAL(downloadRequested(const QNetworkRequest &)), this, SLOT(downloadRequested(const QNetworkRequest &))); connect(mApp->networkManager(), SIGNAL(finishLoading(bool)), this, SLOT(loadFinished(bool))); connect(mApp->networkManager(), SIGNAL(wantsFocus(QUrl)), this, SLOT(getFocus(QUrl))); connect(p_QupZilla, SIGNAL(setWebViewMouseTracking(bool)), this, SLOT(trackMouse(bool))); // Tracking mouse also on tabs created in fullscreen trackMouse(p_QupZilla->isFullScreen()); // Zoom levels same as in firefox m_zoomLevels << 30 << 50 << 67 << 80 << 90 << 100 << 110 << 120 << 133 << 150 << 170 << 200 << 240 << 300; // Set default zoom m_currentZoom = mApp->defaultZoom(); applyZoom(); } void WebView::slotIconChanged() { m_siteIcon = icon(); if (url().toString().contains("file://") || title().contains(tr("Failed loading page"))) return; mApp->iconProvider()->saveIcon(this); } WebPage* WebView::webPage() const { return m_page; } void WebView::back() { if (page()) { emit ipChanged(m_currentIp); p_QupZilla->navigationBar()->goBack(); } } void WebView::forward() { if (page()) { emit ipChanged(m_currentIp); p_QupZilla->navigationBar()->goForward(); } } void WebView::slotReload() { if (page()) { emit ipChanged(m_currentIp); page()->triggerAction(QWebPage::Reload); } } WebTab* WebView::webTab() const { return m_webTab; } bool WebView::isCurrent() { if (!tabWidget()) return false; WebTab* webTab = qobject_cast(tabWidget()->widget(tabWidget()->currentIndex())); if (!webTab) return false; return (webTab->view() == this); } void WebView::urlChanged(const QUrl &url) { if (isCurrent()) p_QupZilla->navigationBar()->refreshHistory(); if (m_lastUrl != url) emit changed(); emit showUrl(url); } void WebView::linkClicked(const QUrl &url) { load(url); } void WebView::setProgress(int prog) { m_progress = prog; if (prog > 60) checkRss(); if (isCurrent()) { p_QupZilla->ipLabel()->hide(); p_QupZilla->progressBar()->setVisible(true); p_QupZilla->progressBar()->setValue(m_progress); p_QupZilla->navigationBar()->showStopButton(); } } void WebView::loadStarted() { m_progress = 0; m_isLoading = true; m_rssChecked = false; emit rssChanged(false); animationLoading(tabIndex(),true); if (title().isNull()) tabWidget()->setTabText(tabIndex(),tr("Loading...")); m_currentIp.clear(); // if (m_loadingTimer) // delete m_loadingTimer; // m_loadingTimer = new QTimer(); // connect(m_loadingTimer, SIGNAL(timeout()), this, SLOT(stopAnimation())); // m_loadingTimer->start(1000*20); //20 seconds timeout to automatically "stop" loading animation } QLabel* WebView::animationLoading(int index, bool addMovie) { if (-1 == index) return 0; QLabel* loadingAnimation = qobject_cast(tabWidget()->getTabBar()->tabButton(index, QTabBar::LeftSide)); if (!loadingAnimation) { loadingAnimation = new QLabel(); loadingAnimation->setStyleSheet("margin: 0px; padding: 0px; width: 16px; height: 16px;"); } if (addMovie && !loadingAnimation->movie()) { QMovie* movie = new QMovie(":icons/other/progress.gif", QByteArray(), loadingAnimation); movie->setSpeed(70); loadingAnimation->setMovie(movie); movie->start(); } else if (loadingAnimation->movie()) loadingAnimation->movie()->stop(); tabWidget()->getTabBar()->setTabButton(index, QTabBar::LeftSide, 0); tabWidget()->getTabBar()->setTabButton(index, QTabBar::LeftSide, loadingAnimation); return loadingAnimation; } void WebView::stopAnimation() { //m_loadingTimer->stop(); QMovie* mov = animationLoading(tabIndex(), false)->movie(); if (mov) { mov->stop(); iconChanged(); } } void WebView::setIp(const QHostInfo &info) { if (info.addresses().isEmpty()) return; m_currentIp = info.hostName() + " ("+info.addresses().at(0).toString()+")"; if (isCurrent()) emit ipChanged(m_currentIp); } void WebView::loadFinished(bool state) { Q_UNUSED(state); if (mApp->isClosing() || p_QupZilla->isClosing()) return; if (animationLoading(tabIndex(), false)->movie()) animationLoading(tabIndex(), false)->movie()->stop(); m_isLoading = false; if (m_lastUrl != url()) mApp->history()->addHistoryEntry(this); emit showUrl(url()); iconChanged(); m_lastUrl = url(); //Icon is sometimes not available at the moment of finished loading if (icon().isNull()) QTimer::singleShot(1000, this, SLOT(iconChanged())); titleChanged(); mApp->autoFill()->completePage(this); QHostInfo::lookupHost(url().host(), this, SLOT(setIp(QHostInfo))); if (isCurrent()) { p_QupZilla->progressBar()->setVisible(false); p_QupZilla->navigationBar()->showReloadButton(); p_QupZilla->ipLabel()->show(); } emit urlChanged(url()); } void WebView::titleChanged() { QString title_ = title(); QString title2 = title_; tabWidget()->setTabToolTip(tabIndex(),title2); title2 += " - QupZilla"; if (isCurrent()) p_QupZilla->setWindowTitle(title2); tabWidget()->setTabText(tabIndex(), title_); } void WebView::iconChanged() { if (mApp->isClosing() || p_QupZilla->isClosing()) return; // if (isCurrent()) emit siteIconChanged(); if (m_isLoading) return; QIcon icon_ = siteIcon(); if (!icon_.isNull()) animationLoading(tabIndex(), false)->setPixmap(icon_.pixmap(16,16)); else animationLoading(tabIndex(), false)->setPixmap(IconProvider::fromTheme("text-plain").pixmap(16,16)); } QIcon WebView::siteIcon() { if (!icon().isNull()) return icon(); if (!m_siteIcon.isNull()) return m_siteIcon; return _iconForUrl(url()); } void WebView::linkHovered(const QString &link, const QString &title, const QString &content) { Q_UNUSED(title); Q_UNUSED(content); if (isCurrent()) { if (link!="") p_QupZilla->statusBarMessage()->showMessage(link); else p_QupZilla->statusBarMessage()->clearMessage(); } m_hoveredLink = link; } TabWidget* WebView::tabWidget() const { QObject* widget = this->parent(); while (widget) { if (TabWidget* tw = qobject_cast(widget)) return tw; widget = widget->parent(); } return 0; } int WebView::tabIndex() const { TabWidget* tabWid = tabWidget(); if (!tabWid) return -1; int i = 0; while(qobject_cast(tabWid->widget(i))->view()!=this) { i++; } return i; } QUrl WebView::guessUrlFromString(const QString &string) { QString trimmedString = string.trimmed(); // Check the most common case of a valid url with scheme and host first QUrl url = QUrl::fromEncoded(trimmedString.toUtf8(), QUrl::TolerantMode); if (url.isValid() && !url.scheme().isEmpty() && !url.host().isEmpty()) return url; // Absolute files that exists if (QDir::isAbsolutePath(trimmedString) && QFile::exists(trimmedString)) return QUrl::fromLocalFile(trimmedString); // If the string is missing the scheme or the scheme is not valid prepend a scheme QString scheme = url.scheme(); if (scheme.isEmpty() || scheme.contains(QLatin1Char('.')) || scheme == QLatin1String("localhost")) { // Do not do anything for strings such as "foo", only "foo.com" int dotIndex = trimmedString.indexOf(QLatin1Char('.')); if (dotIndex != -1 || trimmedString.startsWith(QLatin1String("localhost"))) { const QString hostscheme = trimmedString.left(dotIndex).toLower(); QByteArray scheme = (hostscheme == QLatin1String("ftp")) ? "ftp" : "http"; trimmedString = QLatin1String(scheme) + QLatin1String("://") + trimmedString; } url = QUrl::fromEncoded(trimmedString.toUtf8(), QUrl::TolerantMode); } if (url.isValid()) return url; return QUrl(); } void WebView::checkRss() { if (m_rssChecked) return; m_rssChecked = true; QWebFrame* frame = page()->mainFrame(); QWebElementCollection links = frame->findAllElements("link[type=\"application/rss+xml\"]"); m_hasRss = links.count() != 0; emit rssChanged(m_hasRss); } void WebView::mousePressEvent(QMouseEvent* event) { switch (event->button()) { case Qt::XButton1: back(); break; case Qt::XButton2: forward(); break; case Qt::MiddleButton: if (isUrlValid(QUrl(m_hoveredLink))) tabWidget()->addView(QUrl::fromEncoded(m_hoveredLink.toAscii()),tr("New tab"), TabWidget::NewNotSelectedTab); #ifdef Q_WS_WIN else QWebView::mouseDoubleClickEvent(event); #endif break; case Qt::LeftButton: if (event->modifiers() == Qt::ControlModifier && isUrlValid(QUrl(m_hoveredLink))) { tabWidget()->addView(QUrl::fromEncoded(m_hoveredLink.toAscii()),tr("New tab"), TabWidget::NewNotSelectedTab); return; } default: QWebView::mousePressEvent(event); break; } } void WebView::resizeEvent(QResizeEvent *event) { QWebView::resizeEvent(event); emit viewportResized(m_page->viewportSize()); } void WebView::mouseReleaseEvent(QMouseEvent* event) { //Workaround for crash in mouseReleaseEvent when closing tab from javascript :/ if (!m_wantsClose) QWebView::mouseReleaseEvent(event); } void WebView::keyPressEvent(QKeyEvent* event) { switch (event->key()) { case Qt::Key_Back: back(); event->accept(); break; case Qt::Key_Forward: forward(); event->accept(); break; case Qt::Key_Stop: stop(); event->accept(); break; case Qt::Key_Refresh: reload(); event->accept(); break; default: QWebView::keyPressEvent(event); return; } } void WebView::mouseMoveEvent(QMouseEvent *event) { if (m_mouseTrack) { if (m_navigationVisible) { m_navigationVisible = false; p_QupZilla->showNavigationWithFullscreen(); } else if (event->y() < 5) { m_navigationVisible = true; p_QupZilla->showNavigationWithFullscreen(); } } QWebView::mouseMoveEvent(event); } void WebView::contextMenuEvent(QContextMenuEvent* event) { QMenu* menu = new QMenu(this); QWebHitTestResult r = page()->mainFrame()->hitTestContent(event->pos()); if (!r.linkUrl().isEmpty() && r.linkUrl().scheme()!="javascript") { if (page()->selectedText() == r.linkText()) findText(""); menu->addAction(QIcon(":/icons/menu/popup.png"), tr("Open link in new &tab"), this, SLOT(openUrlInNewTab()))->setData(r.linkUrl()); menu->addAction(tr("Open link in new &window"), this, SLOT(openUrlInNewWindow()))->setData(r.linkUrl()); menu->addSeparator(); menu->addAction(IconProvider::fromTheme("user-bookmarks"), tr("B&ookmark link"), this, SLOT(bookmarkLink()))->setData(r.linkUrl()); menu->addAction(QIcon::fromTheme("document-save"), tr("&Save link as..."), this, SLOT(downloadLinkToDisk()))->setData(r.linkUrl()); menu->addAction(tr("Send link..."), this, SLOT(sendLinkByMail()))->setData(r.linkUrl()); menu->addAction(QIcon::fromTheme("edit-copy"), tr("&Copy link address"), this, SLOT(copyLinkToClipboard()))->setData(r.linkUrl()); menu->addSeparator(); if (!selectedText().isEmpty()) menu->addAction(pageAction(QWebPage::Copy)); } if (!r.imageUrl().isEmpty()) { if (!menu->isEmpty()) menu->addSeparator(); menu->addAction(tr("Show i&mage"), this, SLOT(showImage()))->setData(r.imageUrl()); menu->addAction(tr("Copy im&age"), this, SLOT(copyImageToClipboard()))->setData(r.imageUrl()); menu->addAction(QIcon::fromTheme("edit-copy"), tr("Copy image ad&dress"), this, SLOT(copyLinkToClipboard()))->setData(r.imageUrl()); menu->addSeparator(); menu->addAction(QIcon::fromTheme("document-save"), tr("&Save image as..."), this, SLOT(downloadImageToDisk()))->setData(r.imageUrl()); menu->addAction(tr("Send image..."), this, SLOT(sendLinkByMail()))->setData(r.linkUrl()); menu->addSeparator(); //menu->addAction(tr("Block image"), this, SLOT(blockImage()))->setData(r.imageUrl().toString()); if (!selectedText().isEmpty()) menu->addAction(pageAction(QWebPage::Copy)); } QWebElement element = r.element(); if (!element.isNull() && (element.tagName().toLower() == "input" || element.tagName().toLower() == "textarea")) { if (menu->isEmpty()) { delete menu; menu = page()->createStandardContextMenu(); } } if (menu->isEmpty()) { QAction* action = menu->addAction(tr("&Back"), this, SLOT(back())); action->setIcon(IconProvider::standardIcon(QStyle::SP_ArrowBack)); history()->canGoBack() ? action->setEnabled(true) : action->setEnabled(false); action = menu->addAction(tr("&Forward"), this, SLOT(forward())); action->setIcon(IconProvider::standardIcon(QStyle::SP_ArrowForward)); history()->canGoForward() ? action->setEnabled(true) : action->setEnabled(false); menu->addAction(IconProvider::standardIcon(QStyle::SP_BrowserReload), tr("&Reload"), this, SLOT(slotReload())); action = menu->addAction(IconProvider::standardIcon(QStyle::SP_BrowserStop), tr("S&top"), this, SLOT(stop())); isLoading() ? action->setEnabled(true) : action->setEnabled(false); menu->addSeparator(); menu->addAction(IconProvider::fromTheme("user-bookmarks"), tr("Book&mark page"), this, SLOT(bookmarkLink())); menu->addAction(QIcon::fromTheme("document-save"), tr("&Save page as..."), this, SLOT(downloadLinkToDisk()))->setData(url()); menu->addAction(tr("Send page..."), this, SLOT(sendLinkByMail()))->setData(url()); menu->addSeparator(); menu->addAction(QIcon::fromTheme("edit-select-all"), tr("Select &all"), this, SLOT(selectAll())); if (!selectedText().isEmpty()) menu->addAction(pageAction(QWebPage::Copy)); menu->addSeparator(); menu->addAction(QIcon::fromTheme("text-html"),tr("Show so&urce code"), this, SLOT(showSource())); menu->addAction(QIcon::fromTheme("dialog-information"),tr("Show info ab&out site"), this, SLOT(showSiteInfo()))->setData(url()); menu->addAction(tr("Show Web &Inspector"), this, SLOT(showInspector())); } mApp->plugins()->populateWebViewMenu(menu, this, r); if (!selectedText().isEmpty()) { menu->addSeparator(); QString selectedText = page()->selectedText(); selectedText.truncate(20); SearchEngine engine = mApp->searchEnginesManager()->activeEngine(); menu->addAction(engine.icon, tr("Search \"%1 ..\" with %2").arg(selectedText, engine.name), this, SLOT(searchSelectedText())); } #if QT_VERSION == 0x040800 // if (!selectedHtml().isEmpty()) // menu->addAction(tr("Show source of selection"), this, SLOT(showSourceOfSelection())); #endif if (!menu->isEmpty()) { //Prevent choosing first option with double rightclick QPoint pos = QCursor::pos(); QPoint p(pos.x(), pos.y()+1); menu->exec(p); delete menu; return; } QWebView::contextMenuEvent(event); } void WebView::stop() { if (page()) { emit ipChanged(m_currentIp); page()->triggerAction(QWebPage::Stop); loadFinished(true); if (m_locationBar->text().isEmpty()) m_locationBar->setText(url().toEncoded()); } } void WebView::addNotification(QWidget* notif) { emit showNotification(notif); } void WebView::openUrlInNewTab() { if (QAction* action = qobject_cast(sender())) { tabWidget()->addView(action->data().toUrl(), tr("New tab"), TabWidget::NewNotSelectedTab); } } void WebView::openUrlInNewWindow() { if (QAction* action = qobject_cast(sender())) { mApp->makeNewWindow(false, action->data().toString()); } } void WebView::sendLinkByMail() { if (QAction* action = qobject_cast(sender())) { QDesktopServices::openUrl(QUrl("mailto:?body="+action->data().toString())); } } void WebView::copyLinkToClipboard() { if (QAction* action = qobject_cast(sender())) { QApplication::clipboard()->setText(action->data().toString()); } } void WebView::searchSelectedText() { SearchEngine engine = mApp->searchEnginesManager()->activeEngine(); load(engine.url.replace("%s", selectedText())); } void WebView::selectAll() { triggerPageAction(QWebPage::SelectAll); } void WebView::downloadImageToDisk() { if (QAction* action = qobject_cast(sender())) { DownloadManager* dManager = mApp->downManager(); QNetworkRequest request(action->data().toUrl()); dManager->download(request, false); } } void WebView::copyImageToClipboard() { triggerPageAction(QWebPage::CopyImageToClipboard); } void WebView::showImage() { if (QAction* action = qobject_cast(sender())) { load(QUrl(action->data().toString())); } } void WebView::showSource() { p_QupZilla->showSource(); } #if QT_VERSION == 0x040800 void WebView::showSourceOfSelection() { p_QupZilla->showSource(selectedHtml()); } #endif void WebView::downloadLinkToDisk() { if (QAction* action = qobject_cast(sender())) { QNetworkRequest request(action->data().toUrl()); DownloadManager* dManager = mApp->downManager(); dManager->download(request, false); } } void WebView::downloadRequested(const QNetworkRequest &request) { DownloadManager* dManager = mApp->downManager(); dManager->download(request); } void WebView::bookmarkLink() { if (QAction* action = qobject_cast(sender())) { if (action->data().isNull()) p_QupZilla->bookmarkPage(); else p_QupZilla->addBookmark(action->data().toUrl(), action->data().toString(), siteIcon()); } } void WebView::showInspector() { p_QupZilla->showWebInspector(); } void WebView::showSiteInfo() { p_QupZilla->showPageInfo(); } void WebView::applyZoom() { setZoomFactor(qreal(m_currentZoom) / 100.0); } void WebView::zoomIn() { int i = m_zoomLevels.indexOf(m_currentZoom); if (i < m_zoomLevels.count() - 1) m_currentZoom = m_zoomLevels[i + 1]; applyZoom(); } void WebView::zoomOut() { int i = m_zoomLevels.indexOf(m_currentZoom); if (i > 0) m_currentZoom = m_zoomLevels[i - 1]; applyZoom(); } void WebView::zoomReset() { m_currentZoom = 100; applyZoom(); } void WebView::wheelEvent(QWheelEvent* event) { if (event->modifiers() & Qt::ControlModifier) { int numDegrees = event->delta() / 8; int numSteps = numDegrees / 15; if (numSteps == 1) zoomIn(); else zoomOut(); event->accept(); return; } if (m_mouseWheelEnabled) QWebView::wheelEvent(event); } void WebView::getFocus(const QUrl &urla) { if (urla == url()) tabWidget()->setCurrentWidget(this); } void WebView::closeTab() { if (m_wantsClose) emit wantsCloseTab(tabIndex()); else { m_wantsClose = true; QTimer::singleShot(20, this, SLOT(closeTab())); } } void WebView::load(const QUrl &url) { if (url.scheme() == "javascript") { page()->mainFrame()->evaluateJavaScript(url.toString()); return; } + + if (url.scheme() == "data") { + QWebView::load(url); + m_aboutToLoadUrl = url; + return; + } + if (isUrlValid(url)) { QWebView::load(url); m_aboutToLoadUrl = url; return; } #ifdef Q_WS_WIN if (QFile::exists(url.path().mid(1))) // From QUrl(file:///C:/Bla/ble/foo.html it returns // /C:/Bla/ble/foo.html ... so we cut first char #else if (QFile::exists(url.path())) #endif QWebView::load(url); else { SearchEngine engine = mApp->searchEnginesManager()->activeEngine(); QString urlString = engine.url.replace("%s", url.toString()); QWebView::load(QUrl(urlString)); m_locationBar->setText(urlString); } } QUrl WebView::url() const { QUrl ur = QWebView::url(); if (ur.isEmpty() && !m_aboutToLoadUrl.isEmpty()) return m_aboutToLoadUrl; return ur; } QString WebView::title() const { QString title = QWebView::title(); if (title.isEmpty()) title = url().host(); if (title.isEmpty()) title = url().path(); if (title.isEmpty()) return tr("No Named Page"); return title; } void WebView::reload() { if (QWebView::url().isEmpty() && !m_aboutToLoadUrl.isEmpty()) { // qDebug() << "loading about to load"; load(m_aboutToLoadUrl); return; } QWebView::reload(); } bool WebView::isUrlValid(const QUrl &url) { if (url.scheme() == "qupzilla") return true; if (url.isValid() && !url.host().isEmpty() && !url.scheme().isEmpty()) return true; return false; } WebView::~WebView() { history()->clear(); delete m_page; } diff --git a/translations/de_DE.ts b/translations/de_DE.ts index b78a0cb6..1128c979 100644 --- a/translations/de_DE.ts +++ b/translations/de_DE.ts @@ -1,4354 +1,4354 @@ AboutDialog About QupZilla Über QupZilla <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html40/strict.dtd"> <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Ubuntu'; font-size:10pt; font-weight:400; font-style:normal;"> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> Authors Autoren Authors and Contributors Autoren und Mitwirkende < About QupZilla < Über QupZilla <p><b>Application version %1</b><br/> <p><b>QupZilla Version: %1</b><br/> <b>WebKit version %1</b></p> <b>WebKit Version: %1</b></p> <p>&copy; %1 %2<br/>All rights reserved.<br/> <p>&copy; %1 %2<br/>Alle Rechte vorbehalten.<br/> <small>Build time: %1 </small></p> <small>Kompiliert am: %1 </small></p> <p><b>Main developers:</b><br/>%1 &lt;%2&gt;</p> <p><b>Hauptentwickler:</b><br/>%1 &lt;%2&gt;</p> <p><b>Contributors:</b><br/>%1</p> <p><b>Mitwirkende:</b><br/>%1</p> <p><b>Translators:</b><br/>%1</p> <p><b>Übersetzer:</b><br/>%1</p> AcceptLanguage Preferred Languages Bevorzugte Sprache Add... Hinzufügen... Remove Entfernen Up Nach oben Down Nach unten Personal [%1] Eigene [%1] AdBlockDialog AdBlock Configuration AdBlock Konfiguration Enable AdBlock AdBlock aktivieren Search... Suchen... Rule Regel Add Rule Regel hinzufügen Update EasyList EasyList aktualisieren AdBlock AdBlock Delete Rule Regel löschen Update completed Aktualisierung beendet EasyList has been successfully updated. EasyList wurde erfolgreich aktualisiert. Custom Rules Benutzerdefinierte Regeln Add Custom Rule Benutzerdefinierte Regel hinzufügen Please write your rule here: Bitte Regel hier eintragen: AdBlockIcon AdBlock let you block any unwanted content on pages AdBlock blockiert unerwünschte Seiteninhalte Show AdBlock &Settings AdBlock &Einstellungen anzeigen No content blocked Keine Seiteninhalte geblockt Blocked URL (AdBlock Rule) - click to edit rule Geblockte URL (AdBlock Regel) - zum Bearbeiten anklicken %1 with (%2) %1 mit (%2) Learn About Writing &Rules Hilfe zur &Regelerstellung New tab Neuer Tab AddAcceptLanguage Add Language Sprache hinzufügen Choose preferred language for web sites Bevorzugte Sprache für Webseiten festlegen Personal definition: Eigene Definition: AutoFillManager Passwords Passwörter Server Server Password Passwort Remove Entfernen Edit Bearbeiten Remove All Alle entfernen Show Passwords Passwörter im Klartext anzeigen Exceptions Ausnahmen Are you sure that you want to show all passwords? Sind Sie sicher, dass Sie alle Passwörter im Klartext anzeigen wollen? Confirmation Bestätigung Are you sure to delete all passwords on your computer? Möchten Sie wirklich alle Passwörter auf diesem Computer löschen? Edit password Passwort bearbeiten Change password: Passwort ändern: AutoFillNotification Do you want QupZilla to remember password on %1? Möchten Sie das Passwort für %1 speichern? AutoFillWidget Remember Erinnern Never For This Site Nie für diese Seite Not Now Nicht jetzt BookmarkIcon Bookmark this Page Ein Lesezeichen für diese Seite hinzufügen Edit this bookmark Dieses Lesezeichen bearbeiten BookmarksImportDialog Import Bookmarks Lesezeichen importieren <b>Import Bookmarks</b> <b>Lesezeichen importieren</b> Choose browser from which you want to import bookmarks: Bitte Browser auswählen, von dem Lesezeichen importiert werden sollen: Choose... Wählen... Fetching icons, please wait... Hole Symbole, bitte warten Sie... Title Titel Url Url Next Weiter Cancel Abbrechen <b>Importing from %1</b> <b>Importiere von %1</b> Finish Ende Error! Fehler! Choose directory... Verzeichnis wählen... Choose file... Datei wählen... Mozilla Firefox stores its bookmarks in <b>places.sqlite</b> SQLite database. This file is usually located in Mozilla Firefox speichert die Lesezeichen in der Datei <b>places.sqlite</b>. Diese ist gewöhnlich gespeichert unter Google Chrome stores its bookmarks in <b>Bookmarks</b> text file. This file is usually located in Google Chrome speichert die Lesezeichen in der Datei <b>Bookmarks</b>. Diese ist gewöhnlich gespeichert unter Opera stores its bookmarks in <b>bookmarks.adr</b> text file. This file is usually located in Opera speichert die Lesezeichen in der Datei <b>bookmarks.adr</b>. Diese ist gewöhnlich gespeichert unter Internet Explorer stores its bookmarks in <b>Favorites</b> folder. This folder is usually located in Internet Explorer speichert die Lesezeichen im <b>Favorites</b> Ordner. Dieser Ordner ist gewöhnlich zu finden unter Please choose this file to begin importing bookmarks. Bitte wählen Sie diese Datei, um mit dem Import zu beginnen. Please choose this folder to begin importing bookmarks. Bitte wählen Sie diesen Ordner, um mit dem Import zu beginnen. BookmarksManager Bookmarks Lesezeichen Title Titel Url Url Rename Folder Ordner umbenennen Delete Löschen Del Entf Add Folder Ordner hinzufügen Optimize Database Datenbank optimieren Add Subfolder Unterordner hinzufügen Add new folder Neuen Ordner hinzufügen Choose name for new bookmark folder: Namen für neues Lesezeichen angeben: New Tab Neuer Tab Bookmarks In Menu Lesezeichen im Menü Bookmarks In ToolBar Lesezeichen in Werkzeug-Leiste Open link in actual &tab Link in &aktuellem Tab öffnen Add new subfolder Neuen Unterordner hinzufügen Choose name for new subfolder in bookmarks toolbar: Namen für neuen Unterordner in Lesezeichen-Leiste auswählen: Choose name for folder: Namen für Ordner auswählen: Open link in &new tab Link in &neuem Tab öffnen Move bookmark to &folder Lesezeichen in &Ordner verschieben Unsorted Bookmarks Unsortierte Lesezeichen <b>Warning: </b>You already have this page bookmarked! <b>Warnung: </b>Diese Lesezeichen haben Sie bereits hinzugefügt! Choose name and location of bookmark. Namen und Speicherort für Lesezeichen auswählen. Add New Bookmark Neues Lesezeichen hinzufügen Choose folder for bookmarks: Ordner für Lesezeichen auswählen: Bookmark All Tabs Lesezeichen für alle geöffneten Tabs hinzufügen BookmarksModel Bookmarks In Menu Lesezeichen im Menü Bookmarks In ToolBar Lesezeichen in Werkzeug-Leiste Unsorted Bookmarks Unsortierte Lesezeichen BookmarksSideBar Search... Suchen... New Tab Neuer Tab Open link in actual &tab Link in &aktuellem Tab öffnen Open link in &new tab Link in &neuem Tab öffnen Copy address Link-Adresse kopieren Bookmarks In Menu Lesezeichen im Menü &Delete &Löschen BookmarksToolbar &Bookmark Current Page Lesezeichen für &aktuelle Seite hinzufügen Bookmark &All Tabs Lesezeichen für alle &geöffneten Tabs hinzufügen &Organize Bookmarks Bookmarks &bearbeiten Hide Most &Visited Meistbesuchte &verstecken Show Most &Visited Meistbesuchte &anzeigen &Hide Toolbar &Werkzeugleiste verstecken Move right Nach rechts Move left Nach links Remove bookmark Lesezeichen entfernen Most visited Meistbesuchte Sites you visited the most Meistbesuchte Seiten Empty Leer BookmarksWidget Edit This Bookmark Dieses Lesezeichen bearbeiten Remove Bookmark Lesezeichen entfernen Name: Name: Folder: Ordner: Save Speichern Close Schließen Bookmarks In Menu Lesezeichen im Menü Bookmarks In ToolBar Lesezeichen in Werkzeug-Leiste Unsorted Bookmarks Unsortierte Lesezeichen BrowsingLibrary Library Bibliothek Search... Suchen... History Verlauf Bookmarks Lesezeichen RSS RSS Database Optimized Datenbank optimiert Database successfully optimized.<br/><br/><b>Database Size Before: </b>%1<br/><b>Database Size After: </b>%2 - + Datenbank erfolgreich optimiert.<br/><br/><b>Datenbankgröße vorher: </b>%1<br/><b>Datenbankgröße nachher: </b>%2 CertificateInfoWidget <b>Issued To</b> <b>Ausgestellt für</b> Common Name (CN): Allgemeiner Name (CN): Organization (O): Organisation (O): Organizational Unit (OU): Organisationseinheit (OU): Serial Number: Seriennummer: <b>Issued By</b> <b>Ausgestellt von</b> <b>Validity</b> <b>Gültigkeit</b> Issued On: Ausgestellt für: Expires On: Verfällt am: <not set in certificate> <Im Zertifkat nicht vorhanden> ChromeImporter No Error Kein Fehler Unable to open file. Datei kann nicht geöffnet werden. Cannot evaluate JSON code. JSON Format kann nicht ausgewertet werden. ClearPrivateData Clear Recent History Verlauf löschen Choose what you want to delete: Zu löschende Elemente wählen: Clear history Verlauf löschen Clear cookies Cookies löschen Clear cache Cache löschen Clear icons Symbole löschen Clear cookies from Adobe Flash Player Cookies vom Adobe Flash Player löschen <b>Clear Recent History</b> <b>Aktuellen Verlauf löschen</b> Later Today Später Week Woche Month Monat All Alle ClickToFlash Object blocked by ClickToFlash Objekt blockiert von ClickToFlash Show more informations about object Mehr Informationen anzeigen Delete object Objekt löschen Add %1 to whitelist %1 zur Whitelist hinzufügen Flash Object Flash Objekt <b>Attribute Name</b> <b>Attribut Name</b> <b>Value</b> <b>Wert</b> No more informations available. Keine weiteren Informationen verfügbar. CloseDialog There are still open tabs Es sind noch Tabs geöffnet Don't ask again Nicht mehr fragen CookieManager Cookies Cookies Find: Suche: These cookies are stored on your computer: Folgende Cookies sind auf Ihrem Computer gespeichert: Server Server Cookie name Name des Cookies Name: Name: Value: Wert: Server: Server: Path: Pfad: Secure: Sicher: Expiration: Ablaufdatum: <cookie not selected> <Cookie nicht ausgewählt> Remove all cookies Alle Cookies löschen Remove cookie Ausgewählten Cookie löschen Search Suchen Confirmation Bestätigung Are you sure to delete all cookies on your computer? Möchten Sie wirklich alle auf Ihrem Computer gespeicherten Cookies löschen? Remove cookies Cookies löschen Secure only Nur sichere All connections Alle Verbindungen Session cookie Sitzungscookie DownloadFileHelper Save file as... Datei speichern als... NoNameDownload NoNameDownload DownloadItem A Clockwork Orange.avi A Clockwork Orange.avi Remaining 26 minutes - 339MB of 693 MB (350kB/s) Verbleibende Zeit 26 Minuten - 339MB von 693 MB (350kB/s) Remaining time unavailable Verbleibende Zeit unbekannt Done - %1 Erledigt - %1 Cancelled Abgebrochen few seconds Wenige Sekunden seconds Sekunden minutes Minuten hours Stunden Unknown speed Downloadgeschwindigkeit unbekannt Unknown size Dateigröße unbekannt %2 - unknown size (%3) %2 - unbekannte Dateigröße (%3) Remaining %1 - %2 of %3 (%4) Verbleibend %1 - %2 von %3 (%4) Cancelled - %1 Abgebrochen - %1 Delete file Datei löschen Do you want to also delete dowloaded file? Möchten Sie auch die heruntergeladene Datei löschen? Open File Datei öffnen Open Folder Ordner öffnen Go to Download Page Gehe zu Link-Adresse Copy Download Link Link-Adresse kopieren Cancel downloading Download abbrechen Clear Leeren Error Fehler New tab Neuer Tab Not found Nicht gefunden Sorry, the file %1 was not found! Datei %1 konnte nicht gefunden werden! Error: Cannot write to file! Fehler: Datei kann nicht gespeichert werden! Error: Fehler: DownloadManager %1% of %2 files (%3) %4 remaining %1% von %2 Dateien (%3) %4 verbleiben % - Download Manager % - Download Manager Download Finished Download beendet All files have been successfully downloaded. Alle Dateien wurden erfolgreich heruntergeladen. Warning Warnung Are you sure to quit? All uncompleted downloads will be cancelled! Möchten Sie QupZilla wirklich beenden?Alle nicht beendeten Downloads werden abgebrochen! Download Manager Download Manager Clear Leeren DownloadOptionsDialog Opening Öffnen von which is a: vom Typ: from: von: What should QupZilla do with this file? Wie soll QupZilla mit dieser Datei verfahren? You have chosen to open Datei zum Öffnen ausgewählt Open... Öffnen... Save File Datei speichern Opening %1 Öffnen von %1 EditSearchEngine Name: Name: Url: Url: Shortcut: Verknüpfung: Icon: Symbol: <b>Note: </b>%s in url represent searched string <b>Hinweis: </b>%s in der URL entspricht der gesuchten Zeichenkette Add from file ... Von Datei hinzufügen ... Choose icon... Symbol auswählen... FirefoxImporter No Error Kein Fehler File does not exists. Datei existiert nicht. Unable to open database. Is Firefox running? Datenbank kann nicht geöffnet werden. Ist Firefox aktiv? HistoryManager History Verlauf Title Titel Url Url Delete Löschen Del Entf Clear All History Gesamten Verlauf löschen Optimize Database Datenbank optimieren New Tab Neuer Tab Open link in actual tab Link in aktuellem Tab öffnen Open link in new tab Link in neuem Tab öffnen Today Heute This Week Diese Woche This Month Dieser Monat Confirmation Bestätigung Are you sure to delete all history? Möchten Sie wirklich den gesamten Verlauf löschen? HistoryModel Failed loading page Seite konnte nicht geladen werden No Named Page Unbekannte Seite January Januar February Februar March März April April May Mai June Juni July Juli August August September September October Oktober November November December Dezember HistorySideBar Search... Suchen... Title Titel New Tab Neuer Tab Open link in actual tab Link in aktuellem Tab öffnen Open link in new tab Link in neuem Tab öffnen Copy address Link-Adresse kopieren Today Heute This Week Diese Woche This Month Dieser Monat LocationBar Show informations about this page Seiteninformationen anzeigen Add RSS from this page... RSS Feed von dieser Seite hinzufügen... Enter URL address or search on Google.com URL eingeben oder auf Google.com suchen .co.uk Append domain name on ALT key = Should be different for every country .de MainApplication Last session crashed Die letzte Sitzung wurde unerwartet beendet <b>QupZilla crashed :-(</b><br/>Oops, last session of QupZilla ends with its crash. We are very sorry. Would you try to restore saved state? <b>QupZilla ist abgestürzt :-(</b><br/>Hoppla,die letzte Sitzung wurde unerwartet beendet. Verzeihung. Möchten Sie den letzten Status wiederherstellen? NavigationBar Back Zurück Forward Vorwärts Home Startseite New Tab Neuer Tab Main Menu Hauptmenü Exit Fullscreen Vollbildmodus beenden Clear history Verlauf löschen NetworkManager SSL Certificate Error! SSL Zertifikatsfehler! The page you trying to access has following errors in SSL Certificate: Beim Laden dieser Seite sind folgende SSL Zertifikatsfehler aufgetreten:: <b>Organization: </b> <b>Organisation: </b> <b>Domain Name: </b> <b>Domänen-Name: </b> <b>Expiration Date: </b> <b>Ablaufdatum: </b> <b>Error: </b> <b>Fehler: </b> Would you like to make exception for this certificate? Möchten Sie eine Ausnahme für dieses Zertifkat zulassen? Authorization required Authentifizierung erforderlich Username: Nutzername: Password: Passwort: Save username and password on this site Nutzername und Passwort für diese Seite speichern A username and password are being requested by %1. The site says: "%2" Bitte Nutzername und Passwort zur Anmeldung an Server %1 angeben. Statusmeldung: "%2" Proxy authorization required Anmeldung am Proxy erforderlich A username and password are being requested by proxy %1. Bitte Nutzername und Passwort zur Anmeldung an Proxy %1 angeben. OperaImporter No Error Kein Fehler Unable to open file. Datei kann nicht geöffnet werden. PageScreen Page Screen Bildschirmseite Save Page Screen... Bildschirmseite speichern... screen.png Bildschirmseite.png PluginsList Application Extensions QupZilla add-ons Allow Application Extensions to be loaded Das Laden von QupZilla add-ons erlauben Settings Einstellungen Load Plugins Plugins laden WebKit Plugins WebKit Plugins <b>Click To Flash Plugin</b> <b>Click To Flash Plugin</b> Click To Flash is a plugin which blocks auto loading of Flash content at page. You can always load it manually by clicking on the Flash play icon. Click To Flash ist ein Plugin, das das automatische Laden von Flashinhalten auf einer Seite unterbindet. Diese Inhalte können manuell geladen werden, indem man auf das Symbol "Flashinhalte abspielen" klickt. Whitelist Whitelist Add Hinzufügen Remove Entfernen Allow Click To Flash Click To Flash erlauben Add site to whitelist Aktuelle Seite zur Whitelist hinzufügen Server without http:// (ex. youtube.com) Server ohne http:// (z.B. youtube.com) Preferences Preferences Einstellungen General Allgemein 1 1 Downloads Downloads Plugins Plugins Open blank page Leere Seite öffnen Open homepage Startseite öffnen Restore session Sitzung wiederherstellen Homepage: Startseite: On new tab: Bei neuem Tab: Open blank tab Leeren Tab öffnen Open other page... Andere Seite öffnen... <b>Profiles</b> <b>Profile</b> Startup profile: Beim Start: Create New Neues Profil erstellen Delete Löschen <b>Launching</b> <b>Start</b> QupZilla QupZilla <b>General</b> <b>Allgemein</b> Show StatusBar on start Status-Leiste nach Programmstart anzeigen Show Bookmarks ToolBar on start Lesezeichen Werkzeug-Leiste nach Programmstart anzeigen Show Navigation ToolBar on start Navigations-Leiste nach Programmstart anzeigen <b>Navigation ToolBar</b> <b>Navigations-Leiste</b> Allow storing network cache on disk Cache-Speicherung auf lokaler Festplatte erlauben <b>Cookies</b> <b>Cookies</b> <b>Address Bar behaviour</b> <b>Adress-Leisten Verhalten</b> <b>Language</b> <b>Sprache</b> Show Home button Startseiten-Schaltfläche anzeigen Show Back / Forward buttons Zurück- / Vorwärts-Schaltflächen anzeigen <b>Browser Window</b> <b>Browser-Fenster</b> Tabs Tabs Use actual Aktuelle verwenden <b>Background<b/> <b>Hintergrund<b/> Use transparent background Transparenten Hintergrund benutzen <b>Tabs behavior</b> <b>Tab-Verhalten</b> Make tabs movable Verschieben von Tabs erlauben Hide close button if there is only one tab Beenden-Schaltfläche verstecken, wenn nur ein Tab aktiv Hide tabs when if there is only one tab Tabs verstecken, wenn nur einer aktiv Web Configuration Web Konfiguration Maximum Maximum 50 MB 50 MB Ask everytime for download location Jedes Mal nach Speicherort fragen Use defined location: Definierten Speicherort benutzen: ... ... Browsing Im Internet surfen Load images Grafiken laden Allow JAVA Java zulassen Allow Plugins (Flash plugin) Plugins erlauben (Flash plugin) Maximum pages in cache: Maximale Seitenanzahl im Cache: Password Manager Passwort Manager <b>AutoFill options</b> <b>Autovervollständigen</b> Allow saving passwords from sites Speichern von Passwörtern von Seiten erlauben Privacy Privatsphäre Fonts Schriftarten Note: You cannot delete active profile. Hinweis: Ein aktives Profil kann nicht gelöscht werden. Notifications Benachrichtigungen Show Add Tab button Tab hinzufügen Schaltfläche anzeigen Activate last tab when closing active tab Zuletzt besuchten Tab aktivieren, wenn aktiver Tab geschlossen wird Block PopUp windows PopUp Fenster blockieren Allow DNS Prefetch DNS Prefetch erlauben JavaScript can access clipboard JavaScript darf auf die Zwischenablage zugreifen Include links in focus chain Links in Focus Chain berücksichtigen Zoom text only Nur Text vergrößern Print element background Hintergrund drucken Send Do Not Track header to servers Do Not Track Kopfzeile zum Server senden Appereance Erscheinungsbild After launch: Nach dem Start: Check for updates on start Beim Start auf Aktualisierungen überprüfen Themes Themen Advanced options Erweiterte Optionen Ask when closing multiple tabs Fragen, wenn mehrere Tabs geschlossen werden Allow JavaScript JavaScript erlauben Mouse wheel scrolls Mit dem Mausrad blättern lines on page Zeilen auf einer Seite Default zoom on pages: Standardvergrößerung: Local Storage Lokaler Speicherplatz Proxy Configuration Proxy Konfiguration <b>Font Families</b> <b>Schriftarten</b> Standard Standard Fixed Feste Breite Serif Serif Sans Serif Sans Serif Cursive Kursiv Default Font Standard-Schriftart Fixed Font Schriftart mit fester Breite Fantasy Fantasy <b>Font Sizes</b> <b>Schriftgrößen</b> <b>Download Location</b> <b>Download Verzeichnis</b> <b>Download Options</b> <b>Download Optionen</b> Use native system file dialog (may or may not cause problems with downloading SSL secured content) Nativen System-Dialog verwenden (kann Probleme beim Herunterladen von mittels SSL geschützten Inhalten verursachen) Close download manager when downloading finishes Download-Manager schließen, wenn das Herunterladen beendet ist Filter Tracking Cookies Seitenfremde Cookies verbieten Allow storing of cookies Das Speichern von Cookies erlauben Delete cookies on close Cookies beim Beenden löschen Match domain exactly Genaue Übereinstimmung der Domain <b>Warning:</b> Match domain exactly and Filter Tracking Cookies options can lead to deny some cookies from sites. If you have problems with cookies, try to disable this options first! <b>Warnung:</b> Das Einschalten der Optionen "Genaue Übereinstimmung" und "Seitenfremde Inhalte" kann dazu führen, dass Cookies von Webseiten zurückgewiesen werden. Tritt dieses Problem auf, deaktivieren Sie bitte zunächst diese Optionen! Cookies Manager Cookie Manager <b>Notifications</b> <b>Benachrichtigungen</b> Use OSD Notifications OSD verwenden Use Native System Notifications (Linux only) System-Benachrichtigungen verwenden (nur Linux) Do not use Notifications Keine Benachrichtigungen verwenden Expiration timeout: Zeit: seconds Sekunden <b>Note: </b>You can change position of OSD Notification by dragging it on the screen. <b>Hinweis: </b>Sie können die Position des OSD ändern, in dem Sie es auf dem Bildschirm mit der Maus verschieben. <b>User CSS StyleSheet</b> <b>Benutzerdefiniertes CSS StyleSheet</b> StyleSheet automatically loaded with all websites: StyleSheet automatisch mit allen Webseiten laden: Languages Sprachen <b>Preferred language for web sites</b> <b>Bevorzugte Sprache für Webseiten</b> System proxy configuration Proxy-Einstellungen des Systems verwenden Do not use proxy Keinen Proxy benutzen Manual configuration Manuelle Konfiguration HTTP HTTP SOCKS5 SOCKS5 Port: Port: Username: Nutzername: Password: Passwort: Don't use on: Ausnahme: Allow storing web icons Speichern von Web-Symbolen erlauben Allow saving history Speichern des Verlaufs erlauben Delete history on close Verlauf beim Beenden löschen Other Andere Select all text by double clicking in address bar Select all text by clicking at address bar Ganzen Text mit einem Doppelklick in der Adress-Leiste auswählen Add .com domain by pressing CTRL key Zum Hinzufügen der .com Domäne drücken Sie bitte die STRG-Taste Add .co.uk domain by pressing ALT key Zum Hinzufügen der .co.uk Domäne drücken Sie bitte die ALT-Taste SSL Manager SSL Manager Available translations: Verfügbare Übersetzungen: In order to change language, you must restart browser. Um die Sprache zu ändern, starten Sie bitte QupZilla neu. OSD Notification OSD Benachrichtigung Drag it on the screen to place it where you want. Veschieben Sie es auf dem Bildschirm nach Belieben. Choose download location... Download-Verzeichnis auswählen... Choose stylesheet location... Stylesheet-Verzeichnis wählen... New Profile Neues Profil Enter the new profile's name: Bitte geben Sie den Namen des neuen Profils ein: Error! Fehler! This profile already exists! Dieses Profil existiert bereits! Cannot create profile directory! Verzeichnis kann nicht erstellt werden! Confirmation Bestätigung Are you sure to permanently delete "%1" profile? This action cannot be undone! Möchten Sie wirklich das Profil "%1" dauerhaft entfernen? Diese Aktion kann nicht rückgängig gemacht werden! QObject The file is not an OpenSearch 1.1 file. Diese Datei besitzt kein gültiges OpenSearch 1.1 Format. QtWin Open new tab Neuen Tab öffnen Opens a new tab if browser is running Öffnet einen neuen Tab bei gestartetem Browser Open new window Neues Fenster öffnen Opens a new window if browser is running Öffnet ein neues Fenster bei gestartetem Browser Open download manager Download Manager öffnen Opens a download manager if browser is running Öffnet den Download Manager bei gestartetem Browser QupZilla Bookmarks Lesezeichen History Verlauf Quit Beenden New Tab Neuer Tab Close Tab Tab schließen IP Address of current page IP Adresse der aktuellen Seite &Tools &Werkzeuge &Help &Hilfe &Bookmarks &Lesezeichen Hi&story &Verlauf &File &Datei &New Window Neues &Fenster Open &File Datei ö&ffnen &Save Page As... Seite speichern &unter... &Print &Drucken Import bookmarks... Lesezeichen importieren... &Edit &Bearbeiten &Undo &Rückgängig &Redo &Wiederherstellen &Cut &Ausschneiden C&opy &Kopieren &Paste E&infügen &Delete &Löschen Select &All Alles au&swählen &Find &Suchen &View &Ansicht &Navigation Toolbar &Navigations-Symbolleiste &Bookmarks Toolbar &Lesezeichen-Werkzeug-Leiste Sta&tus Bar Sta&tus-Leiste Toolbars Werkzeugleisten Sidebars Seiten-Leiste &Page Source Seiten-&Quelltext &Menu Bar &Menü-Leiste &Fullscreen &Vollbild &Stop &Stopp &Reload &Neu laden Character &Encoding &Zeichenkodierung Zoom &In Ver&größern Zoom &Out Ver&kleinern Reset Zurücksetzen Close Window Fenster schließen Open Location Adresse aufrufen Send Link... Link senden... Other Andere Default Standard Current cookies cannot be accessed. Auf aktuelle Cookies kann nicht zugegriffen werden. Your session is not stored. Ihre Sitzung wird nicht gespeichert. Start Private Browsing Privaten Modus starten Private Browsing Enabled Privater Modus aktiv Restore &Closed Tab Geschlossenen Tab &wiederherstellen Bookmarks In ToolBar Lesezeichen in Werkzeug-Leiste Empty Leer New tab Neuer Tab Bookmark &This Page &Lesezeichen für diese Seite hinzufügen Bookmark &All Tabs Lesezeichen für alle &geöffneten Tabs hinzufügen Organize &Bookmarks Bookmarks &bearbeiten &Back &Zurück &Forward &Vor &Home &Startseite Show &All History &Vollständigen Verlauf anzeigen Closed Tabs Geschlossene Tabs Save Page Screen Bildschirmseite speichern (Private Browsing) (Privater Modus) Restore All Closed Tabs Alle geschlossenen Tabs wiederherstellen Clear list Liste leeren About &Qt Üb&er Qt &About QupZilla Über Qup&Zilla Informations about application Informationen über QupZilla Report &Issue &Fehlerbericht senden &Web Search Web&suche Page &Info S&eiteninformationen anzeigen &Download Manager &Download Manager &Cookies Manager &Cookie Manager &AdBlock &AdBlock RSS &Reader RSS &Reader Clear Recent &History &Verlauf löschen &Private Browsing &Privater Modus Pr&eferences &Einstellungen Open file... Datei öffnen... Are you sure you want to turn on private browsing? Möchten Sie wirklich den privaten Modus starten? When private browsing is turned on, some actions concerning your privacy will be disabled: Wenn der private Modus aktiv ist, stehen einige Aktionen nicht zur Verfügung: Webpages are not added to the history. Webseiten werden nicht zum Verlauf hinzugefügt. Until you close the window, you can still click the Back and Forward buttons to return to the webpages you have opened. Solange dieses Fenster geöffnet ist, können Sie über die Symbole "Zurück" und "Vor" zu den Webseiten zurückkehren, die Sie geöffnet haben. There are still %1 open tabs and your session won't be stored. Are you sure to quit? Es sind noch %1 Tabs geöffnet und Ihre Sitzung wird nicht gespeichert. Möchten Sie QupZilla wirklich beenden? QupZillaSchemeReply No Error Kein Fehler Not Found Nicht gefunden Report issue Fehlerbericht senden If you are experiencing problems with QupZilla, please try first disable all plugins. <br/>If it won't help, then please fill this form: Wenn Sie bei der Nutzung von QupZilla auf Probleme stoßen, deaktivieren Sie bitte zuerst alle Plugins. <br/> Sollte dies das Problem nicht lösen, füllen Sie bitte dieses Formular aus: Your E-mail Ihre E-Mail Adresse Issue type Fehlertyp Priority Priorität Low Niedrig Normal Normal High Hoch Issue description Fehlerbeschreibung Send Senden E-mail is optional Angabe optional Please fill all required fields! Bitte füllen Sie alle erforderlichen Felder aus! Start Page Startseite Google Search Google Suche Search results provided by Google Suchergebnisse About QupZilla Über QupZilla Informations about version Versionsinformationen Browser Identification Browser Indentifizierung Paths Pfade Copyright Copyright Main developer Hauptentwickler Contributors Mitwirkende Translators Übersetzer Version Version WebKit version WebKit Version Build time Kompiliert am Platform Plattform Profile Profile Settings Einstellungen Saved session Gespeicherte Sitzung Pinned tabs Angeheftete Tabs Data Daten Themes Themen Plugins Plugins Translations Übersetzungen RSSManager RSS Reader RSS Reader Empty Leer You don't have any RSS Feeds.<br/> Please add some with RSS icon in navigation bar on site which offers feeds. Sie haben noch keine RSS Feeds abonniert.<br/> Bitte fügen Sie Feeds über das RSS Symbol in der Navigationsleiste hinzu. Reload Neu laden Edit feed Feed bearbeiten Delete feed Feed Löschen Optimize Database Datenbank optimieren News Nachrichten Loading... Laden... Fill title and URL of a feed: Titel und URL des Feeds eintragen: Feed title: Feed Titel: Feed URL: Feed URL: Edit RSS Feed RSS Feed barbeiten Open link in actual tab Link in aktuellem Tab öffnen Open link in new tab Link in neuem Tab öffnen New Tab Neuer Tab Error in fetching feed Feed konnte nicht abonniert werden RSS feed duplicated Doppelter RSS Feed vorhanden You already have this feed. Diesen Feed haben Sie bereits abonniert. RSSNotification Open RSS Manager RSS Manager öffnen You have successfully added RSS feed "%1". RSS Feed "%1" erfolgreich hinzugefügt. RSSWidget Add RSS Feeds from this site RSS Feed von dieser Seite hinzufügen Add Hinzufügen ReloadStopButton Stop Stop Reload Neu laden SSLManager SSL Manager SSL Manager CA Authorities Certificates Zertifizierungsstellen Show info Informationen anzeigen This is list of CA Authorities Certificates stored in standard system path and in user specified paths. Dies ist eine Liste von Zertifizierungsstellen, die im Standard-Systempfad und in benutzerdefinierten Pfaden gespeichert sind. Local Certificates Lokale Zertifikate Remove Entfernen This is list of Local Certificates stored in user profile. This list also contains all certificates, that have received an exception. Dies ist eine Liste mit lokal gespeicherten Zertifikaten. Sie enthält auch alle Zertifikate, für die eine Ausnahme gemacht wurde. Settings Einstellungen Add Hinzufügen If CA Authorities Certificates were not automatically loaded from system, you can specify manual paths where certificates are stored. Falls Zertifikatsstellen nicht automatisch vom System geladen werden, können Sie den Pfad, in dem die Zertifikate gespeichert sind, auch manuell angeben. <b>NOTE:</b> Setting this option is big security risk! <b>WARNUNG:</b> Das Einschalten dieser Option birgt ein sehr hohes Sicherheitsrisiko! Ignore all SSL Warnings Alle SSL Warnungen ignorieren All certificates must have .crt suffix. After adding or removing certificate paths, it is neccessary to restart browser in order to changes take effect. Alle Zertifikate müssen einen .crt suffix besitzen. Nachdem Speicherpfade hinzugefügt oder gelöscht wurden, muss QupZilla neu gestarten werden, um die Änderung wirksam zu machen. Choose path... Pfad auswählen... Certificate Informations Informationen zum Zertifikat SearchEnginesDialog Manage Search Engines Suchmaschinen verwalten Add... Hinzufügen... Remove Entfernen Edit Bearbeiten Defaults Standard Search Engine Suchmaschine Shortcut Verknüpfung Add Search Engine Suchmaschine hinzufügen Edit Search Engine Suchmaschine bearbeiten SearchEnginesManager Search Engine Added Suchmaschine hinzugefügt Search Engine "%1" has been successfully added. Suchmaschine "%1" wurde erfolgreich hinzugefügt. Search Engine is not valid! Suchmaschine ist ungültig! Error Fehler Error while adding Search Engine <br><b>Error Message: </b> %1 Beim Hinzufügen der Suchmaschine ist ein Fehler aufgetreten <br><b>Fehlermeldung: </b> %1 SearchToolBar No results found. Keine Suchergebnisse vorhanden. SearchToolbar Search: Suchen: Search... Suchen... Highlight Hervorheben Case sensitive Groß- und Kleinschreibung beachten SideBar Bookmarks Lesezeichen History Verlauf SiteInfo Site Info Seiteninformationen General Allgemein Media Medien Security Sicherheit Size: Größe: Encoding: Kodierung: Tag Tag Value Wert <b>Security information</b> <b>Sicherheitsinformation</b> Details Details Image Grafik Image address Grafikadresse <b>Preview</b> <b>Vorschau</b> Site address: Seitenadresse: Meta tags of site: Meta Tags dieser Seite: <not set in certificate> <Im Zertifkat nicht vorhanden> <b>Connection is Encrypted.</b> <b>Verschlüsselte Verbindung.</b> <b>Your connection to this page is secured with this certificate: </b> <b>Diese Verbindung ist mit diesem Zertifikat verschlüsselt: </b> <b>Connection Not Encrypted.</b> <b>Unverschlüsselte Verbindung.</b> <b>Your connection to this page is not secured!</b> <b>Diese Verbindung ist nicht verschlüsselt!</b> Copy Image Location Grafikadresse kopieren Copy Image Name Grafik kopieren Save Image to Disk Grafik speichern Error! Fehler! This preview is not available! Diese Vorschau ist nicht verfügbar! Save image... Grafik speichern... Cannot write to file! Datei kann nicht gespeichert werden! Preview not available Vorschau nicht verfügbar SiteInfoWidget More... Mehr... Your connection to this site is <b>secured</b>. Diese Verbindung ist <b>verschlüsselt</b>. Your connection to this site is <b>unsecured</b>. Diese Verbindung ist <b>unverschlüsselt</b>. This is your <b>%1.</b> visit of this site. Dies ist Ihr <b>%1.</b> Besuch dieser Seite. first erster second zweiter third dritter You have <b>never</b> visited this site before. Sie haben diese Seite <b>noch nie</b> besucht. SourceViewer Source of Quelltext von File Datei Save as... Speichern als... Close Schließen Edit Bearbeiten Undo Rückgängig Redo Wiederherstellen Cut Ausschneiden Copy Kopieren Paste Einfügen Delete Löschen Select All Alle markieren Find Suchen Go to Line... Gehe zu Zeile... View Ansicht Reload Neu laden Editable Editierbar Word Wrap Zeilenumbruch Save file... Datei speichern... Error! Fehler! Cannot write to file! Datei kann nicht gespeichert werden! Error writing to file Beim Schreiben der Datei ist ein Fehler aufgetreten Source successfully saved Quelltext erfolgreich gespeichert Source reloaded Quelltext neu geladen Editable changed Quelltext geändert Word Wrap changed Zeilenumbruch geändert Enter line number Zeilennummer eingeben SourceViewerSearch Search: Suchen: Search... Suchen... TabBar New tab Neuer Tab &New tab &Neuer Tab &Stop Tab &Stop Tab &Reload Tab Tab neu &laden &Duplicate Tab Tab &duplizieren Reloa&d All Tabs Alle Tabs ne&u laden &Bookmark This Tab &Lesezeichen für diesen Tab hinzufügen Un&pin Tab Tab löse&n &Pin Tab Tab an&heften Re&load All Tabs Alle Tabs ne&u laden Bookmark &All Tabs Lesezeichen für alle &geöffneten Tabs hinzufügen Restore &Closed Tab Geschlossenen Tab &wiederherstellen Close Ot&her Tabs Alle an&deren Tabs schließen Cl&ose S&chließen Bookmark &All Ta&bs Lesezeichen für alle &geöffneten Tabs hinzufügen TabWidget Show list of opened tabs Liste aller geöffneten Tabs anzeigen New Tab Neuer Tab Loading... Laden... No Named Page Unbekannte Seite Actually you have %1 opened tabs Aktuell sind %1 Tabs geöffnet New tab Neuer Tab ThemeManager <b>Name:</b> <b>Name:</b> <b>Author:</b> <b>Autor:</b> <b>Description:</b> <b>Beschreibung:</b> License Lizenz License Viewer Lizenz anzeigen Updater Update available Aktualisierung verfügbar New version of QupZilla is ready to download. Eine neue Version von QupZilla steht zum Herunterladen bereit. Update Aktualisierung WebInspectorDockWidget Web Inspector Web Inspector WebPage To show this page, QupZilla must resend request which do it again (like searching on making an shoping, which has been already done.) Um diese Seite anzeigen zu können, muss QupZilla eine erneute Abfrage an den Server versenden Server refused the connection Der Server hat den Verbindungsversuch abgelehnt Server closed the connection Der Server hat die Verbindung beendet Server not found Server nicht gefunden Connection timed out Zeitüberschreitung der Anfrage Untrusted connection Keine vertrauenswürdige Verbindung AdBlocked Content Inhalt von AdBlock blockiert Blocked by rule <i>%1</i> Blockiert von Regel <i>%1</i> Content Access Denied Zugriff auf Inhalt verweigert Error code %1 Fehler Code %1 Failed loading page Seite konnte nicht geladen werden QupZilla can't load page from %1. QupZilla kann Seite von %1 nicht laden. Check the address for typing errors such as <b>ww.</b>example.com instead of <b>www.</b>example.com Bitte überprüfen Sie die Adresse auf Tippfehler wie <b>ww.</b>example.com anstatt <b>www.</b>example.com If you are unable to load any pages, check your computer's network connection. Falls Sie keine Webseiten laden können, überprüfen Sie bitte Ihre Netzwerkverbindung. If your computer or network is protected by a firewall or proxy, make sure that QupZilla is permitted to access the Web. Falls Ihr Computer über eine Firewall oder Proxy mit dem Internet verbunden ist, vergewissern Sie sich, dass QupZilla der Zugriff zum Internet gestattet ist. Try Again Erneut versuchen Choose file... Datei wählen... WebSearchBar Manage Search Engines Suchmaschinen verwalten Add %1 ... Hinzufügen von %1 ... WebView Loading... Laden... Open link in new &tab Link in neuem &Tab öffnen Open link in new &window Link in neuem &Fenster öffnen B&ookmark link &Lesezeichen für diesen Link hinzufügen &Save link as... &Ziel speichern unter... &Copy link address Lin&k-Adresse kopieren Show i&mage G&rafik anzeigen Copy im&age Grafik k&opieren Copy image ad&dress Grafika&dresse kopieren S&top S&topp Show info ab&out site S&eiteninformationen anzeigen Show Web &Inspector Web &Inspector anzeigen &Save image as... Grafik speichern &unter... Failed loading page Seite konnte nicht geladen werden &Back &Zurück &Forward &Vor &Reload &Neu laden Book&mark page &Lesezeichen für diese Seite hinzufügen &Save page as... Seite speichern &unter... Select &all Alles au&swählen Show so&urce code Seitenquelltext &anzeigen Search "%1 .." with %2 Suche "%1 .." mit %2 No Named Page Unbekannte Seite New tab Neuer Tab Send link... Link senden... Send image... Grafik senden... Send page... Seite senden... jsAlert Prevent this page from creating additional dialogs Das Ausführen von Skripten auf dieser Seite unterbinden