From 64ff94c3e4b82d5cdda1145d8b0513a907acb85e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 1 Jan 2019 17:42:51 +0100 Subject: [PATCH 001/107] Reintroduce usage of QMdiSubWindow --- src/ui/Window.cpp | 64 ++++++++++++++++++++++++++++++++++++++++------- src/ui/Window.h | 2 ++ 2 files changed, 57 insertions(+), 9 deletions(-) diff --git a/src/ui/Window.cpp b/src/ui/Window.cpp index 8e10f0ccbe..bb47ad08f7 100644 --- a/src/ui/Window.cpp +++ b/src/ui/Window.cpp @@ -33,6 +33,7 @@ #include #include #include +#include namespace Otter { @@ -81,6 +82,7 @@ Window::Window(const QVariantMap ¶meters, ContentsWidget *widget, MainWindow } connect(this, &Window::titleChanged, this, &Window::setWindowTitle); + connect(this, &Window::iconChanged, this, &Window::handleIconChanged); connect(mainWindow, &MainWindow::toolBarStateChanged, this, &Window::handleToolBarStateChanged); } @@ -263,6 +265,16 @@ void Window::markAsActive(bool updateLastActivity) emit activated(); } +void Window::handleIconChanged(const QIcon &icon) +{ + QMdiSubWindow *subWindow(qobject_cast(parentWidget())); + + if (subWindow) + { + subWindow->setWindowIcon(icon); + } +} + void Window::handleSearchRequest(const QString &query, const QString &searchEngine, SessionsManager::OpenHints hints) { if ((getType() == QLatin1String("web") && Utils::isUrlEmpty(getUrl())) || (hints == SessionsManager::DefaultOpen || hints == SessionsManager::CurrentTabOpen)) @@ -277,10 +289,17 @@ void Window::handleSearchRequest(const QString &query, const QString &searchEngi void Window::handleGeometryChangeRequest(const QRect &geometry) { - setWindowFlags(Qt::SubWindow); - showNormal(); - resize(geometry.size() + (this->geometry().size() - m_contentsWidget->size())); - move(geometry.topLeft()); + QMdiSubWindow *subWindow(qobject_cast(parentWidget())); + + if (subWindow) + { + Application::triggerAction(ActionsManager::RestoreTabAction, {{QLatin1String("tab"), getIdentifier()}}, m_mainWindow); + + subWindow->setWindowFlags(Qt::SubWindow); + subWindow->showNormal(); + subWindow->resize(geometry.size() + (subWindow->geometry().size() - m_contentsWidget->size())); + subWindow->move(geometry.topLeft()); + } } void Window::handleToolBarStateChanged(int identifier, const ToolBarState &state) @@ -658,7 +677,14 @@ ActionsManager::ActionDefinition::State Window::getActionState(int identifier, c break; case ActionsManager::AlwaysOnTopTabAction: - state.isEnabled = windowFlags().testFlag(Qt::WindowStaysOnTopHint); + { + const QMdiSubWindow *subWindow(qobject_cast(parentWidget())); + + if (subWindow) + { + state.isEnabled = subWindow->windowFlags().testFlag(Qt::WindowStaysOnTopHint); + } + } break; default: @@ -689,6 +715,7 @@ WindowHistoryInformation Window::getHistory() const SessionWindow Window::getSession() const { + const QMdiSubWindow *subWindow(qobject_cast(parentWidget())); SessionWindow session; if (m_contentsWidget) @@ -716,25 +743,26 @@ SessionWindow Window::getSession() const } session.state = getWindowState(); - session.isAlwaysOnTop = windowFlags().testFlag(Qt::WindowStaysOnTopHint); + session.isAlwaysOnTop = (subWindow && subWindow->windowFlags().testFlag(Qt::WindowStaysOnTopHint)); return session; } WindowState Window::getWindowState() const { + const QMdiSubWindow *subWindow(qobject_cast(parentWidget())); WindowState windowState; windowState.state = Qt::WindowMaximized; - if (!isMaximized()) + if (subWindow && !subWindow->isMaximized()) { - if (isMinimized()) + if (subWindow->isMinimized()) { windowState.state = Qt::WindowMinimized; } else { - windowState.geometry = geometry(); + windowState.geometry = subWindow->geometry(); windowState.state = Qt::WindowNoState; } } @@ -797,4 +825,22 @@ bool Window::isPrivate() const return ((m_contentsWidget && !m_isAboutToClose) ? m_contentsWidget->isPrivate() : SessionsManager::calculateOpenHints(m_parameters).testFlag(SessionsManager::PrivateOpen)); } +bool Window::event(QEvent *event) +{ + if (event->type() == QEvent::ParentChange) + { + const QMdiSubWindow *subWindow(qobject_cast(parentWidget())); + + if (subWindow) + { + connect(subWindow, &QMdiSubWindow::windowStateChanged, [&]() + { + emit arbitraryActionsStateChanged({ActionsManager::MaximizeTabAction, ActionsManager::MinimizeTabAction, ActionsManager::RestoreTabAction}); + }); + } + } + + return QWidget::event(event); +} + } diff --git a/src/ui/Window.h b/src/ui/Window.h index 88554dbc7f..1a8ac6e340 100644 --- a/src/ui/Window.h +++ b/src/ui/Window.h @@ -97,8 +97,10 @@ public slots: void focusInEvent(QFocusEvent *event) override; void updateFocus(); void setContentsWidget(ContentsWidget *widget); + bool event(QEvent *event) override; protected slots: + void handleIconChanged(const QIcon &icon); void handleSearchRequest(const QString &query, const QString &searchEngine, SessionsManager::OpenHints hints = SessionsManager::DefaultOpen); void handleGeometryChangeRequest(const QRect &geometry); void handleToolBarStateChanged(int identifier, const ToolBarState &state); From 9d75039340e6d2df7a3454292721cb72ac23d472 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 1 Jan 2019 17:50:51 +0100 Subject: [PATCH 002/107] [QtWebEngine] Reintroduce support for QtWebEngine 5.9 --- CMakeLists.txt | 4 ++-- .../web/qtwebengine/QtWebEngineWebBackend.cpp | 2 ++ .../web/qtwebengine/QtWebEngineWebWidget.cpp | 18 ++++++++++++++++++ .../web/qtwebengine/QtWebEngineWebWidget.h | 11 +++++++++++ 4 files changed, 33 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 363c4bea8f..e96b49da06 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -74,14 +74,14 @@ set(CMAKE_CXX_STANDARD 11) include(FeatureSummary) include(GNUInstallDirs) -option(ENABLE_QTWEBENGINE "Enable QtWebEngine backend (requires Qt 5.12)" ON) +option(ENABLE_QTWEBENGINE "Enable QtWebEngine backend (requires Qt 5.9)" ON) option(ENABLE_QTWEBKIT "Enable QtWebKit backend (requires QtWebKit 5.212)" ON) option(ENABLE_CRASHREPORTS "Enable built-in crash reporting (only for official builds)" OFF) option(ENABLE_DBUS "Enable D-Bus based integration for notifications (only freedesktop.org compatible platforms)" ON) option(ENABLE_SPELLCHECK "Enable Hunspell based spell checking" ON) find_package(Qt5 5.6.0 REQUIRED COMPONENTS Core Gui Multimedia Network PrintSupport Qml Svg Widgets XmlPatterns) -find_package(Qt5WebEngineWidgets 5.12.0 QUIET) +find_package(Qt5WebEngineWidgets 5.9.0 QUIET) find_package(Qt5WebKitWidgets 5.212.0 QUIET) find_package(Hunspell 1.5.0 QUIET) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 00b94985b7..793e790418 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -71,6 +71,7 @@ void QtWebEngineWebBackend::handleDownloadRequested(QWebEngineDownloadItem *item return; } +#if QTWEBENGINECORE_VERSION >= 0x050C00 QtWebEnginePage *page(qobject_cast(item->page())); if (page && page->getWebWidget()) @@ -79,6 +80,7 @@ void QtWebEngineWebBackend::handleDownloadRequested(QWebEngineDownloadItem *item return; } +#endif const HandlersManager::HandlerDefinition handler(HandlersManager::getHandler(transfer->getMimeType())); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 91cb6ea5bd..1fea7b78c7 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -48,7 +48,9 @@ #include #include #include +#if QTWEBENGINECORE_VERSION >= 0x050C00 #include +#endif #include #include #include @@ -62,7 +64,9 @@ namespace Otter QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBackend *backend, ContentsWidget *parent) : WebWidget(parameters, backend, parent), m_webView(nullptr), +#if QTWEBENGINECORE_VERSION >= 0x050B00 m_inspectorView(nullptr), +#endif m_page(new QtWebEnginePage(SessionsManager::calculateOpenHints(parameters).testFlag(SessionsManager::PrivateOpen), this)), m_loadingState(FinishedLoadingState), m_canGoForwardValue(UnknownValue), @@ -90,7 +94,9 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac connect(m_page, &QtWebEnginePage::requestedNewWindow, this, &QtWebEngineWebWidget::requestedNewWindow); connect(m_page, &QtWebEnginePage::authenticationRequired, this, &QtWebEngineWebWidget::handleAuthenticationRequired); connect(m_page, &QtWebEnginePage::proxyAuthenticationRequired, this, &QtWebEngineWebWidget::handleProxyAuthenticationRequired); +#if QTWEBENGINECORE_VERSION >= 0x050C00 connect(m_page, &QtWebEnginePage::printRequested, this, &QtWebEngineWebWidget::handlePrintRequest); +#endif connect(m_page, &QtWebEnginePage::windowCloseRequested, this, &QtWebEngineWebWidget::handleWindowCloseRequest); connect(m_page, &QtWebEnginePage::fullScreenRequested, this, &QtWebEngineWebWidget::handleFullScreenRequest); connect(m_page, &QtWebEnginePage::featurePermissionRequested, [&](const QUrl &url, QWebEnginePage::Feature feature) @@ -885,6 +891,7 @@ void QtWebEngineWebWidget::triggerAction(int identifier, const QVariantMap ¶ } break; +#if QTWEBENGINECORE_VERSION >= 0x050B00 case ActionsManager::InspectPageAction: { const bool showInspector(parameters.value(QLatin1String("isChecked"), !getActionState(identifier, parameters).isChecked).toBool()); @@ -905,6 +912,7 @@ void QtWebEngineWebWidget::triggerAction(int identifier, const QVariantMap ¶ m_page->triggerAction(QWebEnginePage::InspectElement); break; +#endif case ActionsManager::FullScreenAction: { const MainWindow *mainWindow(MainWindow::findMainWindow(this)); @@ -1013,6 +1021,7 @@ void QtWebEngineWebWidget::handleViewSourceReplyFinished() } } +#if QTWEBENGINECORE_VERSION >= 0x050C00 void QtWebEngineWebWidget::handlePrintRequest() { QPrintPreviewDialog printPreviewDialog(this); @@ -1038,6 +1047,7 @@ void QtWebEngineWebWidget::handlePrintRequest() printPreviewDialog.exec(); } +#endif void QtWebEngineWebWidget::handleAuthenticationRequired(const QUrl &url, QAuthenticator *authenticator) { @@ -1226,7 +1236,9 @@ void QtWebEngineWebWidget::updateOptions(const QUrl &url) settings->setAttribute(QWebEngineSettings::JavascriptCanAccessClipboard, getOption(SettingsManager::Permissions_ScriptsCanAccessClipboardOption, url).toBool()); settings->setAttribute(QWebEngineSettings::JavascriptCanOpenWindows, (getOption(SettingsManager::Permissions_ScriptsCanOpenWindowsOption, url).toString() != QLatin1String("blockAll"))); settings->setAttribute(QWebEngineSettings::LocalStorageEnabled, getOption(SettingsManager::Permissions_EnableLocalStorageOption, url).toBool()); +#if QTWEBENGINECORE_VERSION >= 0x050A00 settings->setAttribute(QWebEngineSettings::ShowScrollBars, getOption(SettingsManager::Interface_ShowScrollBarsOption, url).toBool()); +#endif settings->setAttribute(QWebEngineSettings::WebGLEnabled, getOption(SettingsManager::Permissions_EnableWebglOption, url).toBool()); settings->setDefaultTextEncoding((encoding == QLatin1String("auto")) ? QString() : encoding); @@ -1484,6 +1496,7 @@ WebWidget* QtWebEngineWebWidget::clone(bool cloneHistory, bool isPrivate, const return widget; } +#if QTWEBENGINECORE_VERSION >= 0x050B00 QWidget* QtWebEngineWebWidget::getInspector() { if (!m_inspectorView) @@ -1499,6 +1512,7 @@ QWidget* QtWebEngineWebWidget::getInspector() return m_inspectorView; } +#endif QWidget* QtWebEngineWebWidget::getViewport() { @@ -1777,10 +1791,12 @@ bool QtWebEngineWebWidget::canFastForward() const return (m_canGoForwardValue == TrueValue || canGoForward()); } +#if QTWEBENGINECORE_VERSION >= 0x050B00 bool QtWebEngineWebWidget::canInspect() const { return !Utils::isUrlEmpty(getUrl()); } +#endif bool QtWebEngineWebWidget::canRedo() const { @@ -1829,10 +1845,12 @@ bool QtWebEngineWebWidget::isFullScreen() const return m_isFullScreen; } +#if QTWEBENGINECORE_VERSION >= 0x050B00 bool QtWebEngineWebWidget::isInspecting() const { return (m_inspectorView && m_inspectorView->isVisible()); } +#endif bool QtWebEngineWebWidget::isPopup() const { diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index 0c7bb6b42a..f6cd8da3ce 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -23,6 +23,7 @@ #include "../../../../ui/WebWidget.h" #include +#include #include #include @@ -63,7 +64,9 @@ class QtWebEngineWebWidget final : public WebWidget void search(const QString &query, const QString &searchEngine) override; void print(QPrinter *printer) override; WebWidget* clone(bool cloneHistory = true, bool isPrivate = false, const QStringList &excludedOptions = {}) const override; +#if QTWEBENGINECORE_VERSION >= 0x050B00 QWidget* getInspector(); +#endif QWidget* getViewport() override; QString getTitle() const override; QString getDescription() const override; @@ -126,12 +129,16 @@ public slots: bool canGoBack() const override; bool canGoForward() const override; bool canFastForward() const override; +#if QTWEBENGINECORE_VERSION >= 0x050B00 bool canInspect() const; +#endif bool canRedo() const override; bool canUndo() const override; bool canShowContextMenu(const QPoint &position) const override; bool canViewSource() const override; +#if QTWEBENGINECORE_VERSION >= 0x050B00 bool isInspecting() const; +#endif bool isPopup() const override; bool isScrollBar(const QPoint &position) const override; @@ -139,7 +146,9 @@ protected slots: void handleLoadStarted(); void handleLoadFinished(); void handleViewSourceReplyFinished(); +#if QTWEBENGINECORE_VERSION >= 0x050C00 void handlePrintRequest(); +#endif void handleAuthenticationRequired(const QUrl &url, QAuthenticator *authenticator); void handleProxyAuthenticationRequired(const QUrl &url, QAuthenticator *authenticator, const QString &proxy); void handleFullScreenRequest(QWebEngineFullScreenRequest request); @@ -152,7 +161,9 @@ protected slots: private: QWebEngineView *m_webView; +#if QTWEBENGINECORE_VERSION >= 0x050B00 QWebEngineView *m_inspectorView; +#endif QtWebEnginePage *m_page; QDateTime m_lastUrlClickTime; HitTestResult m_hitResult; From d11c4a1031a7d2d915177f11fc9b8851d5225093 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 1 Jan 2019 17:57:59 +0100 Subject: [PATCH 003/107] Update docs --- CHANGELOG | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index cade49f3ce..26640a4a8a 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +1.0.01 (2019-01-01): +- some enhancements in experimental backend for QtWebEngine (Blink): +-- download dialog is now shown for tab that initiated it; +-- added support for handling requests to print page; +- many other fixes. + 0.9.99 RC 12 (2018-09-01): - QtWebEngine backend no longer uses locks for fetching feeds, links or search engines; - some other fixes. From 830a982f4bb56ed62ffa344e32d7226148bab41f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 1 Jan 2019 17:59:01 +0100 Subject: [PATCH 004/107] Update version --- CMakeLists.txt | 12 +++--------- otter-browser.rc | 10 +++++----- 2 files changed, 8 insertions(+), 14 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index e96b49da06..6bd212ff44 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,16 +12,10 @@ project(otter-browser) set(MAJOR_VERSION "1") set(MINOR_VERSION "0") -set(PATCH_VERSION "81") +set(PATCH_VERSION "01") set(WEEKLY_VERSION "" CACHE STRING "") -add_definitions(-DOTTER_VERSION_MAIN="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" -DOTTER_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}") - -if ("${WEEKLY_VERSION}" STREQUAL "") - add_definitions(-DOTTER_VERSION_CONTEXT="-dev" -DOTTER_VERSION_WEEKLY=" ") -else () - add_definitions(-DOTTER_VERSION_CONTEXT=" weekly ${WEEKLY_VERSION}" -DOTTER_VERSION_WEEKLY="${WEEKLY_VERSION}") -endif () +add_definitions(-DOTTER_VERSION_MAIN="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" -DOTTER_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" -DOTTER_VERSION_CONTEXT=" " -DOTTER_VERSION_WEEKLY=" ") if (EXISTS "${CMAKE_ROOT}/Modules/CPack.cmake") include(InstallRequiredSystemLibraries) @@ -501,7 +495,7 @@ elseif (APPLE) set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) set(MACOSX_BUNDLE_ICON_FILE otter-browser.icns) set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.otter-browser.otter-browser") - set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2018 Otter Browser Team. All rights reserved.") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2019 Otter Browser Team. All rights reserved.") set(otter_src ${otter_src} src/modules/platforms/mac/MacPlatformIntegration.mm diff --git a/otter-browser.rc b/otter-browser.rc index d11ce64300..549d5262c4 100644 --- a/otter-browser.rc +++ b/otter-browser.rc @@ -4,8 +4,8 @@ IDI_ICON1 ICON DISCARDABLE "resources/icons/otter-browser.ico" IDI_ICON2 ICON DISCARDABLE "resources/icons/otter-browser-file-type.ico" VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,8,1 - PRODUCTVERSION 1,0,8,1 + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 BEGIN BLOCK "StringFileInfo" BEGIN @@ -13,12 +13,12 @@ BEGIN BEGIN VALUE "CompanyName", "Otter Browser Team" VALUE "FileDescription", "Otter Browser" - VALUE "FileVersion", "1.0.81" + VALUE "FileVersion", "1.0.01" VALUE "InternalName", "otter-browser" - VALUE "LegalCopyright", "Copyright (C) 2013-2018 Otter Browser Team" + VALUE "LegalCopyright", "Copyright (C) 2013-2019 Otter Browser Team" VALUE "OriginalFilename", "otter-browser.exe" VALUE "ProductName", "Otter Browser" - VALUE "ProductVersion", "1.0.81" + VALUE "ProductVersion", "1.0.01" END END BLOCK "VarFileInfo" From 11427158165bb7de4de033381c6f2a5cc2bbb1de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Thu, 3 Jan 2019 21:11:26 +0100 Subject: [PATCH 005/107] [QtWebEngine] Minor reordering --- src/modules/backends/web/qtwebengine/resources/hitTest.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index a1c404d609..95e85bed80 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -28,6 +28,9 @@ if (element) var anchorElement = element.closest('a[href]'); var titledElement = element.closest('[title]'); + result.geometry = { x: geometry.top, y: geometry.left, w: geometry.width, h: geometry.height }; + result.tagName = element.tagName.toLowerCase(); + if (anchorElement) { result.linkUrl = anchorElement.href; @@ -38,15 +41,11 @@ if (element) result.title = titledElement.title; } - result.geometry = { x: geometry.top, y: geometry.left, w: geometry.width, h: geometry.height }; - if (window.getSelection().containsNode(element, true)) { result.flags |= 8; } - result.tagName = element.tagName.toLowerCase(); - if (result.tagName == 'frame' || result.tagName == 'iframe') { result.frameUrl = createUrl(element.src); From 60838f99a9d246e73d458f274ea3b83b1abfb7ef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 4 Jan 2019 18:52:52 +0100 Subject: [PATCH 006/107] [QtWebEngine] Move logic to function --- .../web/qtwebengine/resources/hitTest.js | 22 ++++++++++++------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index 95e85bed80..64867f706e 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -1,4 +1,3 @@ -var element = ((%1 >= 0) ? document.elementFromPoint((%1 + window.scrollX), (%2 + window.scrollX)) : document.activeElement); var result = { alternateText: '', flags: 0, @@ -14,14 +13,19 @@ var result = { title: '' }; -if (element) +function createUrl(url) { - function createUrl(url) - { - var element = document.createElement('a'); - element.href = url; + var element = document.createElement('a'); + element.href = url; + + return element.href; +} - return element.href; +function createHitTest(element, result) +{ + if (!element) + { + return result; } var geometry = element.getBoundingClientRect(); @@ -124,6 +128,8 @@ if (element) } } } + + return result; } -result; +createHitTest(((%1 >= 0) ? document.elementFromPoint((%1 + window.scrollX), (%2 + window.scrollX)) : document.activeElement), result); From 2ad7f19776c478432675b67adc5ba387368ea38c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 11 Jan 2019 20:25:01 +0100 Subject: [PATCH 007/107] Escape "&" --- src/ui/TabBarWidget.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/ui/TabBarWidget.cpp b/src/ui/TabBarWidget.cpp index 9319eeb252..59adf161d3 100644 --- a/src/ui/TabBarWidget.cpp +++ b/src/ui/TabBarWidget.cpp @@ -543,6 +543,8 @@ void TabHandleWidget::updateTitle() m_titleRectangle.setLeft(m_titleRectangle.right() - length); } } + + title.replace(QLatin1Char('&'), QLatin1String("&&")); } if (title != m_title) From dbd1f221870c2d14b00e73b28b4ec3ddda2cc696 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 6 Jan 2019 10:58:51 +0100 Subject: [PATCH 008/107] [QtWebEngine] Do not try to adjust position --- src/modules/backends/web/qtwebengine/resources/hitTest.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index 64867f706e..f6487509b8 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -132,4 +132,4 @@ function createHitTest(element, result) return result; } -createHitTest(((%1 >= 0) ? document.elementFromPoint((%1 + window.scrollX), (%2 + window.scrollX)) : document.activeElement), result); +createHitTest(((%1 >= 0) ? document.elementFromPoint(%1, %2) : document.activeElement), result); From 44692250e589a7503580c0a276663f00ba1d8bc8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 6 Jan 2019 11:24:34 +0100 Subject: [PATCH 009/107] [QtWebEngine] Try to run hit test for frame contents --- .../web/qtwebengine/resources/hitTest.js | 26 ++++++++++++------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index f6487509b8..93977e1cc2 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -8,6 +8,7 @@ var result = { linkUrl: '', longDescription: '', mediaUrl: '', + offset: [0, 0], position: [%1, %2], tagName: '', title: '' @@ -21,7 +22,7 @@ function createUrl(url) return element.href; } -function createHitTest(element, result) +function createHitTest(window, element, result) { if (!element) { @@ -29,12 +30,22 @@ function createHitTest(element, result) } var geometry = element.getBoundingClientRect(); - var anchorElement = element.closest('a[href]'); - var titledElement = element.closest('[title]'); result.geometry = { x: geometry.top, y: geometry.left, w: geometry.width, h: geometry.height }; result.tagName = element.tagName.toLowerCase(); + if (result.tagName == 'frame' || result.tagName == 'iframe') + { + result.frameUrl = createUrl(element.src); + result.title = element.contentDocument.title; + result.offset = [(result.offset[0] + geometry.left), (result.offset[1] + geometry.top)]; + + return createHitTest(element.contentWindow, ((%1 >= 0) ? element.contentWindow.document.elementFromPoint((%1 - result.offset[0]), (%2 - result.offset[1])) : element.contentWindow.document.activeElement), result); + } + + var anchorElement = element.closest('a[href]'); + var titledElement = element.closest('[title]'); + if (anchorElement) { result.linkUrl = anchorElement.href; @@ -50,12 +61,7 @@ function createHitTest(element, result) result.flags |= 8; } - if (result.tagName == 'frame' || result.tagName == 'iframe') - { - result.frameUrl = createUrl(element.src); - result.title = element.contentDocument.title; - } - else if (result.tagName == 'img') + if (result.tagName == 'img') { result.alternateText = element.alt; result.imageUrl = createUrl(element.src); @@ -132,4 +138,4 @@ function createHitTest(element, result) return result; } -createHitTest(((%1 >= 0) ? document.elementFromPoint(%1, %2) : document.activeElement), result); +createHitTest(window, ((%1 >= 0) ? document.elementFromPoint(%1, %2) : document.activeElement), result); From 6eb5f819228cd838b8937589357c330626af158b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 7 Jan 2019 20:24:41 +0100 Subject: [PATCH 010/107] [QtWebEngine] Use helper variable --- src/modules/backends/web/qtwebengine/resources/hitTest.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index 93977e1cc2..39781a1670 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -36,11 +36,13 @@ function createHitTest(window, element, result) if (result.tagName == 'frame' || result.tagName == 'iframe') { + var frameDocument = element.contentWindow.document; + result.frameUrl = createUrl(element.src); - result.title = element.contentDocument.title; + result.title = frameDocument.title; result.offset = [(result.offset[0] + geometry.left), (result.offset[1] + geometry.top)]; - return createHitTest(element.contentWindow, ((%1 >= 0) ? element.contentWindow.document.elementFromPoint((%1 - result.offset[0]), (%2 - result.offset[1])) : element.contentWindow.document.activeElement), result); + return createHitTest(element.contentWindow, ((%1 >= 0) ? frameDocument.elementFromPoint((%1 - result.offset[0]), (%2 - result.offset[1])) : frameDocument.activeElement), result); } var anchorElement = element.closest('a[href]'); From 415f638acf7f491a2b8ede0af163ee266ff0ab6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 8 Jan 2019 19:12:56 +0100 Subject: [PATCH 011/107] [QtWebEngine] Check origin before trying to access frames --- .../web/qtwebengine/resources/hitTest.js | 32 +++++++++++++------ 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index 39781a1670..e787958dfc 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -14,7 +14,7 @@ var result = { title: '' }; -function createUrl(url) +function normalizeUrl(url) { var element = document.createElement('a'); element.href = url; @@ -22,6 +22,14 @@ function createUrl(url) return element.href; } +function getOrigin(url) +{ + var element = document.createElement('a'); + element.href = url; + + return element.origin; +} + function createHitTest(window, element, result) { if (!element) @@ -36,13 +44,19 @@ function createHitTest(window, element, result) if (result.tagName == 'frame' || result.tagName == 'iframe') { - var frameDocument = element.contentWindow.document; + result.frameUrl = normalizeUrl(element.src); - result.frameUrl = createUrl(element.src); - result.title = frameDocument.title; - result.offset = [(result.offset[0] + geometry.left), (result.offset[1] + geometry.top)]; + if (getOrigin(document.location.href) == getOrigin(element.src)) + { + var frameDocument = element.contentWindow.document; + + result.title = frameDocument.title; + result.offset = [(result.offset[0] + geometry.left), (result.offset[1] + geometry.top)]; - return createHitTest(element.contentWindow, ((%1 >= 0) ? frameDocument.elementFromPoint((%1 - result.offset[0]), (%2 - result.offset[1])) : frameDocument.activeElement), result); + return createHitTest(element.contentWindow, ((%1 >= 0) ? frameDocument.elementFromPoint((%1 - result.offset[0]), (%2 - result.offset[1])) : frameDocument.activeElement), result); + } + + return result; } var anchorElement = element.closest('a[href]'); @@ -66,7 +80,7 @@ function createHitTest(window, element, result) if (result.tagName == 'img') { result.alternateText = element.alt; - result.imageUrl = createUrl(element.src); + result.imageUrl = normalizeUrl(element.src); result.longDescription = element.longDesc; } else if (result.tagName == 'audio' || result.tagName == 'video') @@ -91,7 +105,7 @@ function createHitTest(window, element, result) result.flags |= 128; } - result.mediaUrl = createUrl(element.src); + result.mediaUrl = normalizeUrl(element.src); result.playbackRate = element.playbackRate; } @@ -127,7 +141,7 @@ function createHitTest(window, element, result) if ((result.tagName == 'button'|| result.tagName == 'input') && (type == 'image' || type == 'submit')) { - result.formUrl = createUrl(element.hasAttribute('formaction') ? element.getAttribute('formaction') : formElement.action); + result.formUrl = normalizeUrl(element.hasAttribute('formaction') ? element.getAttribute('formaction') : formElement.action); } if (formElement.querySelectorAll('input:not([disabled])[name], select:not([disabled])[name], textarea:not([disabled])[name]').length > 0) From f624591e689258f32e8b6b3977cb0df15821f19b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 9 Jan 2019 21:59:26 +0100 Subject: [PATCH 012/107] [QtWebEngine] Preserve flag --- src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp | 2 +- .../backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 9 +++++++-- .../backends/web/qtwebengine/QtWebEngineWebWidget.h | 3 ++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index 1c210befd7..601ff6db3b 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -538,7 +538,7 @@ bool QtWebEnginePage::acceptNavigationRequest(const QUrl &url, NavigationType ty if (!profile()->isOffTheRecord()) { - entry.identifier = HistoryManager::addEntry(url, {}, {}); + entry.identifier = HistoryManager::addEntry(url, {}, {}, (m_widget ? m_widget->isTypedIn() : false)); } m_history.append(entry); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 1fea7b78c7..07ecef1db8 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -75,7 +75,7 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac m_updateNavigationActionsTimer(0), m_isEditing(false), m_isFullScreen(false), - m_isTyped(false) + m_isTypedIn(false) { setFocusPolicy(Qt::StrongFocus); @@ -1386,7 +1386,7 @@ void QtWebEngineWebWidget::setUrl(const QUrl &url, bool isTyped) } else { - m_isTyped = isTyped; + m_isTypedIn = isTyped; const QUrl targetUrl(Utils::expandUrl(url)); @@ -1869,6 +1869,11 @@ bool QtWebEngineWebWidget::isScrollBar(const QPoint &position) const return false; } +bool QtWebEngineWebWidget::isTypedIn() const +{ + return m_isTypedIn; +} + bool QtWebEngineWebWidget::eventFilter(QObject *object, QEvent *event) { switch (event->type()) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index f6cd8da3ce..d81c8043e4 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -141,6 +141,7 @@ public slots: #endif bool isPopup() const override; bool isScrollBar(const QPoint &position) const override; + bool isTypedIn() const; protected slots: void handleLoadStarted(); @@ -181,7 +182,7 @@ protected slots: int m_updateNavigationActionsTimer; bool m_isEditing; bool m_isFullScreen; - bool m_isTyped; + bool m_isTypedIn; friend class QtWebEnginePage; friend class QtWebEngineWebBackend; From 479f833d12661784a291fe62fee9d4f4e3f0ae0c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 18 Jan 2019 19:04:02 +0100 Subject: [PATCH 013/107] Port to DataFetchJob --- src/core/AdblockContentFiltersProfile.cpp | 46 +++++++++++++---------- src/core/AdblockContentFiltersProfile.h | 9 +++-- src/core/ContentFiltersManager.cpp | 2 +- src/core/ContentFiltersManager.h | 4 +- 4 files changed, 36 insertions(+), 25 deletions(-) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index adfa7c8982..97e534f6e5 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -2,7 +2,7 @@ * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2010 - 2014 David Rosca * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -21,8 +21,7 @@ #include "AdblockContentFiltersProfile.h" #include "Console.h" -#include "NetworkManager.h" -#include "NetworkManagerFactory.h" +#include "Job.h" #include "SessionsManager.h" #include @@ -30,8 +29,6 @@ #include #include #include -#include -#include namespace Otter { @@ -42,7 +39,7 @@ QHash Ad AdblockContentFiltersProfile::AdblockContentFiltersProfile(const QString &name, const QString &title, const QUrl &updateUrl, const QDateTime &lastUpdate, const QStringList &languages, int updateInterval, const ProfileCategory &category, const ProfileFlags &flags, QObject *parent) : ContentFiltersProfile(parent), m_root(nullptr), - m_networkReply(nullptr), + m_dataFetchJob(nullptr), m_name(name), m_title(title), m_updateUrl(updateUrl), @@ -584,26 +581,27 @@ ContentFiltersManager::CheckResult AdblockContentFiltersProfile::checkRuleMatch( return {}; } -void AdblockContentFiltersProfile::handleReplyFinished() +void AdblockContentFiltersProfile::handleJobFinished(bool isSuccess) { m_isUpdating = false; - if (!m_networkReply) + if (!m_dataFetchJob) { return; } - m_networkReply->deleteLater(); + m_dataFetchJob->deleteLater(); - const QByteArray downloadedHeader(m_networkReply->readLine()); - const QByteArray downloadedChecksum(m_networkReply->readLine()); - const QByteArray downloadedData(m_networkReply->readAll()); + QIODevice *device(m_dataFetchJob->getData()); + const QByteArray downloadedHeader(device->readLine()); + const QByteArray downloadedChecksum(device->readLine()); + const QByteArray downloadedData(device->readAll()); - if (m_networkReply->error() != QNetworkReply::NoError) + if (!isSuccess) { m_error = DownloadError; - Console::addMessage(QCoreApplication::translate("main", "Failed to update content blocking profile: %1").arg(m_networkReply->errorString()), Console::OtherCategory, Console::ErrorLevel, getPath()); + Console::addMessage(QCoreApplication::translate("main", "Failed to update content blocking profile: %1").arg(device->errorString()), Console::OtherCategory, Console::ErrorLevel, getPath()); return; } @@ -832,6 +830,11 @@ int AdblockContentFiltersProfile::getUpdateInterval() const return m_updateInterval; } +int AdblockContentFiltersProfile::getUpdateProgress() const +{ + return (m_dataFetchJob ? m_dataFetchJob->getProgress() : -1); +} + bool AdblockContentFiltersProfile::loadRules() { m_error = NoError; @@ -894,9 +897,12 @@ bool AdblockContentFiltersProfile::update() return false; } - m_networkReply = NetworkManagerFactory::createRequest(m_updateUrl); + m_dataFetchJob = new DataFetchJob(m_updateUrl, this); + + connect(m_dataFetchJob, &Job::jobFinished, this, &AdblockContentFiltersProfile::handleJobFinished); + connect(m_dataFetchJob, &Job::progressChanged, this, &AdblockContentFiltersProfile::updateProgressChanged); - connect(m_networkReply, &QNetworkReply::finished, this, &AdblockContentFiltersProfile::handleReplyFinished); + m_dataFetchJob->start(); m_isUpdating = true; @@ -907,11 +913,11 @@ bool AdblockContentFiltersProfile::remove() { const QString path(SessionsManager::getWritableDataPath(QLatin1String("contentBlocking/%1.txt")).arg(m_name)); - if (m_networkReply) + if (m_dataFetchJob) { - m_networkReply->abort(); - m_networkReply->deleteLater(); - m_networkReply = nullptr; + m_dataFetchJob->cancel(); + m_dataFetchJob->deleteLater(); + m_dataFetchJob = nullptr; } if (QFile::exists(path)) diff --git a/src/core/AdblockContentFiltersProfile.h b/src/core/AdblockContentFiltersProfile.h index 12a9575464..78e87d25f8 100644 --- a/src/core/AdblockContentFiltersProfile.h +++ b/src/core/AdblockContentFiltersProfile.h @@ -2,7 +2,7 @@ * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2010 - 2014 David Rosca * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * 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 @@ -29,6 +29,8 @@ namespace Otter { +class DataFetchJob; + class AdblockContentFiltersProfile final : public ContentFiltersProfile { Q_OBJECT @@ -52,6 +54,7 @@ class AdblockContentFiltersProfile final : public ContentFiltersProfile ProfileError getError() const override; ProfileFlags getFlags() const override; int getUpdateInterval() const override; + int getUpdateProgress() const override; bool update() override; bool remove() override; bool isUpdating() const override; @@ -127,11 +130,11 @@ class AdblockContentFiltersProfile final : public ContentFiltersProfile bool resolveDomainExceptions(const QString &url, const QStringList &ruleList) const; protected slots: - void handleReplyFinished(); + void handleJobFinished(bool isSuccess); private: Node *m_root; - QNetworkReply *m_networkReply; + DataFetchJob *m_dataFetchJob; QString m_requestUrl; QString m_requestHost; QString m_baseUrlHost; diff --git a/src/core/ContentFiltersManager.cpp b/src/core/ContentFiltersManager.cpp index 74b919f561..4b8621df28 100644 --- a/src/core/ContentFiltersManager.cpp +++ b/src/core/ContentFiltersManager.cpp @@ -1,7 +1,7 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 diff --git a/src/core/ContentFiltersManager.h b/src/core/ContentFiltersManager.h index af92c35d2e..f47d45a604 100644 --- a/src/core/ContentFiltersManager.h +++ b/src/core/ContentFiltersManager.h @@ -1,7 +1,7 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -157,6 +157,7 @@ class ContentFiltersProfile : public QObject virtual ProfileError getError() const = 0; virtual ProfileFlags getFlags() const = 0; virtual int getUpdateInterval() const = 0; + virtual int getUpdateProgress() const = 0; virtual bool update() = 0; virtual bool remove() = 0; virtual bool isUpdating() const = 0; @@ -164,6 +165,7 @@ class ContentFiltersProfile : public QObject signals: void profileModified(const QString &profile); + void updateProgressChanged(int progress); }; } From 149c2202c13d77ebdd310cc0e430a6cf6e2f4b19 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 18 Jan 2019 20:07:30 +0100 Subject: [PATCH 014/107] Rewrite checksum verification using QTextStream --- src/core/AdblockContentFiltersProfile.cpp | 41 +++++++++++++++-------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index 97e534f6e5..8b70d5abac 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -593,9 +593,6 @@ void AdblockContentFiltersProfile::handleJobFinished(bool isSuccess) m_dataFetchJob->deleteLater(); QIODevice *device(m_dataFetchJob->getData()); - const QByteArray downloadedHeader(device->readLine()); - const QByteArray downloadedChecksum(device->readLine()); - const QByteArray downloadedData(device->readAll()); if (!isSuccess) { @@ -606,19 +603,37 @@ void AdblockContentFiltersProfile::handleJobFinished(bool isSuccess) return; } - if (downloadedChecksum.contains(QByteArrayLiteral("! Checksum: "))) + const QByteArray rawData(device->readAll()); + QTextStream stream(rawData); + stream.setCodec("UTF-8"); + + QByteArray parsedData(stream.readLine().toUtf8()); + QByteArray checksum; + + while (!stream.atEnd()) { - QByteArray checksum(downloadedChecksum); - const QByteArray verifiedChecksum(QCryptographicHash::hash(downloadedHeader + QString(downloadedData).replace(QRegularExpression(QLatin1String("^.*\n{2,}")), QLatin1String("\n")).toStdString().c_str(), QCryptographicHash::Md5)); + QString line(stream.readLine()); - if (verifiedChecksum.toBase64().replace(QByteArrayLiteral("="), QByteArray()) != checksum.replace(QByteArrayLiteral("! Checksum: "), QByteArray()).replace(QByteArrayLiteral("\n"), QByteArray())) + if (!line.isEmpty()) { - m_error = ChecksumError; + if (checksum.isEmpty() && line.startsWith(QLatin1String("! Checksum:"))) + { + checksum = line.remove(0, 11).trimmed().toUtf8(); + } + else + { + parsedData.append(QLatin1Char('\n') + line); + } + } + } - Console::addMessage(QCoreApplication::translate("main", "Failed to update content blocking profile: checksum mismatch"), Console::OtherCategory, Console::ErrorLevel, getPath()); + if (!checksum.isEmpty() && QCryptographicHash::hash(parsedData, QCryptographicHash::Md5).toBase64().remove(22, 2) != checksum) + { + m_error = ChecksumError; - return; - } + Console::addMessage(QCoreApplication::translate("main", "Failed to update content blocking profile: checksum mismatch"), Console::OtherCategory, Console::ErrorLevel, getPath()); + + return; } QDir().mkpath(SessionsManager::getWritableDataPath(QLatin1String("contentBlocking"))); @@ -634,9 +649,7 @@ void AdblockContentFiltersProfile::handleJobFinished(bool isSuccess) return; } - file.write(downloadedHeader); - file.write(downloadedChecksum); - file.write(downloadedData); + file.write(rawData); m_lastUpdate = QDateTime::currentDateTimeUtc(); From bb3270d8f380a04ece189de84bbf004635348f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 18 Jan 2019 21:16:33 +0100 Subject: [PATCH 015/107] Drop redefined signal --- src/core/AdblockContentFiltersProfile.h | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/core/AdblockContentFiltersProfile.h b/src/core/AdblockContentFiltersProfile.h index 78e87d25f8..ec5a2749a4 100644 --- a/src/core/AdblockContentFiltersProfile.h +++ b/src/core/AdblockContentFiltersProfile.h @@ -158,9 +158,6 @@ protected slots: static QVector m_separators; static QHash m_options; static QHash m_resourceTypes; - -signals: - void profileModified(const QString &profile); }; } From e668c766147689a0a50a1fa215e1eb7c08fbabfb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 18 Jan 2019 21:41:31 +0100 Subject: [PATCH 016/107] Use QCoreApplication::instance() as parent to prevent crashes --- src/modules/windows/feeds/FeedsContentsWidget.cpp | 6 +++--- src/modules/windows/feeds/FeedsContentsWidget.h | 2 +- src/modules/windows/web/StartPageWidget.cpp | 6 +++--- src/modules/windows/web/StartPageWidget.h | 2 +- src/ui/preferences/ContentBlockingDialog.cpp | 6 +++--- src/ui/preferences/ContentBlockingDialog.h | 2 +- src/ui/preferences/PreferencesSearchPageWidget.cpp | 6 +++--- src/ui/preferences/PreferencesSearchPageWidget.h | 2 +- 8 files changed, 16 insertions(+), 16 deletions(-) diff --git a/src/modules/windows/feeds/FeedsContentsWidget.cpp b/src/modules/windows/feeds/FeedsContentsWidget.cpp index 2b261f6f4b..e71f54eb1b 100644 --- a/src/modules/windows/feeds/FeedsContentsWidget.cpp +++ b/src/modules/windows/feeds/FeedsContentsWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2018 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -337,11 +337,11 @@ void FeedsContentsWidget::handleFeedModified(const QUrl &url) if (path.isEmpty()) { - m_updateAnimation = new SpinnerAnimation(this); + m_updateAnimation = new SpinnerAnimation(QCoreApplication::instance()); } else { - m_updateAnimation = new GenericAnimation(path, this); + m_updateAnimation = new GenericAnimation(path, QCoreApplication::instance()); } m_updateAnimation->start(); diff --git a/src/modules/windows/feeds/FeedsContentsWidget.h b/src/modules/windows/feeds/FeedsContentsWidget.h index 5edac7fa19..f6fc9379fe 100644 --- a/src/modules/windows/feeds/FeedsContentsWidget.h +++ b/src/modules/windows/feeds/FeedsContentsWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2018 - 2019 Michal Dutkiewicz aka Emdek * * 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 diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 1c5745eb54..6af5d2e83c 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 - 2017 Piotr Wójcik * * This program is free software: you can redistribute it and/or modify @@ -646,11 +646,11 @@ void StartPageWidget::reloadTile() if (path.isEmpty()) { - m_spinnerAnimation = new SpinnerAnimation(this); + m_spinnerAnimation = new SpinnerAnimation(QCoreApplication::instance()); } else { - m_spinnerAnimation = new GenericAnimation(path, this); + m_spinnerAnimation = new GenericAnimation(path, QCoreApplication::instance()); } m_spinnerAnimation->start(); diff --git a/src/modules/windows/web/StartPageWidget.h b/src/modules/windows/web/StartPageWidget.h index d7995c6a1b..135c3f497b 100644 --- a/src/modules/windows/web/StartPageWidget.h +++ b/src/modules/windows/web/StartPageWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 - 2017 Piotr Wójcik * * This program is free software: you can redistribute it and/or modify diff --git a/src/ui/preferences/ContentBlockingDialog.cpp b/src/ui/preferences/ContentBlockingDialog.cpp index 6064dd30c0..ad258f44bf 100644 --- a/src/ui/preferences/ContentBlockingDialog.cpp +++ b/src/ui/preferences/ContentBlockingDialog.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -307,11 +307,11 @@ void ContentBlockingDialog::updateProfile() if (path.isEmpty()) { - m_updateAnimation = new SpinnerAnimation(this); + m_updateAnimation = new SpinnerAnimation(QCoreApplication::instance()); } else { - m_updateAnimation = new GenericAnimation(path, this); + m_updateAnimation = new GenericAnimation(path, QCoreApplication::instance()); } m_updateAnimation->start(); diff --git a/src/ui/preferences/ContentBlockingDialog.h b/src/ui/preferences/ContentBlockingDialog.h index 4d8fcfd7ac..0fe2ecb702 100644 --- a/src/ui/preferences/ContentBlockingDialog.h +++ b/src/ui/preferences/ContentBlockingDialog.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify diff --git a/src/ui/preferences/PreferencesSearchPageWidget.cpp b/src/ui/preferences/PreferencesSearchPageWidget.cpp index f20dd39f45..31dcd4bfd4 100644 --- a/src/ui/preferences/PreferencesSearchPageWidget.cpp +++ b/src/ui/preferences/PreferencesSearchPageWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2015 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -260,11 +260,11 @@ void PreferencesSearchPageWidget::updateSearchEngine() if (path.isEmpty()) { - m_updateAnimation = new SpinnerAnimation(this); + m_updateAnimation = new SpinnerAnimation(QCoreApplication::instance()); } else { - m_updateAnimation = new GenericAnimation(path, this); + m_updateAnimation = new GenericAnimation(path, QCoreApplication::instance()); } m_updateAnimation->start(); diff --git a/src/ui/preferences/PreferencesSearchPageWidget.h b/src/ui/preferences/PreferencesSearchPageWidget.h index 9c5a5a09d0..1641fe5fc6 100644 --- a/src/ui/preferences/PreferencesSearchPageWidget.h +++ b/src/ui/preferences/PreferencesSearchPageWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2015 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify From ea10074ae383a8c84a24b55d4c7c76186bfb49c2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 20 Jan 2019 17:16:46 +0100 Subject: [PATCH 017/107] Use explicit data role --- src/ui/WebsitePreferencesDialog.cpp | 4 ++-- src/ui/WebsitePreferencesDialog.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/WebsitePreferencesDialog.cpp b/src/ui/WebsitePreferencesDialog.cpp index 027c7d8079..d4a0029a7a 100644 --- a/src/ui/WebsitePreferencesDialog.cpp +++ b/src/ui/WebsitePreferencesDialog.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 - 2016 Piotr Wójcik * Copyright (C) 2015 - 2016 Jan Bajer aka bajasoft * @@ -304,7 +304,7 @@ void WebsitePreferencesDialog::handleButtonClicked(QAbstractButton *button) if (entryIndex.data(Qt::CheckStateRole).toBool()) { - contentBlockingProfiles.append(entryIndex.data(Qt::UserRole).toString()); + contentBlockingProfiles.append(entryIndex.data(ContentFiltersManager::NameRole).toString()); } } } diff --git a/src/ui/WebsitePreferencesDialog.h b/src/ui/WebsitePreferencesDialog.h index e96fafe228..ea9e0145f3 100644 --- a/src/ui/WebsitePreferencesDialog.h +++ b/src/ui/WebsitePreferencesDialog.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 - 2016 Piotr Wójcik * Copyright (C) 2015 - 2016 Jan Bajer aka bajasoft * From ebb3e7b18b58aab1a43c661c26651be81ea82042 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 20 Jan 2019 17:22:41 +0100 Subject: [PATCH 018/107] Use explicit data role --- src/ui/WebsitePreferencesDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/WebsitePreferencesDialog.cpp b/src/ui/WebsitePreferencesDialog.cpp index d4a0029a7a..7658065094 100644 --- a/src/ui/WebsitePreferencesDialog.cpp +++ b/src/ui/WebsitePreferencesDialog.cpp @@ -414,7 +414,7 @@ void WebsitePreferencesDialog::updateContentBlockingProfile(const QString &name) { const QModelIndex entryIndex(m_ui->contentBlockingProfilesViewWidget->getIndex(j, 0, categoryIndex)); - if (entryIndex.data(Qt::UserRole).toString() == name) + if (entryIndex.data(ContentFiltersManager::NameRole).toString() == name) { m_ui->contentBlockingProfilesViewWidget->setData(entryIndex, profile->getTitle(), Qt::DisplayRole); m_ui->contentBlockingProfilesViewWidget->setData(entryIndex.sibling(j, 2), Utils::formatDateTime(profile->getLastUpdate()), Qt::DisplayRole); From 080e8014077796e22a128ee2f1a4a7c2618ae66b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 26 Jan 2019 20:11:12 +0100 Subject: [PATCH 019/107] Minor style fix --- src/ui/preferences/ContentBlockingDialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/ui/preferences/ContentBlockingDialog.cpp b/src/ui/preferences/ContentBlockingDialog.cpp index ad258f44bf..4fcf800ee9 100644 --- a/src/ui/preferences/ContentBlockingDialog.cpp +++ b/src/ui/preferences/ContentBlockingDialog.cpp @@ -527,7 +527,7 @@ void ContentBlockingDialog::save() close(); } -Animation *ContentBlockingDialog::getUpdateAnimation() +Animation* ContentBlockingDialog::getUpdateAnimation() { return m_updateAnimation; } From 4289abbdac3c87a0c0f364788aa5d1c9e1917c25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 18 Jan 2019 21:22:05 +0100 Subject: [PATCH 020/107] Emit signal when update starts --- src/core/AdblockContentFiltersProfile.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index 8b70d5abac..26d203351f 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -919,6 +919,8 @@ bool AdblockContentFiltersProfile::update() m_isUpdating = true; + emit profileModified(); + return true; } From a5451fe854180670638e7b88db316ed3ff70fbed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 18 Jan 2019 21:33:00 +0100 Subject: [PATCH 021/107] Drop separate flag --- src/core/AdblockContentFiltersProfile.cpp | 16 ++++++---------- src/core/AdblockContentFiltersProfile.h | 1 - 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index 26d203351f..da17c404fb 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -48,7 +48,6 @@ AdblockContentFiltersProfile::AdblockContentFiltersProfile(const QString &name, m_error(NoError), m_flags(flags), m_updateInterval(updateInterval), - m_isUpdating(false), m_isEmpty(true), m_wasLoaded(false) { @@ -129,7 +128,7 @@ void AdblockContentFiltersProfile::loadHeader() file.close(); - if (!m_isUpdating && m_updateInterval > 0 && (!m_lastUpdate.isValid() || m_lastUpdate.daysTo(QDateTime::currentDateTimeUtc()) > m_updateInterval)) + if (!m_dataFetchJob && m_updateInterval > 0 && (!m_lastUpdate.isValid() || m_lastUpdate.daysTo(QDateTime::currentDateTimeUtc()) > m_updateInterval)) { update(); } @@ -583,17 +582,16 @@ ContentFiltersManager::CheckResult AdblockContentFiltersProfile::checkRuleMatch( void AdblockContentFiltersProfile::handleJobFinished(bool isSuccess) { - m_isUpdating = false; - if (!m_dataFetchJob) { return; } - m_dataFetchJob->deleteLater(); - QIODevice *device(m_dataFetchJob->getData()); + m_dataFetchJob->deleteLater(); + m_dataFetchJob = nullptr; + if (!isSuccess) { m_error = DownloadError; @@ -887,7 +885,7 @@ bool AdblockContentFiltersProfile::loadRules() bool AdblockContentFiltersProfile::update() { - if (m_isUpdating) + if (m_dataFetchJob) { return false; } @@ -917,8 +915,6 @@ bool AdblockContentFiltersProfile::update() m_dataFetchJob->start(); - m_isUpdating = true; - emit profileModified(); return true; @@ -958,7 +954,7 @@ bool AdblockContentFiltersProfile::resolveDomainExceptions(const QString &url, c bool AdblockContentFiltersProfile::isUpdating() const { - return m_isUpdating; + return (m_dataFetchJob != nullptr); } } diff --git a/src/core/AdblockContentFiltersProfile.h b/src/core/AdblockContentFiltersProfile.h index ec5a2749a4..fcb6314a31 100644 --- a/src/core/AdblockContentFiltersProfile.h +++ b/src/core/AdblockContentFiltersProfile.h @@ -151,7 +151,6 @@ protected slots: ProfileError m_error; ProfileFlags m_flags; int m_updateInterval; - bool m_isUpdating; bool m_isEmpty; bool m_wasLoaded; From 31da607ed44dc22accdabb02bc31663d559461e1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 27 Jan 2019 11:55:05 +0100 Subject: [PATCH 022/107] Prevent update when not in parent thread --- src/core/AdblockContentFiltersProfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index da17c404fb..2606ae1225 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -885,7 +885,7 @@ bool AdblockContentFiltersProfile::loadRules() bool AdblockContentFiltersProfile::update() { - if (m_dataFetchJob) + if (m_dataFetchJob || thread() != QThread::currentThread()) { return false; } From eed9077615ad3264fa02bc27206af1498b71fa21 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 28 Jan 2019 20:29:46 +0100 Subject: [PATCH 023/107] Improve handling of selection when dragging cursor over line numbers --- src/ui/SourceViewerWidget.cpp | 6 ++++-- src/ui/SourceViewerWidget.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/ui/SourceViewerWidget.cpp b/src/ui/SourceViewerWidget.cpp index 11e621e26b..7d1f7a94d1 100644 --- a/src/ui/SourceViewerWidget.cpp +++ b/src/ui/SourceViewerWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2017 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -271,7 +271,9 @@ void MarginWidget::mouseMoveEvent(QMouseEvent *event) if (currentLine != m_lastClickedLine) { - textCursor.movePosition(((currentLine > m_lastClickedLine) ? QTextCursor::Up : QTextCursor::Down), QTextCursor::KeepAnchor, qAbs(m_lastClickedLine - currentLine)); + const bool isMovingUp(currentLine < m_lastClickedLine); + + textCursor.movePosition((isMovingUp ? QTextCursor::Down : QTextCursor::Up), QTextCursor::KeepAnchor, qAbs(m_lastClickedLine - currentLine - (isMovingUp ? 0 : 1))); m_sourceViewer->setTextCursor(textCursor); } diff --git a/src/ui/SourceViewerWidget.h b/src/ui/SourceViewerWidget.h index ae58c1f1d0..d0512373bd 100644 --- a/src/ui/SourceViewerWidget.h +++ b/src/ui/SourceViewerWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2017 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 From 2845a0b8f25c0ab944563789838caedfbfd9db25 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 29 Jan 2019 21:36:47 +0100 Subject: [PATCH 024/107] Update note about QtConcurrent --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index b6f43c762f..43d8afeecf 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -3,7 +3,7 @@ Build and install instructions To install Otter Browser from source you need to have the [Qt SDK](https://www.qt.io/download-open-source/) (5.6.0 or newer) installed. You can use system-wide libraries when available, but you will need to install header files for modules specified in *CMakeLists.txt* (listed in the line starting with `target_link_libraries`). You might also need to install additional header files for GStreamer and libxml2. -Sometimes you may need to manually add QtConcurrent to the list of required modules in *CMakeLists.txt*, by adding it to the line starting with `qt5_use_modules(otter-browser`, resulting in `qt5_use_modules(otter-browser Concurrent`. +Sometimes you may need to manually add QtConcurrent to the list of required modules in *CMakeLists.txt*, by adding it to the line starting with `target_link_libraries(otter-browser Qt5::Core`, resulting in `target_link_libraries(otter-browser Qt5::Core Qt5::Concurrent`. CMake (3.1.0 or newer) is used for the build system. You need to perform these steps to get clean build (last step is optional): From 463cfa7feabbfa8473015ac30c008d6ae97d051c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 30 Jan 2019 21:47:12 +0100 Subject: [PATCH 025/107] Create unique identifier for profile --- src/ui/preferences/ContentBlockingProfileDialog.cpp | 11 ++--------- src/ui/preferences/ContentBlockingProfileDialog.h | 2 +- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/ui/preferences/ContentBlockingProfileDialog.cpp b/src/ui/preferences/ContentBlockingProfileDialog.cpp index 199c20461e..1dd8fe495c 100644 --- a/src/ui/preferences/ContentBlockingProfileDialog.cpp +++ b/src/ui/preferences/ContentBlockingProfileDialog.cpp @@ -1,7 +1,7 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2016 Jan Bajer aka bajasoft -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -106,16 +106,9 @@ void ContentBlockingProfileDialog::save() { QDir().mkpath(SessionsManager::getWritableDataPath(QLatin1String("contentBlocking"))); - const QString fileName(QFileInfo(url.fileName()).completeBaseName()); + const QString fileName(Utils::createIdentifier(QFileInfo(url.fileName()).completeBaseName(), ContentFiltersManager::getProfileNames())); QFile file(SessionsManager::getWritableDataPath(QLatin1String("contentBlocking/%1.txt")).arg(fileName)); - if (file.exists()) - { - QMessageBox::critical(this, tr("Error"), tr("Profile with name %1.txt already exists.").arg(fileName), QMessageBox::Close); - - return; - } - if (!file.open(QIODevice::WriteOnly | QIODevice::Text)) { QMessageBox::critical(this, tr("Error"), tr("Failed to create profile file: %1.").arg(file.errorString()), QMessageBox::Close); diff --git a/src/ui/preferences/ContentBlockingProfileDialog.h b/src/ui/preferences/ContentBlockingProfileDialog.h index 2e9011145b..1cbccc2a29 100644 --- a/src/ui/preferences/ContentBlockingProfileDialog.h +++ b/src/ui/preferences/ContentBlockingProfileDialog.h @@ -1,7 +1,7 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2016 Jan Bajer aka bajasoft -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2019 Michal Dutkiewicz aka Emdek * * 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 From c180163f5aa5a5b5b5f410e7b4b2f9c2a61a0c7f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 27 Feb 2019 21:25:28 +0100 Subject: [PATCH 026/107] Map to source index --- .../bookmarks/BookmarksContentsWidget.cpp | 23 ++++++++++--------- .../bookmarks/BookmarksContentsWidget.h | 2 ++ 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp b/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp index 30ba697d9a..9ea89aeb4a 100644 --- a/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp +++ b/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp @@ -40,6 +40,7 @@ namespace Otter { BookmarksContentsWidget::BookmarksContentsWidget(const QVariantMap ¶meters, Window *window, QWidget *parent) : ContentsWidget(parameters, window, parent), + m_model(nullptr), m_ui(new Ui::BookmarksContentsWidget) { m_ui->setupUi(this); @@ -50,15 +51,15 @@ BookmarksContentsWidget::BookmarksContentsWidget(const QVariantMap ¶meters, addMenu->addAction(tr("Add Bookmark…"), this, &BookmarksContentsWidget::addBookmark); addMenu->addAction(tr("Add Separator"), this, &BookmarksContentsWidget::addSeparator); - ProxyModel *model(new ProxyModel(BookmarksManager::getModel(), QVector >({{tr("Title"), BookmarksModel::TitleRole}, {tr("Address"), BookmarksModel::UrlRole}, {tr("Description"), BookmarksModel::DescriptionRole}, {tr("Keyword"), BookmarksModel::KeywordRole}, {tr("Added"), BookmarksModel::TimeAddedRole}, {tr("Modified"), BookmarksModel::TimeModifiedRole}, {tr("Visited"), BookmarksModel::TimeVisitedRole}, {tr("Visits"), BookmarksModel::VisitsRole}}), this)); - model->setHeaderData(0, Qt::Horizontal, 300, HeaderViewWidget::WidthRole); - model->setHeaderData(1, Qt::Horizontal, 300, HeaderViewWidget::WidthRole); - model->setHeaderData(3, Qt::Horizontal, 150, HeaderViewWidget::WidthRole); - model->setHeaderData(7, Qt::Horizontal, 150, HeaderViewWidget::WidthRole); + m_model = new ProxyModel(BookmarksManager::getModel(), QVector >({{tr("Title"), BookmarksModel::TitleRole}, {tr("Address"), BookmarksModel::UrlRole}, {tr("Description"), BookmarksModel::DescriptionRole}, {tr("Keyword"), BookmarksModel::KeywordRole}, {tr("Added"), BookmarksModel::TimeAddedRole}, {tr("Modified"), BookmarksModel::TimeModifiedRole}, {tr("Visited"), BookmarksModel::TimeVisitedRole}, {tr("Visits"), BookmarksModel::VisitsRole}}), this); + m_model->setHeaderData(0, Qt::Horizontal, 300, HeaderViewWidget::WidthRole); + m_model->setHeaderData(1, Qt::Horizontal, 300, HeaderViewWidget::WidthRole); + m_model->setHeaderData(3, Qt::Horizontal, 150, HeaderViewWidget::WidthRole); + m_model->setHeaderData(7, Qt::Horizontal, 150, HeaderViewWidget::WidthRole); m_ui->addButton->setMenu(addMenu); m_ui->bookmarksViewWidget->setViewMode(ItemViewWidget::TreeView); - m_ui->bookmarksViewWidget->setModel(model); + m_ui->bookmarksViewWidget->setModel(m_model); m_ui->bookmarksViewWidget->setExpanded(m_ui->bookmarksViewWidget->model()->index(0, 0), true); m_ui->bookmarksViewWidget->installEventFilter(this); m_ui->bookmarksViewWidget->viewport()->installEventFilter(this); @@ -117,12 +118,12 @@ void BookmarksContentsWidget::addSeparator() void BookmarksContentsWidget::removeBookmark() { - BookmarksManager::getModel()->trashBookmark(BookmarksManager::getModel()->getBookmark(m_ui->bookmarksViewWidget->currentIndex())); + BookmarksManager::getModel()->trashBookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); } void BookmarksContentsWidget::openBookmark() { - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_ui->bookmarksViewWidget->currentIndex())); + const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); if (bookmark) { @@ -134,7 +135,7 @@ void BookmarksContentsWidget::openBookmark() void BookmarksContentsWidget::bookmarkProperties() { - BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_ui->bookmarksViewWidget->currentIndex())); + BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); if (bookmark) { @@ -214,7 +215,7 @@ void BookmarksContentsWidget::showContextMenu(const QPoint &position) { menu.addAction(tr("Restore Bookmark"), &menu, [&]() { - BookmarksManager::getModel()->restoreBookmark(BookmarksManager::getModel()->getBookmark(m_ui->bookmarksViewWidget->currentIndex())); + BookmarksManager::getModel()->restoreBookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); }); } else @@ -290,7 +291,7 @@ void BookmarksContentsWidget::print(QPrinter *printer) BookmarksContentsWidget::BookmarkLocation BookmarksContentsWidget::getBookmarkCreationLocation() { - const QModelIndex index(m_ui->bookmarksViewWidget->currentIndex()); + const QModelIndex index(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex())); BookmarksModel::Bookmark *item(BookmarksManager::getModel()->getBookmark(index)); BookmarkLocation location; diff --git a/src/modules/windows/bookmarks/BookmarksContentsWidget.h b/src/modules/windows/bookmarks/BookmarksContentsWidget.h index 0474c47f54..c83f96b4bc 100644 --- a/src/modules/windows/bookmarks/BookmarksContentsWidget.h +++ b/src/modules/windows/bookmarks/BookmarksContentsWidget.h @@ -33,6 +33,7 @@ namespace Ui class BookmarksContentsWidget; } +class ProxyModel; class Window; class BookmarksContentsWidget final : public ContentsWidget @@ -75,6 +76,7 @@ protected slots: void updateActions(); private: + ProxyModel *m_model; Ui::BookmarksContentsWidget *m_ui; }; From 65785aeacb77420102e6208c460509762a20801d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 5 Apr 2019 10:16:54 +0200 Subject: [PATCH 027/107] Fix warning --- src/ui/preferences/PreferencesAdvancedPageWidget.cpp | 4 ++-- src/ui/preferences/PreferencesAdvancedPageWidget.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/preferences/PreferencesAdvancedPageWidget.cpp b/src/ui/preferences/PreferencesAdvancedPageWidget.cpp index c1c8e2953c..4b7df9e573 100644 --- a/src/ui/preferences/PreferencesAdvancedPageWidget.cpp +++ b/src/ui/preferences/PreferencesAdvancedPageWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft * Copyright (C) 2016 - 2017 Piotr Wójcik * @@ -257,7 +257,7 @@ PreferencesAdvancedPageWidget::PreferencesAdvancedPageWidget(QWidget *parent) : } const QList defaultCiphers(NetworkManagerFactory::getDefaultCiphers()); - const QList supportedCiphers(QSslSocket::supportedCiphers()); + const QList supportedCiphers(QSslConfiguration::supportedCiphers()); for (int i = 0; i < supportedCiphers.count(); ++i) { diff --git a/src/ui/preferences/PreferencesAdvancedPageWidget.h b/src/ui/preferences/PreferencesAdvancedPageWidget.h index c61ea18383..b07522d750 100644 --- a/src/ui/preferences/PreferencesAdvancedPageWidget.h +++ b/src/ui/preferences/PreferencesAdvancedPageWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 - 2017 Jan Bajer aka bajasoft * Copyright (C) 2016 - 2017 Piotr Wójcik * From b99249448d8c0ccc8b7bdea61098f86cb697af39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 5 Apr 2019 10:45:47 +0200 Subject: [PATCH 028/107] Fix warnings --- src/core/NetworkManagerFactory.cpp | 10 +++++----- src/core/NetworkManagerFactory.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/core/NetworkManagerFactory.cpp b/src/core/NetworkManagerFactory.cpp index 23cd43b870..9a214e1a29 100644 --- a/src/core/NetworkManagerFactory.cpp +++ b/src/core/NetworkManagerFactory.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 Piotr Wójcik * * This program is free software: you can redistribute it and/or modify @@ -35,7 +35,7 @@ #include #include #include -#include +#include namespace Otter { @@ -242,7 +242,7 @@ void NetworkManagerFactory::initialize() } m_isInitialized = true; - m_defaultCiphers = QSslSocket::defaultCiphers(); + m_defaultCiphers = QSslConfiguration::defaultConfiguration().ciphers(); for (int i = (m_defaultCiphers.count() - 1); i >= 0; --i) { @@ -528,7 +528,7 @@ void NetworkManagerFactory::handleOptionChanged(int identifier, const QVariant & case SettingsManager::Security_CiphersOption: if (value.toString() == QLatin1String("default")) { - QSslSocket::setDefaultCiphers(m_defaultCiphers); + QSslConfiguration::defaultConfiguration().setCiphers(m_defaultCiphers); } else { @@ -545,7 +545,7 @@ void NetworkManagerFactory::handleOptionChanged(int identifier, const QVariant & } } - QSslSocket::setDefaultCiphers(ciphers); + QSslConfiguration::defaultConfiguration().setCiphers(ciphers); } break; diff --git a/src/core/NetworkManagerFactory.h b/src/core/NetworkManagerFactory.h index 891ae785fb..f253e33f38 100644 --- a/src/core/NetworkManagerFactory.h +++ b/src/core/NetworkManagerFactory.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2014 Piotr Wójcik * * This program is free software: you can redistribute it and/or modify From 6bfd8c7d2573575615658fc7827d39e9bffc1655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 6 Apr 2019 21:03:18 +0200 Subject: [PATCH 029/107] Fix warning --- src/ui/NotificationDialog.cpp | 19 ++++++++++++------- src/ui/NotificationDialog.h | 2 +- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ui/NotificationDialog.cpp b/src/ui/NotificationDialog.cpp index 700e4f62a1..4f7160844e 100644 --- a/src/ui/NotificationDialog.cpp +++ b/src/ui/NotificationDialog.cpp @@ -1,7 +1,7 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2015 Jan Bajer aka bajasoft -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -26,9 +26,9 @@ #include #include #include -#include +#include +#include #include -#include #include namespace Otter @@ -148,11 +148,16 @@ void NotificationDialog::resizeEvent(QResizeEvent *event) { QWidget::resizeEvent(event); - QRect geometry(QApplication::desktop()->availableGeometry()); - geometry.setRight(geometry.right() - 20); - geometry.setBottom(geometry.bottom() - 20); + const QScreen *screen(window()->windowHandle()->screen()); - setGeometry(QStyle::alignedRect(Qt::LeftToRight, (Qt::AlignBottom | Qt::AlignRight), size(), geometry)); + if (screen) + { + QRect geometry(screen->availableGeometry()); + geometry.setRight(geometry.right() - 20); + geometry.setBottom(geometry.bottom() - 20); + + setGeometry(QStyle::alignedRect(Qt::LeftToRight, (Qt::AlignBottom | Qt::AlignRight), size(), geometry)); + } } bool NotificationDialog::eventFilter(QObject *object, QEvent *event) diff --git a/src/ui/NotificationDialog.h b/src/ui/NotificationDialog.h index 144b2e2403..e5dc0fafa8 100644 --- a/src/ui/NotificationDialog.h +++ b/src/ui/NotificationDialog.h @@ -1,7 +1,7 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. * Copyright (C) 2015 Jan Bajer aka bajasoft -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 From 16995b077de34e5d3a2aef805a3ac564f4746d85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 7 Apr 2019 14:21:59 +0200 Subject: [PATCH 030/107] Use QFrame as base class of NotificationDialog --- src/ui/NotificationDialog.cpp | 53 +++++++++++++---------------------- src/ui/NotificationDialog.h | 5 ++-- 2 files changed, 21 insertions(+), 37 deletions(-) diff --git a/src/ui/NotificationDialog.cpp b/src/ui/NotificationDialog.cpp index 4f7160844e..cabf8598fe 100644 --- a/src/ui/NotificationDialog.cpp +++ b/src/ui/NotificationDialog.cpp @@ -23,7 +23,6 @@ #include "../core/SettingsManager.h" #include "../core/ThemesManager.h" -#include #include #include #include @@ -34,23 +33,11 @@ namespace Otter { -NotificationDialog::NotificationDialog(Notification *notification, QWidget *parent) : QDialog(parent), +NotificationDialog::NotificationDialog(Notification *notification, QWidget *parent) : QFrame(parent), m_notification(notification), m_closeLabel(nullptr), m_closeTimer(0) { - QFrame *notificationFrame(new QFrame(this)); - notificationFrame->setObjectName(QLatin1String("notificationFrame")); - notificationFrame->setStyleSheet(QLatin1String("#notificationFrame {padding:5px;border:1px solid #CCC;border-radius:10px;background:#F0F0f0;}")); - notificationFrame->setCursor(QCursor(Qt::PointingHandCursor)); - notificationFrame->installEventFilter(this); - - QBoxLayout *mainLayout(new QBoxLayout(QBoxLayout::LeftToRight)); - mainLayout->setContentsMargins(0, 0, 0, 0); - mainLayout->setSpacing(0); - mainLayout->setSizeConstraint(QLayout::SetMinimumSize); - mainLayout->addWidget(notificationFrame); - QLabel *iconLabel(new QLabel(this)); iconLabel->setPixmap(ThemesManager::createIcon(QLatin1String("otter-browser-32")).pixmap(32, 32)); iconLabel->setStyleSheet(QLatin1String("padding:5px;")); @@ -70,24 +57,25 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare style()->drawPrimitive(QStyle::PE_IndicatorTabClose, &option, &painter, this); - m_closeLabel = new QLabel(notificationFrame); + m_closeLabel = new QLabel(this); m_closeLabel->setToolTip(tr("Close")); m_closeLabel->setPixmap(pixmap); m_closeLabel->setAlignment(Qt::AlignTop); m_closeLabel->setMargin(5); m_closeLabel->installEventFilter(this); - QBoxLayout *notificationLayout(new QBoxLayout(QBoxLayout::LeftToRight)); - notificationLayout->setContentsMargins(0, 0, 0, 0); - notificationLayout->setSpacing(0); - notificationLayout->setSizeConstraint(QLayout::SetMinimumSize); - notificationLayout->addWidget(iconLabel); - notificationLayout->addWidget(messageLabel); - notificationLayout->addWidget(m_closeLabel); - - notificationFrame->setLayout(notificationLayout); - - setLayout(mainLayout); + QBoxLayout *layout(new QBoxLayout(QBoxLayout::LeftToRight)); + layout->setContentsMargins(0, 0, 0, 0); + layout->setSpacing(0); + layout->setSizeConstraint(QLayout::SetMinimumSize); + layout->addWidget(iconLabel); + layout->addWidget(messageLabel); + layout->addWidget(m_closeLabel); + + setLayout(layout); + setObjectName(QLatin1String("notificationFrame")); + setStyleSheet(QLatin1String("#notificationFrame {padding:5px;border:1px solid #CCC;border-radius:10px;background:#F0F0f0;}")); + setCursor(QCursor(Qt::PointingHandCursor)); setFixedWidth(400); setMinimumHeight(50); setMaximumHeight(150); @@ -96,7 +84,6 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare setFocusPolicy(Qt::NoFocus); setAttribute(Qt::WA_DeleteOnClose, true); setAttribute(Qt::WA_ShowWithoutActivating, true); - setAttribute(Qt::WA_TranslucentBackground, true); adjustSize(); m_animation = new QPropertyAnimation(this, QStringLiteral("windowOpacity").toLatin1()); @@ -115,7 +102,7 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare void NotificationDialog::changeEvent(QEvent *event) { - QDialog::changeEvent(event); + QFrame::changeEvent(event); if (event->type() == QEvent::LanguageChange) { @@ -160,27 +147,25 @@ void NotificationDialog::resizeEvent(QResizeEvent *event) } } -bool NotificationDialog::eventFilter(QObject *object, QEvent *event) +void NotificationDialog::mouseReleaseEvent(QMouseEvent *event) { - if (event->type() == QEvent::MouseButtonPress && static_cast(event)->button() == Qt::LeftButton) + if (event->button() == Qt::LeftButton) { m_animation->stop(); - if (object == m_closeLabel) + if (m_closeLabel->geometry().contains(event->pos())) { m_notification->markAsIgnored(); close(); - return true; + return; } m_notification->markAsClicked(); close(); } - - return QWidget::eventFilter(object, event); } } diff --git a/src/ui/NotificationDialog.h b/src/ui/NotificationDialog.h index e5dc0fafa8..670f971187 100644 --- a/src/ui/NotificationDialog.h +++ b/src/ui/NotificationDialog.h @@ -30,19 +30,18 @@ namespace Otter class Notification; -class NotificationDialog final : public QDialog +class NotificationDialog final : public QFrame { Q_OBJECT public: explicit NotificationDialog(Notification *notification, QWidget *parent = nullptr); - bool eventFilter(QObject *object, QEvent *event) override; - protected: void changeEvent(QEvent *event) override; void timerEvent(QTimerEvent *event) override; void resizeEvent(QResizeEvent *event) override; + void mouseReleaseEvent(QMouseEvent *event) override; private: Notification *m_notification; From fae204d57ca260f4d72c0b0986fde6c05310a3a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 7 Apr 2019 15:25:08 +0200 Subject: [PATCH 031/107] Set clipping mask --- src/ui/NotificationDialog.cpp | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/ui/NotificationDialog.cpp b/src/ui/NotificationDialog.cpp index cabf8598fe..5620c02692 100644 --- a/src/ui/NotificationDialog.cpp +++ b/src/ui/NotificationDialog.cpp @@ -145,6 +145,30 @@ void NotificationDialog::resizeEvent(QResizeEvent *event) setGeometry(QStyle::alignedRect(Qt::LeftToRight, (Qt::AlignBottom | Qt::AlignRight), size(), geometry)); } + + const int radius(8); + const int cornerSize(radius * 2); + const QRect rectangle(rect()); + QRect corner(rectangle.topLeft(), QSize(cornerSize, cornerSize)); + QRegion region; + region += rectangle.adjusted(radius, 0, -radius, 0); + region += rectangle.adjusted(0, radius, 0, -radius); + region += QRegion(corner, QRegion::Ellipse); + + corner.moveRight(rectangle.right() - 1); + + region += QRegion(corner, QRegion::Ellipse); + + corner.moveBottom(rectangle.bottom() - 1); + corner.moveLeft(rectangle.left()); + + region += QRegion(corner, QRegion::Ellipse); + + corner.moveRight(rectangle.right() - 1); + + region += QRegion(corner, QRegion::Ellipse); + + setMask(region); } void NotificationDialog::mouseReleaseEvent(QMouseEvent *event) From 4b025505a1eb8ba3870357b795d746d839703276 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 7 Apr 2019 19:05:16 +0200 Subject: [PATCH 032/107] Fix fallback icon --- src/ui/NotificationDialog.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/ui/NotificationDialog.cpp b/src/ui/NotificationDialog.cpp index 5620c02692..42ea9cbe3d 100644 --- a/src/ui/NotificationDialog.cpp +++ b/src/ui/NotificationDialog.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include #include @@ -39,7 +40,7 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare m_closeTimer(0) { QLabel *iconLabel(new QLabel(this)); - iconLabel->setPixmap(ThemesManager::createIcon(QLatin1String("otter-browser-32")).pixmap(32, 32)); + iconLabel->setPixmap(QApplication::windowIcon().pixmap(32, 32)); iconLabel->setStyleSheet(QLatin1String("padding:5px;")); QLabel *messageLabel(new QLabel(this)); From bb2cf6819c1d0c84120652d64c4d8ef97ea92c29 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 7 Apr 2019 19:42:39 +0200 Subject: [PATCH 033/107] Fix warning --- src/modules/windows/web/StartPageWidget.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 6af5d2e83c..5681c2c3fd 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -249,11 +249,11 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) case BestFitBackground: { const QString key(QLatin1String("start-page-best-fit-") + QString::number(width()) + QLatin1Char('-') + QString::number(height())); - const QPixmap *cachedBackground(QPixmapCache::find(key)); + QPixmap cachedBackground; - if (cachedBackground) + if (QPixmapCache::find(key, &cachedBackground)) { - painter.drawPixmap(contentsRect(), *cachedBackground, contentsRect().translated(((cachedBackground->width() - width()) / 2), ((cachedBackground->height() - height()) / 2))); + painter.drawPixmap(contentsRect(), cachedBackground, contentsRect().translated(((cachedBackground.width() - width()) / 2), ((cachedBackground.height() - height()) / 2))); } else { @@ -284,11 +284,11 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) case StretchBackground: { const QString key(QLatin1String("start-page-stretch-") + QString::number(width()) + QLatin1Char('-') + QString::number(height())); - const QPixmap *cachedBackground(QPixmapCache::find(key)); + QPixmap cachedBackground; - if (cachedBackground) + if (QPixmapCache::find(key, &cachedBackground)) { - painter.drawPixmap(contentsRect(), *cachedBackground, contentsRect()); + painter.drawPixmap(contentsRect(), cachedBackground, contentsRect()); } else { From 59989f464fe5ed0939aa73f26d73720e45758ec9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 8 Apr 2019 09:16:32 +0200 Subject: [PATCH 034/107] [FreeDesktopOrg] Create fallback action --- .../freedesktoporg/FreeDesktopOrgPlatformIntegration.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/platforms/freedesktoporg/FreeDesktopOrgPlatformIntegration.cpp b/src/modules/platforms/freedesktoporg/FreeDesktopOrgPlatformIntegration.cpp index 716fa2eb54..f2b7150e1e 100644 --- a/src/modules/platforms/freedesktoporg/FreeDesktopOrgPlatformIntegration.cpp +++ b/src/modules/platforms/freedesktoporg/FreeDesktopOrgPlatformIntegration.cpp @@ -242,7 +242,7 @@ void FreeDesktopOrgPlatformIntegration::showNotification(Notification *notificat arguments << QString(); arguments << tr("Notification"); arguments << notification->getMessage(); - arguments << QStringList(); + arguments << QStringList({QLatin1String("default"), QString()}); arguments << QVariantMap({{QLatin1String("image_data"), Application::windowIcon().pixmap(128, 128).toImage()}}); arguments << ((visibilityDuration < 0) ? -1 : (visibilityDuration * 1000)); From 68d9874b0958f42fc25f3c61e8b61ad62c3a7410 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 9 Apr 2019 18:05:52 +0200 Subject: [PATCH 035/107] Look for recently used main windows first --- src/core/SessionsManager.cpp | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/core/SessionsManager.cpp b/src/core/SessionsManager.cpp index de9de38029..c8c302a48f 100644 --- a/src/core/SessionsManager.cpp +++ b/src/core/SessionsManager.cpp @@ -23,6 +23,7 @@ #include "JsonSettings.h" #include "SessionModel.h" #include "../ui/MainWindow.h" +#include "../ui/Window.h" #include #include @@ -842,12 +843,23 @@ bool SessionsManager::isReadOnly() bool SessionsManager::hasUrl(const QUrl &url, bool activate) { const QVector windows(Application::getWindows()); + QMultiMap map; for (int i = 0; i < windows.count(); ++i) { - if (windows.at(i)->hasUrl(url, activate)) + if (windows.at(i)->getActiveWindow()) { - QWidget *window(qobject_cast(windows.at(i)->parent())); + map.insert(windows.at(i)->getActiveWindow()->getLastActivity().toMSecsSinceEpoch(), windows.at(i)); + } + } + + const QVector sortedWindows(map.values().toVector()); + + for (int i = (sortedWindows.count() - 1); i >= 0; --i) + { + if (sortedWindows.at(i)->hasUrl(url, activate)) + { + QWidget *window(qobject_cast(sortedWindows.at(i)->parent())); if (window) { From d0223f30d8d8862d3916d5b29c14ba75098004f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 9 Apr 2019 18:15:08 +0200 Subject: [PATCH 036/107] Use action to activate MainWindow instance --- src/core/SessionsManager.cpp | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/core/SessionsManager.cpp b/src/core/SessionsManager.cpp index c8c302a48f..c7da8a453f 100644 --- a/src/core/SessionsManager.cpp +++ b/src/core/SessionsManager.cpp @@ -859,13 +859,7 @@ bool SessionsManager::hasUrl(const QUrl &url, bool activate) { if (sortedWindows.at(i)->hasUrl(url, activate)) { - QWidget *window(qobject_cast(sortedWindows.at(i)->parent())); - - if (window) - { - window->raise(); - window->activateWindow(); - } + Application::triggerAction(ActionsManager::ActivateWindowAction, {{QLatin1String("window"), sortedWindows.at(i)->getIdentifier()}}, m_instance); return true; } From 35a12b360e098e76b9b3a08cbd0fcd122f8f50b9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 10 Apr 2019 11:41:47 +0200 Subject: [PATCH 037/107] Do not let labels to steal events --- src/ui/NotificationDialog.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/ui/NotificationDialog.cpp b/src/ui/NotificationDialog.cpp index 42ea9cbe3d..e5224df998 100644 --- a/src/ui/NotificationDialog.cpp +++ b/src/ui/NotificationDialog.cpp @@ -42,10 +42,12 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare QLabel *iconLabel(new QLabel(this)); iconLabel->setPixmap(QApplication::windowIcon().pixmap(32, 32)); iconLabel->setStyleSheet(QLatin1String("padding:5px;")); + iconLabel->setAttribute(Qt::WA_TransparentForMouseEvents); QLabel *messageLabel(new QLabel(this)); messageLabel->setText(m_notification->getMessage()); messageLabel->setStyleSheet(QLatin1String("padding:5px;font-size:13px;")); + messageLabel->setAttribute(Qt::WA_TransparentForMouseEvents); messageLabel->setWordWrap(true); QStyleOption option; @@ -61,6 +63,7 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare m_closeLabel = new QLabel(this); m_closeLabel->setToolTip(tr("Close")); m_closeLabel->setPixmap(pixmap); + m_closeLabel->setAttribute(Qt::WA_TransparentForMouseEvents); m_closeLabel->setAlignment(Qt::AlignTop); m_closeLabel->setMargin(5); m_closeLabel->installEventFilter(this); From 05f8e58927a15de760ab221f86b39066d5aa4578 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 10 Apr 2019 11:43:31 +0200 Subject: [PATCH 038/107] Set default state --- src/ui/NotificationDialog.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/ui/NotificationDialog.cpp b/src/ui/NotificationDialog.cpp index e5224df998..faa00cb489 100644 --- a/src/ui/NotificationDialog.cpp +++ b/src/ui/NotificationDialog.cpp @@ -52,6 +52,7 @@ NotificationDialog::NotificationDialog(Notification *notification, QWidget *pare QStyleOption option; option.rect = QRect(0, 0, 16, 16); + option.state = (QStyle::State_Enabled | QStyle::State_AutoRaise); QPixmap pixmap(16, 16); pixmap.fill(Qt::transparent); From 728d4c53c423155d81ce547768802b53bfa5cea1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Thu, 11 Apr 2019 20:46:09 +0200 Subject: [PATCH 039/107] Check if date is valid --- src/core/FeedsManager.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/FeedsManager.cpp b/src/core/FeedsManager.cpp index 31cdf2e213..411ed10c34 100644 --- a/src/core/FeedsManager.cpp +++ b/src/core/FeedsManager.cpp @@ -254,7 +254,7 @@ void Feed::update() if (existingEntry.identifier == entry.identifier) { - if (existingEntry.publicationTime != entry.publicationTime || existingEntry.updateTime != entry.updateTime) + if ((entry.publicationTime.isValid() && existingEntry.publicationTime != entry.publicationTime) || (entry.updateTime.isValid() && existingEntry.updateTime != entry.updateTime)) { ++amount; } From 3aa7072b63fb749960e7f4394621c993a41a0d4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 21 Apr 2019 11:41:02 +0200 Subject: [PATCH 040/107] Use bullet character to mask passwords --- src/modules/windows/passwords/PasswordsContentsWidget.cpp | 4 ++-- src/modules/windows/passwords/PasswordsContentsWidget.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/windows/passwords/PasswordsContentsWidget.cpp b/src/modules/windows/passwords/PasswordsContentsWidget.cpp index 26e1147999..ab3697b7e8 100644 --- a/src/modules/windows/passwords/PasswordsContentsWidget.cpp +++ b/src/modules/windows/passwords/PasswordsContentsWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -94,7 +94,7 @@ void PasswordsContentsWidget::populatePasswords() for (int k = 0; k < passwords.at(j).fields.count(); ++k) { - QList fieldItems({new QStandardItem(passwords.at(j).fields.at(k).name), new QStandardItem((passwords.at(j).fields.at(k).type == PasswordsManager::PasswordField) ? QLatin1String("*****") : passwords.at(j).fields.at(k).value)}); + QList fieldItems({new QStandardItem(passwords.at(j).fields.at(k).name), new QStandardItem((passwords.at(j).fields.at(k).type == PasswordsManager::PasswordField) ? QString(QChar(8226)).repeated(5) : passwords.at(j).fields.at(k).value)}); fieldItems[0]->setData(passwords.at(j).fields.at(k).type, FieldTypeRole); fieldItems[0]->setFlags(fieldItems[0]->flags() | Qt::ItemNeverHasChildren); fieldItems[1]->setFlags(fieldItems[1]->flags() | Qt::ItemNeverHasChildren); diff --git a/src/modules/windows/passwords/PasswordsContentsWidget.h b/src/modules/windows/passwords/PasswordsContentsWidget.h index 4a67721b14..4a94391aa8 100644 --- a/src/modules/windows/passwords/PasswordsContentsWidget.h +++ b/src/modules/windows/passwords/PasswordsContentsWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2019 Michal Dutkiewicz aka Emdek * * 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 From 9a02a7ccb4452fa577763e5e969e3f71b797615c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 29 Apr 2019 19:06:21 +0200 Subject: [PATCH 041/107] Fix broken condition --- src/ui/TextBrowserWidget.cpp | 4 ++-- src/ui/TextBrowserWidget.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/TextBrowserWidget.cpp b/src/ui/TextBrowserWidget.cpp index 0b4757f37e..d2efd92eec 100644 --- a/src/ui/TextBrowserWidget.cpp +++ b/src/ui/TextBrowserWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2018 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -42,7 +42,7 @@ void TextBrowserWidget::setImagesPolicy(TextBrowserWidget::ImagesPolicy policy) QVariant TextBrowserWidget::loadResource(int type, const QUrl &url) { - if ((type == QTextDocument::ImageResource && m_imagesPolicy == NoImages) || (type != QTextDocument::ImageResource && QTextDocument::StyleSheetResource)) + if ((type == QTextDocument::ImageResource && m_imagesPolicy == NoImages) || (type != QTextDocument::ImageResource && type != QTextDocument::StyleSheetResource)) { return {}; } diff --git a/src/ui/TextBrowserWidget.h b/src/ui/TextBrowserWidget.h index eee4144b6b..c2c99d1e31 100644 --- a/src/ui/TextBrowserWidget.h +++ b/src/ui/TextBrowserWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2018 - 2019 Michal Dutkiewicz aka Emdek * * 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 From 074a3320d9bcc8d2272a94c5ba64a06b2d871a47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 1 May 2019 18:23:33 +0200 Subject: [PATCH 042/107] Use helper method --- .../windows/bookmarks/BookmarksContentsWidget.cpp | 15 +++++++++++---- .../windows/bookmarks/BookmarksContentsWidget.h | 1 + 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp b/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp index 9ea89aeb4a..4ac7f45d10 100644 --- a/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp +++ b/src/modules/windows/bookmarks/BookmarksContentsWidget.cpp @@ -118,12 +118,12 @@ void BookmarksContentsWidget::addSeparator() void BookmarksContentsWidget::removeBookmark() { - BookmarksManager::getModel()->trashBookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); + BookmarksManager::getModel()->trashBookmark(getBookmark(m_ui->bookmarksViewWidget->currentIndex())); } void BookmarksContentsWidget::openBookmark() { - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); + const BookmarksModel::Bookmark *bookmark(getBookmark(m_ui->bookmarksViewWidget->currentIndex())); if (bookmark) { @@ -135,7 +135,7 @@ void BookmarksContentsWidget::openBookmark() void BookmarksContentsWidget::bookmarkProperties() { - BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); + BookmarksModel::Bookmark *bookmark(getBookmark(m_ui->bookmarksViewWidget->currentIndex())); if (bookmark) { @@ -215,7 +215,7 @@ void BookmarksContentsWidget::showContextMenu(const QPoint &position) { menu.addAction(tr("Restore Bookmark"), &menu, [&]() { - BookmarksManager::getModel()->restoreBookmark(BookmarksManager::getModel()->getBookmark(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex()))); + BookmarksManager::getModel()->restoreBookmark(getBookmark(m_ui->bookmarksViewWidget->currentIndex())); }); } else @@ -289,6 +289,13 @@ void BookmarksContentsWidget::print(QPrinter *printer) m_ui->bookmarksViewWidget->render(printer); } +BookmarksModel::Bookmark* BookmarksContentsWidget::getBookmark(const QModelIndex &index) const +{ + const QModelIndex mappedIndex(m_model->mapToSource(index)); + + return BookmarksManager::getModel()->getBookmark(mappedIndex.sibling(mappedIndex.row(), 0)); +} + BookmarksContentsWidget::BookmarkLocation BookmarksContentsWidget::getBookmarkCreationLocation() { const QModelIndex index(m_model->mapToSource(m_ui->bookmarksViewWidget->currentIndex())); diff --git a/src/modules/windows/bookmarks/BookmarksContentsWidget.h b/src/modules/windows/bookmarks/BookmarksContentsWidget.h index c83f96b4bc..c2870cfc79 100644 --- a/src/modules/windows/bookmarks/BookmarksContentsWidget.h +++ b/src/modules/windows/bookmarks/BookmarksContentsWidget.h @@ -63,6 +63,7 @@ public slots: }; void changeEvent(QEvent *event) override; + BookmarksModel::Bookmark* getBookmark(const QModelIndex &index) const; BookmarkLocation getBookmarkCreationLocation(); protected slots: From c19bc6b0e7173cad5c44b94b9ae8dd79cb218d2e Mon Sep 17 00:00:00 2001 From: "David H. Gutteridge" Date: Sat, 18 May 2019 14:52:28 -0400 Subject: [PATCH 043/107] FindHunspell.cmake: add Hunspell 1.7 Account for Hunspell 1.7 now being released. --- cmake/FindHunspell.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmake/FindHunspell.cmake b/cmake/FindHunspell.cmake index 70db2aa1c3..2b01552fbe 100644 --- a/cmake/FindHunspell.cmake +++ b/cmake/FindHunspell.cmake @@ -12,7 +12,7 @@ IF (HUNSPELL_INCLUDE_DIR AND HUNSPELL_LIBRARIES) ENDIF (HUNSPELL_INCLUDE_DIR AND HUNSPELL_LIBRARIES) FIND_PATH(HUNSPELL_INCLUDE_DIR hunspell/hunspell.hxx) -FIND_LIBRARY(HUNSPELL_LIBRARIES NAMES hunspell-1.6 hunspell-1.5 hunspell) +FIND_LIBRARY(HUNSPELL_LIBRARIES NAMES hunspell-1.7 hunspell-1.6 hunspell-1.5 hunspell) # handle the QUIETLY and REQUIRED arguments and set HUNSPELL_FOUND to TRUE if # all listed variables are TRUE From 26034173a1c89e46870fb7b6977843b1e133a66c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 24 May 2019 20:30:32 +0200 Subject: [PATCH 044/107] [QtWebEngine] Add missing keywords --- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index d81c8043e4..de3fa4363c 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -130,14 +130,14 @@ public slots: bool canGoForward() const override; bool canFastForward() const override; #if QTWEBENGINECORE_VERSION >= 0x050B00 - bool canInspect() const; + bool canInspect() const override; #endif bool canRedo() const override; bool canUndo() const override; bool canShowContextMenu(const QPoint &position) const override; bool canViewSource() const override; #if QTWEBENGINECORE_VERSION >= 0x050B00 - bool isInspecting() const; + bool isInspecting() const override; #endif bool isPopup() const override; bool isScrollBar(const QPoint &position) const override; From 0073203d717e9e4b65b974aa3f5dcba4acb07635 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 24 May 2019 20:44:19 +0200 Subject: [PATCH 045/107] [QtWebEngine] Add missing keyword --- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index de3fa4363c..b971e2228c 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -65,8 +65,7 @@ class QtWebEngineWebWidget final : public WebWidget void print(QPrinter *printer) override; WebWidget* clone(bool cloneHistory = true, bool isPrivate = false, const QStringList &excludedOptions = {}) const override; #if QTWEBENGINECORE_VERSION >= 0x050B00 - QWidget* getInspector(); -#endif + QWidget* getInspector() override; QWidget* getViewport() override; QString getTitle() const override; QString getDescription() const override; From 8f55cafc8212223e162531834a02f3e4a2bd4238 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 28 May 2019 21:44:40 +0200 Subject: [PATCH 046/107] [QtWebKit] Add missing overrides --- .../backends/web/qtwebkit/QtWebKitWebBackend.cpp | 10 ++++++++++ src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp index 7fffa9550e..44491657f2 100644 --- a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp +++ b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp @@ -371,6 +371,16 @@ void QtWebKitWebPageThumbnailJob::handlePageLoadFinished(bool result) emit jobFinished(true); } +QString QtWebKitWebPageThumbnailJob::getTitle() +{ + return m_title; +} + +QPixmap QtWebKitWebPageThumbnailJob::getThumbnail() +{ + return m_pixmap; +} + bool QtWebKitWebPageThumbnailJob::isRunning() const { return (m_page != nullptr); diff --git a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h index 9168204f00..1368b359a9 100644 --- a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h +++ b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h @@ -87,6 +87,8 @@ class QtWebKitWebPageThumbnailJob final : public WebPageThumbnailJob public: explicit QtWebKitWebPageThumbnailJob(const QUrl &url, const QSize &size, QObject *parent = nullptr); + QString getTitle() override; + QPixmap getThumbnail() override; bool isRunning() const override; public slots: From 0c965ef5489c0d7204909913d26447561632fe83 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 28 May 2019 21:46:56 +0200 Subject: [PATCH 047/107] Mark as const and drop default implementations --- src/core/WebBackend.cpp | 10 ---------- src/core/WebBackend.h | 4 ++-- .../backends/web/qtwebkit/QtWebKitWebBackend.cpp | 4 ++-- src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h | 4 ++-- 4 files changed, 6 insertions(+), 16 deletions(-) diff --git a/src/core/WebBackend.cpp b/src/core/WebBackend.cpp index ca7872e690..4864ece0ec 100644 --- a/src/core/WebBackend.cpp +++ b/src/core/WebBackend.cpp @@ -28,16 +28,6 @@ WebPageThumbnailJob::WebPageThumbnailJob(const QUrl &url, const QSize &size, QOb Q_UNUSED(size) } -QString WebPageThumbnailJob::getTitle() -{ - return {}; -} - -QPixmap WebPageThumbnailJob::getThumbnail() -{ - return {}; -} - WebBackend::WebBackend(QObject *parent) : QObject(parent), Addon() { } diff --git a/src/core/WebBackend.h b/src/core/WebBackend.h index 42aa06763d..f64d292252 100644 --- a/src/core/WebBackend.h +++ b/src/core/WebBackend.h @@ -37,8 +37,8 @@ class WebPageThumbnailJob : public Job public: explicit WebPageThumbnailJob(const QUrl &url, const QSize &size, QObject *parent = nullptr); - virtual QString getTitle(); - virtual QPixmap getThumbnail(); + virtual QString getTitle() const = 0; + virtual QPixmap getThumbnail() const = 0; }; class WebBackend : public QObject, public Addon diff --git a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp index 44491657f2..fa1476746e 100644 --- a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp +++ b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.cpp @@ -371,12 +371,12 @@ void QtWebKitWebPageThumbnailJob::handlePageLoadFinished(bool result) emit jobFinished(true); } -QString QtWebKitWebPageThumbnailJob::getTitle() +QString QtWebKitWebPageThumbnailJob::getTitle() const { return m_title; } -QPixmap QtWebKitWebPageThumbnailJob::getThumbnail() +QPixmap QtWebKitWebPageThumbnailJob::getThumbnail() const { return m_pixmap; } diff --git a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h index 1368b359a9..de11235f48 100644 --- a/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h +++ b/src/modules/backends/web/qtwebkit/QtWebKitWebBackend.h @@ -87,8 +87,8 @@ class QtWebKitWebPageThumbnailJob final : public WebPageThumbnailJob public: explicit QtWebKitWebPageThumbnailJob(const QUrl &url, const QSize &size, QObject *parent = nullptr); - QString getTitle() override; - QPixmap getThumbnail() override; + QString getTitle() const override; + QPixmap getThumbnail() const override; bool isRunning() const override; public slots: From dfcbf2ff9eb352741f3fd8463c6f78c6cf365406 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 1 Jun 2019 21:55:01 +0200 Subject: [PATCH 048/107] Create QBuffer in safe way --- src/ui/ImagePropertiesDialog.cpp | 7 ++++--- src/ui/ImagePropertiesDialog.h | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ui/ImagePropertiesDialog.cpp b/src/ui/ImagePropertiesDialog.cpp index 2fc0cf1061..78893ad431 100644 --- a/src/ui/ImagePropertiesDialog.cpp +++ b/src/ui/ImagePropertiesDialog.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2017 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -44,9 +44,10 @@ ImagePropertiesDialog::ImagePropertiesDialog(const QUrl &url, const QVariantMap if (url.scheme() == QLatin1String("data") && !device) { const QString imageData(url.path()); - QByteArray array(QByteArray::fromBase64(imageData.mid(imageData.indexOf(QLatin1String("base64,")) + 7).toUtf8())); + QBuffer *buffer(new QBuffer(this)); + buffer->setData(QByteArray::fromBase64(imageData.mid(imageData.indexOf(QLatin1String("base64,")) + 7).toUtf8())); - device = new QBuffer(&array, this); + device = buffer; } QImage image; diff --git a/src/ui/ImagePropertiesDialog.h b/src/ui/ImagePropertiesDialog.h index 96763eaaf9..be9c8a7b78 100644 --- a/src/ui/ImagePropertiesDialog.h +++ b/src/ui/ImagePropertiesDialog.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2017 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2019 Michal Dutkiewicz aka Emdek * * 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 From c05106c4cd7ee0c883410b34374fb6460cfb208d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 31 Jul 2019 22:01:24 +0200 Subject: [PATCH 049/107] Override default configuration --- src/core/NetworkManagerFactory.cpp | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/src/core/NetworkManagerFactory.cpp b/src/core/NetworkManagerFactory.cpp index 9a214e1a29..75aa21029b 100644 --- a/src/core/NetworkManagerFactory.cpp +++ b/src/core/NetworkManagerFactory.cpp @@ -526,26 +526,32 @@ void NetworkManagerFactory::handleOptionChanged(int identifier, const QVariant & break; case SettingsManager::Security_CiphersOption: - if (value.toString() == QLatin1String("default")) { - QSslConfiguration::defaultConfiguration().setCiphers(m_defaultCiphers); - } - else - { - const QStringList selectedCiphers(value.toStringList()); - QList ciphers; + QSslConfiguration configuration(QSslConfiguration::defaultConfiguration()); - for (int i = 0; i < selectedCiphers.count(); ++i) + if (value.toString() == QLatin1String("default")) + { + configuration.setCiphers(m_defaultCiphers); + } + else { - const QSslCipher cipher(selectedCiphers.at(i)); + const QStringList selectedCiphers(value.toStringList()); + QList ciphers; - if (!cipher.isNull()) + for (int i = 0; i < selectedCiphers.count(); ++i) { - ciphers.append(cipher); + const QSslCipher cipher(selectedCiphers.at(i)); + + if (!cipher.isNull()) + { + ciphers.append(cipher); + } } + + configuration.setCiphers(ciphers); } - QSslConfiguration::defaultConfiguration().setCiphers(ciphers); + QSslConfiguration::setDefaultConfiguration(configuration); } break; From eb07e1c6740a1b3f35b9572901aa36bf7e9c9d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 8 Sep 2019 22:15:59 +0200 Subject: [PATCH 050/107] Set context --- src/ui/MenuBarWidget.cpp | 4 ++-- src/ui/MenuBarWidget.h | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/ui/MenuBarWidget.cpp b/src/ui/MenuBarWidget.cpp index a2cebf8b98..0c1957f38b 100644 --- a/src/ui/MenuBarWidget.cpp +++ b/src/ui/MenuBarWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -60,7 +60,7 @@ MenuBarWidget::MenuBarWidget(MainWindow *parent) : QMenuBar(parent), { reload(); - connect(ToolBarsManager::getInstance(), &ToolBarsManager::toolBarModified, [&](int identifier) + connect(ToolBarsManager::getInstance(), &ToolBarsManager::toolBarModified, this, [&](int identifier) { if (identifier == ToolBarsManager::MenuBar) { diff --git a/src/ui/MenuBarWidget.h b/src/ui/MenuBarWidget.h index 314864390b..47b9a5a2e2 100644 --- a/src/ui/MenuBarWidget.h +++ b/src/ui/MenuBarWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * * 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 From 0ed463d80cde52fec7aac05269766b0b112078ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 10 Sep 2019 21:50:50 +0200 Subject: [PATCH 051/107] Set context --- src/modules/widgets/transfers/TransfersWidget.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/widgets/transfers/TransfersWidget.cpp b/src/modules/widgets/transfers/TransfersWidget.cpp index 8d7e5e678d..606e75fe5c 100644 --- a/src/modules/widgets/transfers/TransfersWidget.cpp +++ b/src/modules/widgets/transfers/TransfersWidget.cpp @@ -62,7 +62,7 @@ TransfersWidget::TransfersWidget(const ToolBarsManager::ToolBarDefinition::Entry updateState(); }); - connect(TransfersManager::getInstance(), &TransfersManager::transferFinished, [&](Transfer *transfer) + connect(TransfersManager::getInstance(), &TransfersManager::transferFinished, this, [&](Transfer *transfer) { const QList actions(menu()->actions()); From faea32413dbaf1c15d9bdf597dfad5a592cc60da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 21 Sep 2019 21:13:13 +0200 Subject: [PATCH 052/107] Fix broken check --- src/modules/importers/html/HtmlBookmarksImporter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/modules/importers/html/HtmlBookmarksImporter.cpp b/src/modules/importers/html/HtmlBookmarksImporter.cpp index 31a76e9bb6..1df71d48ef 100644 --- a/src/modules/importers/html/HtmlBookmarksImporter.cpp +++ b/src/modules/importers/html/HtmlBookmarksImporter.cpp @@ -78,7 +78,7 @@ void HtmlBookmarksImporter::processElement(const QWebElement &element) if (type != BookmarksModel::UnknownBookmark && !matchedElement.isNull()) { QMap metaData({{BookmarksModel::TitleRole, matchedElement.toPlainText()}}); - const bool isUrlBookmark(type == BookmarksModel::UrlBookmark || BookmarksModel::FeedBookmark); + const bool isUrlBookmark(type == BookmarksModel::UrlBookmark || type == BookmarksModel::FeedBookmark); if (isUrlBookmark) { From becc5458c52a3da4f3758c8dd856c683fb046dbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 29 May 2019 21:28:56 +0200 Subject: [PATCH 053/107] [QtWebEngine] Try to workaround URL borked by backend --- .../backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 6 ++++-- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 07ecef1db8..90157b34ef 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -1121,8 +1121,10 @@ void QtWebEngineWebWidget::notifyTitleChanged() emit titleChanged(getTitle()); } -void QtWebEngineWebWidget::notifyUrlChanged(const QUrl &url) +void QtWebEngineWebWidget::notifyUrlChanged() { + const QUrl &url(getUrl()); + notifyNavigationActionsChanged(); updateOptions(url); @@ -1587,7 +1589,7 @@ QUrl QtWebEngineWebWidget::getUrl() const { const QUrl url(m_page->url()); - return (Utils::isUrlEmpty(url) ? m_page->requestedUrl() : url); + return (Utils::isUrlEmpty(url) ? ((url.toString() == QLatin1String("about:blank#blocked")) ? QUrl(QLatin1String("about:start")) : m_page->requestedUrl()) : url); } QIcon QtWebEngineWebWidget::getIcon() const diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index b971e2228c..5df6a664df 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -153,7 +153,7 @@ protected slots: void handleProxyAuthenticationRequired(const QUrl &url, QAuthenticator *authenticator, const QString &proxy); void handleFullScreenRequest(QWebEngineFullScreenRequest request); void notifyTitleChanged(); - void notifyUrlChanged(const QUrl &url); + void notifyUrlChanged(); void notifyIconChanged(); void notifyPermissionRequested(const QUrl &url, QWebEnginePage::Feature nativeFeature, bool cancel); void notifyRenderProcessTerminated(QWebEnginePage::RenderProcessTerminationStatus status); From 48bd43dfca15639883afa66a93748f1815fa90bf Mon Sep 17 00:00:00 2001 From: fnkkio <57486061+fnkkio@users.noreply.github.com> Date: Mon, 11 Nov 2019 21:56:25 +0200 Subject: [PATCH 054/107] Fix crashes after clearing the entire browsing history --- src/core/HistoryModel.cpp | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/core/HistoryModel.cpp b/src/core/HistoryModel.cpp index 5f45f89406..e1ad7599dc 100644 --- a/src/core/HistoryModel.cpp +++ b/src/core/HistoryModel.cpp @@ -126,6 +126,9 @@ void HistoryModel::clearRecentEntries(uint period) { clear(); + m_urls.clear(); + m_identifiers.clear(); + emit cleared(); return; From d2917af77dcca65f85c95e2dc827c7210e04d5c4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 19 Jan 2020 21:09:38 +0100 Subject: [PATCH 055/107] Fix tooltips for areas other than bookmark or folder tile --- src/modules/windows/web/StartPageWidget.cpp | 29 ++++++++++++++++++--- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 5681c2c3fd..002b0a216b 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -1080,13 +1080,34 @@ bool StartPageWidget::eventFilter(QObject *object, QEvent *event) { const QHelpEvent *helpEvent(static_cast(event)); const QModelIndex index(m_listView->indexAt(helpEvent->pos())); - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(index.data(BookmarksModel::IdentifierRole).toULongLong())); + QString toolTip; - if (bookmark) + if (index.isValid()) { - const QKeySequence shortcut(ActionsManager::getActionShortcut(ActionsManager::OpenBookmarkAction, {{QLatin1String("startPageTile"), (index.row() + 1)}})); + if (index.data(Qt::AccessibleDescriptionRole).toString() == QLatin1String("add")) + { + toolTip = index.data(Qt::ToolTipRole).toString(); + } + else + { + const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(index.data(BookmarksModel::IdentifierRole).toULongLong())); + + if (bookmark) + { + const QKeySequence shortcut(ActionsManager::getActionShortcut(ActionsManager::OpenBookmarkAction, {{QLatin1String("startPageTile"), (index.row() + 1)}})); + + toolTip = bookmark->getTitle() + (shortcut.isEmpty() ? QString() : QLatin1String(" (") + shortcut.toString(QKeySequence::NativeText) + QLatin1Char(')')); + } + } + } - QToolTip::showText(helpEvent->globalPos(), QFontMetrics(QToolTip::font()).elidedText(bookmark->getTitle() + (shortcut.isEmpty() ? QString() : QLatin1String(" (") + shortcut.toString(QKeySequence::NativeText) + QLatin1Char(')')), Qt::ElideRight, (QApplication::desktop()->screenGeometry(m_listView).width() / 2)), m_listView, m_listView->visualRect(index)); + if (toolTip.isEmpty()) + { + QToolTip::hideText(); + } + else + { + QToolTip::showText(helpEvent->globalPos(), QFontMetrics(QToolTip::font()).elidedText(toolTip, Qt::ElideRight, (QApplication::desktop()->screenGeometry(m_listView).width() / 2)), m_listView, m_listView->visualRect(index)); } return true; From c8df25509c2d53e013cabf98bf9342fd766194e5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 19 Jan 2020 22:01:56 +0100 Subject: [PATCH 056/107] Force layout reload after finishing drag --- src/modules/windows/web/StartPageModel.cpp | 4 +++- src/modules/windows/web/StartPageModel.h | 4 ++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/src/modules/windows/web/StartPageModel.cpp b/src/modules/windows/web/StartPageModel.cpp index d81afe14f6..bc7c5a025c 100644 --- a/src/modules/windows/web/StartPageModel.cpp +++ b/src/modules/windows/web/StartPageModel.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2020 Michal Dutkiewicz aka Emdek * * 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 @@ -239,6 +239,8 @@ void StartPageModel::handleDragEnded() emit isReloadingTileChanged(index); } } + + emit modelModified(); } void StartPageModel::handleBookmarkModified(BookmarksModel::Bookmark *bookmark) diff --git a/src/modules/windows/web/StartPageModel.h b/src/modules/windows/web/StartPageModel.h index bd2290f8fe..611f30af9a 100644 --- a/src/modules/windows/web/StartPageModel.h +++ b/src/modules/windows/web/StartPageModel.h @@ -1,6 +1,10 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. +<<<<<<< HEAD * Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +======= +* Copyright (C) 2015 - 2020 Michal Dutkiewicz aka Emdek +>>>>>>> 97337a46c... Force layout reload after finishing drag * * 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 From 2db51553c2d0e0104daaee986095c564d6369988 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 19 Jan 2020 20:48:34 +0100 Subject: [PATCH 057/107] Use separate highlight colors for active and hovered tiles --- src/modules/windows/web/StartPageWidget.cpp | 41 +++++++++++---------- 1 file changed, 21 insertions(+), 20 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 002b0a216b..ca1b51d6be 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -64,8 +64,10 @@ TileDelegate::TileDelegate(QObject *parent) : QStyledItemDelegate(parent), void TileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { + const QPalette::ColorGroup colorGroup(index.flags().testFlag(Qt::ItemIsEnabled) ? QPalette::Active : QPalette::Disabled); const int textHeight(qRound(option.fontMetrics.boundingRect(QLatin1String("X")).height() * 1.5)); const bool isAddTile(index.data(Qt::AccessibleDescriptionRole).toString() == QLatin1String("add")); + const bool isDragged(index.data(StartPageModel::IsDraggedRole).toBool()); QRect rectangle(option.rect); rectangle.adjust(3, 3, -3, -3); @@ -74,17 +76,24 @@ void TileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, painter->setRenderHint(QPainter::HighQualityAntialiasing); - if (isAddTile || index.data(StartPageModel::IsDraggedRole).toBool()) + if (!isDragged && (option.state.testFlag(QStyle::State_MouseOver) || option.state.testFlag(QStyle::State_HasFocus))) { - if (isAddTile && (option.state.testFlag(QStyle::State_MouseOver) || option.state.testFlag(QStyle::State_HasFocus))) - { - painter->setPen(QPen(QGuiApplication::palette().color(QPalette::Highlight), 3)); - } - else + QColor highlightColor(QGuiApplication::palette().color(colorGroup, QPalette::Highlight)); + + if (option.state.testFlag(QStyle::State_MouseOver)) { - painter->setPen(QPen(QColor(26, 35, 126, 51), 1)); + highlightColor.setAlpha(150); } + painter->setPen(QPen(highlightColor, 3)); + } + else + { + painter->setPen(QPen(QColor(26, 35, 126, 51), 1)); + } + + if (isAddTile || isDragged) + { if (isAddTile) { painter->setBrush(QColor(179, 229, 252, 224)); @@ -133,10 +142,12 @@ void TileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, break; case ThumbnailBackground: + painter->save(); painter->setBrush(Qt::white); painter->setPen(Qt::transparent); painter->drawRect(rectangle); painter->drawPixmap(rectangle, QPixmap(StartPageModel::getThumbnailPath(index.data(BookmarksModel::IdentifierRole).toULongLong())), QRect(0, 0, rectangle.width(), rectangle.height())); + painter->restore(); break; default: @@ -162,7 +173,9 @@ void TileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, palette.setColor(QPalette::Text, QColor(26, 35, 128)); painter->setClipping(false); - painter->setPen(palette.color((index.flags().testFlag(Qt::ItemIsEnabled) ? QPalette::Active : QPalette::Disabled), QPalette::Text)); + painter->setBrush(Qt::transparent); + painter->drawPath(path); + painter->setPen(palette.color(colorGroup, QPalette::Text)); if (m_mode == NoBackground) { @@ -172,18 +185,6 @@ void TileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, { painter->drawText(QRect(rectangle.x(), (rectangle.y() + rectangle.height()), rectangle.width(), textHeight), Qt::AlignCenter, option.fontMetrics.elidedText(index.data(Qt::DisplayRole).toString(), option.textElideMode, (rectangle.width() - 20))); } - - if (option.state.testFlag(QStyle::State_MouseOver) || option.state.testFlag(QStyle::State_HasFocus)) - { - painter->setPen(QPen(QGuiApplication::palette().color(QPalette::Highlight), 3)); - } - else - { - painter->setPen(QPen(QColor(26, 35, 126, 51), 1)); - } - - painter->setBrush(Qt::transparent); - painter->drawPath(path); } void TileDelegate::handleOptionChanged(int identifier, const QVariant &value) From a15c508725780be1e47717ea187c4e64d4d8d77f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 19 Jan 2020 22:21:36 +0100 Subject: [PATCH 058/107] Avoid dragging of wrong tile when trying to drag empty folder --- src/modules/windows/web/StartPageModel.cpp | 5 +++-- src/modules/windows/web/StartPageModel.h | 1 + src/modules/windows/web/StartPageWidget.cpp | 2 +- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/modules/windows/web/StartPageModel.cpp b/src/modules/windows/web/StartPageModel.cpp index bc7c5a025c..6d3b765cda 100644 --- a/src/modules/windows/web/StartPageModel.cpp +++ b/src/modules/windows/web/StartPageModel.cpp @@ -77,9 +77,10 @@ void StartPageModel::reloadModel() if (type == BookmarksModel::FolderBookmark && bookmark->rowCount() == 0) { - item->setEnabled(false); + item->setData(true, IsEmptyRole); } - else if (url.isValid() && SettingsManager::getOption(SettingsManager::StartPage_TileBackgroundModeOption) == QLatin1String("thumbnail") && !QFile::exists(getThumbnailPath(identifier))) + + if (url.isValid() && SettingsManager::getOption(SettingsManager::StartPage_TileBackgroundModeOption) == QLatin1String("thumbnail") && !QFile::exists(getThumbnailPath(identifier))) { ThumbnailRequestInformation thumbnailRequestInformation; thumbnailRequestInformation.bookmarkIdentifier = identifier; diff --git a/src/modules/windows/web/StartPageModel.h b/src/modules/windows/web/StartPageModel.h index 611f30af9a..d437dd1e9f 100644 --- a/src/modules/windows/web/StartPageModel.h +++ b/src/modules/windows/web/StartPageModel.h @@ -37,6 +37,7 @@ class StartPageModel final : public QStandardItemModel enum { IsDraggedRole = BookmarksModel::UserRole, + IsEmptyRole, IsReloadingRole }; diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index ca1b51d6be..65910aa140 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -64,7 +64,7 @@ TileDelegate::TileDelegate(QObject *parent) : QStyledItemDelegate(parent), void TileDelegate::paint(QPainter *painter, const QStyleOptionViewItem &option, const QModelIndex &index) const { - const QPalette::ColorGroup colorGroup(index.flags().testFlag(Qt::ItemIsEnabled) ? QPalette::Active : QPalette::Disabled); + const QPalette::ColorGroup colorGroup(index.data(StartPageModel::IsEmptyRole).toBool() ? QPalette::Disabled : QPalette::Active); const int textHeight(qRound(option.fontMetrics.boundingRect(QLatin1String("X")).height() * 1.5)); const bool isAddTile(index.data(Qt::AccessibleDescriptionRole).toString() == QLatin1String("add")); const bool isDragged(index.data(StartPageModel::IsDraggedRole).toBool()); From 415249c53f7489a313a21c913b1e239a1ee54225 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 20 Jan 2020 20:07:00 +0100 Subject: [PATCH 059/107] Add helper method for returning pixmap cache key --- src/modules/windows/web/StartPageWidget.cpp | 25 +++++++++++++++++++-- src/modules/windows/web/StartPageWidget.h | 1 + 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 65910aa140..1f25830e73 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -245,11 +245,12 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) return; } + const QString key(getPixmapCacheKey()); + switch (m_mode) { case BestFitBackground: { - const QString key(QLatin1String("start-page-best-fit-") + QString::number(width()) + QLatin1Char('-') + QString::number(height())); QPixmap cachedBackground; if (QPixmapCache::find(key, &cachedBackground)) @@ -284,7 +285,6 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) break; case StretchBackground: { - const QString key(QLatin1String("start-page-stretch-") + QString::number(width()) + QLatin1Char('-') + QString::number(height())); QPixmap cachedBackground; if (QPixmapCache::find(key, &cachedBackground)) @@ -322,6 +322,27 @@ void StartPageContentsWidget::setBackgroundMode(StartPageContentsWidget::Backgro update(); } +QString StartPageContentsWidget::getPixmapCacheKey() const +{ + QString prefix; + + switch (m_mode) + { + case BestFitBackground: + prefix = QLatin1String("start-page-best-fit"); + + break; + case StretchBackground: + prefix = QLatin1String("start-page-stretch"); + + break; + default: + break; + } + + return (prefix.isEmpty() ? QString() : prefix + QLatin1Char('-') + QString::number(width()) + QLatin1Char('-') + QString::number(height())); +} + StartPageWidget::StartPageWidget(Window *parent) : QScrollArea(parent), m_window(parent), m_contentsWidget(new StartPageContentsWidget(this)), diff --git a/src/modules/windows/web/StartPageWidget.h b/src/modules/windows/web/StartPageWidget.h index 135c3f497b..7eafddae75 100644 --- a/src/modules/windows/web/StartPageWidget.h +++ b/src/modules/windows/web/StartPageWidget.h @@ -76,6 +76,7 @@ class StartPageContentsWidget final : public QWidget explicit StartPageContentsWidget(QWidget *parent); void setBackgroundMode(BackgroundMode mode); + QString getPixmapCacheKey() const; protected: void paintEvent(QPaintEvent *event) override; From 180413f695ba4e9646f731ba39c3ac4834d8a751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 20 Jan 2020 21:00:37 +0100 Subject: [PATCH 060/107] Simplify drawing for the best fit mode --- src/modules/windows/web/StartPageWidget.cpp | 22 ++++++--------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 1f25830e73..7caaf44506 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -255,24 +255,14 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) if (QPixmapCache::find(key, &cachedBackground)) { - painter.drawPixmap(contentsRect(), cachedBackground, contentsRect().translated(((cachedBackground.width() - width()) / 2), ((cachedBackground.height() - height()) / 2))); + painter.drawPixmap(contentsRect(), cachedBackground); } else { - const qreal pixmapAspectRatio(pixmap.width() / static_cast(pixmap.height())); - const qreal backgroundAspectRatio(width() / static_cast(height())); - QPixmap newBackground(size()); + QPixmap newBackground(pixmap.scaled(size(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); + newBackground = newBackground.copy(contentsRect().translated(((newBackground.width() - width()) / 2), ((newBackground.height() - height()) / 2))); - if (pixmapAspectRatio > backgroundAspectRatio) - { - newBackground = pixmap.scaledToHeight(height(), Qt::SmoothTransformation); - } - else - { - newBackground = pixmap.scaledToWidth(width(), Qt::SmoothTransformation); - } - - painter.drawPixmap(contentsRect(), newBackground, contentsRect().translated(((newBackground.width() - width()) / 2), ((newBackground.height() - height()) / 2))); + painter.drawPixmap(contentsRect(), newBackground); QPixmapCache::insert(key, newBackground); } @@ -289,13 +279,13 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) if (QPixmapCache::find(key, &cachedBackground)) { - painter.drawPixmap(contentsRect(), cachedBackground, contentsRect()); + painter.drawPixmap(contentsRect(), cachedBackground); } else { const QPixmap newBackground(pixmap.scaled(size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - painter.drawPixmap(contentsRect(), newBackground, contentsRect()); + painter.drawPixmap(contentsRect(), newBackground); QPixmapCache::insert(key, newBackground); } From ed023edc1277916a7514453ee0721d20784d536e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 21 Jan 2020 11:14:24 +0100 Subject: [PATCH 061/107] Ensure that original image is loaded only after cache miss, greatly improves performance for large backgrounds --- src/modules/windows/web/StartPageWidget.cpp | 53 ++++++++------------- 1 file changed, 20 insertions(+), 33 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 7caaf44506..7510ad1600 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -238,6 +238,16 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) return; } + const QString key(getPixmapCacheKey()); + QPixmap cachedPixmap; + + if (QPixmapCache::find(key, &cachedPixmap)) + { + painter.drawPixmap(contentsRect(), cachedPixmap); + + return; + } + const QPixmap pixmap(m_path); if (pixmap.isNull()) @@ -245,28 +255,13 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) return; } - const QString key(getPixmapCacheKey()); - switch (m_mode) { case BestFitBackground: - { - QPixmap cachedBackground; - - if (QPixmapCache::find(key, &cachedBackground)) - { - painter.drawPixmap(contentsRect(), cachedBackground); - } - else - { - QPixmap newBackground(pixmap.scaled(size(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation)); - newBackground = newBackground.copy(contentsRect().translated(((newBackground.width() - width()) / 2), ((newBackground.height() - height()) / 2))); + cachedPixmap = pixmap.scaled(size(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation); + cachedPixmap = cachedPixmap.copy(contentsRect().translated(((cachedPixmap.width() - width()) / 2), ((cachedPixmap.height() - height()) / 2))); - painter.drawPixmap(contentsRect(), newBackground); - - QPixmapCache::insert(key, newBackground); - } - } + painter.drawPixmap(contentsRect(), cachedPixmap); break; case CenterBackground: @@ -274,22 +269,9 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) break; case StretchBackground: - { - QPixmap cachedBackground; + cachedPixmap = pixmap.scaled(size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation); - if (QPixmapCache::find(key, &cachedBackground)) - { - painter.drawPixmap(contentsRect(), cachedBackground); - } - else - { - const QPixmap newBackground(pixmap.scaled(size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - - painter.drawPixmap(contentsRect(), newBackground); - - QPixmapCache::insert(key, newBackground); - } - } + painter.drawPixmap(contentsRect(), cachedPixmap); break; case TileBackground: @@ -299,6 +281,11 @@ void StartPageContentsWidget::paintEvent(QPaintEvent *event) default: break; } + + if (!cachedPixmap.isNull()) + { + QPixmapCache::insert(key, cachedPixmap); + } } void StartPageContentsWidget::setBackgroundMode(StartPageContentsWidget::BackgroundMode mode) From 3855648df153173bcfefc8b9862a95884144a0e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 24 Feb 2020 22:24:22 +0100 Subject: [PATCH 062/107] Do not try to build URL directly from data role, spotted by Chiitoo --- src/modules/windows/web/StartPageWidget.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 7510ad1600..3e6665ee0a 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -521,13 +521,13 @@ void StartPageWidget::triggerAction(int identifier, const QVariantMap ¶meter return; } - const QUrl url(m_currentIndex.data(BookmarksModel::UrlRole).toUrl()); + const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); - if (url.isValid()) + if (bookmark) { m_urlOpenTime = QTime::currentTime(); - Application::triggerAction(ActionsManager::OpenUrlAction, {{QLatin1String("url"), url}, {QLatin1String("hints"), QVariant(hints)}}, parentWidget(), trigger); + Application::triggerAction(ActionsManager::OpenBookmarkAction, {{QLatin1String("bookmark"), bookmark->getIdentifier()}, {QLatin1String("hints"), QVariant(hints)}}, parentWidget(), trigger); } } From ba52721b10b4c623170bb23cb1ccf3323a601b43 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 24 Feb 2020 22:35:21 +0100 Subject: [PATCH 063/107] Switch to dedicated mapping method --- src/modules/windows/web/StartPageModel.cpp | 5 +++++ src/modules/windows/web/StartPageModel.h | 1 + src/modules/windows/web/StartPageWidget.cpp | 14 +++++++------- 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/modules/windows/web/StartPageModel.cpp b/src/modules/windows/web/StartPageModel.cpp index 6d3b765cda..ebdf79c396 100644 --- a/src/modules/windows/web/StartPageModel.cpp +++ b/src/modules/windows/web/StartPageModel.cpp @@ -361,6 +361,11 @@ QMimeData* StartPageModel::mimeData(const QModelIndexList &indexes) const return mimeData; } +BookmarksModel::Bookmark* StartPageModel::getBookmark(const QModelIndex &index) +{ + return BookmarksManager::getModel()->getBookmark(index.data(BookmarksModel::IdentifierRole).toULongLong()); +} + QString StartPageModel::getThumbnailPath(quint64 identifier) { return SessionsManager::getWritableDataPath(QLatin1String("thumbnails/")) + QString::number(identifier) + QLatin1String(".png"); diff --git a/src/modules/windows/web/StartPageModel.h b/src/modules/windows/web/StartPageModel.h index d437dd1e9f..9624104021 100644 --- a/src/modules/windows/web/StartPageModel.h +++ b/src/modules/windows/web/StartPageModel.h @@ -44,6 +44,7 @@ class StartPageModel final : public QStandardItemModel explicit StartPageModel(QObject *parent = nullptr); QMimeData* mimeData(const QModelIndexList &indexes) const override; + static BookmarksModel::Bookmark* getBookmark(const QModelIndex &index); static QString getThumbnailPath(quint64 identifier); QVariant data(const QModelIndex &index, int role) const override; QStringList mimeTypes() const override; diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 3e6665ee0a..8e3bbedf4d 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -521,7 +521,7 @@ void StartPageWidget::triggerAction(int identifier, const QVariantMap ¶meter return; } - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); + const BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(m_currentIndex)); if (bookmark) { @@ -597,7 +597,7 @@ void StartPageWidget::openTile() if (type == BookmarksModel::FolderBookmark) { - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); + const BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(m_currentIndex)); if (bookmark && bookmark->rowCount() > 0) { @@ -626,7 +626,7 @@ void StartPageWidget::openTile() void StartPageWidget::editTile() { - BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); + BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(m_currentIndex)); if (bookmark) { @@ -662,7 +662,7 @@ void StartPageWidget::reloadTile() void StartPageWidget::removeTile() { - BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); + BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(m_currentIndex)); if (bookmark) { @@ -943,7 +943,7 @@ bool StartPageWidget::eventFilter(QObject *object, QEvent *event) { case BookmarksModel::FolderBookmark: { - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); + const BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(m_currentIndex)); if (bookmark && bookmark->rowCount() > 0) { @@ -1014,7 +1014,7 @@ bool StartPageWidget::eventFilter(QObject *object, QEvent *event) if (type == BookmarksModel::FolderBookmark) { - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(m_currentIndex)); + const BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(m_currentIndex)); if (bookmark && bookmark->rowCount() > 0) { @@ -1089,7 +1089,7 @@ bool StartPageWidget::eventFilter(QObject *object, QEvent *event) } else { - const BookmarksModel::Bookmark *bookmark(BookmarksManager::getModel()->getBookmark(index.data(BookmarksModel::IdentifierRole).toULongLong())); + const BookmarksModel::Bookmark *bookmark(StartPageModel::getBookmark(index)); if (bookmark) { From 9d660def5aa1757e3d7adf3abd019730b46d6f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 24 Feb 2020 22:36:56 +0100 Subject: [PATCH 064/107] Validate data first --- src/modules/windows/web/StartPageModel.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/modules/windows/web/StartPageModel.cpp b/src/modules/windows/web/StartPageModel.cpp index ebdf79c396..66ee6fef0d 100644 --- a/src/modules/windows/web/StartPageModel.cpp +++ b/src/modules/windows/web/StartPageModel.cpp @@ -363,7 +363,9 @@ QMimeData* StartPageModel::mimeData(const QModelIndexList &indexes) const BookmarksModel::Bookmark* StartPageModel::getBookmark(const QModelIndex &index) { - return BookmarksManager::getModel()->getBookmark(index.data(BookmarksModel::IdentifierRole).toULongLong()); + const QVariant data(index.data(BookmarksModel::IdentifierRole)); + + return (data.isValid() ? BookmarksManager::getModel()->getBookmark(data.toULongLong()) : nullptr); } QString StartPageModel::getThumbnailPath(quint64 identifier) From 0a945d402f3163c076f88a782e5ca983678affad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 24 Feb 2020 22:39:03 +0100 Subject: [PATCH 065/107] Validate data first --- src/core/BookmarksModel.cpp | 6 ++++-- src/core/BookmarksModel.h | 4 ++++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/core/BookmarksModel.cpp b/src/core/BookmarksModel.cpp index 9e994d0a5f..9c20312e93 100644 --- a/src/core/BookmarksModel.cpp +++ b/src/core/BookmarksModel.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2020 Michal Dutkiewicz aka Emdek * Copyright (C) 2017 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -1160,7 +1160,9 @@ BookmarksModel::Bookmark* BookmarksModel::getBookmark(const QModelIndex &index) return bookmark; } - return getBookmark(index.data(IdentifierRole).toULongLong()); + const QVariant data(index.data(BookmarksModel::IdentifierRole)); + + return (data.isValid() ? getBookmark(data.toULongLong()) : nullptr); } BookmarksModel::Bookmark* BookmarksModel::getBookmark(quint64 identifier) const diff --git a/src/core/BookmarksModel.h b/src/core/BookmarksModel.h index 344f07d4be..154bc2e20e 100644 --- a/src/core/BookmarksModel.h +++ b/src/core/BookmarksModel.h @@ -1,6 +1,10 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. +<<<<<<< HEAD * Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +======= +* Copyright (C) 2013 - 2020 Michal Dutkiewicz aka Emdek +>>>>>>> 6f9973e3b... Validate data first * Copyright (C) 2017 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify From 3a146e585b378b12cb8beec8378fcb9c824048f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 2 Mar 2020 21:37:06 +0100 Subject: [PATCH 066/107] Delay reload after removal, spotted by Chiitoo --- src/modules/windows/web/StartPageModel.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/modules/windows/web/StartPageModel.cpp b/src/modules/windows/web/StartPageModel.cpp index 66ee6fef0d..fdf6955cd4 100644 --- a/src/modules/windows/web/StartPageModel.cpp +++ b/src/modules/windows/web/StartPageModel.cpp @@ -27,6 +27,7 @@ #include #include #include +#include #include namespace Otter @@ -294,7 +295,7 @@ void StartPageModel::handleBookmarkRemoved(BookmarksModel::Bookmark *bookmark, B QFile::remove(path); } - reloadModel(); + QTimer::singleShot(100, this, &StartPageModel::reloadModel); } } From afd4fcb57be5da6711099d50fa5d8122f997b675 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 2 Oct 2020 22:27:24 +0200 Subject: [PATCH 067/107] Do not allow to set choices for types other than enumeration --- src/ui/OptionWidget.cpp | 6 +++--- src/ui/OptionWidget.h | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/ui/OptionWidget.cpp b/src/ui/OptionWidget.cpp index de07e50be4..d81f027915 100644 --- a/src/ui/OptionWidget.cpp +++ b/src/ui/OptionWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2020 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 - 2017 Piotr Wójcik * * This program is free software: you can redistribute it and/or modify @@ -260,7 +260,7 @@ void OptionWidget::setValue(const QVariant &value) void OptionWidget::setChoices(const QStringList &choices) { - if (!m_comboBox) + if (!m_comboBox || m_type != SettingsManager::EnumerationType) { return; } @@ -286,7 +286,7 @@ void OptionWidget::setChoices(const QStringList &choices) void OptionWidget::setChoices(const QVector &choices) { - if (!m_comboBox) + if (!m_comboBox || m_type != SettingsManager::EnumerationType) { return; } diff --git a/src/ui/OptionWidget.h b/src/ui/OptionWidget.h index 49fb2d9c19..609c880c3c 100644 --- a/src/ui/OptionWidget.h +++ b/src/ui/OptionWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2013 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2013 - 2020 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 Piotr Wójcik * * This program is free software: you can redistribute it and/or modify From b0223b020aa91b9b2456bd09098bd8bd3912190b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Thu, 17 Jan 2019 20:34:34 +0100 Subject: [PATCH 068/107] Add signal for reporting Job progress --- src/core/Job.cpp | 21 +++++++++++++++++++-- src/core/Job.h | 10 +++++++++- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/src/core/Job.cpp b/src/core/Job.cpp index cfa37525ed..1de9aeb8c9 100644 --- a/src/core/Job.cpp +++ b/src/core/Job.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2017 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2017 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -20,14 +20,26 @@ #include "Job.h" #include "NetworkManager.h" #include "NetworkManagerFactory.h" +#include "Utils.h" namespace Otter { -Job::Job(QObject *parent) : QObject(parent) +Job::Job(QObject *parent) : QObject(parent), + m_progress(-1) { } +void Job::setProgress(int progress) +{ + if (progress != m_progress) + { + m_progress = progress; + + emit progressChanged(progress); + } +} + FetchJob::FetchJob(const QUrl &url, QObject *parent) : Job(parent), m_reply(nullptr), m_url(url), @@ -70,6 +82,11 @@ void FetchJob::start() { cancel(); } + + if (bytesTotal > 0) + { + setProgress(Utils::calculatePercent(bytesReceived, bytesTotal)); + } }); connect(m_reply, &QNetworkReply::finished, this, [&]() { diff --git a/src/core/Job.h b/src/core/Job.h index ef7a5e30ec..9283070052 100644 --- a/src/core/Job.h +++ b/src/core/Job.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2017 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2017 - 2019 Michal Dutkiewicz aka Emdek * * 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 @@ -33,14 +33,22 @@ class Job : public QObject public: explicit Job(QObject *parent = nullptr); + int getProgress() const; virtual bool isRunning() const = 0; public slots: virtual void start() = 0; virtual void cancel() = 0; +protected: + void setProgress(int progress); + +private: + int m_progress; + signals: void jobFinished(bool isSuccess); + void progressChanged(int progress); }; class FetchJob : public Job From 6ee4e5fbde30fe4121c8a6a80706435c8d003817 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 19:38:32 +0100 Subject: [PATCH 069/107] [QtWebEngine] Fix ifdef block --- src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index 5df6a664df..c11a3070e4 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -66,6 +66,7 @@ class QtWebEngineWebWidget final : public WebWidget WebWidget* clone(bool cloneHistory = true, bool isPrivate = false, const QStringList &excludedOptions = {}) const override; #if QTWEBENGINECORE_VERSION >= 0x050B00 QWidget* getInspector() override; +#endif QWidget* getViewport() override; QString getTitle() const override; QString getDescription() const override; From 3608f180bd140f7f0b60d067c746c798c4bac41b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 19:41:42 +0100 Subject: [PATCH 070/107] Adjust signal --- src/core/AdblockContentFiltersProfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index 2606ae1225..00c1d035a3 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -915,7 +915,7 @@ bool AdblockContentFiltersProfile::update() m_dataFetchJob->start(); - emit profileModified(); + emit profileModified(m_name); return true; } From b78a8c653ca14c56f9658dd68638e368bdcf2b91 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 19:43:43 +0100 Subject: [PATCH 071/107] Fix includes --- src/modules/backends/web/qtwebkit/QtWebKitPluginWidget.cpp | 1 + src/modules/windows/web/StartPageWidget.cpp | 1 + 2 files changed, 2 insertions(+) diff --git a/src/modules/backends/web/qtwebkit/QtWebKitPluginWidget.cpp b/src/modules/backends/web/qtwebkit/QtWebKitPluginWidget.cpp index 8076c09f25..22309a82a7 100644 --- a/src/modules/backends/web/qtwebkit/QtWebKitPluginWidget.cpp +++ b/src/modules/backends/web/qtwebkit/QtWebKitPluginWidget.cpp @@ -22,6 +22,7 @@ #include #include +#include namespace Otter { diff --git a/src/modules/windows/web/StartPageWidget.cpp b/src/modules/windows/web/StartPageWidget.cpp index 8e3bbedf4d..04f8657798 100644 --- a/src/modules/windows/web/StartPageWidget.cpp +++ b/src/modules/windows/web/StartPageWidget.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include #include From 419cfc77c1c8dc23034e41858e7c7ca7d7d7d00f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 19:54:09 +0100 Subject: [PATCH 072/107] Add missing getter --- src/core/Job.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/core/Job.cpp b/src/core/Job.cpp index 1de9aeb8c9..468cab5a39 100644 --- a/src/core/Job.cpp +++ b/src/core/Job.cpp @@ -40,6 +40,11 @@ void Job::setProgress(int progress) } } +int Job::getProgress() const +{ + return m_progress; +} + FetchJob::FetchJob(const QUrl &url, QObject *parent) : Job(parent), m_reply(nullptr), m_url(url), From 5090cf8499a917a8e46787de28c4d4f35c58fd17 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 21:44:58 +0100 Subject: [PATCH 073/107] Update translations from Transifex --- resources/translations/otter-browser_de.qm | Bin 216798 -> 216790 bytes resources/translations/otter-browser_de.ts | 42 +- resources/translations/otter-browser_hi_IN.qm | Bin 0 -> 84585 bytes resources/translations/otter-browser_hi_IN.ts | 10551 ++++++++++++++++ resources/translations/otter-browser_it.qm | Bin 209518 -> 216362 bytes resources/translations/otter-browser_it.ts | 115 +- resources/translations/otter-browser_tr.qm | Bin 34821 -> 55428 bytes resources/translations/otter-browser_tr.ts | 408 +- resources/translations/otter-browser_zh_CN.qm | Bin 148996 -> 157953 bytes resources/translations/otter-browser_zh_CN.ts | 221 +- 10 files changed, 10954 insertions(+), 383 deletions(-) create mode 100644 resources/translations/otter-browser_hi_IN.qm create mode 100644 resources/translations/otter-browser_hi_IN.ts diff --git a/resources/translations/otter-browser_de.qm b/resources/translations/otter-browser_de.qm index 54fd282d3487c622afe37723b9e2209f49a92331..32df325be94aae5af5802a85bd8e8e2ab2fb3809 100644 GIT binary patch delta 12186 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 VCCsHGT~a!k5&Jy(UV3Nm{{Uk-1_S^A delta 12266 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 D4u%TI diff --git a/resources/translations/otter-browser_de.ts b/resources/translations/otter-browser_de.ts index 76de427fc0..623e38d00f 100644 --- a/resources/translations/otter-browser_de.ts +++ b/resources/translations/otter-browser_de.ts @@ -1831,12 +1831,12 @@ Möchten Sie sie speichern? Last Update - Letztes Update + Letzte Aktualisierung Advertisements - Werbung + Werbebotschaften @@ -2208,7 +2208,7 @@ Möchten Sie sie speichern? Change Icon… - Symbolbild ändern... + Symbol ändern… @@ -2264,7 +2264,7 @@ Möchten Sie sie speichern? OK - Ok + OK @@ -2280,7 +2280,7 @@ Möchten Sie sie speichern? Categories - Kategorien: + Kategorien @@ -2318,7 +2318,7 @@ Möchten Sie sie speichern? Select Folder Name - Ordnername eingeben: + Ordnername auswählen @@ -2365,7 +2365,7 @@ Möchten Sie sie speichern? Send email to %1 - Email senden an %1 + E-Mail an %1 senden @@ -3042,7 +3042,7 @@ Möchten Sie sie speichern? Lock Panel - Leiste blockieren + Leiste sperren @@ -3304,12 +3304,12 @@ Möchten Sie sie migrieren? Move Up - hoch schieben + Nach oben Move Down - runter schieben + Nach unten @@ -3670,7 +3670,7 @@ Möchten Sie fortfahren? OPML files (*.opml) - OPML files (*.opml) + OPML-Dateien (*.opml) @@ -4193,12 +4193,12 @@ Möchten Sie fortfahren? Website Preferences - Seiteneinstellungen + Webseiteneinstellungen Search… - Suche ... + Suche… @@ -5719,12 +5719,12 @@ Möchten Sie fortfahren? PNG image (*.png) - PNG Bild (*.png) + PNG-Bild (*.png) JPEG image (*.jpg *.jpeg) - JPEG Bild (*.jpg *.jpeg) + JPEG-Bild (*.jpg *.jpeg) @@ -6527,7 +6527,7 @@ Adresse: %2 Search… - Suchen... + Suche… @@ -6628,7 +6628,7 @@ Adresse: %2 New… - Neu ... + Neu… @@ -7122,7 +7122,7 @@ Progress: %5</div> <div style="white-space:pre;">Quelle: %1 Ziel: %2 Größe: %3 -Übertragen: %4 +Heruntergeladen: %4 Fortschritt: %5</div> @@ -7595,7 +7595,7 @@ Click Install button to restart browser and install the update or close this dia HTML file with all resources (*.html *.htm) - HTML-Datei inklusive Ressourcen (*.html *.htm) + HTML-Datei mit allen Ressourcen (*.html *.htm) @@ -7605,7 +7605,7 @@ Click Install button to restart browser and install the update or close this dia PDF document (*.pdf) - PDF Dokument (*.pdf) + PDF-Dokument (*.pdf) @@ -8274,7 +8274,7 @@ Click Install button to restart browser and install the update or close this dia Search… - Suchen... + Suche… diff --git a/resources/translations/otter-browser_hi_IN.qm b/resources/translations/otter-browser_hi_IN.qm new file mode 100644 index 0000000000000000000000000000000000000000..f404ac16e9ae0886345d1dae3ff1a4ab58ed85f3 GIT binary patch literal 84585 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 PLWuOQpAAM)rfL5V00^f6 literal 0 HcmV?d00001 diff --git a/resources/translations/otter-browser_hi_IN.ts b/resources/translations/otter-browser_hi_IN.ts new file mode 100644 index 0000000000..f857c107f0 --- /dev/null +++ b/resources/translations/otter-browser_hi_IN.ts @@ -0,0 +1,10551 @@ + + + Otter::AcceptCookieDialog + + + Accept Cookie + कुकीज़ स्वीकारें + + + + Name: + नाम : + + + + Value: + मान : + + + + Expiration date: + मान्यता समाप्ति दिनांक : + + + + Send for: + हेतु भेजें : + + + + Accessible using JavaScript: + जावा स्क्रिप्ट द्वारा अभिगम : + + + + Domain: + डोमेन : + + + + Website %1 requested to add new cookie. + वेबसाइट %1 द्वारा नई कुकी जोड़ने हेतु अनुरोध। + + + + Website %1 requested to update existing cookie. + वेबसाइट %1 द्वारा मौजूदा कुकी अपडेट करने हेतु अनुरोध। + + + + Website %1 requested to remove existing cookie. + वेबसाइट %1 द्वारा मौजूदा कुकी हटाने हेतु अनुरोध। + + + + This session only + केवल इस सत्र हेतु + + + + Secure connections only + केवल सुरक्षित कनेक्शन + + + + Any type of connection + किसी भी प्रकार का कनेक्शन + + + + Yes + हाँ + + + + No + नहीं + + + + Accept + स्वीकारें + + + + Accept For This Session Only + केवल इस सत्र हेतु स्वीकारें + + + + Discard + निरस्त करें + + + + Otter::AcceptLanguageDialog + + + Preferred Webpage Language + वेब पृष्ठ हेतु इच्छित भाषा + + + + To add language, please choose one from list or type its code. + भाषा जोड़ने हेतु, सूची में से इच्छित भाषा चुनें या भाषीय कोड दर्ज करें। + + + + Add + जोड़ें + + + + Remove + हटाएँ + + + + Move Up + ऊपर ले जाएँ + + + + Move Down + नीचे लाएँ + + + + + Name + नाम + + + + + Code + कोड + + + + Unknown [%1] + अज्ञात [%1] + + + + + Any other + अन्य + + + + + System language (%1 - %2) + सिस्टम भाषा (%1 - %2) + + + + Custom + अनुकूलित + + + + Unknown + अज्ञात + + + + Otter::Action + + + Creating instance of deprecated action: %1 + बहिष्कृत कार्य हेतु आवृत्ति बनाई जा रही है : %1 + + + + Otter::ActionComboBoxWidget + + + Select Action + कार्य चुनें + + + + Search… + खोजें... + + + + Otter::AdblockContentFiltersProfile + + + (Unknown) + (अज्ञात) + + + + Otter::AddonsContentsWidget + + + Search… + खोजें... + + + + + User Scripts + उपयोक्ता स्क्रिप्ट + + + + Select Files + फाइलें चुनें + + + + User Script files (*.js) + उपयोक्ता स्क्रिप्ट फाइलें (*.js) + + + + + Question + प्रश्न + + + + User Script with this name already exists: +%1 + इस नाम की उपयोक्ता स्क्रिप्ट पहले से मौजूद है : +%1 + + + + Do you want to replace it? + क्या आप इसे बदलना चाहते हैं? + + + + Apply to all + सभी पर लागू करें + + + + Error + त्रुटि + + + + Failed to import following User Script file(s): +%1 + निम्नलिखित उपयोक्ता स्क्रिप्ट फाइल आयात करने में विफल : +%1निम्नलिखित उपयोक्ता स्क्रिप्ट फाइलें आयात करने में विफल : +%1 + + + + You are about to irreversibly remove %n addon(s). + %n पूरक साधन स्थायी रूप से हटेंगे।%n पूरक साधन स्थायी रूप से हटेंगे। + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + Add Addon… + पूरक साधन जोड़ें ... + + + + Open Addon File + पूरक साधन फाइल खोलें + + + + Reload Addon + पूरक साधन पुनः लोड करें + + + + Remove Addon… + पूरक साधन हटाएँ ... + + + + Addons + पूरक साधन + + + + Otter::AddressCompletionModel + + + Search with %1 + %1 द्वारा खोजें + + + + Bookmarks + पृष्ठ स्मृतियाँ + + + + Local files + लोकल फाइलें + + + + History + वृतांत + + + + Typed history + टाइप हेतु वृतांत + + + + Special pages + विशिष्ट पृष्ठ + + + + Otter::AddressWidget + + + + Enter address or search… + पता दर्ज करें या खोजें ... + + + + Remove this Icon + यह आइकन हटाएँ + + + + (Untitled) + (शीर्षक रहित) + + + + Add to Bookmarks + पृष्ठ स्मृतियों में जोड़ें + + + + Add to Start Page + आरंभ पृष्ठ पर जोड़ें + + + + Show website information + वेबसाइट जानकारी दिखाएँ + + + + Show feed list + समाचार सूची दिखाएँ + + + + Remove bookmark + पृष्ठ स्मृति हटाएँ + + + + Add bookmark + पृष्ठ स्मृति जोड़ें + + + + Load all plugins on the page + पृष्ठ पर सभी प्लगिन लोड करें + + + + Log in + लॉगिन + + + + Otter::Application + + + + + + Warning + चेतावनी + + + + Profile directory (%1) is not writable, application will be running in read-only mode. + प्रोफाइल डायरेक्टरी (%1) राइट योग्य नहीं है, अनुप्रयोग केवल-रीड मोड में कार्यरत होगा। + + + + Your profile directory (%1) ran out of free disk space. +This may lead to malfunctions or even data loss. + आपकी प्रोफाइल डायरेक्टरी (%1) में उपलब्ध स्पेस अपर्याप्त है। +इस कारण समस्याएँ या डाटा नष्ट हो सकता है। + + + + Your profile directory (%1) is running low on free disk space (%2 remaining). +This may lead to malfunctions or even data loss. + आपकी प्रोफाइल डायरेक्टरी (%1) में कम स्पेस (%2 शेष) बचा है। +इस कारण समस्याएँ या डाटा नष्ट हो सकता है। + + + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + Continue in Read-only Mode + केवल-रीड मोड में जारी रखें + + + + Ignore + अनदेखा करें + + + + Quit + बंद करें + + + + SSL support is not available or incomplete. +Some websites may work incorrectly or do not work at all. + + + + + <b>Otter %1</b><br>Web browser controlled by the user, not vice-versa.<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> + + + + + Web backend: %1 %2. + वेब बैकएंड : %1 %2। + + + + SSL library not available. + एसएसएल लाइब्रेरी अनुपलब्ध। + + + + SSL library version: %1. + एसएसएल लाइब्रेरी संस्करण : %1। + + + + This session was not saved correctly. +Are you sure that you want to restore this session anyway? + यह सत्र उचित रूप से संचित नहीं हुआ। +क्या आप निश्चित ही इसे पुनः स्थापित करना चाहते हैं? + + + + New update %1 from %2 channel is available! + + + + + + Question + प्रश्न + + + + You are about to quit while %n files are still being downloaded. + + + + + + Hide + छुपाएँ + + + + You are about to quit the current Otter Browser session. + + + + + Otter::ApplicationComboBoxWidget + + + + + Default Application + डिफ़ॉल्ट अनुप्रयोग + + + + + + Other… + अन्य ... + + + + Select Application + अनुप्रयोग चुनें + + + + Unknown + अज्ञात + + + + Otter::AtomFeedParser + + + Failed to parse feed file: %1 + समाचार फाइल प्राप्यता विफल : %1 + + + + Failed to parse feed: no valid entries found + समाचार फाइल प्राप्यता विफल : कोई मान्य प्रविष्टि नहीं मिली + + + + Otter::AuthenticationDialog + + + Authentication Required + पुष्टिकरण आवश्यक + + + + Server: + सर्वर : + + + + Message: + संदेश : + + + + User: + उपयोक्ता : + + + + Password: + कूटशब्द : + + + + Remember password + कूटशब्द स्मरण करें + + + + Otter::BookmarkPropertiesDialog + + + Title: + शीर्षक : + + + + Description: + विवरण : + + + + Address: + पता : + + + + Folder: + फोल्डर : + + + + New… + नया ... + + + + Visits: + + + + + Last visit: + + + + + Created: + + + + + Modified: + + + + + Keyword: + कमांड अक्षर : + + + + + + Unknown + अज्ञात + + + + View Bookmark + पृष्ठ स्मृति देखें + + + + Edit Bookmark + पृष्ठ स्मृति संपादित करें + + + + Add Bookmark + पृष्ठ स्मृति जोड़ें + + + + Error + त्रुटि + + + + Bookmark with this keyword already exists. + + + + + Otter::BookmarkWidget + + + Title: %1 + शीर्षक : %1 + + + + Address: %1 + पता : %1 + + + + Description: %1 + विवरण : %1 + + + + Created: %1 + + + + + Visited: %1 + + + + + Otter::BookmarksComboBoxWidget + + + Folder Name + फोल्डर नाम + + + + Select name of new folder: + नए फोल्डर हेतु नाम चुनें : + + + + Otter::BookmarksContentsWidget + + + Search… + खोजें... + + + + Address: + पता : + + + + Title: + शीर्षक : + + + + Description: + विवरण : + + + + Keyword: + कमांड अक्षर : + + + + Add + जोड़ें + + + + + Properties… + विशेषताएँ ... + + + + Delete + हटाएँ + + + + + + Add Folder… + फोल्डर जोड़ें ... + + + + + + Add Bookmark… + पृष्ठ स्मृति जोड़ें ... + + + + + + Add Separator + विभाजक जोड़ें + + + + Title + शीर्षक + + + + Address + पता + + + + Description + विवरण + + + + Keyword + कमांड अक्षर + + + + Added + + + + + Modified + + + + + Visited + + + + + Visits + + + + + Empty Trash + ट्रैश खाली करें + + + + Add Bookmark + पृष्ठ स्मृति जोड़ें + + + + Restore Bookmark + पृष्ठ स्मृति पुनः स्थापित करें + + + + Bookmarks + पृष्ठ स्मृतियाँ + + + + Otter::BookmarksImporterWidget + + + Remove existing bookmarks + मौजूदा पृष्ठ स्मृति हटाएँ + + + + Import into folder: + इस फोल्डर में आयात करें : + + + + New… + नया ... + + + + Allow to duplicate already existing bookmarks + + + + + Import into subfolder + + + + + Leave empty to import into main folder + + + + + Subfolder name: + उप-फोल्डर नाम : + + + + Otter::BookmarksModel + + + Notes + नोट्स + + + + Bookmarks + पृष्ठ स्मृतियाँ + + + + Trash + ट्रैश + + + + (Untitled) + (शीर्षक रहित) + + + + Failed to open notes file: %1 + नोट्स फाइल खोलने में विफल : %1 + + + + Failed to open bookmarks file: %1 + पृष्ठ स्मृति फाइल खोलने में विफल : %1 + + + + Failed to load notes file: %1 + नोट्स फाइल लोड करने में विफल : %1 + + + + Failed to load bookmarks file: %1 + पृष्ठ स्मृति फाइल लोड करने में विफल : %1 + + + + Error + त्रुटि + + + + Failed to load notes file. + नोट्स फाइल लोड करने में विफल। + + + + Failed to load bookmarks file. + पृष्ठ स्मृति फाइल लोड करने में विफल। + + + + Otter::CacheContentsWidget + + + Search… + खोजें... + + + + Address: + पता : + + + + Type: + प्रकार : + + + + Size: + आकार : + + + + Last Modified: + + + + + Expires: + मान्यता समाप्ति : + + + + Location: + + + + + Preview + पूर्वावलोकन + + + + Delete + हटाएँ + + + + + Address + पता + + + + + Type + प्रकार + + + + + Size + आकार + + + + + Last Modified + + + + + + Expires + मान्यता समाप्ति + + + + Copy Link to Clipboard + लिंक क्लिपबोर्ड में कॉपी करें + + + + Remove Entry + प्रविष्टि हटाएँ + + + + Remove All Entries from This Domain + इस डोमेन की सभी प्रविष्टियाँ हटाएँ + + + + Unknown + अज्ञात + + + + Cache + कैश + + + + Otter::CertificateDialog + + + Certificate chain: + + + + + Certificate fields: + + + + + Field value: + + + + + Export… + + + + + Invalid Certificate + अमान्य प्रमाणपत्र + + + + View Certificate for %1 + %1 हेतु प्रमाणपत्र देखें + + + + + Unknown + अज्ञात + + + + Select File + फाइल चुनें + + + + DER encoded X.509 certificates (*.der) + + + + + PEM encoded X.509 certificates (*.pem) + + + + + Text files (*.txt) + टेक्स्ट फाइलें (*.txt) + + + + Error + त्रुटि + + + + Failed to open file for writing. + राइट हेतु फाइल खोलने में विफल। + + + + Authority Key Identifier + + + + + Subject Key Identifier + + + + + Key Usage + कुंजी उपयोग + + + + Certificate Policies + + + + + Policy Mappings + + + + + Subject Alternative Name + वैकल्पिक विषय नाम + + + + Issuer Alternative Name + वैकल्पिक जारी कर्ता नाम + + + + Subject Directory Attributes + + + + + Basic Constraints + + + + + Name Constraints + + + + + Policy Constraints + + + + + Extended Key Usage + + + + + CRL Distribution Points + + + + + Inhibit Any Policy + + + + + Delta CRL Distribution Point + + + + + Authority Information Access + + + + + Subject Information Access + + + + + Modulus: +%1 + +Exponent: %2 + + + + + Critical + + + + + Not Critical + + + + + OID: %1 + + + + + Value: + मान : + + + + Version + संस्करण + + + + Serial Number + + + + + Certificate Signature Algorithm + + + + + Issuer + + + + + Validity + मान्यता + + + + Not Before + + + + + Not After + + + + + Subject + + + + + Subject Public Key + + + + + Algorithm + + + + + Public Key + सार्वजनिक कुंजी + + + + Extensions + + + + + Fingerprint + + + + + SHA-1 Fingerprint + + + + + SHA-256 Fingerprint + + + + + Otter::ClearHistoryDialog + + + Clear History + + + + + Period to clear: + + + + + All + सभी + + + + h + + + + + Clear browsing history + खोज वृतांत रिक्त करें + + + + Clear cookies + कुकीज़ रिक्त करें + + + + Clear forms history + प्रपत्र वृतांत रिक्त करें + + + + Clear downloads history + डाउनलोड वृतांत रिक्त करें + + + + Clear search history + खोज वृतांत रिक्त करें + + + + Clear caches + कैश रिक्त करें + + + + Clear websites storage data + वेबसाइट संचय डेटा रिक्त करें + + + + Clear passwords + कूटशब्द रिक्त करें + + + + + Clear Now + अभी रिक्त करें + + + + Otter::ColorWidget + + + + Invalid + अमान्य + + + + Select Color… + रंग चुनें... + + + + Copy Color + रंग कॉपी करें + + + + Clear + हटाएँ + + + + Otter::ConfigurationContentsWidget + + + Search… + खोजें... + + + + Option Name: + विकल्प नाम : + + + + Current Value: + वर्तमान मान : + + + + Default Value: + डिफ़ॉल्ट मान : + + + + Save All + सभी संचित करें + + + + Restore Defaults + डिफ़ॉल्ट पुनः स्थापित करें + + + + + Name + नाम + + + + + Type + प्रकार + + + + + Value + मान + + + + + Question + प्रश्न + + + + The settings have been changed. +Do you want to save them? + सेटिंग्स में बदलाव किए गए हैं। +क्या आप उन्हें संचित करना चाहते हैं? + + + + Do you really want to restore default values of all options? + क्या आप निश्चित ही सभी विकल्पों के डिफ़ॉल्ट मान पुनः स्थापित करना चाहते हैं? + + + + Copy Option Name + विकल्प नाम कॉपी करें + + + + Copy Option Value + विकल्प मान कॉपी करें + + + + Save Value + मान संचित करें + + + + Restore Default Value + डिफ़ॉल्ट मान पुनः स्थापित करें + + + + Expand All + सभी विस्तृत करें + + + + Collapse All + सभी संक्षिप्त करें + + + + Advanced Configuration + विस्तृत विन्यास + + + + Otter::ConfigurationOptionWidget + + + Choose option + विकल्प चुनें + + + + Otter::ContentBlockingDialog + + + Content Blocking + सामग्री अवरोध + + + + General + सामान्य + + + + Profiles + प्रोफाइल + + + + Select lists which you want to use for content blocking (AdBlock Plus compatible): + + + + + Settings + सेटिंग्स + + + + Cosmetic filters: + + + + + Enable wildcard expressions + + + + + Enable custom rules + अनुकूलिय नियम सक्रिय + + + + + Add + जोड़ें + + + + + Edit + संपादित करें + + + + Update + अपडेट + + + + + Remove + हटाएँ + + + + + Custom Rules + अनुकूलिय नियम + + + + All + सभी + + + + Domain specific only + केवल डोमेन विशिष्ट + + + + None + कोई नहीं + + + + Otter::ContentBlockingInformationWidget + + + Active Profiles + सक्रिय प्रोफाइल + + + + Blocked Elements + + + + + main frame + + + + + subframe + + + + + pop-up + + + + + stylesheet + + + + + script + + + + + image + + + + + object + + + + + object subrequest + + + + + XHR + + + + + WebSocket + + + + + other + + + + + Enable Content Blocking + + + + + Blocked Elements: {amount} + + + + + Otter::ContentBlockingIntervalDelegate + + + day(s) + + + + + + Never + कभी नहीं + + + + %n day(s) + + + + + Otter::ContentBlockingProfileDialog + + + Profile Settings + प्रोफाइल सेटिंग्स + + + + Title: + शीर्षक : + + + + Category: + + + + + Address: + पता : + + + + Update interval: + अपडेट अंतराल : + + + + Never + कभी नहीं + + + + days + + + + + Last update: + + + + + + Advertisements + विज्ञापन + + + + + Annoyance + + + + + + Privacy + निजता + + + + + Social + सामाजिक + + + + + Regional + क्षेत्रीय + + + + + Other + अन्य + + + + + + Error + त्रुटि + + + + Valid update URL is required. + + + + + Profile with name %1.txt already exists. + %1.txt नाम से प्रोफाइल पहले से मौजूद है। + + + + Failed to create profile file: %1. + प्रोफाइल फाइल बनाने में विफल : %1। + + + + Otter::ContentBlockingTitleDelegate + + + Failed to read profile file + प्रोफाइल फाइल रीड करने में विफल + + + + Failed to download profile rules + प्रोफाइल नियम डाउनलोड करने में विफल + + + + Failed to verify profile rules using checksum + चेकसम द्वारा प्रोफाइल नियम प्रमाणित करने में विफल + + + + Profile was never updated + प्रोफाइल कभी अपडेट नहीं हुआ + + + + Profile was last updated more than one week ago + प्रोफाइल अंतिम बार एक सप्ताह से भी पहले अपडेट किया गया था + + + + Otter::ContentFiltersManager + + + Custom Rules + + + + + Failed to remove content blocking profile file: %1 + + + + + Unknown + अज्ञात + + + + Title + शीर्षक + + + + Update Interval + + + + + Last Update + + + + + Advertisements + विज्ञापन + + + + Annoyance + + + + + Privacy + निजता + + + + Social + सामाजिक + + + + Regional + क्षेत्रीय + + + + Other + अन्य + + + + Otter::ContentsDialog + + + Close + बंद करें + + + + Otter::ContentsWidget + + + Print Page + + + + + Print Preview + पूर्वावलोकन प्रिंट करें + + + + Otter::CookiePropertiesDialog + + + Name: + नाम : + + + + Value: + मान : + + + + Expires: + मान्यता समाप्ति : + + + + this session only + केवल इस सत्र हेतु + + + + MM.dd.yyyy HH:mm + Date and time format + + + + + Domain: + डोमेन : + + + + Path: + पथ : + + + + Send only for secure connections + + + + + Allow accessing using JavaScript + + + + + Add Cookie + + + + + Edit Cookie + + + + + Otter::CookiesContentsWidget + + + Search… + खोजें... + + + + Name: + नाम : + + + + Value: + मान : + + + + Expires: + मान्यता समाप्ति : + + + + Domain: + डोमेन : + + + + Path: + पथ : + + + + Add… + जोड़ें + + + + + Properties… + विशेषताएँ ... + + + + Delete + हटाएँ + + + + + Question + प्रश्न + + + + You are about to delete %n cookie(s). + + + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + You are about to delete all cookies. + + + + + Add Cookie… + + + + + Remove All Cookies from This Domain… + + + + + Remove All Cookies… + + + + + this session only + केवल इस सत्र हेतु + + + + Cookies + कुकीज़ + + + + Otter::CookiesExceptionsDialog + + + Third-party Cookies Exceptions + + + + + Always ACCEPT third-party cookies from: + + + + + + Add + जोड़ें + + + + + Edit + संपादित करें + + + + + Remove + हटाएँ + + + + Always REJECT third-party cookies from: + + + + + Otter::ErrorConsoleWidget + + + Scope + + + + + + Network + नेटवर्क + + + + + Security + सुरक्षा + + + + CSS + + + + + + JS + + + + + + Other + अन्य + + + + Clear + हटाएँ + + + + Filter… + निस्पंदन ... + + + + Close + बंद करें + + + + All Tabs + + + + + Current Tab Only + + + + + Other Sources + + + + + <empty> + <empty> + + + + Copy + कॉपी करें + + + + Expand All + सभी विस्तृत करें + + + + Collapse All + सभी संक्षिप्त करें + + + + Otter::Feed + + + Feed updated: +%1 + + + + + Failed to parse feed: invalid feed type + + + + + Failed to download feed + + + + + Otter::FeedPropertiesDialog + + + Edit Feed + + + + + Folder: + फोल्डर : + + + + New… + नया ... + + + + Title: + शीर्षक : + + + + Change Icon… + आइकन बदलें ... + + + + Address: + पता : + + + + Update interval: + अपडेट अंतराल : + + + + Never + कभी नहीं + + + + minutes + + + + + Add Feed + + + + + Error + त्रुटि + + + + Valid address is required. + + + + + Otter::FeedsComboBoxWidget + + + Folder Name + फोल्डर नाम + + + + Select name of new folder: + नए फोल्डर हेतु नाम चुनें : + + + + Otter::FeedsContentsWidget + + + OK + ठीक है + + + + Cancel + रद्द करें + + + + + Search… + खोजें... + + + + Categories + + + + + + Title + शीर्षक + + + + + From + + + + + + Published + + + + + Question + प्रश्न + + + + You already subscribed this feed. + + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + Select Folder Name + फोल्डर नाम चुनें + + + + Enter folder name: + फोल्डर नाम दर्ज करें : + + + + Open + खोलें + + + + Empty Trash + ट्रैश खाली करें + + + + + Add Folder… + फोल्डर जोड़ें ... + + + + + Add Feed… + + + + + Add New + नया जोड़ें + + + + Restore Feed + + + + + Properties… + विशेषताएँ ... + + + + Send email to %1 + + + + + Go to %1 + + + + + All (%1) + + + + + + (Untitled) + (शीर्षक रहित) + + + + Subscribe to this feed using: + + + + + Feed: %1 + + + + + Feeds + समाचार + + + + + Title: %1 + शीर्षक : %1 + + + + + Address: %1 + पता : %1 + + + + Last update: %1 + + + + + Otter::FeedsModel + + + Feeds + समाचार + + + + Trash + ट्रैश + + + + (Untitled) + (शीर्षक रहित) + + + + Failed to open feeds file: %1 + समाचार फाइल खोलने में विफल : %1 + + + + Failed to load feeds file: %1 + समाचार फाइल लोड करने में विफल : %1 + + + + Error + त्रुटि + + + + Failed to load feeds file. + समाचार फाइल लोड करने में विफल। + + + + Otter::FilePasswordsStorageBackend + + + Failed to open passwords file: %1 + कूटशब्द फाइल खोलने में विफल : %1 + + + + Failed to save passwords file: %1 + कूटशब्द फाइल संचित करने में विफल : %1 + + + + Failed to remove passwords file + कूटशब्द फाइल हटाने में विफल + + + + Encrypted File + एन्क्रिप्टेड फाइल + + + + Stores passwords in AES encrypted file. + + + + + Otter::FilePathWidget + + + + Browse… + + + + + Select File + फाइल चुनें + + + + Select Directory + डायरेक्टरी चुनें + + + + Otter::FreeDesktopOrgPlatformIntegration + + + Error + त्रुटि + + + + Warning + चेतावनी + + + + Information + जानकारी + + + + Notification + + + + + Otter::HandlersManager + + + Error + त्रुटि + + + + Profile with this address already exists. + इस पते युक्त प्रोफाइल पहले से मौजूद है। + + + + Question + प्रश्न + + + + Do you want to add this content blocking profile? + + + + + Otter::HeaderViewWidget + + + Sorting + + + + + Sort Ascending + + + + + Sort Descending + + + + + No Sorting + + + + + Visible Columns + + + + + Show All + + + + + (Untitled) + (शीर्षक रहित) + + + + Otter::HistoryContentsWidget + + + Search… + खोजें... + + + + Today + + + + + Yesterday + + + + + Earlier This Week + + + + + Previous Week + + + + + Earlier This Month + + + + + Earlier This Year + + + + + Older + + + + + + Address + पता + + + + + Title + शीर्षक + + + + + Date + दिनांक + + + + Add to Bookmarks… + + + + + Copy Link to Clipboard + लिंक क्लिपबोर्ड में कॉपी करें + + + + Remove Entry + प्रविष्टि हटाएँ + + + + Remove All Entries from This Domain + इस डोमेन की सभी प्रविष्टियाँ हटाएँ + + + + History + वृतांत + + + + Otter::HistoryEntryItem + + + (Untitled) + (शीर्षक रहित) + + + + Otter::HistoryModel + + + Failed to open history file: %1 + वृतांत फाइल खोलने में विफल : %1 + + + + Otter::HtmlBookmarksImporter + + + HTML Bookmarks + + + + + Imports bookmarks from HTML file (Netscape format). + एचटीएमएल फाइल (नेटस्केप प्रारूप) से पृष्ठ स्मृतियाँ आयात करें। + + + + HTML files (*.htm *.html) + एचटीएमएल फाइलें (*.htm *.html) + + + + Otter::IconWidget + + + + + + Select Icon + + + + + Images (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) + + + + + Icon Name: + आइकन नाम : + + + + Select From File… + फाइल से चुनें ... + + + + Select From Theme… + + + + + Reset + + + + + Clear + हटाएँ + + + + Otter::ImagePropertiesDialog + + + Image Properties + + + + + Size: + आकार : + + + + Type: + प्रकार : + + + + File size: + फाइल आकार : + + + + Address: + पता : + + + + Alternative text: + + + + + Long description: + संपूर्ण विवरण : + + + + + + Unknown + अज्ञात + + + + %1 x %2 pixels @ %3 bits per pixel in %n frame(s) + + + + + + %1 x %2 pixels @ %3 bits per pixel + + + + + %1 x %2 pixels + + + + + Otter::ImportDialog + + + Options + विकल्प + + + + Source: + स्रोत : + + + + Results + + + + + Initializing… + + + + + %p% (%v/%m) + + + + + Error + त्रुटि + + + + Unable to import selected type. + + + + + Processing… + + + + + Failed to import data. + + + + + Import cancelled by the user. + + + + + Import finished successfully. + + + + + Otter::JavaScriptPreferencesDialog + + + JavaScript Options + + + + + Allow moving and resizing of windows + + + + + Allow changing of status field + + + + + Allow script to hide address bar + + + + + Allow access to clipboard + + + + + Allow to receive right mouse button clicks + + + + + Allow to close windows: + + + + + Allow to enter full screen mode: + + + + + + Ask + पूछें + + + + + Always + सदैव + + + + + Never + कभी नहीं + + + + Otter::KeyboardProfile + + + + (Untitled) + (शीर्षक रहित) + + + + Otter::KeyboardProfileDialog + + + Profile Configuration + प्रोफाइल विन्यास + + + + Actions + कार्य + + + + Search… + खोजें... + + + + Add + जोड़ें + + + + Remove + हटाएँ + + + + Information + जानकारी + + + + Title: + शीर्षक : + + + + Description: + विवरण : + + + + Version: + संस्करण : + + + + Author: + निर्माता : + + + + + Status + स्थिति + + + + + Action + + + + + + Parameters + मापदंड + + + + + Shortcut + + + + + This shortcut already used by %1 + + + + + unknown action + + + + + This shortcut cannot be used because it would be overriden by a native hotkey used by an editing action + + + + + Single key shortcuts are currently disabled + + + + + Otter::LinksContentsWidget + + + Search… + खोजें... + + + + Lock Panel + + + + + Links + लिंक + + + + Title: %1 + शीर्षक : %1 + + + + Address: %1 + पता : %1 + + + + Otter::LocalListingNetworkReply + + + Directory does not exist + + + + + Directory is not readable + + + + + Cannot read directory listing + + + + + Directory Contents + डायरेक्टरी सामग्री + + + + Name + नाम + + + + Type + प्रकार + + + + Size + आकार + + + + Date + दिनांक + + + + Otter::LocaleDialog + + + Switch Application Language + अनुप्रयोग भाषा बदलें + + + + Language: + भाषा : + + + + Custom path: + + + + + System + सिस्टम + + + + Custom + अनुकूलित + + + + Unknown [%1] + अज्ञात [%1] + + + + Translation files (*.qm) + अनुवादन फाइलें (*qm) + + + + Otter::MacPlatformIntegration + + + Error + त्रुटि + + + + Warning + चेतावनी + + + + Information + जानकारी + + + + Otter::MainWindow + + + Question + प्रश्न + + + + You are about to open %n bookmark(s). + + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + Empty + + + + + Otter::MasterPasswordDialog + + + Set Master Password + + + + + Current password: + + + + + New password: + + + + + Confirm new password: + + + + + Otter::Menu + + + + Failed to create menu action: %1 + + + + + Window - %1 + + + + + + (Untitled) + (शीर्षक रहित) + + + + %1 (%n tab(s)) + + + + + Otter::MenuButtonWidget + + + Menu + मेन्यू + + + + Otter::Migrator + + + Settings Migration + + + + + Configuration of the components listed below needs to be updated to new version. +Do you want to migrate it? + + + + + Create backup + + + + + Otter::MouseProfile + + + + (Untitled) + (शीर्षक रहित) + + + + Otter::MouseProfileDialog + + + Profile Configuration + प्रोफाइल विन्यास + + + + Actions + कार्य + + + + Search… + खोजें... + + + + + Add + जोड़ें + + + + + Remove + हटाएँ + + + + Move Up + ऊपर ले जाएँ + + + + Move Down + नीचे लाएँ + + + + Information + जानकारी + + + + Title: + शीर्षक : + + + + Description: + विवरण : + + + + Version: + संस्करण : + + + + Author: + निर्माता : + + + + Generic + + + + + Link + + + + + Editable Content + + + + + Tab Handle + + + + + Tab Handle of Active Tab + + + + + Empty Area of Tab Bar + + + + + Any Toolbar + + + + + Context and Action + + + + + Parameters + मापदंड + + + + Steps + + + + + Step + + + + + Select Action + कार्य चुनें + + + + Otter::NavigationActionWidget + + + Remove Entry + प्रविष्टि हटाएँ + + + + Purge Entry + + + + + Otter::NetworkAutomaticProxy + + + + Failed to load proxy auto-config (PAC): %1 + + + + + Failed to load proxy auto-config (PAC). Invalid URL: %1 + + + + + Otter::NetworkManager + + + Warning + चेतावनी + + + + SSL errors occurred: + +%1 + +Do you want to continue? + एसएसएल त्रुटि हुई : + +%1 + +क्या आप जारी रखना चाहते हैं? + + + + Otter::NetworkManagerFactory + + + Custom + अनुकूलित + + + + Otter::NotesContentsWidget + + + Search… + खोजें... + + + + Address: + पता : + + + + Date: + + + + + Add + जोड़ें + + + + Delete + हटाएँ + + + + + + Add Folder… + फोल्डर जोड़ें ... + + + + + + + Add Note + + + + + + + Add Separator + विभाजक जोड़ें + + + + Add note… + + + + + Select Folder Name + फोल्डर नाम चुनें + + + + Enter folder name: + फोल्डर नाम दर्ज करें : + + + + Empty Trash + ट्रैश खाली करें + + + + Open source page + + + + + Restore Note + + + + + Notes + नोट्स + + + + Otter::NotificationDialog + + + + Close + बंद करें + + + + Otter::OpenAddressDialog + + + Go to Page + + + + + Enter a web address or choose one from the list: + + + + + Otter::OpenBookmarkDialog + + + Go to Bookmark + + + + + Enter the keyword of bookmark: + + + + + Otter::OperaBookmarksImporter + + + Opera Bookmarks + + + + + Imports bookmarks from Opera Browser version 12 or earlier + + + + + Opera bookmarks files (bookmarks.adr) + ओपेरा पृष्ठ स्मृति फाइलें (bookmarks.adr) + + + + Otter::OperaNotesImporter + + + Import into folder: + इस फोल्डर में आयात करें : + + + + Opera Notes + + + + + Imports notes from Opera Browser version 12 or earlier + + + + + Opera notes files (notes.adr) + ओपेरा नोट्स फाइलें (notes.adr) + + + + Otter::OperaSearchEnginesImporter + + + Remove existing search engines + + + + + Opera search engines + + + + + Imports search engines from Opera Browser version 12 or earlier + + + + + Opera search engines files (search.ini) + ओपेरा खोज साधन फाइलें (search.ini) + + + + Otter::OperaSessionImporter + + + Opera Session + + + + + Imports session from Opera Browser version 12 or earlier + + + + + Opera session files (*.win) + ओपेरा सत्र फाइलें (*.win) + + + + Otter::OpmlImporter + + + OPML Feeds + + + + + Imports feeds from OPML file + OPML फाइल से समाचार आयात करें + + + + OPML files (*.opml) + OPML फाइलें (*.opml) + + + + Otter::OpmlImporterWidget + + + Import into folder: + इस फोल्डर में आयात करें : + + + + New… + नया ... + + + + Allow to duplicate already existing feeds + + + + + Otter::OptionWidget + + + No + नहीं + + + + Yes + हाँ + + + + Defaults + डिफ़ॉल्ट + + + + Otter::PageInformationContentsWidget + + + Search… + खोजें... + + + + + Name + नाम + + + + + Value + मान + + + + + <empty> + <empty> + + + + General + सामान्य + + + + Title + शीर्षक + + + + MIME type + + + + + Document size + + + + + Total size + + + + + + Number of requests + + + + + %1 (%n blocked) + %1 (%n अवरुद्ध)%1 (%n अवरुद्ध) + + + + Downloaded + + + + + Headers + + + + + Meta + + + + + Permissions + अनुमतियाँ + + + + Security + सुरक्षा + + + + Cipher protocol + + + + + Cipher authentication method + + + + + Cipher encryption method + + + + + Cipher key exchange method + + + + + Page Information + पृष्ठ जानकारी + + + + Otter::PasswordBarWidget + + + Save + संचित करें + + + + Cancel + रद्द करें + + + + + Do you want to update login data for %1? + + + + + + Do you want to save login data for %1? + क्या आप %1 हेतु लॉगिन डाटा संचित करना चाहते हैं? + + + + Otter::PasswordsContentsWidget + + + Search… + खोजें... + + + + + Name + नाम + + + + + Value + मान + + + + Set #%1 + #%1 सेट + + + + + + Question + प्रश्न + + + + + You are about to delete %n password(s). + + + + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + You are about to delete all passwords. + + + + + Remove Password + + + + + Remove All Passwords from This Domain… + + + + + Remove All Passwords… + + + + + Passwords + कूटशब्द + + + + Otter::PermissionBarWidget + + + Allow this time + + + + + Always allow + + + + + Always deny + + + + + OK + ठीक है + + + + Cancel + रद्द करें + + + + %1 wants to enter full screen mode. + + + + + %1 wants access to your location. + + + + + %1 wants to show notifications. + + + + + %1 wants to lock mouse pointer. + + + + + %1 wants to access your microphone. + + + + + %1 wants to access your camera. + + + + + %1 wants to access your microphone and camera. + + + + + %1 wants to play audio. + + + + + Invalid permission request from %1. + + + + + Otter::PlatformIntegration + + + Error + त्रुटि + + + + Failed to install update. + + + + + Otter::PopupsBarWidget + + + Details + + + + + Close + बंद करें + + + + + %1 wants to open %n pop-up window(s). + + + + + Open All Pop-Ups from This Website + + + + + Open Pop-Ups from This Website in Background + + + + + Block All Pop-Ups from This Website + + + + + Always Ask What to Do for This Website + + + + + Blocked Pop-ups + + + + + Open All + सभी खोलें + + + + Otter::PreferencesAdvancedPageWidget + + + + + General + सामान्य + + + + Smooth scrolling + + + + + Check spelling + + + + + Address Field Suggestions + + + + + Suggest bookmarks + + + + + Suggest history + + + + + Suggest search results + + + + + Local paths + + + + + Address Completion + + + + + Show category headers + + + + + Display mode: + + + + + Events + + + + + Play sound: + + + + + Show notification + + + + + Mark taskbar entry + + + + + Options + विकल्प + + + + Prefer native notifications + + + + + Style + शैली + + + + Widget style: + + + + + Interface style sheet: + + + + + Other + अन्य + + + + Show tray icon + + + + + Images: + चित्र : + + + + Enable JavaScript + जावा स्क्रिप्ट सक्रिय करें + + + + JavaScript Options… + + + + + Plugins: + प्लगिन : + + + + User style sheet: + उपयोक्ता शैली पत्र : + + + + Website Preferences + वेबसाइट सेटिंग्स + + + + Search… + खोजें... + + + + + + + + + + Add + जोड़ें + + + + + + + + Edit… + संपादित करें ... + + + + + + + + + + Remove + हटाएँ + + + + MIME Types + + + + + Show download dialog + + + + + Save to disk + डिस्क में संचित करें + + + + Do not ask for folder, save directly to + फोल्डर स्थान न पूछें, सीधे यहाँ संचित करें + + + + Open with application + + + + + Pass web address directly to application + + + + + Send referrer information + + + + + User Agent + + + + + Proxy + प्रॉक्सी + + + + SSL Ciphers + + + + + + + Move Up + ऊपर ले जाएँ + + + + + + Move Down + नीचे लाएँ + + + + + + Updates + + + + + Select channels from which you want to receive updates: + + + + + Check for updates every + + + + + day(s) + + + + + Install updates automatically + + + + + Keyboard Shortcuts + + + + + + Clone + + + + + Enable single key shortcuts + + + + + Mouse Actions and Gestures + + + + + Enable mouse gestures + + + + + + Browsing + + + + + + Notifications + अधिसूचनाएँ + + + + + Appearance + + + + + + Content + सामग्री + + + + + Downloads + डाउनलोड + + + + + Programs + + + + + + History + वृतांत + + + + + Network + नेटवर्क + + + + + Security + सुरक्षा + + + + + Keyboard + + + + + + Mouse + + + + + Compact + + + + + Columns + + + + + WAV files (*.wav) + WAV फाइलें (*.wav) + + + + + Name + नाम + + + + Description + विवरण + + + + System Style + + + + + + Style sheets (*.css) + शैली पत्र (*.css) + + + + All images + सभी चित्र + + + + Cached images + + + + + No images + कोई चित्र नहीं + + + + Enabled + सक्रिय + + + + On demand + + + + + Disabled + निष्क्रिय + + + + + Title + शीर्षक + + + + Value + मान + + + + + Add Folder… + फोल्डर जोड़ें ... + + + + Add User Agent… + + + + + + Add Separator + विभाजक जोड़ें + + + + Add Proxy… + + + + + Stable version + + + + + Beta version + + + + + Weekly development version + + + + + + New… + नया ... + + + + + Readd + पुनः जोड़ें + + + + + + Question + प्रश्न + + + + Do you really want to remove preferences for this website? + + + + + MIME Type Name + MIME प्रकार नाम + + + + Select name of MIME Type: + MIME प्रकार का नाम चुनें : + + + + Error + त्रुटि + + + + Invalid MIME Type name. + अमान्य MIME प्रकार नाम। + + + + + + + Folder Name + फोल्डर नाम + + + + + + + Select folder name: + फोल्डर नाम चुनें : + + + + + + + + + + + + + (Untitled) + (शीर्षक रहित) + + + + + Custom + अनुकूलित + + + + + Do you really want to remove this profile? + क्या आप निश्चित ही यह प्रोफाइल हटाना चाहते हैं? + + + + + Delete profile permanently + पूर्ण रूप से प्रोफाइल हटाना + + + + Otter::PreferencesContentPageWidget + + + Blocking + + + + + Pop-ups: + + + + + Zoom + + + + + Default zoom: + + + + + % + % + + + + Zoom text only + + + + + Fonts + + + + + Default proportional font size: + + + + + + + px + पिक्सेल + + + + Default fixed-width font size: + + + + + Minimum font size: + + + + + None + कोई नहीं + + + + Colors + + + + + Ask + पूछें + + + + Block all + सभी अवरुद्ध करें + + + + Open all + सभी खोलें + + + + Open all in background + सभी बैकग्राउंड में खोलें + + + + Style + शैली + + + + Font + + + + + + Preview + पूर्वावलोकन + + + + Standard font + + + + + Fixed-width font + + + + + Serif font + + + + + Sans-serif font + + + + + Cursive font + + + + + Fantasy font + + + + + The quick brown fox jumps over the lazy dog + + + + + Type + प्रकार + + + + Background Color + + + + + Text Color + + + + + Link Color + + + + + Visited Link Color + + + + + Otter::PreferencesDialog + + + Preferences + सेटिंग्स + + + + General + सामान्य + + + + Content + सामग्री + + + + Privacy + निजता + + + + Search + खोज + + + + Advanced + विस्तृत + + + + All Settings + सभी सेटिंग्स + + + + Otter::PreferencesGeneralPageWidget + + + Startup + + + + + Startup behavior: + + + + + Home page: + + + + + Use Current Page + + + + + Use Bookmark + + + + + Restore to Default + + + + + Do not load the tab contents until selected + + + + + Downloads + डाउनलोड + + + + Save files to: + यहाँ फाइलें संचित करें : + + + + Always ask me where to save files + सदैव फाइलों हेतु संचय स्थान पूछें + + + + Tabs + + + + + Open new windows in new tabs instead + + + + + Reuse current tab + + + + + Open new tab next to active + + + + + When closing tab: + + + + + Activate the last active tab + + + + + Activate the next tab + + + + + Activate the first tab opened from current tab + + + + + Language + भाषा + + + + Preferred webpage language: + वेब पृष्ठ हेतु इच्छित भाषा : + + + + Edit… + संपादित करें ... + + + + System Defaults + सिस्टम डिफ़ॉल्ट + + + + Set as a default browser + डिफ़ॉल्ट ब्राउज़र के तौर पर सेट करें + + + + Show windows and tabs from the last time + + + + + Show startup dialog + + + + + Show home page + होम पृष्ठ दिखाएँ + + + + Show start page + आरंभ पृष्ठ दिखाएँ + + + + Show empty page + रिक्त पृष्ठ दिखाएँ + + + + Otter::PreferencesPrivacyPageWidget + + + Tracking + + + + + Do Not Track: + + + + + History + वृतांत + + + + Private mode + निजी मोड + + + + Remember browsing history + + + + + Remember downloads history + + + + + Remember search history + + + + + Remember form history + + + + + Template… + + + + + Enable cookies + + + + + Accept cookies: + + + + + Keep until: + + + + + Accept third-party cookies: + + + + + Exceptions… + + + + + Clear history when application closes + + + + + Settings… + सेटिंग्स ... + + + + Passwords + कूटशब्द + + + + Remember passwords + कूटशब्द स्मरण करें + + + + Manage… + प्रबंधन ... + + + + Use a master password + + + + + Change… + बदलें ... + + + + Inform websites that I do not want to be tracked + + + + + Inform websites that I allow tracking + + + + + Do not inform websites about my preference + + + + + + Always + सदैव + + + + + Only existing + + + + + Only read existing + + + + + Expires + मान्यता समाप्ति + + + + Current session is closed + + + + + Always ask + सदैव पूछें + + + + Never + कभी नहीं + + + + Otter::PreferencesSearchPageWidget + + + Search… + खोजें... + + + + Add + जोड़ें + + + + Edit… + संपादित करें ... + + + + Update + अपडेट + + + + Remove + हटाएँ + + + + Move Up + ऊपर ले जाएँ + + + + Move Down + नीचे लाएँ + + + + Enable search suggestions + + + + + + Name + नाम + + + + + Keyword + कुंजीपटल + + + + New… + नया ... + + + + File… + फाइल ... + + + + Readd + पुनः जोड़ें + + + + New Search Engine + + + + + Select File + फाइल चुनें + + + + Open Search files (*.xml) + ओपेरा खोज फाइलें (*.xml) + + + + + Question + प्रश्न + + + + Do you really want to remove this search engine? + + + + + Delete search engine permanently + + + + + + + Error + त्रुटि + + + + + Failed to open Open Search file. + खोज फाइल खोलने में विफल। + + + + Keyword is already in use. Do you want to continue anyway? + + + + + Failed to update search engine. + + + + + (Untitled) + (शीर्षक रहित) + + + + Otter::PrivateWindowIndicatorWidget + + + + Private Window + + + + + Otter::ProgressBarDelegate + + + Unknown + अज्ञात + + + + Otter::ProgressInformationWidget + + + Document: %p% + + + + + Document: ? + + + + + Total: ? + + + + + Total: %p% + + + + + Total: %1 + + + + + Elements: %1/%2 + + + + + Speed: %1 + + + + + Time: %1 + + + + + Otter::ProxyPropertiesDialog + + + Title: + शीर्षक : + + + + General + सामान्य + + + + Manual + + + + + Port + + + + + Protocol + + + + + Servers + + + + + FTP + + + + + SOCKS5 + + + + + HTTP + + + + + HTTPS + + + + + All + सभी + + + + Automatic + स्वतः + + + + Path to PAC file: + PAC फाइल हेतु पथ : + + + + Use system authentication + + + + + Exceptions + + + + + Do not use this proxy for: + + + + + Add + जोड़ें + + + + Edit + संपादित करें + + + + Remove + हटाएँ + + + + Example: domain.com, localhost, 127.0.0.1, 192.168.1.0/24 + + + + + Edit Proxy + + + + + Add Proxy + + + + + Otter::QtWebEnginePage + + + + + JavaScript + जावा स्क्रिप्ट + + + + + + Disable JavaScript popups + + + + + + Question + प्रश्न + + + + + Are you sure that you want to send form data again? + + + + + + Do you want to resend data? + + + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + Otter::QtWebEngineWebBackend + + + Blink Backend (experimental) + + + + + Backend utilizing QtWebEngine module + + + + + Otter::QtWebEngineWebWidget + + + file + फाइल + + + + Failed to save image: %1 + चित्र संचित करने में विफल : %1 + + + + Blank Page + रिक्त पृष्ठ + + + + (Untitled) + (शीर्षक रहित) + + + + Otter::QtWebKitFtpListingNetworkReply + + + Network error %1 + नेटवर्क त्रुटि %1 + + + + Unknown command + + + + + Directory Contents + डायरेक्टरी सामग्री + + + + Name + नाम + + + + Type + प्रकार + + + + Size + आकार + + + + Date + दिनांक + + + + Otter::QtWebKitInspector + + + Close + बंद करें + + + + Otter::QtWebKitNetworkManager + + + Receiving data from %1… + + + + + Completed request to %1 + + + + + + Waiting for authentication… + + + + + Loading finished + + + + + Sending request to %1… + + + + + Otter::QtWebKitPage + + + + + JavaScript + जावा स्क्रिप्ट + + + + + + Disable JavaScript popups + + + + + + + Question + प्रश्न + + + + + Are you sure that you want to send form data again? + + + + + + Do you want to resend data? + + + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + %1 error #%2: %3 + %1 त्रुटि #%2: %3 + + + + Request blocked by rule from profile %1:<br> +%2 + + + + + (Unknown) + (अज्ञात) + + + + WebKit error %1 + वेबकिट त्रुटि %1 + + + + Network error %1 + नेटवर्क त्रुटि %1 + + + + The script on this page appears to have a problem. + + + + + Do you want to stop the script? + + + + + Otter::QtWebKitPluginWidget + + + + Click to load content (%1) handled by plugin from: %2 + + + + + Otter::QtWebKitWebBackend + + + WebKit Backend (legacy) + + + + + WebKit Backend + + + + + Backend utilizing QtWebKit module + + + + + Otter::QtWebKitWebWidget + + + Error + त्रुटि + + + + Failed to open file for writing. + राइट हेतु फाइल खोलने में विफल। + + + + file + फाइल + + + + Failed to save image: %1 + चित्र संचित करने में विफल : %1 + + + + Print Preview + प्रिंट पूर्वावलोकन + + + + PNG image (*.png) + + + + + JPEG image (*.jpg *.jpeg) + + + + + Blank Page + रिक्त पृष्ठ + + + + (Untitled) + (शीर्षक रहित) + + + + Otter::ReloadTimeDialog + + + Automatic Page Reload + + + + + minutes + मिनट + + + + seconds + सेकंड + + + + Otter::ReportDialog + + + Diagnostic Report + + + + + Copy + कॉपी करें + + + + Otter::RssFeedParser + + + Failed to parse feed file: %1 + समाचार फाइल प्राप्यता विफल : %1 + + + + Failed to parse feed: no valid entries found + समाचार फाइल प्राप्यता विफल : कोई मान्य प्रविष्टि नहीं मिली + + + + Otter::SaveSessionDialog + + + Save Session + सत्र संचित करें + + + + Session title: + + + + + Session identifier: + + + + + Store only current window + + + + + Question + प्रश्न + + + + Session with specified indentifier already exists. +Do you want to overwrite it? + + + + + Error + त्रुटि + + + + Failed to save session. + सत्र संचित करने में विफल। + + + + Otter::SearchBarWidget + + + Find… + + + + + Find Next + + + + + Find Previous + + + + + Highlight + + + + + Case Sensitive + + + + + Close + बंद करें + + + + Otter::SearchEnginePropertiesDialog + + + Edit Search Engine + + + + + Title: + शीर्षक : + + + + Change Icon… + आइकन बदलें ... + + + + Description: + विवरण : + + + + Keyword: + कमांड अक्षर : + + + + Encoding: + एन्कोडिंग : + + + + Form address: + + + + + Update address: + + + + + Results Query + + + + + + Address: + पता : + + + + + Query: + + + + + + POST method + + + + + + Data encoding (enctype): + डाटा एन्कोडिंग (enctype): + + + + Suggestions Query + + + + + Placeholders + + + + + Search Terms + + + + + Language + भाषा + + + + Otter::SearchEnginesManager + + + Manage Search Engines… + + + + + Unknown + अज्ञात + + + + Otter::SearchWidget + + + + + + Search using %1 + + + + + Add %1 + + + + + (untitled) + (शीर्षक रहित) + + + + Error + त्रुटि + + + + Failed to add search engine. + + + + + Select Search Engine + + + + + Add Search Engine… + + + + + Search + खोज + + + + Otter::SelectPasswordDialog + + + Select Password + + + + + Select set of credentials: + + + + + Remove + हटाएँ + + + + + Name + नाम + + + + + Value + मान + + + + Set #%1 + #%1 सेट + + + + Question + प्रश्न + + + + Do you really want to remove this credentials set? + + + + + Otter::SessionModel + + + Session + + + + + Trash + ट्रैश + + + + Otter::SessionsManager + + + Default + डिफ़ॉल्ट + + + + + (Untitled) + (शीर्षक रहित) + + + + Start Page + आरंभ पृष्ठ + + + + (Unknown) + (अज्ञात) + + + + Otter::SessionsManagerDialog + + + Sessions Manager + सत्र प्रबंधक + + + + Open + खोलें + + + + Delete + हटाएँ + + + + Open session in current window + + + + + + (Untitled) + (शीर्षक रहित) + + + + + Title + शीर्षक + + + + + Identifier + + + + + + Windows + + + + + %n window(s) (%1) + + + + + %n tab(s) + + + + + Warning + चेतावनी + + + + This session was not saved correctly. +Are you sure that you want to restore this session anyway? + यह सत्र उचित रूप से संचित नहीं हुआ। +क्या आप निश्चित ही इसे पुनः स्थापित करना चाहते हैं? + + + + Confirm + + + + + Are you sure that you want to delete session %1? + + + + + Error + त्रुटि + + + + Failed to delete session. + + + + + Otter::SettingsManager + + + Yes + हाँ + + + + No + नहीं + + + + Invalid + अमान्य + + + + Otter::ShortcutWidget + + + + Clear + हटाएँ + + + + Otter::SidebarWidget + + + Panels + + + + + Add web panel + + + + + Add Web Panel… + + + + + Otter::SourceViewerWebWidget + + + Failed to save file: %1 + फाइल संचित करने में विफल : %1 + + + + Error + त्रुटि + + + + Failed to save file. + फाइल संचित करने में विफल। + + + + Warning + चेतावनी + + + + The document has been modified. +Do you want to save your changes or discard them? + डॉक्यूमेंट में बदलाव किए गए हैं। +आप उन्हें संचित करना चाहते हैं या निरस्त? + + + + Show Line Numbers + + + + + Source Viewer: %1 + + + + + Source Viewer + + + + + Otter::StartPageModel + + + + Add Tile… + + + + + Otter::StartPagePreferencesDialog + + + Start Page Preferences + + + + + Use custom background image + + + + + Scaling mode: + + + + + Image path: + + + + + Color: + + + + + Columns per row: + + + + + Automatic + स्वतः + + + + Zoom level: + + + + + % + % + + + + Show search field + + + + + Show tile to add new entries + + + + + Images (*.png *.jpg *.bmp *.gif *.svg *.svgz) + + + + + Best fit + + + + + Center + + + + + Stretch + + + + + Tile + + + + + Otter::StartPageWidget + + + Add Tile + + + + + Edit… + संपादित करें ... + + + + Reload + पुनः लोड + + + + Delete + हटाएँ + + + + Configure… + विन्यास ... + + + + Add Tile… + + + + + Otter::StartupDialog + + + + Welcome to Otter + + + + + Continue session + + + + + Begin with home page + + + + + Begin with start page + + + + + Begin with blank page + + + + + Enable plugins + + + + + + (Untitled) + (शीर्षक रहित) + + + + Window %1 + विंडो %1 + + + + Title: %1 +Address: %2 + + + + + Default + डिफ़ॉल्ट + + + + Otter::TabBarToolBarWidget + + + Switch Tabs Using the Mouse Wheel + + + + + Show Thumbnails in Tabs + + + + + Arrange + + + + + Otter::TabBarWidget + + + Arrange + + + + + Switch Tabs Using the Mouse Wheel + + + + + Show Thumbnails in Tabs + + + + + Customize + अनुकूलित + + + + Question + प्रश्न + + + + You are about to open %n URL(s). + + + + + Do you want to continue? + क्या आप जारी रखना चाहते हैं? + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + Otter::TabHandleWidget + + + Close Tab + टैब बंद करें + + + + Otter::TabHistoryContentsWidget + + + Search… + खोजें... + + + + Tab History + + + + + Title: %1 + शीर्षक : %1 + + + + Address: %1 + पता : %1 + + + + Date: %1 + + + + + Otter::TextLabelWidget + + + + + + <empty> + <empty> + + + + Copy + कॉपी करें + + + + Copy Link Location + + + + + Select All + सभी चुनें + + + + Otter::ToolBarDialog + + + + Edit Toolbar + + + + + Name: + नाम : + + + + Entries + + + + + Edit… + संपादित करें ... + + + + Current entries: + + + + + Available entries: + + + + + + Filter… + निस्पंदन ... + + + + Add Bookmark + पृष्ठ स्मृति जोड़ें + + + + Bookmarks folder: + + + + + New… + नया ... + + + + Options + विकल्प + + + + Visibility: + + + + + Visibility in full screen mode: + + + + + Button style: + + + + + Icon size: + + + + + Auto + + + + + + px + पिक्सेल + + + + Maximum size of item: + + + + + No limit + + + + + Display toggle button + + + + + Edit Bookmarks Bar + + + + + Bookmarks Bar + + + + + Edit Sidebar + + + + + Sidebar + + + + + Toolbar + + + + + + Always visible + + + + + + Always hidden + + + + + + Visible only when needed + + + + + Visible only when cursor is close to screen edge + + + + + Follow style + + + + + Icon only + + + + + Text only + + + + + Text beside icon + + + + + Text under icon + + + + + Edit Entry + + + + + All + सभी + + + + + Unknown + अज्ञात + + + + Show search engine: + + + + + Show search button: + + + + + Global + + + + + Tab + + + + + + Text: + + + + + Option: + + + + + Scope: + + + + + Blocked Elements: {amount} + + + + + Menu + मेन्यू + + + + Downloads + डाउनलोड + + + + Icon: + + + + + --- separator --- + + + + + --- spacer --- + + + + + Arbitrary List of Actions + + + + + List of Closed Tabs and Windows + + + + + Address Field + + + + + Configuration Widget (%1) + + + + + Configuration Widget + + + + + Content Blocking Details + + + + + Error Console + त्रुटि कंसोल + + + + Menu Bar + + + + + Menu Button + + + + + Sidebar Panel Chooser + + + + + Private Window Indicator + + + + + Progress Information (Document Progress) + + + + + Progress Information (Total Progress) + + + + + Progress Information (Loaded Elements) + + + + + Progress Information (Loading Speed) + + + + + Progress Information (Elapsed Time) + + + + + Progress Information (Status Message) + + + + + Search Field (%1) + + + + + Search Field + + + + + Window Resize Handle + + + + + Status Message Field + + + + + Tab Bar + + + + + Downloads Progress Information + + + + + Zoom Slider + + + + + Invalid Bookmark + + + + + + Invalid Entry + + + + + Otter::ToolBarWidget + + + + Toggle Visibility + + + + + Customize + + + + + (Untitled) + (शीर्षक रहित) + + + + Configure… + विन्यास ... + + + + Reset to Defaults… + + + + + Remove… + + + + + Otter::ToolBarsManager + + + Reset Toolbar + + + + + Do you really want to reset this toolbar to default configuration? + + + + + Remove Toolbar + + + + + Do you really want to remove this toolbar? + + + + + Reset Toolbars + + + + + Do you really want to reset all toolbars to default configuration? + + + + + Otter::ToolButtonWidget + + + Menu + मेन्यू + + + + Otter::Transfer + + + + file + फाइल + + + + Question + प्रश्न + + + + File with the same name already exists. +Do you want to overwrite it? + +%1 + समान नाम से फाइल पहले से मौजूद है। +क्या आप उसे अधिलेखित करना चाहते हैं? + +%1 + + + + Otter::TransferActionWidget + + + From: + + + + + + Size: + आकार : + + + + %1 (download completed) + + + + + %1 (%2% downloaded) + + + + + + Unknown + अज्ञात + + + + Redownload + + + + + Open Folder + + + + + Stop + रोकें + + + + <div style="white-space:pre;">Source: %1 +Target: %2 +Size: %3 +Downloaded: %4 +Progress: %5</div> + + + + + Otter::TransferDialog + + + Opening unknown file + अज्ञात फाइल खोली जा रही है + + + + Name: + नाम : + + + + Type: + प्रकार : + + + + Size: + आकार : + + + + From: + + + + + Open with: + + + + + Remember choice for this file type + इस फाइल प्रकार हेतु चयन स्मरण करें + + + + unknown file + अज्ञात फाइल + + + + Opening %1 + + + + + unknown + अज्ञात + + + + %1 (download completed) + + + + + %1 (%2% downloaded) + + + + + Otter::TransfersContentsWidget + + + Quick Download… + + + + + Source: + स्रोत : + + + + Target: + + + + + Size: + आकार : + + + + Downloaded: + + + + + Progress: + प्रगति : + + + + + + Stop + रोकें + + + + + Redownload + + + + + + Status + स्थिति + + + + + Filename + फाइल नाम + + + + + Size + आकार + + + + + Progress + प्रगति + + + + + Time + समय + + + + + Speed + गति + + + + + Started + + + + + + Finished + + + + + Warning + चेतावनी + + + + This file is still being downloaded. +Do you really want to remove it? + इस फाइल का डाउनलोड जारी है। +क्या आप निश्चित ही इसे हटाना चाहते हैं? + + + + <div style="white-space:pre;">Source: %1 +Target: %2 +Size: %3 +Downloaded: %4 +Progress: %5</div> + + + + + + + Unknown + अज्ञात + + + + Open Folder + फोल्डर खोलें + + + + + Resume + + + + + Copy Transfer Information + + + + + Remove + हटाएँ + + + + Clear Finished Transfers + + + + + Downloads + डाउनलोड + + + + Otter::TransfersManager + + + Download completed: +%1 + + + + + Otter::TransfersWidget + + + + Downloads + डाउनलोड + + + + Show all Downloads + + + + + Otter::TrayIcon + + + + Show Windows + + + + + + Otter Browser + + + + + Hide Windows + + + + + Otter::UpdateCheckerDialog + + + Check for Updates + + + + + Checking for update… + + + + + Checking for updates… + + + + + There are no new updates. + + + + + Available updates: + + + + + Details… + विवरण ... + + + + Download + + + + + Version %1 from %2 channel + + + + + Some of the updates do not contain packages for your platform. Try to check for updates later or visit details page for more info. + + + + + Downloading: + + + + + Download finished! + + + + + Install + + + + + New version of Otter Browser is ready to install. +Click Install button to restart browser and install the update or close this dialog to install the update during next browser restart. + + + + + Download failed! + + + + + Check Error Console for more information. + अधिक जानकारी हेतु त्रुटि कंसोल देखें। + + + + Otter::UserAgentPropertiesDialog + + + Title: + शीर्षक : + + + + Value: + मान : + + + + Preview + पूर्वावलोकन + + + + Edit User Agent + + + + + Add User Agent + + + + + Placeholders + + + + + Platform + + + + + Engine Version + + + + + Application Version + + + + + Otter::WebContentsWidget + + + Question + प्रश्न + + + + This tab has crashed. + + + + + Do you want to try to reload it? + + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + Failed to load requested web backend: %1 + + + + + Select User Agent + + + + + Enter User Agent: + + + + + Start Page + आरंभ पृष्ठ + + + + Otter::WebWidget + + + Title: %1 + शीर्षक : %1 + + + + Address: %1 + पता : %1 + + + + JavaScript + जावा स्क्रिप्ट + + + + Webpage wants to close this tab, do you want to allow to close it? + + + + + Do not show this message again + यह संदेश पुनः न दिखाएँ + + + + HTML file (*.html *.htm) + एचटीएमएल फाइल (*.html *.htm) + + + + HTML file with all resources (*.html *.htm) + + + + + Web archive (*.mht) + + + + + PDF document (*.pdf) + + + + + Open Image in New Background Tab (%1) + + + + + Open Image in New Tab (%1) + + + + + Playback Rate: %1x + + + + + Page Default + + + + + Never Reload + + + + + Reload Every: %n second(s) + + + + + Otter::WebsiteInformationDialog + + + General + सामान्य + + + + Information + जानकारी + + + + Address: + पता : + + + + Encoding: + एन्कोडिंग : + + + + Size: + आकार : + + + + Elements: + + + + + Download date: + + + + + Title: + शीर्षक : + + + + Permissions + अनुमतियाँ + + + + Preferences + सेटिंग्स + + + + + Details… + विवरण ... + + + + Set cookies: + + + + + Set third-party cookies: + + + + + Show notifications: + + + + + Access your location: + + + + + Load plugins: + + + + + Load images: + + + + + Use JavaScript: + + + + + Show pop-up windows: + + + + + Enter full screen mode: + + + + + Security + सुरक्षा + + + + Certificate + + + + + Issued to: + + + + + Issued by: + + + + + Issued on: + + + + + Expires on: + + + + + Cipher + + + + + Protocol: + + + + + Authentication method: + + + + + Encryption method: + + + + + Key exchange method: + + + + + SSL Errors + एसएसएल त्रुटि + + + + (unknown) + + + + + This website was marked as fraud. + + + + + + Your connection with this website is not private. + + + + + Your connection with this website is private. + + + + + You are viewing content from your local filesystem. + + + + + You are viewing safe page from Otter Browser. + + + + + No information. + + + + + unknown + अज्ञात + + + + %1 (%n blocked) + %1 (%n अवरुद्ध)%1 (%n अवरुद्ध) + + + + + Only existing + + + + + Only read existing + + + + + + + + + + + + + Never + कभी नहीं + + + + + + + + + + + + Always + सदैव + + + + On demand + + + + + Only cached + + + + + + + Always ask + सदैव पूछें + + + + Always (open in backgound) + + + + + Ask + पूछें + + + + + Error Message + त्रुटि संदेश + + + + + URL + + + + + Information for %1 + + + + + Otter::WebsitePreferencesDialog + + + Website Preferences + वेबसाइट सेटिंग्स + + + + Website: + वेबसाइट + + + + Content + सामग्री + + + + + + + + Override + + + + + Plugins: + प्लगिन : + + + + Encoding: + एन्कोडिंग : + + + + User style sheet: + उपयोक्ता शैली पत्र : + + + + Images: + चित्र : + + + + Pop-ups: + + + + + Privacy + निजता + + + + Keep until: + + + + + Remember browsing history + + + + + Enable cookies + + + + + Accept cookies: + + + + + Do Not Track: + + + + + Cookies: + + + + + Add… + जोड़ें + + + + Properties… + विशेषताएँ ... + + + + Delete + हटाएँ + + + + Accept third-party cookies: + + + + + Scripting + + + + + Allow to receive right mouse button clicks + + + + + Allow changing of status field + + + + + Allow to close windows: + + + + + Allow script to hide address bar + + + + + Allow moving and resizing of windows + + + + + Enable JavaScript + जावा स्क्रिप्ट सक्रिय करें + + + + Allow access to clipboard + + + + + Allow to enter full screen mode: + + + + + Network + नेटवर्क + + + + Send referrer information + + + + + Proxy: + + + + + User Agent: + + + + + Content Blocking + + + + + Profiles: + प्रोफाइल : + + + + Enable custom rules + + + + + Auto Detect + स्वतः पहचान + + + + + + Ask + पूछें + + + + Block all + सभी अवरुद्ध करें + + + + Open all + सभी खोलें + + + + Open all in background + सभी बैकग्राउंड में खोलें + + + + All images + सभी चित्र + + + + Cached images + + + + + No images + कोई चित्र नहीं + + + + Enabled + सक्रिय + + + + On demand + + + + + Disabled + निष्क्रिय + + + + + + + Always + सदैव + + + + + + Never + कभी नहीं + + + + Inform websites that I do not want to be tracked + + + + + Inform websites that I allow tracking + + + + + Do not inform websites about my preference + + + + + + Only existing + + + + + Only read existing + + + + + Expires + मान्यता समाप्ति + + + + Current session is closed + + + + + Always ask + सदैव पूछें + + + + + Domain + डोमेन + + + + + Name + नाम + + + + + Path + पथ + + + + + Value + मान + + + + + Expiration Date + मान्यता समाप्ति दिनांक + + + + this session only + केवल इस सत्र हेतु + + + + Style sheets (*.css) + शैली पत्र (*.css) + + + + Otter::WindowsContentsWidget + + + Search… + खोजें... + + + + Windows and Tabs + विंडो व टैब + + + + Otter::WindowsPlatformIntegration + + + New tab + + + + + New private tab + + + + + New window + + + + + New private window + + + + + Failed to run command "%1", file is not executable + + + + + Failed to run command "%1" (arguments: "%2") + + + + + No valid suffix for given MIME type: %1 + + + + + + Failed to load a valid application path for MIME type %1: %2 + + + + + Otter::WorkspaceWidget + + + + Arrange + + + + + Otter::ZoomWidget + + + + Zoom %1% + + + + + actions + + Reload Every + + + + 1 Minute + 1 मिनट + + + 30 Minutes + 30 मिनट + + + 1 Hour + 1 घंटा + + + 2 Hours + 2 घंटे + + + 6 Hours + 6 घंटे + + + Never + कभी नहीं + + + Custom… + अनुकूलित ... + + + + Run Macro + + + + + Run Arbitrary List of Actions + + + + + Set Option + + + + + Set, Reset or Toggle Option + + + + + New Tab + नया टैब + + + + New Private Tab + + + + + New Window + नई विंडो + + + + New Private Window + + + + + Open… + खोलें + + + + Save… + संचित करें ... + + + + Clone Tab + + + + + Peek Tab + + + + + + Pin Tab + + + + + Detach Tab + + + + + Maximize + + + + + Maximize Tab + + + + + Minimize + + + + + Minimize Tab + + + + + Restore + + + + + Restore Tab + + + + + Stay on Top + + + + + Clear Tab History + + + + + Remove Local Tab History + + + + + + + + Purge Tab History + + + + + Remove Local and Global Tab History + + + + + + Mute Tab Media + + + + + Suspend Tab + + + + + Close Tab + टैब बंद करें + + + + Close Other Tabs + + + + + Close All Private Tabs + + + + + Close All Private Tabs in Current Window + + + + + Close Private Tabs and Windows + + + + + Reopen Previously Closed Tab + + + + + Maximize All + + + + + Minimize All + + + + + Restore All + + + + + Cascade + + + + + Tile + + + + + Close Window + + + + + Reopen Previously Closed Window + + + + + Manage Sessions… + + + + + Save Current Session… + वर्तमान सत्र संचित करें ... + + + + Open URL + + + + + + + + + + + + + + + + Open + खोलें + + + + + Open in This Tab + + + + + + + + + + + + Open in New Tab + + + + + + + + + + + + Open in New Background Tab + + + + + + + + + + + Open in New Window + नई विंडो में खोलें + + + + + + + + + + Open in New Background Window + + + + + + Open in New Private Tab + + + + + + Open in New Private Background Tab + + + + + + Open in New Private Window + + + + + + Open in New Private Background Window + + + + + Copy Link to Clipboard + लिंक क्लिपबोर्ड में कॉपी करें + + + + + Bookmark Link… + + + + + Save Link Target As… + लक्षित लिंक इस रूप में संचित करें ... + + + + Save to Downloads + डाउनलोड में संचित करें + + + + Go to This Address + + + + + Open Frame + + + + + Open Frame in This Tab + + + + + Open Frame in New Tab + + + + + Open Frame in New Background Tab + + + + + Copy Frame Link to Clipboard + + + + + + + Reload + पुनः लोड करें + + + + Reload Frame + + + + + View Frame Source + + + + + Open Image + + + + + Open Image In New Tab + + + + + + Open Image in New Background Tab + + + + + Save Image… + चित्र संचित करें ... + + + + Copy Image to Clipboard + + + + + Copy Image Link to Clipboard + + + + + Reload Image + + + + + Image Properties… + + + + + Save Media… + मीडिया संचित करें ... + + + + Copy Media Link to Clipboard + + + + + Show Controls + + + + + Show Media Controls + + + + + Looping + + + + + Playback Looping + + + + + + Play + + + + + Play Media + + + + + + Mute + + + + + Mute Media + + + + + Playback Rate + + + + + Log In + + + + + Go + + + + + Go to URL + + + + + Back + वापस + + + + Go Back + वापस जाएँ + + + + Forward + + + + + Go Forward + + + + + + Go to History Entry + + + + + Go to Page or Search + + + + + Go to Home Page + + + + + Go to Parent Directory + + + + + Rewind + + + + + Rewind History + + + + + Fast Forward + + + + + Remove History Entry + + + + + Stop + रोकें + + + + Stop Scheduled Page Reload + + + + + Stop All Pages + + + + + Reload or Stop + + + + + Reload and Bypass Cache + + + + + Reload All Tabs + + + + + Schedule Page Reload + + + + + Show Context Menu + + + + + Undo + + + + + Redo + + + + + Cut + + + + + Copy + कॉपी करें + + + + Copy as Plain Text + + + + + Copy Address + + + + + Copy to Note + + + + + Paste + + + + + Paste and Go + + + + + Delete + हटाएँ + + + + Select All + सभी चुनें + + + + Deselect + + + + + Clear All + + + + + Check Spelling + + + + + Find… + + + + + Find Next + + + + + Find Previous + + + + + Quick Find + + + + + + Search + + + + + Create Search… + + + + + Zoom In + + + + + Zoom Out + + + + + Zoom Original + + + + + Go to Start of the Page + + + + + Go to the End of the Page + + + + + Page Up + + + + + Page Down + + + + + Page Left + + + + + Page Right + + + + + Enter Drag Scroll Mode + + + + + Enter Move Scroll Mode + + + + + Exit Scroll Mode + + + + + Print… + + + + + Print Preview + प्रिंट पूर्वावलोकन + + + + Take Screenshot + + + + + Activate Address Field + + + + + Activate Search Field + + + + + Activate Content + + + + + Go to Previously Used Tab + + + + + Go to Least Recently Used Tab + + + + + Activate Tab + + + + + Go to Tab on Left + + + + + Go to Tab on Right + + + + + Activate Window + + + + + Manage Bookmarks + + + + + Bookmark Page… + + + + + Bookmark All Open Pages + + + + + Open Bookmark + + + + + Quick Bookmark Access + + + + + Cookies + कुकीज़ + + + + Load All Plugins on the Page + + + + + Enable JavaScript + जावा स्क्रिप्ट सक्रिय करें + + + + Enable Referrer + + + + + View Source + + + + + Inspect Page + + + + + Inspect Element… + + + + + Work Offline + + + + + + Full Screen + पूर्ण स्क्रीन + + + + Show Tab Switcher + + + + + Show Toolbar + + + + + Show Menubar + + + + + Show Tabbar + + + + + Show Sidebar + + + + + Show Error Console + त्रुटि कंसोल दिखाएँ + + + + Lock Toolbars + + + + + Reset to Defaults… + + + + + Reset Toolbars to Defaults… + + + + + Show Panel + पैनल दिखाएँ + + + + Show Specified Panel in Sidebar + + + + + Open Panel as Tab + + + + + Open Curent Sidebar Panel as Tab + + + + + Content Blocking… + + + + + View History + + + + + Clear History… + + + + + Addons + पूरक साधन + + + + + + Notes + नोट्स + + + + Passwords + कूटशब्द + + + + Downloads + डाउनलोड + + + + Preferences… + सेटिंग्स ... + + + + Website Preferences… + + + + + Quick Preferences + + + + + Reset Options + + + + + Website Information… + + + + + Website Certificate Information… + + + + + Switch Application Language… + अनुप्रयोग भाषा बदलें ... + + + + Check for Updates… + + + + + Diagnostic Report… + + + + + About Otter… + औटर के बारे में ... + + + + About Qt… + + + + + Exit + + + + + Set %1 + + + + + Set %1 for %2 + + + + + Reset %1 + + + + + Reset %1 for %2 + + + + + Toggle %1 + + + + + Toggle %1 for %2 + + + + + Menu Bar + + + + + Bookmarks Bar + + + + + Tab Bar + + + + + Address Bar + + + + + Navigation Bar + + + + + Progress Bar + + + + + Sidebar + + + + + Status Bar + + + + + Error Console + त्रुटि कंसोल + + + + + + Bookmarks + पृष्ठ स्मृतियाँ + + + + + Transfers + + + + + + + History + वृतांत + + + + Remove Bookmark + + + + + Remove Cookie + + + + + Update + अपडेट + + + + Copy address of source page + + + + + Close Panel + पैनल बंद करें + + + + File + फाइल + + + + Edit + संपादित करें + + + + View + + + + + Tools + साधन + + + + Help + सहायता + + + + Page + पृष्ठ + + + + Print + + + + + Settings + सेटिंग्स + + + + Frame + + + + + Character Encoding + अक्षर एन्कोडिंग + + + + Closed Tabs and Windows + + + + + Dictionaries + + + + + Import and Export + + + + + Import Opera Bookmarks… + + + + + Import HTML Bookmarks… + + + + + Import OPML Feeds… + + + + + Import Opera Notes… + + + + + Import Opera Search Engines… + + + + + Import Opera Session… + + + + + Insert Note + + + + + Open with + + + + + Proxy + प्रॉक्सी + + + + Search Using + + + + + Sessions + सत्र + + + + Style + शैली + + + + Toolbars + + + + + User Agent + + + + + Validate Using + + + + + Tabs and Windows + + + + + Keep Cookie Until + + + + + Accept Cookies + + + + + Accept Third-party Cookies + + + + + Geolocation + + + + + Images + चित्र + + + + Capture Audio + + + + + Capture Video + + + + + Playback Audio + + + + + Notifications + अधिसूचनाएँ + + + + Plugins + प्लगिन + + + + Pointer Lock + + + + + Closing Windows by JavaScript + + + + + Pop-Ups + + + + + + Open All + सभी खोलें + + + + This Folder + + + + + Ask What to Do + + + + + Always Allow + + + + + Always Deny + + + + + Expires + मान्यता समाप्ति + + + + Current Session is Closed + + + + + Always + सदैव + + + + Only Existing + + + + + Only Read Existing + + + + + Ignore + अनदेखा करें + + + + Open in Background + बैकग्राउंड में खोलें + + + + Block All + सभी अवरुद्ध करें + + + + Only Cached + + + + + Enabled + सक्रिय + + + + On Demand + + + + + Disabled + निष्क्रिय + + + + Auto Detect + स्वतः पहचान + + + + Clear + हटाएँ + + + + Default Application + डिफ़ॉल्ट अनुप्रयोग + + + + Unknown + अज्ञात + + + + Default Style + + + + + Add New + नया जोड़ें + + + + Add Toolbar… + + + + + Add Bookmarks Bar… + + + + + Add Sidebar… + + + + + Custom User Agent… + + + + + (Untitled) + (शीर्षक रहित) + + + + Edit Link Bookmark… + + + + + Open Image in This Tab + + + + + Open Image in New Tab + + + + + Open Image in New Window + + + + + Open Image in New Background Window + + + + + Open Image in New Private Tab + + + + + Open Image in New Private Background Tab + + + + + Open Image in New Private Window + + + + + Open Image in New Private Background Window + + + + + Save Video… + वीडियो संचित करें ... + + + + Save Audio… + ऑडियो संचित करें ... + + + + Copy Video Link to Clipboard + वीडियो लिंक क्लिपबोर्ड में कॉपी करें + + + + Copy Audio Link to Clipboard + + + + + Pause + + + + + Unmute + + + + + Unmute Tab Media + + + + + Purge History Entry + + + + + Edit Bookmark… + + + + + Add Bookmark… + पृष्ठ स्मृति जोड़ें ... + + + + Unpin Tab + + + + + Close + बंद करें + + + + addons + + + Addons + पूरक साधन + + + + Bookmarks + पृष्ठ स्मृतियाँ + + + + Cache + कैश + + + + Advanced Configuration + विस्तृत विन्यास + + + + Cookies + कुकीज़ + + + + Feeds + समाचार + + + + History + वृतांत + + + + Links + लिंक + + + + Notes + नोट्स + + + + Page Information + पृष्ठ जानकारी + + + + Passwords + कूटशब्द + + + + Tab History + टैब वृतांत + + + + Downloads + डाउनलोड + + + + Windows and Tabs + विंडो व टैब + + + + main + + + Failed to open content blocking profile file: %1 + + + + + + + Failed to update content blocking profile: %1 + + + + + Failed to update content blocking profile: checksum mismatch + + + + + Failed to update content blocking profile, update URL is empty + + + + + Failed to update content blocking profile, update URL (%1) is invalid + + + + + Failed to find User Script file: %1 + + + + + URL to open + + + + + Uses <path> as cache directory + <path> का कैश डायरेक्टरी हेतु उपयोग + + + + Uses <path> as profile directory + <path> का प्रोफाइल डायरेक्टरी हेतु उपयोग + + + + Restores session <session> if it exists + + + + + Starts private session + + + + + Forces session chooser dialog + + + + + Sets profile and cache paths to directories inside the same directory as that of application binary + + + + + Loads URL in new tab + + + + + Loads URL in new private tab + + + + + Loads URL in new window + + + + + Loads URL in new private window + + + + + Tells application to avoid writing data to disk + + + + + Prints out diagnostic report and exits application + + + + + Failed to parse entry of proxy auto-config (PAC): %1 + + + + + Failed to install update +Updater: %1 +Script: %2 + + + + + Start Page + आरंभ पृष्ठ + + + + (Untitled) + (शीर्षक रहित) + + + + Unable to check for updates. Invalid URL: %1 + + + + + Unable to check for updates: %1 + + + + + Unable to parse version number: %1 + + + + + Downloaded update script is not valid: %1 + + + + + Unable to download update: %1 + + + + + Failed to open User Script file: %1 + + + + + Invalid match rule for User Script: %1 + + + + + Failed to locate header of User Script file + + + + + Default + डिफ़ॉल्ट + + + + + + + Request blocked by rule from profile %1: +%2 + + + + + + (Unknown) + (अज्ञात) + + + + Failed to run File Associations Manager, error code: %1 +Application ID: %2 + + + + + Failed to run File Associations Manager, error code: %1 + + + + + Failed to register application to system registry: %1, %2 + + + + + Failed to load custom rules: invalid adblock header + + + + + Failed to create a file with custom rules: %1 + + + + + migrations + + + Keyboard and Mouse Configuration Profiles + कुंजीपटल व माउस विन्यास प्रोफाइल + + + + Options + विकल्प + + + + Search Engines + + + + + Sessions + सत्र + + + + notifications + + + Feed Updated + + + + + Feed update was completed + + + + + Download Completed + + + + + File download was completed + फाइल डाउनलोड पूर्ण + + + + Update Available + अपडेट उपलब्ध + + + + Update is available to be downloaded + + + + + proxies + + + + System Configuration + सिस्टम विन्यास + + + + No Proxy + कोई प्रॉक्सी नहीं + + + + (Untitled) + (शीर्षक रहित) + + + + userAgents + + + + + Default User Agent + + + + + Mask as {name} + + + + + (Untitled) + (शीर्षक रहित) + + + + utils + + + + + Try Again + पुनः प्रयास करें + + + + You tried to access the address <a href="%1">%1</a>, which was blocked by content blocker. + + + + + The owner of <strong>%1</strong> has configured their page improperly. To protect your information from being stolen, connection to this website was aborted. + + + + + This web page at <strong>%1</strong> has been reported as a web forgery. To protect your information from being stolen, connection to this website was aborted. + + + + + You tried to access the address <a href="%1">%1</a>, which is currently unavailable. Please make sure that the web address (URL) is correctly spelled and punctuated, then try reloading the page. + + + + + Check the file name for capitalization or other typing errors. + + + + + Check to see if the file was moved, renamed or deleted. + + + + + Check the address for typing errors. + + + + + Make sure your internet connection is active and check whether other applications that rely on the same connection are working. + + + + + Check that the setup of any internet security software is correct and does not interfere with ordinary web browsing. + + + + + Try pressing the F12 key on your keyboard and disabling proxy servers, unless you know that you are required to use a proxy to connect to the internet, and then reload the page. + + + + + Address blocked + + + + + Connection is insecure + + + + + Connection refused + + + + + File not found + फाइल नहीं मिली + + + + Fraud attempt + + + + + Server not found + + + + + Unsupported address type + + + + + Network error + नेटवर्क त्रुटि + + + + Advanced + विस्तृत + + + + Error + त्रुटि + + + + Today at %1 + + + + + Yesterday at %1 + + + + + %1 at %2 + %2 पर %1 + + + + + + + All files (*) + सभी फाइलें (*) + + + + Open Files + फाइलें खोलें + + + + Open File + फाइल खोलें + + + + %1 files (*.%2) + %1 फाइलें (*.%2) + + + + Save File + फाइल संचित करें + + + + + Warning + चेतावनी + + + + This path is already used by different download, pick another one. + + + + + Target path is not writable. +Select another one. + लक्षित पथ राइट योग्य नहीं है। +कोई अन्य चुनें। + + + + + Go Back + वापस जाएँ + + + + Load Blocked Page + अवरोधित पृष्ठ लोड करें + + + + Load Insecure Page + असुरक्षित पृष्ठ लोड करें + + + \ No newline at end of file diff --git a/resources/translations/otter-browser_it.qm b/resources/translations/otter-browser_it.qm index ffa08ce41c12e1522d1fae888337500ee635ce6d..6777dea1272a7b654e8b71dbe9c0154cfde0f849 100644 GIT binary patch delta 18889 zcmd6ud0b7~|Nq}>?Y+-D6cs5HGF?LEkTEWbC{czqiw2s^j?9w6!BLVqvnXVyRFt7o zrc9Ya?lliLX$Ew{aYF+oE z0dWQ2l01g9{WC7(G}qLR@lMejM244k`-l)&zB?T18np|t_QgJhe$H2HRy~d zXm^8nf_jby7?cNe@e_c-D}d-T0K7wi4z@=|0{M{(Fy<=2EPOJbbNB>!QzS8Y$auK| z_^7Qw8!iTZF}6GP7VrrfK&q>O-@YBc{{{H;=>VG|M3RhwI(G0>B9g{U0e&Zb@$6g1 z#~nnH4fTOP!2`tN$Q!v~uSl{I8^+HxJ`VU|4Oz`plL ze4y3sfd8W{&^0fBe}(t4(QO2w?O=cpsUUP80q{yEl6s1tb<@bwK== zgJkh%AlG_=1m7J=eZaV1DUzxZKpwgZ=&8Y=d1nCP<^yJ(a)Bgv0`u=0fUI|5v2ZDX zmj>#VS^$~*3akx%{IEG~K1+0OA@$^Mdba<(J^M z_31ztErZ{-nghM2hgSWb0IjnR94co3IpqSK?>GYKAr(o-0dzUv4mJiw3ZFlg;_ zAZjNVJPaRj`zz473_y{oehn_kegGyN7(2FS?4Qf%8Ob>BEMxj;#;lW!$AR%=YsTUm zjL#d2B+a}TyZJFL3}M{kt78WTy%^6VFkUEPEFLV9{^$-aCs0239br72Et1~21+IZv zK*qKM*Cl9-E0o~6RsmFVfYG!cxF)-!--pA{^m;(v+kjhtXP{|yz%98N;DXKr+)@I7 z*5zTCCJ5-vIp8id26#AJB)!=c+#3%Cn)4LgeeipWO2H#^4Upciz+*lRDW_)CuVXYM zi6kFCh@_^|!K2_Ikl>x*aVZyI?p?+Oc8t38C+y(XMv-LJNRhPPXvXnp88^vc#6*QyritOD;zhk#nm1@E1+ zfZ9z1@4ZndOq0O-Eb7Csj*Pw|MbgW9@GhPKlmx?Qr5!+TSH>hi#?1bVdFMoux|0~) zE08*D@R9*Wd!vBl3otsUJu1{f7` zZhS^0xf~2*<{t)#YABLe)?;k2mvKZ-#=NF5Mu%Ud6P#d7syBc`1O&`Q?cV+!f*TJ4 z;@u8Ha*-Z4MAG0}F!3w~q1i)VQlE!F_wIqvkOF|xlMpulGtf34U~=bc7@ohtl&u1g zJIf$yK^g|HFCyv9jS%yG2hbgTAl7IDbEblBdMFN^X(r5QjyLM~9cHv?0rcb+m{HOQ zpr0-16xBf9U4#Y6_^P@TL42(nKzHAS_~LnJ)fSLA)e6XI@iIuZKLzx!933PlV>*<57B;<70QqAiY#)t&K6x3WTVfPU z83a3ipg;E<278Az0g|DE%ql0KFMo$zSIlm<_(8!rOO)i%P*5oc^0hr&sObQ-Lq3#r zbOI=A1|?tc6<61R@*Yt@N>;$FxV1p1mBH=aID!{-1EA778{l*%RJ}lVp&3xUr6th5 z-{IxZIhYmohaaxBfz*i=N&6=d)x;Da*Dn+E6Agegjv#e{4+CjYL@ed;_`ABqvMvUn zj(Nn|G#ubgH^z_Uq`|puKvx?`BTLL;wx@|Cx@dJBkVDRB`v zppCi^mlodv+D{%WJD?X@lgYapi_^QeD z+jxUF-^ff0%y9SrMrJpugPBe#(Op;s#Qq>zI9rd2%2E&0597AI{uu%NyCnZ@uZ}x9H3_(Qli5HvUm(B@AL{lJD$;|7vow3FWtG0{} zr;_Wp(Y?k5l8Uf*K&PB0x4j(!Zqye^J$jJ4DMdhkw7h;rb6G|n=k8t#Qc^Sh2t?lB1Hz{xZU<2{LeCz6i3LZ{k#<2!svXXM)gt+b_c#$5rj z$dArDh_=znlrHUoPr7R?jW7EKv~?y;a>Q^Qcb0M454x@01Av#i>9#~P)^%=-x~*&I z_OdoWEVt8BT6Z8fqiD{gBls@OY2Hk1IPIcHVw%QSRX{J)_W~I5oiWdW@pBBlm^25- z-N*FG01U^varDZj1wh8Xq{W__(G4SMaTY4x)>K;h{W_317h17+0nYzs|3x3}#T;;t zH+>?h^Y9s!M8&zY+5-Or!GnVu`h z{J)ikt0mx2Pq@IDRibhI`I@tg!wwxA##!zefyOe8v(9gcX}G}EPsiv6eYgfm9ysB& z=WLoU1+x2h&Q^vofylYWlDK3vP@ID)hKajmZ4gd=k&*DiK1z@&1r&C}BwT0hD4?t2x$YkEK=^)~QyRWYyM|n!Z`h%GOS!=gWvE~l+^}TSi$1}e z`)4`8GkHo~Ntc*#voq0XVlQ)ZsT^pxEG}-0KhQrqbMsU19hyz& zmfrTjuo=K5?PvuwrHD%^J`J?x5iaR&2!`#t+?qA%K&}kr(h9l)eVoH>uATz)NeQ<- z18=;`gWFw*pYN4$d;G$Ie)+=b_6vj%+Y7KYfq(8b{ z7?(X8r(k=|a>pkx0$Ah2ok(Z_;NOEg4fx~(wu_|xRovN{=P0==xts<|(LH-{Ia!!) zA1mX|b!q{0k{_2xF*!Y6hr77R9-vl~j=LO}1$1s5?#eDq9=B$2C6+Gu1bexX@+`E8 z)?CSR>_F}HTHhcbk_kz0yIhGnoLjbTN!3F{?>DAbAhuh*qSICRy=887VlEdBcastN@U` zX8hPjB91vdjdcGnFdJl za(;$i9FWsj`56bs0aQ5fGmf|eX!1nTm?|SN{$G#dXSPHmT$3Y`x^?7dtI$|#T=+R5 zO@Ykf`T5Q$7>_RU^KWrjz1k|0#Q2D$-NG10oMMcf&o7Lf4)pCje)%XhkY~1hV(@;T z{ZjbEO;6BvTJuTk@zn%Nc|(yd4M>ya{JMcBQ31D$B$fe;O}p@^EouP_JIkkf=K?9; z!EXvj;pnl4-_i|-a-}D~^?nl|U8jkpqlYsti{-cB%$aIlFxGYD(>r18DF1-eqdvs( zyN6u{Gl5;Kp#}{M>?a_k5=%yBbV?U-QUA!YxV=jrSL~z z#A4jGn$; zQwm?`-3SwlKl#EL$gn^8i&YqgH$M|e`sRqF<7e}iOrwAfh|}?x^3lDz?dLDw?GI$S zIbS^29>~Y7eCdY~SPLSIdrbK269)nrK9RpZHy)rvG^5i>#@o(}?@ov$N8|XLZ_w(u ztmkjO`-C?1O(gAKkI~PBzkMbEXq3)@zuPhz$fQ*M{s;7e=;Qn&8?^GJ6ZuD@X5q}I zKmX_@3e#UZ`N!iA0rgB{oVtjw_RRrO8qL3GgNejbFaFgVw24(~_>T)816}xt|Lc-3 z&L6Ju-#r&%p|L_FUF*XC81Ws5XP`jd_r{oF`j^1XJ_mH|T|u!2=VV@g3W{eq0tOJ2 z15j$aePG<}#`xVvBxxNjsEg2e&*TfHzjwfig`;444o7HCE0HvChhWx!29PP`f|W}Q zkXuUxTZd$<5ib{Phi*fqbrS4)7h?QZKNSzimL$f!2O{aMe8H}7AyCJGg5AUs0G^)( z`&7&gf3z3cUGe~8wnK2JHLN(935H`v2siLLYlSAUo#@{hHyByqO>jQZxec{hcr< z_9bxI&4Q~p>O-eu#(vKjci4y|CK|?ma>jTw#!syU*UzY|X^z6M9z2ju!-V1GPCyD( zg2!NtexJRB@eOp>u$;C>@M}E>=%9{*Uk4|k1xtj$mne~OuY?IM?NP~8Lg<1;KzcS6 zB3$wT=G9|N7%ogHas~)Z6e3^T2a>f#i1EZUKJ26r+ad{LLy<5&q6lc9uP}cuPU+Tm z5aN5Ipq)AZ3OjlS06K1KPbp*gh)>bH-=F_KmXu7R_KxYN!)-FFS`5h6s_=x|Xn~BgJ== zDr6MB2k7}qII#N^rdoEwflT!K&X$b5S28ZjW84wM_&~{6vq&UadxG&4h@|%JjDxC# z%-}qr?{$H~kIAQ#}J5b0y7KHA&SR{>3 z74nVs`%*t4e=qv^AYLd4T!ae|2ZaLT0>+HGB1uA=NP2aEa6TyuXG-b9g>Kj`zk^X1 z(2O0RTZk7@1d-G}Rk*PA9meTEku=FqD4Dnz$mHLJl9``@2IL4Oo3Oz?jf86x(VADx z6s{Gt08)@3+!#0xKX(!;ItW--xGCJ0e!>{hQh2rje^>Xj@P2Ut5bGG>>zG*3(KD@t z?{n}8iz+4DMhBq$YYA7j3P^Y#iGcMRdg+Tq+A0~9aK1z_{5c9tzQnx2aUju`MAD(@ zlDfAr6MBD2(%_mO(7R0}HYZU*r%aMG&g~0eafq=;I%EHtBI)!sMxy`UP)nL;bi$xh zE@?Zf01FV!B<+{Y#<;DMbjZcz(r2DX8qikKIeQh*!oMVrrB{(MNsr}e0Fq!y&)wMZ z4a+4xkK$t024~3t1%6J`O9q(q!FfQ9WI$a!pXMqVkhBG0^izq8)q51KV95}z4xiLF zP2yIGPxyMj#N8GBa#b6NC(hSlGLeid^#ZbDwq*1Q^pZStiI2S<(1^_vAGdN$T!u+} z|3d#BwLs#xyfM}d`%3%^2V%N@SrX)juWrOUk#xd*NyzJYIFGm|2`%~v^uTAyObG{Y z)lxE3hX=&DN<2Y6y%9;@?LrR163ao!tU;J`&JLE$#?*{vY9$L6V-o4ONwUxy=lNF# zNfrqTfW5Cp63CD&Sr-MQPglv39CXXqk0ncPeFK=;MI?DKOA=oXQ?dTvBndHv*ukX| z-CC2EsLd}V1{^B#_^L>%TOrxF?hugVcZ}OFiKHFoNj87S;MCx?Bwc~R^`fC<{$rQ&DmJ5I8%uLD30=p+YDC*qpUB}wLB zw9->IB$+p60Q_-Oa`@^*Oc3lP*#Y4IO;$*sY-I{Nd&+Nf63{)_9#4;Bxn2L zeBrlFBI#C3$ypy2Rz~e4XZ`W~xC0`o-#m$!xHylI6#5+m+9XwS>0>+Na-XB5bli8~ zBuSFej0%8|a!ExPj>PNslDibkYj1~%q{|JG`<8Ek2u_mwiK!@|{UrBSl&SQq6pSfU)-Wm8ybMS`50P~I52^G=V<2tqMN+posr=O|OhEpSsy>~@ zBGYN9I@BGAqK{Nl_d3vZ-KF*3m7x3DNUg@94XxiOwH}Uh#yO?Z`uc$YpUtFAs)wWh z%Rfr(c4NW7wYIeBsfoA@w?o=yD-L<%wbJ&|{kUR%Oxn!?Cnm~pX}3xa=%F{#K4%gE zGOtSeuZje^|A}fZ|8>F@+;$kPr$jvtmz4D!ST z12vu$+@Com06R;PM>lydEgUb+$?u>^1-?a*!^%Jp?PA zC#3PN*iNlDX+kkBbPuT~lK5Of>I^{b1!>}fzF7BDOOuA<+S;^yoygV&EYj+E1`#@=KgB+j@&PhwU zdjmPPUs}2s-FCnL>D3&}9Ur%r>dKqV$10bHR16Z~{iOGo3;{CqrSxIv?Lg`tmOk!Y zg~qf)TGa@JO7~Lw!mS9G->LLvo(0YYgBZ{3k-o280c2)|Nb2*4^i%x`tfEP!H7N^G zAJ#~}+{6-ZnjK?$E$O#XRKVdGI_dX!n3*I*$Y_`LSZv-XGmy93dWsXUOSdPz; z^^mW@rIa7CK1*Ey!jCa-wv;*dKqYMZOg8AK7D#6&*$}J80LuboL!xjZ6D!DuWPU(n z-O6}8M8>A&&tzVP+88U2%Y2udLmP5#E%X1e1ZZceEWi>4r&p#d;`3XKQf9I#)hHC! zS+Zz7He8k~lDa*T#r8q}&JB^xu)>*5+(y~V`&pR47-Vq`4`UI#zHG7SJ1oO*k}cg@ z4`{E$viSBE0BUE(+Cvz73nFzebO1Xss)}#Zr^14x}#St=_boqB75~u(mxvC@N{*!9qI0F}T1!k=qT9+UCVSw#{-W$|H7Z@r zB-xYu_kg@wA$xgrEtcC8WUu?9k#A7T-q@i#mTr>0zmFX){vdm=dx9r6j+NDnHpSr6 zO-^161`@MNB<chhxNsqro3?raBxSa|-Z)IlE6*@KN|ZOSI|pP-N4f4dQ#782ALVTedE9ie zP2Rq3Hx@zA&p+kk=C{X1=mqj|OUp2O-6bF2Q;M&^MLz!W2q5`IB5Au* zj4!3~@t+6blysOp$M%gZV(>LHXt@!*K@HU%u_hJOID;@*TQN;B<7XeCHEOASaXL z2U~ez^(1-fn6!4Vq+N3-IAXl zb{NRfyYj+I3S2>HiNxQpohmQdgkF#rEHA!41T!g9d8zXuTz(rMFMr$u=l?-H{L$BngcbJ-VZ^ z7P%_=-q)do9?DY;uxtTjeN)Adskg8&_@`o+({ZfPd{(&k>5S=jpxY%p1k%XmqpRW-CT-7ckXotQfbd3|GZ#EBrC0koNux|3~)#np-IXf*<4O zgNlISJX`|?MS!m4GLQ?M6@kOC5b=GkB5{!1=`SB84v6 z$pfJ62}Shpn6Y5VLF5&G#jK$XfY|biSph9@L;@7L5<; z6$@)N0(_mNSaPQ&+RQq|(kVD%yUG;Hn)Jgo+)I&QgSInHsYt^~DQR?Gv1y$@u6#%o zJ5x~7tuE*kJJ;jByeUf+yQXf#1;I+ip2qP29vc*Uuc80v_f_n7LjSj_V4NK#l4kZ} zy!jQ0!qje#V*iyu+(*zvk>P&`IL<|J_;xkUBYG>2EXxP-AYCLCDilXv2jK?CEsE>_ z1G=^Dx*~gbA&`B}ilapraQW?n;^-CB{PuMjdyHfpJeV;qlyUoT#!H2aKbDFl*?mRQ zZuJ$%lvuzRKS*&hAsU5hF5|u4B56f0#c3PV6WzQ?iqm^1VPzvzQIPr(NZBaHic&?< z+$b!qzE@mafs$KVM{$Lup^_a?lo&T6UHMCKbt@*Thiw#PZBe5CoT0dm>;9k^rnvWP zD=y&_Dju3*P#WJ*@z^W~$mVp#lkRxEI8pJmC<3VLg`(PG4X*#Y$0({V#9>OcN%5jT zTKVT%ia)g&R_z@WZ--c5qH$I6HKQeFuQL?i1`>cS#}q$&vM_#sRDudS*z<*w?pEN= zhcu;p9a=SQp_Jd~igo`5O8KX*xc+yJvHx$3yEZarO*Rtq|5G09ME*j?TMrmt1~9&P zBa*Z#WSketxPA}g?o*8UZ5YotW4zN{Bo+EFM%-ttAdH`SAaz}FIjz1@u?CHWG*+q- zlYy##(&W6-bkTMo+$&|BV%&1;^o((Dibw)pO3UTjaOi6*>-E8utNfivI$WcymsJnz zfnAkWaxW}EtW!2mHjc0tW9A~pM?ICzb$EeP#fT?pm!?YlsH*^P^ObE)F<9JpQ95{I zEO@m;>9G6=zH_y*eHQ|pJWbj86KZ%~wz78(O7_ZcN@tIOK)%E&2PA~!^}9+}8D_h$ zLX@t7a{yX8D2EEQFjI? z|6Fvxm8Ohke<*{RqfU^`$|+gcz|$0EY}G2<*Sk$Q$FB*xVWDz<3Xa6%Xpv-tzjFQt zAAm@Sa)Ab?<+HTP1r0GK1in@#yqf{UWvWiOocn-j^cv;zIMiz0aplT+W|)`XQ?80Y z0kR2KuCBt_tvZF#Y>LvbxhL*w?WJ62fg>egi(+)^YRP^LWCvI^IJnlgrbW?T@*csrZ%O`$T&9}5|M%#>ME;*n>SS#ysg z!}zC(7|1Z*QbLma zT^;3_-5qd2vY+y7Ne9f3W+=}-#OoLDDbKxd25M%h%uhzmpLs!f-WJ{X%o*hc*F2oy z3=~OgDwP+`*9KxTTv@c|9>)J#t;GXq+=wya5aT*u#*EjDr)o34uoFqFTQLr_WsHB$ zn9`jwJ(MxCK4b0##)mgVQkB>N%>Ub&DK9!L1TyuBNb2pTyi$cj6-cP{HRx9MZokV?4OsOaNH-Ia zbj(i11V@#NBW75&4yjz;-a~1ht{U!{2%!8!r4tYA-?I~)eHq=>F#4}!OiE`g?j@2e z@4$Gvvq(zrGn!a2Hu#OPv;}fM(ArlShrCt|$8FjqbG&M#YbGx9dFsRiy5WY(y9I|! ztu0ieljdXDO{p3?7=>iy6xG;bOga^pRO2?Il`lK5^8NE6K5>D{&lRU?C;U}@#;KZl zCskl)d_sP-Dp0HqZ&FQ+*W)UA6V>FDaulR$RkUF{<^@Vs3_Xo2rOO#V=x&M!q|Zsl zCCgN?lJ7um{ZzBGkwCXCQO$9|G+OVcTKKI7Q?pFfsxGK>P5y9uUP`DKjn?N$4Yg+{%LD&qx)*SiMQ@wN?seqEzFL81VrpBG8b4^^FP zRDnyda@E;!jex#LQsvhE4B&iNm9M*n>i`Q>=ao%>)ZecvjL!$^@1iQid4UcBCa8*@ zHO7KNysB7z5O+KTs7kB^EGErUmGo)`w0exHyZ|?kC0tQmYl3ODw}Yx8VFB**Ii$LK z21m+eqv~!h2PAN&NZS9l>TdN6AfwkJGjWM^y{fX_J1k@#6-hT6R1ZRodBg-GG5+t7 zuoDlyizH8ML{f*iH#(c+mV3}H>c#Ip1Z>kkaN9=ihwaOpeazUwD6E+c`V?JZgwIa!J zwc4T~Zn0{8PhD4y!R@ezx_&_xKtZh9HU-o8@T+PEZxpJXjno}lbWMbi0q)G>fMaL`>HV~(u8sg9Yw4L>L7)YFYyBVLB6XYIh~XA+}cP<r-9#^>3L--e4Mmu@kZsYKESGevT$B=ssCO6-Y4YJJD1nD6&er~Hof zgPZ{MmJNkixGYtt-^B-u*7=JEbZBq&&g%ELJMDpb?{a4ppjYa>$5!G7gb|E;d#U#| z!l68WUA=!1y3q|6b=Gav_I02hL11S_{d1ADw*-ks^MR_1R*l3myQjK%+9-gWHtKtZEBJQ@ zg8JS@eD~K?>PlG|km^wN!xp7jR641CaSm-~?i=-=i%{vBSF2wxMWfzyO8sgL7Am_~ zsb4QdW$ap|ew)Q({(t0~`rS$kETz^{zsJ8?p$qP)Kd5opU7=C`H6Eq&Ku2{=$JJO1 zTBol0mXF1yTk3BQ<^XAyqT!EZ0l8dXquz%K_hXVq6NcHY>LjDd1dS%|3Xp>ajmg(R zxGFwOW40K#X0CX~_~W&vQJu#a|9{KS*p;E?_Zp&U`pgcuR?XG4a76(MZK<)J(g$gAc z_pLxQ&Kmc+KDeV|72}o)jk`6DSeHvk9Ug@2Vkchp7fI`QF*fYR7~hZa#sjGX7n_1I?6B3`z^fX(9`7!Q!f?W=7x)Oyw*zGfSIb zqBBx6=Ri3s;}6Zk78taKyK9!|5(Wb8G*pw|bsLvZy*10dj^k2_n`Ze39FgI7G)W6h zao4&+v${-#l3mQTec7kAB$+nyLL z1S^c7bp1!X+G9BylJ6mY7_u`0{yJ$|G z$La9_xh8*20}R6_MUp+6H5W^^;07XIQ!MF;)8~eolIVIsvcG6b+iu1MM{mtlM-;T@ z=QQO}JV2WVBFTZdn(`&s;i#vY@~T@v_7-X?s<0?s>!MC`yFc2%3_s1|IK1JZL7Lb5 zuj3}MKAJaD43GB%G#}P!fDY-XsoC`dplJh<xSulNaLe z)3k~sILocWG3KU-B;B(Zr(Y9E*P1il)NxvkDGEc#2gX~|wA%eE0Rr}FO&l=(pI)mq z8Hh$XyFhC)@gXia_RyL{4#CPug4T3=A}%KRF`iqktyPHIcdnfjNrzWztzTK-_8bds zgHU{+!dKd+htPJC-fNp}js@B%P1`cq3nx4mQnYQIFszPG)V8BjaLD?LBpFp&hY6^N z%Q>yXqpA1@3NG5dbRU5GTCGd#t61-M(Yl^Jfs(vR>t>Cyz;%O28njUB_7I1-%1k7^ z)mA$^3~l86P_6qrjQhQYXg!N?L@h$JBU86y{10uf9o+)cV_Bwld`=*S*Lm9UpPX^; zcV}&I!y3$DbF?AG>iB8UhGckP0@6nt-W8SaK!kSk610AoD~zjNGa7!^MzzPh;cAvP zYBsu~L93lP;0bOzt)FdoAziI zkHAuF?GxI?6EJ53TWvxKCLH6=YL^>#Mm5oDlg^`&R`z6kWUgIX+!2N9rbt3#wJB>K zVF`DWNIG)7c56ROy-H=;^!np)qvCz-0pq^lsa>>LuDJh)F6yg2zUn)`J1_0o^C&2j zuW567;|)$W)8?#915UbJTTrndtKV|%`MNhSHFMXV@6r&bVqdj|tb0T3v|dw>N0Yt`QudlX<39bxlNFCA^dBWz-QLqh^=0`0@2 zBSQkCY=RD$5X(F^Vj~XRtJEvm+*kz#p`pzFUrYF!mw_duV*7 z5SW4geDO&Fu!lC{IUDTh1bhmAn1oLk17W}V+4`S;#s)@)1WmV@%!c14GA0ze7ZVi{ z9&F=3A<%zPR7{wD*l{cUnw(nP5*VoW4Ki0g!y825jd76lb5EKJ(Z*XEHXDew1zwqq zH?KhkAdMXi2VaBjY+~+Y9CzPeeQ5LZjoVE1jj{>#jf%F3nH=C7jiVP95gBL`J;68J zCL%o0W@=#IBpcu0h+n-J#Cl=%_lq<3CJg&xyxYI@swwvB*Uc>d^=9FL_|Sjf?eAvw zbB?#GZ~fDT{@pZPeZzf&10(fi$6Gi4AHN|QTTA`jeJ%C!{VmLXTK3PMGfOnsaGaI? z$HQ7i(>7R0I1~JrsCzw35$?XNbJF2*6&zsa=J{CmIjwx=5ZFAqN9REz)R8xKy~|1aNYf2QgG z{0&2C7_Cig^l2}x)c^KWhCz==*Z+rs@2)RCV<`=UV52)2;?k(KVW=~ex6_Ug?aF2# z%1tEtq0#OB$JdzEJGZPBan#R!WTiLHsikilC+j52&#%F(^Un(jh?p848sUptgqmY) zTKUt4j2dJ(Wy&=al?;Q|e+rM$aVLw;$~@(#C>eYeXbE#9oT5v!e{S=yauO2G)I^lP z=;@OK|MRwb?X}IMo_@1?ZOfmH{_44`cR+xRv1|H>8+Q5w*Y@Ic+Z8)u>_U*f^uBrB ze}7WBb3jP+KR+0Ay|=zocyoQ!4O{(&>)rIrBkYXF2AhYZan_gXcEsQuOls+0-ECkv z=|@cTBW`N-?<42^q^V(yJL!lYDh)%M6Enj*18tx;zZI=C0}oNj&}9w2qiAiJtaoUr zO>?_;dbgW)hKnxbH~rX~b@i8S4c3QU7=R7fWYwuyNeq*nC~wU?-xs~#4%+?mpaUXM zhV`#*H_O_2dk)c$cd^q4-Lc7PdKabWcNmCL;g8xLf;t`|YN(BV<)5{G|2s1LH)VDF zb%XluF@910ks*GlRd}ljA*kv&u1q@}^}}v9F?@GId&bTh)N0Z}|NVAd-4N(2hLvEv zY31MQDC$-OcEYHme|KvJe#01;j6ui-rr_`dit1(*_rE)7|En{$UJ)@izM+wUz5&y1 zqWaWpA{RdV0^B4YS(Ze%{XG_D;Dxxvi93>LNXEmqbFtCYw zq|ZEL(WvLIo3!f}VKW`?Gu1ad+W5@AXiCN#7&4@sr8Ta2<37rt#{au-ct9vd^`F{j z$g$z<8vd7yqFQ+}QP*D`Vqy4}O-=O?r)`~E{8H_Z=n3pu@Sc%@QBl91HE>!;RCJX1 zbpNG!z1!H9b^hD6H^UvXMm`(AUs#3^mtxo!Q{; zgw0@ji&z=XET9U~Lcd~W6LX`Bh#j^3m#5W_pJT3nI@80D*p?_v{(1V5ApyaG(fTD3 zE$jX3*Z;mNyPRFwi6n2-pFi>6Q$~k>)brm`Mzf!N7#Q~gtc(QS}x;^z?+^Y$Sa+nwqBe7MZp8s^A zf6U&d=`Z^mBI$xve?A7mSY9qlDT%egD#}#{S-GC~7 hnfcf{TvJ1a1t(Wo8vF7yxiqBK;q0>8*5RD2{trH~!khpA delta 15329 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%0AKD&%=Y8l>2;Hs|G^t7 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

v>9_381WU?oJ3;&KVA?|P@i~} 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 diff --git a/resources/translations/otter-browser_it.ts b/resources/translations/otter-browser_it.ts index b7be3b52e4..4e8d3fade7 100644 --- a/resources/translations/otter-browser_it.ts +++ b/resources/translations/otter-browser_it.ts @@ -190,7 +190,7 @@ (Unknown) - + (Sconosciuto) @@ -532,12 +532,12 @@ Sei sicuro di voler ripristinare questa sessione comunque? Failed to parse feed file: %1 - + Impossibile analizzare il file di feed: %1 Failed to parse feed: no valid entries found - + Impossibile analizzare il feed: non sono state trovate voci valide @@ -1788,17 +1788,17 @@ Vuoi salvarli? Failed to verify profile rules using checksum - + Impossibile verificare le regole del profilo utilizzando il checksum Profile was never updated - + Il profilo non è mai stato aggiornato Profile was last updated more than one week ago - + Il profilo è stato aggiornato l'ultima volta più di una settimana fa @@ -1806,62 +1806,62 @@ Vuoi salvarli? Custom Rules - + Regole personalizzate Failed to remove content blocking profile file: %1 - + Impossibile rimuovere il file profilo del blocco del contenuti: 1% Unknown - + Sconosciuto Title - + Titolo Update Interval - + Intervallo degli Aggiornamenti Last Update - + Ultimo aggiornamento Advertisements - + Pubblicità Annoyance - + Fastidio Privacy - + Privacy Social - + Social Regional - + Regionale Other - + Altro @@ -2175,12 +2175,12 @@ Vuoi salvarli? Failed to parse feed: invalid feed type - + Impossibile analizzare il feed: tipo di feed non valido Failed to download feed - + Impossibile scaricare il feed @@ -2188,17 +2188,17 @@ Vuoi salvarli? Edit Feed - + Modificare il feed Folder: - + Cartella: New… - + Nuovo... @@ -2233,7 +2233,7 @@ Vuoi salvarli? Add Feed - + Aggiungi feed @@ -2251,12 +2251,12 @@ Vuoi salvarli? Folder Name - + Nome della cartella Select name of new folder: - + Seleziona nome della nuova cartella: @@ -2303,17 +2303,17 @@ Vuoi salvarli? Question - + Domanda You already subscribed this feed. - + Ce già una sottoscrizione questo feed. Do you want to continue? - + Vuoi continuare? @@ -2350,7 +2350,7 @@ Vuoi salvarli? Add New - + Aggiungi Nuova @@ -2370,12 +2370,12 @@ Vuoi salvarli? Go to %1 - + Vai a %1 All (%1) - + Tutto (%1) @@ -2386,7 +2386,7 @@ Vuoi salvarli? Subscribe to this feed using: - + Iscriviti a questo feed utilizzando: @@ -2529,22 +2529,22 @@ Vuoi salvarli? Error - + Errore Profile with this address already exists. - + Il profilo con questo indirizzo esiste già. Question - + Domanda Do you want to add this content blocking profile? - + Vuoi aggiungere questo profilo al blocco dei contenuti? @@ -3304,12 +3304,12 @@ Si desidera migrarla? Move Up - + Sposta verso l'alto Move Down - + Sposta verso giù @@ -3660,17 +3660,17 @@ Vuoi continuare comunque? OPML Feeds - + OPML Feed Imports feeds from OPML file - + Importa i feed dal file OPML OPML files (*.opml) - + OPML files (*.opml) @@ -3678,17 +3678,17 @@ Vuoi continuare comunque? Import into folder: - + Importare nella cartella: New… - + Nuovo... Allow to duplicate already existing feeds - + Consentire di duplicare i feed già esistenti @@ -5773,12 +5773,12 @@ Vuoi continuare comunque? Failed to parse feed file: %1 - + Impossibile analizzare il file di feed: %1 Failed to parse feed: no valid entries found - + Impossibile analizzare il feed: non sono state trovate voci valide @@ -7084,12 +7084,12 @@ Vuoi sovrascriverlo? %1 (download completed) - + %1 (download completato) %1 (%2% downloaded) - + %1 (%2% scaricato) @@ -7110,7 +7110,7 @@ Vuoi sovrascriverlo? Stop - + Stop @@ -7119,7 +7119,12 @@ Target: %2 Size: %3 Downloaded: %4 Progress: %5</div> - + Sorgente: %1 +Obbiettivo: %2 +Peso: %3 +Scaricato: %4 +Avanzamento: %51 + @@ -9143,7 +9148,7 @@ Clicca su installa per riavviare il browser e installare l'aggiornamento op Take Screenshot - + Fai uno screenshot @@ -9531,7 +9536,7 @@ Clicca su installa per riavviare il browser e installare l'aggiornamento op Update - + Aggiorna @@ -9621,7 +9626,7 @@ Clicca su installa per riavviare il browser e installare l'aggiornamento op Import OPML Feeds… - + Importa OPML Feed… @@ -10318,7 +10323,7 @@ ID Applicazione: %2 Feed update was completed - + L'aggiornamento del feed è stato completato diff --git a/resources/translations/otter-browser_tr.qm b/resources/translations/otter-browser_tr.qm index 7f39a2e0552c7ca73b3e9adcefd1971af3392ef8..198848e6d4cdbb5ddc2381375b75f8d0da675388 100644 GIT binary patch literal 55428 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 delta 3770 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 JPCa35^FIX)NjU%j diff --git a/resources/translations/otter-browser_tr.ts b/resources/translations/otter-browser_tr.ts index 0487c78929..2cbb7e546b 100644 --- a/resources/translations/otter-browser_tr.ts +++ b/resources/translations/otter-browser_tr.ts @@ -9,7 +9,7 @@ Name: - İsim: + Ad: @@ -19,7 +19,7 @@ Expiration date: - + Zaman aşımı: @@ -29,7 +29,7 @@ Accessible using JavaScript: - + JavaScript kullanılarak erişilebilir: @@ -39,32 +39,32 @@ Website %1 requested to add new cookie. - + %1 web sitesi yeni çerez eklemek istedi. Website %1 requested to update existing cookie. - + %1 web sitesi mevcut çerezin güncellenmesini istedi. Website %1 requested to remove existing cookie. - + %1 web sitesi mevcut çerezin kaldırılmasını istedi. This session only - + Sadece bu oturum Secure connections only - + Sadece korumalı bağlantılar Any type of connection - + Her türlü bağlantı @@ -102,7 +102,7 @@ To add language, please choose one from list or type its code. - + Dil eklemek için, lütfen listeden bir tane seçin veya kodunu yazın. @@ -128,7 +128,7 @@ Name - İsim + Ad @@ -139,7 +139,7 @@ Unknown [%1] - + Bilinmeyen [%1] @@ -161,7 +161,7 @@ Unknown - + Bilinmeyen @@ -169,7 +169,7 @@ Creating instance of deprecated action: %1 - + Kaldırılmış eylem örneği oluşturma :%1 @@ -177,12 +177,12 @@ Select Action - + Eylem Seç Search… - + Ara... @@ -190,7 +190,7 @@ (Unknown) - + (Bilinmeyen) @@ -198,91 +198,94 @@ Search… - + Ara... User Scripts - + Kullanıcı Betikleri Select Files - + Dosya Seç User Script files (*.js) - + Kullanıcı Betik dosyaları (*.js) Question - + Soru User Script with this name already exists: %1 - + Bu adla Kullanıcı Betiği zaten var: +%1 Do you want to replace it? - + Değiştirmek ister misiniz? Apply to all - + Tümüne uygula Error - + Hata Failed to import following User Script file(s): %1 - + Aşağıdaki Kullanıcı Betik dosyası içe aktarılamadı: +%1Aşağıdaki Kullanıcı Betik dosyaları içe aktarılamadı: +%1 You are about to irreversibly remove %n addon(s). - + %n eklentisini geri dönüşümsüz biçimde kaldırmak üzeresiniz.%n eklentilerini geri dönüşümsüz biçimde kaldırmak üzeresiniz. Do you want to continue? - + Devam etmek istiyor musunuz? Add Addon… - + Eklenti Ekle... Open Addon File - + Eklenti Dosyası Aç Reload Addon - + Eklentiyi Tekrar yükle Remove Addon… - + Eklentiyi Kaldır... Addons - + Eklentiler @@ -290,32 +293,32 @@ Search with %1 - + %1 ile ara Bookmarks - + Yer imleri Local files - + Yerel Dosyalar History - + Geçmiş Typed history - + Yazılan geçmiş Special pages - + Özel sayfalar @@ -324,12 +327,12 @@ Enter address or search… - + Bir adres girin yada arayın... Remove this Icon - + Bu Simgeyi kaldır @@ -339,42 +342,42 @@ Add to Bookmarks - + Yer imlerine Ekle Add to Start Page - + Başlangıç Sayfasına Ekle Show website information - + Website bilgilerini göster Show feed list - + Besleme listesini göster Remove bookmark - + Yer imini sil Add bookmark - + Yer imi ekle Load all plugins on the page - + Sayfadaki tüm eklentileri yükle Log in - + Oturum aç @@ -390,19 +393,21 @@ Profile directory (%1) is not writable, application will be running in read-only mode. - + Profil dizini (%1) yazılabilir değil, uygulama salt okunur kipte çalışıyor olacak. Your profile directory (%1) ran out of free disk space. This may lead to malfunctions or even data loss. - + Profil dizininizde (%1) boş disk alanı kalmadı. +Bu, arızalara ve hatta veri kaybına neden olabilir. Your profile directory (%1) is running low on free disk space (%2 remaining). This may lead to malfunctions or even data loss. - + Profil dizininizde (%1) boş disk alanı azalıyor (%2 kaldı). +Bu, arızalara ve hatta veri kaybına neden olabilir. @@ -421,23 +426,24 @@ This may lead to malfunctions or even data loss. Continue in Read-only Mode - + Salt Okunur Kipte Devam Et Ignore - + Yoksay Quit - + Kapat SSL support is not available or incomplete. Some websites may work incorrectly or do not work at all. - + SSL desteği mevcut değil veya eksik. +Bazı web siteleri hatalı çalışabilir veya hiç çalışmayabilir. @@ -452,12 +458,12 @@ Some websites may work incorrectly or do not work at all. SSL library not available. - + SSL kütüphanesi mevcut değil. SSL library version: %1. - + SSL kütüphane sürümü: %1. @@ -501,19 +507,19 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Default Application - + Öntanımlı Uygulama Other… - + Diğer... Select Application - + Uygulama Seç @@ -564,7 +570,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Remember password - + Parolayı hatırla @@ -592,7 +598,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? New… - + Yeni... @@ -602,7 +608,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Last visit: - + Son ziyaret: @@ -657,27 +663,27 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Title: %1 - + Başlık: %1 Address: %1 - + Adres: %1 Description: %1 - + Açıklama: %1 Created: %1 - + Oluşturulma: %1 Visited: %1 - + Ziyaret Edilme: %1 @@ -685,12 +691,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Folder Name - Klasör İsmi + Klasör Adı Select name of new folder: - Yeni klasör ismi: + Yeni klasör adı: @@ -698,7 +704,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Search… - + Ara... @@ -729,7 +735,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Properties… - + Özellikler... @@ -741,14 +747,14 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Add Folder… - + Dizin Ekle... Add Bookmark… - + Yer İmi Ekle... @@ -760,42 +766,42 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Title - + Başlık Address - + Adres Description - + Açıklama Keyword - + Anahtar Sözcük Added - + Eklendi Modified - + Değiştirildi Visited - + Ziyaret Edildi Visits - + Ziyaretler @@ -815,7 +821,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Bookmarks - + Yer İmleri @@ -833,7 +839,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? New… - + Yeni... @@ -853,7 +859,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Subfolder name: - Alt klasör ismi: + Alt klasör adı: @@ -861,7 +867,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Notes - + Notlar @@ -876,27 +882,27 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? (Untitled) - + (Başlıksız) Failed to open notes file: %1 - + Not dosyası açılamadı: %1 Failed to open bookmarks file: %1 - + Yer imleri dosyası açılamadı: %1 Failed to load notes file: %1 - + Not dosyası yüklenemedi: %1 Failed to load bookmarks file: %1 - + Yer imleri dosyası yüklenemedi: %1 @@ -906,12 +912,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Failed to load notes file. - + Not dosyası yüklenemedi. Failed to load bookmarks file. - + Yer imleri dosyası yüklenemedi. @@ -919,7 +925,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Search… - + Ara... @@ -1022,27 +1028,27 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Certificate chain: - + Sertifika dizisi: Certificate fields: - + Sertifika alanları: Field value: - + Alan değeri: Export… - + Dışa aktar... Invalid Certificate - + Geçersiz sertifika @@ -1053,12 +1059,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Unknown - + Bilinmeyen Select File - + Dosya Seç @@ -1073,12 +1079,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Text files (*.txt) - + Metin dosyaları (*.txt) Error - + Hata @@ -1113,12 +1119,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Subject Alternative Name - + Alternatif Konu Adı Issuer Alternative Name - + Alternatif Yayımcı Adı @@ -1133,7 +1139,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Name Constraints - + Ad Kısıtlamaları @@ -1181,12 +1187,12 @@ Exponent: %2 Critical - + Ciddi Not Critical - + Ciddi değil @@ -1196,22 +1202,22 @@ Exponent: %2 Value: - + Değer: Version - + Sürüm Serial Number - + Seri Numarası Certificate Signature Algorithm - + Sertifika İmza Algoritması @@ -1221,12 +1227,12 @@ Exponent: %2 Validity - + Geçerlilik Not Before - + Öncesinde değil @@ -1246,7 +1252,7 @@ Exponent: %2 Algorithm - + Algoritma @@ -1256,22 +1262,22 @@ Exponent: %2 Extensions - + Eklentiler Fingerprint - + Parmakizi SHA-1 Fingerprint - + SHA-1 Parmakizi SHA-256 Fingerprint - + SHA-256 Parmakizi @@ -1349,22 +1355,22 @@ Exponent: %2 Invalid - + Geçersiz Select Color… - + Renk Seç... Copy Color - + Renk Kopyala Clear - + Temizle @@ -1372,38 +1378,38 @@ Exponent: %2 Search… - + Ara... Option Name: - + Seçenek Adı: Current Value: - + Mevcut Değer: Default Value: - + Öntanımlı Değer: Save All - + Tümünü Kaydet Restore Defaults - + Varsayılana Sıfırla Name - İsim + Ad @@ -1421,7 +1427,7 @@ Exponent: %2 Question - + Soru @@ -1437,22 +1443,22 @@ Do you want to save them? Copy Option Name - + Seçenek Adını Kopyala Copy Option Value - + Seçenek Değerini Kopyala Save Value - + Değeri Kaydet Restore Default Value - + Öntanımlı Değere Sıfırla @@ -1467,7 +1473,7 @@ Do you want to save them? Advanced Configuration - + Gelişmiş Yapılandırma @@ -1475,7 +1481,7 @@ Do you want to save them? Choose option - + Seçenek seç @@ -1488,12 +1494,12 @@ Do you want to save them? General - + Genel Profiles - + Profiller @@ -1503,7 +1509,7 @@ Do you want to save them? Settings - + Ayarlar @@ -1547,12 +1553,12 @@ Do you want to save them? Custom Rules - + Özel Kurallar All - + Tümü @@ -1562,7 +1568,7 @@ Do you want to save them? None - + Hiçbiri @@ -1570,12 +1576,12 @@ Do you want to save them? Active Profiles - + Etkin Profiller Blocked Elements - + Engellenmiş Ögeler @@ -1600,17 +1606,17 @@ Do you want to save them? script - + betik image - + resim object - + nesne @@ -1630,7 +1636,7 @@ Do you want to save them? other - + diğer @@ -1648,13 +1654,13 @@ Do you want to save them? day(s) - + gün(ler) Never - + asla @@ -1755,7 +1761,7 @@ Do you want to save them? Profile with name %1.txt already exists. - + %1.txt adıyla bir profil halihazırda var. @@ -1880,7 +1886,7 @@ Do you want to save them? Name: - + Ad: @@ -1944,7 +1950,7 @@ Do you want to save them? Name: - İsim: + Ad: @@ -2240,12 +2246,12 @@ Do you want to save them? Folder Name - + Klasör Adı Select name of new folder: - + Yeni klasör adını seçin: @@ -2307,12 +2313,12 @@ Do you want to save them? Select Folder Name - + Klasör Adını Seç Enter folder name: - + Klasör adı gir: @@ -2712,7 +2718,7 @@ Do you want to save them? Icon Name: - + Simge Adı: @@ -3074,7 +3080,7 @@ Do you want to save them? Name - İsim + Ad @@ -3494,12 +3500,12 @@ Do you want to continue? Select Folder Name - + Klasör Adı Seç Enter folder name: - + Klasör adı girin: @@ -3704,7 +3710,7 @@ Do you want to continue? Name - + Ad @@ -3841,7 +3847,7 @@ Do you want to continue? Name - + Ad @@ -4417,7 +4423,7 @@ Do you want to continue? Name - İsim + Ad @@ -4540,12 +4546,12 @@ Do you want to continue? MIME Type Name - + MIME Türü Adı Select name of MIME Type: - + MIME Türünün adını seçin: @@ -4555,7 +4561,7 @@ Do you want to continue? Invalid MIME Type name. - + Geçersiz MIME Türü adı. @@ -4563,7 +4569,7 @@ Do you want to continue? Folder Name - + Klasör Adı @@ -4571,7 +4577,7 @@ Do you want to continue? Select folder name: - + Klasör adı seçin: @@ -4673,7 +4679,7 @@ Do you want to continue? Colors - + Renkler @@ -4754,22 +4760,22 @@ Do you want to continue? Background Color - + Arka Plan Rengi Text Color - + Metin Rengi Link Color - + Bağlantı Rengi Visited Link Color - + Ziyaret Edilmiş Bağlantı Rengi @@ -5159,7 +5165,7 @@ Do you want to continue? Name - İsim + Ad @@ -5512,7 +5518,7 @@ Do you want to continue? Name - + Ad @@ -6014,7 +6020,7 @@ Do you want to overwrite it? Name - + Ad @@ -6287,7 +6293,7 @@ Do you want to save your changes or discard them? Color: - + Renk: @@ -6568,7 +6574,7 @@ Address: %2 Name: - İsim: + Ad: @@ -7043,7 +7049,10 @@ Address: %2 Do you want to overwrite it? %1 - + Aynı adlı bir dosya halihazırda var. +Üzerine yazmak istiyor musunuz? + +%1 @@ -7110,7 +7119,7 @@ Progress: %5</div> Name: - İsim: + Ad: @@ -7312,7 +7321,7 @@ Progress: %5</div> Downloads - + İndirmeler @@ -7321,7 +7330,8 @@ Progress: %5</div> Download completed: %1 - + İndirme tamamlandı: +%1 @@ -7330,12 +7340,12 @@ Progress: %5</div> Downloads - + İndirmeler Show all Downloads - + Tüm İndirmeleri Göster @@ -7363,37 +7373,37 @@ Progress: %5</div> Check for Updates - + Güncellemeleri Denetle Checking for update… - + Güncelleme denetleniyor... Checking for updates… - + Güncellemeler denetleniyor... There are no new updates. - + Kullanılabilir güncelleme yok. Available updates: - + Kullanılabilir güncellemeler: Details… - + Ayrıntılar... Download - + İndir @@ -8206,7 +8216,7 @@ Click Install button to restart browser and install the update or close this dia Name - + Ad @@ -10339,7 +10349,7 @@ Application ID: %2 Mask as {name} - + {name} olarak maskele @@ -10379,12 +10389,12 @@ Application ID: %2 Check the file name for capitalization or other typing errors. - + Dosya adını BÜYÜK/küçük harf veya diğer yazım hataları için denetle Check to see if the file was moved, renamed or deleted. - + Dosya taşınmış, yeniden adlandırılmış veya silinmiş mi diye denetle diff --git a/resources/translations/otter-browser_zh_CN.qm b/resources/translations/otter-browser_zh_CN.qm index 07c21b222c32efaeea2c0db4d340b8dcd1614871..da078e8cb35c80201cfe5bab8184b78e1891dd99 100644 GIT binary patch delta 20341 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 delta 14850 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 ZwIZcrU&StE%3}w`EQ^%9F$x=t{{a% (Unknown) - + (未知) @@ -531,12 +531,12 @@ Are you sure that you want to restore this session anyway? Failed to parse feed file: %1 - + 无法解析Feed文件:%1 Failed to parse feed: no valid entries found - + 无法解析Feed:找不到有效的条目 @@ -1691,7 +1691,7 @@ Do you want to save them? Address: - + 地址: @@ -1701,12 +1701,12 @@ Do you want to save them? Never - + 从不 days - + @@ -1777,27 +1777,27 @@ Do you want to save them? Failed to read profile file - + 无法读取配置文件 Failed to download profile rules - + 无法下载配置文件规则 Failed to verify profile rules using checksum - + 无法使用校验和验证配置文件规则 Profile was never updated - + 配置从未更新 Profile was last updated more than one week ago - + 配置上次更新超过一周 @@ -1805,62 +1805,62 @@ Do you want to save them? Custom Rules - + 自定义规则 Failed to remove content blocking profile file: %1 - + 无法删除内容阻止配置文件:%1 Unknown - + 未知 Title - + 标题 Update Interval - + 更新间隔 Last Update - + 最近更新 Advertisements - + 广告 Annoyance - + 恼人的内容 Privacy - + 隐私 Social - + 社交 Regional - + 区域 Other - + 其他 @@ -2168,17 +2168,18 @@ Do you want to save them? Feed updated: %1 - + Feed已更新: +%1 Failed to parse feed: invalid feed type - + 无法解析Feed:无效的Feed类型 Failed to download feed - + 无法下载Feed @@ -2186,62 +2187,62 @@ Do you want to save them? Edit Feed - + 编辑Feed Folder: - + 文件夹: New… - + 新建... Title: - + 标题: Change Icon… - + 更改图标... Address: - + 地址: Update interval: - + 更新间隔: Never - + 从不 minutes - + 分钟 Add Feed - + 添加Feed Error - + 错误 Valid address is required. - + 需要有效的地址 @@ -2249,12 +2250,12 @@ Do you want to save them? Folder Name - + 文件夹名 Select name of new folder: - + 选择新文件夹的名称: @@ -2262,156 +2263,156 @@ Do you want to save them? OK - + Cancel - + 取消 Search… - + 搜索… Categories - + 分类 Title - + 标题 From - + Published - + 已发布 Question - + 问题 You already subscribed this feed. - + 你已经订阅此Feed Do you want to continue? - + 是否继续? Select Folder Name - + 选择文件夹名称 Enter folder name: - + 输入文件夹名称: Open - + 打开 Empty Trash - + 清空回收站 Add Folder… - + 添加文件夹… Add Feed… - + 添加Feed Add New - + 新增 Restore Feed - + 恢复Feed Properties… - + 属性... Send email to %1 - + 发送邮件至 %1 Go to %1 - + 前往%1 All (%1) - + 全部 (%1) (Untitled) - + (无标题) Subscribe to this feed using: - + 使用以下方式订阅此Feed: Feed: %1 - + Feed: %1 Feeds - + Feeds Title: %1 - + 标题: %1 Address: %1 - + 地址:%1 Last update: %1 - + 最近更新:%1 @@ -2419,37 +2420,37 @@ Do you want to save them? Feeds - + Feeds Trash - + 回收站 (Untitled) - + (无标题) Failed to open feeds file: %1 - + 无法打开笔记文件:%1 Failed to load feeds file: %1 - + 无法载入Feeds文件:%1 Error - + 错误 Failed to load feeds file. - + 无法载入Feeds文件. @@ -2527,22 +2528,22 @@ Do you want to save them? Error - + 错误 Profile with this address already exists. - + 具有此地址的配置已存在. Question - + 问题 Do you want to add this content blocking profile? - + 要添加此内容阻止配置文件吗? @@ -3302,12 +3303,12 @@ Do you want to migrate it? Move Up - + 上移 Move Down - + 下移 @@ -3658,17 +3659,17 @@ Do you want to continue? OPML Feeds - + OPML Feeds Imports feeds from OPML file - + 从OPML文件导入Feeds OPML files (*.opml) - + OPML 文件 (*.opml) @@ -3676,17 +3677,17 @@ Do you want to continue? Import into folder: - + 导入到文件夹: New… - + 新建… Allow to duplicate already existing feeds - + 允许复制已存在的Feed @@ -5717,12 +5718,12 @@ Do you want to continue? PNG image (*.png) - + PNG图像 (*.png) JPEG image (*.jpg *.jpeg) - + JPEG 图像 (*.jpg *.jpeg) @@ -5771,12 +5772,12 @@ Do you want to continue? Failed to parse feed file: %1 - + 无法解析Feed文件:%1 Failed to parse feed: no valid entries found - + 无法解析Feed:找不到有效的条目 @@ -6535,17 +6536,17 @@ Address: %2 Title: %1 - + 标题: %1 Address: %1 - + 地址:%1 Date: %1 - + 日期:%1 @@ -7071,23 +7072,23 @@ Do you want to overwrite it? From: - + 从: Size: - + 大小: %1 (download completed) - + %1(已下载完成) %1 (%2% downloaded) - + %1(%2% 已下载) @@ -7108,7 +7109,7 @@ Do you want to overwrite it? Stop - + 暂停 @@ -7117,7 +7118,11 @@ Target: %2 Size: %3 Downloaded: %4 Progress: %5</div> - + 来源:%1 +目标:%2 +大小:%3 +已下载:%4 +进度:%5 @@ -8269,7 +8274,7 @@ Click Install button to restart browser and install the update or close this dia Search… - + 搜索… @@ -9141,7 +9146,7 @@ Click Install button to restart browser and install the update or close this dia Take Screenshot - + 截图 @@ -9529,7 +9534,7 @@ Click Install button to restart browser and install the update or close this dia Update - + 更新 @@ -9619,7 +9624,7 @@ Click Install button to restart browser and install the update or close this dia Import OPML Feeds… - + 导入 OPML Feeds… @@ -10028,7 +10033,7 @@ Click Install button to restart browser and install the update or close this dia Feeds - + Feeds @@ -10311,12 +10316,12 @@ Application ID: %2 Feed Updated - + Feed已更新 Feed update was completed - + Feed更新完成 From b32217e712585a25e8ecdb32f4bcff81d7ae4310 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 22:30:22 +0100 Subject: [PATCH 074/107] Update docs --- CHANGELOG | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 26640a4a8a..d841308c1c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +1.0.02 (2020-12-21): +- optimized handling of large images for Start Page backgrounds; +- improved validation of content blocking profile checksum; +- updated translations; +- some other fixes. + 1.0.01 (2019-01-01): - some enhancements in experimental backend for QtWebEngine (Blink): -- download dialog is now shown for tab that initiated it; From e4cad3c55288dbdfd263e7bbcc063b5f25fcc15b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 21 Dec 2020 22:34:21 +0100 Subject: [PATCH 075/107] Update version --- CMakeLists.txt | 4 ++-- otter-browser.rc | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 6bd212ff44..b686d3834e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ project(otter-browser) set(MAJOR_VERSION "1") set(MINOR_VERSION "0") -set(PATCH_VERSION "01") +set(PATCH_VERSION "02") set(WEEKLY_VERSION "" CACHE STRING "") add_definitions(-DOTTER_VERSION_MAIN="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" -DOTTER_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" -DOTTER_VERSION_CONTEXT=" " -DOTTER_VERSION_WEEKLY=" ") @@ -495,7 +495,7 @@ elseif (APPLE) set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) set(MACOSX_BUNDLE_ICON_FILE otter-browser.icns) set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.otter-browser.otter-browser") - set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2019 Otter Browser Team. All rights reserved.") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2020 Otter Browser Team. All rights reserved.") set(otter_src ${otter_src} src/modules/platforms/mac/MacPlatformIntegration.mm diff --git a/otter-browser.rc b/otter-browser.rc index 549d5262c4..bf390fa3a2 100644 --- a/otter-browser.rc +++ b/otter-browser.rc @@ -4,8 +4,8 @@ IDI_ICON1 ICON DISCARDABLE "resources/icons/otter-browser.ico" IDI_ICON2 ICON DISCARDABLE "resources/icons/otter-browser-file-type.ico" VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,1 - PRODUCTVERSION 1,0,0,1 + FILEVERSION 1,0,0,2 + PRODUCTVERSION 1,0,0,2 BEGIN BLOCK "StringFileInfo" BEGIN @@ -13,12 +13,12 @@ BEGIN BEGIN VALUE "CompanyName", "Otter Browser Team" VALUE "FileDescription", "Otter Browser" - VALUE "FileVersion", "1.0.01" + VALUE "FileVersion", "1.0.02" VALUE "InternalName", "otter-browser" - VALUE "LegalCopyright", "Copyright (C) 2013-2019 Otter Browser Team" + VALUE "LegalCopyright", "Copyright (C) 2013-2020 Otter Browser Team" VALUE "OriginalFilename", "otter-browser.exe" VALUE "ProductName", "Otter Browser" - VALUE "ProductVersion", "1.0.01" + VALUE "ProductVersion", "1.0.02" END END BLOCK "VarFileInfo" From 1c6dec7a7a999e243ab5eca64b02a215d76e20ee Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 27 Jan 2019 11:50:14 +0100 Subject: [PATCH 076/107] Allow to force initialization --- src/core/ContentFiltersManager.cpp | 188 +++++++++++++++-------------- src/core/ContentFiltersManager.h | 2 +- 2 files changed, 98 insertions(+), 92 deletions(-) diff --git a/src/core/ContentFiltersManager.cpp b/src/core/ContentFiltersManager.cpp index 4b8621df28..75c09ceb93 100644 --- a/src/core/ContentFiltersManager.cpp +++ b/src/core/ContentFiltersManager.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include namespace Otter @@ -48,6 +49,11 @@ ContentFiltersManager::ContentFiltersManager(QObject *parent) : QObject(parent), handleOptionChanged(SettingsManager::ContentBlocking_CosmeticFiltersModeOption, SettingsManager::getOption(SettingsManager::ContentBlocking_CosmeticFiltersModeOption).toString()); + QTimer::singleShot(1000, this, [&]() + { + initialize(); + }); + connect(SettingsManager::getInstance(), &SettingsManager::optionChanged, this, &ContentFiltersManager::handleOptionChanged); } @@ -59,92 +65,7 @@ void ContentFiltersManager::createInstance() } } -void ContentFiltersManager::timerEvent(QTimerEvent *event) -{ - if (event->timerId() == m_saveTimer) - { - killTimer(m_saveTimer); - - m_saveTimer = 0; - - const QHash categoryTitles({{ContentFiltersProfile::AdvertisementsCategory, QLatin1String("advertisements")}, {ContentFiltersProfile::AnnoyanceCategory, QLatin1String("annoyance")}, {ContentFiltersProfile::PrivacyCategory, QLatin1String("privacy")}, {ContentFiltersProfile::SocialCategory, QLatin1String("social")}, {ContentFiltersProfile::RegionalCategory, QLatin1String("regional")}, {ContentFiltersProfile::OtherCategory, QLatin1String("other")}}); - JsonSettings settings(SessionsManager::getWritableDataPath(QLatin1String("contentBlocking.json"))); - QJsonObject mainObject(settings.object()); - QJsonObject::iterator iterator(mainObject.begin()); - - while (iterator != mainObject.end()) - { - const QJsonObject profileObject(mainObject.value(iterator.key()).toObject()); - - if (profileObject.value(QLatin1String("isHidden")).toBool()) - { - ++iterator; - } - else - { - iterator = mainObject.erase(iterator); - } - } - - for (int i = 0; i < m_contentBlockingProfiles.count(); ++i) - { - const ContentFiltersProfile *profile(m_contentBlockingProfiles.at(i)); - - if (!profile || profile->getName() == QLatin1String("custom")) - { - continue; - } - - QJsonObject profileObject; - const int updateInterval(profile->getUpdateInterval()); - - if (updateInterval > 0) - { - profileObject.insert(QLatin1String("updateInterval"), updateInterval); - } - - const QDateTime lastUpdate(profile->getLastUpdate()); - - if (lastUpdate.isValid()) - { - profileObject.insert(QLatin1String("lastUpdate"), lastUpdate.toString(Qt::ISODate)); - } - - if (profile->getFlags().testFlag(ContentFiltersProfile::HasCustomTitleFlag)) - { - profileObject.insert(QLatin1String("title"), profile->getTitle()); - } - - if (profile->getFlags().testFlag(ContentFiltersProfile::HasCustomUpdateUrlFlag)) - { - profileObject.insert(QLatin1String("updateUrl"), profile->getUpdateUrl().url()); - } - - profileObject.insert(QLatin1String("category"), categoryTitles.value(profile->getCategory())); - - const QVector languages(m_contentBlockingProfiles.at(i)->getLanguages()); - - if (!languages.contains(QLocale::AnyLanguage)) - { - QJsonArray languagesArray; - - for (int j = 0; j < languages.count(); ++j) - { - languagesArray.append(QLocale(languages.at(j)).name()); - } - - profileObject.insert(QLatin1String("languages"), languagesArray); - } - - mainObject.insert(profile->getName(), profileObject); - } - - settings.setObject(mainObject); - settings.save(); - } -} - -void ContentFiltersManager::ensureInitialized() +void ContentFiltersManager::initialize() { if (!m_contentBlockingProfiles.isEmpty()) { @@ -255,6 +176,91 @@ void ContentFiltersManager::ensureInitialized() m_contentBlockingProfiles.squeeze(); } +void ContentFiltersManager::timerEvent(QTimerEvent *event) +{ + if (event->timerId() == m_saveTimer) + { + killTimer(m_saveTimer); + + m_saveTimer = 0; + + const QHash categoryTitles({{ContentFiltersProfile::AdvertisementsCategory, QLatin1String("advertisements")}, {ContentFiltersProfile::AnnoyanceCategory, QLatin1String("annoyance")}, {ContentFiltersProfile::PrivacyCategory, QLatin1String("privacy")}, {ContentFiltersProfile::SocialCategory, QLatin1String("social")}, {ContentFiltersProfile::RegionalCategory, QLatin1String("regional")}, {ContentFiltersProfile::OtherCategory, QLatin1String("other")}}); + JsonSettings settings(SessionsManager::getWritableDataPath(QLatin1String("contentBlocking.json"))); + QJsonObject mainObject(settings.object()); + QJsonObject::iterator iterator(mainObject.begin()); + + while (iterator != mainObject.end()) + { + const QJsonObject profileObject(mainObject.value(iterator.key()).toObject()); + + if (profileObject.value(QLatin1String("isHidden")).toBool()) + { + ++iterator; + } + else + { + iterator = mainObject.erase(iterator); + } + } + + for (int i = 0; i < m_contentBlockingProfiles.count(); ++i) + { + const ContentFiltersProfile *profile(m_contentBlockingProfiles.at(i)); + + if (!profile || profile->getName() == QLatin1String("custom")) + { + continue; + } + + QJsonObject profileObject; + const int updateInterval(profile->getUpdateInterval()); + + if (updateInterval > 0) + { + profileObject.insert(QLatin1String("updateInterval"), updateInterval); + } + + const QDateTime lastUpdate(profile->getLastUpdate()); + + if (lastUpdate.isValid()) + { + profileObject.insert(QLatin1String("lastUpdate"), lastUpdate.toString(Qt::ISODate)); + } + + if (profile->getFlags().testFlag(ContentFiltersProfile::HasCustomTitleFlag)) + { + profileObject.insert(QLatin1String("title"), profile->getTitle()); + } + + if (profile->getFlags().testFlag(ContentFiltersProfile::HasCustomUpdateUrlFlag)) + { + profileObject.insert(QLatin1String("updateUrl"), profile->getUpdateUrl().url()); + } + + profileObject.insert(QLatin1String("category"), categoryTitles.value(profile->getCategory())); + + const QVector languages(m_contentBlockingProfiles.at(i)->getLanguages()); + + if (!languages.contains(QLocale::AnyLanguage)) + { + QJsonArray languagesArray; + + for (int j = 0; j < languages.count(); ++j) + { + languagesArray.append(QLocale(languages.at(j)).name()); + } + + profileObject.insert(QLatin1String("languages"), languagesArray); + } + + mainObject.insert(profile->getName(), profileObject); + } + + settings.setObject(mainObject); + settings.save(); + } +} + void ContentFiltersManager::scheduleSave() { if (m_saveTimer == 0) @@ -347,7 +353,7 @@ void ContentFiltersManager::removeProfile(ContentFiltersProfile *profile) QStandardItemModel* ContentFiltersManager::createModel(QObject *parent, const QStringList &profiles) { - ensureInitialized(); + initialize(); QHash > > categoryEntries; QStandardItemModel *model(new QStandardItemModel(parent)); @@ -557,7 +563,7 @@ QStringList ContentFiltersManager::createSubdomainList(const QString &domain) QStringList ContentFiltersManager::getProfileNames() { - ensureInitialized(); + initialize(); QStringList names; names.reserve(m_contentBlockingProfiles.count()); @@ -572,21 +578,21 @@ QStringList ContentFiltersManager::getProfileNames() QVector ContentFiltersManager::getContentBlockingProfiles() { - ensureInitialized(); + initialize(); return m_contentBlockingProfiles; } QVector ContentFiltersManager::getFraudCheckingProfiles() { - ensureInitialized(); + initialize(); return m_fraudCheckingProfiles; } QVector ContentFiltersManager::getProfileIdentifiers(const QStringList &names) { - ensureInitialized(); + initialize(); QVector identifiers; identifiers.reserve(names.count()); diff --git a/src/core/ContentFiltersManager.h b/src/core/ContentFiltersManager.h index f47d45a604..9443f56d21 100644 --- a/src/core/ContentFiltersManager.h +++ b/src/core/ContentFiltersManager.h @@ -66,6 +66,7 @@ class ContentFiltersManager final : public QObject }; static void createInstance(); + static void initialize(); static void addProfile(ContentFiltersProfile *profile); static void removeProfile(ContentFiltersProfile *profile); static QStandardItemModel* createModel(QObject *parent, const QStringList &profiles); @@ -88,7 +89,6 @@ class ContentFiltersManager final : public QObject explicit ContentFiltersManager(QObject *parent); void timerEvent(QTimerEvent *event) override; - static void ensureInitialized(); protected slots: void scheduleSave(); From 62eeef2f3e79ddcdee1f77c40c18874912f9a829 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 27 Jan 2019 11:54:05 +0100 Subject: [PATCH 077/107] [QtWebEngine] Initialize ContentFiltersManager before creating first widget --- .../backends/web/qtwebengine/QtWebEngineWebBackend.cpp | 6 +++++- .../backends/web/qtwebengine/QtWebEngineWebBackend.h | 2 +- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 793e790418..7b660c04db 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -23,6 +23,7 @@ #include "QtWebEngineTransfer.h" #include "QtWebEngineUrlRequestInterceptor.h" #include "QtWebEngineWebWidget.h" +#include "../../../../core/ContentFiltersManager.h" #include "../../../../core/HandlersManager.h" #include "../../../../core/NetworkManagerFactory.h" #include "../../../../core/SettingsManager.h" @@ -190,6 +191,9 @@ WebWidget* QtWebEngineWebBackend::createWidget(const QVariantMap ¶meters, Co if (!m_isInitialized) { m_isInitialized = true; + + ContentFiltersManager::initialize(); + m_requestInterceptor = new QtWebEngineUrlRequestInterceptor(this); QWebEngineProfile::defaultProfile()->setHttpAcceptLanguage(NetworkManagerFactory::getAcceptLanguage()); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h index 536b1f44d5..8145eaeb97 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify From 656c7ed714b422030687430f7331f6787369835f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Apr 2019 19:23:13 +0200 Subject: [PATCH 078/107] [QtWebEngine] Disable old QtWebEngineUrlRequestInterceptor for 5.13 and newer --- src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp | 2 ++ .../backends/web/qtwebengine/QtWebEngineWebBackend.cpp | 6 ++++++ .../backends/web/qtwebengine/QtWebEngineWebBackend.h | 4 ++++ 3 files changed, 12 insertions(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index 601ff6db3b..38e9eebe09 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -184,6 +184,7 @@ void QtWebEnginePage::handleLoadFinished() } } +#if QTWEBENGINECORE_VERSION < 0x050D00 const QStringList blockedRequests(qobject_cast(m_widget->getBackend())->getBlockedElements(url.host())); if (!blockedRequests.isEmpty()) @@ -197,6 +198,7 @@ void QtWebEnginePage::handleLoadFinished() file.close(); } } +#endif } QString string(url().toString()); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 7b660c04db..00be9a8bbb 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -45,7 +45,9 @@ QHash QtWebEngineWebBackend::m_userAgentComponents; QMap QtWebEngineWebBackend::m_userAgents; QtWebEngineWebBackend::QtWebEngineWebBackend(QObject *parent) : WebBackend(parent), +#if QTWEBENGINECORE_VERSION < 0x050D00 m_requestInterceptor(nullptr), +#endif m_isInitialized(false) { const QString userAgent(QWebEngineProfile::defaultProfile()->httpUserAgent()); @@ -194,7 +196,9 @@ WebWidget* QtWebEngineWebBackend::createWidget(const QVariantMap ¶meters, Co ContentFiltersManager::initialize(); +#if QTWEBENGINECORE_VERSION < 0x050D00 m_requestInterceptor = new QtWebEngineUrlRequestInterceptor(this); +#endif QWebEngineProfile::defaultProfile()->setHttpAcceptLanguage(NetworkManagerFactory::getAcceptLanguage()); QWebEngineProfile::defaultProfile()->setHttpUserAgent(getUserAgent()); @@ -283,10 +287,12 @@ QString QtWebEngineWebBackend::getUserAgent(const QString &pattern) const return ((userAgent.value.isEmpty()) ? QString() : getUserAgent(userAgent.value)); } +#if QTWEBENGINECORE_VERSION < 0x050D00 QStringList QtWebEngineWebBackend::getBlockedElements(const QString &domain) const { return (m_requestInterceptor ? m_requestInterceptor->getBlockedElements(domain) : QStringList()); } +#endif QUrl QtWebEngineWebBackend::getHomePage() const { diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h index 8145eaeb97..3d48894e74 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.h @@ -46,7 +46,9 @@ class QtWebEngineWebBackend final : public WebBackend QString getEngineVersion() const override; QString getSslVersion() const override; QString getUserAgent(const QString &pattern = {}) const override; +#if QTWEBENGINECORE_VERSION < 0x050D00 QStringList getBlockedElements(const QString &domain) const; +#endif QUrl getHomePage() const override; WebBackend::BackendCapabilities getCapabilities() const override; bool requestThumbnail(const QUrl &url, const QSize &size) override; @@ -56,7 +58,9 @@ protected slots: void handleOptionChanged(int identifier); private: +#if QTWEBENGINECORE_VERSION < 0x050D00 QtWebEngineUrlRequestInterceptor *m_requestInterceptor; +#endif bool m_isInitialized; static QString m_engineVersion; From 1088b7a91c8b381e9bb30059f9a2020ba7d4eebd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Apr 2019 21:34:25 +0200 Subject: [PATCH 079/107] [QtWebEngine] Initial work on new QtWebEngineUrlRequestInterceptor --- .../QtWebEngineUrlRequestInterceptor.cpp | 132 +++++++++++++++++- .../QtWebEngineUrlRequestInterceptor.h | 36 ++++- 2 files changed, 164 insertions(+), 4 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp index 76c4ea9df4..c30e612f47 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -19,9 +19,9 @@ **************************************************************************/ #include "QtWebEngineUrlRequestInterceptor.h" +#include "QtWebEngineWebWidget.h" #include "../../../../core/Console.h" #include "../../../../core/ContentFiltersManager.h" -#include "../../../../core/NetworkManagerFactory.h" #include "../../../../core/SettingsManager.h" #include "../../../../core/Utils.h" @@ -30,6 +30,133 @@ namespace Otter { +#if QTWEBENGINECORE_VERSION >= 0x050D00 +QtWebEngineUrlRequestInterceptor::QtWebEngineUrlRequestInterceptor(QtWebEngineWebWidget *parent) : QWebEngineUrlRequestInterceptor(parent), + m_widget(parent), + m_doNotTrackPolicy(NetworkManagerFactory::SkipTrackPolicy), + m_areImagesEnabled(true), + m_canSendReferrer(true) +{ +} + +void QtWebEngineUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo &request) +{ + if (!m_areImagesEnabled && request.resourceType() == QWebEngineUrlRequestInfo::ResourceTypeImage) + { + request.block(true); + + return; + } + + if (!m_contentBlockingProfiles.isEmpty() && (m_unblockedHosts.isEmpty() || !m_unblockedHosts.contains(Utils::extractHost(request.firstPartyUrl())))) + { + NetworkManager::ResourceType resourceType(NetworkManager::OtherType); + bool storeBlockedUrl(true); + + switch (request.resourceType()) + { + case QWebEngineUrlRequestInfo::ResourceTypeMainFrame: + resourceType = NetworkManager::MainFrameType; + + break; + case QWebEngineUrlRequestInfo::ResourceTypeSubFrame: + resourceType = NetworkManager::SubFrameType; + + break; + case QWebEngineUrlRequestInfo::ResourceTypeStylesheet: + resourceType = NetworkManager::StyleSheetType; + storeBlockedUrl = false; + + break; + case QWebEngineUrlRequestInfo::ResourceTypeScript: + resourceType = NetworkManager::ScriptType; + storeBlockedUrl = false; + + break; + case QWebEngineUrlRequestInfo::ResourceTypeImage: + resourceType = NetworkManager::ImageType; + + break; + case QWebEngineUrlRequestInfo::ResourceTypeObject: + case QWebEngineUrlRequestInfo::ResourceTypeMedia: + resourceType = NetworkManager::ObjectType; + + break; + case QWebEngineUrlRequestInfo::ResourceTypePluginResource: + resourceType = NetworkManager::ObjectSubrequestType; + storeBlockedUrl = false; + + break; + case QWebEngineUrlRequestInfo::ResourceTypeXhr: + resourceType = NetworkManager::XmlHttpRequestType; + + break; + default: + break; + } + + const ContentFiltersManager::CheckResult result(ContentFiltersManager::checkUrl(m_contentBlockingProfiles, request.firstPartyUrl(), request.requestUrl(), resourceType)); + + if (result.isBlocked) + { + const ContentFiltersProfile *profile(ContentFiltersManager::getProfile(result.profile)); + + Console::addMessage(QCoreApplication::translate("main", "Request blocked by rule from profile %1:\n%2").arg(profile ? profile->getTitle() : QCoreApplication::translate("main", "(Unknown)")).arg(result.rule), Console::NetworkCategory, Console::LogLevel, request.requestUrl().toString(), -1); + + request.block(true); + + return; + } + } + + if (m_doNotTrackPolicy != NetworkManagerFactory::SkipTrackPolicy) + { + request.setHttpHeader(QStringLiteral("DNT").toLatin1(), ((m_doNotTrackPolicy == NetworkManagerFactory::DoNotAllowToTrackPolicy) ? QStringLiteral("1") : QStringLiteral("0")).toLatin1()); + } + + if (!m_canSendReferrer) + { + request.setHttpHeader(QStringLiteral("Referer").toLatin1(), QByteArray()); + } +} + +void QtWebEngineUrlRequestInterceptor::updateOptions(const QUrl &url) +{ + if (getOption(SettingsManager::ContentBlocking_EnableContentBlockingOption, url).toBool()) + { + m_contentBlockingProfiles = ContentFiltersManager::getProfileIdentifiers(getOption(SettingsManager::ContentBlocking_ProfilesOption, url).toStringList()); + } + else + { + m_contentBlockingProfiles.clear(); + } + + m_unblockedHosts = getOption(SettingsManager::ContentBlocking_IgnoreHostsOption, url).toStringList(); + + const QString doNotTrackPolicyValue(getOption(SettingsManager::Network_DoNotTrackPolicyOption, url).toString()); + + if (doNotTrackPolicyValue == QLatin1String("allow")) + { + m_doNotTrackPolicy = NetworkManagerFactory::AllowToTrackPolicy; + } + else if (doNotTrackPolicyValue == QLatin1String("doNotAllow")) + { + m_doNotTrackPolicy = NetworkManagerFactory::DoNotAllowToTrackPolicy; + } + else + { + m_doNotTrackPolicy = NetworkManagerFactory::SkipTrackPolicy; + } + + m_areImagesEnabled = (getOption(SettingsManager::Permissions_EnableImagesOption, url).toString() != QLatin1String("disabled")); + m_canSendReferrer = getOption(SettingsManager::Network_EnableReferrerOption, url).toBool(); +} + +QVariant QtWebEngineUrlRequestInterceptor::getOption(int identifier, const QUrl &url) const +{ + return (m_widget ? m_widget->getOption(identifier, url) : SettingsManager::getOption(identifier, Utils::extractHost(url))); +} +#else QtWebEngineUrlRequestInterceptor::QtWebEngineUrlRequestInterceptor(QObject *parent) : QWebEngineUrlRequestInterceptor(parent), m_clearTimer(0), m_areImagesEnabled(SettingsManager::getOption(SettingsManager::Permissions_EnableImagesOption).toString() != QLatin1String("disabled")) @@ -179,5 +306,6 @@ void QtWebEngineUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo request.setHttpHeader(QStringLiteral("Referer").toLatin1(), QByteArray()); } } +#endif } diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h index b861ec2d50..9b2008f155 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2019 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -21,13 +21,45 @@ #ifndef OTTER_QTWEBENGINEURLREQUESTINTERCEPTOR_H #define OTTER_QTWEBENGINEURLREQUESTINTERCEPTOR_H +#include "../../../../core/NetworkManagerFactory.h" + +#if QTWEBENGINECORE_VERSION < 0x050D00 #include #include +#endif +#include #include namespace Otter { +#if QTWEBENGINECORE_VERSION >= 0x050D00 +class QtWebEngineWebWidget; + +class QtWebEngineUrlRequestInterceptor final : public QWebEngineUrlRequestInterceptor +{ + Q_OBJECT + +public: + explicit QtWebEngineUrlRequestInterceptor(QtWebEngineWebWidget *parent); + + void interceptRequest(QWebEngineUrlRequestInfo &request) override; + +protected: + void updateOptions(const QUrl &url); + QVariant getOption(int identifier, const QUrl &url) const; + +private: + QtWebEngineWebWidget *m_widget; + QStringList m_unblockedHosts; + QVector m_contentBlockingProfiles; + NetworkManagerFactory::DoNotTrackPolicy m_doNotTrackPolicy; + bool m_areImagesEnabled; + bool m_canSendReferrer; + +friend class QtWebEngineWebWidget; +}; +#else class QtWebEngineUrlRequestInterceptor final : public QWebEngineUrlRequestInterceptor { Q_OBJECT @@ -51,7 +83,7 @@ protected slots: int m_clearTimer; bool m_areImagesEnabled; }; - +#endif } #endif From e242ca1495306f8aa6bc9468ca64d5b4afe3e67a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Apr 2019 22:29:33 +0200 Subject: [PATCH 080/107] [QtWebEngine] Install new QtWebEngineUrlRequestInterceptor on QtWebEnginePage --- .../web/qtwebengine/QtWebEngineWebWidget.cpp | 14 ++++++++++++++ .../web/qtwebengine/QtWebEngineWebWidget.h | 4 ++++ 2 files changed, 18 insertions(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 90157b34ef..d19b4b5b88 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -19,6 +19,9 @@ #include "QtWebEngineWebWidget.h" #include "QtWebEnginePage.h" +#if QTWEBENGINECORE_VERSION >= 0x050D00 +#include "QtWebEngineUrlRequestInterceptor.h" +#endif #include "../../../../core/Application.h" #include "../../../../core/BookmarksManager.h" #include "../../../../core/Console.h" @@ -68,6 +71,9 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac m_inspectorView(nullptr), #endif m_page(new QtWebEnginePage(SessionsManager::calculateOpenHints(parameters).testFlag(SessionsManager::PrivateOpen), this)), +#if QTWEBENGINECORE_VERSION >= 0x050D00 + m_requestInterceptor(new QtWebEngineUrlRequestInterceptor(this)), +#endif m_loadingState(FinishedLoadingState), m_canGoForwardValue(UnknownValue), m_documentLoadingProgress(0), @@ -79,6 +85,10 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac { setFocusPolicy(Qt::StrongFocus); +#if QTWEBENGINECORE_VERSION >= 0x050D00 + m_page->setUrlRequestInterceptor(m_requestInterceptor); +#endif + connect(m_page, &QtWebEnginePage::loadProgress, [&](int progress) { m_documentLoadingProgress = progress; @@ -1252,6 +1262,10 @@ void QtWebEngineWebWidget::updateOptions(const QUrl &url) { connect(m_page, &QtWebEnginePage::geometryChangeRequested, this, &QtWebEngineWebWidget::requestedGeometryChange); } + +#if QTWEBENGINECORE_VERSION >= 0x050D00 + m_requestInterceptor->updateOptions(url); +#endif } void QtWebEngineWebWidget::updateWatchedData(ChangeWatcher watcher) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index c11a3070e4..15b902a591 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -31,6 +31,7 @@ namespace Otter { class QtWebEnginePage; +class QtWebEngineUrlRequestInterceptor; class SourceViewerWebWidget; class QtWebEngineWebWidget final : public WebWidget @@ -166,6 +167,9 @@ protected slots: QWebEngineView *m_inspectorView; #endif QtWebEnginePage *m_page; +#if QTWEBENGINECORE_VERSION >= 0x050D00 + QtWebEngineUrlRequestInterceptor *m_requestInterceptor; +#endif QDateTime m_lastUrlClickTime; HitTestResult m_hitResult; QHash > m_viewSourceReplies; From 4943b3dda987a06bdccbe720673a24c7ff4ad1e4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Apr 2019 22:55:06 +0200 Subject: [PATCH 081/107] [QtWebEngine] Expose blocked elements from new QtWebEngineUrlRequestInterceptor --- .../backends/web/qtwebengine/QtWebEnginePage.cpp | 6 ++++-- .../qtwebengine/QtWebEngineUrlRequestInterceptor.cpp | 12 ++++++++++++ .../qtwebengine/QtWebEngineUrlRequestInterceptor.h | 2 ++ .../web/qtwebengine/QtWebEngineWebWidget.cpp | 7 +++++++ .../backends/web/qtwebengine/QtWebEngineWebWidget.h | 3 +++ 5 files changed, 28 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index 38e9eebe09..32ba3bfb1d 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -184,8 +184,11 @@ void QtWebEnginePage::handleLoadFinished() } } -#if QTWEBENGINECORE_VERSION < 0x050D00 +#if QTWEBENGINECORE_VERSION >= 0x050D00 + const QStringList blockedRequests(m_widget->getBlockedElements()); +#else const QStringList blockedRequests(qobject_cast(m_widget->getBackend())->getBlockedElements(url.host())); +#endif if (!blockedRequests.isEmpty()) { @@ -198,7 +201,6 @@ void QtWebEnginePage::handleLoadFinished() file.close(); } } -#endif } QString string(url().toString()); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp index c30e612f47..11236b3db5 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp @@ -103,6 +103,11 @@ void QtWebEngineUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo Console::addMessage(QCoreApplication::translate("main", "Request blocked by rule from profile %1:\n%2").arg(profile ? profile->getTitle() : QCoreApplication::translate("main", "(Unknown)")).arg(result.rule), Console::NetworkCategory, Console::LogLevel, request.requestUrl().toString(), -1); + if (storeBlockedUrl && !m_blockedElements.contains(request.requestUrl().url())) + { + m_blockedElements.append(request.requestUrl().url()); + } + request.block(true); return; @@ -122,6 +127,8 @@ void QtWebEngineUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo void QtWebEngineUrlRequestInterceptor::updateOptions(const QUrl &url) { + m_blockedElements.clear(); + if (getOption(SettingsManager::ContentBlocking_EnableContentBlockingOption, url).toBool()) { m_contentBlockingProfiles = ContentFiltersManager::getProfileIdentifiers(getOption(SettingsManager::ContentBlocking_ProfilesOption, url).toStringList()); @@ -156,6 +163,11 @@ QVariant QtWebEngineUrlRequestInterceptor::getOption(int identifier, const QUrl { return (m_widget ? m_widget->getOption(identifier, url) : SettingsManager::getOption(identifier, Utils::extractHost(url))); } + +QStringList QtWebEngineUrlRequestInterceptor::getBlockedElements() const +{ + return m_blockedElements; +} #else QtWebEngineUrlRequestInterceptor::QtWebEngineUrlRequestInterceptor(QObject *parent) : QWebEngineUrlRequestInterceptor(parent), m_clearTimer(0), diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h index 9b2008f155..22f1156145 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h @@ -44,6 +44,7 @@ class QtWebEngineUrlRequestInterceptor final : public QWebEngineUrlRequestInterc explicit QtWebEngineUrlRequestInterceptor(QtWebEngineWebWidget *parent); void interceptRequest(QWebEngineUrlRequestInfo &request) override; + QStringList getBlockedElements() const; protected: void updateOptions(const QUrl &url); @@ -51,6 +52,7 @@ class QtWebEngineUrlRequestInterceptor final : public QWebEngineUrlRequestInterc private: QtWebEngineWebWidget *m_widget; + QStringList m_blockedElements; QStringList m_unblockedHosts; QVector m_contentBlockingProfiles; NetworkManagerFactory::DoNotTrackPolicy m_doNotTrackPolicy; diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index d19b4b5b88..1939b93db7 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -1623,6 +1623,13 @@ QDateTime QtWebEngineWebWidget::getLastUrlClickTime() const return m_lastUrlClickTime; } +#if QTWEBENGINECORE_VERSION >= 0x050D00 +QStringList QtWebEngineWebWidget::getBlockedElements() const +{ + return m_requestInterceptor->getBlockedElements(); +} +#endif + QPoint QtWebEngineWebWidget::getScrollPosition() const { return m_page->scrollPosition().toPoint(); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index 15b902a591..18598d5aca 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -126,6 +126,9 @@ public slots: QWebEnginePage* getPage() const; QString parsePosition(const QString &script, const QPoint &position) const; QDateTime getLastUrlClickTime() const; +#if QTWEBENGINECORE_VERSION >= 0x050D00 + QStringList getBlockedElements() const; +#endif QVector processLinks(const QVariantList &rawLinks) const; bool canGoBack() const override; bool canGoForward() const override; From 5483483bfff9e5fc5752e0f41304175ec6ac5f04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Apr 2019 23:08:30 +0200 Subject: [PATCH 082/107] [QtWebEngine] Collect data on blocked requests --- .../QtWebEngineUrlRequestInterceptor.cpp | 16 ++++++++++++++++ .../QtWebEngineUrlRequestInterceptor.h | 6 ++++++ .../web/qtwebengine/QtWebEngineWebWidget.cpp | 10 ++++++++++ .../web/qtwebengine/QtWebEngineWebWidget.h | 3 +++ 4 files changed, 35 insertions(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp index 11236b3db5..bd34ab7ac5 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.cpp @@ -108,6 +108,16 @@ void QtWebEngineUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo m_blockedElements.append(request.requestUrl().url()); } + NetworkManager::ResourceInformation resource; + resource.url = request.requestUrl(); + resource.resourceType = resourceType; + resource.metaData[NetworkManager::ContentBlockingProfileMetaData] = result.profile; + resource.metaData[NetworkManager::ContentBlockingRuleMetaData] = result.rule; + + m_blockedRequests.append(resource); + + emit requestBlocked(resource); + request.block(true); return; @@ -127,6 +137,7 @@ void QtWebEngineUrlRequestInterceptor::interceptRequest(QWebEngineUrlRequestInfo void QtWebEngineUrlRequestInterceptor::updateOptions(const QUrl &url) { + m_blockedRequests.clear(); m_blockedElements.clear(); if (getOption(SettingsManager::ContentBlocking_EnableContentBlockingOption, url).toBool()) @@ -168,6 +179,11 @@ QStringList QtWebEngineUrlRequestInterceptor::getBlockedElements() const { return m_blockedElements; } + +QVector QtWebEngineUrlRequestInterceptor::getBlockedRequests() const +{ + return m_blockedRequests; +} #else QtWebEngineUrlRequestInterceptor::QtWebEngineUrlRequestInterceptor(QObject *parent) : QWebEngineUrlRequestInterceptor(parent), m_clearTimer(0), diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h index 22f1156145..e9a1c933a5 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineUrlRequestInterceptor.h @@ -21,6 +21,7 @@ #ifndef OTTER_QTWEBENGINEURLREQUESTINTERCEPTOR_H #define OTTER_QTWEBENGINEURLREQUESTINTERCEPTOR_H +#include "../../../../core/NetworkManager.h" #include "../../../../core/NetworkManagerFactory.h" #if QTWEBENGINECORE_VERSION < 0x050D00 @@ -45,6 +46,7 @@ class QtWebEngineUrlRequestInterceptor final : public QWebEngineUrlRequestInterc void interceptRequest(QWebEngineUrlRequestInfo &request) override; QStringList getBlockedElements() const; + QVector getBlockedRequests() const; protected: void updateOptions(const QUrl &url); @@ -54,11 +56,15 @@ class QtWebEngineUrlRequestInterceptor final : public QWebEngineUrlRequestInterc QtWebEngineWebWidget *m_widget; QStringList m_blockedElements; QStringList m_unblockedHosts; + QVector m_blockedRequests; QVector m_contentBlockingProfiles; NetworkManagerFactory::DoNotTrackPolicy m_doNotTrackPolicy; bool m_areImagesEnabled; bool m_canSendReferrer; +signals: + void requestBlocked(const NetworkManager::ResourceInformation &request); + friend class QtWebEngineWebWidget; }; #else diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 1939b93db7..e9a29147cd 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -124,6 +124,9 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac connect(m_page, &QtWebEnginePage::renderProcessTerminated, this, &QtWebEngineWebWidget::notifyRenderProcessTerminated); connect(m_page->action(QWebEnginePage::Redo), &QAction::changed, this, &QtWebEngineWebWidget::notifyRedoActionStateChanged); connect(m_page->action(QWebEnginePage::Undo), &QAction::changed, this, &QtWebEngineWebWidget::notifyUndoActionStateChanged); +#if QTWEBENGINECORE_VERSION >= 0x050D00 + connect(m_requestInterceptor, &QtWebEngineUrlRequestInterceptor::requestBlocked, this, &QtWebEngineWebWidget::requestBlocked); +#endif } void QtWebEngineWebWidget::timerEvent(QTimerEvent *event) @@ -1745,6 +1748,13 @@ QVector QtWebEngineWebWidget::getSearchEngines() const return m_searchEngines; } +#if QTWEBENGINECORE_VERSION >= 0x050D00 +QVector QtWebEngineWebWidget::getBlockedRequests() const +{ + return m_requestInterceptor->getBlockedRequests(); +} +#endif + QMultiMap QtWebEngineWebWidget::getMetaData() const { return m_metaData; diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index 18598d5aca..8af77770d6 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -87,6 +87,9 @@ class QtWebEngineWebWidget final : public WebWidget QVector getFeeds() const override; QVector getLinks() const override; QVector getSearchEngines() const override; +#if QTWEBENGINECORE_VERSION >= 0x050D00 + QVector getBlockedRequests() const override; +#endif QMultiMap getMetaData() const override; LoadingState getLoadingState() const override; int getZoom() const override; From 0d17c3c5323a47617ca72c61060722667551cb24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 13 Feb 2021 23:47:49 +0100 Subject: [PATCH 083/107] [QtWebEngine] Add workaround for history restoration broken by Chromium --- .../backends/web/qtwebengine/QtWebEnginePage.cpp | 11 +++++++++-- .../backends/web/qtwebengine/QtWebEnginePage.h | 2 +- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index 32ba3bfb1d..e7c35a9f2b 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2021 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 - 2017 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify @@ -275,7 +275,14 @@ void QtWebEnginePage::setHistory(const WindowHistoryInformation &history) stream.device()->reset(); stream >> *(this->history()); - this->history()->goToItem(this->history()->itemAt(history.index)); + if (this->history()->count() == history.entries.count() && !Utils::isUrlEmpty(this->history()->currentItem().url())) + { + this->history()->goToItem(this->history()->itemAt(history.index)); + } + else + { + setUrl(history.entries.value(history.index).url); + } } QtWebEngineWebWidget* QtWebEnginePage::getWebWidget() const diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.h b/src/modules/backends/web/qtwebengine/QtWebEnginePage.h index 0f2be44d13..c0b4414b0d 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.h +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2021 Michal Dutkiewicz aka Emdek * Copyright (C) 2016 - 2017 Jan Bajer aka bajasoft * * This program is free software: you can redistribute it and/or modify From dd078877bdb782b1dc8a744104d6b79fbc434f2f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 20 Feb 2021 20:53:02 +0100 Subject: [PATCH 084/107] [QtWebEngine] Wrap dev tools handling using QtWebEngineInspectorWidget class --- .../web/qtwebengine/QtWebEngineWebWidget.cpp | 38 ++++++++++++------- .../web/qtwebengine/QtWebEngineWebWidget.h | 18 ++++++++- 2 files changed, 41 insertions(+), 15 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index e9a29147cd..8f56a237fc 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2021 Michal Dutkiewicz aka Emdek * * 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 @@ -65,10 +65,28 @@ namespace Otter { +#if QTWEBENGINECORE_VERSION >= 0x050B00 +QtWebEngineInspectorWidget::QtWebEngineInspectorWidget(QWebEnginePage *page, QWidget *parent) : QWebEngineView(parent), + m_page(page) +{ + setMinimumHeight(200); +} + +void QtWebEngineInspectorWidget::showEvent(QShowEvent *event) +{ + if (!page()->inspectedPage()) + { + page()->setInspectedPage(m_page); + } + + QWebEngineView::showEvent(event); +} +#endif + QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBackend *backend, ContentsWidget *parent) : WebWidget(parameters, backend, parent), m_webView(nullptr), #if QTWEBENGINECORE_VERSION >= 0x050B00 - m_inspectorView(nullptr), + m_inspectorWidget(nullptr), #endif m_page(new QtWebEnginePage(SessionsManager::calculateOpenHints(parameters).testFlag(SessionsManager::PrivateOpen), this)), #if QTWEBENGINECORE_VERSION >= 0x050D00 @@ -909,7 +927,7 @@ void QtWebEngineWebWidget::triggerAction(int identifier, const QVariantMap ¶ { const bool showInspector(parameters.value(QLatin1String("isChecked"), !getActionState(identifier, parameters).isChecked).toBool()); - if (showInspector && !m_inspectorView) + if (showInspector && !m_inspectorWidget) { getInspector(); } @@ -1518,18 +1536,12 @@ WebWidget* QtWebEngineWebWidget::clone(bool cloneHistory, bool isPrivate, const #if QTWEBENGINECORE_VERSION >= 0x050B00 QWidget* QtWebEngineWebWidget::getInspector() { - if (!m_inspectorView) + if (!m_inspectorWidget) { - m_inspectorView = new QWebEngineView(this); - m_inspectorView->setMinimumHeight(200); - - QTimer::singleShot(100, this, [&]() - { - m_inspectorView->page()->setInspectedPage(m_page); - }); + m_inspectorWidget = new QtWebEngineInspectorWidget(m_page, this); } - return m_inspectorView; + return m_inspectorWidget; } #endif @@ -1881,7 +1893,7 @@ bool QtWebEngineWebWidget::isFullScreen() const #if QTWEBENGINECORE_VERSION >= 0x050B00 bool QtWebEngineWebWidget::isInspecting() const { - return (m_inspectorView && m_inspectorView->isVisible()); + return (m_inspectorWidget && m_inspectorWidget->isVisible()); } #endif diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index 8af77770d6..bc058b529c 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2021 Michal Dutkiewicz aka Emdek * * 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 @@ -34,6 +34,20 @@ class QtWebEnginePage; class QtWebEngineUrlRequestInterceptor; class SourceViewerWebWidget; +#if QTWEBENGINECORE_VERSION >= 0x050B00 +class QtWebEngineInspectorWidget final : public QWebEngineView +{ +public: + explicit QtWebEngineInspectorWidget(QWebEnginePage *page, QWidget *parent); + +protected: + void showEvent(QShowEvent *event) override; + +private: + QWebEnginePage *m_page; +}; +#endif + class QtWebEngineWebWidget final : public WebWidget { Q_OBJECT @@ -170,7 +184,7 @@ protected slots: private: QWebEngineView *m_webView; #if QTWEBENGINECORE_VERSION >= 0x050B00 - QWebEngineView *m_inspectorView; + QWebEngineView *m_inspectorWidget; #endif QtWebEnginePage *m_page; #if QTWEBENGINECORE_VERSION >= 0x050D00 From f62d0da6f46724e554a2c7010b73c7381a21eacb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Thu, 4 Mar 2021 17:30:39 +0100 Subject: [PATCH 085/107] [QtWebEngine] Fix build --- .../backends/web/qtwebengine/QtWebEngineWebBackend.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp index 00be9a8bbb..bdab817b99 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebBackend.cpp @@ -198,11 +198,11 @@ WebWidget* QtWebEngineWebBackend::createWidget(const QVariantMap ¶meters, Co #if QTWEBENGINECORE_VERSION < 0x050D00 m_requestInterceptor = new QtWebEngineUrlRequestInterceptor(this); -#endif + QWebEngineProfile::defaultProfile()->setRequestInterceptor(m_requestInterceptor); +#endif QWebEngineProfile::defaultProfile()->setHttpAcceptLanguage(NetworkManagerFactory::getAcceptLanguage()); QWebEngineProfile::defaultProfile()->setHttpUserAgent(getUserAgent()); - QWebEngineProfile::defaultProfile()->setRequestInterceptor(m_requestInterceptor); QWebEngineSettings::globalSettings()->setAttribute(QWebEngineSettings::FullScreenSupportEnabled, true); QWebEngineSettings::globalSettings()->setAttribute(QWebEngineSettings::FocusOnNavigationEnabled, false); From 45c3447b453def3bf705d87bf00a1000d947de04 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 5 Mar 2021 18:51:52 +0100 Subject: [PATCH 086/107] Do not assume that device is valid --- src/core/AdblockContentFiltersProfile.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/AdblockContentFiltersProfile.cpp b/src/core/AdblockContentFiltersProfile.cpp index 00c1d035a3..bbc033c60c 100644 --- a/src/core/AdblockContentFiltersProfile.cpp +++ b/src/core/AdblockContentFiltersProfile.cpp @@ -596,7 +596,7 @@ void AdblockContentFiltersProfile::handleJobFinished(bool isSuccess) { m_error = DownloadError; - Console::addMessage(QCoreApplication::translate("main", "Failed to update content blocking profile: %1").arg(device->errorString()), Console::OtherCategory, Console::ErrorLevel, getPath()); + Console::addMessage(QCoreApplication::translate("main", "Failed to update content blocking profile: %1").arg(device ? device->errorString() : QLatin1String("-")), Console::OtherCategory, Console::ErrorLevel, getPath()); return; } From b0ba05593d5a640f35ee3cc1082d0bc3ef187929 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 9 May 2021 21:44:50 +0200 Subject: [PATCH 087/107] Handle feeds like ordinary URLs when restoring --- src/core/BookmarksModel.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/core/BookmarksModel.cpp b/src/core/BookmarksModel.cpp index 9c20312e93..59549b7b7e 100644 --- a/src/core/BookmarksModel.cpp +++ b/src/core/BookmarksModel.cpp @@ -838,13 +838,7 @@ void BookmarksModel::removeBookmarkUrl(Bookmark *bookmark) switch (bookmark->getType()) { - case FolderBookmark: - for (int i = 0; i < bookmark->rowCount(); ++i) - { - removeBookmarkUrl(bookmark->getChild(i)); - } - - break; + case FeedBookmark: case UrlBookmark: { const QUrl url(Utils::normalizeUrl(bookmark->data(UrlRole).toUrl())); @@ -860,6 +854,13 @@ void BookmarksModel::removeBookmarkUrl(Bookmark *bookmark) } } + break; + case FolderBookmark: + for (int i = 0; i < bookmark->rowCount(); ++i) + { + removeBookmarkUrl(bookmark->getChild(i)); + } + break; default: break; From 02e5143a50a56d1850923b822b3570ff2299905e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 9 May 2021 21:46:17 +0200 Subject: [PATCH 088/107] Disable drops for feeds --- src/core/BookmarksModel.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/core/BookmarksModel.cpp b/src/core/BookmarksModel.cpp index 59549b7b7e..69955a2caf 100644 --- a/src/core/BookmarksModel.cpp +++ b/src/core/BookmarksModel.cpp @@ -1043,7 +1043,7 @@ BookmarksModel::Bookmark* BookmarksModel::addBookmark(BookmarkType type, const Q parent->insertRow(((index < 0) ? parent->rowCount() : index), bookmark); - if (type == UrlBookmark || type == SeparatorBookmark) + if (type == FeedBookmark || type == UrlBookmark || type == SeparatorBookmark) { bookmark->setDropEnabled(false); } From f78792cecc0853072c30f305154124f75810d5ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 11 May 2021 22:34:52 +0200 Subject: [PATCH 089/107] [QtWebEngine] Add workaround for callbacks being called after destruction of the widget --- .../backends/web/qtwebengine/QtWebEngineWebWidget.cpp | 11 +++++++++++ .../backends/web/qtwebengine/QtWebEngineWebWidget.h | 3 +++ 2 files changed, 14 insertions(+) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 8f56a237fc..9da5d99e9c 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -97,6 +97,7 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac m_documentLoadingProgress(0), m_focusProxyTimer(0), m_updateNavigationActionsTimer(0), + m_isClosing(false), m_isEditing(false), m_isFullScreen(false), m_isTypedIn(false) @@ -147,6 +148,11 @@ QtWebEngineWebWidget::QtWebEngineWebWidget(const QVariantMap ¶meters, WebBac #endif } +QtWebEngineWebWidget::~QtWebEngineWebWidget() +{ + m_isClosing = true; +} + void QtWebEngineWebWidget::timerEvent(QTimerEvent *event) { if (event->timerId() == m_focusProxyTimer) @@ -1249,6 +1255,11 @@ void QtWebEngineWebWidget::notifyNavigationActionsChanged() void QtWebEngineWebWidget::notifyWatchedDataChanged(ChangeWatcher watcher) { + if (m_isClosing) + { + return; + } + if (watcher >= m_watchedChanges.count()) { m_watchedChanges.resize(watcher + 1); diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h index bc058b529c..e0501b0ca4 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.h @@ -76,6 +76,8 @@ class QtWebEngineWebWidget final : public WebWidget } }; + ~QtWebEngineWebWidget(); + void search(const QString &query, const QString &searchEngine) override; void print(QPrinter *printer) override; WebWidget* clone(bool cloneHistory = true, bool isPrivate = false, const QStringList &excludedOptions = {}) const override; @@ -204,6 +206,7 @@ protected slots: int m_documentLoadingProgress; int m_focusProxyTimer; int m_updateNavigationActionsTimer; + bool m_isClosing; bool m_isEditing; bool m_isFullScreen; bool m_isTypedIn; From c97ba074dd06f54ca4e9cbc69a21719062d65fff Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 31 May 2021 20:32:27 +0200 Subject: [PATCH 090/107] Update IRC network name --- CONTRIBUTING.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ed3baa93cd..c1b3dcf776 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -20,8 +20,8 @@ If you want to help with the development of Otter Browser, please observe the fo ## Submitting patches -* Make sure that you have a [GitHub account](https://github.com/signup/free). -* Ensure that nobody is currently working on the selected task (check if someone is assigned to the ticket or ask on *#otter-browser* at freenode). +* Make sure that you have a [GitHub account](https://github.com/join). +* Ensure that nobody is currently working on the selected task (check if someone is assigned to the ticket or ask on *#otter-browser* at libera.chat). * Fork the repository on GitHub. * Create a branch just for that task. * Submit your changes as a pull request so they can be reviewed. From 77f8c5a463993319f953f92adac71fba0c0c7f3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 4 Oct 2021 12:28:40 +0200 Subject: [PATCH 091/107] Fix saving for multiple instances of the same action with different parameters --- src/ui/preferences/KeyboardProfileDialog.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/ui/preferences/KeyboardProfileDialog.cpp b/src/ui/preferences/KeyboardProfileDialog.cpp index cc506d1c63..bff5f2f7d2 100644 --- a/src/ui/preferences/KeyboardProfileDialog.cpp +++ b/src/ui/preferences/KeyboardProfileDialog.cpp @@ -337,10 +337,14 @@ KeyboardProfile KeyboardProfileDialog::getProfile() const } } } + else + { + actions[action] = {}; + } if (!hasMatch) { - actions[action] = {{parameters, {shortcut}}}; + actions[action].append({parameters, {shortcut}}); } } } From 2227824f7a9b9c4ab2ad77c0fad27ba78d64264d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 4 Oct 2021 12:30:59 +0200 Subject: [PATCH 092/107] Minor cleanup --- resources/keyboard/default.json | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/resources/keyboard/default.json b/resources/keyboard/default.json index fa94d23ff2..7a0f86c424 100644 --- a/resources/keyboard/default.json +++ b/resources/keyboard/default.json @@ -135,7 +135,7 @@ { "action": "Delete", "shortcuts": [ - "Delete" + "Del" ] }, { @@ -202,7 +202,6 @@ "Ctrl+Return" ] }, - { "action": "GoBack", "shortcuts": [ @@ -436,8 +435,7 @@ }, { "action": "ShowToolBar", - "parameters": - { + "parameters": { "toolBar": "MenuBar" }, "shortcuts": [ From 8a0cb46f3f27d53279690204e793165a8e112f0b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Mon, 4 Oct 2021 12:45:03 +0200 Subject: [PATCH 093/107] Drop dead shortcut --- resources/keyboard/default.json | 9 --------- 1 file changed, 9 deletions(-) diff --git a/resources/keyboard/default.json b/resources/keyboard/default.json index 7a0f86c424..f560262b67 100644 --- a/resources/keyboard/default.json +++ b/resources/keyboard/default.json @@ -400,15 +400,6 @@ "Ctrl+9" ] }, - { - "action": "OpenBookmark", - "parameters": { - "startPageTile": 10 - }, - "shortcuts": [ - "Ctrl+0" - ] - }, { "action": "QuickBookmarkAccess", "shortcuts": [ From 05c3139f80346d02d76c16dc3f5ace179d41d7b6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sun, 31 Oct 2021 20:17:32 +0100 Subject: [PATCH 094/107] [QtWebEngine] Adjust script to upstream changes --- .../web/qtwebengine/QtWebEnginePage.cpp | 2 +- .../web/qtwebengine/resources/hitTest.js | 32 +++++++++---------- 2 files changed, 16 insertions(+), 18 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp index e7c35a9f2b..3f16e1c758 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEnginePage.cpp @@ -385,7 +385,7 @@ QVariant QtWebEnginePage::runScriptSource(const QString &script) QVariant result; QEventLoop eventLoop; - runJavaScript(script, [&](const QVariant &runResult) + runJavaScript(script, QWebEngineScript::UserWorld, [&](const QVariant &runResult) { result = runResult; diff --git a/src/modules/backends/web/qtwebengine/resources/hitTest.js b/src/modules/backends/web/qtwebengine/resources/hitTest.js index e787958dfc..0fadbcd453 100644 --- a/src/modules/backends/web/qtwebengine/resources/hitTest.js +++ b/src/modules/backends/web/qtwebengine/resources/hitTest.js @@ -1,19 +1,3 @@ -var result = { - alternateText: '', - flags: 0, - formUrl: '', - frameUrl: '', - geometry: { x: -1, y: -1, w: 0, h: 0 }, - imageUrl: '', - linkUrl: '', - longDescription: '', - mediaUrl: '', - offset: [0, 0], - position: [%1, %2], - tagName: '', - title: '' -}; - function normalizeUrl(url) { var element = document.createElement('a'); @@ -154,4 +138,18 @@ function createHitTest(window, element, result) return result; } -createHitTest(window, ((%1 >= 0) ? document.elementFromPoint(%1, %2) : document.activeElement), result); +createHitTest(window, ((%1 >= 0) ? document.elementFromPoint(%1, %2) : document.activeElement), { + alternateText: '', + flags: 0, + formUrl: '', + frameUrl: '', + geometry: { x: -1, y: -1, w: 0, h: 0 }, + imageUrl: '', + linkUrl: '', + longDescription: '', + mediaUrl: '', + offset: [0, 0], + position: [%1, %2], + tagName: '', + title: '' +}); From bec3ddd283f957508889f43e8efba0497653de55 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 10 Nov 2021 22:42:20 +0100 Subject: [PATCH 095/107] [QtWebEngine] Adjust to upstream changes --- .../web/qtwebengine/resources/getLinks.js | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/getLinks.js b/src/modules/backends/web/qtwebengine/resources/getLinks.js index 3dff27219a..579083dd8e 100644 --- a/src/modules/backends/web/qtwebengine/resources/getLinks.js +++ b/src/modules/backends/web/qtwebengine/resources/getLinks.js @@ -1,38 +1,43 @@ -var elements = document.querySelectorAll('%1'); -var urls = []; -var links = []; - -for (var i = 0; i < elements.length; ++i) +function getLinks(selector) { - if (urls.includes(elements[i].href)) + let elements = document.querySelectorAll(selector); + let urls = []; + let links = []; + + for (let i = 0; i < elements.length; ++i) { - continue; - } + if (urls.includes(elements[i].href)) + { + continue; + } - urls.push(elements[i].href); + urls.push(elements[i].href); - var link = { - title: elements[i].title.trim(), - mimeType: elements[i].type, - url: elements[i].href - }; + let link = { + title: elements[i].title.trim(), + mimeType: elements[i].type, + url: elements[i].href + }; - if (link.title == '') - { - link.title = elements[i].textContent.trim(); - } - - if (link.title == '') - { - var imageElement = elements[i].querySelector('img[alt]:not([alt=\'\'])'); + if (link.title == '') + { + link.title = elements[i].textContent.trim(); + } - if (imageElement) + if (link.title == '') { - link.title = imageElement.alt; + let imageElement = elements[i].querySelector('img[alt]:not([alt=\'\'])'); + + if (imageElement) + { + link.title = imageElement.alt; + } } + + links.push(link); } - links.push(link); + return links; } -links; +getLinks('%1'); From 090b8901b72e035a9423615ad274bdb58ee3b8fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Thu, 11 Nov 2021 22:14:20 +0100 Subject: [PATCH 096/107] [QtWebEngine] Adjust to upstream changes --- .../web/qtwebengine/resources/createSearch.js | 147 ++++++++++-------- 1 file changed, 78 insertions(+), 69 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/createSearch.js b/src/modules/backends/web/qtwebengine/resources/createSearch.js index acdc5a14cd..f7d73ca5a5 100644 --- a/src/modules/backends/web/qtwebengine/resources/createSearch.js +++ b/src/modules/backends/web/qtwebengine/resources/createSearch.js @@ -1,105 +1,114 @@ -var element = ((%1 >= 0) ? document.elementFromPoint((%1 + window.scrollX), (%2 + window.scrollX)) : document.activeElement); +function createUrl(url) +{ + let element = document.createElement('a'); + element.href = url; + + return element.href; +} -if (element) +function createSearch() { - function createUrl(url) - { - var element = document.createElement('a'); - element.href = url; + let element = ((%1 >= 0) ? document.elementFromPoint((%1 + window.scrollX), (%2 + window.scrollX)) : document.activeElement); - return element.href; + if (!element) + { + return null; } - var formElement = element.closest('form'); + let formElement = element.closest('form'); - if (formElement) + if (!formElement) { - var result = { - url: createUrl(formElement.action), - method: formElement.method, - enctype: formElement.enctype, - query: '' - } - var tagName = element.tagName.toLowerCase(); - var searchTermsElement = null; - var inputElements = Array.from(formElement.querySelectorAll('button:not([disabled])[name][type="submit"], input:not([disabled])[name], select:not([disabled])[name], textarea:not([disabled])[name]')); - var query = []; + return null; + } - if (tagName !== 'select') - { - var type = (element.type ? element.type.toLowerCase() : ''); + let result = { + url: createUrl(formElement.action), + method: formElement.method, + enctype: formElement.enctype, + query: '' + } + let tagName = element.tagName.toLowerCase(); + let searchTermsElement = null; + let inputElements = Array.from(formElement.querySelectorAll('button:not([disabled])[name][type="submit"], input:not([disabled])[name], select:not([disabled])[name], textarea:not([disabled])[name]')); + let query = []; - if (inputElements.indexOf(element) < 0 && (type == 'image' || type == 'submit')) - { - inputElements.push(element); - } + if (tagName !== 'select') + { + let type = (element.type ? element.type.toLowerCase() : ''); - if (tagName == 'textarea' || type == 'email' || type == 'password' || type == 'search' || type == 'tel' || type == 'text' || type == 'url') - { - searchTermsElement = element; - } + if (inputElements.indexOf(element) < 0 && (type == 'image' || type == 'submit')) + { + inputElements.push(element); } - if (!searchTermsElement) + if (tagName == 'textarea' || type == 'email' || type == 'password' || type == 'search' || type == 'tel' || type == 'text' || type == 'url') { - searchTermsElement = formElement.querySelector('input:not([disabled])[name][type="search"]'); + searchTermsElement = element; } + } + + if (!searchTermsElement) + { + searchTermsElement = formElement.querySelector('input:not([disabled])[name][type="search"]'); + } - for (var i = 0; i < inputElements.length; ++i) + for (let i = 0; i < inputElements.length; ++i) + { + let tagName = inputElements[i].tagName.toLowerCase(); + + if (tagName !== 'select') { - var tagName = inputElements[i].tagName.toLowerCase(); + let type = (inputElements[i].type ? inputElements[i].type.toLowerCase() : ''); + let isSubmit = (type == 'image' || type == 'submit'); - if (tagName !== 'select') + if ((isSubmit && inputElements[i] != element) || ((type == 'checkbox' || type == 'radio') && !inputElements[i].checked)) { - var type = (inputElements[i].type ? inputElements[i].type.toLowerCase() : ''); - var isSubmit = (type == 'image' || type == 'submit'); + continue; + } - if ((isSubmit && inputElements[i] != element) || ((type == 'checkbox' || type == 'radio') && !inputElements[i].checked)) + if (isSubmit && inputElements[i] == element) + { + if (inputElements[i].hasAttribute('formaction')) { - continue; + result.url = createUrl(inputElements[i].getAttribute('formaction')); } - if (isSubmit && inputElements[i] == element) + if (inputElements[i].hasAttribute('formenctype')) { - if (inputElements[i].hasAttribute('formaction')) - { - result.url = createUrl(inputElements[i].getAttribute('formaction')); - } - - if (inputElements[i].hasAttribute('formenctype')) - { - result.enctype = inputElements[i].getAttribute('formenctype'); - } - - if (inputElements[i].hasAttribute('formmethod')) - { - result.method = inputElements[i].getAttribute('formmethod'); - } + result.enctype = inputElements[i].getAttribute('formenctype'); } - if (!isSubmit && !searchTermsElement && type !== 'hidden') + if (inputElements[i].hasAttribute('formmethod')) { - searchTermsElement = inputElements[i]; + result.method = inputElements[i].getAttribute('formmethod'); } + } - if (inputElements[i].name !== '') - { - query.push(inputElements[i].name + '=' + ((inputElements[i] == searchTermsElement) ? '{searchTerms}' : encodeURIComponent((tagName == 'button') ? inputElements[i].innerHTML : inputElements[i].value))); - } + if (!isSubmit && !searchTermsElement && type !== 'hidden') + { + searchTermsElement = inputElements[i]; } - else if (inputElements[i].name !== '') + + if (inputElements[i].name !== '') { - var optionElements = inputElements[i].querySelectorAll('option:checked'); + query.push(inputElements[i].name + '=' + ((inputElements[i] == searchTermsElement) ? '{searchTerms}' : encodeURIComponent((tagName == 'button') ? inputElements[i].innerHTML : inputElements[i].value))); + } + } + else if (inputElements[i].name !== '') + { + let optionElements = inputElements[i].querySelectorAll('option:checked'); - for (var j = 0; j < optionElements.length; ++j) - { - query.push(inputElements[i].name + '=' + encodeURIComponent(optionElements[j].value)); - } + for (let j = 0; j < optionElements.length; ++j) + { + query.push(inputElements[i].name + '=' + encodeURIComponent(optionElements[j].value)); } } + } - result.query = query.join('&'); + result.query = query.join('&'); - result; - } + return result; } + +createSearch(); From e21b368fd1c350584638479ed1b3b0eb6e4fbae2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Nov 2021 20:59:37 +0100 Subject: [PATCH 097/107] [QtWebEngine] Adjust to upstream changes --- .../resources/getActiveStyleSheet.js | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/getActiveStyleSheet.js b/src/modules/backends/web/qtwebengine/resources/getActiveStyleSheet.js index 9d542a4602..c7d489c8b3 100644 --- a/src/modules/backends/web/qtwebengine/resources/getActiveStyleSheet.js +++ b/src/modules/backends/web/qtwebengine/resources/getActiveStyleSheet.js @@ -1,24 +1,29 @@ -var title = ''; -var isDefault = true; - -for (var i = 0; i < document.styleSheets.length; ++i) +function getActiveStyleSheet() { - if (document.styleSheets[i].ownerNode.rel.indexOf('alt') >= 0) + let title = ''; + let isDefault = true; + + for (let i = 0; i < document.styleSheets.length; ++i) { - isDefault = false; + if (document.styleSheets[i].ownerNode.rel.indexOf('alt') >= 0) + { + isDefault = false; - break; + break; + } } -} -if (!isDefault) -{ - var element = document.querySelector('link[rel=\'alternate stylesheet\']:not([disabled])'); - - if (element) + if (!isDefault) { - title = element.title; + let element = document.querySelector('link[rel=\'alternate stylesheet\']:not([disabled])'); + + if (element) + { + title = element.title; + } } + + return title; } -title; +getActiveStyleSheet(); From f56e2b2041c9eda500840d757646c847396517a5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Nov 2021 21:00:26 +0100 Subject: [PATCH 098/107] [QtWebEngine] Adjust to upstream changes --- .../qtwebengine/resources/getStyleSheets.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/getStyleSheets.js b/src/modules/backends/web/qtwebengine/resources/getStyleSheets.js index 8fed9fa952..a4270e3ffa 100644 --- a/src/modules/backends/web/qtwebengine/resources/getStyleSheets.js +++ b/src/modules/backends/web/qtwebengine/resources/getStyleSheets.js @@ -1,13 +1,18 @@ -var elements = document.querySelectorAll('link[rel=\'alternate stylesheet\']'); -var titles = []; - -for (var i = 0; i < elements.length; ++i) +function getStyleSheets() { - if (elements[i].title !== '' && !titles.includes(elements[i].title)) + let elements = document.querySelectorAll('link[rel=\'alternate stylesheet\']'); + let titles = []; + + for (let i = 0; i < elements.length; ++i) { - titles.push(elements[i].title); + if (elements[i].title !== '' && !titles.includes(elements[i].title)) + { + titles.push(elements[i].title); + } + } + return titles; } -titles; +getStyleSheets(); From c22649cfdf1dfe2b6715fa254f6e4f2f35260738 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Nov 2021 21:02:04 +0100 Subject: [PATCH 099/107] [QtWebEngine] Adjust to upstream changes --- .../resources/hideBlockedRequests.js | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hideBlockedRequests.js b/src/modules/backends/web/qtwebengine/resources/hideBlockedRequests.js index 93d3cecedc..67ce5a2827 100644 --- a/src/modules/backends/web/qtwebengine/resources/hideBlockedRequests.js +++ b/src/modules/backends/web/qtwebengine/resources/hideBlockedRequests.js @@ -1,13 +1,18 @@ -var requests = [%1]; -var elements = Array.from(document.querySelectorAll('[src]')); - -for (var i = 0; i < elements.length; ++i) +function hideBlockedRequests() { - for (var j = 0; j < requests.length; ++j) + let requests = [%1]; + let elements = Array.from(document.querySelectorAll('[src]')); + + for (let i = 0; i < elements.length; ++i) { - if (elements[i].getAttribute('src').indexOf(requests[j]) > -1) + for (let j = 0; j < requests.length; ++j) { - elements[i].style.cssText = 'display:none !important'; + if (elements[i].getAttribute('src').indexOf(requests[j]) > -1) + { + elements[i].style.cssText = 'display:none !important'; + } } } } + +hideBlockedRequests(); From a78c8f514382f56a24d1f8df39c93f1bf4014554 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Fri, 12 Nov 2021 21:05:04 +0100 Subject: [PATCH 100/107] [QtWebEngine] Adjust to upstream changes --- .../web/qtwebengine/resources/hideElements.js | 61 ++++++++++--------- 1 file changed, 32 insertions(+), 29 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/resources/hideElements.js b/src/modules/backends/web/qtwebengine/resources/hideElements.js index 8227f57eeb..61d58576d2 100644 --- a/src/modules/backends/web/qtwebengine/resources/hideElements.js +++ b/src/modules/backends/web/qtwebengine/resources/hideElements.js @@ -1,41 +1,44 @@ -var whitelist = [%1]; -var blacklist = [%2]; -var ignoredElements = []; - -for (var i = 0; i < whitelist.length; ++i) +function hideElements(allowedSelectors, disallowedSelectors) { - try - { - ignoredElements = ignoredElements.concat(Array.from(document.querySelectorAll(whitelist[i]))); - } - catch (e) + let ignoredElements = []; + + for (let i = 0; i < allowedSelectors.length; ++i) { - console.error("Invalid selector: " + whitelist[i]); + try + { + ignoredElements = ignoredElements.concat(Array.from(document.querySelectorAll(allowedSelectors[i]))); + } + catch (error) + { + console.error('Invalid selector: ' + allowedSelectors[i]); - continue; + continue; + } } -} - -for (var i = 0; i < blacklist.length; ++i) -{ - var elements = []; - try + for (let i = 0; i < disallowedSelectors.length; ++i) { - elements = document.querySelectorAll(blacklist[i]); - } - catch (e) - { - console.error("Invalid selector: " + blacklist[i]); + let elements = []; - continue; - } + try + { + elements = document.querySelectorAll(disallowedSelectors[i]); + } + catch (error) + { + console.error('Invalid selector: ' + disallowedSelectors[i]); - for (var j = 0; j < elements.length; ++j) - { - if (ignoredElements.indexOf(elements[j]) < 0) + continue; + } + + for (let j = 0; j < elements.length; ++j) { - elements[j].style.cssText = "display:none !important"; + if (ignoredElements.indexOf(elements[j]) < 0) + { + elements[j].style.cssText = 'display:none !important'; + } } } } + +hideElements([%1], [%2]); From 05eb3c605dff00deed13a0165155559c11f9a17a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Sat, 13 Nov 2021 21:16:16 +0100 Subject: [PATCH 101/107] [QtWebEngine] Add slight delay to fix list of links returned after restoring session --- .../web/qtwebengine/QtWebEngineWebWidget.cpp | 23 +++++++++++-------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp index 9da5d99e9c..427bbff475 100644 --- a/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp +++ b/src/modules/backends/web/qtwebengine/QtWebEngineWebWidget.cpp @@ -1020,22 +1020,25 @@ void QtWebEngineWebWidget::handleLoadFinished() notifyNavigationActionsChanged(); startReloadTimer(); - m_page->runJavaScript(getFastForwardScript(false), [&](const QVariant &result) + QTimer::singleShot(100, this, [&]() { - m_canGoForwardValue = (result.toBool() ? TrueValue : FalseValue); + m_page->runJavaScript(getFastForwardScript(false), [&](const QVariant &result) + { + m_canGoForwardValue = (result.toBool() ? TrueValue : FalseValue); - emit arbitraryActionsStateChanged({ActionsManager::FastForwardAction}); - }); + emit arbitraryActionsStateChanged({ActionsManager::FastForwardAction}); + }); - const QVector watchers({FeedsWatcher, LinksWatcher, MetaDataWatcher, SearchEnginesWatcher, StylesheetsWatcher}); + const QVector watchers({FeedsWatcher, LinksWatcher, MetaDataWatcher, SearchEnginesWatcher, StylesheetsWatcher}); - for (int i = 0; i < watchers.count(); ++i) - { - if (isWatchingChanges(watchers.at(i))) + for (int i = 0; i < watchers.count(); ++i) { - updateWatchedData(watchers.at(i)); + if (isWatchingChanges(watchers.at(i))) + { + updateWatchedData(watchers.at(i)); + } } - } + }); emit contentStateChanged(getContentState()); emit loadingStateChanged(FinishedLoadingState); From d4db0058afa3aca7167c7fdd97586b9b475c38c8 Mon Sep 17 00:00:00 2001 From: Ryan Date: Tue, 18 Jan 2022 16:27:11 -0500 Subject: [PATCH 102/107] Preserve RSS article read status across updates (#1698) Preserve entry read status across update --- src/core/FeedsManager.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/FeedsManager.cpp b/src/core/FeedsManager.cpp index 411ed10c34..7bc95d2403 100644 --- a/src/core/FeedsManager.cpp +++ b/src/core/FeedsManager.cpp @@ -259,6 +259,7 @@ void Feed::update() ++amount; } + entry.lastReadTime = existingEntry.lastReadTime; entry.publicationTime = normalizeTime(entry.publicationTime); if (entry.updateTime.isValid()) From 328027f6a8829c6d85aa7dc51cfaf4d4647b0a5d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 22 Feb 2022 12:20:47 +0100 Subject: [PATCH 103/107] Update copyright year --- CMakeLists.txt | 2 +- otter-browser.rc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b686d3834e..8573fc25bd 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -495,7 +495,7 @@ elseif (APPLE) set(MACOSX_BUNDLE_SHORT_VERSION_STRING ${MAJOR_VERSION}.${MINOR_VERSION}) set(MACOSX_BUNDLE_ICON_FILE otter-browser.icns) set(MACOSX_BUNDLE_GUI_IDENTIFIER "org.otter-browser.otter-browser") - set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2020 Otter Browser Team. All rights reserved.") + set(MACOSX_BUNDLE_COPYRIGHT "Copyright (C) 2013-2022 Otter Browser Team. All rights reserved.") set(otter_src ${otter_src} src/modules/platforms/mac/MacPlatformIntegration.mm diff --git a/otter-browser.rc b/otter-browser.rc index bf390fa3a2..116d72164e 100644 --- a/otter-browser.rc +++ b/otter-browser.rc @@ -15,7 +15,7 @@ BEGIN VALUE "FileDescription", "Otter Browser" VALUE "FileVersion", "1.0.02" VALUE "InternalName", "otter-browser" - VALUE "LegalCopyright", "Copyright (C) 2013-2020 Otter Browser Team" + VALUE "LegalCopyright", "Copyright (C) 2013-2022 Otter Browser Team" VALUE "OriginalFilename", "otter-browser.exe" VALUE "ProductName", "Otter Browser" VALUE "ProductVersion", "1.0.02" From 0bc15e21a9a81a012339b3a6b989f9c25b8f0a5b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 22 Feb 2022 12:45:57 +0100 Subject: [PATCH 104/107] Update translations from Transifex --- resources/translations/otter-browser_cs.qm | Bin 210282 -> 210304 bytes resources/translations/otter-browser_cs.ts | 2 +- resources/translations/otter-browser_el.qm | Bin 219031 -> 222019 bytes resources/translations/otter-browser_el.ts | 60 +- resources/translations/otter-browser_es_MX.qm | Bin 212657 -> 217514 bytes resources/translations/otter-browser_es_MX.ts | 82 +- resources/translations/otter-browser_hi_IN.qm | Bin 84585 -> 202954 bytes resources/translations/otter-browser_hi_IN.ts | 2131 ++-- resources/translations/otter-browser_hr.qm | Bin 87583 -> 100710 bytes resources/translations/otter-browser_hr.ts | 211 +- resources/translations/otter-browser_nl.qm | Bin 214384 -> 213492 bytes resources/translations/otter-browser_nl.ts | 1100 +- resources/translations/otter-browser_ru.qm | Bin 212411 -> 212399 bytes resources/translations/otter-browser_ru.ts | 2 +- resources/translations/otter-browser_sq.qm | Bin 0 -> 209698 bytes resources/translations/otter-browser_sq.ts | 10574 ++++++++++++++++ resources/translations/otter-browser_tr.qm | Bin 55428 -> 205501 bytes resources/translations/otter-browser_tr.ts | 3141 ++--- 18 files changed, 13967 insertions(+), 3336 deletions(-) create mode 100644 resources/translations/otter-browser_sq.qm create mode 100644 resources/translations/otter-browser_sq.ts diff --git a/resources/translations/otter-browser_cs.qm b/resources/translations/otter-browser_cs.qm index afa435c1988bab2075b7188149ad37031c609bd3..3dd08362018035d40241819c09a9adc9b8c0e9fe 100644 GIT binary patch delta 1502 zcmX9;drZ?;6h7y+{lSkGN-fwG#PX`;ArH|~KwUQ&5;1_AkSdM0x;v>j3Lv$$k2r4d2MKPHHQ5KWk=|A_oC->akbME(@Z+KX- z<+0*Oq(t=+WJmOXmsY$+cKjh3B_^>DWIbKL+DoZS;=}<8lv+eL%-<&g_5?j;QUl^V z+AGtbg<51*u>}@I=^3MFZYD*nKauizdt`mzc$~ zM#LJe6Jzq#0JdE?eYXwp<4-Vdb26~g)l}U8n9#`+D7Yvoyove zYu^J{bQ$gY^}sw{K_2JD_TAjHb*kuVh)CrjD zX;CXtJSc7MKMU-S6zUGps4hv5J^sImf2GH(dFuUs&se}XVla(NHmKTUGkb>tKFyWQ zdOHJHTQuo4X4M>7wof?V)9+>3i; zJHFJdHS>S)4Km<}Ip#4#hIFkTJ7YmZ!oq)yL1X=4>{GDnV2};0q6cU`E zsuZH!oYBL-2#K360P9#qg~2-UgphXiPtIH)IfBi&hB|{2qQ?bmJZE#sZNa+m8fUpv zSoY!)u*`a)s5S!F36D^GaXzrVqZBg5j3rb!B?~W+Yf6vmh0s2<2B7tjaC#sf*wJ!w zgk<3Y>JF*Fl~gb_508;+>SlJ$i}bq9Y*0xqodJ8PTbG6FJb|Gm#A3<`dw?-y3^!{F zyuSz@2P{9}U2)d~OsVzWs%rr@>ZIE6R@N=0%m|%W;@xQBRUP*udqju$++H&tN@%}vpX)BGB1 zHvsGXoNOspZING(UJD-@v}CQdVRQ0sH+!8slfN6gRsnOryMT>o7o7 zpt9?&em-atWmk$0Sp81r#ke+LSBI#3_IjLIoj#`~eGayz&tVS_VoKfG38t<~n_$Yx a5DMk64wgYN*kCn`@VFFgZ8;BFNX~y8#`Qq} delta 1491 zcmX9;drZ?;6h7yc{>G2Clv1!Oh?Pn$prweGhcX*cY&0SoF~kL|gLDpOWlY4y7dqB3 z+;Ev^#K#65iwzlysO6zk#K(~7tcduC8YbwN3d0NoLASW=M*lhAy}9S+e&>GQIXj2s zgM;#8Q4-Z7kRCGtUMYBu?9>giNRmVwNV__LwdK+#i5oj9)Gu2+0E-SufDH|KH~AS6 z=Z^+pCq_si)8Xf2l4;OQ=`uU+C66pqoQNG;)xdgpd0)u{WDj1FRAJSo zv#8a#04MjcsG}vE^&p$Ja1XGjHz-%pjvFZ=@D84*vB0nJV{$3o_&phd%(#$N2ANd~ zN!h_#fRIll75B4%_3xpoAY-ILQae}#?0T5Q)5w6)sHFZf-~aNjo$QEZofm$wVpu>%yU zZDGCR|vhlJVPH-LH1kt^JatEeN~9Mdn@FChcH7BV^F+V0|yiqcdU~`E)kS@rF)LLd>9y$j2B$7QIz# z_1_Xc4p>s}zx9C^m{RM%OVlh?wR2>FWs9^)U^B=hkYsFdOe$_T!RUVBQtXM>rsqGj;V^hr-=`|QL5%1Hc z=uA9K9np2Tgq$%NTt}`LH#ean){3d*h|N~b4H#Bl0x)?3o-duiRj(mmY?mrUCXS~7 z>nnSM{h8D-&7E>UmQdNk2`-n-Oh#ZMf60=@n}9VsWb|O->2XHPBPWjm-l{n6;v>{x&PF*&QtT?HGEmh6EW7j# zUc5lnDLU+?wvwwklRbDo=0_*M~-<)EMC`(H%PfNwtv{d%wuu>1pa1}V97z$AV S1$5jULOQqDy8a0Z$@m|%758)i diff --git a/resources/translations/otter-browser_cs.ts b/resources/translations/otter-browser_cs.ts index c5c730b66e..d59ccce4c7 100644 --- a/resources/translations/otter-browser_cs.ts +++ b/resources/translations/otter-browser_cs.ts @@ -8923,7 +8923,7 @@ Klepněte na tlačítko Nainstalovat pro opětovné spuštění prohlížeče a Rewind History - Přetočit historii + Zobrazit historii vracení se diff --git a/resources/translations/otter-browser_el.qm b/resources/translations/otter-browser_el.qm index 4c96ded53e6264e8757efdd491107cc25e2feafe..45a19078d23f408bc20cac7975a659a3aaacf2e2 100644 GIT binary patch delta 17086 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 W2wxT5pc%(Uf8|Nn%uD5Tlm36xIod=3 diff --git a/resources/translations/otter-browser_el.ts b/resources/translations/otter-browser_el.ts index 1c615613a2..b12a5a9613 100644 --- a/resources/translations/otter-browser_el.ts +++ b/resources/translations/otter-browser_el.ts @@ -102,7 +102,7 @@ To add language, please choose one from list or type its code. - Για να προσθέσετε μία γλώσσα, επιλέξτε τη από την λίστα η πληκτρολογήστε τον κωδικό της. + Για να προσθέσετε μία γλώσσα, επιλέξτε τη από την λίστα ή πληκτρολογήστε τον κωδικό της. @@ -190,7 +190,7 @@ (Unknown) - + (Άγνωστο) @@ -530,7 +530,7 @@ Are you sure that you want to restore this session anyway? Failed to parse feed file: %1 - + Αποτυχία ανάλυσης του αρχείου ροής: %1 @@ -1814,12 +1814,12 @@ Do you want to save them? Unknown - + Άγνωστο Title - + Τίτλος @@ -1829,37 +1829,37 @@ Do you want to save them? Last Update - + Τελευταία Ενημέρωση Advertisements - + Διαφημίσεις Annoyance - + Ενόχληση Privacy - + Ιδιωτικότητα Social - + Κοινωνικό Regional - + Τοπικό Other - + Άλλο @@ -2173,12 +2173,12 @@ Do you want to save them? Failed to parse feed: invalid feed type - + Αποτυχία στην ανάλυση της ροής: μη έγκυρος τύπος ροής Failed to download feed - + Αποτυχία στο κατέβασμα της ροής @@ -2186,17 +2186,17 @@ Do you want to save them? Edit Feed - + Επεξεργασία Ροής Folder: - + Φάκελος: New… - + Νέο... @@ -2231,7 +2231,7 @@ Do you want to save them? Add Feed - + Προσθήκη Ροής @@ -2249,12 +2249,12 @@ Do you want to save them? Folder Name - + Όνομα Φακέλου Select name of new folder: - + Επιλέξτε όνομα για το νέο φάκελο @@ -2301,17 +2301,17 @@ Do you want to save them? Question - + Ερώτημα You already subscribed this feed. - + Είστε ήδη συνδρομητής σε αυτήν την ροή Do you want to continue? - + Θέλετε να συνεχίσετε; @@ -2527,17 +2527,17 @@ Do you want to save them? Error - + Σφάλμα Profile with this address already exists. - + Υπάρχει ήδη προφίλ με αυτήν τη διεύθυνση. Question - + Ερώτηση @@ -3668,7 +3668,7 @@ Do you want to continue? OPML files (*.opml) - + Αρχεία OPML (*.opml) @@ -3681,7 +3681,7 @@ Do you want to continue? New… - + Νέο... @@ -5771,7 +5771,7 @@ Do you want to continue? Failed to parse feed file: %1 - + Αποτυχία στην ανάλυση του αρχείου: %1 @@ -9622,7 +9622,7 @@ Click Install button to restart browser and install the update or close this dia Import OPML Feeds… - + Εισαγωγή ροών OPML... diff --git a/resources/translations/otter-browser_es_MX.qm b/resources/translations/otter-browser_es_MX.qm index 246411226019778b164e67c5033176378e5e0c1e..543f31ee5c27378bf4267e9a352c6990d027afaa 100644 GIT binary patch delta 17789 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 (Unknown) - + (Desconocido) @@ -532,12 +532,12 @@ Are you sure that you want to restore this session anyway? Failed to parse feed file: %1 - + Error al analizar el archivo de la fuente: %1 Failed to parse feed: no valid entries found - + Error al analizar la fuente: no se han encontrado entradas válidas @@ -1806,62 +1806,62 @@ Do you want to save them? Custom Rules - + Normas personalizadas Failed to remove content blocking profile file: %1 - + Error al eliminar el archivo de perfil de bloqueo de contenido: %1 Unknown - + Desconocido Title - + Título Update Interval - + Intérvalo de actualización Last Update - + Última Actualización Advertisements - + Anuncios Annoyance - + Molestia Privacy - + Privacidad Social - + Social Regional - + Regional Other - + Otro @@ -2175,12 +2175,12 @@ Do you want to save them? Failed to parse feed: invalid feed type - + Error al analizar la fuente: tipo de fuente no válido Failed to download feed - + Error al descargar la fuente @@ -2188,17 +2188,17 @@ Do you want to save them? Edit Feed - + Editar Fuente Folder: - + Carpeta: New… - + Nuevo… @@ -2233,7 +2233,7 @@ Do you want to save them? Add Feed - + Agregar Fuente @@ -2251,12 +2251,12 @@ Do you want to save them? Folder Name - + Nombre de la Carpeta Select name of new folder: - + Seleccione el nombre de la nueva carpeta: @@ -2303,17 +2303,17 @@ Do you want to save them? Question - + Pregunta You already subscribed this feed. - + Ya se encontraba suscrito a esta fuente. Do you want to continue? - + ¿Quiere continuar? @@ -2529,22 +2529,22 @@ Do you want to save them? Error - + Error Profile with this address already exists. - + Ya existe un perfil con esta dirección. Question - + Pregunta Do you want to add this content blocking profile? - + ¿Quiere añadir este perfil de bloqueo de contenido? @@ -3304,12 +3304,12 @@ Do you want to migrate it? Move Up - + Subir Move Down - + Bajar @@ -3660,17 +3660,17 @@ Do you want to continue? OPML Feeds - + Fuentes OPML Imports feeds from OPML file - + Importar fuentes desde un archivo OPML OPML files (*.opml) - + Archivos OPML (*.opml) @@ -3678,17 +3678,17 @@ Do you want to continue? Import into folder: - + Importar en la carpeta: New… - + Nuevo… Allow to duplicate already existing feeds - + Permitir duplicar las fuentes ya existentes @@ -5773,12 +5773,12 @@ Do you want to continue? Failed to parse feed file: %1 - + Error al analizar el archivo de la fuente: %1 Failed to parse feed: no valid entries found - + Error al analizar la fuente: no se han encontrado entradas válidas @@ -9625,7 +9625,7 @@ Haga clic en el botón de instalar para reiniciar el navegador e instalar la act Import OPML Feeds… - + Importar Fuentes OPML... diff --git a/resources/translations/otter-browser_hi_IN.qm b/resources/translations/otter-browser_hi_IN.qm index f404ac16e9ae0886345d1dae3ff1a4ab58ed85f3..bf84dc9858137ee9ccdef1967974d41dbfdc89c6 100644 GIT binary patch literal 202954 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 PC3j7jf&RZv5QzT;Pd6Qj diff --git a/resources/translations/otter-browser_hi_IN.ts b/resources/translations/otter-browser_hi_IN.ts index f857c107f0..1f5c4f9c70 100644 --- a/resources/translations/otter-browser_hi_IN.ts +++ b/resources/translations/otter-browser_hi_IN.ts @@ -298,7 +298,7 @@ Bookmarks - पृष्ठ स्मृतियाँ + स्मृति चिन्ह @@ -342,7 +342,7 @@ Add to Bookmarks - पृष्ठ स्मृतियों में जोड़ें + स्मृति चिन्ह में जोड़ें @@ -352,7 +352,7 @@ Show website information - वेबसाइट जानकारी दिखाएँ + वेबसाइट सूचना दिखाएँ @@ -362,12 +362,12 @@ Remove bookmark - पृष्ठ स्मृति हटाएँ + स्मृति चिन्ह हटाएँ Add bookmark - पृष्ठ स्मृति जोड़ें + स्मृति चिन्ह जोड़ें @@ -442,12 +442,13 @@ This may lead to malfunctions or even data loss. SSL support is not available or incomplete. Some websites may work incorrectly or do not work at all. - + एसएसएल समर्थन अनुपलब्ध या अपूर्ण है। +कुछ वेबसाइट की कार्यक्षमता आंशिक या पूर्ण रूप से प्रभावित हो सकती है। <b>Otter %1</b><br>Web browser controlled by the user, not vice-versa.<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> - + <b>औटर %1</b><br>पूर्णतया उपयोक्ता द्वारा नियंत्रित वेब ब्राउज़र।<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> @@ -474,7 +475,7 @@ Are you sure that you want to restore this session anyway? New update %1 from %2 channel is available! - + %2 चैनल से नई अपडेट %1 उपलब्ध है। @@ -485,18 +486,18 @@ Are you sure that you want to restore this session anyway? You are about to quit while %n files are still being downloaded. - + %n फाइल का डाउनलोड कार्यरत होते हुए भी आप द्वारा प्रोग्राम निरस्त होगा।%n फाइलों का डाउनलोड कार्यरत होते हुए भी आप द्वारा प्रोग्राम निरस्त होगा। Hide - छुपाएँ + अदृश्य करें You are about to quit the current Otter Browser session. - + आप द्वारा वर्तमान औटर ब्राउज़र सत्र निरस्त होगा। @@ -602,22 +603,22 @@ Are you sure that you want to restore this session anyway? Visits: - + प्रयुक्त : Last visit: - + अंतिम बार प्रयुक्त : Created: - + सृजन : Modified: - + परिवर्तित : @@ -634,17 +635,17 @@ Are you sure that you want to restore this session anyway? View Bookmark - पृष्ठ स्मृति देखें + स्मृति चिन्ह देखें Edit Bookmark - पृष्ठ स्मृति संपादित करें + स्मृति चिन्ह संपादन Add Bookmark - पृष्ठ स्मृति जोड़ें + स्मृति चिन्ह जोड़ें @@ -654,7 +655,7 @@ Are you sure that you want to restore this session anyway? Bookmark with this keyword already exists. - + इस वर्गीकरण शब्द युक्त स्मृति चिन्ह पहले से मौजूद है। @@ -677,12 +678,12 @@ Are you sure that you want to restore this session anyway? Created: %1 - + सृजन : %1 Visited: %1 - + प्रयुक्त : %1 @@ -753,7 +754,7 @@ Are you sure that you want to restore this session anyway? Add Bookmark… - पृष्ठ स्मृति जोड़ें ... + स्मृति चिन्ह जोड़ें... @@ -785,22 +786,22 @@ Are you sure that you want to restore this session anyway? Added - + जोड़ा गया Modified - + परिवर्तित Visited - + प्रयुक्त Visits - + प्रयुक्त संख्या @@ -810,17 +811,17 @@ Are you sure that you want to restore this session anyway? Add Bookmark - पृष्ठ स्मृति जोड़ें + स्मृति चिन्ह जोड़ें Restore Bookmark - पृष्ठ स्मृति पुनः स्थापित करें + स्मृति चिन्ह पुनः स्थापित करें Bookmarks - पृष्ठ स्मृतियाँ + स्मृति चिन्ह @@ -828,7 +829,7 @@ Are you sure that you want to restore this session anyway? Remove existing bookmarks - मौजूदा पृष्ठ स्मृति हटाएँ + मौजूदा सभी स्मृति चिन्ह हटाएँ @@ -838,22 +839,22 @@ Are you sure that you want to restore this session anyway? New… - नया ... + नया... Allow to duplicate already existing bookmarks - + पहले से मौजूद स्मृति चिन्हों को प्रतिरूपित करना स्वीकार्य Import into subfolder - + उप-फोल्डर में आयात करें Leave empty to import into main folder - + मुख्य फोल्डर में आयात हेतु रिक्त रखें @@ -871,7 +872,7 @@ Are you sure that you want to restore this session anyway? Bookmarks - पृष्ठ स्मृतियाँ + स्मृति चिन्ह @@ -891,7 +892,7 @@ Are you sure that you want to restore this session anyway? Failed to open bookmarks file: %1 - पृष्ठ स्मृति फाइल खोलने में विफल : %1 + स्मृति चिन्ह फाइल खोलने में विफल : %1 @@ -901,7 +902,7 @@ Are you sure that you want to restore this session anyway? Failed to load bookmarks file: %1 - पृष्ठ स्मृति फाइल लोड करने में विफल : %1 + स्मृति चिन्ह फाइल लोड करने में विफल : %1 @@ -944,7 +945,7 @@ Are you sure that you want to restore this session anyway? Last Modified: - + अंतिम बार परिवर्तित : @@ -954,7 +955,7 @@ Are you sure that you want to restore this session anyway? Location: - + स्थान : @@ -988,7 +989,7 @@ Are you sure that you want to restore this session anyway? Last Modified - + अंतिम बार परिवर्तित @@ -1027,22 +1028,22 @@ Are you sure that you want to restore this session anyway? Certificate chain: - + प्रमाणपत्र श्रृंखला : Certificate fields: - + प्रमाणपत्र पंक्ति : Field value: - + पंक्ति मान : Export… - + निर्यात... @@ -1068,12 +1069,12 @@ Are you sure that you want to restore this session anyway? DER encoded X.509 certificates (*.der) - + DER एनकोड युक्त X.509 प्रमाणपत्र (*.der) PEM encoded X.509 certificates (*.pem) - + PEM एनकोड युक्त X.509 प्रमाणपत्र (*.pem) @@ -1093,12 +1094,12 @@ Are you sure that you want to restore this session anyway? Authority Key Identifier - + अधिकार कुंजी हेतु पहचान साधन Subject Key Identifier - + विषय कुंजी हेतु पहचान साधन @@ -1108,12 +1109,12 @@ Are you sure that you want to restore this session anyway? Certificate Policies - + प्रमाणपत्र नीतियाँ Policy Mappings - + नीति संयोजन @@ -1128,52 +1129,52 @@ Are you sure that you want to restore this session anyway? Subject Directory Attributes - + विषय डायरेक्टरी विशेषता Basic Constraints - + सामान्य बाध्यता Name Constraints - + नाम बाध्यता Policy Constraints - + नीति बाध्यता Extended Key Usage - + विस्तृत कुंजी उपयोग CRL Distribution Points - + सीआरएल वितरण बिंदु Inhibit Any Policy - + सभी नीतियाँ अवरुद्ध Delta CRL Distribution Point - + डेल्टा सीआरएल वितरण बिंदु Authority Information Access - + अधिकार सूचना अभिगम Subject Information Access - + विषय सूचना अभिगम @@ -1181,22 +1182,25 @@ Are you sure that you want to restore this session anyway? %1 Exponent: %2 - + मापांक : +%1 + +घातांक : %2 Critical - + महत्वपूर्ण Not Critical - + गैर महत्वपूर्ण OID: %1 - + ओआईडी : %1 @@ -1211,17 +1215,17 @@ Exponent: %2 Serial Number - + सीरियल संख्या Certificate Signature Algorithm - + प्रमाणपत्र हस्ताक्षर एल्गोरिथ्म Issuer - + जारी कर्ता @@ -1231,27 +1235,27 @@ Exponent: %2 Not Before - + इससे पहले नहीं Not After - + इसके बाद नहीं Subject - + विषय Subject Public Key - + विषय की सार्वजनिक कुंजी Algorithm - + एल्गोरिथ्म @@ -1261,22 +1265,22 @@ Exponent: %2 Extensions - + एक्सटेंशन Fingerprint - + पहचान चिन्ह SHA-1 Fingerprint - + SHA-1 पहचान चिन्ह SHA-256 Fingerprint - + SHA-256 पहचान चिन्ह @@ -1284,12 +1288,12 @@ Exponent: %2 Clear History - + वृतांत रिक्त करें Period to clear: - + रिक्त करने हेतु अवधि : @@ -1299,7 +1303,7 @@ Exponent: %2 h - + h @@ -1504,7 +1508,7 @@ Do you want to save them? Select lists which you want to use for content blocking (AdBlock Plus compatible): - + सामग्री अवरुद्ध करने हेतु सूची चुनें (एडब्लॉक प्लस संगत): @@ -1514,17 +1518,17 @@ Do you want to save them? Cosmetic filters: - + सजावटी निस्पंदन : Enable wildcard expressions - + वाइल्डकार्ड वाक्यांश सक्रिय करें Enable custom rules - अनुकूलिय नियम सक्रिय + अनुकूलित नियम सक्रिय @@ -1581,72 +1585,72 @@ Do you want to save them? Blocked Elements - + अवरुद्ध खंड main frame - + मुख्य फ्रेम subframe - + उप-फ्रेम pop-up - + पॉप-अप stylesheet - + शैली पत्रक script - + स्क्रिप्ट image - + चित्र object - + वस्तु object subrequest - + वस्तु उप-अनुरोध XHR - + एक्सएचआर WebSocket - + वेब सॉकेट other - + अन्य Enable Content Blocking - + सामग्री अवरोध सक्रिय करें Blocked Elements: {amount} - + अवरुद्ध खंड : {मात्रा} @@ -1654,7 +1658,7 @@ Do you want to save them? day(s) - + दिन @@ -1665,7 +1669,7 @@ Do you want to save them? %n day(s) - + %n दिन%n दिन @@ -1683,7 +1687,7 @@ Do you want to save them? Category: - + श्रेणी : @@ -1703,12 +1707,12 @@ Do you want to save them? days - + दिन Last update: - + अंतिम अपडेट : @@ -1720,7 +1724,7 @@ Do you want to save them? Annoyance - + अनावश्यक सामग्री @@ -1756,7 +1760,7 @@ Do you want to save them? Valid update URL is required. - + मान्य अपडेट यूआरएल आवश्यक है। @@ -1802,12 +1806,12 @@ Do you want to save them? Custom Rules - + अनुकूलित नियम Failed to remove content blocking profile file: %1 - + सामग्री अवरोध प्रोफाइल फाइल हटाना विफल : %1 @@ -1822,12 +1826,12 @@ Do you want to save them? Update Interval - + अपडेट अंतराल Last Update - + अंतिम अपडेट @@ -1837,7 +1841,7 @@ Do you want to save them? Annoyance - + अनावश्यक सामग्री @@ -1873,7 +1877,7 @@ Do you want to save them? Print Page - + पृष्ठ प्रिंट करें @@ -1907,7 +1911,7 @@ Do you want to save them? MM.dd.yyyy HH:mm Date and time format - + MM.dd.yyyy HH:mm @@ -1922,22 +1926,22 @@ Do you want to save them? Send only for secure connections - + केवल सुरक्षित कनेक्शन हेतु ही भेजें Allow accessing using JavaScript - + जावास्क्रिप्ट द्वारा अभिगम स्वीकार्य Add Cookie - + कुकी जोड़ें Edit Cookie - + कुकी संपादन @@ -1997,7 +2001,7 @@ Do you want to save them? You are about to delete %n cookie(s). - + आप द्वारा %n कुकी हटेंगी।आप द्वारा %n कुकीज़ हटेंगी। @@ -2008,22 +2012,22 @@ Do you want to save them? You are about to delete all cookies. - + आप द्वारा सभी कुकीज़ हटेंगी। Add Cookie… - + कुकी जोड़ें Remove All Cookies from This Domain… - + इस डोमेन की सभी कुकीज़ हटाएँ... Remove All Cookies… - + सभी कुकीज़ हटाएँ... @@ -2041,12 +2045,12 @@ Do you want to save them? Third-party Cookies Exceptions - + अन्य स्रोत कुकीज़ अपवाद Always ACCEPT third-party cookies from: - + इन द्वारा अन्य स्रोत कुकीज़ सदैव स्वीकारें : @@ -2069,7 +2073,7 @@ Do you want to save them? Always REJECT third-party cookies from: - + इन द्वारा अन्य स्रोत कुकीज़ कभी ना स्वीकारें : @@ -2077,7 +2081,7 @@ Do you want to save them? Scope - + सीमा @@ -2094,13 +2098,13 @@ Do you want to save them? CSS - + सीएसएस JS - + जेएस @@ -2126,17 +2130,17 @@ Do you want to save them? All Tabs - + सभी टैब Current Tab Only - + केवल वर्तमान टैब Other Sources - + अन्य स्रोत @@ -2165,17 +2169,18 @@ Do you want to save them? Feed updated: %1 - + समाचार स्रोत अपडेट : +%1 Failed to parse feed: invalid feed type - + समाचार स्रोत प्राप्यता विफल : अमान्य समाचार स्रोत प्रकार Failed to download feed - + समाचार स्रोत डाउनलोड विफल @@ -2183,7 +2188,7 @@ Do you want to save them? Edit Feed - + समाचार स्रोत संपादन @@ -2223,12 +2228,12 @@ Do you want to save them? minutes - + मिनट Add Feed - + समाचार स्रोत जोड़ें @@ -2238,7 +2243,7 @@ Do you want to save them? Valid address is required. - + मान्य पता आवश्यक है। @@ -2275,7 +2280,7 @@ Do you want to save them? Categories - + श्रेणियाँ @@ -2287,13 +2292,13 @@ Do you want to save them? From - + स्रोत Published - + प्रकाशित @@ -2303,7 +2308,7 @@ Do you want to save them? You already subscribed this feed. - + आप पहले से ही इस समाचार स्रोत के सदस्य हैं। @@ -2340,7 +2345,7 @@ Do you want to save them? Add Feed… - + समाचार स्रोत जोड़ें... @@ -2350,7 +2355,7 @@ Do you want to save them? Restore Feed - + समाचार स्रोत पुनः स्थापित करें @@ -2360,17 +2365,17 @@ Do you want to save them? Send email to %1 - + %1 को ईमेल भेजें Go to %1 - + %1 पर जाएँ All (%1) - + सभी (%1) @@ -2381,12 +2386,12 @@ Do you want to save them? Subscribe to this feed using: - + इस द्वारा समाचार स्रोत की सदस्यता लें : Feed: %1 - + समाचार स्रोत : %1 @@ -2408,7 +2413,7 @@ Do you want to save them? Last update: %1 - + अंतिम अपडेट : %1 @@ -2474,7 +2479,7 @@ Do you want to save them? Stores passwords in AES encrypted file. - + कूटशब्द AES एन्क्रिप्शन युक्त फाइल में संचित करें। @@ -2483,7 +2488,7 @@ Do you want to save them? Browse… - + ब्राउज करें... @@ -2511,12 +2516,12 @@ Do you want to save them? Information - जानकारी + सूचना Notification - + अधिसूचना @@ -2539,7 +2544,7 @@ Do you want to save them? Do you want to add this content blocking profile? - + क्या आप यह सामग्री अवरोध प्रोफाइल जोड़ना चाहते हैं? @@ -2547,32 +2552,32 @@ Do you want to save them? Sorting - + अनुक्रमण Sort Ascending - + आरोही अनुक्रमण Sort Descending - + अवरोही अनुक्रमण No Sorting - + कोई अनुक्रमण नहीं Visible Columns - + दृश्यमान स्तंभ Show All - + सभी दिखाएँ @@ -2590,37 +2595,37 @@ Do you want to save them? Today - + आज Yesterday - + बीता कल Earlier This Week - + इस सप्ताह Previous Week - + पूर्व सप्ताह Earlier This Month - + इस माह Earlier This Year - + इस वर्ष Older - + पूर्व @@ -2643,7 +2648,7 @@ Do you want to save them? Add to Bookmarks… - + स्मृति चिन्ह में जोड़ें... @@ -2687,12 +2692,12 @@ Do you want to save them? HTML Bookmarks - + एचटीएमएल स्मृति चिन्ह Imports bookmarks from HTML file (Netscape format). - एचटीएमएल फाइल (नेटस्केप प्रारूप) से पृष्ठ स्मृतियाँ आयात करें। + एचटीएमएल फाइल (नेटस्केप प्रारूप) से स्मृति चिन्ह आयात करें। @@ -2708,12 +2713,12 @@ Do you want to save them? Select Icon - + आइकन चुनें Images (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) - + चित्र (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) @@ -2728,12 +2733,12 @@ Do you want to save them? Select From Theme… - + थीम से चुनें... Reset - + पुनः सेट करें @@ -2746,7 +2751,7 @@ Do you want to save them? Image Properties - + चित्र विशेषताएँ @@ -2771,7 +2776,7 @@ Do you want to save them? Alternative text: - + वैकल्पिक टेक्स्ट : @@ -2788,18 +2793,18 @@ Do you want to save them? %1 x %2 pixels @ %3 bits per pixel in %n frame(s) - + %1 x %2 पिक्सेल @ %3 बिट प्रति पिक्सेल %n फ्रेम में%1 x %2 पिक्सेल @ %3 बिट प्रति पिक्सेल %n फ्रेम में %1 x %2 pixels @ %3 bits per pixel - + %1 x %2 पिक्सेल @ %3 बिट प्रति पिक्सेल %1 x %2 pixels - + %1 x %2 पिक्सेल @@ -2817,17 +2822,17 @@ Do you want to save them? Results - + परिणाम Initializing… - + आरंभ जारी... %p% (%v/%m) - + %p% (%v/%m) @@ -2837,27 +2842,27 @@ Do you want to save them? Unable to import selected type. - + चयनित प्रकार हेतु आयात विफल। Processing… - + संसाधन जारी... Failed to import data. - + डेटा हेतु आयात विफल। Import cancelled by the user. - + उपयोक्ता द्वारा आयात निरस्त। Import finished successfully. - + आयात सफलतापूर्वक पूर्ण। @@ -2865,42 +2870,42 @@ Do you want to save them? JavaScript Options - + जावास्क्रिप्ट विकल्प Allow moving and resizing of windows - + विंडो अंतरण व आकार परिवर्तन स्वीकार्य Allow changing of status field - + स्थिति पंक्ति परिवर्तन स्वीकार्य Allow script to hide address bar - + स्क्रिप्ट द्वारा पता पट्टी अदृश्य करना स्वीकार्य Allow access to clipboard - + क्लिपबोर्ड अभिगम स्वीकार्य Allow to receive right mouse button clicks - + दायां माउस बटन क्लिक स्वीकार्य Allow to close windows: - + विंडो बंद करना स्वीकार्य : Allow to enter full screen mode: - + पूर्ण स्क्रीन मोड स्वीकार्य : @@ -2960,7 +2965,7 @@ Do you want to save them? Information - जानकारी + सूचना @@ -2992,7 +2997,7 @@ Do you want to save them? Action - + कार्य @@ -3004,27 +3009,27 @@ Do you want to save them? Shortcut - + शॉर्टकट This shortcut already used by %1 - + यह शॉर्टकट %1 द्वारा पहले से उपयोग में है unknown action - + अज्ञात कार्य This shortcut cannot be used because it would be overriden by a native hotkey used by an editing action - + यह शॉर्टकट पहले से मौजूद मूल शॉर्टकट के संपादन कार्य द्वारा अधिलेखित हो सकता है अतः इसे उपयोग करना संभव नहीं है Single key shortcuts are currently disabled - + एकल कुंजी शॉर्टकट अभी निष्क्रिय हैं @@ -3037,7 +3042,7 @@ Do you want to save them? Lock Panel - + पैनल लॉक @@ -3060,17 +3065,17 @@ Do you want to save them? Directory does not exist - + डायरेक्टरी मौजूद नहीं है Directory is not readable - + डायरेक्टरी रीड योग्य नहीं है Cannot read directory listing - + डायरेक्टरी सूची रीड करना विफल @@ -3113,7 +3118,7 @@ Do you want to save them? Custom path: - + अनुकूलित पथ : @@ -3151,7 +3156,7 @@ Do you want to save them? Information - जानकारी + सूचना @@ -3164,7 +3169,7 @@ Do you want to save them? You are about to open %n bookmark(s). - + आप द्वारा %n स्मृति चिन्ह खोला जाएगा।आप द्वारा %n स्मृति चिन्ह खोलें जाएँगें। @@ -3179,7 +3184,7 @@ Do you want to save them? Empty - + रिक्त @@ -3187,22 +3192,22 @@ Do you want to save them? Set Master Password - + मास्टर कूटशब्द सेट करें Current password: - + वर्तमान कूटशब्द : New password: - + नया कूटशब्द : Confirm new password: - + नए कूटशब्द की पुष्टि करें : @@ -3211,12 +3216,12 @@ Do you want to save them? Failed to create menu action: %1 - + मेन्यू कार्य बनाना विफल : %1 Window - %1 - + विंडो - %1 @@ -3227,7 +3232,7 @@ Do you want to save them? %1 (%n tab(s)) - + %1 (%n टैब)%1 (%n टैब) @@ -3243,18 +3248,19 @@ Do you want to save them? Settings Migration - + सेटिंग्स डेटा अंतरण Configuration of the components listed below needs to be updated to new version. Do you want to migrate it? - + नीचे दिए अनुखंड का विन्यास नवीन संस्करण पर अपडेट करना आवश्यक है। +क्या आप डेटा अंतरित करना चाहते हैं? Create backup - + बैकअप बनाएँ @@ -3308,7 +3314,7 @@ Do you want to migrate it? Information - जानकारी + सूचना @@ -3333,42 +3339,42 @@ Do you want to migrate it? Generic - + सामान्य Link - + लिंक Editable Content - + संपादन योग्य सामग्री Tab Handle - + टैब हैंडल Tab Handle of Active Tab - + सक्रिय टैब का टैब हैंडल Empty Area of Tab Bar - + टैब पट्टी का रिक्त क्षेत्र Any Toolbar - + कोई भी साधन पट्टी Context and Action - + संदर्भ व कार्य @@ -3378,12 +3384,12 @@ Do you want to migrate it? Steps - + चरण Step - + चरण @@ -3401,7 +3407,7 @@ Do you want to migrate it? Purge Entry - + प्रविष्टि हटाएँ @@ -3410,12 +3416,12 @@ Do you want to migrate it? Failed to load proxy auto-config (PAC): %1 - + प्रॉक्सी स्वतः-विन्यास (PAC) लोड करने में विफल : %1 Failed to load proxy auto-config (PAC). Invalid URL: %1 - + प्रॉक्सी स्वतः-विन्यास (PAC) लोड करने में विफल। अमान्य यूआरएल : %1 @@ -3462,7 +3468,7 @@ Do you want to continue? Date: - + दिनांक : @@ -3487,7 +3493,7 @@ Do you want to continue? Add Note - + नोट जोड़ें @@ -3499,7 +3505,7 @@ Do you want to continue? Add note… - + नोट जोड़ें... @@ -3519,12 +3525,12 @@ Do you want to continue? Open source page - + स्रोत पृष्ठ खोलें Restore Note - + नोट पुनः स्थापित करें @@ -3546,12 +3552,12 @@ Do you want to continue? Go to Page - + पृष्ठ पर जाएँ Enter a web address or choose one from the list: - + वेब पता दर्ज करें या सूची से चुनें : @@ -3559,12 +3565,12 @@ Do you want to continue? Go to Bookmark - + स्मृति चिन्ह पर जाएँ Enter the keyword of bookmark: - + स्मृति चिन्ह का वर्गीकरण शब्द दर्ज करें : @@ -3572,12 +3578,12 @@ Do you want to continue? Opera Bookmarks - + ओपेरा स्मृति चिन्ह Imports bookmarks from Opera Browser version 12 or earlier - + ओपेरा ब्राउज़र संस्करण 12 या पूर्व से स्मृति चिन्ह आयात @@ -3595,12 +3601,12 @@ Do you want to continue? Opera Notes - + ओपेरा नोट्स Imports notes from Opera Browser version 12 or earlier - + ओपेरा ब्राउज़र संस्करण 12 या पूर्व से नोट्स आयात @@ -3613,17 +3619,17 @@ Do you want to continue? Remove existing search engines - + मौजूदा सभी खोज साधन हटाएँ Opera search engines - + ओपेरा खोज साधन Imports search engines from Opera Browser version 12 or earlier - + ओपेरा ब्राउज़र संस्करण 12 या पूर्व से खोज साधन आयात @@ -3636,12 +3642,12 @@ Do you want to continue? Opera Session - + ओपेरा सत्र Imports session from Opera Browser version 12 or earlier - + ओपेरा ब्राउज़र संस्करण 12 या पूर्व से सत्र आयात @@ -3654,7 +3660,7 @@ Do you want to continue? OPML Feeds - + ओपीएमएल समाचार @@ -3682,7 +3688,7 @@ Do you want to continue? Allow to duplicate already existing feeds - + पहले से मौजूद समाचार स्रोत को प्रतिरूपित करना स्वीकार्य @@ -3741,23 +3747,23 @@ Do you want to continue? MIME type - + माइम प्रकार Document size - + प्रलेख आकार Total size - + कुल आकार Number of requests - + अनुरोध संख्या @@ -3767,17 +3773,17 @@ Do you want to continue? Downloaded - + डाउनलोड Headers - + शीर्ष लेख Meta - + मेटा @@ -3792,27 +3798,27 @@ Do you want to continue? Cipher protocol - + बीजलेख प्रोटोकॉल Cipher authentication method - + बीजलेख पुष्टिकरण प्रोटोकॉल Cipher encryption method - + बीजलेख एन्क्रिप्शन विधि Cipher key exchange method - + बीजलेख कुंजी विनिमय विधि Page Information - पृष्ठ जानकारी + पृष्ठ सूचना @@ -3831,7 +3837,7 @@ Do you want to continue? Do you want to update login data for %1? - + क्या आप %1 हेतु लॉगिन डेटा अपडेट करना चाहते हैं? @@ -3875,7 +3881,7 @@ Do you want to continue? You are about to delete %n password(s). - + आप द्वारा %n कूटशब्द हटेगा।आप द्वारा %n कूटशब्द हटेंगे। @@ -3887,22 +3893,22 @@ Do you want to continue? You are about to delete all passwords. - + आप द्वारा सभी कूटशब्द हटेंगे। Remove Password - + कूटशब्द हटाएँ Remove All Passwords from This Domain… - + इस डोमेन के सभी कूटशब्द हटाएँ... Remove All Passwords… - + सभी कूटशब्द हटाएँ... @@ -3915,17 +3921,17 @@ Do you want to continue? Allow this time - + इस बार स्वीकार्य Always allow - + सदैव स्वीकार्य Always deny - + सदैव अस्वीकार्य @@ -3940,47 +3946,47 @@ Do you want to continue? %1 wants to enter full screen mode. - + %1 द्वारा पूर्ण स्क्रीन मोड अनुरोध। %1 wants access to your location. - + %1 द्वारा भौगोलिक स्थान अभिगम अनुरोध। %1 wants to show notifications. - + %1 द्वारा अधिसूचना प्रदर्शन अनुरोध। %1 wants to lock mouse pointer. - + %1 द्वारा माउस पॉइंटर लॉक अनुरोध। %1 wants to access your microphone. - + %1 द्वारा माइक्रोफोन अभिगम अनुरोध। %1 wants to access your camera. - + %1 द्वारा कैमरा अभिगम अनुरोध। %1 wants to access your microphone and camera. - + %1 द्वारा माइक्रोफोन व कैमरा अभिगम अनुरोध। %1 wants to play audio. - + %1 द्वारा ऑडियो उपयोग अनुरोध। Invalid permission request from %1. - + %1 द्वारा अमान्य अनुमति अनुरोध। @@ -3993,7 +3999,7 @@ Do you want to continue? Failed to install update. - + अपडेट इंस्टॉल करना विफल। @@ -4001,7 +4007,7 @@ Do you want to continue? Details - + विवरण @@ -4012,32 +4018,32 @@ Do you want to continue? %1 wants to open %n pop-up window(s). - + %1 द्वारा %n पॉप-अप विंडो हेतु अनुरोध।%1 द्वारा %n पॉप-अप विंडो हेतु अनुरोध। Open All Pop-Ups from This Website - + इस वेबसाइट के सभी पॉप-अप खोलें Open Pop-Ups from This Website in Background - + इस वेबसाइट के सभी पॉप-अप बैकग्राउंड में खोलें Block All Pop-Ups from This Website - + इस वेबसाइट के सभी पॉप-अप अवरुद्ध करें Always Ask What to Do for This Website - + इस वेबसाइट हेतु इच्छित कार्य सदैव पूछें Blocked Pop-ups - + अवरुद्ध पॉप-अप @@ -4057,72 +4063,72 @@ Do you want to continue? Smooth scrolling - + मृदु स्क्रॉल Check spelling - + वर्तनी जाँच Address Field Suggestions - + पता क्षेत्र हेतु सुझाव Suggest bookmarks - + स्मृति चिन्ह अनुशंसा Suggest history - + वृतांत सुझाव सक्रिय Suggest search results - + खोज परिणाम सुझाव सक्रिय Local paths - + लोकल पथ Address Completion - + पता पूर्ति Show category headers - + श्रेणी हेतु शीर्ष लेख दिखाएँ Display mode: - + दृश्य मोड : Events - + घटना Play sound: - + ध्वनि चलाएँ : Show notification - + अधिसूचना दिखाएँ Mark taskbar entry - + कार्य पट्टी प्रविष्टि चिन्हित करें @@ -4132,7 +4138,7 @@ Do you want to continue? Prefer native notifications - + मूल अधिसूचनाएँ इच्छित @@ -4142,12 +4148,12 @@ Do you want to continue? Widget style: - + विजेट शैली : Interface style sheet: - + अंतरफलक शैली पत्र : @@ -4157,7 +4163,7 @@ Do you want to continue? Show tray icon - + ट्रे आइकन दिखाएँ @@ -4172,7 +4178,7 @@ Do you want to continue? JavaScript Options… - + जावास्क्रिप्ट विकल्प @@ -4228,12 +4234,12 @@ Do you want to continue? MIME Types - + माइम प्रकार Show download dialog - + डाउनलोड पट्टी दिखाएँ @@ -4248,22 +4254,22 @@ Do you want to continue? Open with application - + इस अनुप्रयोग से खोलें Pass web address directly to application - + वेब पता इस अनुप्रयोग पर इंगित करें Send referrer information - + रेफर कर्ता सूचना भेजें User Agent - + उपयोक्ता एजेंट @@ -4273,7 +4279,7 @@ Do you want to continue? SSL Ciphers - + एसएसएल बीजलेख @@ -4294,59 +4300,59 @@ Do you want to continue? Updates - + अपडेट Select channels from which you want to receive updates: - + अपडेट प्राप्ति हेतु चैनल चुनें : Check for updates every - + अपडेट खोजें प्रति day(s) - + दिन Install updates automatically - + अपडेट स्वतः इंस्टॉल करें Keyboard Shortcuts - + कुंजीपटल शॉर्टकट Clone - + प्रतिरूप Enable single key shortcuts - + एकल कुंजी शॉर्टकट सक्रिय Mouse Actions and Gestures - + माउस कार्य व संकेत Enable mouse gestures - + माउस संकेत सक्रिय Browsing - + ब्राउज़िंग @@ -4358,7 +4364,7 @@ Do you want to continue? Appearance - + स्वरूप @@ -4376,7 +4382,7 @@ Do you want to continue? Programs - + प्रोग्राम @@ -4400,23 +4406,23 @@ Do you want to continue? Keyboard - + कुंजीपटल Mouse - + माउस Compact - + संक्षिप्त Columns - + स्तंभ @@ -4437,7 +4443,7 @@ Do you want to continue? System Style - + सिस्टम शैली @@ -4453,7 +4459,7 @@ Do you want to continue? Cached images - + कैश चित्र @@ -4468,7 +4474,7 @@ Do you want to continue? On demand - + आवश्यकता अनुसार @@ -4495,7 +4501,7 @@ Do you want to continue? Add User Agent… - + उपयोक्ता एजेंट जोड़ें... @@ -4506,22 +4512,22 @@ Do you want to continue? Add Proxy… - + प्रॉक्सी जोड़ें... Stable version - + स्थिर संस्करण Beta version - + बीटा संस्करण Weekly development version - + साप्ताहिक अल्पविकसित संस्करण @@ -4545,17 +4551,17 @@ Do you want to continue? Do you really want to remove preferences for this website? - + क्या आप निश्चित ही इस वेबसाइट हेतु विन्यास हटाना चाहते हैं? MIME Type Name - MIME प्रकार नाम + माइम प्रकार नाम Select name of MIME Type: - MIME प्रकार का नाम चुनें : + माइम प्रकार नाम चुनें : @@ -4565,7 +4571,7 @@ Do you want to continue? Invalid MIME Type name. - अमान्य MIME प्रकार नाम। + अमान्य माइम प्रकार नाम। @@ -4621,22 +4627,22 @@ Do you want to continue? Blocking - + अवरोध Pop-ups: - + पॉप-अप : Zoom - + आकार वर्धन Default zoom: - + डिफ़ॉल्ट आकार वर्धन : @@ -4646,17 +4652,17 @@ Do you want to continue? Zoom text only - + केवल लेख का आकार वर्धन Fonts - + मुद्रलिपि Default proportional font size: - + डिफ़ॉल्ट आनुपातिक मुद्रलिपि आकार : @@ -4668,12 +4674,12 @@ Do you want to continue? Default fixed-width font size: - + डिफ़ॉल्ट नियत-चौड़ाई मुद्रलिपि आकार : Minimum font size: - + न्यूनतम मुद्रलिपि आकार : @@ -4683,7 +4689,7 @@ Do you want to continue? Colors - + रंग @@ -4713,7 +4719,7 @@ Do you want to continue? Font - + मुद्रलिपि @@ -4724,37 +4730,37 @@ Do you want to continue? Standard font - + सामान्य मुद्रलिपि Fixed-width font - + नियत-चौड़ाई मुद्रलिपि Serif font - + सेरिफ मुद्रलिपि Sans-serif font - + सेरिफ रहित मुद्रलिपि Cursive font - + प्रवाही मुद्रलिपि Fantasy font - + कलात्मक मुद्रलिपि The quick brown fox jumps over the lazy dog - + संध्या सुंदरी की मधुर-मधुर मुस्कान मनोहर @@ -4764,22 +4770,22 @@ Do you want to continue? Background Color - + बैकग्राउंड रंग Text Color - + लेख रंग Link Color - + लिंक रंग Visited Link Color - + प्रयुक्त लिंक रंग @@ -4825,37 +4831,37 @@ Do you want to continue? Startup - + आरंभ प्रक्रिया Startup behavior: - + आरंभ प्रक्रिया व्यवहार : Home page: - + होम पृष्ठ : Use Current Page - + वर्तमान पृष्ठ उपयोग करें Use Bookmark - + स्मृति चिन्ह उपयोग Restore to Default - + डिफ़ॉल्ट पुनः स्थापित करें Do not load the tab contents until selected - + चयनित होने तक टैब सामग्री लोड न करें @@ -4875,42 +4881,42 @@ Do you want to continue? Tabs - + टैब Open new windows in new tabs instead - + नवीन विंडो नवीन टैब में खोलें Reuse current tab - + वर्तमान टैब पुनः उपयोग करें Open new tab next to active - + सक्रिय टैब के दायीं ओर नवीन टैब खोलें When closing tab: - + टैब बंद करते समय : Activate the last active tab - + अंतिम सक्रिय टैब चालू करें Activate the next tab - + अगला टैब चालू करें Activate the first tab opened from current tab - + वर्तमान टैब से प्रयुक्त प्रथम टैब चालू करें @@ -4940,12 +4946,12 @@ Do you want to continue? Show windows and tabs from the last time - + अंतिम बार प्रयुक्त विंडो व टैब दिखाएँ Show startup dialog - + आरंभ प्रक्रिया विंडो दिखाएँ @@ -4968,12 +4974,12 @@ Do you want to continue? Tracking - + ट्रैकिंग Do Not Track: - + कोई ट्रैकिंग नहीं : @@ -4988,57 +4994,57 @@ Do you want to continue? Remember browsing history - + ब्राउज़िंग वृतांत स्मरण करें Remember downloads history - + डाउनलोड वृतांत स्मरण करें Remember search history - + खोज वृतांत स्मरण करें Remember form history - + प्रपत्र वृतांत स्मरण करें Template… - + नमूना... Enable cookies - + कुकीज़ सक्रिय Accept cookies: - + कुकीज़ स्वीकारें : Keep until: - + संचय अवधि : Accept third-party cookies: - + अन्य स्रोत कुकीज़ स्वीकारें : Exceptions… - + अपवाद... Clear history when application closes - + अनुप्रयोग बंद होने पर वृतांत रिक्त करें @@ -5063,7 +5069,7 @@ Do you want to continue? Use a master password - + मास्टर कूटशब्द उपयोग करें @@ -5073,17 +5079,17 @@ Do you want to continue? Inform websites that I do not want to be tracked - + ट्रैकिंग अस्वीकृति हेतु वेबसाइट को सूचित करें Inform websites that I allow tracking - + ट्रैकिंग स्वीकृति हेतु वेबसाइट को सूचित करें Do not inform websites about my preference - + इच्छित सेटिंग वेबसाइट को सूचित न करें @@ -5095,12 +5101,12 @@ Do you want to continue? Only existing - + केवल मौजूदा Only read existing - + केवल मौजूदा रीड करें @@ -5110,7 +5116,7 @@ Do you want to continue? Current session is closed - + वर्तमान सत्र बंद है @@ -5163,7 +5169,7 @@ Do you want to continue? Enable search suggestions - + खोज सुझाव सक्रिय @@ -5195,7 +5201,7 @@ Do you want to continue? New Search Engine - + नया खोज साधन @@ -5216,12 +5222,12 @@ Do you want to continue? Do you really want to remove this search engine? - + क्या आप निश्चित ही यह खोज साधन हटाना चाहते हैं? Delete search engine permanently - + खोज साधन स्थायी रूप से हटाएँ @@ -5239,12 +5245,12 @@ Do you want to continue? Keyword is already in use. Do you want to continue anyway? - + वर्गीकरण शब्द पहले से प्रयुक्त है। क्या आप फिर भी जारी रखना चाहते हैं? Failed to update search engine. - + खोज साधन अपडेट विफल। @@ -5258,7 +5264,7 @@ Do you want to continue? Private Window - + निजी विंडो @@ -5274,42 +5280,42 @@ Do you want to continue? Document: %p% - + प्रलेख : %p% Document: ? - + प्रलेख : ? Total: ? - + कुल : ? Total: %p% - + कुल : %p% Total: %1 - + कुल : %1 Elements: %1/%2 - + अनुखंड : %1/%2 Speed: %1 - + गति : %1 Time: %1 - + समय : %1 @@ -5327,42 +5333,42 @@ Do you want to continue? Manual - + स्वयं Port - + पोर्ट Protocol - + प्रोटोकॉल Servers - + सर्वर FTP - + एफटीपी SOCKS5 - + SOCKS5 HTTP - + एचटीटीपी HTTPS - + एचटीटीपीएस @@ -5382,17 +5388,17 @@ Do you want to continue? Use system authentication - + सिस्टम प्रमाणीकरण उपयोग करें Exceptions - + अपवाद Do not use this proxy for: - + इस हेतु प्रॉक्सी उपयोग न करें : @@ -5412,17 +5418,17 @@ Do you want to continue? Example: domain.com, localhost, 127.0.0.1, 192.168.1.0/24 - + उदाहरण : domain.com, localhost, 127.0.0.1, 192.168.1.0/24 Edit Proxy - + प्रॉक्सी संपादन Add Proxy - + प्रॉक्सी जोड़ें @@ -5439,7 +5445,7 @@ Do you want to continue? Disable JavaScript popups - + जावास्क्रिप्ट पॉप-अप सक्रिय करें @@ -5451,13 +5457,13 @@ Do you want to continue? Are you sure that you want to send form data again? - + क्या आप निश्चित ही प्रपत्र डेटा पुनः भेजना चाहते हैं? Do you want to resend data? - + क्या आप डेटा पुनः भेजना चाहते हैं? @@ -5471,12 +5477,12 @@ Do you want to continue? Blink Backend (experimental) - + ब्लिंक बैकेंड (प्रयोगात्मक) Backend utilizing QtWebEngine module - + क्यूटी वेबइंजन अनुखंड युक्त बैकएंड @@ -5512,7 +5518,7 @@ Do you want to continue? Unknown command - + अज्ञात कमांड @@ -5553,28 +5559,28 @@ Do you want to continue? Receiving data from %1… - + %1 से डेटा प्राप्ति जारी... Completed request to %1 - + %1 हेतु अनुरोध पूर्ण Waiting for authentication… - + पुष्टिकरण हेतु प्रतीक्षा... Loading finished - + लोड प्रक्रिया पूर्ण Sending request to %1… - + %1 हेतु अनुरोध जारी... @@ -5591,7 +5597,7 @@ Do you want to continue? Disable JavaScript popups - + जावास्क्रिप्ट पॉप-अप सक्रिय करें @@ -5604,13 +5610,13 @@ Do you want to continue? Are you sure that you want to send form data again? - + क्या आप निश्चित ही प्रपत्र डेटा पुनः भेजना चाहते हैं? Do you want to resend data? - + क्या आप डेटा पुनः भेजना चाहते हैं? @@ -5627,7 +5633,8 @@ Do you want to continue? Request blocked by rule from profile %1:<br> %2 - + प्रोफाइल %1 के नियम द्वारा अनुरोध अवरुद्ध : <br> +%2 @@ -5647,12 +5654,12 @@ Do you want to continue? The script on this page appears to have a problem. - + इस पृष्ठ हेतु स्क्रिप्ट में संभवतः समस्या है। Do you want to stop the script? - + क्या आप स्क्रिप्ट को रोकना चाहते हैं? @@ -5661,7 +5668,7 @@ Do you want to continue? Click to load content (%1) handled by plugin from: %2 - + इससे प्लगिन द्वारा नियंत्रित सामग्री (%1) लोड करने हेतु क्लिक करें : %2 @@ -5669,17 +5676,17 @@ Do you want to continue? WebKit Backend (legacy) - + वेबकिट बैकएंड (पारंपरिक) WebKit Backend - + वेबकिट बैकएंड Backend utilizing QtWebKit module - + क्यूटी वेबकिट अनुखंड युक्त बैकएंड @@ -5712,12 +5719,12 @@ Do you want to continue? PNG image (*.png) - + PNG चित्र (*.png) JPEG image (*.jpg *.jpeg) - + JPEG चित्र (*.jpg *.jpeg) @@ -5735,7 +5742,7 @@ Do you want to continue? Automatic Page Reload - + स्वतः पृष्ठ पुनः लोड @@ -5753,7 +5760,7 @@ Do you want to continue? Diagnostic Report - + निदान हेतु रिपोर्ट @@ -5784,17 +5791,17 @@ Do you want to continue? Session title: - + सत्र शीर्षक : Session identifier: - + सत्र पहचान साधन : Store only current window - + केवल वर्तमान विंडो संचित करें @@ -5805,7 +5812,8 @@ Do you want to continue? Session with specified indentifier already exists. Do you want to overwrite it? - + निर्दिष्ट पहचान साधन युक्त सत्र पहले से मौजूद है। +क्या आप उसे अधिलेखित करना चाहते हैं? @@ -5823,27 +5831,27 @@ Do you want to overwrite it? Find… - + खोजें... Find Next - + आगामी खोजें Find Previous - + पूर्व खोजें Highlight - + चिन्हित करें Case Sensitive - + अक्षर संवेदी @@ -5856,7 +5864,7 @@ Do you want to overwrite it? Edit Search Engine - + खोज साधन संपादन @@ -5886,17 +5894,17 @@ Do you want to overwrite it? Form address: - + प्रपत्र पता : Update address: - + अपडेट पता : Results Query - + परिणाम खोज @@ -5908,13 +5916,13 @@ Do you want to overwrite it? Query: - + खोज : POST method - + POST विधि @@ -5925,17 +5933,17 @@ Do you want to overwrite it? Suggestions Query - + सुझाव खोज Placeholders - + स्थान पहचान साधन Search Terms - + खोज शब्द @@ -5948,7 +5956,7 @@ Do you want to overwrite it? Manage Search Engines… - + खोज साधन प्रबंधन... @@ -5964,12 +5972,12 @@ Do you want to overwrite it? Search using %1 - + %1 द्वारा खोजें Add %1 - + %1 जोड़ें @@ -5984,17 +5992,17 @@ Do you want to overwrite it? Failed to add search engine. - + खोज साधन जोड़ना विफल। Select Search Engine - + खोज साधन चुनें Add Search Engine… - + खोज साधन जोड़ें... @@ -6007,12 +6015,12 @@ Do you want to overwrite it? Select Password - + कूटशब्द चुनें Select set of credentials: - + प्रमाणपत्र समूह चयन : @@ -6044,7 +6052,7 @@ Do you want to overwrite it? Do you really want to remove this credentials set? - + क्या आप निश्चित ही यह प्रमाणपत्र समूह हटाना चाहते हैं? @@ -6052,7 +6060,7 @@ Do you want to overwrite it? Session - + सत्र @@ -6104,7 +6112,7 @@ Do you want to overwrite it? Open session in current window - + वर्तमान विंडो में सत्र खोलें @@ -6122,23 +6130,23 @@ Do you want to overwrite it? Identifier - + पहचान साधन Windows - + विंडो %n window(s) (%1) - + %n विंडो (%1)%n विंडो (%1) %n tab(s) - + %n टैब%n टैब @@ -6155,12 +6163,12 @@ Are you sure that you want to restore this session anyway? Confirm - + पुष्टि करें Are you sure that you want to delete session %1? - + क्या आप निश्चित ही सत्र %1 हटाना चाहते हैं? @@ -6170,7 +6178,7 @@ Are you sure that you want to restore this session anyway? Failed to delete session. - + सत्र हटाना विफल। @@ -6205,17 +6213,17 @@ Are you sure that you want to restore this session anyway? Panels - + पैनल... Add web panel - + वेब पैनल जोड़ें Add Web Panel… - + वेब पैनल जोड़ें... @@ -6250,17 +6258,17 @@ Do you want to save your changes or discard them? Show Line Numbers - + पंक्ति संख्या दिखाएँ Source Viewer: %1 - + स्रोत प्रदर्शक : %1 Source Viewer - + स्रोत प्रदर्शक @@ -6269,7 +6277,7 @@ Do you want to save your changes or discard them? Add Tile… - + विंडो अनुभाग जोड़ें... @@ -6277,32 +6285,32 @@ Do you want to save your changes or discard them? Start Page Preferences - + आरंभ पृष्ठ सेटिंग्स Use custom background image - + अनुकूलित बैकग्राउंड चित्र उपयोग करें Scaling mode: - + अनुमाप परिवर्तन मोड : Image path: - + चित्र पथ : Color: - + रंग : Columns per row: - + प्रति पंक्ति हेतु स्तंभ : @@ -6312,7 +6320,7 @@ Do you want to save your changes or discard them? Zoom level: - + आकार वर्धन स्तर : @@ -6322,37 +6330,37 @@ Do you want to save your changes or discard them? Show search field - + खोज क्षेत्र दिखाएँ Show tile to add new entries - + नई प्रविष्टियाँ जोड़ने हेतु विंडो अनुभाग दिखाएँ Images (*.png *.jpg *.bmp *.gif *.svg *.svgz) - + चित्र (*.png *.jpg *.bmp *.gif *.svg *.svgz) Best fit - + विंडो अनुरूप आकार Center - + केंद्रित Stretch - + विस्तृत Tile - + विंडो अनुभाग @@ -6360,7 +6368,7 @@ Do you want to save your changes or discard them? Add Tile - + विंडो अनुभाग जोड़ें @@ -6385,7 +6393,7 @@ Do you want to save your changes or discard them? Add Tile… - + विंडो अनुभाग जोड़ें... @@ -6394,32 +6402,32 @@ Do you want to save your changes or discard them? Welcome to Otter - + औटर में स्वागत है! Continue session - + सत्र जारी रखें Begin with home page - + होम पृष्ठ से आरंभ करें Begin with start page - + आरंभ पृष्ठ से आरंभ करें Begin with blank page - + रिक्त पृष्ठ से आरंभ करें Enable plugins - + प्लगिन सक्रिय करें @@ -6436,7 +6444,8 @@ Do you want to save your changes or discard them? Title: %1 Address: %2 - + शीर्षक : %1 +पता: %2 @@ -6449,17 +6458,17 @@ Address: %2 Switch Tabs Using the Mouse Wheel - + माउस स्क्रॉल उपयोग कर टैब परिवर्तन स्वीकार्य Show Thumbnails in Tabs - + टैब में लघुछवि दिखाएँ Arrange - + व्यवस्थित करें @@ -6467,22 +6476,22 @@ Address: %2 Arrange - + व्यवस्थित करें Switch Tabs Using the Mouse Wheel - + माउस स्क्रॉल उपयोग कर टैब परिवर्तन स्वीकार्य Show Thumbnails in Tabs - + टैब में लघुछवि दिखाएँ Customize - अनुकूलित + अनुकूलन @@ -6492,7 +6501,7 @@ Address: %2 You are about to open %n URL(s). - + आप द्वारा %n यूआरएल खोला जाएगा।आप द्वारा %n यूआरएल खोलें जाएँगें। @@ -6523,7 +6532,7 @@ Address: %2 Tab History - + टैब वृतांत @@ -6538,7 +6547,7 @@ Address: %2 Date: %1 - + दिनांक : %1 @@ -6559,7 +6568,7 @@ Address: %2 Copy Link Location - + लिंक स्थान कॉपी करें @@ -6573,7 +6582,7 @@ Address: %2 Edit Toolbar - + साधन पट्टी संपादन @@ -6583,7 +6592,7 @@ Address: %2 Entries - + प्रविष्टियाँ @@ -6593,12 +6602,12 @@ Address: %2 Current entries: - + वर्तमान प्रविष्टियाँ : Available entries: - + उपलब्ध प्रविष्टियाँ : @@ -6609,12 +6618,12 @@ Address: %2 Add Bookmark - पृष्ठ स्मृति जोड़ें + स्मृति चिन्ह जोड़ें Bookmarks folder: - + स्मृति चिन्ह फोल्डर : @@ -6629,27 +6638,27 @@ Address: %2 Visibility: - + दृश्यता : Visibility in full screen mode: - + पूर्ण स्क्रीन मोड में दृश्यता : Button style: - + बटन शैली : Icon size: - + आइकन आकार : Auto - + स्वतः @@ -6660,95 +6669,95 @@ Address: %2 Maximum size of item: - + वस्तु का अधिकतम आकार : No limit - + सीमाहीन Display toggle button - + चालू/बंद बटन दिखाएँ Edit Bookmarks Bar - + स्मृति चिन्ह पट्टी संपादन Bookmarks Bar - + स्मृति चिन्ह पट्टी Edit Sidebar - + साइड पट्टी संपादन Sidebar - + साइड पट्टी Toolbar - + साधन पट्टी Always visible - + सदैव दृश्यमान Always hidden - + सदैव अदृश्य Visible only when needed - + आवश्यकता अनुसार दृश्यमान Visible only when cursor is close to screen edge - + माउस कर्सर स्क्रीन किनारे के निकट होने पर दृश्यमान Follow style - + शैली का पालन करें Icon only - + केवल आइकन Text only - + केवल लेख Text beside icon - + आइकन के साथ लेख Text under icon - + आइकन के नीचे लेख Edit Entry - + प्रविष्टि संपादन @@ -6764,43 +6773,43 @@ Address: %2 Show search engine: - + खोज साधन दिखाएँ : Show search button: - + खोज बटन दिखाएँ : Global - + सर्वत्र Tab - + टैब Text: - + लेख : Option: - + विकल्प : Scope: - + सीमा : Blocked Elements: {amount} - + अवरुद्ध खंड : {मात्रा} @@ -6815,47 +6824,47 @@ Address: %2 Icon: - + आइकन : --- separator --- - + --- विभाजक --- --- spacer --- - + --- अंतरक --- Arbitrary List of Actions - + स्वेच्छित कार्य सूची List of Closed Tabs and Windows - + बंद किए गए टैब व विंडो की सूची Address Field - + पता क्षेत्र Configuration Widget (%1) - + विन्यास विजेट (%1) Configuration Widget - + विन्यास विजेट Content Blocking Details - + सामग्री अवरोध विवरण @@ -6865,98 +6874,98 @@ Address: %2 Menu Bar - + मेन्यू पट्टी Menu Button - + मेन्यू बटन Sidebar Panel Chooser - + साइड पट्टी पैनल चयन साधन Private Window Indicator - + निजी विंडो सूचक Progress Information (Document Progress) - + प्रगति सूचना (प्रलेख प्रगति) Progress Information (Total Progress) - + प्रगति सूचना (कुल प्रगति) Progress Information (Loaded Elements) - + प्रगति सूचना (लोड किए गए अनुखंड) Progress Information (Loading Speed) - + प्रगति सूचना (लोड गति) Progress Information (Elapsed Time) - + प्रगति सूचना (कार्यरत समय) Progress Information (Status Message) - + प्रगति सूचना (स्थिति संदेश) Search Field (%1) - + खोज क्षेत्र (%1) Search Field - + खोज क्षेत्र Window Resize Handle - + विंडो आकार परिवर्तन हैंडल Status Message Field - + स्थिति संदेश क्षेत्र Tab Bar - + टैब पट्टी Downloads Progress Information - + डाउनलोड प्रगति सूचना Zoom Slider - + आकार वर्धन साधन Invalid Bookmark - + अमान्य स्मृति चिन्ह Invalid Entry - + अमान्य प्रविष्टि @@ -6965,12 +6974,12 @@ Address: %2 Toggle Visibility - + दृश्यता चालू/बंद Customize - + अनुकूलन @@ -6985,12 +6994,12 @@ Address: %2 Reset to Defaults… - + डिफ़ॉल्ट पुनः स्थापित करें Remove… - + हटाएँ... @@ -6998,32 +7007,32 @@ Address: %2 Reset Toolbar - + साधन पट्टी पुनः सेट करें Do you really want to reset this toolbar to default configuration? - + क्या आप निश्चित ही इस साधन पट्टी को डिफ़ॉल्ट सेटिंग पर सेट करना चाहते हैं? Remove Toolbar - + साधन पट्टी हटाएँ Do you really want to remove this toolbar? - + क्या आप निश्चित ही यह साधन पट्टी हटाना चाहते हैं? Reset Toolbars - + साधन पट्टी पुनः सेट करें Do you really want to reset all toolbars to default configuration? - + क्या आप निश्चित ही सभी साधन पट्टी डिफ़ॉल्ट सेटिंग पर सेट करना चाहते हैं? @@ -7064,7 +7073,7 @@ Do you want to overwrite it? From: - + स्रोत : @@ -7075,12 +7084,12 @@ Do you want to overwrite it? %1 (download completed) - + %1 (डाउनलोड पूर्ण) %1 (%2% downloaded) - + %1 (%2% डाउनलोड पूर्ण) @@ -7091,12 +7100,12 @@ Do you want to overwrite it? Redownload - + पुनः डाउनलोड Open Folder - + फोल्डर खोलें @@ -7110,7 +7119,11 @@ Target: %2 Size: %3 Downloaded: %4 Progress: %5</div> - + <div style="white-space:pre;">स्रोत : %1 +लक्ष्य : %2 +आकार : %3 +डाउनलोड : %4 +प्रगति : %5</div> @@ -7138,12 +7151,12 @@ Progress: %5</div> From: - + स्रोत : Open with: - + इससे खोलें : @@ -7158,7 +7171,7 @@ Progress: %5</div> Opening %1 - + %1 खोलना जारी @@ -7168,12 +7181,12 @@ Progress: %5</div> %1 (download completed) - + %1 (डाउनलोड पूर्ण) %1 (%2% downloaded) - + %1 (%2% डाउनलोड पूर्ण) @@ -7181,7 +7194,7 @@ Progress: %5</div> Quick Download… - + त्वरित डाउनलोड... @@ -7191,7 +7204,7 @@ Progress: %5</div> Target: - + लक्ष्य : @@ -7201,7 +7214,7 @@ Progress: %5</div> Downloaded: - + डाउनलोड : @@ -7219,7 +7232,7 @@ Progress: %5</div> Redownload - + पुनः डाउनलोड @@ -7261,13 +7274,13 @@ Progress: %5</div> Started - + कार्यरत Finished - + पूर्ण @@ -7288,7 +7301,11 @@ Target: %2 Size: %3 Downloaded: %4 Progress: %5</div> - + <div style="white-space:pre;">स्रोत : %1 +लक्ष्य : %2 +आकार : %3 +डाउनलोड : %4 +प्रगति : %5</div> @@ -7306,12 +7323,12 @@ Progress: %5</div> Resume - + आरंभ करें Copy Transfer Information - + अंतरण सूचना कॉपी करें @@ -7321,7 +7338,7 @@ Progress: %5</div> Clear Finished Transfers - + पूर्ण अंतरण हटाएँ @@ -7335,7 +7352,8 @@ Progress: %5</div> Download completed: %1 - + डाउनलोड पूर्ण : +%1 @@ -7349,7 +7367,7 @@ Progress: %5</div> Show all Downloads - + सभी डाउनलोड दिखाएँ @@ -7358,18 +7376,18 @@ Progress: %5</div> Show Windows - + विंडोज दिखाएँ Otter Browser - + औटर ब्राउज़र Hide Windows - + विंडो अदृश्य करें @@ -7377,27 +7395,27 @@ Progress: %5</div> Check for Updates - + अपडेट खोजें Checking for update… - + अपडेट खोज जारी... Checking for updates… - + अपडेट खोज जारी... There are no new updates. - + कोई नई अपडेट नहीं है। Available updates: - + उपलब्ध अपडेट : @@ -7407,43 +7425,44 @@ Progress: %5</div> Download - + डाउनलोड Version %1 from %2 channel - + %2 चैनल से संस्करण %1 Some of the updates do not contain packages for your platform. Try to check for updates later or visit details page for more info. - + कुछ अपडेट में सम्मिलित पैकेज आपके सिस्टम हेतु नहीं हैं। कुछ समय उपरांत अपडेट खोजें या अधिक जानकारी हेतु विवरण पृष्ठ देखें। Downloading: - + डाउनलोड जारी : Download finished! - + डाउनलोड पूर्ण! Install - + इंस्टॉल New version of Otter Browser is ready to install. Click Install button to restart browser and install the update or close this dialog to install the update during next browser restart. - + औटर ब्राउज़र का नवीन संस्करण इंस्टॉल हेतु तैयार है। +अपडेट इंस्टॉल करने हेतु इंस्टॉल बटन पर क्लिक कर ब्राउज़र पुनः आरंभ करें या यह विंडो बंद कर अगले ब्राउज़र पुनः आरंभ पर अपडेट इंस्टॉल करें। Download failed! - + डाउनलोड विफल @@ -7471,32 +7490,32 @@ Click Install button to restart browser and install the update or close this dia Edit User Agent - + उपयोक्ता एजेंट संपादन Add User Agent - + उपयोक्ता एजेंट जोड़ें Placeholders - + स्थान पहचान साधन Platform - + सिस्टम Engine Version - + इंजन संस्करण Application Version - + अनुप्रयोग संस्करण @@ -7509,12 +7528,12 @@ Click Install button to restart browser and install the update or close this dia This tab has crashed. - + टैब कार्यप्रणाली निरस्त। Do you want to try to reload it? - + क्या आप इसे पुनः लोड करना चाहते हैं? @@ -7524,17 +7543,17 @@ Click Install button to restart browser and install the update or close this dia Failed to load requested web backend: %1 - + अनुरोधित वेब बैकएंड लोड करना विफल : %1 Select User Agent - + उपयोक्ता एजेंट चुनें Enter User Agent: - + उपयोक्ता एजेंट दर्ज करें : @@ -7562,7 +7581,7 @@ Click Install button to restart browser and install the update or close this dia Webpage wants to close this tab, do you want to allow to close it? - + वेब पृष्ठ यह टैब बंद करना चाहता है, क्या आप भी इसे बंद करना चाहते हैं? @@ -7577,47 +7596,47 @@ Click Install button to restart browser and install the update or close this dia HTML file with all resources (*.html *.htm) - + सभी सामग्री युक्त एचटीएमएल फाइल (*.html *.htm) Web archive (*.mht) - + वेब संग्रह (*.mht) PDF document (*.pdf) - + पीडीएफ प्रलेख (*.pdf) Open Image in New Background Tab (%1) - + चित्र नए बैकग्राउंड टैब में खोलें (%1) Open Image in New Tab (%1) - + चित्र नए टैब में खोलें (%1) Playback Rate: %1x - + परिचालन दर : %1x Page Default - + पृष्ठ डिफ़ॉल्ट Never Reload - + कभी पुनः लोड न करें Reload Every: %n second(s) - + पुनः लोड प्रति : %n सेकंडपुनः लोड प्रति : %n सेकंड @@ -7630,7 +7649,7 @@ Click Install button to restart browser and install the update or close this dia Information - जानकारी + सूचना @@ -7650,12 +7669,12 @@ Click Install button to restart browser and install the update or close this dia Elements: - + अनुखंड : Download date: - + डाउनलोड दिनांक : @@ -7681,47 +7700,47 @@ Click Install button to restart browser and install the update or close this dia Set cookies: - + कुकीज़ सेट करें : Set third-party cookies: - + अन्य स्रोत कुकीज़ सेट करें : Show notifications: - + अधिसूचना दिखाएँ : Access your location: - + भौगोलिक स्थान अभिगम स्वीकार्य : Load plugins: - + प्लगिन लोड करें : Load images: - + चित्र लोड करें : Use JavaScript: - + जावा स्क्रिप्ट उपयोग करें : Show pop-up windows: - + पॉप-अप विंडोज दिखाएँ : Enter full screen mode: - + पूर्ण स्क्रीन मोड सक्रिय : @@ -7731,52 +7750,52 @@ Click Install button to restart browser and install the update or close this dia Certificate - + प्रमाणपत्र Issued to: - + इस हेतु जारी : Issued by: - + इस द्वारा जारी : Issued on: - + इस दिनांक को जारी : Expires on: - + इस दिनांक को समाप्त : Cipher - + बीजलेख Protocol: - + प्रोटोकॉल : Authentication method: - + पुष्टिकरण विधि : Encryption method: - + एन्क्रिप्शन विधि : Key exchange method: - + कुंजी विनिमय विधि : @@ -7786,38 +7805,38 @@ Click Install button to restart browser and install the update or close this dia (unknown) - + (अज्ञात) This website was marked as fraud. - + यह वेबसाइट छलपूर्ण के रूप में चिन्हित है। Your connection with this website is not private. - + इस वेबसाइट हेतु आपका कनेक्शन निजी नहीं है। Your connection with this website is private. - + इस वेबसाइट हेतु आपका कनेक्शन निजी है। You are viewing content from your local filesystem. - + प्रदर्शित सामग्री आपके लोकल फाइल सिस्टम की है। You are viewing safe page from Otter Browser. - + प्रदर्शित पृष्ठ औटर ब्राउज़र का सुरक्षित पृष्ठ है। No information. - + कोई सूचना नहीं। @@ -7833,12 +7852,12 @@ Click Install button to restart browser and install the update or close this dia Only existing - + केवल मौजूदा Only read existing - + केवल मौजूदा रीड करें @@ -7869,12 +7888,12 @@ Click Install button to restart browser and install the update or close this dia On demand - + आवश्यकता अनुसार Only cached - + केवल कैश @@ -7886,7 +7905,7 @@ Click Install button to restart browser and install the update or close this dia Always (open in backgound) - + सदैव (बैकग्राउंड में खोलें) @@ -7903,12 +7922,12 @@ Click Install button to restart browser and install the update or close this dia URL - + यूआरएल Information for %1 - + %1 हेतु सूचना @@ -7935,7 +7954,7 @@ Click Install button to restart browser and install the update or close this dia Override - + अधिलेखित करें @@ -7960,7 +7979,7 @@ Click Install button to restart browser and install the update or close this dia Pop-ups: - + पॉप-अप : @@ -7970,32 +7989,32 @@ Click Install button to restart browser and install the update or close this dia Keep until: - + संचय अवधि : Remember browsing history - + ब्राउज़िंग वृतांत स्मरण करें Enable cookies - + कुकीज़ सक्रिय Accept cookies: - + कुकीज़ स्वीकारें : Do Not Track: - + कोई ट्रैकिंग नहीं : Cookies: - + कुकीज़ : @@ -8015,37 +8034,37 @@ Click Install button to restart browser and install the update or close this dia Accept third-party cookies: - + अन्य स्रोत कुकीज़ स्वीकारें : Scripting - + स्क्रिप्ट कार्य Allow to receive right mouse button clicks - + दायां माउस बटन क्लिक स्वीकार्य Allow changing of status field - + स्थिति पंक्ति परिवर्तन स्वीकार्य Allow to close windows: - + विंडो बंद करना स्वीकार्य : Allow script to hide address bar - + स्क्रिप्ट द्वारा विंडो अदृश्य करना स्वीकार्य Allow moving and resizing of windows - + विंडो अंतरण व आकार परिवर्तन स्वीकार्य @@ -8055,12 +8074,12 @@ Click Install button to restart browser and install the update or close this dia Allow access to clipboard - + क्लिपबोर्ड अभिगम स्वीकार्य Allow to enter full screen mode: - + पूर्ण स्क्रीन मोड स्वीकार्य : @@ -8070,22 +8089,22 @@ Click Install button to restart browser and install the update or close this dia Send referrer information - + रेफर कर्ता सूचना भेजें Proxy: - + प्रॉक्सी : User Agent: - + उपयोक्ता एजेंट : Content Blocking - + सामग्री अवरोध @@ -8095,7 +8114,7 @@ Click Install button to restart browser and install the update or close this dia Enable custom rules - + अनुकूलित नियम सक्रिय @@ -8132,7 +8151,7 @@ Click Install button to restart browser and install the update or close this dia Cached images - + कैश चित्र @@ -8147,7 +8166,7 @@ Click Install button to restart browser and install the update or close this dia On demand - + आवश्यकता अनुसार @@ -8172,28 +8191,28 @@ Click Install button to restart browser and install the update or close this dia Inform websites that I do not want to be tracked - + ट्रैकिंग अस्वीकृति हेतु वेबसाइट को सूचित करें Inform websites that I allow tracking - + ट्रैकिंग स्वीकृति हेतु वेबसाइट को सूचित करें Do not inform websites about my preference - + इच्छित सेटिंग वेबसाइट को सूचित न करें Only existing - + केवल मौजूदा Only read existing - + केवल मौजूदा रीड करें @@ -8203,7 +8222,7 @@ Click Install button to restart browser and install the update or close this dia Current session is closed - + वर्तमान सत्र बंद है @@ -8269,43 +8288,43 @@ Click Install button to restart browser and install the update or close this dia New tab - + नया टैब New private tab - + नया निजी टैब New window - + नई विंडो New private window - + नई निजी विंडो Failed to run command "%1", file is not executable - + कमांड "%1" निष्पादन विफल, फाइल निष्पादन योग्य नहीं है Failed to run command "%1" (arguments: "%2") - + कमांड "%1" निष्पादन विफल (मानदंड : "%2") No valid suffix for given MIME type: %1 - + निर्दिष्ट माइम प्रकार हेतु कोई मान्य प्रत्यय नहीं : %1 Failed to load a valid application path for MIME type %1: %2 - + माइम प्रकार %1 हेतु मान्य अनुप्रयोग पथ लोड करना विफल : %2 @@ -8314,7 +8333,7 @@ Click Install button to restart browser and install the update or close this dia Arrange - + व्यवस्थित करें @@ -8323,14 +8342,14 @@ Click Install button to restart browser and install the update or close this dia Zoom %1% - + आकार वर्धन %1% actions Reload Every - + प्रत्येक को पुनः लोड करें 1 Minute @@ -8363,22 +8382,22 @@ Click Install button to restart browser and install the update or close this dia Run Macro - + मैक्रो निष्पादित करें Run Arbitrary List of Actions - + स्वेच्छित कार्य सूची निष्पादित करें Set Option - + सेट विकल्प Set, Reset or Toggle Option - + सेट, पुनः सेट या चालू/बंद विकल्प @@ -8388,7 +8407,7 @@ Click Install button to restart browser and install the update or close this dia New Private Tab - + नया निजी टैब @@ -8398,7 +8417,7 @@ Click Install button to restart browser and install the update or close this dia New Private Window - + नई निजी विंडो @@ -8413,68 +8432,68 @@ Click Install button to restart browser and install the update or close this dia Clone Tab - + टैब प्रतिरूपित करें Peek Tab - + टैब का लघु-अवलोकन Pin Tab - + टैब पिन करें Detach Tab - + टैब पृथक करें Maximize - + विस्तृत करें Maximize Tab - + टैब विस्तृत करें Minimize - + संक्षिप्त करें Minimize Tab - + टैब संक्षिप्त करें Restore - + पुनः स्थापित करें Restore Tab - + टैब पुनः स्थापित करें Stay on Top - + शीर्ष पर रखें Clear Tab History - + टैब वृतांत रिक्त करें Remove Local Tab History - + लोकल टैब वृतांत हटाएँ @@ -8482,23 +8501,23 @@ Click Install button to restart browser and install the update or close this dia Purge Tab History - + टैब वृतांत हटाएँ Remove Local and Global Tab History - + लोकल व सर्वत्र टैब वृतांत हटाएँ Mute Tab Media - + टैब मीडिया की ध्वनि बंद Suspend Tab - + टैब सुप्त करें @@ -8508,67 +8527,67 @@ Click Install button to restart browser and install the update or close this dia Close Other Tabs - + अन्य टैब बंद करें Close All Private Tabs - + सभी निजी टैब बंद करें Close All Private Tabs in Current Window - + वर्तमान विंडो के सभी निजी टैब बंद करें Close Private Tabs and Windows - + निजी टैब व विंडो बंद करें Reopen Previously Closed Tab - + बंद किया टैब पुनः खोलें Maximize All - + सभी को विस्तृत करें Minimize All - + सभी को संक्षिप्त करें Restore All - + सभी को पुनः स्थापित करें Cascade - + शाखानुमा विस्तार Tile - + विंडो अनुभाग Close Window - + विंडो बंद करें Reopen Previously Closed Window - + बंद की गई विंडो पुनः खोलें Manage Sessions… - + सत्र प्रबंधन... @@ -8578,7 +8597,7 @@ Click Install button to restart browser and install the update or close this dia Open URL - + यूआरएल खोलें @@ -8600,7 +8619,7 @@ Click Install button to restart browser and install the update or close this dia Open in This Tab - + इस टैब में खोलें @@ -8612,7 +8631,7 @@ Click Install button to restart browser and install the update or close this dia Open in New Tab - + नए टैब में खोलें @@ -8624,7 +8643,7 @@ Click Install button to restart browser and install the update or close this dia Open in New Background Tab - + नए बैकग्राउंड टैब में खोलें @@ -8646,31 +8665,31 @@ Click Install button to restart browser and install the update or close this dia Open in New Background Window - + नई बैकग्राउंड विंडो में खोलें Open in New Private Tab - + नए निजी टैब में खोलें Open in New Private Background Tab - + नए निजी बैकग्राउंड टैब में खोलें Open in New Private Window - + नई निजी विंडो में खोलें Open in New Private Background Window - + नई निजी बैकग्राउंड विंडो में खोलें @@ -8681,7 +8700,7 @@ Click Install button to restart browser and install the update or close this dia Bookmark Link… - + स्मृति चिन्ह लिंक... @@ -8696,32 +8715,32 @@ Click Install button to restart browser and install the update or close this dia Go to This Address - + इस पते पर जाएँ Open Frame - + फ्रेम खोलें Open Frame in This Tab - + इस टैब में फ्रेम खोलें Open Frame in New Tab - + नए टैब में फ्रेम खोलें Open Frame in New Background Tab - + नए बैकग्राउंड टैब में फ्रेम खोलें Copy Frame Link to Clipboard - + फ्रेम लिंक क्लिपबोर्ड में कॉपी करें @@ -8733,28 +8752,28 @@ Click Install button to restart browser and install the update or close this dia Reload Frame - + फ्रेम पुनः लोड करें View Frame Source - + फ्रेम स्रोत देखें Open Image - + चित्र खोलें Open Image In New Tab - + चित्र नए टैब में खोलें Open Image in New Background Tab - + चित्र नए बैकग्राउंड टैब में खोलें @@ -8764,22 +8783,22 @@ Click Install button to restart browser and install the update or close this dia Copy Image to Clipboard - + चित्र क्लिपबोर्ड में कॉपी करें Copy Image Link to Clipboard - + चित्र लिंक क्लिपबोर्ड में कॉपी करें Reload Image - + चित्र पुनः लोड करें Image Properties… - + चित्र विशेषताएँ... @@ -8789,69 +8808,69 @@ Click Install button to restart browser and install the update or close this dia Copy Media Link to Clipboard - + मीडिया लिंक क्लिपबोर्ड में कॉपी करें Show Controls - + नियंत्रण साधन दिखाएँ Show Media Controls - + मीडिया नियंत्रण साधन दिखाएँ Looping - + पुनरावृत्ति Playback Looping - + परिचालन पुनरावृत्ति Play - + चालू Play Media - + मीडिया चालू Mute - + ध्वनि बंद Mute Media - + मीडिया ध्वनि बंद Playback Rate - + परिचालन दर Log In - + लॉगिन Go - + उपयोग करें Go to URL - + यूआरएल पर जाएँ @@ -8866,53 +8885,53 @@ Click Install button to restart browser and install the update or close this dia Forward - + आगे Go Forward - + आगे Go to History Entry - + वृतांत प्रविष्टि पर जाएँ Go to Page or Search - + पृष्ठ पर जाएँ या खोजें Go to Home Page - + होम पृष्ठ पर जाएँ Go to Parent Directory - + स्रोत डायरेक्टरी पर जाएँ Rewind - + पुनः वापस Rewind History - + वृतांत पुनः प्रदर्शित Fast Forward - + त्वरित आगे Remove History Entry - + वृतांत प्रविष्टि हटाएँ @@ -8922,52 +8941,52 @@ Click Install button to restart browser and install the update or close this dia Stop Scheduled Page Reload - + निर्धारित पृष्ठ पुनः लोड रोकें Stop All Pages - + सभी पृष्ठ रोकें Reload or Stop - + पुनः लोड करें या रोकें Reload and Bypass Cache - + पुनः लोड कर कैश अनदेखी करें Reload All Tabs - + सभी टैब पुनः लोड करें Schedule Page Reload - + पृष्ठ पुनः लोड निर्धारण Show Context Menu - + संदर्भ मेन्यू दिखाएँ Undo - + पूर्ववत Redo - + पुनः करें Cut - + कट @@ -8977,27 +8996,27 @@ Click Install button to restart browser and install the update or close this dia Copy as Plain Text - + सामान्य टेक्स्ट रूप में कॉपी करें Copy Address - + पता कॉपी करें Copy to Note - + नोट में कॉपी करें Paste - + पेस्ट Paste and Go - + पेस्ट कर खोजें @@ -9012,113 +9031,113 @@ Click Install button to restart browser and install the update or close this dia Deselect - + अचयनित करें Clear All - + सभी रिक्त करें Check Spelling - + वर्तनी जाँच Find… - + खोजें... Find Next - + आगामी खोजें Find Previous - + पूर्व खोजें Quick Find - + त्वरित खोज Search - + खोज Create Search… - + खोज सृजन... Zoom In - + आकार बढ़ाएँ Zoom Out - + आकार घटाएँ Zoom Original - + वास्तविक आकार Go to Start of the Page - + पृष्ठ के आरंभ पर जाएँ Go to the End of the Page - + पृष्ठ के के अंत पर जाएँ Page Up - + पृष्ठ ऊपर Page Down - + पृष्ठ नीचे Page Left - + पृष्ठ बाएं Page Right - + पृष्ठ दाएं Enter Drag Scroll Mode - + ड्रैग स्क्रॉल मोड सक्रिय Enter Move Scroll Mode - + सतत स्क्रॉल मोड सक्रिय Exit Scroll Mode - + स्क्रॉल मोड बंद करें Print… - + प्रिंट... @@ -9128,77 +9147,77 @@ Click Install button to restart browser and install the update or close this dia Take Screenshot - + स्क्रीनशॉट लें Activate Address Field - + पता क्षेत्र सक्रिय करें Activate Search Field - + खोज क्षेत्र सक्रिय करें Activate Content - + सामग्री चालू करें Go to Previously Used Tab - + पूर्व प्रयुक्त टैब पर जाएँ Go to Least Recently Used Tab - + अल्पतम प्रयुक्त टैब पर जाएँ Activate Tab - + टैब चालू करें Go to Tab on Left - + बायां टैब उपयोग करें Go to Tab on Right - + दायां टैब उपयोग करें Activate Window - + विंडो चालू करें Manage Bookmarks - + स्मृति चिन्ह प्रबंधन Bookmark Page… - + पृष्ठ का स्मृति चिन्ह बनाएँ... Bookmark All Open Pages - + सभी कार्यरत पृष्ठों का स्मृति चिन्ह बनाएँ Open Bookmark - + स्मृति चिन्ह खोलें Quick Bookmark Access - + तीव्र स्मृति चिन्ह अभिगम @@ -9208,7 +9227,7 @@ Click Install button to restart browser and install the update or close this dia Load All Plugins on the Page - + पृष्ठ पर सभी प्लगिन लोड करें @@ -9218,27 +9237,27 @@ Click Install button to restart browser and install the update or close this dia Enable Referrer - + रेफर कर्ता सक्रिय View Source - + स्रोत देखें Inspect Page - + पृष्ठ परीक्षण Inspect Element… - + अनुखंड परीक्षण... Work Offline - + ऑफलाइन उपयोग @@ -9249,27 +9268,27 @@ Click Install button to restart browser and install the update or close this dia Show Tab Switcher - + टैब परिवर्तन साधन दिखाएँ Show Toolbar - + साधन पट्टी दिखाएँ Show Menubar - + मेन्यू पट्टी दिखाएँ Show Tabbar - + टैब पट्टी दिखाएँ Show Sidebar - + साइड पट्टी दिखाएँ @@ -9279,17 +9298,17 @@ Click Install button to restart browser and install the update or close this dia Lock Toolbars - + साधन पट्टी लॉक करें Reset to Defaults… - + डिफ़ॉल्ट पुनः स्थापित करें Reset Toolbars to Defaults… - + साधन पट्टी को डिफ़ॉल्ट पर पुनः सेट करें... @@ -9299,32 +9318,32 @@ Click Install button to restart browser and install the update or close this dia Show Specified Panel in Sidebar - + निर्दिष्ट पैनल साइड पट्टी में दिखाएँ Open Panel as Tab - + पैनल को टैब रूप में खोलें Open Curent Sidebar Panel as Tab - + वर्तमान साइड पट्टी पैनल को टैब रूप में खोलें Content Blocking… - + सामग्री अवरोध... View History - + वृतांत देखें Clear History… - + वृतांत रिक्त करें... @@ -9356,27 +9375,27 @@ Click Install button to restart browser and install the update or close this dia Website Preferences… - + वेबसाइट सेटिंग्स Quick Preferences - + त्वरित सेटिंग्स Reset Options - + पुनः सेट हेतु विकल्प Website Information… - + वेबसाइट सूचना... Website Certificate Information… - + वेबसाइट प्रमाणपत्र सूचना... @@ -9386,97 +9405,97 @@ Click Install button to restart browser and install the update or close this dia Check for Updates… - + अपडेट खोजें... Diagnostic Report… - + निदान हेतु रिपोर्ट... About Otter… - औटर के बारे में ... + औटर के बारे में... About Qt… - + क्यूटी के बारे में... Exit - + बंद करें Set %1 - + %1 सेट करें Set %1 for %2 - + %2 हेतु %1 सेट करें Reset %1 - + %1 पुनः सेट करें Reset %1 for %2 - + %2 हेतु %1 पुनः सेट करें Toggle %1 - + %1 चालू/बंद Toggle %1 for %2 - + %2 हेतु %1 चालू/बंद Menu Bar - + मेन्यू पट्टी Bookmarks Bar - + स्मृति चिन्ह पट्टी Tab Bar - + टैब पट्टी Address Bar - + पता पट्टी Navigation Bar - + संचालन पट्टी Progress Bar - + प्रगति पट्टी Sidebar - + साइड पट्टी Status Bar - + स्थिति पट्टी @@ -9488,13 +9507,13 @@ Click Install button to restart browser and install the update or close this dia Bookmarks - पृष्ठ स्मृतियाँ + स्मृति चिन्ह Transfers - + अंतरण @@ -9506,12 +9525,12 @@ Click Install button to restart browser and install the update or close this dia Remove Bookmark - + स्मृति चिन्ह हटाएँ Remove Cookie - + कुकीज़ हटाएँ @@ -9521,7 +9540,7 @@ Click Install button to restart browser and install the update or close this dia Copy address of source page - + स्रोत पृष्ठ का पता कॉपी करें @@ -9541,7 +9560,7 @@ Click Install button to restart browser and install the update or close this dia View - + दृश्य @@ -9561,7 +9580,7 @@ Click Install button to restart browser and install the update or close this dia Print - + प्रिंट @@ -9571,7 +9590,7 @@ Click Install button to restart browser and install the update or close this dia Frame - + फ्रेम @@ -9581,57 +9600,57 @@ Click Install button to restart browser and install the update or close this dia Closed Tabs and Windows - + टैब व विंडो बंद करें Dictionaries - + शब्दकोश Import and Export - + आयात व निर्यात Import Opera Bookmarks… - + ओपेरा स्मृति चिन्ह आयात... Import HTML Bookmarks… - + एचटीएमएल स्मृति चिन्ह आयात... Import OPML Feeds… - + ओपीएमएल समाचार आयात... Import Opera Notes… - + ओपेरा नोट्स आयात... Import Opera Search Engines… - + ओपेरा खोज साधन आयात... Import Opera Session… - + ओपेरा सत्र आयात... Insert Note - + नोट जोड़ें Open with - + इससे खोलें @@ -9641,7 +9660,7 @@ Click Install button to restart browser and install the update or close this dia Search Using - + इस द्वारा खोजें @@ -9656,42 +9675,42 @@ Click Install button to restart browser and install the update or close this dia Toolbars - + साधन पट्टी User Agent - + उपयोक्ता एजेंट Validate Using - + इस द्वारा प्रमाणीकरण Tabs and Windows - + टैब व विंडो Keep Cookie Until - + कुकीज़ संचय अवधि Accept Cookies - + कुकीज़ स्वीकारें Accept Third-party Cookies - + अन्य स्रोत कुकीज़ स्वीकारें Geolocation - + भौगोलिक स्थान @@ -9701,17 +9720,17 @@ Click Install button to restart browser and install the update or close this dia Capture Audio - + ऑडियो रिकॉर्ड करें Capture Video - + वीडियो रिकॉर्ड करें Playback Audio - + परिचालन ऑडियो @@ -9726,17 +9745,17 @@ Click Install button to restart browser and install the update or close this dia Pointer Lock - + पॉइंटर लॉक Closing Windows by JavaScript - + जावास्क्रिप्ट द्वारा विंडो बंद करना Pop-Ups - + पॉप-अप @@ -9747,22 +9766,22 @@ Click Install button to restart browser and install the update or close this dia This Folder - + यह फोल्डर Ask What to Do - + इच्छित कार्य पूछें Always Allow - + सदैव स्वीकार्य Always Deny - + सदैव अस्वीकार्य @@ -9772,7 +9791,7 @@ Click Install button to restart browser and install the update or close this dia Current Session is Closed - + वर्तमान सत्र बंद है @@ -9782,12 +9801,12 @@ Click Install button to restart browser and install the update or close this dia Only Existing - + केवल मौजूदा Only Read Existing - + केवल मौजूदा रीड करें @@ -9807,7 +9826,7 @@ Click Install button to restart browser and install the update or close this dia Only Cached - + केवल कैश @@ -9817,7 +9836,7 @@ Click Install button to restart browser and install the update or close this dia On Demand - + आवश्यकता अनुसार @@ -9847,7 +9866,7 @@ Click Install button to restart browser and install the update or close this dia Default Style - + डिफ़ॉल्ट शैली @@ -9857,22 +9876,22 @@ Click Install button to restart browser and install the update or close this dia Add Toolbar… - + साधन पट्टी जोड़ें... Add Bookmarks Bar… - + स्मृति चिन्ह पट्टी जोड़ें... Add Sidebar… - + साइड पट्टी जोड़ें... Custom User Agent… - + अनुकूलित उपयोक्ता एजेंट... @@ -9882,47 +9901,47 @@ Click Install button to restart browser and install the update or close this dia Edit Link Bookmark… - + लिंक हेतु स्मृति चिन्ह संपादन... Open Image in This Tab - + इस टैब में चित्र खोलें Open Image in New Tab - + चित्र नए टैब में खोलें Open Image in New Window - + चित्र नई विंडो में खोलें Open Image in New Background Window - + चित्र नई बैकग्राउंड विंडो में खोलें Open Image in New Private Tab - + चित्र नए निजी टैब में खोलें Open Image in New Private Background Tab - + चित्र नए निजी बैकग्राउंड टैब में खोलें Open Image in New Private Window - + चित्र नई निजी विंडो में खोलें Open Image in New Private Background Window - + चित्र नई निजी बैकग्राउंड विंडो में खोलें @@ -9942,42 +9961,42 @@ Click Install button to restart browser and install the update or close this dia Copy Audio Link to Clipboard - + ऑडियो लिंक क्लिपबोर्ड में कॉपी करें Pause - + स्थगित Unmute - + ध्वनि चालू Unmute Tab Media - + टैब मीडिया की ध्वनि चालू Purge History Entry - + वृतांत प्रविष्टि हटाएँ Edit Bookmark… - + स्मृति चिन्ह संपादन... Add Bookmark… - पृष्ठ स्मृति जोड़ें ... + स्मृति चिन्ह जोड़ें ... Unpin Tab - + टैब पिन से हटाएँ @@ -9995,7 +10014,7 @@ Click Install button to restart browser and install the update or close this dia Bookmarks - पृष्ठ स्मृतियाँ + स्मृति चिन्ह @@ -10035,7 +10054,7 @@ Click Install button to restart browser and install the update or close this dia Page Information - पृष्ठ जानकारी + पृष्ठ सूचना @@ -10063,39 +10082,39 @@ Click Install button to restart browser and install the update or close this dia Failed to open content blocking profile file: %1 - + सामग्री अवरोध प्रोफाइल फाइल खोलना विफल : %1 Failed to update content blocking profile: %1 - + सामग्री अवरोध प्रोफाइल फाइल अपडेट करना विफल : %1 Failed to update content blocking profile: checksum mismatch - + सामग्री अवरोध प्रोफाइल फाइल अपडेट करना विफल : चेकसम मिलान विफल Failed to update content blocking profile, update URL is empty - + सामग्री अवरोध प्रोफाइल फाइल अपडेट करना विफल, अपडेट यूआरएल रिक्त है Failed to update content blocking profile, update URL (%1) is invalid - + सामग्री अवरोध प्रोफाइल फाइल अपडेट करना विफल, अपडेट यूआरएल (%1) अमान्य है Failed to find User Script file: %1 - + उपयोक्ता स्क्रिप्ट फाइल खोज विफल : %1 URL to open - + खोलने हेतु यूआरएल @@ -10110,64 +10129,66 @@ Click Install button to restart browser and install the update or close this dia Restores session <session> if it exists - + <session> मौजूद होने पर सत्र पुनः स्थापित होगा Starts private session - + निजी सत्र आरंभ हेतु Forces session chooser dialog - + सत्र चयन विंडो बाध्य करें Sets profile and cache paths to directories inside the same directory as that of application binary - + अनुप्रयोग बाइनरी युक्त डायरेक्टरी में ही प्रोफाइल व कैश पथ हेतु डायरेक्टरी सेट करता है Loads URL in new tab - + यूआरएल नए टैब में लोड करें Loads URL in new private tab - + यूआरएल नए निजी टैब में लोड करें Loads URL in new window - + यूआरएल नई विंडो में लोड करें Loads URL in new private window - + यूआरएल नई निजी विंडो में लोड करें Tells application to avoid writing data to disk - + अनुप्रयोग द्वारा डिस्क पर डेटा राइट प्रक्रिया रोकें Prints out diagnostic report and exits application - + निदान हेतु रिपोर्ट प्रिंट कर अनुप्रयोग बंद करें Failed to parse entry of proxy auto-config (PAC): %1 - + प्रॉक्सी स्वतः-विन्यास (PAC) की प्रविष्टि प्राप्यता विफल : %1 Failed to install update Updater: %1 Script: %2 - + अपडेट इंस्टॉल करना विफल +अपडेट साधन : %1 +स्क्रिप्ट : %2 @@ -10182,42 +10203,42 @@ Script: %2 Unable to check for updates. Invalid URL: %1 - + अपडेट खोज विफल। अमान्य यूआरएल : %1 Unable to check for updates: %1 - + अपडेट खोज विफल : %1 Unable to parse version number: %1 - + संस्करण संख्या प्राप्यता विफल : %1 Downloaded update script is not valid: %1 - + डाउनलोड की गई अपडेट स्क्रिप्ट अमान्य है : %1 Unable to download update: %1 - + अपडेट डाउनलोड करना विफल : %1 Failed to open User Script file: %1 - + उपयोक्ता स्क्रिप्ट फाइल खोलना विफल : %1 Invalid match rule for User Script: %1 - + उपयोक्ता स्क्रिप्ट फाइल हेतु मिलान नियम अमान्य है : %1 Failed to locate header of User Script file - + उपयोक्ता स्क्रिप्ट फाइल के शीर्ष लेख की खोज विफल @@ -10231,7 +10252,8 @@ Script: %2 Request blocked by rule from profile %1: %2 - + प्रोफाइल %1 के नियम द्वारा अनुरोध अवरुद्ध : +%2 @@ -10243,27 +10265,28 @@ Script: %2 Failed to run File Associations Manager, error code: %1 Application ID: %2 - + फाइल संबंध प्रबंधक निष्पादन विफल, त्रुटि कोड : %1 +अनुप्रयोग आईडी : %2 Failed to run File Associations Manager, error code: %1 - + फाइल संबंध प्रबंधक निष्पादन विफल, त्रुटि कोड : %1 Failed to register application to system registry: %1, %2 - + सिस्टम रजिस्ट्री में अनुप्रयोग पंजीकरण विफल : %1, %2 Failed to load custom rules: invalid adblock header - + अनुकूलित नियम लोड करना विफल, अमान्य एडब्लॉक शीर्ष लेख Failed to create a file with custom rules: %1 - + अनुकूलित नियम युक्त फाइल बनाना विफल : %1 @@ -10281,7 +10304,7 @@ Application ID: %2 Search Engines - + खोज साधन @@ -10294,17 +10317,17 @@ Application ID: %2 Feed Updated - + समाचार अपडेट पूर्ण Feed update was completed - + समाचार अपडेट सफलतापूर्वक पूर्ण Download Completed - + डाउनलोड पूर्ण @@ -10319,7 +10342,7 @@ Application ID: %2 Update is available to be downloaded - + डाउनलोड हेतु अपडेट उपलब्ध है @@ -10348,12 +10371,12 @@ Application ID: %2 Default User Agent - + डिफ़ॉल्ट उपयोक्ता एजेंट Mask as {name} - + {नाम} के रूप में आवरण @@ -10373,67 +10396,67 @@ Application ID: %2 You tried to access the address <a href="%1">%1</a>, which was blocked by content blocker. - + आपके द्वारा पता <a href="%1">%1</a> अभिगम का प्रयास किया गया, जिसे सामग्री अवरोध ने अवरुद्ध किया। The owner of <strong>%1</strong> has configured their page improperly. To protect your information from being stolen, connection to this website was aborted. - + <strong>%1</strong> के निर्माता द्वारा पृष्ठ विन्यास अनुचित है। आपकी सूचना चोरी होने से रोकने के लिए इस वेबसाइट हेतु कनेक्शन निरस्त किया गया। This web page at <strong>%1</strong> has been reported as a web forgery. To protect your information from being stolen, connection to this website was aborted. - + वेब पृष्ठ <strong>%1</strong> छलपूर्ण वेबसाइट के रूप में चिन्हित है। आपकी सूचना चोरी होने से रोकने के लिए इस वेबसाइट हेतु कनेक्शन निरस्त किया गया। You tried to access the address <a href="%1">%1</a>, which is currently unavailable. Please make sure that the web address (URL) is correctly spelled and punctuated, then try reloading the page. - + आपके द्वारा अभिगम किया गया पता <a href="%1">%1</a> अभी अनुपलब्ध है। सुनिश्चित करें कि वेब पता (यूआरएल) उचित है, व फिर पृष्ठ को पुनः लोड करें। Check the file name for capitalization or other typing errors. - + फाइल नाम में वर्तनी व अन्य टाइपिंग त्रुटि जाँचें। Check to see if the file was moved, renamed or deleted. - + जाँचें कि फाइल को अंतरित, नाम परिवर्तित या हटाया गया है। Check the address for typing errors. - + पते हेतु टाइपिंग त्रुटि जाँचें। Make sure your internet connection is active and check whether other applications that rely on the same connection are working. - + सुनिश्चित करें कि इंटरनेट कनेक्शन सक्रिय है व समान नेटवर्क उपयोग कर रहे अन्य अनुप्रयोग उचित रूप से कार्यरत हैं। Check that the setup of any internet security software is correct and does not interfere with ordinary web browsing. - + सुनिश्चित करें कि इंटरनेट सुरक्षा सॉफ्टवेयर की सेटिंग्स उचित है व सामान्य वेब ब्राउज़िंग को किसी रूप में बाधित नहीं कर रही हैं। Try pressing the F12 key on your keyboard and disabling proxy servers, unless you know that you are required to use a proxy to connect to the internet, and then reload the page. - + इंटरनेट कनेक्शन हेतु प्रॉक्सी आवश्यक होने की स्थिति में कुंजीपटल द्वारा F12 कुंजी दर्ज कर प्रॉक्सी सर्वर निष्क्रिय करें व फिर पृष्ठ को पुनः लोड करें। Address blocked - + अवरुद्ध पता Connection is insecure - + असुरक्षित कनेक्शन Connection refused - + कनेक्शन अस्वीकृत @@ -10443,17 +10466,17 @@ Application ID: %2 Fraud attempt - + छलपूर्ण प्रयास Server not found - + सर्वर खोज विफल Unsupported address type - + असमर्थित पता प्रकार @@ -10473,12 +10496,12 @@ Application ID: %2 Today at %1 - + आज %1 पर Yesterday at %1 - + कल %1 पर @@ -10522,7 +10545,7 @@ Application ID: %2 This path is already used by different download, pick another one. - + यह पथ अन्य डाउनलोड द्वारा उपयोग में है, कोई अन्य चुनें। diff --git a/resources/translations/otter-browser_hr.qm b/resources/translations/otter-browser_hr.qm index e978a95d30d4523f59e23e6366265579ebfc0ebd..b3b5fb10860409d181b155fe630fbc08d4eb9cfc 100644 GIT binary patch delta 16062 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 bsrl2lm&YofJB-Ve=O!u7l)OA{;urr9MkxyO delta 7425 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 NcCj-L+*|kF{{iY7+ynps diff --git a/resources/translations/otter-browser_hr.ts b/resources/translations/otter-browser_hr.ts index 6a296433ed..72d0c245fc 100644 --- a/resources/translations/otter-browser_hr.ts +++ b/resources/translations/otter-browser_hr.ts @@ -169,7 +169,7 @@ Creating instance of deprecated action: %1 - + Stvaranje slučaja zapostavljene radnje: %1 @@ -248,12 +248,15 @@ Failed to import following User Script file(s): %1 - + Neupješno uvezivanje sljedeće datoteke korisničke skripte: +&1Neupješno uvezivanje sljedećih datoteka korisničkih skripti: +&1Neupješno uvezivanje sljedećih datoteka korisničkih skripti: +&1 You are about to irreversibly remove %n addon(s). - + Ovim ćete nepovratno ukloniti n% dodatakOvim ćete nepovratno ukloniti n% dodatakaOvim ćete nepovratno ukloniti n% dodataka @@ -355,7 +358,7 @@ Show feed list - + Prikaži popis izvora @@ -391,19 +394,21 @@ Profile directory (%1) is not writable, application will be running in read-only mode. - + Adresar profila (%1) nije moguće izmjeniti, aplikacija će se prebaciti u pregledni način rada Your profile directory (%1) ran out of free disk space. This may lead to malfunctions or even data loss. - + Vaš profilni adresar (%1) nema slobodnog prostora na disku. +Ovo bi moglo dovesti do neispravnosti ili gubitka podataka. Your profile directory (%1) is running low on free disk space (%2 remaining). This may lead to malfunctions or even data loss. - + Vaš profilni adresar (%1) nema slobodnog prostora na disku (%2 preostalo). +Ovo bi moglo dovesti do neispravnosti ili gubitku podataka. @@ -422,7 +427,7 @@ This may lead to malfunctions or even data loss. Continue in Read-only Mode - + Nastavi u preglednom načinu rada @@ -449,17 +454,17 @@ Neke web stranice moža rade neispravno ili uopće ne rade. Web backend: %1 %2. - + Web backend: %1 %2. SSL library not available. - + SSL biblioteka nije dostupna SSL library version: %1. - + SSL biblioteka verzija: %1 @@ -482,7 +487,7 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? You are about to quit while %n files are still being downloaded. - + Izaći ćete dok se %n datoteka još preuzima.Izaći ćete dok se %n datoteke još preuzimaju.Izaći ćete dok se %n datoteka još preuzima. @@ -528,7 +533,7 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Failed to parse feed file: %1 - + Neuspjelo raščlanjenje feed datoteke: %1 @@ -883,22 +888,22 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Failed to open notes file: %1 - + Neuspjelo otvaranje bilježne datoteke: %1 Failed to open bookmarks file: %1 - + Neuspjelo otvaranje datoteke straničnika: %1 Failed to load notes file: %1 - + Neuspjelo učitavanje bilježne datoteke: %1 Failed to load bookmarks file: %1 - + Neuspjelo učitavanje datoteke straničnika: %1 @@ -908,12 +913,12 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Failed to load notes file. - + Neuspjelo učitavanje bilježne datoteke. Failed to load bookmarks file. - + Neuspjelo učitavanje datoteke straničnika. @@ -996,7 +1001,7 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Copy Link to Clipboard - + Kopiraj poveznicu na međuspremnik @@ -1016,7 +1021,7 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Cache - + Predmemorija @@ -1024,17 +1029,17 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Certificate chain: - + Lanac certifikata: Certificate fields: - + Polja certifikata: Field value: - + Vrijednost polja: @@ -1044,12 +1049,12 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Invalid Certificate - + Nevalidan certifikat View Certificate for %1 - + Pregledaj certifikat za %1 @@ -1065,17 +1070,17 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? DER encoded X.509 certificates (*.der) - + DER kodirani X.509 certifikati (*.der) PEM encoded X.509 certificates (*.pem) - + PEM kodirani X.509 certifikati (*.pem) Text files (*.txt) - + Tekstualne datoteke (*.txt) @@ -1090,77 +1095,77 @@ Jeste li sigurni da ipak želite obnoviti ovu sesiju? Authority Key Identifier - + Identifikator Autoritetnog Ključa Subject Key Identifier - + Identifikator Subjektnog Ključa Key Usage - + Korištenje Ključa Certificate Policies - + Polica Certifikata Policy Mappings - + Polica Mapiranja Subject Alternative Name - + Alternativno Ime Subjekta Issuer Alternative Name - + Alternativno Ime Izdavatelja Subject Directory Attributes - + Atributi Subjektnog Adresara Basic Constraints - + Osnovna Ograničenja Name Constraints - + Ograničenja Imena Policy Constraints - + Ograničenja Police Extended Key Usage - + Produženo Korištenje Ključa CRL Distribution Points - + CRL Distribucijska Točka Inhibit Any Policy - + Spriječi Bilo Koju Policu Delta CRL Distribution Point - + Delta CRL Distribucijska Točka @@ -1253,27 +1258,27 @@ Exponent: %2 Public Key - + Javni ključ Extensions - + Proširenja Fingerprint - + Otisak prsta SHA-1 Fingerprint - + SHA-1 otisak prsta SHA-256 Fingerprint - + SHA-256 otisak prsta @@ -1384,12 +1389,12 @@ Exponent: %2 Current Value: - + Trenutna vrijednost: Default Value: - + Zadana vrijednost @@ -1399,7 +1404,7 @@ Exponent: %2 Restore Defaults - + Obnovi na zadano @@ -1478,7 +1483,7 @@ Do you want to save them? Choose option - + Odaberi opciju @@ -1670,48 +1675,48 @@ Do you want to save them? Profile Settings - + Postavke profila Title: - + Naslov: Category: - + Kategorija: Address: - + Adresa: Update interval: - + Interval ažuriranja: Never - + Nikada days - + dana Last update: - + Zadnje ažuriranje Advertisements - + Reklame @@ -1741,14 +1746,14 @@ Do you want to save them? Other - + Ostalo Error - + Greška @@ -1758,7 +1763,7 @@ Do you want to save them? Profile with name %1.txt already exists. - + Profil s imenom %1.txt već postoji. @@ -1786,12 +1791,12 @@ Do you want to save them? Profile was never updated - + Profil nikada nije ažuriran Profile was last updated more than one week ago - + Profil je zadnji put ažuriran prije više od jednog tjedna @@ -1799,7 +1804,7 @@ Do you want to save them? Custom Rules - + Prilagođena pravila @@ -1809,27 +1814,27 @@ Do you want to save them? Unknown - + Nepoznato Title - + Naslov Update Interval - + Interval ažuriranja Last Update - + Zadnje ažuriranje Advertisements - + Reklame @@ -1854,7 +1859,7 @@ Do you want to save them? Other - + Ostalo @@ -1924,17 +1929,17 @@ Do you want to save them? Allow accessing using JavaScript - + Dopusti pristupanje koristeći JavaScript Add Cookie - + Dodaj kolačić Edit Cookie - + Uredi kolačić @@ -2010,7 +2015,7 @@ Do you want to save them? Add Cookie… - + Dodaj kolačić... @@ -2025,12 +2030,12 @@ Do you want to save them? this session only - + samo ovu sesiju Cookies - + Kolačići @@ -2138,7 +2143,7 @@ Do you want to save them? <empty> - + <empty> @@ -2148,7 +2153,7 @@ Do you want to save them? Expand All - + Proširi sve @@ -2185,42 +2190,42 @@ Do you want to save them? Folder: - + Mapa: New… - + Novo... Title: - + Naslov: Change Icon… - + Promjeni ikonu Address: - + Adresa: Update interval: - + Interval ažuriranja: Never - + NIkada minutes - + minuta @@ -2230,12 +2235,12 @@ Do you want to save them? Error - + Greška Valid address is required. - + Potrebna je valjana adresa. @@ -2243,12 +2248,12 @@ Do you want to save them? Folder Name - + Ime mape Select name of new folder: - + Odaberite ime ove mape: @@ -2256,29 +2261,29 @@ Do you want to save them? OK - + U redu Cancel - + Otkaži Search… - + Traži... Categories - + Kategorije Title - + Naslov @@ -2295,7 +2300,7 @@ Do you want to save them? Question - + tanje @@ -2305,17 +2310,17 @@ Do you want to save them? Do you want to continue? - + Želite li nastaviti? Select Folder Name - + Odaberite ime mape Enter folder name: - + Unesite ime mape: diff --git a/resources/translations/otter-browser_nl.qm b/resources/translations/otter-browser_nl.qm index 109c4951d07def56f5400c854f7fcd21d296cb26..7c05868beea12ef0e9e2693c565a140371103225 100644 GIT binary patch delta 30202 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 Q6Y!k This session only - Alleen voor deze sessie + Alleen in deze sessie @@ -97,12 +97,12 @@ Preferred Webpage Language - Voorkeurstaal voor webpagina + Voorkeurstaal voor websites To add language, please choose one from list or type its code. - Als je een taal wilt toevoegen, kies er dan één uit de lijst of voer een taalcode in. + Als u een taal wilt toevoegen, kies er dan één uit de lijst of voer een taalcode in. @@ -169,7 +169,7 @@ Creating instance of deprecated action: %1 - Bezig met creëren van instantie van verouderde actie: %1 + Bezig met maken van instantie van verouderde actie: %1 @@ -177,12 +177,12 @@ Select Action - Actie selecteren + Actie kiezen Search… - Zoeken... + Zoeken… @@ -198,7 +198,7 @@ Search… - Zoeken... + Zoeken… @@ -209,7 +209,7 @@ Select Files - Bestanden selecteren + Bestanden kiezen @@ -226,13 +226,13 @@ User Script with this name already exists: %1 - Er bestaat al een gebruikersscript met deze naam: + Er is al een gebruikersscript met deze naam: %1 Do you want to replace it? - Wil je dit script vervangen? + Wilt u dit script vervangen? @@ -242,7 +242,7 @@ Error - Fout + Foutmelding @@ -255,17 +255,17 @@ You are about to irreversibly remove %n addon(s). - Je staat op het punt om %n extensie permanent te verwijderen.Je staat op het punt om %n extensies permanent te verwijderen. + U staat op het punt om %n extensie permanent te verwijderen.U staat op het punt om %n extensies permanent te verwijderen. Do you want to continue? - Wil je doorgaan? + Wilt u doorgaan? Add Addon… - Extensie toevoegen... + Extensie toevoegen… @@ -280,7 +280,7 @@ Remove Addon… - Extensie verwijderen... + Extensie verwijderen… @@ -327,12 +327,12 @@ Enter address or search… - Voer een adres of zoekopdracht in... + Voer een adres of zoekopdracht in… Remove this Icon - Dit pictogram verwijderen + Pictogram verwijderen @@ -352,7 +352,7 @@ Show website information - Website-informatie weergeven + Website-informatie tonen @@ -393,20 +393,20 @@ Profile directory (%1) is not writable, application will be running in read-only mode. - De profielmap (%1) is niet beschrijfbaar; de applicatie zal draaien in alleen-lezenmodus. + De profielmap, %1, is niet beschrijfbaar - Otter wordt gestart in de alleen-lezenmodus. Your profile directory (%1) ran out of free disk space. This may lead to malfunctions or even data loss. - Je profielmap (%1) heeft geen vrije ruimte meer. + Er is geen vrije ruimte meer in uw profielmap (%1). Dit kan leiden tot storingen of gegevensverlies. Your profile directory (%1) is running low on free disk space (%2 remaining). This may lead to malfunctions or even data loss. - Je profielmap (%1) heeft bijna geen vrije ruimte meer (%2 resterend). + Er is bijna geen vrije ruimte meer in uw profielmap (%1) (%2 resterend). Dit kan leiden tot storingen of gegevensverlies. @@ -414,14 +414,14 @@ Dit kan leiden tot storingen of gegevensverlies. Do you want to continue? - Wil je doorgaan? + Wilt u doorgaan? Do not show this message again - Dit bericht nooit meer tonen + Nooit meer tonen @@ -442,7 +442,7 @@ Dit kan leiden tot storingen of gegevensverlies. SSL support is not available or incomplete. Some websites may work incorrectly or do not work at all. - SSL-ondersteuning is niet beschikbaar of onvolledig. + Er is geen ssl-ondersteuning beschikbaar of deze is onvolledig. Sommige websites werken mogelijk niet (goed). @@ -453,12 +453,12 @@ Sommige websites werken mogelijk niet (goed). Web backend: %1 %2. - Web-aandrijving: %1 %2. + Webaandrijving: %1 %2. SSL library not available. - De SSL-bibliotheek is niet beschikbaar. + De ssl-bibliotheek is niet beschikbaar. @@ -469,13 +469,13 @@ Sommige websites werken mogelijk niet (goed). This session was not saved correctly. Are you sure that you want to restore this session anyway? - Deze sessie werd onjuist opgeslagen. -Weet je zeker dat je de sessie tóch wilt herstellen? + Deze sessie is onjuist opgeslagen. +Weet u zeker dat u de sessie tóch wilt herstellen? New update %1 from %2 channel is available! - Er is een nieuwe update beschikbaar. Versie: %1 - Kanaal: %2 + Er is een update beschikbaar. Versie: %1 - Kanaal: %2 @@ -486,7 +486,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? You are about to quit while %n files are still being downloaded. - Je staat op het punt om af te sluiten terwijl er nog %n bestand wordt gedownload.Je staat op het punt om af te sluiten terwijl er nog %n bestanden worden gedownload. + U staat op het punt om af te sluiten terwijl er nog %n bestand wordt gedownload.U staat op het punt om af te sluiten terwijl er nog %n bestanden worden gedownload. @@ -497,7 +497,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? You are about to quit the current Otter Browser session. - Je staat op het punt om de huidige Otter-sessie af te sluiten. + U staat op het punt om de huidige Otter-sessie af te sluiten. @@ -507,19 +507,19 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Default Application - Standaardapplicatie + Standaardprogramma Other… - Overig... + Overig… Select Application - Applicatie selecteren + Programma kiezen @@ -532,12 +532,12 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Failed to parse feed file: %1 - Fout tijdens verwerken van feedbestand: %1 + Het feedbestand kan niet worden verwerkt: %1 Failed to parse feed: no valid entries found - Fout tijdens verwerken van feed: geen geldige items gevonden + De feed kan niet worden verwerkt: geen geldige items gevonden @@ -578,7 +578,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Title: - Titel: + Naam: @@ -598,22 +598,22 @@ Weet je zeker dat je de sessie tóch wilt herstellen? New… - Nieuw... + Nieuw… Visits: - Aantal bezoeken: + Aantal keer bezocht: Last visit: - Laatste bezoek: + Recentste bezoek: Created: - Gecreëerd op: + Gemaakt op: @@ -623,7 +623,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Keyword: - Sleutelwoord: + Trefwoord: @@ -650,12 +650,12 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Error - Fout + Foutmelding Bookmark with this keyword already exists. - Er is al een bladwijzer met dit sleutelwoord. + Er is al een bladwijzer met dit trefwoord. @@ -663,7 +663,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Title: %1 - Titel: %1 + Naam: %1 @@ -678,12 +678,12 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Created: %1 - Gecreëerd: %1 + Gemaakt op: %1 Visited: %1 - Bezocht: %1 + Bezocht op: %1 @@ -696,7 +696,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Select name of new folder: - Selecteer de naam van de nieuwe map: + Geef de nieuwe map een naam: @@ -704,7 +704,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Search… - Zoeken... + Zoeken… @@ -714,7 +714,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Title: - Titel: + Naam: @@ -724,7 +724,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Keyword: - Sleutelwoord: + Trefwoord: @@ -735,7 +735,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Properties… - Eigenschappen... + Eigenschappen… @@ -747,14 +747,14 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Add Folder… - Map toevoegen... + Map toevoegen… Add Bookmark… - Bladwijzer toevoegen... + Bladwijzer toevoegen… @@ -766,7 +766,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Title - Titel + Naam @@ -781,7 +781,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Keyword - Sleutelwoord + Trefwoord @@ -801,7 +801,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Visits - Aantal bezoeken + Aantal keer bezocht @@ -839,7 +839,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? New… - Nieuw... + Nieuw… @@ -849,17 +849,17 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Import into subfolder - Importeren naar submap + Importeren naar onderliggende map Leave empty to import into main folder - Als je de bladwijzers wilt importeren naar de hoofdmap, vul hier dan niks in + Laat leeg om te importeren naar hoofdmap Subfolder name: - Submapnaam: + Naam van onderliggende map: @@ -887,37 +887,37 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Failed to open notes file: %1 - Fout bij openen van notitiebestand: %1 + Het notitiebestand kan niet worden geopend: %1 Failed to open bookmarks file: %1 - Fout bij openen van bladwijzerbestand: %1 + Het bladwijzerbestand kan niet worden geopend: %1 Failed to load notes file: %1 - Fout bij laden van notitiebestand: %1 + Het notitiebestand kan niet worden geladen: %1 Failed to load bookmarks file: %1 - Fout bij laden van bladwijzerbestand: %1 + Het bladwijzerbestand kan niet worden geladen: %1 Error - Fout + Foutmelding Failed to load notes file. - Het laden van het notitiebestand is mislukt. + Het notitiebestand kan niet worden geladen. Failed to load bookmarks file. - Het laden van het bladwijzerbestand is mislukt. + Het bladwijzerbestand kan niet worden geladen. @@ -925,7 +925,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Search… - Zoeken... + Zoeken… @@ -1043,7 +1043,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Export… - Exporteren... + Exporteren… @@ -1053,7 +1053,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? View Certificate for %1 - Certificaten tonen voor %1 + Certificaten van %1 tonen @@ -1064,17 +1064,17 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Select File - Bestand selecteren + Bestand kiezen DER encoded X.509 certificates (*.der) - Met DER-versleutelde X.509-certificaten (*.der) + Met DER versleutelde X.509-certificaten (*.der) PEM encoded X.509 certificates (*.pem) - Met PEM-versleutelde X.509-certificaten (*.pem) + Met PEM versleutelde X.509-certificaten (*.pem) @@ -1089,7 +1089,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Failed to open file for writing. - Fout bij openen van bestand voor wegschrijven. + Het bestand kan niet worden weggeschreven. @@ -1250,7 +1250,7 @@ Exponent: %2 Subject Public Key - Onderwerp-publieke sleutel + Onderwerp-openbare sleutel @@ -1260,7 +1260,7 @@ Exponent: %2 Public Key - Publieke sleutel + Openbare sleutel @@ -1288,7 +1288,7 @@ Exponent: %2 Clear History - Geschiedenis verwijderen + Geschiedenis wissen @@ -1303,12 +1303,12 @@ Exponent: %2 h - u + uur Clear browsing history - Navigatiegeschiedenis verwijderen + Navigatiegeschiedenis wissen @@ -1318,17 +1318,17 @@ Exponent: %2 Clear forms history - Formuliergeschiedenis verwijderen + Formuliergeschiedenis wissen Clear downloads history - Downloadgeschiedenis verwijderen + Downloadgeschiedenis wissen Clear search history - Zoekgeschiedenis verwijderen + Zoekgeschiedenis wissen @@ -1363,7 +1363,7 @@ Exponent: %2 Select Color… - Kleur selecteren... + Kleur kiezen… @@ -1381,7 +1381,7 @@ Exponent: %2 Search… - Zoeken... + Zoeken… @@ -1437,12 +1437,12 @@ Exponent: %2 The settings have been changed. Do you want to save them? De instellingen zijn gewijzigd. -Wil je de instellingen opslaan? +Wilt u de instellingen opslaan? Do you really want to restore default values of all options? - Weet je zeker dat je alle opties wilt herstellen naar hun standaardwaarden? + Weet u zeker dat u alle opties wilt terugzetten op de standaardwaarden? @@ -1477,7 +1477,7 @@ Wil je de instellingen opslaan? Advanced Configuration - Geavanceerde configuratie + Geavanceerde instellingen @@ -1508,7 +1508,7 @@ Wil je de instellingen opslaan? Select lists which you want to use for content blocking (AdBlock Plus compatible): - Selecteer de te gebruiken lijsten voor inhoudsblokkade (AdBlock Plus-compatibel): + Selecteer de te gebruiken lijsten voor inhoudsblokkade (compatibel met AdBlock Plus): @@ -1658,7 +1658,7 @@ Wil je de instellingen opslaan? day(s) - dag(en) + dag(en) @@ -1682,7 +1682,7 @@ Wil je de instellingen opslaan? Title: - Titel: + Naam: @@ -1707,7 +1707,7 @@ Wil je de instellingen opslaan? days - dagen + dagen @@ -1718,7 +1718,7 @@ Wil je de instellingen opslaan? Advertisements - Advertenties + Reclame @@ -1755,22 +1755,22 @@ Wil je de instellingen opslaan? Error - Fout + Foutmelding Valid update URL is required. - Geldige update-URL vereist. + Geldige update-url vereist. Profile with name %1.txt already exists. - Er bestaat al een profiel met de naam '%1.txt'. + Er is al een profiel met de naam ‘%1.txt’. Failed to create profile file: %1. - Fout bij creëren van profielbestand: %1. + Het profielbestand kan niet worden aangemaakt: %1. @@ -1778,17 +1778,17 @@ Wil je de instellingen opslaan? Failed to read profile file - Fout bij lezen van profielbestand + Het profielbestand kan niet worden uitgelezen Failed to download profile rules - Fout bij downloaden van profielregels + De profielregels kunnen niet worden gedownload Failed to verify profile rules using checksum - Fout bij verifiëren van profielregels d.m.v. controlesom + De profielregels kunnen niet a.d.h. van de controlesom worden gecontroleerd @@ -1811,7 +1811,7 @@ Wil je de instellingen opslaan? Failed to remove content blocking profile file: %1 - Fout bij verwijderen van profielbestand voor inhoudsblokkering: %1 + Het profielbestand voor inhoudsblokkering kan niet worden verwijderd: %1 @@ -1836,7 +1836,7 @@ Wil je de instellingen opslaan? Advertisements - Advertenties + Reclame @@ -1949,7 +1949,7 @@ Wil je de instellingen opslaan? Search… - Zoeken... + Zoeken… @@ -1979,13 +1979,13 @@ Wil je de instellingen opslaan? Add… - Toevoegen... + Toevoegen… Properties… - Eigenschappen... + Eigenschappen… @@ -2017,17 +2017,17 @@ Wil je de instellingen opslaan? Add Cookie… - Cookie toevoegen... + Cookie toevoegen… Remove All Cookies from This Domain… - Alle cookies van dit domein verwijderen... + Alle cookies van dit domein verwijderen… Remove All Cookies… - Alle cookies verwijderen... + Alle cookies verwijderen… @@ -2045,12 +2045,12 @@ Wil je de instellingen opslaan? Third-party Cookies Exceptions - Cookies van derde partijen - Uitzonderingen + Cookies van externe partijen - Uitzonderingen Always ACCEPT third-party cookies from: - Cookies van derde partijen altijd ACCEPTEREN van: + Altijd externe cookies ACCEPTEREN van: @@ -2073,7 +2073,7 @@ Wil je de instellingen opslaan? Always REJECT third-party cookies from: - Cookies van derde partijen altijd WEIGEREN van: + Altijd externe cookies WEIGEREN van: @@ -2120,7 +2120,7 @@ Wil je de instellingen opslaan? Filter… - Filteren... + Filteren… @@ -2175,12 +2175,12 @@ Wil je de instellingen opslaan? Failed to parse feed: invalid feed type - Fout tijdens verwerken van feed: ongeldig type + De feed is van een ongeldig type en kan niet worden verwerkt Failed to download feed - Fout bij downloaden van feed + De feed kan niet worden opgehaald @@ -2198,17 +2198,17 @@ Wil je de instellingen opslaan? New… - Nieuw... + Nieuw… Title: - Titel: + Naam: Change Icon… - Pictogram wijzigen... + Pictogram wijzigen… @@ -2228,7 +2228,7 @@ Wil je de instellingen opslaan? minutes - minuten + minuten @@ -2238,7 +2238,7 @@ Wil je de instellingen opslaan? Error - Fout + Foutmelding @@ -2256,7 +2256,7 @@ Wil je de instellingen opslaan? Select name of new folder: - Selecteer de naam van de nieuwe map: + Geef de nieuwe map een naam: @@ -2275,7 +2275,7 @@ Wil je de instellingen opslaan? Search… - Zoeken... + Zoeken… @@ -2308,17 +2308,17 @@ Wil je de instellingen opslaan? You already subscribed this feed. - Je bent al geabonneerd op deze feed. + U bent al geabonneerd op deze feed. Do you want to continue? - Wil je doorgaan? + Wilt u doorgaan? Select Folder Name - Mapnaam selecteren + Mapnaam kiezen @@ -2339,13 +2339,13 @@ Wil je de instellingen opslaan? Add Folder… - Map toevoegen... + Map toevoegen… Add Feed… - Feed toevoegen... + Feed toevoegen… @@ -2360,7 +2360,7 @@ Wil je de instellingen opslaan? Properties… - Eigenschappen... + Eigenschappen… @@ -2402,7 +2402,7 @@ Wil je de instellingen opslaan? Title: %1 - Titel: %1 + Naam: %1 @@ -2436,22 +2436,22 @@ Wil je de instellingen opslaan? Failed to open feeds file: %1 - Fout bij openen van feedsbestand: %1 + Het feedbestand kan niet worden geopend: %1 Failed to load feeds file: %1 - Fout bij laden van feedsbestand: %1 + Het feedbestand kan niet worden geladen: %1 Error - Fout + Foutmelding Failed to load feeds file. - Fout bij laden van feedsbestand. + Het feedbestand kan niet worden geladen. @@ -2459,17 +2459,17 @@ Wil je de instellingen opslaan? Failed to open passwords file: %1 - Fout bij openen van wachtwoordbestand: %1 + Het wachtwoordbestand kan niet worden geopend: %1 Failed to save passwords file: %1 - Fout bij opslaan van wachtwoordbestand: %1 + Het wachtwoordbestand kan niet worden opgeslagen: %1 Failed to remove passwords file - Fout bij verwijderen van wachtwoordbestand + Het wachtwoordbestand kan niet worden verwijderd @@ -2488,17 +2488,17 @@ Wil je de instellingen opslaan? Browse… - Bladeren... + Bladeren… Select File - Bestand selecteren + Bestand kiezen Select Directory - Map selecteren + Map kiezen @@ -2506,7 +2506,7 @@ Wil je de instellingen opslaan? Error - Fout + Foutmelding @@ -2529,12 +2529,12 @@ Wil je de instellingen opslaan? Error - Fout + Foutmelding Profile with this address already exists. - Er bestaat al een profiel met dit adres. + Er is al een profiel met dit adres. @@ -2544,7 +2544,7 @@ Wil je de instellingen opslaan? Do you want to add this content blocking profile? - Wil je dit inhoudsblokkeringbestand verwijderen? + Wilt u dit inhoudblokkeringsbestand verwijderen? @@ -2567,7 +2567,7 @@ Wil je de instellingen opslaan? No Sorting - Ongesorteerd + Niet sorteren @@ -2590,7 +2590,7 @@ Wil je de instellingen opslaan? Search… - Zoeken... + Zoeken… @@ -2648,7 +2648,7 @@ Wil je de instellingen opslaan? Add to Bookmarks… - Toevoegen aan bladwijzers... + Toevoegen aan bladwijzers… @@ -2684,7 +2684,7 @@ Wil je de instellingen opslaan? Failed to open history file: %1 - Fout bij openen van geschiedenisbestand: %1 + Het geschiedenisbestand kan niet worden geopend: %1 @@ -2697,7 +2697,7 @@ Wil je de instellingen opslaan? Imports bookmarks from HTML file (Netscape format). - Bladwijzers importeren uit een HTML-bestand (Netscape-formaat). + Importeer bladwijzers uit een html-bestand (Netscape-indeling). @@ -2713,7 +2713,7 @@ Wil je de instellingen opslaan? Select Icon - Pictogram selecteren + Pictogram kiezen @@ -2728,12 +2728,12 @@ Wil je de instellingen opslaan? Select From File… - Selecteren uit bestand... + Kiezen uit bestand… Select From Theme… - Selecteren uit thema... + Kiezen uit thema… @@ -2751,7 +2751,7 @@ Wil je de instellingen opslaan? Image Properties - Afbeeldingseigenschappen... + Afbeeldingseigenschappen… @@ -2827,7 +2827,7 @@ Wil je de instellingen opslaan? Initializing… - Bezig met initialiseren... + Bezig met initialiseren… @@ -2837,32 +2837,32 @@ Wil je de instellingen opslaan? Error - Fout + Foutmelding Unable to import selected type. - Het importeren van het geselecteerde type is onmogelijk. + Het importeren van het gekozen type is onmogelijk. Processing… - Bezig met verwerken... + Bezig met verwerken… Failed to import data. - Fout bij importeren van gegevens. + De gegevens kunnen niet worden geïmporteerd. Import cancelled by the user. - De importering is geannuleerd door de gebruiker. + De import is afgebroken. Import finished successfully. - De importering is voltooid. + Het importeren is voltooid. @@ -2875,7 +2875,7 @@ Wil je de instellingen opslaan? Allow moving and resizing of windows - Verplaatsen en groottewijzigingen van vensters toestaan + Vensterverplaatsing en -grootte-aanpassingen toestaan @@ -2905,7 +2905,7 @@ Wil je de instellingen opslaan? Allow to enter full screen mode: - Volledige scherm-modus toestaan: + Beeldvullende modus toestaan: @@ -2940,7 +2940,7 @@ Wil je de instellingen opslaan? Profile Configuration - Profielconfiguratie + Profielinstellingen @@ -2950,7 +2950,7 @@ Wil je de instellingen opslaan? Search… - Zoeken... + Zoeken… @@ -3003,7 +3003,7 @@ Wil je de instellingen opslaan? Parameters - Parameters + Aanvullende opties @@ -3029,7 +3029,7 @@ Wil je de instellingen opslaan? Single key shortcuts are currently disabled - 1-toets-sneltoetsen zijn momenteel uitgeschakeld + Enkeltoets-sneltoetsen zijn momenteel uitgeschakeld @@ -3037,7 +3037,7 @@ Wil je de instellingen opslaan? Search… - Zoeken... + Zoeken… @@ -3108,7 +3108,7 @@ Wil je de instellingen opslaan? Switch Application Language - Applicatietaal wijzigen + Programmataal wijzigen @@ -3169,17 +3169,17 @@ Wil je de instellingen opslaan? You are about to open %n bookmark(s). - Je staat op het punt om %n bladwijzer te openen.Je staat op het punt om %n bladwijzers te openen. + U staat op het punt om %n bladwijzer te openen.U staat op het punt om %n bladwijzers te openen. Do you want to continue? - Wil je doorgaan? + Wilt u doorgaan? Do not show this message again - Dit bericht niet opnieuw tonen + Niet opnieuw tonen @@ -3216,7 +3216,7 @@ Wil je de instellingen opslaan? Failed to create menu action: %1 - Fout bij creëren van menu-actie: %1 + De menu-actie kan niet worden gemaakt: %1 @@ -3254,13 +3254,13 @@ Wil je de instellingen opslaan? Configuration of the components listed below needs to be updated to new version. Do you want to migrate it? - De configuratie van de onderstaande onderdelen moet worden bijgewerkt naar de nieuwste versie. -Wil je deze nu migreren? + De instellingen van onderstaande onderdelen moeten worden bijgewerkt naar de nieuwste versie. +Wilt u deze nu migreren? Create backup - Back-up creëren + Back-up maken @@ -3277,17 +3277,17 @@ Wil je deze nu migreren? Profile Configuration - Profielconfiguratie + Profielinstellingen Actions - Acties + Actie Search… - Zoeken... + Zoeken… @@ -3379,7 +3379,7 @@ Wil je deze nu migreren? Parameters - Parameters + Aanvullende opties @@ -3394,7 +3394,7 @@ Wil je deze nu migreren? Select Action - Actie selecteren + Actie kiezen @@ -3416,12 +3416,12 @@ Wil je deze nu migreren? Failed to load proxy auto-config (PAC): %1 - Het laden van de automatische proxy-configuratie (PAC) is mislukt: %1 + De automatische proxy-configuratie (pac) kan niet worden geladen: %1 Failed to load proxy auto-config (PAC). Invalid URL: %1 - Het laden van de proxy auto-config (PAC) is mislukt. De URL is ongeldig: %1 + De proxy auto-config (pac) kan niet worden geladen omdat de url ongeldig is: %1 @@ -3438,11 +3438,11 @@ Wil je deze nu migreren? %1 Do you want to continue? - Er zijn SSL-fouten opgetreden: + Er zijn ssl-fouten opgetreden: %1 -Wil je doorgaan? +Wilt u doorgaan? @@ -3458,7 +3458,7 @@ Wil je doorgaan? Search… - Zoeken... + Zoeken… @@ -3485,7 +3485,7 @@ Wil je doorgaan? Add Folder… - Map toevoegen... + Map toevoegen… @@ -3505,12 +3505,12 @@ Wil je doorgaan? Add note… - Notitie toevoegen... + Notitie toevoegen… Select Folder Name - Mapnaam selecteren + Mapnaam kiezen @@ -3570,7 +3570,7 @@ Wil je doorgaan? Enter the keyword of bookmark: - Voer het sleutelwoord in van de bladwijzer: + Voer het trefwoord van de bladwijzer in: @@ -3619,7 +3619,7 @@ Wil je doorgaan? Remove existing search engines - Bestaande zoekmachines verwijderen + Reeds aanwezige zoekmachines verwijderen @@ -3665,7 +3665,7 @@ Wil je doorgaan? Imports feeds from OPML file - Feeds importeren uit OPML-bestand + Feeds importeren uit opml-bestand @@ -3683,12 +3683,12 @@ Wil je doorgaan? New… - Nieuw... + Nieuw… Allow to duplicate already existing feeds - Dupliceren van reeds bestaande feeds toestaan + Klonen van reeds bestaande feeds toestaan @@ -3714,7 +3714,7 @@ Wil je doorgaan? Search… - Zoeken... + Zoeken… @@ -3788,7 +3788,7 @@ Wil je doorgaan? Permissions - Machtigingen + Bevoegdheden @@ -3837,13 +3837,13 @@ Wil je doorgaan? Do you want to update login data for %1? - Wil je de inloggegevens voor %1 bijwerken? + Wilt u de inloggegevens van %1 bijwerken? Do you want to save login data for %1? - Wil je de inloggegevens voor %1 opslaan? + Wilt u de inloggegevens van %1 opslaan? @@ -3851,7 +3851,7 @@ Wil je doorgaan? Search… - Zoeken... + Zoeken… @@ -3881,19 +3881,19 @@ Wil je doorgaan? You are about to delete %n password(s). - Je staat op het punt om %n wachtwoord te verwijderen.Je staat op het punt om %n wachtwoorden te verwijderen. + U staat op het punt om %n wachtwoord te verwijderen.U staat op het punt om %n wachtwoorden te verwijderen. Do you want to continue? - Wil je doorgaan? + Wilt u doorgaan? You are about to delete all passwords. - Je staat op het punt om alle wachtwoorden te verwijderen. + U staat op het punt om alle wachtwoorden te verwijderen. @@ -3903,12 +3903,12 @@ Wil je doorgaan? Remove All Passwords from This Domain… - Alle wachtwoorden van dit domein verwijderen... + Alle wachtwoorden van dit domein verwijderen… Remove All Passwords… - Alle wachwoorden verwijderen... + Alle wachtwoorden verwijderen… @@ -3946,12 +3946,12 @@ Wil je doorgaan? %1 wants to enter full screen mode. - %1 wil de volledige scherm-modus inschakelen. + %1 wil de beeldvullende modus inschakelen. %1 wants access to your location. - %1 wil je locatie weten. + %1 wil uw locatie opvragen. @@ -3961,22 +3961,22 @@ Wil je doorgaan? %1 wants to lock mouse pointer. - %1 wil je cursor vergrendelen. + %1 wil uw cursor vergrendelen. %1 wants to access your microphone. - %1 wil toegang tot je microfoon. + %1 wil toegang tot uw microfoon. %1 wants to access your camera. - %1 wil toegang tot je camera. + %1 wil toegang tot uw camera. %1 wants to access your microphone and camera. - %1 wil toegang tot je camera en microfoon. + %1 wil toegang tot uw camera en microfoon. @@ -3986,7 +3986,7 @@ Wil je doorgaan? Invalid permission request from %1. - Ongeldig machtigingsverzoek van %1. + Ongeldig bevoegdheidsverzoek van %1. @@ -3994,12 +3994,12 @@ Wil je doorgaan? Error - Fout + Foutmelding Failed to install update. - Het installeren van de update is mislukt. + De update kan niet worden geïnstalleerd. @@ -4038,7 +4038,7 @@ Wil je doorgaan? Always Ask What to Do for This Website - Altijd vragen voor deze website + Altijd vragen op deze website @@ -4128,17 +4128,17 @@ Wil je doorgaan? Mark taskbar entry - Taakbalkvermelding markeren + Taakbalkvermelding maken Options - Opties + Instellingen Prefer native notifications - Systeemmeldingen de voorkeur geven + Voorkeur voor systeemmeldingen @@ -4148,12 +4148,12 @@ Wil je doorgaan? Widget style: - Widget-stijl: + Widgetstijl: Interface style sheet: - Stijlblad voor uiterlijk: + Vormgevingsstijlblad: @@ -4178,7 +4178,7 @@ Wil je doorgaan? JavaScript Options… - JavaScript-instellingen... + JavaScript-instellingen… @@ -4193,12 +4193,12 @@ Wil je doorgaan? Website Preferences - Website-voorkeuren + Websitevoorkeuren Search… - Zoeken... + Zoeken… @@ -4218,7 +4218,7 @@ Wil je doorgaan? Edit… - Bewerken... + Bewerken… @@ -4249,17 +4249,17 @@ Wil je doorgaan? Do not ask for folder, save directly to - Niet vragen om een map, direct opslaan in + Niet vragen om een map - direct opslaan in Open with application - Openen met applicatie + Openen met programma Pass web address directly to application - Webadres direct doorsturen naar applicatie + Webadres direct doorsturen naar programma @@ -4279,7 +4279,7 @@ Wil je doorgaan? SSL Ciphers - SSL-ciphers + SSL-vercijfering @@ -4310,7 +4310,7 @@ Wil je doorgaan? Check for updates every - Controleren op updates - elke + Controleren op updates, elke @@ -4331,12 +4331,12 @@ Wil je doorgaan? Clone - Dupliceren + Klonen Enable single key shortcuts - 1-toets-sneltoetsen inschakelen + Enkeltoets-sneltoetsen inschakelen @@ -4364,7 +4364,7 @@ Wil je doorgaan? Appearance - Uiterlijk + Vormgeving @@ -4382,7 +4382,7 @@ Wil je doorgaan? Programs - Applicaties + Programma's @@ -4496,12 +4496,12 @@ Wil je doorgaan? Add Folder… - Map toevoegen... + Map toevoegen… Add User Agent… - Gebruikersagent toevoegen... + Gebruikersagent toevoegen… @@ -4512,7 +4512,7 @@ Wil je doorgaan? Add Proxy… - Proxy toevoegen... + Proxy toevoegen… @@ -4522,7 +4522,7 @@ Wil je doorgaan? Beta version - Bèta-versie + Bètaversie @@ -4533,7 +4533,7 @@ Wil je doorgaan? New… - Nieuw... + Nieuw… @@ -4551,27 +4551,27 @@ Wil je doorgaan? Do you really want to remove preferences for this website? - Weet je zeker dat je de voorkeuren voor deze website wilt verwijderen? + Weet u zeker dat u de voorkeuren van deze website wilt verwijderen? MIME Type Name - Naam van MIME-type + Naam van mime-type Select name of MIME Type: - Naam van MIME-type selecteren + Kies de naam van het mime-type: Error - Fout + Foutmelding Invalid MIME Type name. - Ongeldige MIME-type-naam. + Ongeldige mime-typenaam. @@ -4587,7 +4587,7 @@ Wil je doorgaan? Select folder name: - Mapnaam selecteren: + Kies een mapnaam: @@ -4613,7 +4613,7 @@ Wil je doorgaan? Do you really want to remove this profile? - Weet je zeker dat je dit profiel wilt verwijderen? + Weet u zeker dat u dit profiel wilt verwijderen? @@ -4662,7 +4662,7 @@ Wil je doorgaan? Default proportional font size: - Standaard proportionele lettertypegrootte: + Standaard proportionele tekstgrootte: @@ -4674,12 +4674,12 @@ Wil je doorgaan? Default fixed-width font size: - Standaard vaste breedte lettertypegrootte: + Standaard vastebreedte-tekstgrootte: Minimum font size: - Minimale lettertypegrootte: + Minimale tekstgrootte: @@ -4730,12 +4730,12 @@ Wil je doorgaan? Standard font - Standaard lettertype + Standaardlettertype Fixed-width font - Vaste breedte-lettertype + Vastebreedtelettertype @@ -4755,7 +4755,7 @@ Wil je doorgaan? Fantasy font - Fantasie-lettertype + Fantasielettertype @@ -4785,7 +4785,7 @@ Wil je doorgaan? Visited Link Color - Bezochte link-kleur + Kleur van bezochte link @@ -4793,7 +4793,7 @@ Wil je doorgaan? Preferences - Voorkeuren + Instellingen @@ -4861,7 +4861,7 @@ Wil je doorgaan? Do not load the tab contents until selected - Laden van tabbladen uitstellen totdat ze geselecteerd worden + Tabbladen pas laden na aanklikken @@ -4886,7 +4886,7 @@ Wil je doorgaan? Open new windows in new tabs instead - Nieuwe vensters op een nieuw tabblad openen + Nieuwe vensters openen op nieuwe tabbladen @@ -4901,7 +4901,7 @@ Wil je doorgaan? When closing tab: - Na het sluiten van een tabblad: + Actie na sluiten van tabblad: @@ -4926,12 +4926,12 @@ Wil je doorgaan? Preferred webpage language: - Voorkeurstaal voor webpagina: + Voorkeurstaal op websites: Edit… - Bewerken... + Bewerken… @@ -4961,12 +4961,12 @@ Wil je doorgaan? Show start page - Startpagina tonen + Otter-pagina tonen Show empty page - Lege pagina tonen + Blanco pagina tonen @@ -5014,7 +5014,7 @@ Wil je doorgaan? Template… - Sjabloon... + Sjabloon… @@ -5034,22 +5034,22 @@ Wil je doorgaan? Accept third-party cookies: - Cookies van derde partijen accepteren: + Cookies van externe partijen accepteren: Exceptions… - Uitzonderingen... + Uitzonderingen… Clear history when application closes - Geschiedenis wissen bij sluiten van de applicatie + Geschiedenis wissen na afsluiten Settings… - Instellingen... + Instellingen… @@ -5064,32 +5064,32 @@ Wil je doorgaan? Manage… - Beheren... + Beheren… Use a master password - Een hoofdwachtwoord gebruiken + Hoofdwachtwoord gebruiken Change… - Wijzigen... + Wijzigen… Inform websites that I do not want to be tracked - Websites vertellen dat ik niet gevolgd wil worden + Websites laten weten dat ik niet gevolgd wil worden Inform websites that I allow tracking - Websites vertellen dat ik gevolgd wil worden + Websites laten weten dat ik gevolgd mag worden Do not inform websites about my preference - Websites niks vertellen over mijn voorkeur + Websites niets laten weten over mijn voorkeur @@ -5101,12 +5101,12 @@ Wil je doorgaan? Only existing - Alleen bestaande + Alleen aanwezige Only read existing - Bestaande alleen lezen + Aanwezige alleen uitlezen @@ -5134,7 +5134,7 @@ Wil je doorgaan? Search… - Zoeken... + Zoeken… @@ -5144,7 +5144,7 @@ Wil je doorgaan? Edit… - Bewerken... + Bewerken… @@ -5169,7 +5169,7 @@ Wil je doorgaan? Enable search suggestions - Zoeksuggesties inschakelen + Zoeksuggesties tonen @@ -5181,17 +5181,17 @@ Wil je doorgaan? Keyword - Sleutelwoord + Trefwoord New… - Nieuw... + Nieuw… File… - Bestand... + Bestand… @@ -5206,7 +5206,7 @@ Wil je doorgaan? Select File - Bestand selecteren + Kies een bestand @@ -5222,7 +5222,7 @@ Wil je doorgaan? Do you really want to remove this search engine? - Weet je zeker dat je deze zoekmachine wilt verwijderen? + Weet u zeker dat u deze zoekmachine wilt verwijderen? @@ -5234,23 +5234,23 @@ Wil je doorgaan? Error - Fout + Foutmelding Failed to open Open Search file. - Het openen van het OpenSearch-bestand is mislukt. + Het OpenSearch-bestand kan niet worden geopend. Keyword is already in use. Do you want to continue anyway? - Dit sleutelwoord wordt al gebruikt. Weet je zeker dat je wilt doorgaan? + Dit trefwoord wordt al gebruikt. Weet u zeker dat u wilt doorgaan? Failed to update search engine. - Het bijwerken van de zoekmachine is mislukt. + De zoekmachine kan niet worden bijgewerkt. @@ -5383,7 +5383,7 @@ Wil je doorgaan? Path to PAC file: - Pad naar PAC-bestand: + Locatie van pac-bestand: @@ -5457,19 +5457,19 @@ Wil je doorgaan? Are you sure that you want to send form data again? - Weet je zeker dat je de formuliergegevens opnieuw wilt versturen? + Weet u zeker dat u de formuliergegevens opnieuw wilt versturen? Do you want to resend data? - Wil je de gegevens opnieuw versturen? + Wilt u de gegevens opnieuw versturen? Do not show this message again - Dit bericht nooit meer tonen + Nooit meer tonen @@ -5495,12 +5495,12 @@ Wil je doorgaan? Failed to save image: %1 - Het opslaan van de afbeelding is mislukt: %1 + De afbeelding kan niet worden opgeslagen: %1 Blank Page - Lege pagina + Blanco pagina @@ -5559,7 +5559,7 @@ Wil je doorgaan? Receiving data from %1… - Bezig met ontvangen van gegevens van %1... + Bezig met ontvangen van gegevens van %1… @@ -5570,7 +5570,7 @@ Wil je doorgaan? Waiting for authentication… - Bezig met wachten op authenticatie... + Bezig met wachten op authenticatie… @@ -5580,7 +5580,7 @@ Wil je doorgaan? Sending request to %1… - Bezig met vezenden van verzoek naar %1... + Bezig met versturen van verzoek aan %1… @@ -5610,19 +5610,19 @@ Wil je doorgaan? Are you sure that you want to send form data again? - Weet je zeker dat je de formuliergegevens opnieuw wilt versturen? + Weet u zeker dat u de formuliergegevens opnieuw wilt versturen? Do you want to resend data? - Wil je de gegevens opnieuw versturen? + Wilt u de gegevens opnieuw versturen? Do not show this message again - Dit bericht nooit meer tonen + Nooit meer tonen @@ -5633,7 +5633,7 @@ Wil je doorgaan? Request blocked by rule from profile %1:<br> %2 - De aanvraag is geblokkeerd door een regel uit profiel %1:<br> + De aanvraag is geblokkeerd door een regel uit profiel ‘%1’:<br> %2 @@ -5659,7 +5659,7 @@ Wil je doorgaan? Do you want to stop the script? - Wil je het script stoppen? + Wilt u het script stoppen? @@ -5668,7 +5668,7 @@ Wil je doorgaan? Click to load content (%1) handled by plugin from: %2 - Klik om de inhoud (%1) te laden die bestuurd wordt door de plug-in: %2 + Klik om de inhoud (%1) te laden die bestuurd wordt door de plug-in ‘%2’ @@ -5694,12 +5694,12 @@ Wil je doorgaan? Error - Fout + Foutmelding Failed to open file for writing. - Fout bij openen van bestand voor wegschrijven. + Het bestand kan niet worden weggeschreven. @@ -5709,7 +5709,7 @@ Wil je doorgaan? Failed to save image: %1 - Het opslaan van de afbeelding is mislukt: %1 + De afbeelding kan niet worden opgeslagen: %1 @@ -5729,7 +5729,7 @@ Wil je doorgaan? Blank Page - Lege pagina + Blanco pagina @@ -5773,12 +5773,12 @@ Wil je doorgaan? Failed to parse feed file: %1 - Fout tijdens verwerken van feedbestand: %1 + Het feedbestand kan niet worden verwerkt: %1 Failed to parse feed: no valid entries found - Fout tijdens verwerken van feed: geen geldige items gevonden + De feed kan niet worden verwerkt: geen geldige items aangetroffen @@ -5791,7 +5791,7 @@ Wil je doorgaan? Session title: - Sessietitel: + Sessienaam: @@ -5812,18 +5812,18 @@ Wil je doorgaan? Session with specified indentifier already exists. Do you want to overwrite it? - Er bestaat al een sessie met de opgegeven identificatie. -Wil je deze overschrijven? + Er is al een sessie met de opgegeven identificatie. +Wilt u deze overschrijven? Error - Fout + Foutmelding Failed to save session. - Fout bij opslaan van sessie. + De sessie kan niet worden opgeslagen. @@ -5831,7 +5831,7 @@ Wil je deze overschrijven? Find… - Zoeken... + Zoeken… @@ -5874,7 +5874,7 @@ Wil je deze overschrijven? Change Icon… - Pictogram wijzigen... + Pictogram wijzigen… @@ -5884,7 +5884,7 @@ Wil je deze overschrijven? Keyword: - Sleutelwoord: + Trefwoord: @@ -5956,7 +5956,7 @@ Wil je deze overschrijven? Manage Search Engines… - Zoekmachines beheren... + Zoekmachines beheren… @@ -5987,22 +5987,22 @@ Wil je deze overschrijven? Error - Fout + Foutmelding Failed to add search engine. - Het toevoegen van de zoekmachine is mislukt. + De zoekmachine kan niet worden toegevoegd. Select Search Engine - Zoekmachine selecteren + Kies een zoekmachine Add Search Engine… - Zoekmachine toevoegen... + Zoekmachine toevoegen… @@ -6015,12 +6015,12 @@ Wil je deze overschrijven? Select Password - Wachtwoord selecteren + Kies een wachtwoord Select set of credentials: - Selecteer de referentie-set: + Kies de referentieset: @@ -6052,7 +6052,7 @@ Wil je deze overschrijven? Do you really want to remove this credentials set? - Weet je zeker dat je deze referentie-set wilt verwijderen? + Weet u zeker dat u deze referentieset wilt verwijderen? @@ -6112,7 +6112,7 @@ Wil je deze overschrijven? Open session in current window - Sessie in huidig venster openen + Openen in huidig venster @@ -6124,7 +6124,7 @@ Wil je deze overschrijven? Title - Titel + Naam @@ -6157,8 +6157,8 @@ Wil je deze overschrijven? This session was not saved correctly. Are you sure that you want to restore this session anyway? - Deze sessie werd onjuist opgeslagen. -Weet je zeker dat je de sessie tóch wilt herstellen? + Deze sessie is onjuist opgeslagen. +Weet u zeker dat u de sessie tóch wilt herstellen? @@ -6168,17 +6168,17 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Are you sure that you want to delete session %1? - Weet je zeker dat je de sessie, %1, wilt verwijderen? + Weet u zeker dat u de sessie ‘%1’ wilt verwijderen? Error - Fout + Foutmelding Failed to delete session. - Fout bij verwijderen van sessie. + De sessie kan niet worden verwijderd. @@ -6223,7 +6223,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Add Web Panel… - Webpaneel toevoegen... + Webpaneel toevoegen… @@ -6231,17 +6231,17 @@ Weet je zeker dat je de sessie tóch wilt herstellen? Failed to save file: %1 - Het opslaan van het bestand is mislukt: %1 + Het bestand kan niet worden opgeslagen: %1 Error - Fout + Foutmelding Failed to save file. - Het opslaan van het bestand is mislukt. + Het bestand kan niet worden opgeslagen. @@ -6253,7 +6253,7 @@ Weet je zeker dat je de sessie tóch wilt herstellen? The document has been modified. Do you want to save your changes or discard them? Dit document is bewerkt. -Wil je de wijzigingen opslaan of verwerpen? +Wilt u de wijzigingen opslaan of verwerpen? @@ -6277,7 +6277,7 @@ Wil je de wijzigingen opslaan of verwerpen? Add Tile… - Tegel toevoegen... + Tegel toevoegen… @@ -6285,12 +6285,12 @@ Wil je de wijzigingen opslaan of verwerpen? Start Page Preferences - Startpagina-voorkeuren + Startpagina-instellingen Use custom background image - Aangepaste achtergrondafbeelding gebruiken + Eigen achtergrondafbeelding gebruiken @@ -6300,7 +6300,7 @@ Wil je de wijzigingen opslaan of verwerpen? Image path: - Pad naar afbeelding: + Locatie van afbeelding: @@ -6360,7 +6360,7 @@ Wil je de wijzigingen opslaan of verwerpen? Tile - Tegelen + Tegels @@ -6373,7 +6373,7 @@ Wil je de wijzigingen opslaan of verwerpen? Edit… - Bewerken... + Bewerken… @@ -6388,12 +6388,12 @@ Wil je de wijzigingen opslaan of verwerpen? Configure… - Instellen... + Instellen… Add Tile… - Tegel toevoegen... + Tegel toevoegen… @@ -6417,12 +6417,12 @@ Wil je de wijzigingen opslaan of verwerpen? Begin with start page - Nieuwe sessie met startpagina + Nieuwe sessie met Otter-pagina Begin with blank page - Nieuwe sessie met lege pagina + Nieuwe sessie met blanco pagina @@ -6458,12 +6458,12 @@ Adres: %2 Switch Tabs Using the Mouse Wheel - Van tabblad wisselen d.m.v. het muiswiel + Schakelen tussen tabbladen met muiswiel Show Thumbnails in Tabs - Voorbeeldminiaturen tonen op tabbladen + Miniaturen tonen op tabbladen @@ -6481,12 +6481,12 @@ Adres: %2 Switch Tabs Using the Mouse Wheel - Van tabblad wisselen d.m.v. het muiswiel + Schakelen tussen tabbladen met muiswiel Show Thumbnails in Tabs - Voorbeeldminiaturen tonen op tabbladen + Miniaturen tonen op tabbladen @@ -6501,17 +6501,17 @@ Adres: %2 You are about to open %n URL(s). - Je staat op het punt om %n URL te openen.Je staat op het punt om %n URL's te openen. + U staat op het punt om %n url te openen.U staat op het punt om %n url's te openen. Do you want to continue? - Wil je doorgaan? + Wilt u doorgaan? Do not show this message again - Dit bericht nooit meer tonen + Nooit meer tonen @@ -6527,7 +6527,7 @@ Adres: %2 Search… - Zoeken... + Zoeken… @@ -6597,7 +6597,7 @@ Adres: %2 Edit… - Bewerken... + Bewerken… @@ -6613,7 +6613,7 @@ Adres: %2 Filter… - Filteren... + Filteren… @@ -6628,12 +6628,12 @@ Adres: %2 New… - Nieuw... + Nieuw… Options - Opties + Instellingen @@ -6643,7 +6643,7 @@ Adres: %2 Visibility in full screen mode: - Zichtbaarheid in volledig scherm-modus: + Zichtbaarheid in beeldvullende modus: @@ -6674,12 +6674,12 @@ Adres: %2 No limit - Ongelimiteerd + Onbeperkt Display toggle button - In-/uitklapknop weergeven + In-/Uitklapknop tonen @@ -6722,7 +6722,7 @@ Adres: %2 Visible only when needed - Alleen zichtbaar wanneer nodig + Alleen zichtbaar indien nodig @@ -6783,7 +6783,7 @@ Adres: %2 Global - Globaal + Algemeen @@ -6854,12 +6854,12 @@ Adres: %2 Configuration Widget (%1) - Configuratiewidget (%1) + Instelwidget (%1) Configuration Widget - Configuratiewidget + Instelwidget @@ -6894,32 +6894,32 @@ Adres: %2 Progress Information (Document Progress) - Voortgangsinformatie (Documentvoortgang) + Voortgangsinformatie (documentvoortgang) Progress Information (Total Progress) - Voortgangsinformatie (Totale voortgang) + Voortgangsinformatie (totale voortgang) Progress Information (Loaded Elements) - Voortgangsinformatie (Geladen elementen) + Voortgangsinformatie (aantal geladen elementen) Progress Information (Loading Speed) - Voortgangsinformatie (Laadsnelheid) + Voortgangsinformatie (laadsnelheid) Progress Information (Elapsed Time) - Voortgangsinformatie (Verstreken tijd) + Voortgangsinformatie (verstreken tijd) Progress Information (Status Message) - Voortgangsinformatie (Statusbericht) + Voortgangsinformatie (statusbericht) @@ -6949,7 +6949,7 @@ Adres: %2 Downloads Progress Information - Voortgangsinformatie van downloads + Voortgangsinformatie over downloads @@ -6974,7 +6974,7 @@ Adres: %2 Toggle Visibility - Weergeven/Verbergen + Tonen/Verbergen @@ -6989,17 +6989,17 @@ Adres: %2 Configure… - Instellen... + Instellen… Reset to Defaults… - Standaardwaarden herstellen... + Standaardwaarden herstellen… Remove… - Verwijderen... + Verwijderen… @@ -7012,7 +7012,7 @@ Adres: %2 Do you really want to reset this toolbar to default configuration? - Weet je zeker dat je de standaardconfiguratie van deze werkbalk wilt herstellen? + Weet u zeker dat u de standaardinstellingen van deze werkbalk wilt herstellen? @@ -7022,7 +7022,7 @@ Adres: %2 Do you really want to remove this toolbar? - Weet je zeker dat je deze werkbalk wilt verwijderen? + Weet u zeker dat u deze werkbalk wilt verwijderen? @@ -7032,7 +7032,7 @@ Adres: %2 Do you really want to reset all toolbars to default configuration? - Weet je zeker dat je de standaardconfiguratie van alle werkbalken wilt herstellen? + Weet u zeker dat u de standaardinstellingen van alle werkbalken wilt herstellen? @@ -7062,8 +7062,8 @@ Adres: %2 Do you want to overwrite it? %1 - Er bestaat al een bestand met deze naam. -Wil je het bestand overschrijven? + Er is al een bestand met deze naam. +Wilt u dit overschrijven? %1 @@ -7110,7 +7110,7 @@ Wil je het bestand overschrijven? Stop - Stoppen + Afbreken @@ -7131,7 +7131,7 @@ Voortgang: %5</div> Opening unknown file - Bezig met het openen van onbekend bestand + Bezig met het openen van onbekend bestand… @@ -7161,7 +7161,7 @@ Voortgang: %5</div> Remember choice for this file type - Mijn keuze onthouden voor dit bestandstype + Keuze onthouden bij dit bestandstype @@ -7171,7 +7171,7 @@ Voortgang: %5</div> Opening %1 - Bezig met openen van %1 + Bezig met openen van %1… @@ -7181,7 +7181,7 @@ Voortgang: %5</div> %1 (download completed) - %1 (download afgerond) + %1 (downloaden voltooid) @@ -7194,7 +7194,7 @@ Voortgang: %5</div> Quick Download… - Snelle download... + Snelle download… @@ -7226,7 +7226,7 @@ Voortgang: %5</div> Stop - Stoppen + Afbreken @@ -7291,8 +7291,8 @@ Voortgang: %5</div> This file is still being downloaded. Do you really want to remove it? - Dit bestand wordt nog steeds gedownload. -Weet je zeker dat je het bestand wilt verwijderen? + Dit bestand wordt nog gedownload. +Weet u zeker dat u het wilt verwijderen? @@ -7400,12 +7400,12 @@ Voortgang: %5</div> Checking for update… - Bezig met controleren op updates... + Bezig met controleren op updates… Checking for updates… - Bezig met controleren op updates... + Bezig met controleren op updates… @@ -7420,7 +7420,7 @@ Voortgang: %5</div> Details… - Details... + Details… @@ -7435,7 +7435,7 @@ Voortgang: %5</div> Some of the updates do not contain packages for your platform. Try to check for updates later or visit details page for more info. - Sommige updates bevatten bestanden die niet beschikbaar zijn voor jouw besturingssysteem. Probeer het later opnieuw of bekijk de detailspagina voor meer informatie. + Enkele updates bevatten bestanden die niet beschikbaar zijn voor uw besturingssysteem. Probeer het later opnieuw of bekijk de detailpagina voor meer informatie. @@ -7457,7 +7457,7 @@ Voortgang: %5</div> New version of Otter Browser is ready to install. Click Install button to restart browser and install the update or close this dialog to install the update during next browser restart. De nieuwe versie van Otter-webbrowser kan worden geïnstalleerd. -Klik op de knop Installeren om de update nu te installeren of sluit dit venster om de update later te installeren (bij de eerstvolgende start). +Klik op ‘Installeren’ om de update nu te installeren of sluit dit venster om de update later te installeren (bij de eerstvolgende opstart). @@ -7515,7 +7515,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Application Version - Applicatieversie + Programmaversie @@ -7533,27 +7533,27 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Do you want to try to reload it? - Wil je proberen om het tabblad opnieuw te laden? + Wilt u proberen om het opnieuw te laden? Do not show this message again - Dit bericht nooit meer tonen + Nooit meer tonen Failed to load requested web backend: %1 - Het laden van het gevraagde web-backend is mislukt: %1 + Het gevraagde web-backend kan niet worden geladen: %1 Select User Agent - Gebruikersagent selecteren + Kies een gebruikersagent Enter User Agent: - Gebruikersagent invoeren: + Voer de naam in: @@ -7581,12 +7581,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Webpage wants to close this tab, do you want to allow to close it? - De webpagina wil dit tabblad sluiten. Wil je dit toestaan? + De website wil dit tabblad sluiten. Wilt u dit toestaan? Do not show this message again - Dit bericht nooit meer tonen + Nooit meer tonen @@ -7669,7 +7669,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Elements: - Elementen: + Aantal elementen: @@ -7679,23 +7679,23 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Title: - Titel: + Naam Permissions - Machtigingen + Bevoegdheden Preferences - Voorkeuren + Instellingen Details… - Details... + Details… @@ -7705,7 +7705,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Set third-party cookies: - Cookies van derde partijen instellen: + Cookies van externe partijen instellen: @@ -7715,7 +7715,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Access your location: - Toegang tot je locatie: + Toegang tot uw locatie: @@ -7740,7 +7740,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Enter full screen mode: - Volledig scherm-modus inschakelen: + Beeldvullende modus inschakelen: @@ -7775,7 +7775,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Cipher - Token + Vercijfering @@ -7810,28 +7810,28 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster This website was marked as fraud. - Deze website staat bekend als een frauduleuze website. + Deze website staat bekend als frauduleus. Your connection with this website is not private. - Je verbinding met deze website is niet-versleuteld. + Uw verbinding met deze website is onversleuteld. Your connection with this website is private. - Je verbinding met deze website is versleuteld. + Uw verbinding met deze website is versleuteld. You are viewing content from your local filesystem. - Je toont inhoud van je lokale bestandssysteem. + U bekijkt inhoud van uw lokale bestandssysteem. You are viewing safe page from Otter Browser. - Je toont een veilige pagina vanuit Otter-webbrowser. + U bekijkt een veilige pagina vanuit Otter-webbrowser. @@ -7852,12 +7852,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Only existing - Alleen bestaande + Alleen aanwezige Only read existing - Alleen bestaande uitlezen + Aanwezige alleen uitlezen @@ -7935,7 +7935,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Website Preferences - Website-voorkeuren... + Websitevoorkeuren @@ -8009,7 +8009,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Do Not Track: - Mij niet volgen: + Niet volgen: @@ -8019,12 +8019,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Add… - Toevoegen... + Toevoegen… Properties… - Eigenschappen... + Eigenschappen… @@ -8034,7 +8034,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Accept third-party cookies: - Cookies van derde partijen accepteren: + Cookies van externe partijen accepteren: @@ -8054,7 +8054,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Allow to close windows: - Toestaan om vensters te sluiten: + Vensters sluiten toestaan: @@ -8064,7 +8064,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Allow moving and resizing of windows - Verplaatsen en groottewijzigingen van vensters toestaan + Vensterverplaatsing en -grootte-aanpassingen toestaan @@ -8079,7 +8079,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Allow to enter full screen mode: - Volledig scherm-modus toestaan: + Beeldvullende modus toestaan: @@ -8196,7 +8196,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Inform websites that I allow tracking - Websites laten weten dat ik volgen toesta + Websites laten weten dat ik gevolgd mag worden @@ -8207,17 +8207,17 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Only existing - Alleen bestaande + Alleen aanwezige Only read existing - Alleen bestaande uitlezen + Aanwezige alleen uitlezen Expires - Vervalt + Vervalt op @@ -8262,7 +8262,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster this session only - alleen voor deze sessie + alleen binnen deze sessie @@ -8275,7 +8275,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Search… - Zoeken... + Zoeken… @@ -8308,23 +8308,23 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Failed to run command "%1", file is not executable - Uitvoeren van opdracht "%1" is mislukt; bestand is niet uitvoerbaar + De opdracht ‘%1’ kan niet worden uitgevoerd: het bestand is niet uitvoerbaar Failed to run command "%1" (arguments: "%2") - Uitvoeren van opdracht "%1" mislukt (argumenten: "%2") + De opdracht ‘%1’ kan niet worden uitgevoerd (aanvullende opties: ‘%2’) No valid suffix for given MIME type: %1 - Er is geen geldige extensie opgegeven voor MIME-type: %1 + Er is geen geldige extensie opgegeven bij mime-type ‘%1’ Failed to load a valid application path for MIME type %1: %2 - Het laden van een geldig applicatiepad is mislukt voor MIME-type %1: %2 + Het laden van een geldige programmalocatie is mislukt bij mime-type ‘%1’: %2 @@ -8377,7 +8377,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Custom… - Aangepast... + Aangepast… @@ -8422,17 +8422,17 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Open… - Openen... + Openen… Save… - Opslaan... + Opslaan… Clone Tab - Tabblad dupliceren + Tabblad klonen @@ -8493,7 +8493,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Remove Local Tab History - Lokale tabbladgeschiedenis verwijderen + Lokale tabbladgeschiedenis wissen @@ -8506,7 +8506,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Remove Local and Global Tab History - Lokale en globale tabbladgeschiedenis verwijderen + Lokale en algemene tabbladgeschiedenis wissen @@ -8547,7 +8547,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Reopen Previously Closed Tab - Eerder gesloten tabblad heropenen + Gesloten tabblad heropenen @@ -8582,17 +8582,17 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Reopen Previously Closed Window - Vorig gesloten venster heropenen + Gesloten venster heropenen Manage Sessions… - Sessies beheren... + Sessies beheren… Save Current Session… - Huidige sessie opslaan... + Huidige sessie opslaan… @@ -8700,17 +8700,17 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Bookmark Link… - Link toevoegen aan bladwijzers... + Link toevoegen aan bladwijzers… Save Link Target As… - Link opslaan als... + Link opslaan als… Save to Downloads - Opslaan in Downloads + Opslaan in downloadsmap @@ -8778,7 +8778,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Save Image… - Afbeelding opslaan... + Afbeelding opslaan… @@ -8798,12 +8798,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Image Properties… - Afbeeldingseigenschappen... + Afbeeldingseigenschappen… Save Media… - Media opslaan... + Media opslaan… @@ -8870,7 +8870,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Go to URL - Ga naar URL + Ga naar url @@ -8936,7 +8936,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Stop - Stoppen + Afbreken @@ -8946,12 +8946,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Stop All Pages - Alle pagina's stoppen + Alle pagina's afbreken Reload or Stop - Herladen of stoppen + Herladen of afbreken @@ -8971,7 +8971,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Show Context Menu - Contextmenu tonen + Rechtermuisknopmenu openen @@ -9031,7 +9031,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Deselect - De-selecteren + Niets selecteren @@ -9046,7 +9046,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Find… - Zoeken... + Zoeken… @@ -9072,7 +9072,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Create Search… - Zoekmachine creëren... + Zoekmachine toevoegen… @@ -9112,12 +9112,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Page Left - Pagina links + Pagina naar links Page Right - Pagina rechts + Pagina naar rechts @@ -9137,7 +9137,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Print… - Afdrukken... + Afdrukken… @@ -9147,22 +9147,22 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Take Screenshot - Schermafbeelding maken + Schermfoto maken Activate Address Field - Adresveld activeren + Adresveld focussen Activate Search Field - Zoekveld activeren + Zoekveld focussen Activate Content - Inhoud activeren + Inhoud focussen @@ -9177,7 +9177,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Activate Tab - Tabblad activeren + Tabblad focussen @@ -9192,7 +9192,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Activate Window - Venster activeren + Venster focussen @@ -9202,7 +9202,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Bookmark Page… - Pagina toevoegen aan bladwijzers... + Pagina toevoegen aan bladwijzers… @@ -9252,7 +9252,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Inspect Element… - Element inspecteren... + Element inspecteren… @@ -9263,7 +9263,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Full Screen - Volledig scherm + Beeldvullende modus @@ -9303,12 +9303,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Reset to Defaults… - Herstellen naar standaardwaarden... + Standaardwaarden herstellen… Reset Toolbars to Defaults… - Werkbalken herstellen naar standaardwaarden... + Werkbalken herstellen naar standaardwaarden… @@ -9333,7 +9333,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Content Blocking… - Inhoudsblokkering... + Inhoudsblokkering… @@ -9343,7 +9343,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Clear History… - Geschiedenis verwijderen... + Geschiedenis wissen… @@ -9370,12 +9370,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Preferences… - Voorkeuren... + Instellingen… Website Preferences… - Website-voorkeuren... + Websitevoorkeuren… @@ -9385,42 +9385,42 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Reset Options - Herstellen naar standaardwaarden + Standaardwaarden herstellen Website Information… - Website-informatie... + Website-informatie… Website Certificate Information… - Certificaatinformatie van website... + Certificaatinformatie van website… Switch Application Language… - Applicatietaal wijzigen... + Programmataal wijzigen… Check for Updates… - Controleren op updates... + Controleren op updates… Diagnostic Report… - Diagnostisch rapport... + Diagnostisch rapport… About Otter… - Over Otter... + Over Otter… About Qt… - Over Qt... + Over Qt… @@ -9595,7 +9595,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Character Encoding - Karaktertekenset + Tekenset @@ -9615,32 +9615,32 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Import Opera Bookmarks… - Opera-bladwijzers importeren... + Opera-bladwijzers importeren… Import HTML Bookmarks… - HTML-bladwijzers importeren... + HTML-bladwijzers importeren… Import OPML Feeds… - OPML-feeds importeren... + OPML-feeds importeren… Import Opera Notes… - Opera-notities importeren... + Opera-notities importeren… Import Opera Search Engines… - Opera-zoekmachines importeren... + Opera-zoekmachines importeren… Import Opera Session… - Opera-sessie importeren... + Opera-sessie importeren… @@ -9705,7 +9705,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Accept Third-party Cookies - Cookies van derde partijen accepteren + Cookies van externe partijen accepteren @@ -9801,12 +9801,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Only Existing - Alleen bestaande + Alleen aanwezige Only Read Existing - Alleen bestaande uitlezen + Aanwezige alleen uitlezen @@ -9826,7 +9826,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Only Cached - Alleen gecachete + Alleen in cache @@ -9856,7 +9856,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Default Application - Standaardapplicatie + Standaardprogramma @@ -9876,22 +9876,22 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Add Toolbar… - Werkbalk toevoegen... + Werkbalk toevoegen… Add Bookmarks Bar… - Bladwijzerbalk toevoegen... + Bladwijzerbalk toevoegen… Add Sidebar… - Zijbalk toevoegen... + Zijbalk toevoegen… Custom User Agent… - Aangepaste gebruikersagent... + Aangepaste gebruikersagent… @@ -9901,7 +9901,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Edit Link Bookmark… - Bladwijzerlink bewerken... + Bladwijzerlink bewerken… @@ -9946,12 +9946,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Save Video… - Video opslaan... + Video opslaan… Save Audio… - Audio opslaan... + Audio opslaan… @@ -9986,12 +9986,12 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Edit Bookmark… - Bladwijzer bewerken.. + Bladwijzer bewerken… Add Bookmark… - Bladwijzer toevoegen... + Bladwijzer toevoegen… @@ -10024,7 +10024,7 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Advanced Configuration - Geavanceerde configuratie + Geavanceerde instellingen @@ -10082,44 +10082,44 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Failed to open content blocking profile file: %1 - Fout bij openen van profielbestand voor inhoudsblokkering: %1 + Het profielbestand voor inhoudsblokkering kan niet worden geopend: %1 Failed to update content blocking profile: %1 - Fout tijdens bijwerken van profielbestand voor inhoudsblokkering: %1 + Het profielbestand voor inhoudsblokkering kan niet worden bijgewerkt: %1 Failed to update content blocking profile: checksum mismatch - Fout tijdens bijwerken van profielbestand voor inhoudsblokkering: controlesom komt niet overeen + Het profielbestand voor inhoudsblokkering kan niet worden bijgewerkt: de controlesom komt niet overeen Failed to update content blocking profile, update URL is empty - Fout tijdens bijwerken van profielbestand voor inhoudsblokkering: geen bijwerk-URL opgegeven + Het profielbestand voor inhoudsblokkering kan niet worden bijgewerkt: er is geen bijwerk-url Failed to update content blocking profile, update URL (%1) is invalid - Fout tijdens bijwerken van profielbestand voor inhoudsblokkering: de bijwerk-URL (%1) is ongeldig + Het profielbestand voor inhoudsblokkering kan niet worden bijgewerkt: de bijwerk-url (%1) is ongeldig Failed to find User Script file: %1 - Het gebruikersscriptbestand kan niet worden gevonden: %1 + Het gebruikersscriptbestand is niet aangetroffen: %1 URL to open - Te openen URL + Te openen url Uses <path> as cache directory - Gebruikt <path> als cache-map + Gebruikt <path> als cachemap @@ -10134,59 +10134,59 @@ Klik op de knop Installeren om de update nu te installeren of sluit dit venster Starts private session - Begint een incognito-sessie + Opent een incognito-sessie Forces session chooser dialog - Forceert het sessiekiezervenster + Toont het sessiekiezervenster Sets profile and cache paths to directories inside the same directory as that of application binary - Stelt profiel- en cache-paden in als mappen in dezelfde map als die van het uitvoerbare bestand van de browser + Stelt profiel- en cachelocaties in als mappen binnen dezelfde map als die van het uitvoerbare bestand van de browser Loads URL in new tab - Laadt een URL op een nieuw tabblad + Laadt een url op een nieuw tabblad Loads URL in new private tab - Laadt een URL op een nieuw incognito-tabblad + Laadt een url op een nieuw incognito-tabblad Loads URL in new window - Laadt een URL in een nieuw venster + Laadt een url in een nieuw venster Loads URL in new private window - Laadt een URL in een nieuw incognito-venster + Laadt een url in een nieuw incognito-venster Tells application to avoid writing data to disk - Laat de applicatie weten geen gegevens naar de schijf weg te schrijven + Laat het programma weten geen gegevens naar de schijf weg te schrijven Prints out diagnostic report and exits application - Print een diagnostisch rapport en verlaat de applicatie + Maakt een diagnostisch rapport en sluit het programma af Failed to parse entry of proxy auto-config (PAC): %1 - Fout bij laden van de automatische proxy-configuratie (PAC): %1 + Een item uit de automatische proxy-configuratie (pac) kan niet worden verwerkt: %1 Failed to install update Updater: %1 Script: %2 - Het installeren van de update is mislukt + De update kan niet worden geïnstalleerd Updater: %1 Script: %2 @@ -10203,7 +10203,7 @@ Script: %2 Unable to check for updates. Invalid URL: %1 - Er kan niet worden gecontroleerd op updates - de URL is ongeldig: %1 + Er kan niet worden gecontroleerd op updates: de url, %1, is ongeldig @@ -10223,12 +10223,12 @@ Script: %2 Unable to download update: %1 - Het downloaden van de update is mislukt: %1 + De update kan niet worden gedownload: %1 Failed to open User Script file: %1 - Het openen van het gebruikersscriptbestand is mislukt: %1 + Het gebruikersscriptbestand kan niet worden geopend: %1 @@ -10238,7 +10238,7 @@ Script: %2 Failed to locate header of User Script file - Het detecteren van de kop van het gebruikersscriptbestand is mislukt + De kop van het gebruikersscriptbestand kan niet worden gedetecteerd @@ -10252,7 +10252,7 @@ Script: %2 Request blocked by rule from profile %1: %2 - De aanvraag is geblokkeerd door een regel uit profiel %1:<br> + De aanvraag is geblokkeerd door een regel uit profiel ‘%1’:<br> %2 @@ -10265,28 +10265,28 @@ Script: %2 Failed to run File Associations Manager, error code: %1 Application ID: %2 - Het uitvoeren van Bestandstoewijzingbeheer is mislukt - foutcode: %1 -Applicatie-ID: %2 + Bestandstoewijzingbeheer kan niet worden uitgevoerd. Foutcode: %1 +Programma-id: %2 Failed to run File Associations Manager, error code: %1 - Het uitvoeren van Bestandstoewijzingbeheer is mislukt - foutcode: %1 + Bestandstoewijzingbeheer kan niet worden uitgevoerd. Foutcode: %1 Failed to register application to system registry: %1, %2 - De applicatie kan niet worden geregistreerd in het systeemregister: %1, %2 + Het programma kan niet worden geregistreerd in het systeemregister: %1, %2 Failed to load custom rules: invalid adblock header - Het laden van de aangepaste regels is mislukt: ongeldige advertentieblokkeringskop + De aangepaste regels kunnen niet worden geladen: ongeldige reclameblokkeringskop Failed to create a file with custom rules: %1 - Het creëren van een bestand met aangepaste regels is mislukt: %1 + Er kan geen bestand met aangepaste regels worden gemaakt: %1 @@ -10294,12 +10294,12 @@ Applicatie-ID: %2 Keyboard and Mouse Configuration Profiles - Toetsenbord- en muisconfiguratieprofielen + Toetsenbord- en muisinstellingsprofielen Options - Opties + Instellingen @@ -10351,7 +10351,7 @@ Applicatie-ID: %2 System Configuration - Systeemconfiguratie + Systeeminstellingen @@ -10396,22 +10396,22 @@ Applicatie-ID: %2 You tried to access the address <a href="%1">%1</a>, which was blocked by content blocker. - Je probeert het adres <a href="%1">%1</a> te bezoeken, maar het wordt geblokkeerd door de inhoudsblokkering. + U probeert het adres <a href="%1">%1</a> te bezoeken, maar het wordt geblokkeerd door de inhoudsblokkering. The owner of <strong>%1</strong> has configured their page improperly. To protect your information from being stolen, connection to this website was aborted. - De eigenaar van <strong>%1</strong> heeft de pagina onjuist geconfigureerd. De websiteverbinding is verbroken om te voorkomen dat je persoonlijke informatie kan worden gestolen. + De eigenaar van <strong>%1</strong> heeft de pagina niet goed ingesteld. De websiteverbinding is verbroken om te voorkomen dat uw persoonlijke informatie kan worden gestolen. This web page at <strong>%1</strong> has been reported as a web forgery. To protect your information from being stolen, connection to this website was aborted. - De webpagina op <strong>%1</strong> is gerapporteerd als vervalsing. De websiteverbinding is verbroken om te voorkomen dat je persoonlijke informatie kan worden gestolen. + De website <strong>%1</strong> staat bekend als vervalsing. De websiteverbinding is verbroken om te voorkomen dat uw persoonlijke informatie kan worden gestolen. You tried to access the address <a href="%1">%1</a>, which is currently unavailable. Please make sure that the web address (URL) is correctly spelled and punctuated, then try reloading the page. - Je probeert om verbinding te maken met het adres <a href="%1">%1</a>, maar dit adres is momenteel niet beschikbaar. Zorg ervoor dat het webadres (URL) juist is en voorzien van de juiste punctuatie en probeer dan de pagina te herladen. + U probeert verbinding te maken met het adres <a href="%1">%1</a>, maar dit adres is momenteel niet beschikbaar. Zorg er voor dat het webadres (url) juist is en voorzien van de juiste punctuatie. Herlaad daarna de pagina. @@ -10431,17 +10431,17 @@ Applicatie-ID: %2 Make sure your internet connection is active and check whether other applications that rely on the same connection are working. - Zorg ervoor dat je verbonden bent met het internet en controleer of andere applicaties, die dezelfde verbinding gebruiken, wél werken. + Zorg er voor dat u verbonden bent met het internet en controleer of andere programma's, die dezelfde verbinding gebruiken, wél werken. Check that the setup of any internet security software is correct and does not interfere with ordinary web browsing. - Zorg ervoor dat je internet-beveiligingssoftware juist is ingesteld en dat deze geen storingen veroorzaakt tijdens normaal surfen op het internet. + Zorg er voor dat uw internetbeveiligingssoftware juist is ingesteld en dat deze geen storingen veroorzaakt tijdens normaal surfen op het internet. Try pressing the F12 key on your keyboard and disabling proxy servers, unless you know that you are required to use a proxy to connect to the internet, and then reload the page. - Probeer om op de F12-toets van je toetsenbord te drukken en proxyservers uit te schakelen, tenzij je verplicht bent om een proxy te gebruiken voor je internetverbinding. Herlaad daarna de pagina. + Druk op de F12-toets van uw toetsenbord en probeer proxyservers uit te schakelen, tenzij u verplicht bent om een proxy te gebruiken op uw internetverbinding. Herlaad daarna de pagina. @@ -10491,22 +10491,22 @@ Applicatie-ID: %2 Error - Fout + Foutmelding Today at %1 - Vandaag, om %1 + Vandaag om %1 Yesterday at %1 - Gisteren, om %1 + Gisteren om %1 %1 at %2 - %1, om %2 + %1 om %2 @@ -10545,14 +10545,14 @@ Applicatie-ID: %2 This path is already used by different download, pick another one. - Dit pad wordt al gebruikt door een andere download; kies een ander pad. + Deze locatie wordt al gebruikt door een andere download - kies een andere locatie. Target path is not writable. Select another one. - Het doelpad is niet beschrijfbaar. -Selecteer een ander pad. + De doellocatie is niet beschrijfbaar. +Kies een andere locatie. diff --git a/resources/translations/otter-browser_ru.qm b/resources/translations/otter-browser_ru.qm index 994677a1df0408f0322de44cce34c785021edfd1..636cb562f0a53870de1cbb2b43ba4b440001fef6 100644 GIT binary patch delta 3744 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 delta 3755 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 Cp~epY diff --git a/resources/translations/otter-browser_ru.ts b/resources/translations/otter-browser_ru.ts index d94d501696..7261b45b67 100644 --- a/resources/translations/otter-browser_ru.ts +++ b/resources/translations/otter-browser_ru.ts @@ -9875,7 +9875,7 @@ Click Install button to restart browser and install the update or close this dia Add New - Добавить новый + Добавить diff --git a/resources/translations/otter-browser_sq.qm b/resources/translations/otter-browser_sq.qm new file mode 100644 index 0000000000000000000000000000000000000000..2b04d36d51bd1a2c8862ffaf7a6207a2aea6ff26 GIT binary patch literal 209698 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 literal 0 HcmV?d00001 diff --git a/resources/translations/otter-browser_sq.ts b/resources/translations/otter-browser_sq.ts new file mode 100644 index 0000000000..41068030bc --- /dev/null +++ b/resources/translations/otter-browser_sq.ts @@ -0,0 +1,10574 @@ + + + Otter::AcceptCookieDialog + + + Accept Cookie + Pranoje Cookie-n + + + + Name: + Emër: + + + + Value: + Vlerë: + + + + Expiration date: + Datë skadimi: + + + + Send for: + Dërgoje për: + + + + Accessible using JavaScript: + E përdorshme përmes JavaScript-i: + + + + Domain: + Përkatësi: + + + + Website %1 requested to add new cookie. + Sajti %1 kërkoni të shtonjë një cookie të re. + + + + Website %1 requested to update existing cookie. + Sajti %1 kërkoni të përdotësojë cookie ekzistuese. + + + + Website %1 requested to remove existing cookie. + Sajti %1 kërkoi të heqë cookie ekzistuese. + + + + This session only + Vetëm për këtë sesion + + + + Secure connections only + Vetëm lidhje të sigurta + + + + Any type of connection + Çfarëdo lloj lidhjeje + + + + Yes + Po + + + + No + Jo + + + + Accept + Pranojeni + + + + Accept For This Session Only + Pranoje Vetëm Për Këtë Sesion + + + + Discard + Hidhe tej + + + + Otter::AcceptLanguageDialog + + + Preferred Webpage Language + Gjuhë e Parapëlqyer Për Faqe Web + + + + To add language, please choose one from list or type its code. + Që të shtohet gjuhë, ju lutemi zgjidhni një nga lista ose shtypni kodin e saj. + + + + Add + Shto + + + + Remove + Hiqe + + + + Move Up + Ngjite Sipër + + + + Move Down + Zbrite Poshtë + + + + + Name + Emër + + + + + Code + Kod + + + + Unknown [%1] + [%1] e panjohur + + + + + Any other + Çfarëdo tjetër + + + + + System language (%1 - %2) + Gjuhë sistemi (%1 - %2) + + + + Custom + Vetjake + + + + Unknown + E panjohur + + + + Otter::Action + + + Creating instance of deprecated action: %1 + Po krijohet instancë veprimi të nxjerrë nga përdorimi: %1 + + + + Otter::ActionComboBoxWidget + + + Select Action + Përzgjidhni Veprim + + + + Search… + Kërkoni… + + + + Otter::AdblockContentFiltersProfile + + + (Unknown) + (I panjohur) + + + + Otter::AddonsContentsWidget + + + Search… + Kërkoni… + + + + + User Scripts + Programthe Përdoruesi + + + + Select Files + Përzgjidhni Kartela + + + + User Script files (*.js) + Kartela Programthesh Përdoruesi (*.js) + + + + + Question + Pyetje + + + + User Script with this name already exists: +%1 + Ka tashmë një Programth Përdoruesi me këtë emër: +%1 + + + + Do you want to replace it? + Doni të zëvendësohet? + + + + Apply to all + Zbatoje mbi të tërë + + + + Error + Gabim + + + + Failed to import following User Script file(s): +%1 + S’u arrit të importohen kartela Programthi Përdoruesi: +%1S’u arrit të importohet kartelë Programthi Përdoruesi: +%1 + + + + You are about to irreversibly remove %n addon(s). + Ju ndan një hap nga fshirja e %n shtese.Ju ndan një hap nga fshirja e %n shtesave. + + + + Do you want to continue? + Doni të vazhdohet? + + + + Add Addon… + Shtoni Shtesë… + + + + Open Addon File + Hapni Kartelë Shtese + + + + Reload Addon + Ringarko Shtesën + + + + Remove Addon… + Hiqe Shtesë… + + + + Addons + Shtesa + + + + Otter::AddressCompletionModel + + + Search with %1 + Kërko me %1 + + + + Bookmarks + Faqerojtës + + + + Local files + Kartela vendore + + + + History + Historik + + + + Typed history + Historik i ç;është shtypur + + + + Special pages + Faqe speciale + + + + Otter::AddressWidget + + + + Enter address or search… + Jepni adresë ose kërkoni… + + + + Remove this Icon + Hiqe këtë Ikonë + + + + (Untitled) + (Pa titull) + + + + Add to Bookmarks + Shtoje te Faqerojtësit + + + + Add to Start Page + Shtoje te Faqe Fillimi + + + + Show website information + Shfaq hollësi sajti + + + + Show feed list + Shfaq listë prurjesh + + + + Remove bookmark + Hiqe faqerojtësin + + + + Add bookmark + Shtoni faqerojtës + + + + Load all plugins on the page + Ngarko krejt shtojcat te faqja + + + + Log in + Hyni + + + + Otter::Application + + + + + + Warning + Kujdes + + + + Profile directory (%1) is not writable, application will be running in read-only mode. + Drejtoria e profileve (%1) s’është e shkrueshme, aplikacioni do të xhirojë në mënyrën vetëm-lexim. + + + + Your profile directory (%1) ran out of free disk space. +This may lead to malfunctions or even data loss. + Drejtorisë tuaj të profilit (%1) i është mbaruar hapësira e lirë në disk. +KJo mund të shpjerë në mosfunksionime ose madje edhe humbje të dhënash. + + + + Your profile directory (%1) is running low on free disk space (%2 remaining). +This may lead to malfunctions or even data loss. + Drejtorisë tuaj të profilit (%1) i po i mbarhet hapësira e lirë në disk (edhe %2). +KJo mund të shpjerë në mosfunksionime ose madje edhe humbje të dhënash. + + + + + + Do you want to continue? + Doni të vazhdohet? + + + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + Continue in Read-only Mode + Vazhdo nën Mënyrën Vetëm-lexim + + + + Ignore + Shpërfille + + + + Quit + Mbylle + + + + SSL support is not available or incomplete. +Some websites may work incorrectly or do not work at all. + Mbulimi SSL s’është i passhsëm, ose është i paplotë. +Disa sajte mund të mos funksionojnë si duhet, ose të mos funksionojnë fare. + + + + <b>Otter %1</b><br>Web browser controlled by the user, not vice-versa.<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> + <b>Otter %1</b><br>Shfletues i kontrolluar nga përdoruesi, jo e kundërta.<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> + + + + Web backend: %1 %2. + Pjesa e pasme Web: %1 %2. + + + + SSL library not available. + S’ka bibliotekë SSL. + + + + SSL library version: %1. + Version biblioteke SSL: %1. + + + + This session was not saved correctly. +Are you sure that you want to restore this session anyway? + Ky sesion s’u ruajt si duhet. +Jeni i sigurt se doni të rikthehet ky sesion, sido qoftë? + + + + New update %1 from %2 channel is available! + Ka gati përditësim të ri %1 nga kanali %2! + + + + + Question + Pyetje + + + + You are about to quit while %n files are still being downloaded. + Ju ndan një hap nga dalja, ndërkohë që %n kartelë është ende duke u shkarkuar.Ju ndan një hap nga dalja, ndërkohë që %n kartela janë ende duke u shkarkuar. + + + + + Hide + Fshihe + + + + You are about to quit the current Otter Browser session. + Ju ndan një hap nga dalja prej sesioni të tanishëm të Shfletuesit Otter. + + + + Otter::ApplicationComboBoxWidget + + + + + Default Application + Aplikacion Parazgjedhje + + + + + + Other… + Tjetër… + + + + Select Application + Përzgjidhni Aplikacion + + + + Unknown + E panjohur + + + + Otter::AtomFeedParser + + + Failed to parse feed file: %1 + S’u arrit të përtypej kartelë prurjeje: %1 + + + + Failed to parse feed: no valid entries found + S’u arrit të përtypet prurje: s’u gjetën zëra të vlefshëm + + + + Otter::AuthenticationDialog + + + Authentication Required + Lypset Mirëfilltësim + + + + Server: + Shërbyes: + + + + Message: + Mesazh: + + + + User: + Përdorues: + + + + Password: + Fjalëkalim: + + + + Remember password + Mbaje mend fjalëkalimin + + + + Otter::BookmarkPropertiesDialog + + + Title: + Titull : + + + + Description: + Përshkrim: + + + + Address: + Adresë: + + + + Folder: + Dosje: + + + + New… + I ri… + + + + Visits: + Vizita: + + + + Last visit: + Vizita e fundit më: + + + + Created: + U krijua më: + + + + Modified: + Ndryshuar më: + + + + Keyword: + Fjalëkyç: + + + + + + Unknown + E panjohur + + + + View Bookmark + Shihni Faqerojtësin + + + + Edit Bookmark + Përpunoni Faqerojtës + + + + Add Bookmark + Shtoni Faqerojtës + + + + Error + Gabim + + + + Bookmark with this keyword already exists. + Ka tashmë një faqerojtës me këtë fjalëkyç. + + + + Otter::BookmarkWidget + + + Title: %1 + Titull: %1 + + + + Address: %1 + Adresë: %1 + + + + Description: %1 + Përshkrim: %1 + + + + Created: %1 + Krijuar më: %1 + + + + Visited: %1 + Vizituar më: %1 + + + + Otter::BookmarksComboBoxWidget + + + Folder Name + Emër Dosjeje + + + + Select name of new folder: + Përzgjidhni emër të dosjes së re: + + + + Otter::BookmarksContentsWidget + + + Search… + Kërkoni… + + + + Address: + Adresë: + + + + Title: + Titull: + + + + Description: + Përshkrim: + + + + Keyword: + Fjalëkyç: + + + + Add + Shto + + + + + Properties… + Veti… + + + + Delete + Fshije + + + + + + Add Folder… + Shtoni Dosje… + + + + + + Add Bookmark… + Shtoni Faqerojtës… + + + + + + Add Separator + Shtoni Ndarës + + + + Title + Titull + + + + Address + Adresë + + + + Description + Përshkrim + + + + Keyword + Fjalëkyç + + + + Added + Shtuar më + + + + Modified + Ndryshuar më + + + + Visited + Vizituar më + + + + Visits + Vizita + + + + Empty Trash + Zbraz Hedhurinat + + + + Add Bookmark + Shtoni Faqerojtës + + + + Restore Bookmark + Riktheje Faqerojtësin + + + + Bookmarks + Faqerojtës + + + + Otter::BookmarksImporterWidget + + + Remove existing bookmarks + Hiqi faqerojtësit ekzistues + + + + Import into folder: + Importo në dosje: + + + + New… + I ri… + + + + Allow to duplicate already existing bookmarks + Lejo të përsëdyten faqerojtës ekzistues + + + + Import into subfolder + Importo në nëndosje + + + + Leave empty to import into main folder + Lëreni të zbrazët për të importuar te dosja kryesore + + + + Subfolder name: + Emër nëndosjeje: + + + + Otter::BookmarksModel + + + Notes + Shënime + + + + Bookmarks + Faqerojtës + + + + Trash + Hedhurina + + + + (Untitled) + (Pa titull) + + + + Failed to open notes file: %1 + S’u arrit të hapej kartelë shënimesh: %1 + + + + Failed to open bookmarks file: %1 + S’u arrit të hapej kartelë faqerojtësish: %1 + + + + Failed to load notes file: %1 + S’u arrit të ngarkohej kartelë shënimesh: %1 + + + + Failed to load bookmarks file: %1 + S’u arrit të ngarkohej kartelë faqerojtësish: %1 + + + + Error + Gabim + + + + Failed to load notes file. + S’u arrit të ngarkohej kartelë shënimesh. + + + + Failed to load bookmarks file. + S’u arrit të ngarkohej kartelë faqerojtësish. + + + + Otter::CacheContentsWidget + + + Search… + Kërkoni… + + + + Address: + Adresë: + + + + Type: + Lloj: + + + + Size: + Madhësi: + + + + Last Modified: + Ndryshuar Së Fundi Më: + + + + Expires: + Skadon më: + + + + Location: + Vendndodhje: + + + + Preview + Paraparje + + + + Delete + Fshije + + + + + Address + Adresë + + + + + Type + Lloj + + + + + Size + Madhësi + + + + + Last Modified + Ndryshuar Së Fundi Më + + + + + Expires + Skadon më + + + + Copy Link to Clipboard + Kopjoja Lidhjen në Të papastër + + + + Remove Entry + Hiqe Zërin + + + + Remove All Entries from This Domain + Hiqi Krejt Zërat prej Kësaj Përkatësie + + + + Unknown + E panjohur + + + + Cache + Fshehtinë + + + + Otter::CertificateDialog + + + Certificate chain: + Varg dëshmish: + + + + Certificate fields: + Fusha dëshmish: + + + + Field value: + Vlerë fushe: + + + + Export… + Eksportoni… + + + + Invalid Certificate + Dëshmi e Pavlefshme + + + + View Certificate for %1 + Shihni Dëshmi për %1 + + + + + Unknown + E panjohur + + + + Select File + Përzgjidhni Kartelë + + + + DER encoded X.509 certificates (*.der) + Dëshmi të koduara me DER X.509 (*.pem) + + + + PEM encoded X.509 certificates (*.pem) + Dëshmi të koduara me PEM X.509 (*.pem) + + + + Text files (*.txt) + Kartela tekst (*.txt) + + + + Error + Gabim + + + + Failed to open file for writing. + S’u arrit të hapet kartelë për shkrim. + + + + Authority Key Identifier + Identifikues Kyçi Autoriteti + + + + Subject Key Identifier + Identifikues Kyçi Subjekti + + + + Key Usage + Përdorim Kyçi + + + + Certificate Policies + Rregulla Dëshmish + + + + Policy Mappings + Përshoqërim Rregullash + + + + Subject Alternative Name + Emër Alternativ Subjekti + + + + Issuer Alternative Name + Emër Alternativ Lëshuesi + + + + Subject Directory Attributes + Atribute Drejtorie Subjekti + + + + Basic Constraints + Kufizime Elementare + + + + Name Constraints + Kufizime Emri + + + + Policy Constraints + Kufizime Rregulli + + + + Extended Key Usage + Përdorim i Zgjeruar Kyçi + + + + CRL Distribution Points + Pika Shpërndarjesh LSHD-sh + + + + Inhibit Any Policy + Pengo Çfarëdo Rregulli + + + + Delta CRL Distribution Point + Pika Shpërndarjesh LSHD-sh Delta + + + + Authority Information Access + Hyrje te Të dhëna Autoriteti + + + + Subject Information Access + Hyrje te Të dhëna Subjekti + + + + Modulus: +%1 + +Exponent: %2 + Modul: +%1 + +Eksponent: %2 + + + + Critical + Kritike + + + + Not Critical + Jo Kritike + + + + OID: %1 + OID: %1 + + + + Value: + Vlerë: + + + + Version + Version + + + + Serial Number + Numër Serial + + + + Certificate Signature Algorithm + Algoritëm Nënshkrimesh Dëshmish + + + + Issuer + Lëshues + + + + Validity + Vlefshmëri + + + + Not Before + Jo Përpara + + + + Not After + Jo Pas + + + + Subject + Subjekt + + + + Subject Public Key + Kyç Publik i Subjektit + + + + Algorithm + Algoritëm + + + + Public Key + Kyç Publik + + + + Extensions + Zgjerime + + + + Fingerprint + Shenja gishtash + + + + SHA-1 Fingerprint + Shenja gishtash SHA-1 + + + + SHA-256 Fingerprint + Shenja gishtash SHA-256 + + + + Otter::ClearHistoryDialog + + + Clear History + Spastro Historikun + + + + Period to clear: + Periudhë për spastrim: + + + + All + Krejt + + + + h + h + + + + Clear browsing history + Spastro historik shfletimesh + + + + Clear cookies + Spastro cookie-t + + + + Clear forms history + Spastro historik formularësh + + + + Clear downloads history + Spastro historikun shkarkimesh + + + + Clear search history + Spastro historik kërkimesh + + + + Clear caches + Spastro fshehtina + + + + Clear websites storage data + Spastro të dhëna depozitimi sajtesh + + + + Clear passwords + Spastro fjalëkalime + + + + + Clear Now + Spastroje Tani + + + + Otter::ColorWidget + + + + Invalid + E pavlefshme + + + + Select Color… + Përzgjidhni Ngjyrë… + + + + Copy Color + Kopjoji Ngjyrën + + + + Clear + Spastroje + + + + Otter::ConfigurationContentsWidget + + + Search… + Kërkoni… + + + + Option Name: + Emër Mundësie: + + + + Current Value: + Vlera e Tanishme: + + + + Default Value: + Vlerë Parazgjedhje: + + + + Save All + Ruaji Krejt + + + + Restore Defaults + Rikthe Parazgjedhjet + + + + + Name + Emër + + + + + Type + Lloj + + + + + Value + Vlerë + + + + + Question + Pyetje + + + + The settings have been changed. +Do you want to save them? + Rregullimet u ndryshuan. +Doni të ruhen? + + + + Do you really want to restore default values of all options? + Doni vërtet të rikthehen vlerat parazgjedhje të krejt mundësive? + + + + Copy Option Name + Kopjo Emër Mundësie + + + + Copy Option Value + Kopjo Vlerë Mundësie + + + + Save Value + Ruaje Vlerën + + + + Restore Default Value + Rikthe Vlerën Parazgjedhje + + + + Expand All + Zgjeroji Krejt + + + + Collapse All + Tkurri Krejt + + + + Advanced Configuration + Formësim i Thelluar + + + + Otter::ConfigurationOptionWidget + + + Choose option + Zgjidhni mundësi + + + + Otter::ContentBlockingDialog + + + Content Blocking + Bllokim Lënde + + + + General + Të përgjithshme + + + + Profiles + Profile + + + + Select lists which you want to use for content blocking (AdBlock Plus compatible): + Përzgjidhni listat të cilat doni të përdoren për bllokim lënde (e përputhshme me AdBlock Plus): + + + + Settings + Rregullime + + + + Cosmetic filters: + Filtra kozmetikë: + + + + Enable wildcard expressions + Aktivizo shprehje shenja të gjithëpushtetshme + + + + Enable custom rules + Aktivizo rregulla vetjake + + + + + Add + Shto + + + + + Edit + Përpunoni + + + + Update + Përditësoje + + + + + Remove + Hiqe + + + + + Custom Rules + Rregulla Vetjake + + + + All + Krejt + + + + Domain specific only + Vetëm për përkatësi të caktuara + + + + None + Asnjë + + + + Otter::ContentBlockingInformationWidget + + + Active Profiles + Profile Aktive + + + + Blocked Elements + Elementë të Bllokuar + + + + main frame + kuadri kryesor + + + + subframe + nënkuadër + + + + pop-up + flluskë + + + + stylesheet + fletëstil + + + + script + programth + + + + image + figurë + + + + object + objekt + + + + object subrequest + nënkërkesë objekti + + + + XHR + XHR + + + + WebSocket + WebSocket + + + + other + tjetër + + + + Enable Content Blocking + Aktivizo Bllokim Lënde + + + + Blocked Elements: {amount} + Elementë të Bllokuar: {amount} + + + + Otter::ContentBlockingIntervalDelegate + + + day(s) + ditë + + + + + Never + Kurrë + + + + %n day(s) + %n ditë%n ditë + + + + Otter::ContentBlockingProfileDialog + + + Profile Settings + Rregullime Profili + + + + Title: + Titull : + + + + Category: + Kategori: + + + + Address: + Adresë: + + + + Update interval: + Interval përditësimi: + + + + Never + Kurrë + + + + days + ditë + + + + Last update: + Përditësimi i fundit më: + + + + + Advertisements + Reklama + + + + + Annoyance + Ndal reklam + + + + + Privacy + Privatësi + + + + + Social + Shoqërore + + + + + Regional + Rajonale + + + + + Other + Tjetër + + + + + + Error + Gabim + + + + Valid update URL is required. + Lypset URL e vlefshme përditësimi. + + + + Profile with name %1.txt already exists. + Ka tashmë një profil me emrin %1.txt. + + + + Failed to create profile file: %1. + S’u arrit të krijohet kartelë profili: %1. + + + + Otter::ContentBlockingTitleDelegate + + + Failed to read profile file + S’u arrit të lexohej kartelë profili + + + + Failed to download profile rules + S’u arrit të shkarkohen rregulla profili + + + + Failed to verify profile rules using checksum + S’u arrit të verifikohen rregulla profili duke përdorur checksum-in + + + + Profile was never updated + Profili s’u përditësua kurrë + + + + Profile was last updated more than one week ago + Profili qe përditësuar më tepër se një javë më parë + + + + Otter::ContentFiltersManager + + + Custom Rules + Rregulla Vetjake + + + + Failed to remove content blocking profile file: %1 + S’u arrit të hiqet kartelë profili bllokimi lënde: %1 + + + + Unknown + E panjohur + + + + Title + Titull + + + + Update Interval + Interval Përditësimesh + + + + Last Update + Përditësimi i Fundit Më + + + + Advertisements + Reklama + + + + Annoyance + Ndal reklam + + + + Privacy + Privatësi + + + + Social + Shoqërore + + + + Regional + Rajonale + + + + Other + Tjetër + + + + Otter::ContentsDialog + + + Close + Mbylle + + + + Otter::ContentsWidget + + + Print Page + Shtype Faqen + + + + Print Preview + Paraparje Shtypjeje + + + + Otter::CookiePropertiesDialog + + + Name: + Emër: + + + + Value: + Vlerë: + + + + Expires: + Skadon më: + + + + this session only + vetëm për këtë sesion + + + + MM.dd.yyyy HH:mm + Date and time format + MM.dd.yyyy HH:mm + + + + Domain: + Përkatësi: + + + + Path: + Shteg: + + + + Send only for secure connections + Dërgoje vetëm për lidhje të sigurta + + + + Allow accessing using JavaScript + Lejo hyrje duke përdorur JavaScript + + + + Add Cookie + Shtoni Cookie + + + + Edit Cookie + Përpunoni Cookie + + + + Otter::CookiesContentsWidget + + + Search… + Kërkoni… + + + + Name: + Emër: + + + + Value: + Vlerë: + + + + Expires: + Skadon më: + + + + Domain: + Përkatësi: + + + + Path: + Shteg: + + + + Add… + Shtoni… + + + + + Properties… + Veti… + + + + Delete + Fshije + + + + + Question + Pyetje + + + + You are about to delete %n cookie(s). + Ju ndan një hap nga fshirja e %n cookie.Ju ndan një hap nga fshirja e %n cookie-ve. + + + + + Do you want to continue? + Doni të vazhdohet? + + + + You are about to delete all cookies. + Ju ndan një hap nga fshirja e krejt cookie-ve. + + + + Add Cookie… + Shtoni Cookie… + + + + Remove All Cookies from This Domain… + Hiqini Krejt Cookie-t prej Kësaj Përkatësie… + + + + Remove All Cookies… + Hiqi Krejt Cookie-t… + + + + this session only + vetëm për këtë sesion + + + + Cookies + Cookies + + + + Otter::CookiesExceptionsDialog + + + Third-party Cookies Exceptions + Përjashtime Për Cookies Nga Palë të Treta + + + + Always ACCEPT third-party cookies from: + PRANO përherë cookie-t palësh të treta nga: + + + + + Add + Shto + + + + + Edit + Përpunoni + + + + + Remove + Hiqe + + + + Always REJECT third-party cookies from: + HIDH POSHTË përherë cookie-t palësh të treta nga: + + + + Otter::ErrorConsoleWidget + + + Scope + Fokus + + + + + Network + Rrjet + + + + + Security + Siguri + + + + CSS + CSS + + + + + JS + JS + + + + + Other + Tjetër + + + + Clear + Spastroje + + + + Filter… + Filtër… + + + + Close + Mbylle + + + + All Tabs + Tërë Skedat + + + + Current Tab Only + Vetëm Skedën e Tanishme + + + + Other Sources + Burime të Tjera + + + + <empty> + <e zbrazët> + + + + Copy + Kopjoje + + + + Expand All + Zgjeroji Krejt + + + + Collapse All + Tkurri Krejt + + + + Otter::Feed + + + Feed updated: +%1 + Prurja u përditësua: +%1 + + + + Failed to parse feed: invalid feed type + S’u arrit të përtypet prurja: lloj i pavlefshëm prurjeje + + + + Failed to download feed + S’u arrit të shkarkohej prurje + + + + Otter::FeedPropertiesDialog + + + Edit Feed + Përpunoni Prurje + + + + Folder: + Dosje: + + + + New… + E re… + + + + Title: + Titull : + + + + Change Icon… + Ndryshoni Ikonë… + + + + Address: + Adresë: + + + + Update interval: + Interval përditësimi: + + + + Never + Kurrë + + + + minutes + minuta + + + + Add Feed + Shtoni Prurje + + + + Error + Gabim + + + + Valid address is required. + Lypset adresë e vlefshme. + + + + Otter::FeedsComboBoxWidget + + + Folder Name + Emër Dosjeje + + + + Select name of new folder: + Përzgjidhni emër të dosjes së re: + + + + Otter::FeedsContentsWidget + + + OK + OK + + + + Cancel + Anuloje + + + + + Search… + Kërkoni… + + + + Categories + Kategori + + + + + Title + Titull + + + + + From + Nga + + + + + Published + Botuar më + + + + Question + Pyetje + + + + You already subscribed this feed. + Jeni tashmë i pajtuar te kjo prurje. + + + + Do you want to continue? + Doni të vazhdohet? + + + + Select Folder Name + Përzgjidhni Emër Dosjeje + + + + Enter folder name: + Jepni emër dosjeje: + + + + Open + Hape + + + + Empty Trash + Zbraz Hedhurinat + + + + + Add Folder… + Shtoni Dosje… + + + + + Add Feed… + Shtoni Prurje… + + + + Add New + Shtoni të Re + + + + Restore Feed + Riktheje Prurjen + + + + Properties… + Veti… + + + + Send email to %1 + Dërgo email te %1 + + + + Go to %1 + Shko te %1 + + + + All (%1) + Krejt (%1) + + + + + (Untitled) + (Pa titull) + + + + Subscribe to this feed using: + Pajtohuni te kjo prurje duke përdorur: + + + + Feed: %1 + Prurje: %1 + + + + Feeds + Prurje + + + + + Title: %1 + Titull: %1 + + + + + Address: %1 + Adresë: %1 + + + + Last update: %1 + Përditësimi i fundit më: %1 + + + + Otter::FeedsModel + + + Feeds + Prurje + + + + Trash + Hedhurina + + + + (Untitled) + (Pa titull) + + + + Failed to open feeds file: %1 + S’u arrit të hapej kartelë prurjesh: %1 + + + + Failed to load feeds file: %1 + S’u arrit të ngarkohej kartelë prurjesh: %1 + + + + Error + Gabim + + + + Failed to load feeds file. + S’u arrit të ngarkohej kartelë prurjesh. + + + + Otter::FilePasswordsStorageBackend + + + Failed to open passwords file: %1 + S’u arrit të hapej kartelë fjalëkalimesh: %1 + + + + Failed to save passwords file: %1 + S’u arrit të ruhej kartelë fjalëkalimesh: %1 + + + + Failed to remove passwords file + S’u arrit të hiqej kartelë fjalëkalimesh + + + + Encrypted File + Kartelë e Fshehtëzuar + + + + Stores passwords in AES encrypted file. + I depoziton fjalëkalimet në një kartelë të fshehtëzuar me AES. + + + + Otter::FilePathWidget + + + + Browse… + Shfletoni… + + + + Select File + Përzgjidhni Kartelë + + + + Select Directory + Përzgjidhni Drejtori + + + + Otter::FreeDesktopOrgPlatformIntegration + + + Error + Gabim + + + + Warning + Sinjalizim + + + + Information + Informacion + + + + Notification + Njoftim + + + + Otter::HandlersManager + + + Error + Gabim + + + + Profile with this address already exists. + Ka tashmë një profil me këtë adresë. + + + + Question + Pyetje + + + + Do you want to add this content blocking profile? + Doni të shtohet ky profil bllokimesh lënde? + + + + Otter::HeaderViewWidget + + + Sorting + Renditje + + + + Sort Ascending + Renditi Në Rend Rritës + + + + Sort Descending + Renditi Në Rend Zbritës + + + + No Sorting + Pa Renditje + + + + Visible Columns + Shtylla të Dukshme + + + + Show All + Shfaqi Krejt + + + + (Untitled) + (Pa titull) + + + + Otter::HistoryContentsWidget + + + Search… + Kërkoni… + + + + Today + Sot + + + + Yesterday + Dje + + + + Earlier This Week + Më Herët Këtë Javë + + + + Previous Week + Javën e Kaluar + + + + Earlier This Month + Më Herët Këtë Muaj + + + + Earlier This Year + Më Herët Këtë Vit + + + + Older + Më të vjetër + + + + + Address + Adresë + + + + + Title + Titull + + + + + Date + Datë + + + + Add to Bookmarks… + Shtoje te Faqerojtësit… + + + + Copy Link to Clipboard + Kopjoja Lidhjen në Të papastër + + + + Remove Entry + Hiqe Zërin + + + + Remove All Entries from This Domain + Hiqi Krejt Zërat prej Kësaj Përkatësie + + + + History + Historik + + + + Otter::HistoryEntryItem + + + (Untitled) + (Pa titull) + + + + Otter::HistoryModel + + + Failed to open history file: %1 + S’u arrit të hapej kartelë historiku: %1 + + + + Otter::HtmlBookmarksImporter + + + HTML Bookmarks + Faqerojtës HTML + + + + Imports bookmarks from HTML file (Netscape format). + Importon faqerojtës nga kartelë HTML (format Netscape). + + + + HTML files (*.htm *.html) + Kartela HTML (*.htm *.html) + + + + Otter::IconWidget + + + + + + Select Icon + Përzgjidhni Ikonë + + + + Images (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) + Figura (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) + + + + Icon Name: + Emër Ikone: + + + + Select From File… + Përzgjidhni Prej Kartele… + + + + Select From Theme… + Përzgjidhni Prej Teme… + + + + Reset + Ktheje te parazgjedhjet + + + + Clear + Spastro + + + + Otter::ImagePropertiesDialog + + + Image Properties + Veti Figure + + + + Size: + Madhësi: + + + + Type: + Lloj: + + + + File size: + Madhësi kartele: + + + + Address: + Adresë: + + + + Alternative text: + Text alternativ: + + + + Long description: + Përshkrim i gjatë: + + + + + + Unknown + E panjohur + + + + %1 x %2 pixels @ %3 bits per pixel in %n frame(s) + %1 x %2 piksel @ %3 bite për piksel në %n kuadër%1 x %2 piksel @ %3 bite për piksel në %n kuadro + + + + + %1 x %2 pixels @ %3 bits per pixel + %1 x %2 piksel @ %3 bite për piksel + + + + %1 x %2 pixels + %1 x %2 piksel + + + + Otter::ImportDialog + + + Options + Mundësi + + + + Source: + Burim: + + + + Results + Përfundime + + + + Initializing… + Po gatitet… + + + + %p% (%v/%m) + %p% (%v/%m) + + + + Error + Gabim + + + + Unable to import selected type. + S’arrihet të importohet lloji i përzgjedhur. + + + + Processing… + Po përpunohet… + + + + Failed to import data. + S’u arrit të importohen të dhëna. + + + + Import cancelled by the user. + Importim i anuluar nga përdoruesi. + + + + Import finished successfully. + Importimi përfundoi me sukses. + + + + Otter::JavaScriptPreferencesDialog + + + JavaScript Options + Mundësi Javascript-i + + + + Allow moving and resizing of windows + Lejo lëvizje dhe ripërmarim dritaresh + + + + Allow changing of status field + Lejo ndryshim fushe gjendjeje + + + + Allow script to hide address bar + Lejo programthe të fshehin shtyllë adresash + + + + Allow access to clipboard + Lejo hyrje në të papastër + + + + Allow to receive right mouse button clicks + Lejo pranim klikimesh me butonin e djathtë të miut + + + + Allow to close windows: + Lejo të mbyllë dritare: + + + + Allow to enter full screen mode: + Lejo ta kalojë nën mënyrën Sa Krejt Ekrani: + + + + + Ask + Pyet + + + + + Always + Përherë + + + + + Never + Kurrë + + + + Otter::KeyboardProfile + + + + (Untitled) + (Pa titull) + + + + Otter::KeyboardProfileDialog + + + Profile Configuration + Formësim Profili + + + + Actions + Veprime + + + + Search… + Kërkoni… + + + + Add + Shto + + + + Remove + Hiqe + + + + Information + Informacion + + + + Title: + Titull : + + + + Description: + Përshkrim: + + + + Version: + Version: + + + + Author: + Autor: + + + + + Status + Gjendje + + + + + Action + Veprim + + + + + Parameters + Parametra + + + + + Shortcut + Shkurtore + + + + This shortcut already used by %1 + Kjo shkurtore përdoret tashmë nga %1 + + + + unknown action + veprim i panjohur + + + + This shortcut cannot be used because it would be overriden by a native hotkey used by an editing action + Kjo shkurtore s’mund të përdoret, ngaqë do të anashkalohej nga një tast i sistemit i përdorur për veprime përpunimi + + + + Single key shortcuts are currently disabled + Shkurtoret me një tast të vetëm aktualisht janë të çaktivizuara + + + + Otter::LinksContentsWidget + + + Search… + Kërkoni… + + + + Lock Panel + Kyçe Panelin + + + + Links + Lidhje + + + + Title: %1 + Titull: %1 + + + + Address: %1 + Adresë: %1 + + + + Otter::LocalListingNetworkReply + + + Directory does not exist + Drejtoria s’ekziston + + + + Directory is not readable + Drejtoria s’është e lexueshme + + + + Cannot read directory listing + S’lexohet dot lënda e drejtorisë + + + + Directory Contents + Lëndë Drejtorie + + + + Name + Emër + + + + Type + Lloj + + + + Size + Madhësi + + + + Date + Datë + + + + Otter::LocaleDialog + + + Switch Application Language + Këmbeni Gjuhë Aplikacioni + + + + Language: + Gjuhë: + + + + Custom path: + Shteg vetjak: + + + + System + Sistem + + + + Custom + Vetjake + + + + Unknown [%1] + E panjohur [%1] + + + + Translation files (*.qm) + Kartela përkthimi (*.qm) + + + + Otter::MacPlatformIntegration + + + Error + Gabim + + + + Warning + Sinjalizim + + + + Information + Informacion + + + + Otter::MainWindow + + + Question + Pyetje + + + + You are about to open %n bookmark(s). + Ju ndan një hap nga hapja e %n faqerojtësi.Ju ndan një hap nga hapja e %n faqerojtësve. + + + + Do you want to continue? + Doni të vazhdohet? + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + Empty + E zbrazët + + + + Otter::MasterPasswordDialog + + + Set Master Password + Caktoni Fjalëkalim të Përgjithshëm + + + + Current password: + Fjalëkalimi i tanishëm: + + + + New password: + Fjalëkalim i ri: + + + + Confirm new password: + Ripohoni fjalëkalimin e ri: + + + + Otter::Menu + + + + Failed to create menu action: %1 + S’u arrit të krijohej veprim menuje: %1 + + + + Window - %1 + Dritare - %1 + + + + + (Untitled) + (Pa titull) + + + + %1 (%n tab(s)) + %1 (%n skedë)%1 (%n skeda) + + + + Otter::MenuButtonWidget + + + Menu + Menu + + + + Otter::Migrator + + + Settings Migration + Migrim Rregullimesh + + + + Configuration of the components listed below needs to be updated to new version. +Do you want to migrate it? + Formësimi i përbërësve të radhitur më poshtë lypset të përditësohet me version të ri. +Doni të migrohet? + + + + Create backup + Krijo kopjeruajtje + + + + Otter::MouseProfile + + + + (Untitled) + (Pa titull) + + + + Otter::MouseProfileDialog + + + Profile Configuration + Formësim Profili + + + + Actions + Veprime + + + + Search… + Kërkoni… + + + + + Add + Shto + + + + + Remove + Hiqe + + + + Move Up + Ngjite Sipër + + + + Move Down + Zbrite Poshtë + + + + Information + Informacion + + + + Title: + Titull: + + + + Description: + Përshkrim: + + + + Version: + Version: + + + + Author: + Autor: + + + + Generic + Elementar + + + + Link + Lidhje + + + + Editable Content + Lëndë e Përpunueshme + + + + Tab Handle + Trajtim Skede + + + + Tab Handle of Active Tab + Trajtim Skede i Skedës Aktive + + + + Empty Area of Tab Bar + Fushë e Zbrazët e Shtyllës së Skedave + + + + Any Toolbar + Çfarëdo Paneli + + + + Context and Action + Kontekst dhe Veprim + + + + Parameters + Parametra + + + + Steps + Hapa + + + + Step + Hap + + + + Select Action + Përzgjidhni Veprim + + + + Otter::NavigationActionWidget + + + Remove Entry + Hiqe Zërin + + + + Purge Entry + Spastro Zërin + + + + Otter::NetworkAutomaticProxy + + + + Failed to load proxy auto-config (PAC): %1 + S’u arrit të ngarkohet vetëformësim ndërmjetësi (PAC): %1 + + + + Failed to load proxy auto-config (PAC). Invalid URL: %1 + S’u arrit të ngarkohet vetëformësim (PAC). URL e Pavlefshme: %1 + + + + Otter::NetworkManager + + + Warning + Sinjalizim + + + + SSL errors occurred: + +%1 + +Do you want to continue? + Ndodhën gabime SSL: + +%1 + +Doni të vazhdohet? + + + + Otter::NetworkManagerFactory + + + Custom + Vetjake + + + + Otter::NotesContentsWidget + + + Search… + Kërkoni… + + + + Address: + Adresë: + + + + Date: + Datë: + + + + Add + Shto + + + + Delete + Fshije + + + + + + Add Folder… + Shtoni Dosje… + + + + + + + Add Note + Shtoni Shënim + + + + + + Add Separator + Shtoni Ndarës + + + + Add note… + Shtoni shënim… + + + + Select Folder Name + Përzgjidhni Emër Dosjeje + + + + Enter folder name: + Jepni emër dosjeje: + + + + Empty Trash + Zbraz Hedhurinat + + + + Open source page + Hap faqe burim + + + + Restore Note + Rikthe Shënimin + + + + Notes + Shënime + + + + Otter::NotificationDialog + + + + Close + Mbylle + + + + Otter::OpenAddressDialog + + + Go to Page + Shko te Faqja + + + + Enter a web address or choose one from the list: + Jepni një adresë web ose zgjidhni një nga lista: + + + + Otter::OpenBookmarkDialog + + + Go to Bookmark + Shko te Faqerojtësi + + + + Enter the keyword of bookmark: + Jepni fjalëkyçin e faqerojtësit: + + + + Otter::OperaBookmarksImporter + + + Opera Bookmarks + aqerojtës Opera + + + + Imports bookmarks from Opera Browser version 12 or earlier + Importon faqerojtës nga Shfletuesi Opera, version 12 ose më i hershëm + + + + Opera bookmarks files (bookmarks.adr) + Kartela faqerojtësish Opera (bookmarks.adr) + + + + Otter::OperaNotesImporter + + + Import into folder: + Importo në dosje: + + + + Opera Notes + Shënime Opera + + + + Imports notes from Opera Browser version 12 or earlier + Importon shënime nga Shfletuesi Opera, version 12 ose më i hershëm + + + + Opera notes files (notes.adr) + Kartela shënimesh Opera (notes.adr) + + + + Otter::OperaSearchEnginesImporter + + + Remove existing search engines + Hiqi motorët ekzistues të kërkimeve + + + + Opera search engines + Motorë kërkimesh Opera + + + + Imports search engines from Opera Browser version 12 or earlier + Importon motorë kërkimesh nga Shfletuesi Opera, version 12 ose më i hershëm + + + + Opera search engines files (search.ini) + Kartela motorësh kërkimesh Opera (search.ini) + + + + Otter::OperaSessionImporter + + + Opera Session + Sesion Opera + + + + Imports session from Opera Browser version 12 or earlier + Importon sesione nga Shfletuesi Opera, version 12 ose më i hershëm + + + + Opera session files (*.win) + Kartela sesioni Opera (*.win) + + + + Otter::OpmlImporter + + + OPML Feeds + Prurje OPML + + + + Imports feeds from OPML file + Importo prurje nga kartelë OPML + + + + OPML files (*.opml) + Kartela OPML (*.opml) + + + + Otter::OpmlImporterWidget + + + Import into folder: + Importo në dosje: + + + + New… + E re… + + + + Allow to duplicate already existing feeds + Lejo të përsëdyten prurje që ekzistojnë tashmë + + + + Otter::OptionWidget + + + No + Jo + + + + Yes + Po + + + + Defaults + Parazgjedhje + + + + Otter::PageInformationContentsWidget + + + Search… + Kërkoni… + + + + + Name + Emër + + + + + Value + Vlerë + + + + + <empty> + <e zbrazët> + + + + General + Të përgjithshme + + + + Title + Titull + + + + MIME type + Lloj MIME + + + + Document size + Madhësi dokumenti + + + + Total size + Madhësi gjithsej + + + + + Number of requests + Numër kërkesash + + + + %1 (%n blocked) + %1 (%n bllokuar)%1 (%n të bllokuar) + + + + Downloaded + Të shkarkuara + + + + Headers + Krye + + + + Meta + Meta + + + + Permissions + Leje + + + + Security + Siguri + + + + Cipher protocol + Protokoll shifre + + + + Cipher authentication method + Metodë mirëfilltësimi shifre + + + + Cipher encryption method + Metodë fshehtëzimi me shifër + + + + Cipher key exchange method + Metodë shkëmbimi kyçesh shifrimi + + + + Page Information + Hollësi Faqeje + + + + Otter::PasswordBarWidget + + + Save + Ruaje + + + + Cancel + Anuloje + + + + + Do you want to update login data for %1? + Doni të përditësohen të dhëna hyrjeje për %1? + + + + + Do you want to save login data for %1? + Doni të ruhen të dhëna hyrjeje për %1? + + + + Otter::PasswordsContentsWidget + + + Search… + Kërkoni… + + + + + Name + Emër + + + + + Value + Vlerë + + + + Set #%1 + Caktuar më #%1 + + + + + + Question + Pyetje + + + + + You are about to delete %n password(s). + Ju ndan një hap nga fshirja e %n fjalëkalimi.Ju ndan një hap nga fshirja e %n fjalëkalimeve. + + + + + + Do you want to continue? + Doni të vazhdohet? + + + + You are about to delete all passwords. + Ju ndan një hap nga fshirja e krejt fjalëkalimeve. + + + + Remove Password + Hiqe Fjalëkalimin + + + + Remove All Passwords from This Domain… + Hiqi Krejt Fjalëkalimet nga Kjo Përkatësi… + + + + Remove All Passwords… + Hiqini Krejt Fjalëkalimet… + + + + Passwords + Fjalëkalime + + + + Otter::PermissionBarWidget + + + Allow this time + Lejoje këtë herë + + + + Always allow + Lejoje përherë + + + + Always deny + Hidhe poshtë përherë + + + + OK + OK + + + + Cancel + Anuloje + + + + %1 wants to enter full screen mode. + %1 dëshiron të kalojë nën mënyrën Sa Krejt Ekrani. + + + + %1 wants access to your location. + %1 dëshiron të njohë vendndodhjen tuaj. + + + + %1 wants to show notifications. + %1 dëshiron të shfaqë njoftime. + + + + %1 wants to lock mouse pointer. + %1 dëshiron të bllokojë treguesin e miut. + + + + %1 wants to access your microphone. + %1 dëshiron të përdorë mikrofonin tuaj. + + + + %1 wants to access your camera. + %1 dëshiron të përdorë kamerën tuaj. + + + + %1 wants to access your microphone and camera. + %1 dëshiron të përdorë mikrofonin dhe kamerën tuaj. + + + + %1 wants to play audio. + %1 dëshiron të luajë audio. + + + + Invalid permission request from %1. + Kërkesë e pavlefshme lejesh nga %1. + + + + Otter::PlatformIntegration + + + Error + Gabim + + + + Failed to install update. + S’u arrit të instalohej përditësim. + + + + Otter::PopupsBarWidget + + + Details + Hollësi + + + + Close + Mbylle + + + + + %1 wants to open %n pop-up window(s). + %1 dëshiron të hapë %n dritare flluskë.%1 dëshiron të hapë %n dritare flluskë. + + + + Open All Pop-Ups from This Website + Lejo Krejt Flluskat nga Ky Sajt + + + + Open Pop-Ups from This Website in Background + Flluskat nga Ky Sajt Hapi në Prapaskenë + + + + Block All Pop-Ups from This Website + Blloko Krejt Flluskat nga Ky Sajt + + + + Always Ask What to Do for This Website + Pyet Përherë Ç’të Bëhet për Këtë Sajt + + + + Blocked Pop-ups + Flluska të Bllokuara + + + + Open All + Hapi Krejt + + + + Otter::PreferencesAdvancedPageWidget + + + + + General + Të përgjithshme + + + + Smooth scrolling + Rrëshqitje e butë + + + + Check spelling + Kontrolloji drejtshkrimin + + + + Address Field Suggestions + Sugjerime Fushe Adresash + + + + Suggest bookmarks + Sugjero faqerojtës + + + + Suggest history + Sugjero prej historiku + + + + Suggest search results + Sugjero përfundime kërkimi + + + + Local paths + Shtigje vendore + + + + Address Completion + Plotësim Adresash + + + + Show category headers + Shfaqi krye kategorish + + + + Display mode: + Mënyrë shfaqjeje: + + + + Events + Akte + + + + Play sound: + Luaj tingull: + + + + Show notification + Shfaq njoftim + + + + Mark taskbar entry + Vëri shenjë zërin përkatës në panel + + + + Options + Opsione + + + + Prefer native notifications + Parapëlqe njoftime nga sistemi + + + + Style + Stil + + + + Widget style: + Stile widget-i: + + + + Interface style sheet: + Fletë stilesh ndërfaqeje: + + + + Other + Tjetër + + + + Show tray icon + Shfaq ikonë paneli + + + + Images: + Figura: + + + + Enable JavaScript + Aktivizo Javascript + + + + JavaScript Options… + Mundësi Javascript-i… + + + + Plugins: + Shtojca: + + + + User style sheet: + Fletë stilesh përdoruesi: + + + + Website Preferences + Parapëlqime Sajti + + + + Search… + Kërkoni… + + + + + + + + + + Add + Shto + + + + + + + + Edit… + Përpunoni… + + + + + + + + + + Remove + Hiqei + + + + MIME Types + Lloje MIME + + + + Show download dialog + Shfaq dialog shkarkimesh + + + + Save to disk + Ruaje në disk + + + + Do not ask for folder, save directly to + Mos pyet për dosje, ruaji drejt e në + + + + Open with application + Hape me aplikacion + + + + Pass web address directly to application + Jepe adresën web drejt e në aplikacion + + + + Send referrer information + Dërgo hollësi referuesi + + + + User Agent + Agjent Përdoruesi + + + + Proxy + Ndërmjetës + + + + SSL Ciphers + Shifra SSL + + + + + + Move Up + Ngjite Sipër + + + + + + Move Down + Zbrite Poshtë + + + + + + Updates + Përditësime + + + + Select channels from which you want to receive updates: + Përzgjidhni kanale prej të cilëve doni të merrni përditësime: + + + + Check for updates every + Kontrollo për përditësime çdo + + + + day(s) + ditë + + + + Install updates automatically + Përditësimet instaloji automatikisht + + + + Keyboard Shortcuts + Shkurtore Tastatiere + + + + + Clone + Klonoje + + + + Enable single key shortcuts + Aktivizo shkurtore me një tast të vetëm + + + + Mouse Actions and Gestures + Veprime dhe Gjeste Miu + + + + Enable mouse gestures + Aktivizoni gjeste miu + + + + + Browsing + Shfletim + + + + + Notifications + Njoftime + + + + + Appearance + Dukje + + + + + Content + Lëndë + + + + + Downloads + Shkarkime + + + + + Programs + Programe + + + + + History + Historik + + + + + Network + Rrjet + + + + + Security + Siguri + + + + + Keyboard + Tastierë + + + + + Mouse + Mi + + + + Compact + Kompakte + + + + Columns + Shtylla + + + + WAV files (*.wav) + Kartela WAV (*.wav) + + + + + Name + Emër + + + + Description + Përshkrim + + + + System Style + Stil Sistemi + + + + + Style sheets (*.css) + Fletë stili (*.css) + + + + All images + Krejt figurat + + + + Cached images + Figura fshehtine + + + + No images + Pa figura + + + + Enabled + E aktivizuar + + + + On demand + Sipas kërkesash + + + + Disabled + E çaktivizuar + + + + + Title + Titull + + + + Value + Vlerë + + + + + Add Folder… + Shtoni Dosje… + + + + Add User Agent… + Shtoni Agjent Përdoruesi… + + + + + Add Separator + Shtoni Ndarës + + + + Add Proxy… + Shtoni Ndërmjetës… + + + + Stable version + Version i qëndrueshëm + + + + Beta version + Version beta + + + + Weekly development version + Version i përjavshëm zhvillimi + + + + + New… + E re… + + + + + Readd + Rishtoje + + + + + + Question + Pyetje + + + + Do you really want to remove preferences for this website? + Doni vërtet të hiqen parapëlqimet për këtë sajt? + + + + MIME Type Name + Emër Lloji MIME + + + + Select name of MIME Type: + Përzgjidhni emër Lloji MIME: + + + + Error + Gabim + + + + Invalid MIME Type name. + Emër i pavlefshëm Lloji MIME. + + + + + + + Folder Name + Emër Dosjeje + + + + + + + Select folder name: + Përzgjidhni emër dosjeje: + + + + + + + + + + + + + (Untitled) + (Pa titull) + + + + + Custom + Vetjake + + + + + Do you really want to remove this profile? + Doni vërtet të hiqet ky profil? + + + + + Delete profile permanently + Fshije përgjithmonë profilin + + + + Otter::PreferencesContentPageWidget + + + Blocking + Bllokim + + + + Pop-ups: + Flluska: + + + + Zoom + Zoom + + + + Default zoom: + Zmadhim/zvogëlim parazgjedhje: + + + + % + % + + + + Zoom text only + Zoom vetëm për tekst + + + + Fonts + Shkronja + + + + Default proportional font size: + Madhësi parazgjedhje shkronjash proporcionale: + + + + + + px + px + + + + Default fixed-width font size: + Madhësi parazgjedhje shkronjash me gjerësi të fiksuar: + + + + Minimum font size: + Madhësi minimum shkronjash: + + + + None + Asnjë + + + + Colors + Ngjyra + + + + Ask + Pyet + + + + Block all + Bllokoji krejt + + + + Open all + Hapi krejt + + + + Open all in background + Hapi krejt në prapaskenë + + + + Style + Stil + + + + Font + Shkronja + + + + + Preview + Paraparje + + + + Standard font + Shkronja standarde + + + + Fixed-width font + Shkronja me gjerësi të fiksuar + + + + Serif font + Shkronja Serif + + + + Sans-serif font + Shkronja Sans-serif + + + + Cursive font + Shkronja të pjerrëta + + + + Fantasy font + Shkronja Fantasy + + + + The quick brown fox jumps over the lazy dog + Deshe Korçën, Korçën të dhamë + + + + Type + Lloj + + + + Background Color + Ngjyrë Sfondi + + + + Text Color + Ngjyrë Tekstesh + + + + Link Color + Ngjyrë Lidhjesh + + + + Visited Link Color + Ngjyrë Lidhjesh të Vizituara + + + + Otter::PreferencesDialog + + + Preferences + Parapëlqime + + + + General + Të përgjithshme + + + + Content + Lëndë + + + + Privacy + Privatësi + + + + Search + Kërko + + + + Advanced + Të mëtejshme + + + + All Settings + Krejt Rregullimet + + + + Otter::PreferencesGeneralPageWidget + + + Startup + Nisje + + + + Startup behavior: + Sjellje gjatë nisjesh: + + + + Home page: + Faqe hyrëse: + + + + Use Current Page + Përdor Faqen e Tanishme + + + + Use Bookmark + Përdor Faqerojtës + + + + Restore to Default + Riktheje te Parazgjedhjet + + + + Do not load the tab contents until selected + Mos ngarko lëndë skede, deri sa të përzgjidhet + + + + Downloads + Shkarkime + + + + Save files to: + Ruaji kartelat në: + + + + Always ask me where to save files + Pyetmë përherë ku të ruhen kartelat + + + + Tabs + Skeda + + + + Open new windows in new tabs instead + Dritaret e reja hapi si skeda të reja + + + + Reuse current tab + Ripërdor skedën e tanishme + + + + Open new tab next to active + Hap skedë të re në krah të aktives + + + + When closing tab: + Kur mbyllet skedë: + + + + Activate the last active tab + Aktivizo skedën e fundit aktive + + + + Activate the next tab + Aktivizo skedën pasuese + + + + Activate the first tab opened from current tab + Aktivizo skedën e parë të hapur prej skedës së tanishme + + + + Language + Gjuhë + + + + Preferred webpage language: + Gjuhë e parapëlqyer për faqet web: + + + + Edit… + Përpunojeni… + + + + System Defaults + Parazgjedhje Sistemi + + + + Set as a default browser + Caktojeni si shfletuesin parazgjedhje + + + + Show windows and tabs from the last time + Shfaq dritare dhe skeda nga hera e fundit + + + + Show startup dialog + Shfaq dialog nisjeje + + + + Show home page + Shfaq faqe hyrëse + + + + Show start page + Shfaq faqe fillimi + + + + Show empty page + Shfaq faqe të zbrazët + + + + Otter::PreferencesPrivacyPageWidget + + + Tracking + Gjurmim + + + + Do Not Track: + Mos Më Gjurmo: + + + + History + Historik + + + + Private mode + Mënyrë private + + + + Remember browsing history + Mban mend historik shfletimesh + + + + Remember downloads history + Mban mend historikun e kërkimeve + + + + Remember search history + Mban mend historikun e kërkimeve + + + + Remember form history + Mban mend historik formularësh + + + + Template… + Gjedhe… + + + + Enable cookies + Aktivizo cookies + + + + Accept cookies: + Prano cookies: + + + + Keep until: + Mbaje deri më: + + + + Accept third-party cookies: + Prano Cookie-t nga palë të treta: + + + + Exceptions… + Përjashtime… + + + + Clear history when application closes + Spastroje historikun, kur mbyllet aplikacioni + + + + Settings… + Rregullime… + + + + Passwords + Fjalëkalime + + + + Remember passwords + Mbaje mend fjalëkalime + + + + Manage… + Administroni… + + + + Use a master password + Përdorni një fjalëkalim të përgjithshëm + + + + Change… + Ndryshoni… + + + + Inform websites that I do not want to be tracked + Njoftoji sajtet se nuk dua të më ndjekin + + + + Inform websites that I allow tracking + Njoftoji sajtet se e lejoj ndjekjen + + + + Do not inform websites about my preference + Mos u thuaj gjë sajteve lidhur me parapëlqimet e mia + + + + + Always + Përherë + + + + + Only existing + Vetëm ekzistueset + + + + Only read existing + Ekzistueset, vetëm për lexim + + + + Expires + Skadon më + + + + Current session is closed + Sesioni i tanishëm është mbyllur + + + + Always ask + Pyet përherë + + + + Never + Kurrë + + + + Otter::PreferencesSearchPageWidget + + + Search… + Kërkoni… + + + + Add + Shto + + + + Edit… + Përpunoni… + + + + Update + Përditësoje + + + + Remove + Hiqe + + + + Move Up + Ngjite Sipër + + + + Move Down + Zbrite Poshtë + + + + Enable search suggestions + Aktivizo sugjerime kërkimi + + + + + Name + Emër + + + + + Keyword + Fjalëkyç + + + + New… + I ri… + + + + File… + Kartelë… + + + + Readd + Rishtoje + + + + New Search Engine + Motor i Ri Kërkimesh + + + + Select File + Përzgjidhni Kartelë + + + + Open Search files (*.xml) + Kartela Open Search (*.xml) + + + + + Question + Pyetje + + + + Do you really want to remove this search engine? + Doni vërtet të hiqet ky motor kërkimesh? + + + + Delete search engine permanently + Fshije motorin e kërkimeve përfundimisht + + + + + + Error + Gabim + + + + + Failed to open Open Search file. + S’u arrit të hapej kartelë Open Search. + + + + Keyword is already in use. Do you want to continue anyway? + Fjalëkyç tashmë në përdorim. Doni të vazhdohet, sido qoftë? + + + + Failed to update search engine. + S’u arri të përditësohej motor kërkimi. + + + + (Untitled) + (Pa titull) + + + + Otter::PrivateWindowIndicatorWidget + + + + Private Window + Dritare Private + + + + Otter::ProgressBarDelegate + + + Unknown + E panjohur + + + + Otter::ProgressInformationWidget + + + Document: %p% + Dokument: %p% + + + + Document: ? + Dokument: ? + + + + Total: ? + Gjithsej: ? + + + + Total: %p% + Gjithsej: %p% + + + + Total: %1 + Gjithsej: %1 + + + + Elements: %1/%2 + Elementë: %1/%2 + + + + Speed: %1 + Shpejtësi: %1 + + + + Time: %1 + Kohë: %1 + + + + Otter::ProxyPropertiesDialog + + + Title: + Titull: + + + + General + Të përgjithshme + + + + Manual + Dorazi + + + + Port + Portë + + + + Protocol + Protokoll + + + + Servers + Shërbyes + + + + FTP + FTP + + + + SOCKS5 + SOCKS5 + + + + HTTP + HTTP + + + + HTTPS + HTTPS + + + + All + Krejt + + + + Automatic + Automatik + + + + Path to PAC file: + Shteg për te kartelë PAC: + + + + Use system authentication + Përdor mirëfilltësim sistemi + + + + Exceptions + Përjashtime + + + + Do not use this proxy for: + Mos e përdor këtë ndërmjetës për: + + + + Add + Shto + + + + Edit + Përpunoni + + + + Remove + Hiqe + + + + Example: domain.com, localhost, 127.0.0.1, 192.168.1.0/24 + Shembull: përkatësi.com, localhost, 127.0.0.1, 192.168.1.0/24 + + + + Edit Proxy + Përpunoni Ndërmjetës + + + + Add Proxy + Shtoni Ndërmjetës + + + + Otter::QtWebEnginePage + + + + + JavaScript + JavaScript + + + + + + Disable JavaScript popups + Çaktivizo flluska JavaScript + + + + + Question + Pyetje + + + + + Are you sure that you want to send form data again? + Jeni i sigurt se doni të ridërgohen të dhëna formulari? + + + + + Do you want to resend data? + Doni të ridërgohen të dhënat? + + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + Otter::QtWebEngineWebBackend + + + Blink Backend (experimental) + Pjesë e pasme Blink (eksperimentale) + + + + Backend utilizing QtWebEngine module + Pjesë e pasme që përdor modul QtWebEngine + + + + Otter::QtWebEngineWebWidget + + + file + kartelë + + + + Failed to save image: %1 + S’u arrit të ruhej figurë: %1 + + + + Blank Page + Faqe e Zbrazët + + + + (Untitled) + (Pa titull) + + + + Otter::QtWebKitFtpListingNetworkReply + + + Network error %1 + Gabim rrjeti %1 + + + + Unknown command + Urdhër i panjohur + + + + Directory Contents + Lëndë Drejtorie + + + + Name + Emër + + + + Type + Lloj + + + + Size + Madhësi + + + + Date + Datë + + + + Otter::QtWebKitInspector + + + Close + Mbylle + + + + Otter::QtWebKitNetworkManager + + + Receiving data from %1… + Po merren të dhëna nga %1… + + + + Completed request to %1 + U plotësua kërkesa ndaj %1 + + + + + Waiting for authentication… + Po pritet për mirëfilltësim… + + + + Loading finished + Ngarkimi përfundoi + + + + Sending request to %1… + Po dërgohet kërkesë te %1… + + + + Otter::QtWebKitPage + + + + + JavaScript + JavaScript + + + + + + Disable JavaScript popups + Çaktivizo flluska JavaScript + + + + + + Question + Pyetje + + + + + Are you sure that you want to send form data again? + Jeni i sigurt se doni të ridërgohen të dhëna formulari? + + + + + Do you want to resend data? + Doni të ridërgohen të dhënat? + + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + %1 error #%2: %3 + Gabim %1 #%2: %3 + + + + Request blocked by rule from profile %1:<br> +%2 + Kërkesë e bllokuar nga rregull prej profili %1:<br> +%2 + + + + (Unknown) + (E panjohur) + + + + WebKit error %1 + Gabim WebKit %1 + + + + Network error %1 + Gabim rrjeti %1 + + + + The script on this page appears to have a problem. + Programthi në këtë faqe duket se ka problem. + + + + Do you want to stop the script? + Doni të ndalet programthi? + + + + Otter::QtWebKitPluginWidget + + + + Click to load content (%1) handled by plugin from: %2 + Klikoni që të ngarkohet lëndë (%1) e trajtuar përmes shtojcës nga: %2 + + + + Otter::QtWebKitWebBackend + + + WebKit Backend (legacy) + Pjesë e pasme WebKit (e dikurshme) + + + + WebKit Backend + Pjesë e pasme WebKit + + + + Backend utilizing QtWebKit module + Pjesë e pasjme që përdor modulin QtWebKit + + + + Otter::QtWebKitWebWidget + + + Error + Gabim + + + + Failed to open file for writing. + S’u arrit të hapet kartelë për shkrim. + + + + file + kartelë + + + + Failed to save image: %1 + S’u arrit të ruhet figurë: %1 + + + + Print Preview + Paraparje Shtypjeje + + + + PNG image (*.png) + Figurë PNG (*.png) + + + + JPEG image (*.jpg *.jpeg) + Figurë JPEG (*.jpg *.jpeg) + + + + Blank Page + Faqe e Zbrazët + + + + (Untitled) + (Pa titull) + + + + Otter::ReloadTimeDialog + + + Automatic Page Reload + Ringarkim i Vetvetishëm i Faqes + + + + minutes + minuta + + + + seconds + sekonda + + + + Otter::ReportDialog + + + Diagnostic Report + Raport Diagnostikimi + + + + Copy + Kopjoje + + + + Otter::RssFeedParser + + + Failed to parse feed file: %1 + S’u arrit të përtypej kartelë prurjeje: %1 + + + + Failed to parse feed: no valid entries found + S’u arrit të përtypet prurje: s’u gjetën zëra të vlefshëm + + + + Otter::SaveSessionDialog + + + Save Session + Ruaje Sesionin + + + + Session title: + Titull sesioni: + + + + Session identifier: + Identifikues sesioni: + + + + Store only current window + Depozito vetëm dritaren e tanishme + + + + Question + Pyetje + + + + Session with specified indentifier already exists. +Do you want to overwrite it? + Ka tashmë një sesion me identifikuesin e dhënë. +Doni të mbishkruhet? + + + + Error + Gabim + + + + Failed to save session. + Dështoi ruajtja e sesionit. + + + + Otter::SearchBarWidget + + + Find… + Gjeni… + + + + Find Next + Gjej Pasuesen + + + + Find Previous + Gjej të Mëparshmen + + + + Highlight + Theksoje + + + + Case Sensitive + Ndjeshmëri ndaj shkrimi me të mëdha/të vogla + + + + Close + Mbylle + + + + Otter::SearchEnginePropertiesDialog + + + Edit Search Engine + Përpunoni Motor Kërkimi + + + + Title: + Titull: + + + + Change Icon… + Ndryshoni Ikonë… + + + + Description: + Përshkrim: + + + + Keyword: + Fjalëkyç: + + + + Encoding: + Kodim: + + + + Form address: + Adresë Nga: + + + + Update address: + Përditësoni adresën: + + + + Results Query + Kërkesë për Përfundime + + + + + Address: + Adresë: + + + + + Query: + Kërkesë: + + + + + POST method + Metodë POST + + + + + Data encoding (enctype): + Kodim të dhënash (enctype): + + + + Suggestions Query + Kërkesë për Sugjerrime + + + + Placeholders + Vendmbajtëse + + + + Search Terms + Terma Kërkimesh + + + + Language + Gjuhë + + + + Otter::SearchEnginesManager + + + Manage Search Engines… + Administroni Motorë Kërkimesh… + + + + Unknown + I panjohur + + + + Otter::SearchWidget + + + + + + Search using %1 + Kërko duke përdorur %1 + + + + Add %1 + Shtoni %1 + + + + (untitled) + (pa titull) + + + + Error + Gabim + + + + Failed to add search engine. + S’u arrit të shtohej motor kërkimesh. + + + + Select Search Engine + Përzgjidhni Motor Kërkimi + + + + Add Search Engine… + Shtoni Motorë Kërkimesh… + + + + Search + Kërko + + + + Otter::SelectPasswordDialog + + + Select Password + Përzgjidhni Fjalëkalim + + + + Select set of credentials: + Përzgjidhni grup kredencialesh: + + + + Remove + Hiqe + + + + + Name + Emër + + + + + Value + Vlerë + + + + Set #%1 + Caktuar më #%1 + + + + Question + Pyetje + + + + Do you really want to remove this credentials set? + Doni vërtet të hiqet ky grup kredencialesh? + + + + Otter::SessionModel + + + Session + Sesion + + + + Trash + Hedhurina + + + + Otter::SessionsManager + + + Default + Parazgjedhje + + + + + (Untitled) + (Pa titull) + + + + Start Page + Faqe Fillimi + + + + (Unknown) + (E panjohur) + + + + Otter::SessionsManagerDialog + + + Sessions Manager + Përgjegjës Sesionesh + + + + Open + Hape + + + + Delete + Fshije + + + + Open session in current window + Hape sesionin në dritaren e tanishme + + + + + (Untitled) + (Pa titull) + + + + + Title + Titull + + + + + Identifier + Identifikues + + + + + Windows + Dritare + + + + %n window(s) (%1) + %n dritare (%1)%n dritare (%1) + + + + %n tab(s) + %n skedë%n skeda + + + + Warning + Sinjalizim + + + + This session was not saved correctly. +Are you sure that you want to restore this session anyway? + Ky sesion s’u ruajt saktë. +Jeni i sigurt se doni të rikthehet ky sesion, sido qoftë? + + + + Confirm + Ripohojeni + + + + Are you sure that you want to delete session %1? + Jeni i sigurt se doni të fshihet sesioni %1? + + + + Error + Gabim + + + + Failed to delete session. + S’u arrit të fshihej sesioni. + + + + Otter::SettingsManager + + + Yes + Po + + + + No + Jo + + + + Invalid + I pavlefshëm + + + + Otter::ShortcutWidget + + + + Clear + Spastroje + + + + Otter::SidebarWidget + + + Panels + Panele + + + + Add web panel + Shtoni panel web + + + + Add Web Panel… + Shtoni Panel Web… + + + + Otter::SourceViewerWebWidget + + + Failed to save file: %1 + S’u arrit të ruhej kartelë: %1 + + + + Error + Gabim + + + + Failed to save file. + S’u arrit të ruhej kartelë. + + + + Warning + Sinjalizmi + + + + The document has been modified. +Do you want to save your changes or discard them? + Dokumenti është ndryshuar. +Doni të ruhen ndryshimet, apo të hidhen tej? + + + + Show Line Numbers + Shfaq Numra Rreshtash + + + + Source Viewer: %1 + Parës Burimi: %1 + + + + Source Viewer + Parës Burimi + + + + Otter::StartPageModel + + + + Add Tile… + Shtoni Titull… + + + + Otter::StartPagePreferencesDialog + + + Start Page Preferences + Parapëlqime Faqeje Fillimi + + + + Use custom background image + Përdor figurë vetjake sfondi + + + + Scaling mode: + Mënyrë ripërmasimi: + + + + Image path: + Shteg figure: + + + + Color: + Ngjyrë: + + + + Columns per row: + Shtylla për rresht: + + + + Automatic + Automatike + + + + Zoom level: + Shkallë zoom-i: + + + + % + % + + + + Show search field + Shfaq fushë kërkimesh + + + + Show tile to add new entries + Shfaq kuadrat për shtim zërash të rinj + + + + Images (*.png *.jpg *.bmp *.gif *.svg *.svgz) + Figura (*.png *.jpg *.bmp *.gif *.svg *.svgz) + + + + Best fit + Nxënia më e mirë + + + + Center + Në qendër + + + + Stretch + Shformoje + + + + Tile + Kuadrat + + + + Otter::StartPageWidget + + + Add Tile + Shtoni Kuadrat + + + + Edit… + Përpunoni… + + + + Reload + Ringarkoje + + + + Delete + Fshije + + + + Configure… + Formësoni… + + + + Add Tile… + Shtoni Kuadrat… + + + + Otter::StartupDialog + + + + Welcome to Otter + Mirë se vini në Otters + + + + Continue session + Vazhdo sesionin + + + + Begin with home page + Nise me faqen hyrëse + + + + Begin with start page + Nise me faqe fillimi + + + + Begin with blank page + Nise me faqe të zbrazët + + + + Enable plugins + Aktivizo shtojcat + + + + + (Untitled) + (Pa titull) + + + + Window %1 + Dritare %1 + + + + Title: %1 +Address: %2 + Titull: %1 +Adresë: %2 + + + + Default + Parazgjedhje + + + + Otter::TabBarToolBarWidget + + + Switch Tabs Using the Mouse Wheel + Këmbe Skeda Duke Përdorur Rrotëz Miu + + + + Show Thumbnails in Tabs + Shfaq Miniatura në Skeda + + + + Arrange + Sistemojini + + + + Otter::TabBarWidget + + + Arrange + Sistemojini + + + + Switch Tabs Using the Mouse Wheel + Këmbe Skeda Duke Përdorur Rrotëz Miu + + + + Show Thumbnails in Tabs + Shfaq Miniatura në Skeda + + + + Customize + Përshtateni + + + + Question + Pyetje + + + + You are about to open %n URL(s). + Ju ndan një hap nga hapja e %n URL-je.Ju ndan një hap nga hapja e %n URL-ve. + + + + Do you want to continue? + Doni të vazhdohet? + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + Otter::TabHandleWidget + + + Close Tab + Mbylle Skedën + + + + Otter::TabHistoryContentsWidget + + + Search… + Kërkoni… + + + + Tab History + Historik Skedash + + + + Title: %1 + Titull: %1 + + + + Address: %1 + Adresë: %1 + + + + Date: %1 + Datë: %1 + + + + Otter::TextLabelWidget + + + + + + <empty> + <e zbrazët> + + + + Copy + Kopjoje + + + + Copy Link Location + Kopjo Vendndodhje Lidhjeje + + + + Select All + Përzgjidhi Krejt + + + + Otter::ToolBarDialog + + + + Edit Toolbar + Përpunoni Panel + + + + Name: + Emër: + + + + Entries + Zëra + + + + Edit… + Përpunoni… + + + + Current entries: + Zëra të tanishëm: + + + + Available entries: + Zëra të gatshëm: + + + + + Filter… + Filtroni… + + + + Add Bookmark + Shtoni Faqerojtës + + + + Bookmarks folder: + Dosje faqerojtësish: + + + + New… + I ri… + + + + Options + Mundësi + + + + Visibility: + Dukshmëri: + + + + Visibility in full screen mode: + Dukshmëri në mënyrën “Sa krejt ekrani”: + + + + Button style: + Stil butoni: + + + + Icon size: + Madhësi ikone: + + + + Auto + Auto + + + + + px + px + + + + Maximum size of item: + Madhësi maksimum e objektit: + + + + No limit + Pa kufizim + + + + Display toggle button + Shfaq buton shfaqjeje/fshehjeje + + + + Edit Bookmarks Bar + Përpunoni Shtyllë Faqerojtësish + + + + Bookmarks Bar + Shtyllë Faqerojtësish + + + + Edit Sidebar + Përpunoni Anështyllën + + + + Sidebar + Anështyllë + + + + Toolbar + Panel + + + + + Always visible + Përherë i dukshëm + + + + + Always hidden + Përherë i fshehur + + + + + Visible only when needed + I dukshme vetëm kur nevojitet + + + + Visible only when cursor is close to screen edge + I dukshme vetëm kur kursoni është pranë skajit të ekranit + + + + Follow style + + + + + Icon only + Vetëm ikona + + + + Text only + Vetëm tekst + + + + Text beside icon + Tekst në krah ikone + + + + Text under icon + Tekst nën ikonë + + + + Edit Entry + Përpunoni Zërin + + + + All + Krejt + + + + + Unknown + E panjohur + + + + Show search engine: + Shfaq motor kërkimi: + + + + Show search button: + Shfaq buton kërkimi: + + + + Global + Globale + + + + Tab + Skedë + + + + + Text: + Tekst: + + + + Option: + Mundësi: + + + + Scope: + Fokus: + + + + Blocked Elements: {amount} + Elementë të Bllokuar: {amount} + + + + Menu + Menu + + + + Downloads + Shkarkime + + + + Icon: + Ikonë: + + + + --- separator --- + --- ndarës ---- + + + + --- spacer --- + --- hapësirë --- + + + + Arbitrary List of Actions + Listë Arbitrare Veprimesh + + + + List of Closed Tabs and Windows + Listë Skedash dhe Dritaresh të Mbyllura + + + + Address Field + Fushë Adresash + + + + Configuration Widget (%1) + Widget Formësimi (%1) + + + + Configuration Widget + Widget Formësimi + + + + Content Blocking Details + Hollësi Bllokimi Lënde + + + + Error Console + Konsolë Gabimesh + + + + Menu Bar + Shtyllë Menuje + + + + Menu Button + Buton Menush + + + + Sidebar Panel Chooser + Zgjedhës Paneli Anështyllë + + + + Private Window Indicator + Tregues Dritareje Private + + + + Progress Information (Document Progress) + Hollësi Ecurie (Ecuri Dokumenti) + + + + Progress Information (Total Progress) + Hollësi Ecurie (Ecuri Gjithsej) + + + + Progress Information (Loaded Elements) + Hollësi Ecurie (Elementë të Ngarkuar) + + + + Progress Information (Loading Speed) + Hollësi Ecurie (Shpejtësi Ngarkimi) + + + + Progress Information (Elapsed Time) + Hollësi Ecurie (Kohë e Rrjedhur) + + + + Progress Information (Status Message) + Hollësi Ecurie (Mesazh Gjendjeje) + + + + Search Field (%1) + Fushë Kërkimesh (%1) + + + + Search Field + Fushë Kërkimesh + + + + Window Resize Handle + + + + + Status Message Field + Fushë Mesazhesh Gjendjesh + + + + Tab Bar + Shtyllë Skedash + + + + Downloads Progress Information + Hollësi Ecurie Shkarkimesh + + + + Zoom Slider + Rrëshqitës Zmadhimi/Zvogëlimi + + + + Invalid Bookmark + Faqerojtës i Pavlefshëm + + + + + Invalid Entry + Zë i Pvlefshëm + + + + Otter::ToolBarWidget + + + + Toggle Visibility + Këmbejini Dukshmërinë + + + + Customize + Përshtateni + + + + (Untitled) + (Pa titull) + + + + Configure… + Formësoni… + + + + Reset to Defaults… + Riktheje te Parazgjedhjet… + + + + Remove… + Hiqni… + + + + Otter::ToolBarsManager + + + Reset Toolbar + Riktheje Panelin te Parazgjedhjet + + + + Do you really want to reset this toolbar to default configuration? + Doni vërtet të rikthehet ky panel te formësimi parazgjedhje? + + + + Remove Toolbar + Hiqe Panelin + + + + Do you really want to remove this toolbar? + Doni vërtet të hiqet ky panel? + + + + Reset Toolbars + Riktheji Panelet te Parazgjedhjet + + + + Do you really want to reset all toolbars to default configuration? + Doni vërtet të rikthehen tërë panelet te formësimi parazgjedhje? + + + + Otter::ToolButtonWidget + + + Menu + Menu + + + + Otter::Transfer + + + + file + kartelë + + + + Question + Pyetje + + + + File with the same name already exists. +Do you want to overwrite it? + +%1 + Ka tashmë një kartelë me të njëjtin emër. +Doni të mbishkruhet? + +%1 + + + + Otter::TransferActionWidget + + + From: + Nga: + + + + + Size: + Madhësi: + + + + %1 (download completed) + %1 (shkarkim i plotësuar) + + + + %1 (%2% downloaded) + %1 (%2% të shkarkuar) + + + + + Unknown + E panjohur + + + + Redownload + Rishkarkoje + + + + Open Folder + Hap Dosje + + + + Stop + Ndale + + + + <div style="white-space:pre;">Source: %1 +Target: %2 +Size: %3 +Downloaded: %4 +Progress: %5</div> + <div style="white-space:pre;">Burim: %1 +Objektiv: %2 +Madhësi: %3 +Të shkarkuara: %4 +Ecuri: %5</div> + + + + Otter::TransferDialog + + + Opening unknown file + Po hapet kartelë e panjohur + + + + Name: + Emër: + + + + Type: + Lloj: + + + + Size: + Madhësi: + + + + From: + Nga: + + + + Open with: + Hap me: + + + + Remember choice for this file type + Mba mend zgjedhjen për këtë lloj kartelash + + + + unknown file + kartelë e panjohur + + + + Opening %1 + Po hapet %1 + + + + unknown + e panjohur + + + + %1 (download completed) + %1 (shkarkim i plotësuar) + + + + %1 (%2% downloaded) + %1 (%2% të shkarkuar) + + + + Otter::TransfersContentsWidget + + + Quick Download… + Shkarkim i Shpejtë… + + + + Source: + Burim: + + + + Target: + Objektiv: + + + + Size: + Madhësi: + + + + Downloaded: + Të shkarkuara: + + + + Progress: + Ecuri: + + + + + + Stop + Ndale + + + + + Redownload + Rishkarkoje + + + + + Status + Gjendje + + + + + Filename + Emër kartele + + + + + Size + Madhësi + + + + + Progress + Ecuri + + + + + Time + Kohë + + + + + Speed + Shpejtësi + + + + + Started + Nisur më + + + + + Finished + Përfunduar më + + + + Warning + Sinjalizim + + + + This file is still being downloaded. +Do you really want to remove it? + Kjo kartelë ende po shkarkohet. +Doni vërtet të hiqet? + + + + <div style="white-space:pre;">Source: %1 +Target: %2 +Size: %3 +Downloaded: %4 +Progress: %5</div> + <div style="white-space:pre;">Burim: %1 +Objektiv: %2 +Madhësi: %3 +Të shkarkuara: %4 +Ecuri: %5</div> + + + + + + Unknown + E panjohur + + + + Open Folder + Hap Dosje + + + + + Resume + Rimerre + + + + Copy Transfer Information + Kopjo Hollësi Shpërngulje + + + + Remove + Hiqe + + + + Clear Finished Transfers + Spastroji Shpërnguljet e Përfunduara + + + + Downloads + Shkarkime + + + + Otter::TransfersManager + + + Download completed: +%1 + Shkarkim i plotësuar: +%1 + + + + Otter::TransfersWidget + + + + Downloads + Shkarkime + + + + Show all Downloads + Shfaq krejt Shkarkimet + + + + Otter::TrayIcon + + + + Show Windows + Shfaq Dritare + + + + + Otter Browser + Shfletuesi Otter + + + + Hide Windows + Fshihi Dritaret + + + + Otter::UpdateCheckerDialog + + + Check for Updates + Kontrollo për Përditësime + + + + Checking for update… + Po kontrollohet për përditësim… + + + + Checking for updates… + Po kontrollohet për përditësime… + + + + There are no new updates. + S’ka përditësime të reja. + + + + Available updates: + Përditësime gati: + + + + Details… + Hollësi… + + + + Download + Shkarkim + + + + Version %1 from %2 channel + Version %1 nga kanal %2 + + + + Some of the updates do not contain packages for your platform. Try to check for updates later or visit details page for more info. + Disa nga përditësimet nuk përmbajnë paketa për platformën tuaj. Provoni të kontrollni për përditësime më vonë, ose vizitoni faqen e hollësive, për më tepër informacion. + + + + Downloading: + Po shkarkohet: + + + + Download finished! + Shkarkimi përfundoi! + + + + Install + Instaloje + + + + New version of Otter Browser is ready to install. +Click Install button to restart browser and install the update or close this dialog to install the update during next browser restart. + Ka gati për instalim version të ri të Shfletuesit Otter. +Që të riniset shfletuesi dhe të instalohet përditësimi, klikoni mbi butonin Instaloje, ose mbylleni këtë dialog që përditësimi të instalohet gjatë rinisjes pasuese të shfletuesit. + + + + Download failed! + Shkarkimi dështoi! + + + + Check Error Console for more information. + Për më tepër hollësi, shihni Konsolë Gabimesh. + + + + Otter::UserAgentPropertiesDialog + + + Title: + Titull: + + + + Value: + Vlerë: + + + + Preview + Paraparje + + + + Edit User Agent + Përpunoni Agjent Përdoruesi + + + + Add User Agent + Shtoni Agjent Përdoruesi + + + + Placeholders + Vendmbajtëse + + + + Platform + Platformë + + + + Engine Version + Version Motori + + + + Application Version + Versione Aplikacioni + + + + Otter::WebContentsWidget + + + Question + Pyetje + + + + This tab has crashed. + Kjo skedë u vithis. + + + + Do you want to try to reload it? + Doni të provohet të ringarkohet? + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + Failed to load requested web backend: %1 + S’u arrit të ngarkohet pjesë e pasme: %1 + + + + Select User Agent + Përzgjidhni Agjent Përdoruesi + + + + Enter User Agent: + Jepni Agjent Përdoruesi: + + + + Start Page + Faqe Fillimi + + + + Otter::WebWidget + + + Title: %1 + Titull: %1 + + + + Address: %1 + Adresë: %1 + + + + JavaScript + JavaScript + + + + Webpage wants to close this tab, do you want to allow to close it? + Faqja web dëshiron të mbyllë këtë skedë, doni të lejohet ta mbyllë? + + + + Do not show this message again + Mos e shfaq sërish këtë mesazh + + + + HTML file (*.html *.htm) + Kartelë HTML (*.html *.htm) + + + + HTML file with all resources (*.html *.htm) + Kartelë HTML me krejt burimet (*.html *.htm) + + + + Web archive (*.mht) + Arkiv Web (*.mht) + + + + PDF document (*.pdf) + Dokument PDF (*.pdf) + + + + Open Image in New Background Tab (%1) + Hape Figurën Në Skedë të Re Në Prapaskenë (%1) + + + + Open Image in New Tab (%1) + Hape Figurën Në Skedë të Re (%1) + + + + Playback Rate: %1x + Shpejtësi Luajtjeje: %1x + + + + Page Default + Parazgjedhje faqeje + + + + Never Reload + Mos e Ringarko Kurrë + + + + Reload Every: %n second(s) + Ringarkoje Çdo: %n sekondëRingarkoje Çdo: %n sekonda + + + + Otter::WebsiteInformationDialog + + + General + Të përgjithshme + + + + Information + Informacion + + + + Address: + Adresë: + + + + Encoding: + Kodim: + + + + Size: + Madhësi: + + + + Elements: + Elementë: + + + + Download date: + Datë shkarkimi: + + + + Title: + Titull : + + + + Permissions + Leje + + + + Preferences + Parapëlqime + + + + + Details… + Hollësi… + + + + Set cookies: + Të depozitojë cookies: + + + + Set third-party cookies: + Të depozitojë cookies nga palë të treta: + + + + Show notifications: + Të shfaqë njoftime: + + + + Access your location: + Të njohë vendndodhjen tuaj: + + + + Load plugins: + Të ngarkojë shtojca: + + + + Load images: + Të ngarkojë figura: + + + + Use JavaScript: + Të përdorë JavaScript: + + + + Show pop-up windows: + Të shfaqë dritare flluska: + + + + Enter full screen mode: + Të kalojë nën mënyrën Sa Krejt Ekrani: + + + + Security + Siguri + + + + Certificate + Dëshmi + + + + Issued to: + Lëshuar për: + + + + Issued by: + Lëshuar nga: + + + + Issued on: + Lëshuar më: + + + + Expires on: + Skadon më: + + + + Cipher + Shifër + + + + Protocol: + Protokoll: + + + + Authentication method: + Metodë mirëfilltësimi: + + + + Encryption method: + Metodë fshehtëzimi: + + + + Key exchange method: + Metodë shkëmbimi kyçesh: + + + + SSL Errors + Gabime SSL + + + + (unknown) + (e panjohur) + + + + This website was marked as fraud. + Këtij sajti i është vënë shenjë si mashtrim. + + + + + Your connection with this website is not private. + Lidhja juaj me këtë sajt s’është private. + + + + Your connection with this website is private. + Lidhja juaj me këtë sajt është private. + + + + You are viewing content from your local filesystem. + Po shihni lëndë nga sistemi juaj vendor i kartelave. + + + + You are viewing safe page from Otter Browser. + Po shihni faqe të parrezik, nga Shfletuesi Otter. + + + + No information. + Pa hollësi. + + + + unknown + e panjohur + + + + %1 (%n blocked) + %1 (%n i bllokuar)%1 (%n të bllokuar) + + + + + Only existing + Vetëm ekzistueset + + + + Only read existing + Ekzistueset, vetëm për lexim + + + + + + + + + + + + Never + Kurrë + + + + + + + + + + + + Always + Përherë + + + + On demand + Sipas kërkesash + + + + Only cached + Vetëm ato në fshehtinë + + + + + + Always ask + Pyet përherë + + + + Always (open in backgound) + Përherë (hape në prapaskenë) + + + + Ask + Pyet + + + + + Error Message + Mesazh Gabimi + + + + + URL + URL + + + + Information for %1 + Informacion për %1 + + + + Otter::WebsitePreferencesDialog + + + Website Preferences + Parapëlqime Sajti + + + + Website: + Sajt: + + + + Content + Lëndë + + + + + + + + Override + Anashkaloje + + + + Plugins: + Shtojca: + + + + Encoding: + Kodim: + + + + User style sheet: + Fletë stilesh përdoruesi: + + + + Images: + Figura: + + + + Pop-ups: + Flluska: + + + + Privacy + Privatësi + + + + Keep until: + Mbaje deri më: + + + + Remember browsing history + Mban mend historik shfletimi + + + + Enable cookies + Aktivizoni cookies + + + + Accept cookies: + Prano cookies: + + + + Do Not Track: + Mos Më Gjurmo: + + + + Cookies: + Cookies: + + + + Add… + Shtoni… + + + + Properties… + Veti… + + + + Delete + Fshije + + + + Accept third-party cookies: + Prano cookie-t palësh të treta: + + + + Scripting + Skriptim + + + + Allow to receive right mouse button clicks + Lejo pranim klikimesh me butonin e djathtë të miut + + + + Allow changing of status field + Lejo ndryshimi fushe të gjendjes + + + + Allow to close windows: + Lejo të mbyllë dritare: + + + + Allow script to hide address bar + Lejo programthe të fshehin shtyllë adresash + + + + Allow moving and resizing of windows + Lejo lëvizje dhe ripërmarim dritaresh + + + + Enable JavaScript + Aktivizo Javascript + + + + Allow access to clipboard + Lejo hyrje në të papastër + + + + Allow to enter full screen mode: + Lejo ta kalojë nën mënyrën Sa Krejt Ekrani: + + + + Network + Rrjet + + + + Send referrer information + Dërgo hollësi referuesi + + + + Proxy: + Ndërmjetës: + + + + User Agent: + Agjent Përdoruesi: + + + + Content Blocking + Bllokim Lënde + + + + Profiles: + Profile: + + + + Enable custom rules + Aktivizo rregulla vetjake + + + + Auto Detect + Vetëzbuloje + + + + + + Ask + Pyet + + + + Block all + Bllokoji krejt + + + + Open all + Hapi krejt + + + + Open all in background + Hapi krejt në prapaskenë + + + + All images + Krejt figurat + + + + Cached images + Figura fshehtine + + + + No images + Pa figura + + + + Enabled + I aktivizuar + + + + On demand + Sipas kërkesash + + + + Disabled + I çaktivizuar + + + + + + + Always + Përherë + + + + + + Never + Kurrë + + + + Inform websites that I do not want to be tracked + Njoftoji sajtet se nuk dua të më ndjekin + + + + Inform websites that I allow tracking + Njoftoji sajtet se e lejoj ndjekjen + + + + Do not inform websites about my preference + Mos u thuaj gjë sajteve lidhur me parapëlqimet e mia + + + + + Only existing + Vetëm ekzistueset + + + + Only read existing + Ekzistueset, vetëm për lexim + + + + Expires + Skadon më + + + + Current session is closed + Sesioni i tanishëm është i mbyllur + + + + Always ask + Pyet përherë + + + + + Domain + Përkatësi + + + + + Name + Emër + + + + + Path + Shteg + + + + + Value + Vlerë + + + + + Expiration Date + Datë Skadimi + + + + this session only + vetëm për këtë sesion + + + + Style sheets (*.css) + Fletë stili (*.css) + + + + Otter::WindowsContentsWidget + + + Search… + Kërkoni… + + + + Windows and Tabs + Dritare dhe Skeda + + + + Otter::WindowsPlatformIntegration + + + New tab + Skedë e re + + + + New private tab + Skedë e re private + + + + New window + Dritare e re + + + + New private window + Dritare e re private + + + + Failed to run command "%1", file is not executable + S’u arrit të xhirohej urdhri "%1", kartela s’është e ekzekutueshme + + + + Failed to run command "%1" (arguments: "%2") + S’u arrit të xhirohej urdhri "%1" (argumente: "%2") + + + + No valid suffix for given MIME type: %1 + Prapashtesë jo e vlefshme për llojin e dhënë MIME: %1 + + + + + Failed to load a valid application path for MIME type %1: %2 + S’u arrit të ngarkohet një aplikacion i vlefshëm për llojin MIME %1: %2 + + + + Otter::WorkspaceWidget + + + + Arrange + Sistemojini + + + + Otter::ZoomWidget + + + + Zoom %1% + Zmadhim/Zvogëlim %1% + + + + actions + + Reload Every + Ringarkoje Çdo + + + 1 Minute + 1 Minutë + + + 30 Minutes + 30 Minuta + + + 1 Hour + 1 Orë + + + 2 Hours + 2 Orë + + + 6 Hours + 6 Orë + + + Never + Kurrë + + + Custom… + Vetjake… + + + + Run Macro + Xhiro Makro + + + + Run Arbitrary List of Actions + Xhiro Listë Arbitrare Veprimesh + + + + Set Option + Ujdise Mundësinë + + + + Set, Reset or Toggle Option + Ujdisni, Riktheni Te Parazgjedhjet ose Aktivizoni/Çaktivizoni Mundësinë + + + + New Tab + Skedë e Re + + + + New Private Tab + Skedë e Re Private + + + + New Window + Dritare e Re + + + + New Private Window + Dritare e Re Private + + + + Open… + Hapni… + + + + Save… + Ruajeni… + + + + Clone Tab + Klono Skedën + + + + Peek Tab + Hidhini Një Sy Skedës + + + + + Pin Tab + Fiksoje Skedën + + + + Detach Tab + Shqite Skedën + + + + Maximize + Maksimizoje + + + + Maximize Tab + Maksimizo Skedën + + + + Minimize + Minimizoje + + + + Minimize Tab + Minimizoje Skedën + + + + Restore + Riktheje + + + + Restore Tab + Riktheje Skedën + + + + Stay on Top + Qëndro Sipër + + + + Clear Tab History + Spastro Historik Skedash + + + + Remove Local Tab History + Hiq Historik Vendor Skedash + + + + + + + Purge Tab History + Spastro Historik Skedash + + + + Remove Local and Global Tab History + Hiq Historik Vendor dhe Global Skedash + + + + + Mute Tab Media + Heshto Media Skede + + + + Suspend Tab + Pezulloje Skedën + + + + Close Tab + Mbylle Skedën + + + + Close Other Tabs + Mbylli Skedat e Tjera + + + + Close All Private Tabs + Mbylli Krejt Skedat Private + + + + Close All Private Tabs in Current Window + Mbylli Krejt Skedat Private në Dritaren e Tanishme + + + + Close Private Tabs and Windows + Mbyll Skeda dhe Dritare Private + + + + Reopen Previously Closed Tab + Rihap Skedën e Mbyllur Më Herët + + + + Maximize All + Maksimizoji Krejt + + + + Minimize All + Minimizoji Krejt + + + + Restore All + Riktheji Krejt + + + + Cascade + Ujvarë + + + + Tile + Tjegullëzoje + + + + Close Window + Mbylle Dritaren + + + + Reopen Previously Closed Window + Rihap Dritaren e Mbyllur Më Herët + + + + Manage Sessions… + Administroni Sesione… + + + + Save Current Session… + Ruani Sesionin e Tanishëm… + + + + Open URL + Hap URL-në + + + + + + + + + + + + + + + Open + Hape + + + + + Open in This Tab + Hape në Këtë Skedë + + + + + + + + + + + Open in New Tab + Hape në Skedë të Re + + + + + + + + + + + Open in New Background Tab + Hape në Skedë të Re Në Prapaskenë + + + + + + + + + + Open in New Window + Hape në Dritare të Re + + + + + + + + + + Open in New Background Window + Hape në Dritare të Re Në Prapaskenë + + + + + Open in New Private Tab + Hape në Skedë të Re Private + + + + + Open in New Private Background Tab + Hape në Skedë të Re Private Në Prapaskenë + + + + + Open in New Private Window + Hape në Dritare të Re Private + + + + + Open in New Private Background Window + Hape në Dritare të Re Private Në Prapaskenë + + + + Copy Link to Clipboard + Kopjoja Lidhjen në Të papastër + + + + + Bookmark Link… + Lidhje Faqerojtësi… + + + + Save Link Target As… + Ruaje Objektin e Lidhjes Si… + + + + Save to Downloads + Ruaje te Shkarkime + + + + Go to This Address + Shko në Këtë Adresë + + + + Open Frame + Hape Kuadrin + + + + Open Frame in This Tab + Hape Kuadrin në Këtë Skedë + + + + Open Frame in New Tab + Hape Kuadrin në Skedë të Re + + + + Open Frame in New Background Tab + Hape Kuadrin në Skedë të Re Në Prapaskenë + + + + Copy Frame Link to Clipboard + Kopjoje Lidhjen e Kuadrit në Të papastër + + + + + + Reload + Ringarkoje + + + + Reload Frame + Ringarkoje Kuadrin + + + + View Frame Source + Shihni Burim Kuadri + + + + Open Image + Hap Figurë + + + + Open Image In New Tab + Hape Figurën Në Skedë të Re + + + + + Open Image in New Background Tab + Hape Figurën Në Skedë të Re Në Prapaskenë + + + + Save Image… + Ruaje Figurën… + + + + Copy Image to Clipboard + Kopjoje Figurën në Të papastër + + + + Copy Image Link to Clipboard + Kopjoje Lidhjen e Figurës në Të papastër + + + + Reload Image + Ringarko Figurën + + + + Image Properties… + Veti Figure… + + + + Save Media… + Ruani Media… + + + + Copy Media Link to Clipboard + Kopjoje Lidhjen e Medias në Të papastër + + + + Show Controls + Shfaq Kontrolle + + + + Show Media Controls + Shfaq Kontrolle Media + + + + Looping + Pa Mbarim + + + + Playback Looping + Luajtje Pa Mbarim + + + + + Play + Luaje + + + + Play Media + Luaj Media + + + + + Mute + Heshtoje + + + + Mute Media + Heshtoje Median + + + + Playback Rate + Shpejtësi Luajtjeje + + + + Log In + Hyni + + + + Go + Jepi + + + + Go to URL + Kalo te URL-ja + + + + Back + Mbrapsht + + + + Go Back + Shko Mbrapsht + + + + Forward + Përpara + + + + Go Forward + Shko Përpara + + + + + Go to History Entry + Kalo te Zë Historiku + + + + Go to Page or Search + Kalo te Faqe ose Kërko + + + + Go to Home Page + Shko te Faqja Hyrëse + + + + Go to Parent Directory + Shko te Drejtoria Mëmë + + + + Rewind + + + + + Rewind History + + + + + Fast Forward + Para Shpejt + + + + Remove History Entry + Hiqe Zë Historiku + + + + Stop + Ndale + + + + Stop Scheduled Page Reload + Ndal Ringarkim të Planifikuar Faqeje + + + + Stop All Pages + Ndal Krejt Faqet + + + + Reload or Stop + Ringarkoje ose Ndale + + + + Reload and Bypass Cache + Ringarkoje dhe Anashkalo Fshehtinën + + + + Reload All Tabs + Ringarko Krejt Skedat + + + + Schedule Page Reload + Planifikoni Ringarkim Faqeje + + + + Show Context Menu + Shfaq Menu Konteksti + + + + Undo + Zhbëje + + + + Redo + Ribëje + + + + Cut + Prije + + + + Copy + Kopjoje + + + + Copy as Plain Text + Kopjoje si Tekst i Thjeshtë + + + + Copy Address + Kopjo Adresën + + + + Copy to Note + Kopjoje në Shënim + + + + Paste + Ngjite + + + + Paste and Go + Ngjite dhe Shko + + + + Delete + Fshije + + + + Select All + Përzgjidhi Krejt + + + + Deselect + Shpërzgjidhe + + + + Clear All + Spastroji Krejt + + + + Check Spelling + Kontroll Drejtshkrimi + + + + Find… + Gjeni… + + + + Find Next + Gjej Pasuese + + + + Find Previous + Gjej të Mëparshmen + + + + Quick Find + Gjetje e Shpejtë + + + + + Search + Kërko + + + + Create Search… + Krijoni Kërkim… + + + + Zoom In + Zmadhoje + + + + Zoom Out + Zvogëloje + + + + Zoom Original + + + + + Go to Start of the Page + Shko te Fillimi i Faqes + + + + Go to the End of the Page + Shko te Fundi i Faqes + + + + Page Up + Tasti Page Up + + + + Page Down + Tasti Page Down + + + + Page Left + Tasti Page Left + + + + Page Right + Tasti Page Right + + + + Enter Drag Scroll Mode + + + + + Enter Move Scroll Mode + + + + + Exit Scroll Mode + Dil Nga Mënyrë Rrëshqitjeje + + + + Print… + Shtypni… + + + + Print Preview + Paraparje Shtypjeje + + + + Take Screenshot + Bëni Foto Ekrani + + + + Activate Address Field + Aktivizo Fushë Adresash + + + + Activate Search Field + Aktivizo Fushë Kërkimesh + + + + Activate Content + Aktivizoni Lëndë + + + + Go to Previously Used Tab + Shko te Skeda e Përdorur Më Herët + + + + Go to Least Recently Used Tab + Shko te Skeda e Përdorur Më Herët + + + + Activate Tab + Aktivizo Skedën + + + + Go to Tab on Left + Shko te Skeda në Të majtë + + + + Go to Tab on Right + Shko te Skeda në Të djathtë + + + + Activate Window + Aktivizo Dritare + + + + Manage Bookmarks + Administroni Faqerojtës + + + + Bookmark Page… + Faqeruani Faqe… + + + + Bookmark All Open Pages + Faqeruaj Krejt Faqet e Hapura + + + + Open Bookmark + Hap Faqerojtësin + + + + Quick Bookmark Access + Hyrje e Shpejtë Te Faqerojtësit + + + + Cookies + Cookies + + + + Load All Plugins on the Page + Ngarko Krejt Shtojcat te Faqja + + + + Enable JavaScript + Aktivizo Javascript + + + + Enable Referrer + Aktivizo Referues + + + + View Source + Shihini Burimin + + + + Inspect Page + Inspektoni Faqe + + + + Inspect Element… + Inspektoni Element… + + + + Work Offline + Punoni Jashtë Interneti + + + + + Full Screen + Sa Krejt Ekrani + + + + Show Tab Switcher + Shfaq Këmbyes Skedash + + + + Show Toolbar + Shfaq Panel + + + + Show Menubar + Shfaq Shtyllë Menush + + + + Show Tabbar + Shfaq Shtyllë Skedash + + + + Show Sidebar + Shfaq Anështyllë + + + + Show Error Console + Shfaq Konsolë Gabimesh + + + + Lock Toolbars + Kyçi Panelet + + + + Reset to Defaults… + Riktheji te Parazgjedhjet… + + + + Reset Toolbars to Defaults… + Riktheji Panelet te Parazgjedhjet… + + + + Show Panel + Shfaq Panel + + + + Show Specified Panel in Sidebar + Shfaq në Anështyllë Panelin e Përcaktuar + + + + Open Panel as Tab + Hape Panelin Si Skedë + + + + Open Curent Sidebar Panel as Tab + Hape Panelin Aktual të Anështyllës si Skedë + + + + Content Blocking… + Bllokim Lënde… + + + + View History + Shiko Historikun + + + + Clear History… + Spastroni Historikun… + + + + Addons + Shtesa + + + + + + Notes + Shënime + + + + Passwords + Fjalëkalime + + + + Downloads + Shkarkime + + + + Preferences… + Parapëlqime… + + + + Website Preferences… + Parapëlqime Sajti… + + + + Quick Preferences + Parapëlqime të Shpejta + + + + Reset Options + Riktheji Mundësitë te Parazgjedhjet + + + + Website Information… + Hollësi Sajti… + + + + Website Certificate Information… + Të dhëna Dëshmie Sajti… + + + + Switch Application Language… + Këmbeni Gjuhë Aplikacioni… + + + + Check for Updates… + Kontrollo për Përditësime… + + + + Diagnostic Report… + Raport Diagnostikimi… + + + + About Otter… + Mbi Otter-in… + + + + About Qt… + Mbi Qt-në… + + + + Exit + Dalje + + + + Set %1 + Caktuar më %1 + + + + Set %1 for %2 + Caktuar më %1 për %2 + + + + Reset %1 + Riktheje %1 te parazgjedhjet + + + + Reset %1 for %2 + + + + + Toggle %1 + + + + + Toggle %1 for %2 + + + + + Menu Bar + Shtyllë Menuje + + + + Bookmarks Bar + Shtyllë Faqerojtësish + + + + Tab Bar + Shtyllë Skedash + + + + Address Bar + Shtyllë Adresash + + + + Navigation Bar + Shtyllë Lëvizjesh + + + + Progress Bar + Shtyllë Ecurie + + + + Sidebar + Anështyllë + + + + Status Bar + Shtyllë Gjendjesh + + + + Error Console + Konsolë Gabimesh + + + + + + Bookmarks + Faqerojtës + + + + + Transfers + Shpërngulje + + + + + + History + Historik + + + + Remove Bookmark + Hiqe Faqerojtësin + + + + Remove Cookie + Hiqe Cookie-n + + + + Update + Përditësoje + + + + Copy address of source page + Kopjo adresën e faqes burim + + + + Close Panel + Mbylle Panelin + + + + File + Kartelë + + + + Edit + Përpunoni + + + + View + Parje + + + + Tools + Mjete + + + + Help + Ndihmë + + + + Page + Faqe + + + + Print + Shtyp + + + + Settings + Rregullime + + + + Frame + Kuadër + + + + Character Encoding + Kodim Shkronjash + + + + Closed Tabs and Windows + Skeda dhe Dritare të Mbyllura + + + + Dictionaries + Fjalorë + + + + Import and Export + Importim dhe Eksportim + + + + Import Opera Bookmarks… + Importoni Faqerojtës Opera… + + + + Import HTML Bookmarks… + Importoni Faqerojtës HTML… + + + + Import OPML Feeds… + Importo Prurje OPML… + + + + Import Opera Notes… + Importoni Shënime Opera… + + + + Import Opera Search Engines… + Importoni Motorë Kërkimesh Opera… + + + + Import Opera Session… + Importoni Sesion Opera… + + + + Insert Note + Futni Shënim + + + + Open with + Hape me + + + + Proxy + Ndërmjetës + + + + Search Using + Kërko Duke Përdorur + + + + Sessions + Sesione + + + + Style + Stil + + + + Toolbars + Panele + + + + User Agent + Agjent Përdoruesi + + + + Validate Using + Vleftësoje Duke Përdorur + + + + Tabs and Windows + Skeda dhe Dritare + + + + Keep Cookie Until + Mbaje Cookie-n Deri Më + + + + Accept Cookies + Prano Cookies + + + + Accept Third-party Cookies + Prano Cookie-t Nga Palë të Treta + + + + Geolocation + Gjeovendëzim + + + + Images + Figura + + + + Capture Audio + Regjistro Audion + + + + Capture Video + Regjistro Videon + + + + Playback Audio + Luaj Audio + + + + Notifications + Njoftime + + + + Plugins + Shtojca + + + + Pointer Lock + Kyçje Treguesi + + + + Closing Windows by JavaScript + + + + + Pop-Ups + Flluska + + + + + Open All + Hapi Krejt + + + + This Folder + Këtë Dosje + + + + Ask What to Do + Pyet Ç’të Bëhet + + + + Always Allow + Lejoje Përherë + + + + Always Deny + Hidhe poshtë Përherë + + + + Expires + Skadon më + + + + Current Session is Closed + Sesioni i Tanishëm është i Mbyllyr + + + + Always + Përherë + + + + Only Existing + Vetëm Ekzistueset + + + + Only Read Existing + Ekzistueset, Vetëm Për Lexim + + + + Ignore + Shpërfille + + + + Open in Background + Hape në Prapaskenë + + + + Block All + Bllokoji Krejt + + + + Only Cached + Vetëm Ato Në Fshehtinë + + + + Enabled + E aktivizuar + + + + On Demand + Sipas Kërkesash + + + + Disabled + E çaktivizuar + + + + Auto Detect + Vetëzbuloje + + + + Clear + Spastroje + + + + Default Application + Aplikacion Parazgjedhje + + + + Unknown + E panjohur + + + + Default Style + Stil Parazgjedhje + + + + Add New + Shtoni të Ri + + + + Add Toolbar… + Shtoni Panel… + + + + Add Bookmarks Bar… + Shtoni Shtyllë Faqerojtësish… + + + + Add Sidebar… + Shtoni Anështyllë… + + + + Custom User Agent… + Agjent Vetjak Përdoruesi… + + + + (Untitled) + (Pa titull) + + + + Edit Link Bookmark… + Përpunoni Faqerojtës Lidhjeje… + + + + Open Image in This Tab + Hape Figurën në Këtë Skedë + + + + Open Image in New Tab + Hape Figurën në Skedë të Re + + + + Open Image in New Window + Hape Figurën në Dritare të Re + + + + Open Image in New Background Window + Hape Figurën në Dritare të Re Prapaskene + + + + Open Image in New Private Tab + Hape Figurën Në Skedë të Re Private + + + + Open Image in New Private Background Tab + Hape Figurën Në Skedë të Re Private Në Prapaskenë + + + + Open Image in New Private Window + Hape Figurën në Dritare të Re Private + + + + Open Image in New Private Background Window + Hape Figurën në Dritare të Re Private Në Prapaskenë + + + + Save Video… + Ruani Videon… + + + + Save Audio… + Ruani Audio… + + + + Copy Video Link to Clipboard + Kopjoje Lidhjen e Videos në Të papastër + + + + Copy Audio Link to Clipboard + Kopjoje Lidhjen e Audios në Të papastër + + + + Pause + Pauzë + + + + Unmute + Ktheji zërin + + + + Unmute Tab Media + Ktheji Zërin Medias Së Skedës + + + + Purge History Entry + Spastro Zë Historiku + + + + Edit Bookmark… + Përpunoni Faqerojtës… + + + + Add Bookmark… + Shtoni Faqerojtës… + + + + Unpin Tab + Shfiksoje Skedën + + + + Close + Mbylle + + + + addons + + + Addons + Shtesa + + + + Bookmarks + Faqerojtës + + + + Cache + Fshehtinë + + + + Advanced Configuration + Formësim i Thelluar + + + + Cookies + Cookies + + + + Feeds + Prurje + + + + History + Historik + + + + Links + Lidhje + + + + Notes + Shënime + + + + Page Information + Hollësi Faqeje + + + + Passwords + Fjalëkalime + + + + Tab History + Historik Skedash + + + + Downloads + Shkarkime + + + + Windows and Tabs + Dritare dhe Skeda + + + + main + + + Failed to open content blocking profile file: %1 + S’u arrit të hapet kartelë profili bllokimi lënde: %1 + + + + + + Failed to update content blocking profile: %1 + S’u arrit të përditësohet kartelë profili bllokimi lënde: %1 + + + + Failed to update content blocking profile: checksum mismatch + S’u arrit të përditësohet profil bllokimi lënde: mospërputhje checksum-i + + + + Failed to update content blocking profile, update URL is empty + S’u arrit të përditësohet profil bllokimi lënde: URL-ja e përditësimit është e zbrazët + + + + Failed to update content blocking profile, update URL (%1) is invalid + S’u arrit të përditësohet profil bllokimi lënde: URL-ja e përditësimit (%1) është e pavlefshme + + + + Failed to find User Script file: %1 + S’u arrit të gjendet kartelë Programthi Përdoruesi: %1 + + + + URL to open + URL për hapje + + + + Uses <path> as cache directory + Përdor <path> si drejtori fshehtine + + + + Uses <path> as profile directory + Përdor <path> si srejtori profilesh + + + + Restores session <session> if it exists + Rikthen sesionin <session>, nëse ekziston + + + + Starts private session + Nis sesion privat + + + + Forces session chooser dialog + Bën hapjen e detyruar të dialogut të zgjedhësit të sesionit + + + + Sets profile and cache paths to directories inside the same directory as that of application binary + Cakton shtigje profili dhe fshehtine te drejtori brenda të njëjtës drejtori me atë të dyorit të aplikacionit + + + + Loads URL in new tab + Ngarkon URL-në në skedë të re + + + + Loads URL in new private tab + Ngarkon URL-në në skedë të re private + + + + Loads URL in new window + Ngarkon URL-në në dritare të re + + + + Loads URL in new private window + Ngarkon URL-në në dritare të re private + + + + Tells application to avoid writing data to disk + I thotë aplikacionit të mos shkruaj të dhëna në disk + + + + Prints out diagnostic report and exits application + Shtyp raportin e diagnostikimit dhe mbyll aplikacionin + + + + Failed to parse entry of proxy auto-config (PAC): %1 + S’u arrit të përtypet zë vetëformësimi ndërmjetësi (PAC): %1 + + + + Failed to install update +Updater: %1 +Script: %2 + S’u arrit të instalohet përditësim +Përditësues: %1 +Programth: %2 + + + + Start Page + Faqe Fillimi + + + + (Untitled) + (Pa titull) + + + + Unable to check for updates. Invalid URL: %1 + S’arrihet të kontrollohet për përditësime. URL e pavlefshme: %1 + + + + Unable to check for updates: %1 + S’arrihet të kontrollohet për përditësime: %1 + + + + Unable to parse version number: %1 + S’u arrit të përtypej numër versioni: %1 + + + + Downloaded update script is not valid: %1 + Programthi i përditësimit i shkarkuar s’është i vlefshëm: %1 + + + + Unable to download update: %1 + S’arrihet të shkarkohet përditësim: %1 + + + + Failed to open User Script file: %1 + S’u arrit të gjendet kartelë Programthi Përdoruesi: %1 + + + + Invalid match rule for User Script: %1 + Përputhje e pavlefshme rregulli për Programth Përdoruesi: %1 + + + + Failed to locate header of User Script file + S’u arrit të gjendet krye kartele Programthi Përdoruesi + + + + Default + Parazgjedhje + + + + + + + Request blocked by rule from profile %1: +%2 + Kërkesë e bllokuar nga rregull prej profili %1: +%2 + + + + + (Unknown) + (I panjohur) + + + + Failed to run File Associations Manager, error code: %1 +Application ID: %2 + S’u arrit të xhirohet Përgjegjës Përshoqërimesh Kartelash, kod gabimi: %1 +ID Aplikacioni: %2 + + + + Failed to run File Associations Manager, error code: %1 + S’u arrit të xhirohet Përgjegjës Përshoqërimesh Kartelash, kod gabimi: %1 + + + + Failed to register application to system registry: %1, %2 + S’u arrit të regjistrohet aplikacion te regjistër sistemi: %1, %2 + + + + Failed to load custom rules: invalid adblock header + S’u arrit të ngarkohen rregulla vetjake: krye të pavlefshme adblock + + + + Failed to create a file with custom rules: %1 + S’u arrit të krijohet një kartelë me rregulla vetjake: %1 + + + + migrations + + + Keyboard and Mouse Configuration Profiles + Profile Formësimesh Miu dhe Tastiere + + + + Options + Mundësi + + + + Search Engines + Motorë Kërkimesh + + + + Sessions + Sesione + + + + notifications + + + Feed Updated + Prurja u Përditësua + + + + Feed update was completed + Përditësimi i prurjesh u plotësua + + + + Download Completed + Shkarkim i Plotësuar + + + + File download was completed + Shkarkimi i kartelës u plotësua + + + + Update Available + Ka Përditësim + + + + Update is available to be downloaded + Ka përditësim gati për t’u shkarkuar + + + + proxies + + + + System Configuration + Formësim Sistemi + + + + No Proxy + Pa Ndërmjetës + + + + (Untitled) + (Pa titull) + + + + userAgents + + + + + Default User Agent + Agjent Parazgjedhje Përdoruesi + + + + Mask as {name} + Maskoje si {name} + + + + (Untitled) + (Pa titull) + + + + utils + + + + + Try Again + Riprovoni + + + + You tried to access the address <a href="%1">%1</a>, which was blocked by content blocker. + U rrekët të hapni një adresë <a href="%1">%1</a>, e cila u bllokua nga bllokuesi i lëndës. + + + + The owner of <strong>%1</strong> has configured their page improperly. To protect your information from being stolen, connection to this website was aborted. + I zoti i <strong>%1</strong> e ka formësuar pasaktësisht faqen e tij. Për të mbrojtur të dhënat tuaja nga vjedhjet, lidhja me këtë sajt u ndërpre. + + + + This web page at <strong>%1</strong> has been reported as a web forgery. To protect your information from being stolen, connection to this website was aborted. + Kjo faqe te <strong>%1</strong> është raportuar si një sajesë web. Për të mbrojtur të dhënat tuaja nga vjedhjet, lidhja me këtë sajt u ndërpre. + + + + You tried to access the address <a href="%1">%1</a>, which is currently unavailable. Please make sure that the web address (URL) is correctly spelled and punctuated, then try reloading the page. + Provuat të hyni te adresa <a href="%1">%1</a>, që aktualisht është e papërdorshme. Ju lutemi, sigurohuni se adresa web (URL-ja) është shkruar saktë, mandej riprovoni të ngarkoni faqen. + + + + Check the file name for capitalization or other typing errors. + Kontrolloni emrin për gabim shkrimi me shkronjë të madhe ose të vogël, apo të tjera gabime shkrimi. + + + + Check to see if the file was moved, renamed or deleted. + Kontrolloni për të parë nëse kartela është lëvizur, riemërtuar apo fshirë. + + + + Check the address for typing errors. + Kontrolloni adresën për gabime shkrimi. + + + + Make sure your internet connection is active and check whether other applications that rely on the same connection are working. + Sigurohuni se lidhja juaj internet është aktive dhe kontrolloni në punojnë aplikacione të tjera që bazohen në të njëjtën lidhje. + + + + Check that the setup of any internet security software is correct and does not interfere with ordinary web browsing. + Kontrolloni për të parë se ujdisja e çfarëdo software-i për siguri në internet është e saktë dhe nuk fut hundët në shfletim të rëndomtë në web. + + + + Try pressing the F12 key on your keyboard and disabling proxy servers, unless you know that you are required to use a proxy to connect to the internet, and then reload the page. + Provoni të shtypni tastin F12 në tastierën tuaj dhe të çaktivizoni shërbyes ndërmjetës, veç në e ditshi se e keni të domosdoshme të përdorni një ndërmjetës për t’u lidhur në internet, dhe mandej ringarkoni faqen. + + + + Address blocked + Adresa u bllokua + + + + Connection is insecure + Lidhja është e pasigurt + + + + Connection refused + Lidhje e papranuar + + + + File not found + S’u gjet kartelë + + + + Fraud attempt + Përpjekje mashtrimi + + + + Server not found + S’u gjet shërbyes + + + + Unsupported address type + Lloj i pambuluar adresash + + + + Network error + Gabim rrjeti + + + + Advanced + Të mëtejshme + + + + Error + Gabim + + + + Today at %1 + Sot më %1 + + + + Yesterday at %1 + Dje më %1 + + + + %1 at %2 + %1 në %2 + + + + + + + All files (*) + Krejt kartelat (*) + + + + Open Files + Hapni Kartela + + + + Open File + Hapni Kartelë + + + + %1 files (*.%2) + %1 kartela (*.%2) + + + + Save File + Ruaje Kartelën + + + + + Warning + Sinjalizim + + + + This path is already used by different download, pick another one. + Ky shteg po përdoret tashmë nga një tjetër shkarkim, zgjidhni një tjetër. + + + + Target path is not writable. +Select another one. + Shtegu i synuar s’është i shkrueshëm. +Përzgjidhni një tjetër. + + + + + Go Back + Shko Mbrapsht + + + + Load Blocked Page + Ngarko Faqe të Bllokuar + + + + Load Insecure Page + Ngarko Faqe Jo të Sigurt + + + \ No newline at end of file diff --git a/resources/translations/otter-browser_tr.qm b/resources/translations/otter-browser_tr.qm index 198848e6d4cdbb5ddc2381375b75f8d0da675388..19eeb7cfbd11617a873d76c552e5e7a9c8f549f1 100644 GIT binary patch literal 205501 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 delta 10149 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

Br%b`-E&4yz6R|c#OPo|Aam@xR%fi>#XNwr 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 qS&{wuB%&Ct@p*UNl8hz$J!{ikpBU?Ly Accept Cookie - Çerezi Kabul Et + Çerezi kabul et @@ -24,7 +24,7 @@ Send for: - + Gönder: @@ -59,7 +59,7 @@ Secure connections only - Sadece korumalı bağlantılar + Sadece güvenli bağlantılar @@ -79,17 +79,17 @@ Accept - Kabul Et + Kabul et Accept For This Session Only - Sadece Bu Oturum için Kabul Et + Yalnızca bu oturum için kabul et Discard - Göz Ardı Et + Gözardı et @@ -97,7 +97,7 @@ Preferred Webpage Language - Tercih Edilen Sayfa Dili: + Tercih edilen sayfa dili @@ -117,12 +117,12 @@ Move Up - Yukarı Taşı + Yukarı taşı Move Down - Aşağı Taşı + Aşağı taşı @@ -145,7 +145,7 @@ Any other - Başka + Herhangi bir diğeri @@ -156,7 +156,7 @@ Custom - Özelleştirme + Özel @@ -169,7 +169,7 @@ Creating instance of deprecated action: %1 - Kaldırılmış eylem örneği oluşturma :%1 + Kaldırılmış eylem örneği oluşturuluyor :%1 @@ -177,7 +177,7 @@ Select Action - Eylem Seç + Eylem seç @@ -204,17 +204,17 @@ User Scripts - Kullanıcı Betikleri + Kullanıcı betikleri Select Files - Dosya Seç + Dosya seç User Script files (*.js) - Kullanıcı Betik dosyaları (*.js) + Kullanıcı betik dosyaları (*.js) @@ -226,7 +226,7 @@ User Script with this name already exists: %1 - Bu adla Kullanıcı Betiği zaten var: + Bu adla kullanıcı betiği zaten var: %1 @@ -249,7 +249,7 @@ Failed to import following User Script file(s): %1 Aşağıdaki Kullanıcı Betik dosyası içe aktarılamadı: -%1Aşağıdaki Kullanıcı Betik dosyaları içe aktarılamadı: +%1Aşağıdaki kullanıcı betik dosyaları içe aktarılamadı: %1 @@ -260,27 +260,27 @@ Do you want to continue? - Devam etmek istiyor musunuz? + Sürdürmek istiyor musunuz? Add Addon… - Eklenti Ekle... + Eklenti ekle... Open Addon File - Eklenti Dosyası Aç + Eklenti dosyası aç Reload Addon - Eklentiyi Tekrar yükle + Eklentiyi yeniden yükle Remove Addon… - Eklentiyi Kaldır... + Eklentiyi kaldır... @@ -303,7 +303,7 @@ Local files - Yerel Dosyalar + Yerel dosyalar @@ -327,12 +327,12 @@ Enter address or search… - Bir adres girin yada arayın... + Bir adres girin veya arayın... Remove this Icon - Bu Simgeyi kaldır + Bu simgeyi kaldır @@ -342,17 +342,17 @@ Add to Bookmarks - Yer imlerine Ekle + Yer imlerine ekle Add to Start Page - Başlangıç Sayfasına Ekle + Başlangıç sayfasına ekle Show website information - Website bilgilerini göster + Web sayfası bilgilerini göster @@ -362,7 +362,7 @@ Remove bookmark - Yer imini sil + Yer imi sil @@ -393,7 +393,7 @@ Profile directory (%1) is not writable, application will be running in read-only mode. - Profil dizini (%1) yazılabilir değil, uygulama salt okunur kipte çalışıyor olacak. + Profil dizini (%1) yazılabilir değil, uygulama salt okunur kipte çalışacak. @@ -414,24 +414,24 @@ Bu, arızalara ve hatta veri kaybına neden olabilir. Do you want to continue? - Devam etmek istiyor musunuz? + Sürdürmek istiyor musunuz? Do not show this message again - Bu mesajı tekrar gösterme + Bu iletiyi yeniden gösterme Continue in Read-only Mode - Salt Okunur Kipte Devam Et + Salt okunur kipte sürdür Ignore - Yoksay + Yok say @@ -448,12 +448,12 @@ Bazı web siteleri hatalı çalışabilir veya hiç çalışmayabilir. <b>Otter %1</b><br>Web browser controlled by the user, not vice-versa.<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> - + <b>Otter %1</b><br>Şirketlerin değil, sizin kullandığınız web tarayıcısı.<br><a href="https://www.otter-browser.org/">https://www.otter-browser.org/</a> Web backend: %1 %2. - + Web arka ucu: %1 %2. @@ -475,7 +475,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? New update %1 from %2 channel is available! - + %2 kanalından yeni %1 güncellemesi kullanılabilir! @@ -486,7 +486,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? You are about to quit while %n files are still being downloaded. - + Hâlâ %n dosya indirilirken çıkış yapmak üzeresiniz.Hâlâ %n dosya indirilirken çıkış yapmak üzeresiniz. @@ -507,7 +507,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Default Application - Öntanımlı Uygulama + Öntanımlı uygulama @@ -519,12 +519,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Select Application - Uygulama Seç + Uygulama seç Unknown - (Başlıksız) + Bilinmeyen @@ -532,12 +532,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Failed to parse feed file: %1 - + Besleme dosyası ayrıştırılamadı: %1 Failed to parse feed: no valid entries found - + Besleme ayrıştırılamadı: Geçerli girdi bulunamadı @@ -545,7 +545,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Authentication Required - Yetkilendirme Gerekli + Yetkilendirme gerekli @@ -555,7 +555,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Message: - Mesaj: + İleti: @@ -635,17 +635,17 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? View Bookmark - + Yer imi görüntüle Edit Bookmark - Yer İmini Düzenle + Yer imi düzenle Add Bookmark - Yer İmi Ekle + Yer imi ekle @@ -655,7 +655,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Bookmark with this keyword already exists. - Bu takma adı kullanan bir yer imi bulunuyor. + Bu takma adı kullanan bir yer imi halihazırda bulunuyor. @@ -683,7 +683,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Visited: %1 - Ziyaret Edilme: %1 + Ziyaret: %1 @@ -691,12 +691,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Folder Name - Klasör Adı + Klasör adı Select name of new folder: - Yeni klasör adı: + Yeni klasör adını seçin: @@ -709,7 +709,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Address: - URL: + Adres: @@ -747,21 +747,21 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Add Folder… - Dizin Ekle... + Dizin ekle... Add Bookmark… - Yer İmi Ekle... + Yer imi ekle... Add Separator - Ayraç Ekle + Ayırıcı ekle @@ -781,7 +781,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Keyword - Anahtar Sözcük + Anahtar sözcük @@ -806,17 +806,17 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Empty Trash - Çöpü Boşalt + Çöpü boşalt Add Bookmark - Yer İmi Ekle + Yer imi ekle Restore Bookmark - Yer imini Geri Al + Yer imini geri getir @@ -877,7 +877,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Trash - Çöp Kutusu + Çöp kutusu @@ -930,12 +930,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Address: - URL: + Adres: Type: - Tip: + Tür: @@ -945,12 +945,12 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Last Modified: - Son Değişiklik: + Son değişiklik: Expires: - Sona Erme: + Son kullanım tarihi: @@ -960,7 +960,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Preview - Ön İzleme + Önizleme @@ -971,13 +971,13 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Address - URL + Adres Type - Tip + Tür @@ -989,38 +989,38 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Last Modified - Son Değişiklik + Son değişiklik Expires - Sona Erme + Son kullanım tarihi: Copy Link to Clipboard - Bağlantıyı Kopyala + Bağlantıyı panoya kopyala Remove Entry - Girişi Sil + Girdiyi sil Remove All Entries from This Domain - Bu Adrese Ait Tüm Girişleri Sil + Bu alan adından olan tüm girdileri sil Unknown - (Başlıksız) + Bilinmeyen Cache - Geçici Bellek + Önbellek @@ -1053,7 +1053,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? View Certificate for %1 - + %1 için olan sertifikayı görüntüle @@ -1064,17 +1064,17 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Select File - Dosya Seç + Dosya seç DER encoded X.509 certificates (*.der) - + DER kodlamalı X.509 sertifikaları (*.der) PEM encoded X.509 certificates (*.pem) - + PEM kodlamalı X.509 sertifikaları (*.pem) @@ -1089,92 +1089,92 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Failed to open file for writing. - + Dosya yazım için açılamadı. Authority Key Identifier - + Otorite anahtar tanımlayıcısı Subject Key Identifier - + Konu anahtar tanımlayıcısı Key Usage - + Anahtar kullanımı Certificate Policies - + Sertifika politikaları Policy Mappings - + Poliçe eşlemleri Subject Alternative Name - Alternatif Konu Adı + Alternatif konu adı Issuer Alternative Name - Alternatif Yayımcı Adı + Alternatif yayımcı adı Subject Directory Attributes - + Konu dizini öznitelikleri Basic Constraints - + Temel kısıtlamalar Name Constraints - Ad Kısıtlamaları + Ad kısıtlamaları Policy Constraints - + Poliçe kısıtlamaları Extended Key Usage - + Genişletilmiş anahtar kullanımı CRL Distribution Points - + CRL dağıtım noktaları Inhibit Any Policy - + Herhangi bir poliçeyi engelle Delta CRL Distribution Point - + Delta CRL dağıtım noktası Authority Information Access - + Otorite bilgi erişimi Subject Information Access - + Konu bilgi erişimi @@ -1182,22 +1182,25 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? %1 Exponent: %2 - + Katsayı: +%1 + +Üs: %2 Critical - Ciddi + Kritik Not Critical - Ciddi değil + Kritik değil OID: %1 - + OID: %1 @@ -1212,17 +1215,17 @@ Exponent: %2 Serial Number - Seri Numarası + Seri numarası Certificate Signature Algorithm - Sertifika İmza Algoritması + Sertifika imza algoritması Issuer - + Sağlayan @@ -1237,17 +1240,17 @@ Exponent: %2 Not After - + Sonrasında değil Subject - + Konu Subject Public Key - + Konu halka açık anahtarı @@ -1257,7 +1260,7 @@ Exponent: %2 Public Key - + Halka açık anahtar @@ -1267,17 +1270,17 @@ Exponent: %2 Fingerprint - Parmakizi + Parmak izi SHA-1 Fingerprint - SHA-1 Parmakizi + SHA-1 parmak izi SHA-256 Fingerprint - SHA-256 Parmakizi + SHA-256 parmak izi @@ -1285,12 +1288,12 @@ Exponent: %2 Clear History - Geçmişi Sil + Geçmişi temizle Period to clear: - + Temizlenecek zaman aralığı: @@ -1300,7 +1303,7 @@ Exponent: %2 h - h + sa @@ -1315,7 +1318,7 @@ Exponent: %2 Clear forms history - + Form geçmişini temizle @@ -1330,7 +1333,7 @@ Exponent: %2 Clear caches - Ön belleği temizle + Önbelleği temizle @@ -1346,7 +1349,7 @@ Exponent: %2 Clear Now - Şimdi Temizle + Şimdi temizle @@ -1360,12 +1363,12 @@ Exponent: %2 Select Color… - Renk Seç... + Renk seç... Copy Color - Renk Kopyala + Renk kopyala @@ -1383,27 +1386,27 @@ Exponent: %2 Option Name: - Seçenek Adı: + Seçenek adı: Current Value: - Mevcut Değer: + Geçerli değer: Default Value: - Öntanımlı Değer: + Öntanımlı değer: Save All - Tümünü Kaydet + Tümünü kaydet Restore Defaults - Varsayılana Sıfırla + Öntanımlılara sıfırla @@ -1415,7 +1418,7 @@ Exponent: %2 Type - Tip + Tür @@ -1433,47 +1436,48 @@ Exponent: %2 The settings have been changed. Do you want to save them? - + Ayarlar değiştirildi. +Kaydetmek istiyor musunuz? Do you really want to restore default values of all options? - + Tüm seçenekleri öntanımlı ayarlara sıfırlamak istediğinizden emin misiniz? Copy Option Name - Seçenek Adını Kopyala + Seçenek adı kopyala Copy Option Value - Seçenek Değerini Kopyala + Seçenek değeri kopyala Save Value - Değeri Kaydet + Değeri kaydet Restore Default Value - Öntanımlı Değere Sıfırla + Öntanımlı değere sıfırla Expand All - + Tümünü genişlet Collapse All - + Tümünü içeri çek Advanced Configuration - Gelişmiş Yapılandırma + Gelişmiş yapılandırma @@ -1489,7 +1493,7 @@ Do you want to save them? Content Blocking - İçerik Engelleme + İçerik engelleme @@ -1504,7 +1508,7 @@ Do you want to save them? Select lists which you want to use for content blocking (AdBlock Plus compatible): - + İçerik engelleme için kullanmak istediğiniz listeleri seçin (AdBlock Plus ile uyumlu): @@ -1514,17 +1518,17 @@ Do you want to save them? Cosmetic filters: - + Kozmetik süzgeçler: Enable wildcard expressions - + Joker ifadeleri etkinleştir Enable custom rules - + Özel kuralları etkinleştir @@ -1547,13 +1551,13 @@ Do you want to save them? Remove - Sil + Kaldır Custom Rules - Özel Kurallar + Özel kurallar @@ -1563,7 +1567,7 @@ Do you want to save them? Domain specific only - + Yalnızca alan adına özel @@ -1576,32 +1580,32 @@ Do you want to save them? Active Profiles - Etkin Profiller + Etkin profiller Blocked Elements - Engellenmiş Ögeler + Engellenmiş ögeler main frame - + ana çerçeve subframe - + alt çerçeve pop-up - + açılır pencere stylesheet - + biçem sayfası @@ -1611,7 +1615,7 @@ Do you want to save them? image - resim + görsel @@ -1621,17 +1625,17 @@ Do you want to save them? object subrequest - + nesne altisteği XHR - + XHR WebSocket - + WebSocket @@ -1641,12 +1645,12 @@ Do you want to save them? Enable Content Blocking - + İçerik engellemeyi etkinleştir Blocked Elements: {amount} - + Engellenen ögeler: {amount} @@ -1654,7 +1658,7 @@ Do you want to save them? day(s) - gün(ler) + gün @@ -1665,7 +1669,7 @@ Do you want to save them? %n day(s) - + %n gün%n gün @@ -1673,90 +1677,90 @@ Do you want to save them? Profile Settings - + Profil ayarları Title: - + Başlık: Category: - + Kategori: Address: - + Adres: Update interval: - + Güncelleme aralığı: Never - + Hiçbir zaman days - + gün Last update: - + Son güncelleme: Advertisements - + Reklamlar Annoyance - + İstenmeyen Privacy - + Gizlilik Social - + Sosyal Regional - + Bölgesel Other - + Diğer Error - + Hata Valid update URL is required. - + Geçerli bir güncelleme URL'si gerekli. @@ -1766,7 +1770,7 @@ Do you want to save them? Failed to create profile file: %1. - + Profil dosyası oluşturulamadı: %1. @@ -1774,27 +1778,27 @@ Do you want to save them? Failed to read profile file - + Profil dosyası okunamadı Failed to download profile rules - + Profil kuralları indirilemedi Failed to verify profile rules using checksum - + Sağlama toplamı kullanılarak profil kuralları doğrulanamadı Profile was never updated - + Profil hiçbir zaman güncellenmemiş Profile was last updated more than one week ago - + Profil bir haftadan önce güncellenmiş @@ -1802,62 +1806,62 @@ Do you want to save them? Custom Rules - + Özel kurallar Failed to remove content blocking profile file: %1 - + İçerik engelleme profil dosyası kaldırılamadı: %1 Unknown - + Bilinmeyen Title - + Başlık Update Interval - + Güncelleme aralığı Last Update - + Son güncelleme Advertisements - + Reklamlar Annoyance - + İstenmeyen Privacy - + Gizlilik Social - + Sosyal Regional - + Bölgesel Other - + Diğer @@ -1873,12 +1877,12 @@ Do you want to save them? Print Page - + Sayfayı yazdır Print Preview - + Baskı önizleme @@ -1891,53 +1895,53 @@ Do you want to save them? Value: - + Değer: Expires: - + Son kullanım tarihi: this session only - + yalnızca bu oturum MM.dd.yyyy HH:mm Date and time format - + AA.gg.yyyy SS:dd Domain: - + Alan adı: Path: - + Yol: Send only for secure connections - + Yalnızca güvenli bağlantılar için gönder Allow accessing using JavaScript - + JavaScript kullanarak erişime izin ver Add Cookie - + Çerez ekle Edit Cookie - + Çerez düzenle @@ -1945,7 +1949,7 @@ Do you want to save them? Search… - + Ara... @@ -1960,7 +1964,7 @@ Do you want to save them? Expires: - Sone Erme: + Son kullanım tarihi: @@ -1970,18 +1974,18 @@ Do you want to save them? Path: - + Yol: Add… - + Ekle... Properties… - + Özellikler... @@ -1997,43 +2001,43 @@ Do you want to save them? You are about to delete %n cookie(s). - + %n adet çerez silmek üzeresiniz.%n adet çerez silmek üzeresiniz. Do you want to continue? - Devam etmek istiyor musunuz? + Sürdürmek istiyor musunuz? You are about to delete all cookies. - + Tüm çerezleri silmek üzeresiniz. Add Cookie… - + Çerez ekle... Remove All Cookies from This Domain… - + Bu alan adından gelen tüm çerezleri kaldır... Remove All Cookies… - + Tüm çerezleri kaldır... this session only - + yalnızca bu oturum Cookies - + Çerezler @@ -2041,35 +2045,35 @@ Do you want to save them? Third-party Cookies Exceptions - + Üçüncü parti çerez istisnaları Always ACCEPT third-party cookies from: - + Üçüncü parti çerezleri şu adreslerden her zaman KABUL ET: Add - + Ekle Edit - + Düzenle Remove - + Kaldır Always REJECT third-party cookies from: - + Üçüncü parti çerezleri şu adreslerden her zaman REDDET: @@ -2077,86 +2081,86 @@ Do you want to save them? Scope - + Ölçek Network - + Security - + Güvenlik CSS - + CSS JS - + JS Other - + Diğer Clear - + Temizle Filter… - + Süzgeç... Close - + Kapat All Tabs - + Bütün sekmeler Current Tab Only - + Yalnızca geçerli sekme Other Sources - + Diğer kaynaklar <empty> - + <empty> Copy - + Kopyala Expand All - + Tümünü genişlet Collapse All - + Tümünü içe çek @@ -2165,17 +2169,19 @@ Do you want to save them? Feed updated: %1 - + Besleme güncellendi: + +%1 Failed to parse feed: invalid feed type - + Besleme ayrıştırılamadı: Geçersiz besleme türü Failed to download feed - + Besleme indirilemedi @@ -2183,62 +2189,62 @@ Do you want to save them? Edit Feed - + Beslemeyi düzenle Folder: - + Klasör: New… - + Yeni... Title: - + Başlık: Change Icon… - + Simge değiştir... Address: - + Adres: Update interval: - + Güncelleme aralığı: Never - + Hiçbir zaman minutes - + dakika Add Feed - + Besleme ekle Error - + Hata Valid address is required. - + Geçerli bir adres gerekli. @@ -2246,7 +2252,7 @@ Do you want to save them? Folder Name - Klasör Adı + Klasör adı @@ -2259,61 +2265,61 @@ Do you want to save them? OK - + Tamam Cancel - + İptal Search… - + Ara... Categories - + Kategoriler Title - + Başlık From - + Kimden Published - + Yayımlanma Question - + Soru You already subscribed this feed. - + Bu beslemeye halihazırda abonesiniz. Do you want to continue? - + Sürdürmek istiyor musunuz? Select Folder Name - Klasör Adını Seç + Klasör adı seç @@ -2323,92 +2329,92 @@ Do you want to save them? Open - + Empty Trash - + Çöpü boşalt Add Folder… - + Klasör ekle... Add Feed… - + Besleme ekle... Add New - + Yeni ekle Restore Feed - + Beslemeyi geri getir Properties… - + Özellikler... Send email to %1 - + Şuna e-posta gönder: %1 Go to %1 - + Şuna git: %1 All (%1) - + Tümü (%1) (Untitled) - + (Başlıksız) Subscribe to this feed using: - + Bu beslemeye şunu kullanarak abone ol: Feed: %1 - + Besleme: %1 Feeds - + Beslemeler Title: %1 - + Başlık: %1 Address: %1 - + Adres: %1 Last update: %1 - + Son güncelleme: %1 @@ -2416,37 +2422,37 @@ Do you want to save them? Feeds - + Beslemeler Trash - + Çöp kutusu (Untitled) - + (Başlıksız) Failed to open feeds file: %1 - + Beslemeler dosyası açılamadı: %1 Failed to load feeds file: %1 - + Beslemeler dosyası yüklenemedi: %1 Error - + Hata Failed to load feeds file. - + Beslemeler dosyası yüklenemedi. @@ -2454,27 +2460,27 @@ Do you want to save them? Failed to open passwords file: %1 - + Parolalar dosyası açılamadı: %1 Failed to save passwords file: %1 - + Parolalar dosyası kaydedilemedi: %1 Failed to remove passwords file - + Parolalar dosyası kaldırılamadı Encrypted File - + Şifrelenmiş dosya Stores passwords in AES encrypted file. - + Parolaları AES ile şifrelenmiş bir dosyada depolar. @@ -2483,7 +2489,7 @@ Do you want to save them? Browse… - + Göz at... @@ -2511,12 +2517,12 @@ Do you want to save them? Information - + Bilgi Notification - + Bildirim @@ -2524,22 +2530,22 @@ Do you want to save them? Error - + Hata Profile with this address already exists. - + Bu ada iye bir profil halihazırda mevcut Question - + Soru Do you want to add this content blocking profile? - + Bu içerik engelleme profilini eklemek istediğinize emin misiniz? @@ -2547,37 +2553,37 @@ Do you want to save them? Sorting - + Sıralama Sort Ascending - + Artan sıralama Sort Descending - + Azalan sıralama No Sorting - + Sıralama yok Visible Columns - + Görünür sütunlar Show All - + Tümünü göster (Untitled) - + (Başlıksız) @@ -2585,7 +2591,7 @@ Do you want to save them? Search… - + Ara... @@ -2610,17 +2616,17 @@ Do you want to save them? Earlier This Month - Bu Ay Başı + Bu ay başı Earlier This Year - Bu Yıl Başı + Bu yıl başı Older - Daha Eski + Daha eski @@ -2643,22 +2649,22 @@ Do you want to save them? Add to Bookmarks… - + Yer imlerine ekle... Copy Link to Clipboard - Adresi Kopyala + Adresi kopyala Remove Entry - Girişi Sil + Girdiyi sil Remove All Entries from This Domain - Bu Alan Adına Ait Tüm Girişleri Temizle + Bu alan adından olan tüm girdileri kaldır @@ -2671,7 +2677,7 @@ Do you want to save them? (Untitled) - + (Başlıksız) @@ -2679,7 +2685,7 @@ Do you want to save them? Failed to open history file: %1 - + Geçmiş dosyası açılamadı: %1 @@ -2687,7 +2693,7 @@ Do you want to save them? HTML Bookmarks - HTML Yer İmleri + HTML yer imleri @@ -2697,7 +2703,7 @@ Do you want to save them? HTML files (*.htm *.html) - + HTML dosyaları (*.htm, *.html) @@ -2708,12 +2714,12 @@ Do you want to save them? Select Icon - + Simge seç Images (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) - + Görseller (*.png *.jpg *.bmp *.gif *.svg *.svgz *.ico) @@ -2723,22 +2729,22 @@ Do you want to save them? Select From File… - + Dosyadan seç... Select From Theme… - + Temadan seç... Reset - + Sıfırla Clear - + Temizle @@ -2746,7 +2752,7 @@ Do you want to save them? Image Properties - Resim Özellikleri + Görsel özellikleri @@ -2761,7 +2767,7 @@ Do you want to save them? File size: - + Dosya boyutu: @@ -2771,12 +2777,12 @@ Do you want to save them? Alternative text: - + Alternatif metin: Long description: - + Uzun açıklama: @@ -2788,7 +2794,7 @@ Do you want to save them? %1 x %2 pixels @ %3 bits per pixel in %n frame(s) - + %1 x %2 piksel @ piksel başına %3, %n çerçeve içinde%1 x %2 piksel @ piksel başına %3 bit, %n çerçevede @@ -2799,7 +2805,7 @@ Do you want to save them? %1 x %2 pixels - + %1 x %2 piksel @@ -2807,7 +2813,7 @@ Do you want to save them? Options - + Seçenekler @@ -2817,17 +2823,17 @@ Do you want to save them? Results - + Sonuçlar Initializing… - + İlklendiriliyor... %p% (%v/%m) - + %p% (%v/%m) @@ -2842,22 +2848,22 @@ Do you want to save them? Processing… - + İşleniyor... Failed to import data. - + Veri içe aktarılamadı. Import cancelled by the user. - + İçe aktarma kullanıcı tarafından iptal edildi. Import finished successfully. - + İçe aktarma başarıyla tamamlandı. @@ -2870,17 +2876,17 @@ Do you want to save them? Allow moving and resizing of windows - + Pencerelerin taşınmasına ve yeniden boyutlandırılmasına izin ver Allow changing of status field - + Durum alanının değiştirilmesine izin ver Allow script to hide address bar - + Betiğin adres çubuğunu gizlemesine izin ver @@ -2890,35 +2896,35 @@ Do you want to save them? Allow to receive right mouse button clicks - + Sağ fare düğmesi tıklamalarının kabulüne izin ver Allow to close windows: - + Pencerelerin kapanmasına izin ver: Allow to enter full screen mode: - + Tam ekran kipine geçmeye izin ver: Ask - + Sor Always - + Her zaman Never - + Hiçbir zaman @@ -2927,7 +2933,7 @@ Do you want to save them? (Untitled) - + (Başlıksız) @@ -2935,17 +2941,17 @@ Do you want to save them? Profile Configuration - + Profil yapılandırması Actions - + Eylemler Search… - + Ara... @@ -2960,7 +2966,7 @@ Do you want to save them? Information - + Bilgi @@ -2975,56 +2981,56 @@ Do you want to save them? Version: - + Sürüm: Author: - + Yazar: Status - + Durum Action - + Eylem Parameters - + Parametreler Shortcut - + Kısayol This shortcut already used by %1 - + Bu kısayol halihazırda %1 tarafından kullanılıyor unknown action - + bilinmeyen eylem This shortcut cannot be used because it would be overriden by a native hotkey used by an editing action - + Bu kısayol kullanılamaz; çünkü üst düzey bir düzenleme işlevi tarafından geçersiz kılınacaktır. Single key shortcuts are currently disabled - + Tek düğmeli kısayollar şu an için devre dışı @@ -3032,27 +3038,27 @@ Do you want to save them? Search… - + Ara... Lock Panel - + Paneli kilitle Links - + Bağlantılar Title: %1 - + Başlık: %1 Address: %1 - + Adres: %1 @@ -3060,17 +3066,17 @@ Do you want to save them? Directory does not exist - + Dizin mevcut değil Directory is not readable - + Dizin okunabilir değil Cannot read directory listing - + Dizin listelemesi okunamıyor @@ -3103,7 +3109,7 @@ Do you want to save them? Switch Application Language - Uygulama Diline Geç + Uygulama dilini değiştir @@ -3128,12 +3134,12 @@ Do you want to save them? Unknown [%1] - + Bilinmeyen [%1] Translation files (*.qm) - + Çeviri dosyaları (*.qm) @@ -3141,17 +3147,17 @@ Do you want to save them? Error - + Hata Warning - + Uyarı Information - + Bilgi @@ -3159,27 +3165,27 @@ Do you want to save them? Question - + Soru You are about to open %n bookmark(s). - + %n yer imini açmak üzeresiniz.%n yer imini açmak üzeresiniz. Do you want to continue? - + Sürdürmek istiyor musunuz? Do not show this message again - + Bu iletiyi bir daha gösterme Empty - + Boş @@ -3187,22 +3193,22 @@ Do you want to save them? Set Master Password - + Ana parola ayarla Current password: - + Geçerli parola: New password: - + Yeni parola: Confirm new password: - + Yeni parolayı doğrula: @@ -3211,12 +3217,12 @@ Do you want to save them? Failed to create menu action: %1 - + Menü eylemi oluşturulamadı: %1 Window - %1 - + Pencere - %1 @@ -3227,7 +3233,7 @@ Do you want to save them? %1 (%n tab(s)) - + %1 (%n sekme)%1 (%n sekme) @@ -3235,7 +3241,7 @@ Do you want to save them? Menu - + Menü @@ -3243,18 +3249,19 @@ Do you want to save them? Settings Migration - + Ayarlar aktar Configuration of the components listed below needs to be updated to new version. Do you want to migrate it? - + Aşağıda listelenen bileşenlerin yapılandırması yeni sürüme güncellenmeli. +Aktarmak istiyor musunuz? Create backup - + Yedek oluştur @@ -3263,7 +3270,7 @@ Do you want to migrate it? (Untitled) - + (Başlıksız) @@ -3271,17 +3278,17 @@ Do you want to migrate it? Profile Configuration - + Profil yapılandırması Actions - + Eylemler Search… - + Ara... @@ -3298,17 +3305,17 @@ Do you want to migrate it? Move Up - + Yukarı taşı Move Down - + Aşağı taşı Information - + Bilgi @@ -3323,72 +3330,72 @@ Do you want to migrate it? Version: - + Sürüm: Author: - + Yazar: Generic - + Genel Link - + Bağlantı Editable Content - + Düzenlenebilir içerik Tab Handle - + Sekme tutacağı Tab Handle of Active Tab - + Etkin sekmenin tutacağı Empty Area of Tab Bar - + Sekme çubuğunun boş alanı Any Toolbar - + Herhangi bir araç çubuğu Context and Action - + Bağlam ve eylem Parameters - + Parametreler Steps - + Adımlar Step - + Adım Select Action - + Eylem seç @@ -3396,12 +3403,12 @@ Do you want to migrate it? Remove Entry - + Girdi kaldır Purge Entry - + Girdi sil @@ -3410,12 +3417,12 @@ Do you want to migrate it? Failed to load proxy auto-config (PAC): %1 - + Vekil otomatik yapılandırması yüklenemedi (PAC): %1 Failed to load proxy auto-config (PAC). Invalid URL: %1 - + Vekil otomatik yapılandırması yüklenemedi (PAC). Geçersiz URL: %1 @@ -3432,7 +3439,11 @@ Do you want to migrate it? %1 Do you want to continue? - + SSL hataları oluştu: + +%1 + +Sürdürmek istiyor musunuz? @@ -3448,17 +3459,17 @@ Do you want to continue? Search… - + Ara... Address: - + Adres: Date: - + Tarih: @@ -3475,7 +3486,7 @@ Do you want to continue? Add Folder… - + Klasör ekle... @@ -3483,24 +3494,24 @@ Do you want to continue? Add Note - + Not ekle Add Separator - Ayraç Ekle + Ayırıcı ekle Add note… - + Not ekle... Select Folder Name - Klasör Adı Seç + Klasör adı seç @@ -3515,17 +3526,17 @@ Do you want to continue? Open source page - + Kaynak sayfası aç Restore Note - + Notu geri getir Notes - + Notlar @@ -3542,12 +3553,12 @@ Do you want to continue? Go to Page - Sayfaya Git + Sayfaya git Enter a web address or choose one from the list: - Bir adres girin ya da listeden seçin: + Bir adres girin veya listeden bir tane seçin: @@ -3555,12 +3566,12 @@ Do you want to continue? Go to Bookmark - Yer İmlerine Git + Yer imlerine git Enter the keyword of bookmark: - Yer imi için takma ad girin: + Yer imi için anahtar sözcük girin: @@ -3568,12 +3579,12 @@ Do you want to continue? Opera Bookmarks - Opera Yer İmleri + Opera yer imleri Imports bookmarks from Opera Browser version 12 or earlier - Yer İmlerini Opera Tarayıcı 12 ya da daha önceki bir sürümden aktarın + Opera Tarayıcı sürüm 12 veya öncesinden yer imlerini içe aktar @@ -3591,17 +3602,17 @@ Do you want to continue? Opera Notes - + Opera notları Imports notes from Opera Browser version 12 or earlier - + Opera Tarayıcı sürüm 12 veya öncesinden notları içe aktar Opera notes files (notes.adr) - + Opera not dosyası (notes.adr) @@ -3609,22 +3620,22 @@ Do you want to continue? Remove existing search engines - + Mevcut arama motorlarını kaldır Opera search engines - + Opera arama motorları Imports search engines from Opera Browser version 12 or earlier - + Opera Tarayıcı sürüm 12 veya öncesinden arama motorları içe aktar Opera search engines files (search.ini) - + Opera arama motoru dosyaları (search.ini) @@ -3632,17 +3643,17 @@ Do you want to continue? Opera Session - + Opera oturumu Imports session from Opera Browser version 12 or earlier - + Opera Tarayıcı sürüm 12 veya öncesinden oturum içe aktar Opera session files (*.win) - + Opera oturum dosyaları (*.win) @@ -3650,17 +3661,17 @@ Do you want to continue? OPML Feeds - + OPML beslemeleri Imports feeds from OPML file - + OPML dosyasından besleme içe aktar OPML files (*.opml) - + OPML dosyaları (*.opml) @@ -3668,17 +3679,17 @@ Do you want to continue? Import into folder: - + Şu klasöre içe aktar: New… - + Yeni... Allow to duplicate already existing feeds - + Halihazırda var olan beslemeleri yinelemeye izin ver @@ -3686,17 +3697,17 @@ Do you want to continue? No - + Hayır Yes - + Evet Defaults - Varsayılanlar + Öntanımlılar @@ -3704,7 +3715,7 @@ Do you want to continue? Search… - + Ara... @@ -3716,99 +3727,99 @@ Do you want to continue? Value - + Değer <empty> - + <empty> General - + Genel Title - + Başlık MIME type - + MIME türü Document size - + Belge boyutu Total size - + Toplam boyut Number of requests - + İstek sayısı %1 (%n blocked) - + %1 (%n engelli)%1 (%n engelli) Downloaded - + İndirilen Headers - + Üstbilgiler Meta - + Meta Permissions - + İzinler Security - + Güvenlik Cipher protocol - + Şifre protokolü Cipher authentication method - + Şifre kimlik doğrulama yöntemi Cipher encryption method - + Şifreleme yöntemi Cipher key exchange method - + Şifre anahtar değişim yöntemi Page Information - + Sayfa bilgisi @@ -3821,19 +3832,19 @@ Do you want to continue? Cancel - + İptal Do you want to update login data for %1? - + %1 için giriş bilgisini güncellemek istiyor musunuz? Do you want to save login data for %1? - + %1 için giriş bilgisini kaydetmek istiyor musunuz? @@ -3841,7 +3852,7 @@ Do you want to continue? Search… - + Ara... @@ -3853,57 +3864,57 @@ Do you want to continue? Value - + Değer Set #%1 - + #%1 ayarla Question - + Soru You are about to delete %n password(s). - + %n parolayı silmek üzeresiniz.%n parolayı silmek üzeresiniz. Do you want to continue? - + Sürdürmek istiyor musunuz? You are about to delete all passwords. - + Tüm parolaları silmek üzeresiniz. Remove Password - + Parolayı kaldır Remove All Passwords from This Domain… - + Bu alan adından gelen tüm parolaları kaldır... Remove All Passwords… - + Tüm parolaları kaldır... Passwords - + Parolalar @@ -3911,72 +3922,72 @@ Do you want to continue? Allow this time - + Bu kez izin ver Always allow - + Her zaman izin ver Always deny - + Her zaman reddet OK - + Tamam Cancel - + İptal %1 wants to enter full screen mode. - + %1, tam ekran kipine girmek istiyor. %1 wants access to your location. - + %1, konumunuza erişmek istiyor. %1 wants to show notifications. - + %1, bildirimler göstermek istiyor. %1 wants to lock mouse pointer. - + %1, fare imlecini kilitlemek istiyor. %1 wants to access your microphone. - + %1, mikrofonunuza erişmek istiyor. %1 wants to access your camera. - + %1, kameranıza erişmek istiyor. %1 wants to access your microphone and camera. - + %1, kameranıza ve mikrofonunuza erişmek istiyor. %1 wants to play audio. - + %1, ses çalmak istiyor. Invalid permission request from %1. - + Şundan geçersiz izin isteği: %1 @@ -3989,7 +4000,7 @@ Do you want to continue? Failed to install update. - + Güncelleme kurulamadı. @@ -3997,48 +4008,48 @@ Do you want to continue? Details - + Ayrıntılar Close - + Kapat %1 wants to open %n pop-up window(s). - + %1, %n açılır pencere açmak istiyor.%1, %n açılır pencere açmak istiyor. Open All Pop-Ups from This Website - + Bu web sayfasından gelen tüm açılır pencereleri aç Open Pop-Ups from This Website in Background - + Bu web sayfasından gelen tüm açılır pencereleri arka planda aç Block All Pop-Ups from This Website - + Bu web sayfasından gelen tüm açılır pencereleri engelle Always Ask What to Do for This Website - + Bu web sitesi için her zaman ne yapılacağını sor Blocked Pop-ups - + Engellenen açılır pencereler Open All - + Tümünü aç @@ -4053,97 +4064,97 @@ Do you want to continue? Smooth scrolling - + Pürüzsüz kaydırma Check spelling - + Yazım denetimi yap Address Field Suggestions - + Adres alanı önerileri Suggest bookmarks - + Yer imleri öner Suggest history - + Geçmiş öner Suggest search results - + Arama sonuçları öner Local paths - + Yerel yollar Address Completion - + Adres tamamlama Show category headers - + Kategori üstbilgilerini göster Display mode: - + Görüntüleme kipi: Events - + Olaylar Play sound: - + Ses çal: Show notification - + Bildirim göster Mark taskbar entry - + Görev çubuğu ögesini imle Options - + Seçenekler Prefer native notifications - + Doğal bildirimleri yeğle Style - + Biçem Widget style: - + Araç takımı biçemi: Interface style sheet: - + Arabirim biçem sayfası: @@ -4153,42 +4164,42 @@ Do you want to continue? Show tray icon - + Tepsi simgesini göster Images: - + Görseller: Enable JavaScript - + JavaScript'i etkinleştir JavaScript Options… - + JavaScript seçenekleri... Plugins: - + Eklentiler: User style sheet: - + Kullanıcı biçem sayfası: Website Preferences - + Web sayfası tercihleri Search… - + Arama... @@ -4208,7 +4219,7 @@ Do you want to continue? Edit… - + Düzenle... @@ -4224,52 +4235,52 @@ Do you want to continue? MIME Types - + MIME türleri Show download dialog - + İndirmeler iletişim kutusunu göster Save to disk - + Diske kaydet Do not ask for folder, save directly to - + Klasör sorma, doğrudan şuraya kaydet: Open with application - + Uygulamayla aç Pass web address directly to application - + Web adresini doğrudan uygulamaya geçir Send referrer information - + Başvuran bilgisini gönder User Agent - + Kullanıcı kimliği Proxy - + Vekil SSL Ciphers - + SSL şifreleri @@ -4290,71 +4301,71 @@ Do you want to continue? Updates - + Güncellemeler Select channels from which you want to receive updates: - + Hangi kanallardan güncellemeleri almak istediğinizi seçin: Check for updates every - + Şu aralıkla güncellemeleri denetle: day(s) - + gün Install updates automatically - + Uygulamaları kendiliğinden yükle Keyboard Shortcuts - + Klavye kısayolları Clone - + Klonla Enable single key shortcuts - + Tek düğmeli kısayolları etkinleştir Mouse Actions and Gestures - + Fare eylemleri ve mimikleri Enable mouse gestures - + Fare mimiklerini etkinleştir Browsing - + Göz atma Notifications - + Bildirimler Appearance - + Görünüm @@ -4366,13 +4377,13 @@ Do you want to continue? Downloads - + İndirmeler Programs - + Programlar @@ -4396,28 +4407,28 @@ Do you want to continue? Keyboard - + Klavye Mouse - + Fare Compact - + Kompakt Columns - + Sütunlar WAV files (*.wav) - + WAV dosyaları (*.wav) @@ -4428,108 +4439,108 @@ Do you want to continue? Description - + Açıklama System Style - + Sistem biçemi Style sheets (*.css) - + Biçem sayfaları (*.css) All images - + Tüm görseller Cached images - + Önbelleklenmiş görseller No images - + Görsel yok Enabled - + Etkin On demand - + Talebe bağlı Disabled - + Devre dışı Title - + Başlık Value - + Değer Add Folder… - + Klasör ekle... Add User Agent… - + Kullanıcı kimliği ekle... Add Separator - + Ayırıcı ekle Add Proxy… - + Vekil ekle... Stable version - + Kararlı sürüm Beta version - + Deneme sürümü Weekly development version - + Haftalık geliştirme sürümü New… - + Yeni... Readd - + Okundu @@ -4541,7 +4552,7 @@ Do you want to continue? Do you really want to remove preferences for this website? - + Bu web sayfası için olan tercihleri kaldırmak istediğinizden emin misiniz? @@ -4597,19 +4608,19 @@ Do you want to continue? Custom - + Özel Do you really want to remove this profile? - + Bu profili kaldırmak istediğinizden emin misiniz? Delete profile permanently - + Profili kalıcı olarak kaldır @@ -4617,64 +4628,64 @@ Do you want to continue? Blocking - + Engelleniyor Pop-ups: - + Açılır pencereler: Zoom - + Yakınlaştır Default zoom: - + Öntanımlı yakınlaştırma: % - + % Zoom text only - + Yalnızca metni yakınlaştır Fonts - + Yazıtipleri Default proportional font size: - + Öntanımlı orantılı yazıtipi boyutu: px - + pik Default fixed-width font size: - + Öntanımlı eş aralıklı yazıtipi boyutu: Minimum font size: - + En küçük yazıtipi boyutu: None - + Hiçbiri @@ -4684,32 +4695,32 @@ Do you want to continue? Ask - + Sor Block all - + Tümünü engelle Open all - + Tümünü aç Open all in background - + Tümünü arka planda aç Style - + Biçem Font - + Yazıtipi @@ -4720,37 +4731,37 @@ Do you want to continue? Standard font - + Standart yazıtipi Fixed-width font - + Eş aralıklı yazıtipi Serif font - + Serif yazıtipi Sans-serif font - + Sans-serif yazıtipi Cursive font - + El yazısı yazıtipi Fantasy font - + Fantezi yazıtipi The quick brown fox jumps over the lazy dog - + Pijamalı hasta, yağız şoföre çabucak güvendi. @@ -4760,22 +4771,22 @@ Do you want to continue? Background Color - Arka Plan Rengi + Arka plan rengi Text Color - Metin Rengi + Metin rengi Link Color - Bağlantı Rengi + Bağlantı rengi Visited Link Color - Ziyaret Edilmiş Bağlantı Rengi + Ziyaret edilmiş bağlantı rengi @@ -4813,7 +4824,7 @@ Do you want to continue? All Settings - + Tüm ayarlar @@ -4821,92 +4832,92 @@ Do you want to continue? Startup - + Başlangıç Startup behavior: - + Başlangıç davranışı: Home page: - + Ana sayfa: Use Current Page - + Geçerli sayfayı kullan Use Bookmark - + Yer imi kullan Restore to Default - + Öntanımlıya geri döndür Do not load the tab contents until selected - + Seçilene değin sekme içeriğini yükleme Downloads - + İndirmeler Save files to: - + Dosyaları şuraya kaydet: Always ask me where to save files - + Her zaman dosyaların nereye kaydedileceğini sor Tabs - + Sekmeler Open new windows in new tabs instead - + Yeni pencereleri yeni sekmede aç Reuse current tab - + Geçerli sekmeyi yeniden kullan Open new tab next to active - + Yeni sekmeyi etkin sekmenin yanında aç When closing tab: - + Sekmeyi kapatırken: Activate the last active tab - + Son etkin sekmeyi etkinleştir Activate the next tab - + Bir sonraki sekmeyi etkinleştir Activate the first tab opened from current tab - + Geçerli sekmeden açılan ilk sekmeyi etkinleştir @@ -4916,47 +4927,47 @@ Do you want to continue? Preferred webpage language: - + Yeğlenen web sayfası dili: Edit… - + Düzenle... System Defaults - + Sistem öntanımlıları Set as a default browser - + Öntanımlı tarayıcı olarak ayarla Show windows and tabs from the last time - + Son oturumdan kalan pencereleri ve sekmeleri göster Show startup dialog - + Başlangıç iletişim kutusunu göster Show home page - + Ana sayfayı göster Show start page - + Başlangıç sayfasını göster Show empty page - + Boş sayfa göster @@ -4964,12 +4975,12 @@ Do you want to continue? Tracking - + İzleme Do Not Track: - + İzlenmemeyi iste: @@ -4979,144 +4990,144 @@ Do you want to continue? Private mode - + Gizli kip Remember browsing history - + Tarama geçmişini hatırla Remember downloads history - + İndirme geçmişini hatırla Remember search history - + Arama geçmişini hatırla Remember form history - + Form geçmişini hatırla Template… - + Şablon... Enable cookies - + Çerezleri etkinleştir Accept cookies: - + Çerezleri kabul et: Keep until: - + Şu zamana değin tut: Accept third-party cookies: - + Üçüncü parti çerezleri kabul et: Exceptions… - + İstisnalar: Clear history when application closes - + Uygulama kapandığında geçmişi sil Settings… - + Ayarlar... Passwords - + Parolalar Remember passwords - + Parolaları hatırla Manage… - + Yönet... Use a master password - + Bir ana parola kullan Change… - + Değiştir... Inform websites that I do not want to be tracked - + Web sayfalarına izlenmek istemediğimi bildir Inform websites that I allow tracking - + Web sayfalarına izlenmeye izin verdiğimi bildir Do not inform websites about my preference - + Web sayfalarına tercihim hakkında bilgi verme Always - + Her zaman Only existing - + Yalnızca var olan Only read existing - + Yalnızca var olan okunmuş Expires - Sona Erme + Son kullanım tarihi: Current session is closed - + Geçerli oturum kapatılmış Always ask - + Her zaman sor Never - + Hiçbir zaman @@ -5124,7 +5135,7 @@ Do you want to continue? Search… - + Ara... @@ -5134,12 +5145,12 @@ Do you want to continue? Edit… - + Düzenle... Update - + Güncelle @@ -5149,17 +5160,17 @@ Do you want to continue? Move Up - Yukarı Taşı + Yukarı taşı Move Down - Aşağı Taşı + Aşağı taşı Enable search suggestions - + Arama önerilerini etkinleştir @@ -5171,37 +5182,37 @@ Do you want to continue? Keyword - + Anahtar sözcük New… - + Yeni... File… - + Dosya... Readd - + Okundu New Search Engine - + Yeni arama motoru Select File - + Dosya seç Open Search files (*.xml) - + Arama dosyalarını aç (*.xml) @@ -5212,35 +5223,35 @@ Do you want to continue? Do you really want to remove this search engine? - + Bu arama motorunu kaldırmak istediğinizden emin misiniz? Delete search engine permanently - + Arama motorunu kalıcı olarak kaldır Error - + Hata Failed to open Open Search file. - + Aramayı aç dosyası açılamadı. Keyword is already in use. Do you want to continue anyway? - + Anahtar sözcük zaten kullanılıyor. Yine de sürdürmek istiyor musunuz? Failed to update search engine. - + Arama motoru güncellenemedi. @@ -5254,7 +5265,7 @@ Do you want to continue? Private Window - + Gizli pencere @@ -5262,7 +5273,7 @@ Do you want to continue? Unknown - + Bilinmeyen @@ -5270,42 +5281,42 @@ Do you want to continue? Document: %p% - + Belge: %%p Document: ? - + Belge: ? Total: ? - + Toplam: ? Total: %p% - + Toplam: %%p Total: %1 - + Toplam: %1 Elements: %1/%2 - + Ögeler: %1/%2 Speed: %1 - + Hız: %1 Time: %1 - + Süre: %1 @@ -5313,112 +5324,112 @@ Do you want to continue? Title: - + Başlık: General - + Genel Manual - + El ile Port - + Kapı Protocol - + Protokol Servers - + Sunucular FTP - + FTP SOCKS5 - + SOCKS5 HTTP - + HTTP HTTPS - + HTTPS All - + Tümü Automatic - + Otomatik Path to PAC file: - + PAC dosyası yolu Use system authentication - + Sistem kimlik doğrulamasını kullan Exceptions - + İstisnalar Do not use this proxy for: - + Bu vekili şunun için kullanma: Add - + Ekle Edit - + Düzenle Remove - + Kaldır Example: domain.com, localhost, 127.0.0.1, 192.168.1.0/24 - + Örnek: domain.com, localhost, 127.0.0.1, 192.168.1.0/24 Edit Proxy - + Vekil düzenle Add Proxy - + Vekil ekle @@ -5428,38 +5439,38 @@ Do you want to continue? JavaScript - + JavaScript Disable JavaScript popups - + JavaScript açılır pencerelerini devre dışı bırak Question - + Soru Are you sure that you want to send form data again? - + Form verisini yeniden göndermek istediğinize emin misiniz? Do you want to resend data? - + Veriyi yeniden göndermek istiyor musunuz? Do not show this message again - + Bu iletiyi yeniden gösterme @@ -5467,12 +5478,12 @@ Do you want to continue? Blink Backend (experimental) - + Blink arka ucu (deneysel) Backend utilizing QtWebEngine module - + Arka uç QtWebEngine modülünü kullanıyor @@ -5480,22 +5491,22 @@ Do you want to continue? file - + dosya Failed to save image: %1 - + Görsel kaydedilemedi: %1 Blank Page - + Boş sayfa (Untitled) - + (Başlıksız) @@ -5503,17 +5514,17 @@ Do you want to continue? Network error %1 - + Ağ hatası %1 Unknown command - + Bilinmeyen komut Directory Contents - + Dizin içeriği @@ -5523,17 +5534,17 @@ Do you want to continue? Type - + Tür Size - + Boyut Date - + Tarih @@ -5549,28 +5560,28 @@ Do you want to continue? Receiving data from %1… - + %1 konumundan veri alınıyor... Completed request to %1 - + %1 isteği tamamlandı Waiting for authentication… - + Kimlik doğrulama için bekleniyor... Loading finished - + Yükleme bitti Sending request to %1… - + %1 konumuna istek gönderiliyor... @@ -5580,14 +5591,14 @@ Do you want to continue? JavaScript - + JavaScript Disable JavaScript popups - + JavaScript açılır pencerelerini devre dışı bırak @@ -5600,13 +5611,13 @@ Do you want to continue? Are you sure that you want to send form data again? - + Form verisini yeniden göndermek istediğinize emin misiniz? Do you want to resend data? - + Veriyi yeniden göndermek istiyor musunuz? @@ -5617,38 +5628,39 @@ Do you want to continue? %1 error #%2: %3 - + %1 hata #%2: %3 Request blocked by rule from profile %1:<br> %2 - + İstek %1 profilindeki kural tarafından engellendi:<br> +%2 (Unknown) - + (Bilinmeyen) WebKit error %1 - + WebKit hatası %1 Network error %1 - + Ağ hatası %1 The script on this page appears to have a problem. - + Bu sayfadaki betikte bir sorun var gibi görünüyor. Do you want to stop the script? - + Betiği durdurmak istiyor musunuz? @@ -5657,7 +5669,7 @@ Do you want to continue? Click to load content (%1) handled by plugin from: %2 - + Şu konumdaki eklenti tarafından sağlanan içeriği (%1) yüklemek için tıklayın: %2 @@ -5665,12 +5677,12 @@ Do you want to continue? WebKit Backend (legacy) - + WebKit arka ucu (eski) WebKit Backend - WebKit Arka Ucu + WebKit arka ucu @@ -5693,27 +5705,27 @@ Do you want to continue? file - + dosya Failed to save image: %1 - + Dosya kaydedilemedi: %1 Print Preview - Yazdırma Ön İzlemesi + Yazdırma önizlemesi PNG image (*.png) - + PNG görseli (*.png) JPEG image (*.jpg *.jpeg) - + JPEG görseli (*.jpg *.jpeg) @@ -5731,17 +5743,17 @@ Do you want to continue? Automatic Page Reload - + Otomatik sayfa yeniden yüklemesi minutes - + dakika seconds - + saniye @@ -5749,7 +5761,7 @@ Do you want to continue? Diagnostic Report - + Tanı raporu @@ -5762,12 +5774,12 @@ Do you want to continue? Failed to parse feed file: %1 - + Besleme dosyası ayrıştırılamadı: %1 Failed to parse feed: no valid entries found - + Besleme ayrıştırılamadı: Geçerli girdi bulunamadı @@ -5775,12 +5787,12 @@ Do you want to continue? Save Session - Oturumu Kaydet + Oturumu kaydet Session title: - Oturum Başlığı: + Oturum başlığı: @@ -5820,27 +5832,27 @@ Do you want to overwrite it? Find… - + Bul... Find Next - Sonrakini Bul + Sonrakini bul Find Previous - Öncekini Bul + Öncekini bul Highlight - + Vurgula Case Sensitive - + BÜYÜK/küçük harf duyarlı @@ -5853,91 +5865,91 @@ Do you want to overwrite it? Edit Search Engine - + Arama motorunu düzenle Title: - + Başlık: Change Icon… - + Simgeyi değiştir: Description: - + Açıklama: Keyword: - + Anahtar sözcük: Encoding: - + Kodlama: Form address: - + Form adresi: Update address: - + Adresi güncelle: Results Query - + Sonuçlar sorgusu Address: - + Adres: Query: - + Sorgu: POST method - + POST yöntemi Data encoding (enctype): - + Veri kodlama (enctype): Suggestions Query - + Öneriler sorgusu Placeholders - + Yer tutucu Search Terms - + Arama terimleri Language - + Dil @@ -5945,12 +5957,12 @@ Do you want to overwrite it? Manage Search Engines… - + Arama motorlarını yönet... Unknown - + Bilinmeyen @@ -5961,42 +5973,42 @@ Do you want to overwrite it? Search using %1 - + %1 kullanarak ara Add %1 - + %1 ekle (untitled) - + (başlıksız) Error - + Hata Failed to add search engine. - + Arama motoru eklenemedi. Select Search Engine - + Arama motoru seç Add Search Engine… - + Arama motoru ekle... Search - + Ara @@ -6004,17 +6016,17 @@ Do you want to overwrite it? Select Password - + Parola seç Select set of credentials: - + Kimlik doğrulama veri kümesi seç Remove - + Kaldır @@ -6026,22 +6038,22 @@ Do you want to overwrite it? Value - + Değer Set #%1 - + Küme #%1 Question - + Soru Do you really want to remove this credentials set? - + Bu kimlik doğrulama veri kümesini kaldırmak istediğinize emin misiniz? @@ -6049,12 +6061,12 @@ Do you want to overwrite it? Session - + Oturum Trash - + Çöp @@ -6062,7 +6074,7 @@ Do you want to overwrite it? Default - Varsayılan + Öntanımlı @@ -6073,12 +6085,12 @@ Do you want to overwrite it? Start Page - + Başlangıç sayfası (Unknown) - + (Bilinmeyen) @@ -6086,7 +6098,7 @@ Do you want to overwrite it? Sessions Manager - Oturum Yöneticisi + Oturum yöneticisi @@ -6130,12 +6142,12 @@ Do you want to overwrite it? %n window(s) (%1) - + %n pencere (%1)%n pencere (%1) %n tab(s) - + %n sekme%n sekme @@ -6175,17 +6187,17 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Yes - + Evet No - + Hayır Invalid - + Geçersiz @@ -6194,7 +6206,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Clear - + Temizle @@ -6202,17 +6214,17 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Panels - + Paneller Add web panel - + Web paneli ekle Add Web Panel… - + Web paneli ekle... @@ -6220,7 +6232,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Failed to save file: %1 - + Dosya kaydedilemedi: %1 @@ -6230,7 +6242,7 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? Failed to save file. - + Dosya kaydedilemedi. @@ -6241,22 +6253,23 @@ Bu oturumu yeniden yüklemek istediğinize emin misiniz? The document has been modified. Do you want to save your changes or discard them? - + Belge değiştirildi. +Değişikliklerinizi kaydetmek mi atmak mı istersiniz? Show Line Numbers - + Satır numaralarını göster Source Viewer: %1 - + Kaynak görüntüleyici: %1 Source Viewer - + Kaynak görüntüleyici @@ -6265,7 +6278,7 @@ Do you want to save your changes or discard them? Add Tile… - + Döşeme ekle... @@ -6273,22 +6286,22 @@ Do you want to save your changes or discard them? Start Page Preferences - + Başlangıç sayfası tercihleri Use custom background image - + Özel arka plan görseli kullan Scaling mode: - + Ölçekleme kipi: Image path: - + Görsel yolu: @@ -6298,57 +6311,57 @@ Do you want to save your changes or discard them? Columns per row: - + Satır başına sütun sayısı Automatic - + Otomatik Zoom level: - + Yakınlaştırma düzeyi: % - + % Show search field - + Arama alanını göster Show tile to add new entries - + Yeni girdi eklemek için döşeme göster Images (*.png *.jpg *.bmp *.gif *.svg *.svgz) - + Görseller (*.png *.jpg *.bmp *.gif *.svg *.svgz) Best fit - + En uygun sığdırma Center - + Merkez Stretch - + Çekiştir Tile - + Döşe @@ -6356,12 +6369,12 @@ Do you want to save your changes or discard them? Add Tile - + Döşeme ekle Edit… - + Düzenle... @@ -6376,12 +6389,12 @@ Do you want to save your changes or discard them? Configure… - + Yapılandır... Add Tile… - + Döşeme ekle... @@ -6390,12 +6403,12 @@ Do you want to save your changes or discard them? Welcome to Otter - Otter'e Hoş geldiniz + Otter'a hoş geldiniz Continue session - Oturuma devam et + Oturumu sürdür @@ -6405,7 +6418,7 @@ Do you want to save your changes or discard them? Begin with start page - + Başlangıç sayfasıyla başla @@ -6415,7 +6428,7 @@ Do you want to save your changes or discard them? Enable plugins - + Eklentileri etkinleştir @@ -6432,12 +6445,13 @@ Do you want to save your changes or discard them? Title: %1 Address: %2 - + Başlık: %1 +Adres: %2 Default - Varsayılan + Öntanımlı @@ -6445,17 +6459,17 @@ Address: %2 Switch Tabs Using the Mouse Wheel - + Sekmeleri fare tekerleğini kullanarak gezin Show Thumbnails in Tabs - + Sekmelerde ufak görselleri göster Arrange - + Tertiple @@ -6463,42 +6477,42 @@ Address: %2 Arrange - + Tertiple Switch Tabs Using the Mouse Wheel - + Sekmeleri fare tekerleğini kullanarak gezin Show Thumbnails in Tabs - + Sekmelerde ufak görselleri göster Customize - + Özelleştir Question - + Soru You are about to open %n URL(s). - + %n URL'yi açmak üzeresiniz.%n URL'yi açmak üzeresiniz. Do you want to continue? - + Sürdürmek istiyor musunuz? Do not show this message again - + Bu iletiyi yeniden gösterme @@ -6506,7 +6520,7 @@ Address: %2 Close Tab - + Sekmeyi kapat @@ -6514,27 +6528,27 @@ Address: %2 Search… - + Ara… Tab History - + Sekme geçmişi Title: %1 - + Başlık: %1 Address: %1 - + Adres: %1 Date: %1 - + Tarih: %1 @@ -6545,22 +6559,22 @@ Address: %2 <empty> - + <empty> Copy - + Kopyala Copy Link Location - + Bağlantı konumunu kopyala Select All - + Tümünü seç @@ -6569,7 +6583,7 @@ Address: %2 Edit Toolbar - + Araç çubuğunu düzenle @@ -6579,380 +6593,380 @@ Address: %2 Entries - + Girdiler Edit… - + Düzenle… Current entries: - + Geçerli girdiler: Available entries: - + Kullanılabilir girdiler: Filter… - + Süzgeç… Add Bookmark - + Yer imi ekle Bookmarks folder: - + Yer imi klasörü: New… - + Yeni… Options - + Seçenekler Visibility: - + Görünürlük: Visibility in full screen mode: - + Tam ekran kipinde görünürlük: Button style: - + Düğme biçemi: Icon size: - + Simge boyutu: Auto - + Otomatik px - + pik Maximum size of item: - + Ögenin en büyük boyutu: No limit - + Limitsiz Display toggle button - + Aç/kapa düğmesini görüntüle Edit Bookmarks Bar - + Yer imi çubuğunu düzenle Bookmarks Bar - + Yer imi çubuğu Edit Sidebar - + Kenar çubuğunu düzenle Sidebar - + Kenar çubuğu Toolbar - + Araç çubuğu Always visible - + Her zaman görünür Always hidden - + Her zaman gizli Visible only when needed - + Yalnızca gerektiğinde görünür Visible only when cursor is close to screen edge - + Yalnızca imleç ekran kıyısına geldiğinde görünür Follow style - + Biçemi izle Icon only - + Yalnızca simge Text only - + Yalnızca metin Text beside icon - + Simge yanında metin Text under icon - + Simge altında metin Edit Entry - + Girdiyi düzenle All - + Tümü Unknown - + Bilinmeyen Show search engine: - + Arama motorunu göster: Show search button: - + Arama düğmesini göster: Global - + Global Tab - + Sekme Text: - + Metin: Option: - + Seçenek: Scope: - + Kapsam: Blocked Elements: {amount} - + Engelli ögeler: {amount} Menu - + Menü Downloads - + İndirmeler Icon: - + Simge: --- separator --- - + --- ayırıcı --- --- spacer --- - + --- boşluk --- Arbitrary List of Actions - + Eylemlerin gelişigüzel listesi List of Closed Tabs and Windows - + Kapatılan sekmelerin ve pencerelerin listesi Address Field - + Adres alanı Configuration Widget (%1) - + Yapılandırma araç takımı (%1) Configuration Widget - + Yapılandırma araç takımı Content Blocking Details - + İçerik engelleme ayrıntıları Error Console - + Hata konsolu Menu Bar - + Menü çubuğu Menu Button - + Menü düğmesi Sidebar Panel Chooser - + Kenar çubuğu panel seçicisi Private Window Indicator - + Gizli pencere belirticisi Progress Information (Document Progress) - + İlerleme bilgisi (Belge durumu) Progress Information (Total Progress) - + İlerleme bilgisi (Toplam ilerleme) Progress Information (Loaded Elements) - + İlerleme bilgisi (Yüklenen ögeler) Progress Information (Loading Speed) - + İlerleme bilgisi (Yükleme hızı) Progress Information (Elapsed Time) - + İlerleme bilgisi (Geçilen süre) Progress Information (Status Message) - + İlerleme bilgisi (Durum iletisi) Search Field (%1) - + Arama alanı (%1) Search Field - + Arama alanı Window Resize Handle - + Pencere boyutlandırma tutacağı Status Message Field - + Durum iletisi alanı Tab Bar - + Sekme çubuğu Downloads Progress Information - + İndirme ilerleme bilgisi Zoom Slider - + Yakınlaştırma kaydıracağı Invalid Bookmark - + Geçersiz yer imi Invalid Entry - + Geçersiz girdi @@ -6961,12 +6975,12 @@ Address: %2 Toggle Visibility - + Görünürlüğü aç/kapa Customize - + Özelleştir @@ -6976,17 +6990,17 @@ Address: %2 Configure… - + Yapılandır… Reset to Defaults… - + Öntanımlılara sıfırla… Remove… - + Kaldır… @@ -6994,32 +7008,32 @@ Address: %2 Reset Toolbar - + Araç çubuğunu sıfırla Do you really want to reset this toolbar to default configuration? - + Bu araç çubuğunu öntanımlı yapılandırmaya sıfırlamak istediğinize emin misiniz? Remove Toolbar - + Araç çubuğunu kaldır Do you really want to remove this toolbar? - + Bu araç çubuğunu kaldırmak istediğinize emin misiniz? Reset Toolbars - + Araç çubuklarını sıfırla Do you really want to reset all toolbars to default configuration? - + Tüm araç çubuklarını öntanımlı yapılandırmaya sıfırlamak istediğinize emin misiniz? @@ -7027,7 +7041,7 @@ Address: %2 Menu - + Menü @@ -7036,7 +7050,7 @@ Address: %2 file - + dosya @@ -7060,44 +7074,44 @@ Do you want to overwrite it? From: - + Kimden: Size: - + Boyut: %1 (download completed) - + %1 (indirme bitti) %1 (%2% downloaded) - + %1 (%%2 indirildi) Unknown - + Bilinmeyen Redownload - + Yeniden indir Open Folder - + Klasörü aç Stop - + Durdur @@ -7106,7 +7120,11 @@ Target: %2 Size: %3 Downloaded: %4 Progress: %5</div> - + <div style="white-space:pre;">Kaynak: %1 +Hedef: %2 +Boyut: %3 +İndirilen: %4 +İlerleme: %5</div> @@ -7114,7 +7132,7 @@ Progress: %5</div> Opening unknown file - + Bilinmeyen dosya açılıyor @@ -7134,42 +7152,42 @@ Progress: %5</div> From: - + Kimden: Open with: - + Şununla aç: Remember choice for this file type - + Bu dosya türü için seçimi hatırla unknown file - + bilinmeyen dosya Opening %1 - + %1 açılıyor unknown - + bilinmeyen %1 (download completed) - + %1 (indirme bitti) %1 (%2% downloaded) - + %1 (%%2 indirildi) @@ -7177,7 +7195,7 @@ Progress: %5</div> Quick Download… - + Hızlı indirme… @@ -7221,7 +7239,7 @@ Progress: %5</div> Status - + Durum @@ -7274,7 +7292,8 @@ Progress: %5</div> This file is still being downloaded. Do you really want to remove it? - + Bu dosya hâlâ indiriliyor. +Kaldırmak istediğinize emin misiniz? @@ -7283,7 +7302,11 @@ Target: %2 Size: %3 Downloaded: %4 Progress: %5</div> - + <div style="white-space:pre;">Kaynak: %1 +Hedef: %2 +Boyut: %3 +İndirilen: %4 +İlerleme: %5</div> @@ -7306,7 +7329,7 @@ Progress: %5</div> Copy Transfer Information - İndirme Bilgilerini Kopyala + Aktarma bilgisini kopyala @@ -7316,7 +7339,7 @@ Progress: %5</div> Clear Finished Transfers - Tamamlanan İndirmeleri Temizle + Biten aktarmaları temizle @@ -7330,7 +7353,7 @@ Progress: %5</div> Download completed: %1 - İndirme tamamlandı: + İndirme bitti: %1 @@ -7345,7 +7368,7 @@ Progress: %5</div> Show all Downloads - Tüm İndirmeleri Göster + Tüm indirmeleri göster @@ -7354,7 +7377,7 @@ Progress: %5</div> Show Windows - Pencereleri Göster + Pencereleri göster @@ -7365,7 +7388,7 @@ Progress: %5</div> Hide Windows - Pencereleri Gizle + Pencereleri gizle @@ -7373,7 +7396,7 @@ Progress: %5</div> Check for Updates - Güncellemeleri Denetle + Güncellemeleri denetle @@ -7408,43 +7431,44 @@ Progress: %5</div> Version %1 from %2 channel - + %2 kanalından sürüm %1 Some of the updates do not contain packages for your platform. Try to check for updates later or visit details page for more info. - + Bazı güncellemeler platformunuz için paketler içermiyor. Daha sonra güncellemeleri denetleyin veya bilgi için ayrıntılar sayfasını ziyaret edin. Downloading: - + İndiriliyor: Download finished! - + İndirme bitti! Install - + Yükle New version of Otter Browser is ready to install. Click Install button to restart browser and install the update or close this dialog to install the update during next browser restart. - + Otter Tarayıcı'nın yeni sürümü yüklenmeye hazır. +Tarayıcıyı yeniden başlatıp güncellemeyi yüklemek için Yükle düğmesine tıklayın veya bir sonraki yeniden başlatmada yüklemek için bu iletişim kutusunu kapatın. Download failed! - + İndirme başarısız! Check Error Console for more information. - + Daha fazla bilgi için hata konsolunu denetleyin. @@ -7452,47 +7476,47 @@ Click Install button to restart browser and install the update or close this dia Title: - + Başlık: Value: - + Değer: Preview - + Önizleme Edit User Agent - + Kullanıcı kimliğini düzenle Add User Agent - + Kullanıcı kimliği ekle Placeholders - + Yer tutucular Platform - + Platform Engine Version - + İşletke sürümü Application Version - + Uygulama sürümü @@ -7500,42 +7524,42 @@ Click Install button to restart browser and install the update or close this dia Question - + Soru This tab has crashed. - + Bu sekme çakıldı. Do you want to try to reload it? - + Yeniden yüklemeyi denemek ister misiniz? Do not show this message again - + Bu iletiyi yeniden gösterme Failed to load requested web backend: %1 - + İstenen web arka ucu yüklenemedi: %1 Select User Agent - + Kullanıcı kimliği seç Enter User Agent: - + Kullanıcı kimliği gir: Start Page - + Başlangıç sayfası @@ -7543,77 +7567,77 @@ Click Install button to restart browser and install the update or close this dia Title: %1 - + Başlık: %1 Address: %1 - + Adres: %1 JavaScript - + JavaScript Webpage wants to close this tab, do you want to allow to close it? - + Web sayfası bu sekmeyi kapatmak istiyor, izin verilsin mi? Do not show this message again - + Bu iletiyi yeniden gösterme HTML file (*.html *.htm) - + HTML dosyası (*.html *.htm) HTML file with all resources (*.html *.htm) - + Tüm kaynaklarıyla birlikte HTML dosyası (*.htm, *.html) Web archive (*.mht) - + Web arşivi (*.mht) PDF document (*.pdf) - + PDF belgesi (*.pdf) Open Image in New Background Tab (%1) - + Görseli yeni arka plan sekmesinde aç (%1) Open Image in New Tab (%1) - + Görseli yeni sekmede aç (%1) Playback Rate: %1x - + Oynatma hızı: %1x Page Default - + Sayfa öntanımlısı Never Reload - + Hiçbir zaman yeniden yükleme Reload Every: %n second(s) - + Her %n saniyede yeniden yükleHer %n saniyede yeniden yükle @@ -7621,220 +7645,220 @@ Click Install button to restart browser and install the update or close this dia General - + Genel Information - + Bilgi Address: - + Adres: Encoding: - + Kodlama: Size: - + Boyut: Elements: - + Ögeler: Download date: - + İndirme tarihi: Title: - + Başlık: Permissions - + İzinler Preferences - + Tercihler Details… - + Ayrıntılar… Set cookies: - + Çerezleri ayarla: Set third-party cookies: - + Üçüncü parti çerezleri ayarla: Show notifications: - + Bildirimleri göster: Access your location: - + Konumunuza erişsin: Load plugins: - + Eklentileri yükle: Load images: - + Görselleri yükle: Use JavaScript: - + JavaScript kullan: Show pop-up windows: - + Açılır pencereleri göster: Enter full screen mode: - + Tam ekran kipine gir: Security - + Güvenlik Certificate - + Sertifika Issued to: - + Verilen: Issued by: - + Veren: Issued on: - + Veriliş tarihi: Expires on: - + Son kullanım tarihi: Cipher - + Şifreleme Protocol: - + Protokol: Authentication method: - + Kimlik doğrulama yöntemi: Encryption method: - + Şifreleme yöntemi: Key exchange method: - + Anahtar değişim yöntemi: SSL Errors - + SSL hataları (unknown) - + (bilinmeyen) This website was marked as fraud. - + Bu web sitesinin sahtekarlık yaptığı tespit edildi. Your connection with this website is not private. - + Bu web sitesine olan bağlantınız gizli değil. Your connection with this website is private. - + Bu web sitesine olan bağlantınız gizli. You are viewing content from your local filesystem. - + Yerel dosya sisteminizdeki içeriği görmektesiniz. You are viewing safe page from Otter Browser. - + Otter Tarayıcı'nın güvenli sayfasını görmektesiniz. No information. - + Bilgi yok. unknown - + bilinmeyen %1 (%n blocked) - + %1 (%n engellendi)%1 (%n engellendi) Only existing - + Yalnızca var olan Only read existing - + Yalnızca var olanı oku @@ -7847,7 +7871,7 @@ Click Install button to restart browser and install the update or close this dia Never - + Hiçbir zaman @@ -7860,51 +7884,51 @@ Click Install button to restart browser and install the update or close this dia Always - + Her zaman On demand - + Talebe bağlı Only cached - + Yalnızca önbelleklenen Always ask - + Her zaman sor Always (open in backgound) - + Her zaman (arka planda aç) Ask - + Sor Error Message - + Hata iletisi URL - + URL Information for %1 - + %1 için bilgi @@ -7912,12 +7936,12 @@ Click Install button to restart browser and install the update or close this dia Website Preferences - + Web sitesi tercihleri Website: - + Web sitesi: @@ -7931,32 +7955,32 @@ Click Install button to restart browser and install the update or close this dia Override - + Geçersiz kıl Plugins: - + Eklentiler: Encoding: - + Kodlama: User style sheet: - + Kullanıcı biçem sayfası: Images: - + Görseller: Pop-ups: - + Açılır pencereler: @@ -7966,42 +7990,42 @@ Click Install button to restart browser and install the update or close this dia Keep until: - + Şu zamana değin tut: Remember browsing history - + Tarama geçmişini hatırla Enable cookies - + Çerezleri etkinleştir Accept cookies: - + Çerezleri kabul et: Do Not Track: - + İzleme yapma: Cookies: - + Çerezler: Add… - + Ekle… Properties… - + Özellikler… @@ -8011,42 +8035,42 @@ Click Install button to restart browser and install the update or close this dia Accept third-party cookies: - + Üçüncü parti çerezleri kabul et: Scripting - + Betik yazımı Allow to receive right mouse button clicks - + Sağ fare düğmesini yakalamaya izin ver Allow changing of status field - + Durum alanının değişmesine izin ver Allow to close windows: - + Pencereleri kapatmaya izin ver: Allow script to hide address bar - + Betiğin adres çubuğunu gizlemesine izin ver Allow moving and resizing of windows - + Pencerelerin taşınmasına ve yeniden boyutlandırılmasına izin ve Enable JavaScript - + JavaScript'i etkinleştir @@ -8056,7 +8080,7 @@ Click Install button to restart browser and install the update or close this dia Allow to enter full screen mode: - + Tam ekran kipine girmeye izin ver @@ -8066,89 +8090,89 @@ Click Install button to restart browser and install the update or close this dia Send referrer information - + Başvuran bilgisini gönder Proxy: - + Vekil: User Agent: - + Kullanıcı kimliği: Content Blocking - İçerik Engelleme + İçerik engelleme Profiles: - + Profiller: Enable custom rules - + Özel kuralları etkinleştir Auto Detect - + Kendiliğinden algıla Ask - + Sor Block all - + Tümünü engelle Open all - + Tümünü aç Open all in background - + Tümünü arka planda aç All images - + Tüm görseller Cached images - + Önbelleklenmiş görseller No images - + Görsel yok Enabled - + Etkin On demand - + Talebe bağlı Disabled - + Devre dışı @@ -8156,61 +8180,61 @@ Click Install button to restart browser and install the update or close this dia Always - + Her zaman Never - + Hiçbir zaman Inform websites that I do not want to be tracked - + Web sayfalarına izlenmek istemediğimi bildir Inform websites that I allow tracking - + Web sayfalarına izlenmeye izin verdiğimi bildir Do not inform websites about my preference - + Web sayfalarına tercihim hakkında bilgi verme Only existing - + Yalnızca var olan Only read existing - + Yalnızca var olanı oku Expires - Sona Erme + Son kullanım tarihi: Current session is closed - + Geçerli oturum kapatıldı Always ask - + Her zaman sor Domain - + Alan adı @@ -8222,7 +8246,7 @@ Click Install button to restart browser and install the update or close this dia Path - + Yol @@ -8234,17 +8258,17 @@ Click Install button to restart browser and install the update or close this dia Expiration Date - + Son kullanım tarihi: this session only - + yalnızca bu oturum Style sheets (*.css) - + Biçem sayfaları (*.css) @@ -8252,12 +8276,12 @@ Click Install button to restart browser and install the update or close this dia Search… - + Ara… Windows and Tabs - + Pencereler ve sekmeler @@ -8265,43 +8289,43 @@ Click Install button to restart browser and install the update or close this dia New tab - + Yeni sekme New private tab - + Yeni gizli sekme New window - + Yeni pencere New private window - + Yeni gizli pencere Failed to run command "%1", file is not executable - + "%1" komutu çalıştırılamadı, dosya çalıştırılabilir değil. Failed to run command "%1" (arguments: "%2") - + "%1" komutu çalıştırılamadı (argümanlar: "%2") No valid suffix for given MIME type: %1 - + MIME türü için geçerli bir ek verilmedi: %1 Failed to load a valid application path for MIME type %1: %2 - + %1 MIME türü için geçerli bir uygulama yolu yüklenemedi: %2 @@ -8310,7 +8334,7 @@ Click Install button to restart browser and install the update or close this dia Arrange - + Tertiple @@ -8319,158 +8343,158 @@ Click Install button to restart browser and install the update or close this dia Zoom %1% - + Yakınlaştırma %%1 actions Reload Every - + Yeniden yükleme aralığı 1 Minute - + 1 dakika 30 Minutes - + 30 dakika 1 Hour - + 1 saat 2 Hours - + 2 saat 6 Hours - + 6 saat Never - + Hiçbir zaman Custom… - + Özel… Run Macro - + Makro çalıştır Run Arbitrary List of Actions - + Gelişigüzel eylemler listesini çalıştır Set Option - + Seçenek ayarla Set, Reset or Toggle Option - + Seçenek ayarla, sıfırla veya aç/kapa New Tab - Yeni Sekme + Yeni sekme New Private Tab - Yeni Özel Sekme + Yeni gizli sekme New Window - Yeni Pancere + Yeni pencere New Private Window - Yeni Özel Pencere + Yeni gizli pencere Open… - + Aç… Save… - + Kaydet… Clone Tab - + Sekmeyi klonla Peek Tab - + Sekmeye göz at Pin Tab - + Sekmeyi iğnele Detach Tab - + Sekmeyi ayır Maximize - + Büyüt Maximize Tab - + Sekmeyi büyüt Minimize - + Küçült Minimize Tab - + Sekmeyi küçült Restore - + Eski durumuna getir Restore Tab - + Sekmeyi geri getir Stay on Top - + En üstte kal Clear Tab History - + Sekme geçmişini temizle Remove Local Tab History - + Yerel sekme geçmişini kaldır @@ -8478,23 +8502,23 @@ Click Install button to restart browser and install the update or close this dia Purge Tab History - + Sekme geçmişini sil Remove Local and Global Tab History - + Yerel ve global sekme geçmişini kaldır Mute Tab Media - + Sekmede çalan ortamı sessize al Suspend Tab - + Sekmeyi askıya al @@ -8504,22 +8528,22 @@ Click Install button to restart browser and install the update or close this dia Close Other Tabs - + Diğer sekmeleri kapat Close All Private Tabs - + Tüm gizli sekmeleri kapat Close All Private Tabs in Current Window - + Geçerli penceredeki tüm gizli sekmeleri kapat Close Private Tabs and Windows - + Gizli sekmeleri ve pencereleri kapat @@ -8529,52 +8553,52 @@ Click Install button to restart browser and install the update or close this dia Maximize All - + Tümünü büyüt Minimize All - + Tümünü küçült Restore All - + Tümünü geri getir Cascade - + Basamakla Tile - + Döşe Close Window - Pencereyi Kapat + Pencereyi kapat Reopen Previously Closed Window - + Son kapatılan pencereyi yeniden aç Manage Sessions… - + Oturumları yönet… Save Current Session… - + Geçerli oturumu kaydet… Open URL - + URL'yi aç @@ -8596,7 +8620,7 @@ Click Install button to restart browser and install the update or close this dia Open in This Tab - Geçerli Sekmede Aç + Geçerli sekmede aç @@ -8608,7 +8632,7 @@ Click Install button to restart browser and install the update or close this dia Open in New Tab - Yeni Sekmede Aç + Yeni sekmede aç @@ -8620,7 +8644,7 @@ Click Install button to restart browser and install the update or close this dia Open in New Background Tab - Arka Planda Aç + Arka planda aç @@ -8631,7 +8655,7 @@ Click Install button to restart browser and install the update or close this dia Open in New Window - Yeni Pencerede Aç + Yeni pencerede aç @@ -8642,160 +8666,160 @@ Click Install button to restart browser and install the update or close this dia Open in New Background Window - Arka Plandaki Pencerede Aç + Yeni arka plan penceresinde aç Open in New Private Tab - + Yeni gizli sekmede aç Open in New Private Background Tab - + Yeni gizli arka plan sekmesinde aç Open in New Private Window - + Yeni gizli pencerede aç Open in New Private Background Window - + Yeni gizli arka plan penceresinde aç Copy Link to Clipboard - Bağlantıyı Kopyala + Bağlantıyı kopyala Bookmark Link… - + Bağlantıyı yer imi yap… Save Link Target As… - + Hedefteki bağlantıyı kaydet… Save to Downloads - İndirmelere Kaydet + İndirmelere kaydet Go to This Address - Adrese Git + Adrese git Open Frame - + Çerçeveyi aç Open Frame in This Tab - Çerçeveyi Bu Sekmede Aç + Çerçeveyi bu sekmede aç Open Frame in New Tab - Çerçeveyi Yeni Sekmede Aç + Çerçeveyi yeni sekmede aç Open Frame in New Background Tab - Çerçeveyi Arka Planda Aç + Çerçeveyi yeni arka plan sekmesinde aç Copy Frame Link to Clipboard - Çerçeve Bağlantısını Kopyala + Çerçeve bağlantısını panoya kopyala Reload - Yeniden Yükle + Yeniden yükle Reload Frame - Çeçeveyi yeniden Yükle + Çerçeveyi yeniden yükle View Frame Source - + Çerçeve kaynağını görüntüle Open Image - + Görseli aç Open Image In New Tab - + Görseli yeni sekmede aç Open Image in New Background Tab - + Görseli yeni arka plan sekmesinde aç Save Image… - + Görseli kaydet… Copy Image to Clipboard - Resmi Kopyala + Görseli panoya kopyala Copy Image Link to Clipboard - Resmin Adresini Kopyala + Görsel adresini panoya kopyala Reload Image - Resmi Yeniden Yükle + Görseli yeniden yükle Image Properties… - + Görsel özellikleri… Save Media… - + Ortamı kaydet… Copy Media Link to Clipboard - Medya Bağlantısını Kopyala... + Ortam bağlantısını panoya kopyala Show Controls - Kontrolleri Göster + Denetimleri göster Show Media Controls - + Ortam denetimlerini göster @@ -8805,7 +8829,7 @@ Click Install button to restart browser and install the update or close this dia Playback Looping - + Oynatma döngüsü @@ -8816,7 +8840,7 @@ Click Install button to restart browser and install the update or close this dia Play Media - + Ortamı oynat @@ -8827,27 +8851,27 @@ Click Install button to restart browser and install the update or close this dia Mute Media - + Ortamı sessize al Playback Rate - + Oynatma hızı Log In - + Giriş yap Go - + Git Go to URL - + URL'ye git @@ -8857,7 +8881,7 @@ Click Install button to restart browser and install the update or close this dia Go Back - + Geri git @@ -8867,28 +8891,28 @@ Click Install button to restart browser and install the update or close this dia Go Forward - + İleri git Go to History Entry - + Geçmiş girdisine git Go to Page or Search - + Sayfaya git veya ara Go to Home Page - + Ana sayfaya git Go to Parent Directory - + Üst dizine git @@ -8898,7 +8922,7 @@ Click Install button to restart browser and install the update or close this dia Rewind History - + Geçmişi geri sar @@ -8908,7 +8932,7 @@ Click Install button to restart browser and install the update or close this dia Remove History Entry - + Geçmiş girdisini kaldır @@ -8918,37 +8942,37 @@ Click Install button to restart browser and install the update or close this dia Stop Scheduled Page Reload - + Zamanlanmış sayfa yeniden yüklenmesini durdur Stop All Pages - + Tüm sayfaları durdur Reload or Stop - + Yeniden yükle veya durdur Reload and Bypass Cache - + Yeniden yükle ve önbelleği geç Reload All Tabs - + Tüm sekmeleri yeniden yükle Schedule Page Reload - + Sayfa yeniden yüklenmesini zamanla Show Context Menu - + Bağlam menüsünü göster @@ -8973,17 +8997,17 @@ Click Install button to restart browser and install the update or close this dia Copy as Plain Text - Düz Metin Olarak Kopyala + Düz metin olarak kopyala Copy Address - Adresi Kopyala + Adresi kopyala Copy to Note - + Nota kopyala @@ -8993,7 +9017,7 @@ Click Install button to restart browser and install the update or close this dia Paste and Go - Yapıştır ve Git + Yapıştır ve git @@ -9003,42 +9027,42 @@ Click Install button to restart browser and install the update or close this dia Select All - Tümünü Seç + Tümünü seç Deselect - + Seçimi kaldır Clear All - Tümünü Temizle + Tümünü temizle Check Spelling - Yazım Denetimi + Yazım denetimi Find… - + Bul… Find Next - Sonrakini Bul + Sonrakini bul Find Previous - Öncekini Bul + Öncekini bul Quick Find - Hızlı Bul + Hızlı bul @@ -9049,7 +9073,7 @@ Click Install button to restart browser and install the update or close this dia Create Search… - + Arama oluştur… @@ -9064,137 +9088,137 @@ Click Install button to restart browser and install the update or close this dia Zoom Original - Normal Boyut + Normal boyut Go to Start of the Page - + Sayfanın başına git Go to the End of the Page - + Sayfanın sonuna git Page Up - + Sayfada yukarı git Page Down - + Sayfada aşağıya git Page Left - + Sayfada sola git Page Right - + Sayfada sağa git Enter Drag Scroll Mode - + Sürüklemeli kaydırma kipine gir Enter Move Scroll Mode - + Taşımalı kaydırma kipine gir Exit Scroll Mode - + Kaydırma kipinden çık Print… - + Yazdır… Print Preview - Yazdırma Ön İzlemesi + Yazdırma önizlemesi Take Screenshot - + Ekran görüntüsü al Activate Address Field - Adres Alanını Aktifleştir + Adres alanını etkinleştir Activate Search Field - + Arama alanını etkinleştir Activate Content - + İçeriği etkinleştir Go to Previously Used Tab - + Son kullanılan sekmeye git Go to Least Recently Used Tab - + Son en az kullanılan sekmeye git Activate Tab - + Sekmeyi etkinleştir Go to Tab on Left - Soldaki Sekmeye Git + Soldaki sekmeye git Go to Tab on Right - Sağdaki Sekmeye Git + Sağdaki sekmeye git Activate Window - + Pencereyi etkinleştir Manage Bookmarks - + Yer imlerini yönet Bookmark Page… - + Sayfayı yer imlerine ekle… Bookmark All Open Pages - + Tüm açık sayfaları yer imlerine ekle Open Bookmark - + Yer imi aç Quick Bookmark Access - Hızlı Yer İmleri Erişimi + Hızlı yer imleri erişimi @@ -9204,200 +9228,200 @@ Click Install button to restart browser and install the update or close this dia Load All Plugins on the Page - + Sayfadaki tüm eklentileri yükle Enable JavaScript - + JavaScript'i etkinleştir Enable Referrer - + Başvuranı etkinleştir View Source - Kaynağı Göster + Kaynağı göster Inspect Page - Sayfayı Denetle + Sayfayı denetle Inspect Element… - + Ögeyi denetle… Work Offline - Çevrimdışı Çalış + Çevrimdışı çalış Full Screen - Tam Ekran + Tam ekran Show Tab Switcher - + Sekme değiştiricisini göster Show Toolbar - + Araç çubuğunu göster Show Menubar - Menü Çubuğunu Göster + Menü çubuğunu göster Show Tabbar - + Sekme çubuğunu göster Show Sidebar - Yan Paneli Göster + Kenar çubuğunu göster Show Error Console - + Hata konsolunu göster Lock Toolbars - + Araç çubuklarını kilitle Reset to Defaults… - + Öntanımlılara sıfırla… Reset Toolbars to Defaults… - + Araç çubuklarını öntanımlılara sıfırla… Show Panel - + Paneli göster Show Specified Panel in Sidebar - + Belirtilen paneli kenar çubuğunda göster Open Panel as Tab - + Paneli sekme olarak aç Open Curent Sidebar Panel as Tab - + Geçerli kenar çubuğu panelini sekme olarak aç Content Blocking… - + İçerik engelleme… View History - Geçmişi Göster + Geçmişi göster Clear History… - + Geçmişi temizle… Addons - + Eklentiler Notes - + Notlar Passwords - + Parolalar Downloads - + İndirmeler Preferences… - + Tercihleer… Website Preferences… - + Web sayfası tercihleri… Quick Preferences - + Hızlı tercihler Reset Options - + Seçenekleri sıfırla Website Information… - + Web sitesi bilgisi… Website Certificate Information… - + Web sitesi sertifika bilgisi… Switch Application Language… - + Uygulama dilini değiştir… Check for Updates… - + Güncellemeleri denetle… Diagnostic Report… - + Tanı raporu… About Otter… - + Otter hakkında… About Qt… - + Qt hakkında… @@ -9407,77 +9431,77 @@ Click Install button to restart browser and install the update or close this dia Set %1 - + %1 ayarla Set %1 for %2 - + %2 için %1 ayarla Reset %1 - + %1 sıfırla Reset %1 for %2 - + %2 için %1 sıfırla Toggle %1 - + %1 aç/kapa Toggle %1 for %2 - + %2 için %1 aç/kapa Menu Bar - + Menü çubuğu Bookmarks Bar - + Yer imleri çubuğu Tab Bar - + Sekme çubuğu Address Bar - + Adres çubuğu Navigation Bar - + Dolaşım çubuğu Progress Bar - + İlerleme çubuğu Sidebar - + Kenar çubuğu Status Bar - + Durum çubuğu Error Console - + Hata konsolu @@ -9490,7 +9514,7 @@ Click Install button to restart browser and install the update or close this dia Transfers - Transferler + Aktarmalar @@ -9502,27 +9526,27 @@ Click Install button to restart browser and install the update or close this dia Remove Bookmark - Yer İmini Sil + Yer imini sil Remove Cookie - + Çerez kaldır Update - + Güncelle Copy address of source page - + Kaynak sayfanın adresini kopyala Close Panel - + Paneli kapat @@ -9532,7 +9556,7 @@ Click Install button to restart browser and install the update or close this dia Edit - Düzenle + Düzen @@ -9552,92 +9576,92 @@ Click Install button to restart browser and install the update or close this dia Page - + Sayfa Print - + Yazdır Settings - + Ayarlar Frame - + Çerçeve Character Encoding - Karakter Kodlaması + Karakter kodlaması Closed Tabs and Windows - + Kapatılan sekmeler ve pencereler Dictionaries - + Sözlükler Import and Export - Al ve Ver + İçe/Dışa aktar Import Opera Bookmarks… - + Opera yer imlerini içe aktar… Import HTML Bookmarks… - + HTML yer imlerini içe aktar… Import OPML Feeds… - + OPML beslemelerini içe aktar… Import Opera Notes… - + Opera notlarını içe aktar… Import Opera Search Engines… - + Opera arama motorlarını içe aktar… Import Opera Session… - + Opera oturumunu içe aktar… Insert Note - + Not ekle Open with - + Şununla aç: Proxy - + Vekil Search Using - Bununla Ara + Şununla ara: @@ -9647,333 +9671,333 @@ Click Install button to restart browser and install the update or close this dia Style - + Biçem Toolbars - + Araç çubukları User Agent - Kullanıcı Ajanı + Kullanıcı kimliği Validate Using - + Şunu kullanarak doğrula: Tabs and Windows - + Sekmeler ve pencereler Keep Cookie Until - + Şu tarihe kadar çerezleri tut: Accept Cookies - + Çerezleri kabul et Accept Third-party Cookies - + Üçüncü parti çerezleri kabul et Geolocation - + Konum belirtme Images - + Görseller Capture Audio - + Ses yakala Capture Video - + Video yakala Playback Audio - + Ses çal Notifications - + Bildirimler Plugins - + Eklentiler Pointer Lock - + İşaretçi kilidi Closing Windows by JavaScript - + JavaScript ile pencere kapatma Pop-Ups - + Açılır pencereler Open All - + Tümünü aç This Folder - + Bu klasör Ask What to Do - + Ne yapılacağını sor Always Allow - + Her zaman izin ver Always Deny - + Her zaman reddet Expires - + Son kullanım tarihi: Current Session is Closed - + Geçerli oturum kapatıldı Always - + Her zaman Only Existing - + Yalnızca var olan Only Read Existing - + Yalnızca var olanı oku Ignore - + Yok say Open in Background - + Arka planda aç Block All - + Tümünü engelle Only Cached - + Yalnızca önbelleklenenler Enabled - + Etkin On Demand - + Talebe bağlı Disabled - + Devre dışı Auto Detect - + Kendiliğinden algıla Clear - + Temizle Default Application - + Öntanımlı uygulama Unknown - + Bilinmeyen Default Style - + Öntanımlı biçem Add New - + Yeni ekle Add Toolbar… - + Araç çubuğu ekle… Add Bookmarks Bar… - + Yer imleri çubuğu ekle… Add Sidebar… - + Kenar çubuğu ekle… Custom User Agent… - + Özel kullanıcı kimliği… (Untitled) - + (Başlıksız) Edit Link Bookmark… - + Yer imi bağlantısını düzenle… Open Image in This Tab - + Görseli bu sekmede aç Open Image in New Tab - + Görseli yeni sekmede aç Open Image in New Window - + Görseli yeni pencerede aç Open Image in New Background Window - + Görseli yeni arka plan penceresinde aç Open Image in New Private Tab - + Görseli yeni gizli sekmede aç Open Image in New Private Background Tab - + Görseli yeni gizli arka plan sekmesinde aç Open Image in New Private Window - + Görseli yeni gizli pencerede aç Open Image in New Private Background Window - + Görseli yeni gizli arka plan penceresinde aç Save Video… - + Videoyu kaydet… Save Audio… - + Sesi kaydet… Copy Video Link to Clipboard - + Video bağlantısını panoya kopyala Copy Audio Link to Clipboard - + Ses bağlantısını panoya kopyala Pause - + Duraklat Unmute - + Sesini aç Unmute Tab Media - + Sekmede çalan ortamın sesini aç Purge History Entry - + Geçmiş girdisini sil Edit Bookmark… - + Yer imi düzenle… Add Bookmark… - + Yer imi ekle… Unpin Tab - + Sekmenin iğnesini kaldır @@ -9986,72 +10010,72 @@ Click Install button to restart browser and install the update or close this dia Addons - + Eklentiler Bookmarks - + Yer imleri Cache - + Önbellek Advanced Configuration - + Gelişmiş yapılandırma Cookies - + Çerezler Feeds - + Beslemeler History - + Geçmiş Links - + Bağlantılar Notes - + Notlar Page Information - + Sayfa bilgisi Passwords - + Parolalar Tab History - + Sekme geçmişi Downloads - + İndirmeler Windows and Tabs - + Pencereler ve sekmeler @@ -10059,34 +10083,34 @@ Click Install button to restart browser and install the update or close this dia Failed to open content blocking profile file: %1 - + İçerik engelleme profil dosyası açılamadı: %1 Failed to update content blocking profile: %1 - + İçerik engelleme profili güncellenemedi: %1 Failed to update content blocking profile: checksum mismatch - + İçerik engelleme profili güncellenemedi: Sağlama toplamı uyuşmazlığı Failed to update content blocking profile, update URL is empty - + İçerik engelleme profili güncellenemedi; güncellenecek URL boş Failed to update content blocking profile, update URL (%1) is invalid - + İçerik engelleme profili güncellenemedi; güncellenecek URL (%1) geçersiz Failed to find User Script file: %1 - + Kullanıcı betik dosyası bulunamadı: %1 @@ -10111,64 +10135,66 @@ Click Install button to restart browser and install the update or close this dia Starts private session - Özel oturumu başlat + Gizli oturumu başlat Forces session chooser dialog - + Oturum seçici iletişim kutusunu zorlar Sets profile and cache paths to directories inside the same directory as that of application binary - Uygulama kütüphanesi amacıyla profil ve ön bellek veri yolunu aynı klasör içerisinde oluştur. + Dizinlere olan profil ve önbellek yollarını uygulama dosyasının içinde bulunduğu klasörle aynı ayarlar Loads URL in new tab - + URL'yi yeni sekmede açar Loads URL in new private tab - + URL'yi yeni gizli sekmede yükler Loads URL in new window - + URL'yi yeni pencerede yükler Loads URL in new private window - + URL'yi yeni gizli pencerede yükler Tells application to avoid writing data to disk - + Uygulamaya diske veri yazmaktan kaçınmasını söyleer Prints out diagnostic report and exits application - + Tanı raporu yazdırır ve uygulamadan çıkar Failed to parse entry of proxy auto-config (PAC): %1 - + Vekil kendiliğinden yapılandırma (PAC) girdisi ayrıştırılamadı: %1 Failed to install update Updater: %1 Script: %2 - + Güncelleme yüklenemedi +Güncelleyici: %1 +Betik: %2 Start Page - + Başlangıç sayfası @@ -10178,47 +10204,47 @@ Script: %2 Unable to check for updates. Invalid URL: %1 - + Güncellemeler denetlenemiyor. Geçersiz URL: %1 Unable to check for updates: %1 - + Güncellemeler denetlenemiyor: %1 Unable to parse version number: %1 - + Sürüm numarası ayrıştırılamadı: %1 Downloaded update script is not valid: %1 - + İndirilen güncelleme betiği geçerli değil: %1 Unable to download update: %1 - + Güncelleme indirilemiyor: %1 Failed to open User Script file: %1 - + Kullanıcı betik dosyası açılamadı: %1 Invalid match rule for User Script: %1 - + Kullanıcı betiği için geçersiz eşleşme kuralı: %1 Failed to locate header of User Script file - + Kullanıcı betik dosyasının üstbilgisi konumlandırılamadı Default - Varsayılan + Öntanımlı @@ -10227,39 +10253,41 @@ Script: %2 Request blocked by rule from profile %1: %2 - + İstek, %1 profilinden bir kural tarafından reddedildi: +%2 (Unknown) - + (Bilinmeyen) Failed to run File Associations Manager, error code: %1 Application ID: %2 - + Dosya ilişkilendirme yöneticisi çalıştırılamadı; hata kodu: %1 +Uygulama numarası: %2 Failed to run File Associations Manager, error code: %1 - + Dosya ilişkilendirme yöneticisi çalıştırılamadı; hata kodu: %1 Failed to register application to system registry: %1, %2 - + Uygulama sistem kayıt defterine kaydedilemedi: %1, %2 Failed to load custom rules: invalid adblock header - + Özel kurallar yüklenemedi: Geçersiz reklam engelleyici üstbilgisi Failed to create a file with custom rules: %1 - + Özel kurallı bir dosya oluşturulamadı: %1 @@ -10267,22 +10295,22 @@ Application ID: %2 Keyboard and Mouse Configuration Profiles - + Klavye ve fare yapılandırma profilleri Options - + Seçenekler Search Engines - + Arama motorları Sessions - + Oturumlar @@ -10290,32 +10318,32 @@ Application ID: %2 Feed Updated - + Besleme güncellendi Feed update was completed - + Besleme güncellemesi tamamlandı Download Completed - + İndirme tamamlandı File download was completed - + Dosya indirmesi tamamlandı Update Available - + Güncelleme kullanılabilir Update is available to be downloaded - + Güncelleme indirilmeye hazır @@ -10324,17 +10352,17 @@ Application ID: %2 System Configuration - + Sistem yapılandırması No Proxy - + Vekilsiz (Untitled) - + (Başlıksız) @@ -10344,7 +10372,7 @@ Application ID: %2 Default User Agent - + Öntanımlı kullanıcı kimliği @@ -10354,7 +10382,7 @@ Application ID: %2 (Untitled) - + (Başlıksız) @@ -10364,27 +10392,27 @@ Application ID: %2 Try Again - + Yeniden deneyin You tried to access the address <a href="%1">%1</a>, which was blocked by content blocker. - + İçerik engelleyici tarafından engellenen <a href="%1">%1</a> adresine erişmeye çalıştınız. The owner of <strong>%1</strong> has configured their page improperly. To protect your information from being stolen, connection to this website was aborted. - + <strong>%1</strong> sahibi, sayfasını düzgünce yapılandırmamış. Bilgilerinizin çalınmasını engellemek için bu web sayfasına olan bağlantı iptal edildi. This web page at <strong>%1</strong> has been reported as a web forgery. To protect your information from being stolen, connection to this website was aborted. - + <strong>%1</strong> konumundaki web sayfasının sahtecilik yaptığı tespit edilmiş. Bilgilerinizin çalınmasını engellemek için bu web sayfasına olan bağlantı iptal edildi. You tried to access the address <a href="%1">%1</a>, which is currently unavailable. Please make sure that the web address (URL) is correctly spelled and punctuated, then try reloading the page. - + Şu anda kullanılamayan <a href="%1">%1</a> adresine erişmeye çalıştınız. Lütfen web adresinin (URL) düzgün yazılmış olduğundan emin olun ve sayfayı yeniden yüklemeyi deneyin. @@ -10399,87 +10427,87 @@ Application ID: %2 Check the address for typing errors. - + Yazım hataları için adresi denetleyin. Make sure your internet connection is active and check whether other applications that rely on the same connection are working. - + İnternet bağlantınızın etkin olduğundan emin olun ve bu bağlantıyı kullanan diğer uygulamaların çalışıp çalışmadığını denetleyin. Check that the setup of any internet security software is correct and does not interfere with ordinary web browsing. - + İnternet güvenliği yazılımınızın ayarlarının doğru olduğundan ve sıradan web taraması ile düzgün çalıştığından emin olun. Try pressing the F12 key on your keyboard and disabling proxy servers, unless you know that you are required to use a proxy to connect to the internet, and then reload the page. - + İnternete bağlanmak için bir vekil sunucuya gereksiniminiz olmadığından emin olun ve klavyenizde F12 düğmesine basarak vekil sunucuları devre dışı bırakın ve sayfayı yeniden yükleyin. Address blocked - + Adres engellendi Connection is insecure - + Bağlantı güvenli değil Connection refused - + Bağlantı reddedildi File not found - + Dosya bulunamadı Fraud attempt - + Sahtekarlık girişimi Server not found - + Sunucu bulunamadı Unsupported address type - + Desteklenmeyen adres türü Network error - + Ağ hatası Advanced - + Gelişmiş Error - + Hata Today at %1 - + Bugün, %1 Yesterday at %1 - + Dün, %1 %1 at %2 - + %1, %2 @@ -10487,60 +10515,61 @@ Application ID: %2 All files (*) - + Tüm dosyalar (*) Open Files - + Dosyalar aç Open File - + Dosya aç %1 files (*.%2) - + %1 dosya (*.%2) Save File - + Dosya kaydet Warning - + Uyarı This path is already used by different download, pick another one. - + Bu yol halihazırda başka bir indirme tarafından kullanılıyor, başka birini seçin. Target path is not writable. Select another one. - + Hedef yol yazılabilir değil. +Başka birini seçin. Go Back - + Geri git Load Blocked Page - + Engelli sayfayı yükle Load Insecure Page - + Güvenli olmayan sayfayı yükle \ No newline at end of file From e6f3a34e0a6872377fc2d01d2523e037c52e4441 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 22 Feb 2022 15:30:11 +0100 Subject: [PATCH 105/107] Update docs --- CHANGELOG | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index d841308c1c..bec2acf0d8 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +1.0.03 (2022-02-22): +- updated QtWebEngine to (silently) breaking upstream changes; +- updated translations; +- some other backports. + 1.0.02 (2020-12-21): - optimized handling of large images for Start Page backgrounds; - improved validation of content blocking profile checksum; From db537b4ebc7621e947142f67cc57282cd5dac860 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Tue, 22 Feb 2022 15:32:30 +0100 Subject: [PATCH 106/107] Update version --- CMakeLists.txt | 2 +- otter-browser.rc | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 8573fc25bd..a505013c33 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -12,7 +12,7 @@ project(otter-browser) set(MAJOR_VERSION "1") set(MINOR_VERSION "0") -set(PATCH_VERSION "02") +set(PATCH_VERSION "03") set(WEEKLY_VERSION "" CACHE STRING "") add_definitions(-DOTTER_VERSION_MAIN="${MAJOR_VERSION}.${MINOR_VERSION}.${PATCH_VERSION}" -DOTTER_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}" -DOTTER_VERSION_CONTEXT=" " -DOTTER_VERSION_WEEKLY=" ") diff --git a/otter-browser.rc b/otter-browser.rc index 116d72164e..8395ec7246 100644 --- a/otter-browser.rc +++ b/otter-browser.rc @@ -4,8 +4,8 @@ IDI_ICON1 ICON DISCARDABLE "resources/icons/otter-browser.ico" IDI_ICON2 ICON DISCARDABLE "resources/icons/otter-browser-file-type.ico" VS_VERSION_INFO VERSIONINFO - FILEVERSION 1,0,0,2 - PRODUCTVERSION 1,0,0,2 + FILEVERSION 1,0,0,3 + PRODUCTVERSION 1,0,0,3 BEGIN BLOCK "StringFileInfo" BEGIN @@ -13,12 +13,12 @@ BEGIN BEGIN VALUE "CompanyName", "Otter Browser Team" VALUE "FileDescription", "Otter Browser" - VALUE "FileVersion", "1.0.02" + VALUE "FileVersion", "1.0.03" VALUE "InternalName", "otter-browser" VALUE "LegalCopyright", "Copyright (C) 2013-2022 Otter Browser Team" VALUE "OriginalFilename", "otter-browser.exe" VALUE "ProductName", "Otter Browser" - VALUE "ProductVersion", "1.0.02" + VALUE "ProductVersion", "1.0.03" END END BLOCK "VarFileInfo" From eb42f60cb7c0c0edb005f5c527a16ec3fc0a4be5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Dutkiewicz?= Date: Wed, 4 May 2022 15:44:45 +0200 Subject: [PATCH 107/107] Drop unfinished (for this version) about:preferences, fixes #1729 --- CMakeLists.txt | 2 - src/core/AddonsManager.cpp | 3 +- src/core/AddonsManager.h | 2 +- .../preferences/PreferencesContentsWidget.cpp | 69 ------------------- .../preferences/PreferencesContentsWidget.h | 55 --------------- .../preferences/PreferencesContentsWidget.ui | 16 ----- src/ui/WidgetFactory.cpp | 8 +-- src/ui/WidgetFactory.h | 2 +- 8 files changed, 4 insertions(+), 153 deletions(-) delete mode 100644 src/modules/windows/preferences/PreferencesContentsWidget.cpp delete mode 100644 src/modules/windows/preferences/PreferencesContentsWidget.h delete mode 100644 src/modules/windows/preferences/PreferencesContentsWidget.ui diff --git a/CMakeLists.txt b/CMakeLists.txt index a505013c33..945b72b433 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -257,7 +257,6 @@ set(otter_src src/modules/windows/notes/NotesContentsWidget.cpp src/modules/windows/pageInformation/PageInformationContentsWidget.cpp src/modules/windows/passwords/PasswordsContentsWidget.cpp - src/modules/windows/preferences/PreferencesContentsWidget.cpp src/modules/windows/tabHistory/TabHistoryContentsWidget.cpp src/modules/windows/transfers/TransfersContentsWidget.cpp src/modules/windows/web/PasswordBarWidget.cpp @@ -335,7 +334,6 @@ qt5_wrap_ui(otter_ui src/modules/windows/notes/NotesContentsWidget.ui src/modules/windows/pageInformation/PageInformationContentsWidget.ui src/modules/windows/passwords/PasswordsContentsWidget.ui - src/modules/windows/preferences/PreferencesContentsWidget.ui src/modules/windows/tabHistory/TabHistoryContentsWidget.ui src/modules/windows/transfers/TransfersContentsWidget.ui src/modules/windows/web/PasswordBarWidget.ui diff --git a/src/core/AddonsManager.cpp b/src/core/AddonsManager.cpp index 9f247425bc..dd34bfece7 100644 --- a/src/core/AddonsManager.cpp +++ b/src/core/AddonsManager.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2022 Michal Dutkiewicz aka Emdek * * 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 @@ -131,7 +131,6 @@ AddonsManager::AddonsManager(QObject *parent) : QObject(parent) registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Notes"), {}, QUrl(QLatin1String("about:notes")), ThemesManager::createIcon(QLatin1String("notes"), false), SpecialPageInformation::UniversalType), QLatin1String("notes")); registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Page Information"), {}, {}, ThemesManager::createIcon(QLatin1String("view-information"), false), SpecialPageInformation::SidebarPanelType), QLatin1String("pageInformation")); registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Passwords"), {}, QUrl(QLatin1String("about:passwords")), ThemesManager::createIcon(QLatin1String("dialog-password"), false), SpecialPageInformation::UniversalType), QLatin1String("passwords")); - registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Preferences"), {}, QUrl(QLatin1String("about:preferences")), ThemesManager::createIcon(QLatin1String("configuration"), false), SpecialPageInformation::StandaloneType), QLatin1String("preferences")); registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Tab History"), {}, {}, ThemesManager::createIcon(QLatin1String("tab-history"), false), SpecialPageInformation::SidebarPanelType), QLatin1String("tabHistory")); registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Downloads"), {}, QUrl(QLatin1String("about:transfers")), ThemesManager::createIcon(QLatin1String("transfers"), false), SpecialPageInformation::UniversalType), QLatin1String("transfers")); registerSpecialPage(SpecialPageInformation(QT_TRANSLATE_NOOP("addons", "Windows and Tabs"), {}, QUrl(QLatin1String("about:windows")), ThemesManager::createIcon(QLatin1String("window"), false), SpecialPageInformation::UniversalType), QLatin1String("windows")); diff --git a/src/core/AddonsManager.h b/src/core/AddonsManager.h index 0793bda161..a81e88670b 100644 --- a/src/core/AddonsManager.h +++ b/src/core/AddonsManager.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2015 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2015 - 2022 Michal Dutkiewicz aka Emdek * * 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 diff --git a/src/modules/windows/preferences/PreferencesContentsWidget.cpp b/src/modules/windows/preferences/PreferencesContentsWidget.cpp deleted file mode 100644 index 8265b15176..0000000000 --- a/src/modules/windows/preferences/PreferencesContentsWidget.cpp +++ /dev/null @@ -1,69 +0,0 @@ -/************************************************************************** -* Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2018 Michal Dutkiewicz aka Emdek -* -* 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 "PreferencesContentsWidget.h" -#include "../../../core/ThemesManager.h" - -#include "ui_PreferencesContentsWidget.h" - -namespace Otter -{ - -PreferencesContentsWidget::PreferencesContentsWidget(const QVariantMap ¶meters, Window *window, QWidget *parent) : ContentsWidget(parameters, window, parent), - m_ui(new Ui::PreferencesContentsWidget) -{ - m_ui->setupUi(this); -} - -PreferencesContentsWidget::~PreferencesContentsWidget() -{ - delete m_ui; -} - -void PreferencesContentsWidget::changeEvent(QEvent *event) -{ - ContentsWidget::changeEvent(event); - - if (event->type() == QEvent::LanguageChange) - { - m_ui->retranslateUi(this); - } -} - -QString PreferencesContentsWidget::getTitle() const -{ - return tr("Preferences"); -} - -QLatin1String PreferencesContentsWidget::getType() const -{ - return QLatin1String("preferences"); -} - -QUrl PreferencesContentsWidget::getUrl() const -{ - return QUrl(QLatin1String("about:preferences")); -} - -QIcon PreferencesContentsWidget::getIcon() const -{ - return ThemesManager::createIcon(QLatin1String("configuration"), false); -} - -} diff --git a/src/modules/windows/preferences/PreferencesContentsWidget.h b/src/modules/windows/preferences/PreferencesContentsWidget.h deleted file mode 100644 index d15c444f88..0000000000 --- a/src/modules/windows/preferences/PreferencesContentsWidget.h +++ /dev/null @@ -1,55 +0,0 @@ -/************************************************************************** -* Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2018 Michal Dutkiewicz aka Emdek -* -* 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 OTTER_PREFERENCESCONTENTSWIDGET_H -#define OTTER_PREFERENCESCONTENTSWIDGET_H - -#include "../../../ui/ContentsWidget.h" - -namespace Otter -{ - -namespace Ui -{ - class PreferencesContentsWidget; -} - -class PreferencesContentsWidget final : public ContentsWidget -{ - Q_OBJECT - -public: - explicit PreferencesContentsWidget(const QVariantMap ¶meters, Window *window, QWidget *parent); - ~PreferencesContentsWidget(); - - QString getTitle() const override; - QLatin1String getType() const override; - QUrl getUrl() const override; - QIcon getIcon() const override; - -protected: - void changeEvent(QEvent *event) override; - -private: - Ui::PreferencesContentsWidget *m_ui; -}; - -} - -#endif diff --git a/src/modules/windows/preferences/PreferencesContentsWidget.ui b/src/modules/windows/preferences/PreferencesContentsWidget.ui deleted file mode 100644 index 50b8bd5729..0000000000 --- a/src/modules/windows/preferences/PreferencesContentsWidget.ui +++ /dev/null @@ -1,16 +0,0 @@ - - - Otter::PreferencesContentsWidget - - - - 0 - 0 - 400 - 400 - - - - - - diff --git a/src/ui/WidgetFactory.cpp b/src/ui/WidgetFactory.cpp index 8861c3ceae..1aaadf0d56 100644 --- a/src/ui/WidgetFactory.cpp +++ b/src/ui/WidgetFactory.cpp @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2022 Michal Dutkiewicz aka Emdek * * 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 @@ -48,7 +48,6 @@ #include "../modules/windows/notes/NotesContentsWidget.h" #include "../modules/windows/pageInformation/PageInformationContentsWidget.h" #include "../modules/windows/passwords/PasswordsContentsWidget.h" -#include "../modules/windows/preferences/PreferencesContentsWidget.h" #include "../modules/windows/tabHistory/TabHistoryContentsWidget.h" #include "../modules/windows/transfers/TransfersContentsWidget.h" #include "../modules/windows/web/WebContentsWidget.h" @@ -248,11 +247,6 @@ ContentsWidget* createContentsWidget(const QString &identifier, const QVariantMa return new PasswordsContentsWidget(parameters, window, parent); } - if (identifier == QLatin1String("preferences")) - { - return new PreferencesContentsWidget(parameters, window, parent); - } - if (identifier == QLatin1String("transfers")) { return new TransfersContentsWidget(parameters, window, parent); diff --git a/src/ui/WidgetFactory.h b/src/ui/WidgetFactory.h index 53cd8e83e6..951df260d4 100644 --- a/src/ui/WidgetFactory.h +++ b/src/ui/WidgetFactory.h @@ -1,6 +1,6 @@ /************************************************************************** * Otter Browser: Web browser controlled by the user, not vice-versa. -* Copyright (C) 2016 - 2018 Michal Dutkiewicz aka Emdek +* Copyright (C) 2016 - 2022 Michal Dutkiewicz aka Emdek * * 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