From 7792b4f849e6733efa28f4550d7c166d6237e40d Mon Sep 17 00:00:00 2001 From: Christophe Dumez Date: Fri, 6 Nov 2009 14:30:14 +0000 Subject: [PATCH] - Branched trunk in order to work on a major GUI remodeling. I will attempt to: * Merge download and upload lists * Display torrent properties in the same tab (horizontal split) --- AUTHORS | 4 +- Changelog | 3 + INSTALL | 14 +- configure | 90 +- doc/qbittorrent.1 | 2 +- qbittorrent.qc | 3 - qcm/libcurl.qcm | 61 - qcm/qt4.qcm | 9 +- src/GUI.cpp | 2684 ++++++++++++++++----------------- src/GUI.h | 14 +- src/about_imp.h | 8 +- src/addTorrentDialog.ui | 7 + src/bittorrent.cpp | 175 ++- src/downloadThread.cpp | 299 ++-- src/downloadThread.h | 68 +- src/engineSelectDlg.cpp | 1 + src/lang/qbittorrent_bg.qm | Bin 67919 -> 66997 bytes src/lang/qbittorrent_bg.ts | 530 ++++--- src/lang/qbittorrent_ca.qm | Bin 17731 -> 17728 bytes src/lang/qbittorrent_ca.ts | 548 ++++--- src/lang/qbittorrent_cs.qm | Bin 67626 -> 66758 bytes src/lang/qbittorrent_cs.ts | 530 ++++--- src/lang/qbittorrent_da.qm | Bin 20145 -> 20142 bytes src/lang/qbittorrent_da.ts | 548 ++++--- src/lang/qbittorrent_de.qm | Bin 58267 -> 57334 bytes src/lang/qbittorrent_de.ts | 532 ++++--- src/lang/qbittorrent_el.qm | Bin 71511 -> 70567 bytes src/lang/qbittorrent_el.ts | 530 ++++--- src/lang/qbittorrent_en.ts | 551 ++++--- src/lang/qbittorrent_es.qm | Bin 50214 -> 49227 bytes src/lang/qbittorrent_es.ts | 532 ++++--- src/lang/qbittorrent_fi.qm | Bin 66881 -> 65933 bytes src/lang/qbittorrent_fi.ts | 530 ++++--- src/lang/qbittorrent_fr.qm | Bin 72295 -> 75659 bytes src/lang/qbittorrent_fr.ts | 534 ++++--- src/lang/qbittorrent_hu.qm | Bin 66147 -> 65247 bytes src/lang/qbittorrent_hu.ts | 530 ++++--- src/lang/qbittorrent_it.qm | Bin 70441 -> 69539 bytes src/lang/qbittorrent_it.ts | 530 ++++--- src/lang/qbittorrent_ja.qm | Bin 38110 -> 37358 bytes src/lang/qbittorrent_ja.ts | 530 ++++--- src/lang/qbittorrent_ko.qm | Bin 56626 -> 55810 bytes src/lang/qbittorrent_ko.ts | 530 ++++--- src/lang/qbittorrent_nb.qm | Bin 20358 -> 20355 bytes src/lang/qbittorrent_nb.ts | 548 ++++--- src/lang/qbittorrent_nl.qm | Bin 67809 -> 66921 bytes src/lang/qbittorrent_nl.ts | 119 +- src/lang/qbittorrent_pl.qm | Bin 49880 -> 49004 bytes src/lang/qbittorrent_pl.ts | 119 +- src/lang/qbittorrent_pt.qm | Bin 69373 -> 68399 bytes src/lang/qbittorrent_pt.ts | 119 +- src/lang/qbittorrent_pt_BR.qm | Bin 69373 -> 68399 bytes src/lang/qbittorrent_pt_BR.ts | 119 +- src/lang/qbittorrent_ro.qm | Bin 68454 -> 67482 bytes src/lang/qbittorrent_ro.ts | 119 +- src/lang/qbittorrent_ru.qm | Bin 69467 -> 68559 bytes src/lang/qbittorrent_ru.ts | 119 +- src/lang/qbittorrent_sk.qm | Bin 69210 -> 68286 bytes src/lang/qbittorrent_sk.ts | 119 +- src/lang/qbittorrent_sv.qm | Bin 68214 -> 67290 bytes src/lang/qbittorrent_sv.ts | 119 +- src/lang/qbittorrent_tr.qm | Bin 67544 -> 66596 bytes src/lang/qbittorrent_tr.ts | 119 +- src/lang/qbittorrent_uk.qm | Bin 45276 -> 44492 bytes src/lang/qbittorrent_uk.ts | 123 +- src/lang/qbittorrent_zh.qm | Bin 51126 -> 50478 bytes src/lang/qbittorrent_zh.ts | 119 +- src/lang/qbittorrent_zh_TW.qm | Bin 52452 -> 51798 bytes src/lang/qbittorrent_zh_TW.ts | 119 +- src/main.cpp | 22 - src/qtorrenthandle.cpp | 9 +- src/qtorrenthandle.h | 3 +- src/rss.cpp | 44 +- src/rss.h | 30 +- src/rss_imp.cpp | 4 +- src/src.pro | 7 +- src/torrentAddition.h | 2 + src/torrentPersistentData.h | 19 + 78 files changed, 7763 insertions(+), 5284 deletions(-) delete mode 100644 qcm/libcurl.qcm diff --git a/AUTHORS b/AUTHORS index 6b33170ec..2cd38abc0 100644 --- a/AUTHORS +++ b/AUTHORS @@ -2,10 +2,10 @@ Author: * Christophe Dumez Contributors: -* Arnaud Demaizière +* Stefanos Antaris * Ishan Arora +* Arnaud Demaizière * Grigis Gaëtan -* Stefanos Antaris Code from other projects: * files src/ico.cpp src/ico.h diff --git a/Changelog b/Changelog index 948369cf1..fb40bb483 100644 --- a/Changelog +++ b/Changelog @@ -11,6 +11,9 @@ - FEATURE: Tracker connections are now also subject to IP filtering - FEATURE: Include DHT traffic in the rate limiter - FEATURE: Support for bitcomet padding files + - FEATURE: Option to skip file checking and start seeding immediately in torrent addition dialog (Stephanos Antaris) + - FEATURE: Dropped dependency on libcurl + - FEATURE: Dropped Qt 4.3 support (Qt >= 4.4 is required) * Thu Sep 3 2009 - Christophe Dumez - v1.5.0 - FEATURE: Added Magnet URI support diff --git a/INSTALL b/INSTALL index ae8cb5f3a..44a899a20 100644 --- a/INSTALL +++ b/INSTALL @@ -1,12 +1,6 @@ qBittorrent - A BitTorrent client in C++ / Qt4 ------------------------------------------ -*** Necessary if qt3 is default on your system *** -export QTDIR=/usr/include/qt4 -export PATH=$QTDIR/bin:$PATH -export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$QTDIR/lib -*** End *** - ./configure make && make install qbittorrent @@ -14,8 +8,7 @@ qbittorrent will install and execute qBittorrent hopefully without any problems. Dependencies: -- Qt >= 4.3.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) - Qt >= 4.4.0 is advised +- Qt >= 4.4.0 (libqt-devel, libqtgui, libqtcore, libqtnetwork, libqtxml) - libtorrent-rasterbar by Arvid Norberg (>= v0.15.0 REQUIRED) -> http://www.qbittorrent.org/download.php (advised) @@ -24,13 +17,8 @@ Dependencies: - libboost: libboost-filesystem, libboost-date-time, libboost-thread, libboost-serialization -- libcurl - - python >= 2.3 (needed by search engine) -- libmagick++ (advised, not required) - * Needed for favicons support (RSS / Search plugins) - - libzzip (advised, not required) * Needed for zip support (Search plugins) diff --git a/configure b/configure index 2c0a35784..af45cc823 100755 --- a/configure +++ b/configure @@ -19,8 +19,6 @@ Main options: Dependency options: --with-libboost-inc=[path] Path to libboost include files - --with-libcurl-inc=[path] Path to libcurl include files - --with-libcurl-lib=[path] Path to libcurl library files --disable-libzzip Disable use of libzzip --with-libzzip-inc=[path] Path to libzzip++ include files --with-libzzip-lib=[path] Path to libzzip++ library files @@ -145,16 +143,6 @@ while [ $# -gt 0 ]; do shift ;; - --with-libcurl-inc=*) - QC_WITH_LIBCURL_INC=$optarg - shift - ;; - - --with-libcurl-lib=*) - QC_WITH_LIBCURL_LIB=$optarg - shift - ;; - --disable-libzzip) QC_DISABLE_libzzip="Y" shift @@ -192,8 +180,6 @@ echo BINDIR=$BINDIR echo DATADIR=$DATADIR echo EX_QTDIR=$EX_QTDIR echo QC_WITH_LIBBOOST_INC=$QC_WITH_LIBBOOST_INC -echo QC_WITH_LIBCURL_INC=$QC_WITH_LIBCURL_INC -echo QC_WITH_LIBCURL_LIB=$QC_WITH_LIBCURL_LIB echo QC_DISABLE_libzzip=$QC_DISABLE_libzzip echo QC_WITH_LIBZZIP_INC=$QC_WITH_LIBZZIP_INC echo QC_WITH_LIBZZIP_LIB=$QC_WITH_LIBZZIP_LIB @@ -308,14 +294,11 @@ class qc_qt4 : public ConfObj { public: qc_qt4(Conf *c) : ConfObj(c) {} - QString name() const { return "Qt >= 4.3"; } - QString shortname() const { return "Qt 4.3"; } + QString name() const { return "Qt >= 4.4"; } + QString shortname() const { return "Qt 4.4"; } bool exec() { - if(QT_VERSION >= 0x040400) { - conf->addDefine("QT_4_4"); - } - return(QT_VERSION >= 0x040300); + return(QT_VERSION >= 0x040400); } }; @@ -403,68 +386,6 @@ public: return true; } }; -#line 1 "libcurl.qcm" -/* ------BEGIN QCMOD----- -name: libcommoncpp2 -arg: with-libcurl-inc=[path], Path to libcurl include files -arg: with-libcurl-lib=[path], Path to libcurl library files ------END QCMOD----- -*/ -class qc_libcurl : public ConfObj -{ -public: - qc_libcurl(Conf *c) : ConfObj(c) {} - QString name() const { return "libcurl"; } - QString shortname() const { return "libcurl"; } - bool exec(){ - QString s; - s = conf->getenv("QC_WITH_LIBCURL_INC"); - if(!s.isEmpty()) { - if(!conf->checkHeader(s, "curl/curl.h")) { - return false; - } - }else{ - QStringList sl; - sl << "/usr/include"; - sl << "/usr/local/include"; - bool found = false; - foreach(s, sl){ - if(conf->checkHeader(s, "curl/curl.h")){ - found = true; - break; - } - } - if(!found) { - return false; - } - } - conf->addIncludePath(s); - - s = conf->getenv("QC_WITH_LIBCURL_LIB"); - if(!s.isEmpty()) { - if(!QFile::exists(s+QString("/libcurl.so"))) - return false; - conf->addLib(QString("-L") + s); - }else{ - QStringList sl; - sl << "/usr/lib/"; - sl << "/usr/lib64/"; - sl << "/usr/local/lib/"; - sl << "/usr/local/lib64/"; - bool found = false; - foreach(s, sl){ - if(QFile::exists(s+QString("libcurl.so"))){ - found = true; - break; - } - } - if(!found) return false; - conf->addLib(QString("-L") + s); - } - return true; - } -}; #line 1 "libzzip.qcm" /* -----BEGIN QCMOD----- @@ -549,9 +470,6 @@ cat >$1/modules_new.cpp <required = true; o->disabled = false; - o = new qc_libcurl(conf); - o->required = true; - o->disabled = false; o = new qc_libzzip(conf); o->required = false; o->disabled = false; @@ -1501,8 +1419,6 @@ export BINDIR export DATADIR export EX_QTDIR export QC_WITH_LIBBOOST_INC -export QC_WITH_LIBCURL_INC -export QC_WITH_LIBCURL_LIB export QC_DISABLE_libzzip export QC_WITH_LIBZZIP_INC export QC_WITH_LIBZZIP_LIB diff --git a/doc/qbittorrent.1 b/doc/qbittorrent.1 index e5e50af77..571b258a8 100644 --- a/doc/qbittorrent.1 +++ b/doc/qbittorrent.1 @@ -8,7 +8,7 @@ qBittorrent \- a Bittorrent client written in C++ / Qt4 .SH "SYNOPSIS" -\fBqbittorrent\fR [--no-splash] [TORRENT_FILE | URL]... +\fBqbittorrent\fR [\-\-no-splash] [TORRENT_FILE | URL]... \fBqbittorrent\fR \-\-help diff --git a/qbittorrent.qc b/qbittorrent.qc index ffb74fe12..d1828ef8a 100644 --- a/qbittorrent.qc +++ b/qbittorrent.qc @@ -12,8 +12,5 @@ - - - diff --git a/qcm/libcurl.qcm b/qcm/libcurl.qcm deleted file mode 100644 index b3af39b4a..000000000 --- a/qcm/libcurl.qcm +++ /dev/null @@ -1,61 +0,0 @@ -/* ------BEGIN QCMOD----- -name: libcommoncpp2 -arg: with-libcurl-inc=[path], Path to libcurl include files -arg: with-libcurl-lib=[path], Path to libcurl library files ------END QCMOD----- -*/ -class qc_libcurl : public ConfObj -{ -public: - qc_libcurl(Conf *c) : ConfObj(c) {} - QString name() const { return "libcurl"; } - QString shortname() const { return "libcurl"; } - bool exec(){ - QString s; - s = conf->getenv("QC_WITH_LIBCURL_INC"); - if(!s.isEmpty()) { - if(!conf->checkHeader(s, "curl/curl.h")) { - return false; - } - }else{ - QStringList sl; - sl << "/usr/include"; - sl << "/usr/local/include"; - bool found = false; - foreach(s, sl){ - if(conf->checkHeader(s, "curl/curl.h")){ - found = true; - break; - } - } - if(!found) { - return false; - } - } - conf->addIncludePath(s); - - s = conf->getenv("QC_WITH_LIBCURL_LIB"); - if(!s.isEmpty()) { - if(!QFile::exists(s+QString("/libcurl.so"))) - return false; - conf->addLib(QString("-L") + s); - }else{ - QStringList sl; - sl << "/usr/lib/"; - sl << "/usr/lib64/"; - sl << "/usr/local/lib/"; - sl << "/usr/local/lib64/"; - bool found = false; - foreach(s, sl){ - if(QFile::exists(s+QString("libcurl.so"))){ - found = true; - break; - } - } - if(!found) return false; - conf->addLib(QString("-L") + s); - } - return true; - } -}; diff --git a/qcm/qt4.qcm b/qcm/qt4.qcm index 00c709812..947e36a93 100644 --- a/qcm/qt4.qcm +++ b/qcm/qt4.qcm @@ -7,14 +7,11 @@ class qc_qt4 : public ConfObj { public: qc_qt4(Conf *c) : ConfObj(c) {} - QString name() const { return "Qt >= 4.3"; } - QString shortname() const { return "Qt 4.3"; } + QString name() const { return "Qt >= 4.4"; } + QString shortname() const { return "Qt 4.4"; } bool exec() { - if(QT_VERSION >= 0x040400) { - conf->addDefine("QT_4_4"); - } - return(QT_VERSION >= 0x040300); + return(QT_VERSION >= 0x040400); } }; diff --git a/src/GUI.cpp b/src/GUI.cpp index d48a7d20a..62f98af5c 100644 --- a/src/GUI.cpp +++ b/src/GUI.cpp @@ -35,15 +35,10 @@ #include #include #include -#ifdef QT_4_4 #include #include #include #include -#else -#include -#include -#endif #include #include #include @@ -189,7 +184,6 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis initWebUi(username, password, port); } // Use a tcp server to allow only one instance of qBittorrent -#ifdef QT_4_4 localServer = new QLocalServer(); QString uid = QString::number(getuid()); #ifdef Q_WS_X11 @@ -200,1471 +194,1461 @@ GUI::GUI(QWidget *parent, QStringList torrentCmdLine) : QMainWindow(parent), dis } #endif if (!localServer->listen("qBittorrent-"+uid)) { -#else - localServer = new QTcpServer(); - if (!localServer->listen(QHostAddress::LocalHost)) { -#endif - std::cerr << "Couldn't create socket, single instance mode won't work...\n"; - } -#ifndef QT_4_4 - else { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - settings.setValue(QString::fromUtf8("uniqueInstancePort"), localServer->serverPort()); - } -#endif - connect(localServer, SIGNAL(newConnection()), this, SLOT(acceptConnection())); - // Start connection checking timer - checkConnect = new QTimer(this); - connect(checkConnect, SIGNAL(timeout()), this, SLOT(checkConnectionStatus())); - checkConnect->start(5000); - // Accept drag 'n drops - setAcceptDrops(true); - createKeyboardShortcuts(); - connecStatusLblIcon = new QLabel(); - connecStatusLblIcon->setFrameShape(QFrame::NoFrame); - connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png"))); - connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection status:")+QString::fromUtf8("
")+QString::fromUtf8("")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("")); - dlSpeedLbl = new QLabel(tr("DL: %1 KiB/s").arg("0.0")); - upSpeedLbl = new QLabel(tr("UP: %1 KiB/s").arg("0.0")); - ratioLbl = new QLabel(tr("Ratio: %1").arg("1.0")); - DHTLbl = new QLabel(tr("DHT: %1 nodes").arg(0)); - statusSep1 = new QFrame(); - statusSep1->setFixedWidth(1); - statusSep1->setFrameStyle(QFrame::Box); - statusSep2 = new QFrame(); - statusSep2->setFixedWidth(1); - statusSep2->setFrameStyle(QFrame::Box); - statusSep3 = new QFrame(); - statusSep3->setFixedWidth(1); - statusSep3->setFrameStyle(QFrame::Box); - statusSep4 = new QFrame(); - statusSep4->setFixedWidth(1); - statusSep4->setFrameStyle(QFrame::Box); - QMainWindow::statusBar()->addPermanentWidget(DHTLbl); - QMainWindow::statusBar()->addPermanentWidget(statusSep1); - QMainWindow::statusBar()->addPermanentWidget(connecStatusLblIcon); - QMainWindow::statusBar()->addPermanentWidget(statusSep2); - QMainWindow::statusBar()->addPermanentWidget(dlSpeedLbl); - QMainWindow::statusBar()->addPermanentWidget(statusSep3); - QMainWindow::statusBar()->addPermanentWidget(upSpeedLbl); - QMainWindow::statusBar()->addPermanentWidget(statusSep4); - QMainWindow::statusBar()->addPermanentWidget(ratioLbl); - show(); - if(settings.value(QString::fromUtf8("Preferences/General/StartMinimized"), false).toBool()) { - this->setWindowState(Qt::WindowMinimized); - } - scrapeTimer = new QTimer(this); - connect(scrapeTimer, SIGNAL(timeout()), this, SLOT(scrapeTrackers())); - scrapeTimer->start(20000); - qDebug("GUI Built"); - } - - // Destructor - GUI::~GUI() { - qDebug("GUI destruction"); - hide(); - // Do this as soon as possible - BTSession->saveDHTEntry(); - BTSession->saveSessionState(); - BTSession->saveFastResumeData(); - scrapeTimer->stop(); - delete scrapeTimer; - delete dlSpeedLbl; - delete upSpeedLbl; - delete ratioLbl; - delete DHTLbl; - delete statusSep1; - delete statusSep2; - delete statusSep3; - delete statusSep4; - if(rssWidget != 0) + std::cerr << "Couldn't create socket, single instance mode won't work...\n"; + } + connect(localServer, SIGNAL(newConnection()), this, SLOT(acceptConnection())); + // Start connection checking timer + checkConnect = new QTimer(this); + connect(checkConnect, SIGNAL(timeout()), this, SLOT(checkConnectionStatus())); + checkConnect->start(5000); + // Accept drag 'n drops + setAcceptDrops(true); + createKeyboardShortcuts(); + connecStatusLblIcon = new QLabel(); + connecStatusLblIcon->setFrameShape(QFrame::NoFrame); + connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png"))); + connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection status:")+QString::fromUtf8("
")+QString::fromUtf8("")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("")); + dlSpeedLbl = new QLabel(tr("DL: %1 KiB/s").arg("0.0")); + upSpeedLbl = new QLabel(tr("UP: %1 KiB/s").arg("0.0")); + ratioLbl = new QLabel(tr("Ratio: %1").arg("1.0")); + DHTLbl = new QLabel(tr("DHT: %1 nodes").arg(0)); + statusSep1 = new QFrame(); + statusSep1->setFixedWidth(1); + statusSep1->setFrameStyle(QFrame::Box); + statusSep2 = new QFrame(); + statusSep2->setFixedWidth(1); + statusSep2->setFrameStyle(QFrame::Box); + statusSep3 = new QFrame(); + statusSep3->setFixedWidth(1); + statusSep3->setFrameStyle(QFrame::Box); + statusSep4 = new QFrame(); + statusSep4->setFixedWidth(1); + statusSep4->setFrameStyle(QFrame::Box); + QMainWindow::statusBar()->addPermanentWidget(DHTLbl); + QMainWindow::statusBar()->addPermanentWidget(statusSep1); + QMainWindow::statusBar()->addPermanentWidget(connecStatusLblIcon); + QMainWindow::statusBar()->addPermanentWidget(statusSep2); + QMainWindow::statusBar()->addPermanentWidget(dlSpeedLbl); + QMainWindow::statusBar()->addPermanentWidget(statusSep3); + QMainWindow::statusBar()->addPermanentWidget(upSpeedLbl); + QMainWindow::statusBar()->addPermanentWidget(statusSep4); + QMainWindow::statusBar()->addPermanentWidget(ratioLbl); + show(); + if(settings.value(QString::fromUtf8("Preferences/General/StartMinimized"), false).toBool()) { + this->setWindowState(Qt::WindowMinimized); + } + scrapeTimer = new QTimer(this); + connect(scrapeTimer, SIGNAL(timeout()), this, SLOT(scrapeTrackers())); + scrapeTimer->start(20000); + qDebug("GUI Built"); +} + +// Destructor +GUI::~GUI() { + qDebug("GUI destruction"); + hide(); + // Do this as soon as possible + BTSession->saveDHTEntry(); + BTSession->saveSessionState(); + BTSession->saveFastResumeData(); + scrapeTimer->stop(); + delete scrapeTimer; + delete dlSpeedLbl; + delete upSpeedLbl; + delete ratioLbl; + delete DHTLbl; + delete statusSep1; + delete statusSep2; + delete statusSep3; + delete statusSep4; + if(rssWidget != 0) + delete rssWidget; + delete searchEngine; + delete refresher; + delete downloadingTorrentTab; + delete finishedTorrentTab; + delete checkConnect; + qDebug("1"); + if(systrayCreator) { + delete systrayCreator; + } + if(systrayIntegration) { + delete myTrayIcon; + delete myTrayIconMenu; + } + qDebug("2"); + localServer->close(); + delete localServer; + delete connecStatusLblIcon; + delete tabs; + // HTTP Server + if(httpServer) + delete httpServer; + qDebug("3"); + // Keyboard shortcuts + delete switchSearchShortcut; + delete switchSearchShortcut2; + delete switchDownShortcut; + delete switchUpShortcut; + delete switchRSSShortcut; + qDebug("4"); + delete BTSession; + qDebug("5"); +} + +void GUI::displayRSSTab(bool enable) { + if(enable) { + // RSS tab + if(rssWidget == 0) { + rssWidget = new RSSImp(BTSession); + tabs->addTab(rssWidget, tr("RSS")); + tabs->setTabIcon(3, QIcon(QString::fromUtf8(":/Icons/rss32.png"))); + } + } else { + if(rssWidget != 0) { delete rssWidget; - delete searchEngine; - delete refresher; - delete downloadingTorrentTab; - delete finishedTorrentTab; - delete checkConnect; - qDebug("1"); - if(systrayCreator) { - delete systrayCreator; - } - if(systrayIntegration) { - delete myTrayIcon; - delete myTrayIconMenu; - } - qDebug("2"); - localServer->close(); - delete localServer; - delete connecStatusLblIcon; - delete tabs; - // HTTP Server - if(httpServer) - delete httpServer; - qDebug("3"); - // Keyboard shortcuts - delete switchSearchShortcut; - delete switchSearchShortcut2; - delete switchDownShortcut; - delete switchUpShortcut; - delete switchRSSShortcut; - qDebug("4"); - delete BTSession; - qDebug("5"); - } - - void GUI::displayRSSTab(bool enable) { - if(enable) { - // RSS tab - if(rssWidget == 0) { - rssWidget = new RSSImp(BTSession); - tabs->addTab(rssWidget, tr("RSS")); - tabs->setTabIcon(3, QIcon(QString::fromUtf8(":/Icons/rss32.png"))); - } - } else { - if(rssWidget != 0) { - delete rssWidget; - rssWidget = 0; - } + rssWidget = 0; } } - - void GUI::scrapeTrackers() { - std::vector torrents = BTSession->getTorrents(); - std::vector::iterator torrentIT; - for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { - QTorrentHandle h = QTorrentHandle(*torrentIT); - if(!h.is_valid()) continue; - h.scrape_tracker(); - } +} + +void GUI::scrapeTrackers() { + std::vector torrents = BTSession->getTorrents(); + std::vector::iterator torrentIT; + for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { + QTorrentHandle h = QTorrentHandle(*torrentIT); + if(!h.is_valid()) continue; + h.scrape_tracker(); + } +} + +void GUI::updateRatio() { + // Update ratio info + float ratio = 1.; + session_status sessionStatus = BTSession->getSessionStatus(); + if(sessionStatus.total_payload_download == 0) { + if(sessionStatus.total_payload_upload == 0) + ratio = 1.; + else + ratio = 10.; + }else{ + ratio = (double)sessionStatus.total_payload_upload / (double)sessionStatus.total_payload_download; + if(ratio > 10.) + ratio = 10.; + } + ratioLbl->setText(tr("Ratio: %1").arg(QString(QByteArray::number(ratio, 'f', 1)))); + // Update DHT nodes + DHTLbl->setText(tr("DHT: %1 nodes").arg(QString::number(sessionStatus.dht_nodes))); +} + +void GUI::on_actionWebsite_triggered() const { + QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://www.qbittorrent.org"))); +} + +void GUI::on_actionDocumentation_triggered() const { + QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://wiki.qbittorrent.org"))); +} + +void GUI::on_actionBugReport_triggered() const { + QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://bugs.qbittorrent.org"))); +} + +void GUI::writeSettings() { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + settings.beginGroup(QString::fromUtf8("MainWindow")); + settings.setValue(QString::fromUtf8("size"), size()); + settings.setValue(QString::fromUtf8("pos"), pos()); + settings.endGroup(); +} + +// called when a torrent has finished +void GUI::finishedTorrent(QTorrentHandle& h) const { + qDebug("In GUI, a torrent has finished"); + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + bool show_msg = true; + if(TorrentPersistentData::isSeed(h.hash())) + show_msg = false; + QString fileName = h.name(); + bool useNotificationBalloons = settings.value(QString::fromUtf8("Preferences/General/NotificationBaloons"), true).toBool(); + // Add it to finished tab + QString hash = h.hash(); + if(show_msg) + BTSession->addConsoleMessage(tr("%1 has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(fileName)); + downloadingTorrentTab->deleteTorrent(hash); + finishedTorrentTab->addTorrent(hash); + if(show_msg && systrayIntegration && useNotificationBalloons) { + myTrayIcon->showMessage(tr("Download finished"), tr("%1 has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(fileName), QSystemTrayIcon::Information, TIME_TRAY_BALLOON); + } +} + +void GUI::addedTorrent(QTorrentHandle& h) const { + if(h.is_seed()) { + finishedTorrentTab->addTorrent(h.hash()); + } else { + downloadingTorrentTab->addTorrent(h.hash()); } - - void GUI::updateRatio() { - // Update ratio info - float ratio = 1.; - session_status sessionStatus = BTSession->getSessionStatus(); - if(sessionStatus.total_payload_download == 0) { - if(sessionStatus.total_payload_upload == 0) - ratio = 1.; - else - ratio = 10.; - }else{ - ratio = (double)sessionStatus.total_payload_upload / (double)sessionStatus.total_payload_download; - if(ratio > 10.) - ratio = 10.; - } - ratioLbl->setText(tr("Ratio: %1").arg(QString(QByteArray::number(ratio, 'f', 1)))); - // Update DHT nodes - DHTLbl->setText(tr("DHT: %1 nodes").arg(QString::number(sessionStatus.dht_nodes))); - } - - void GUI::on_actionWebsite_triggered() const { - QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://www.qbittorrent.org"))); - } - - void GUI::on_actionDocumentation_triggered() const { - QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://wiki.qbittorrent.org"))); - } - - void GUI::on_actionBugReport_triggered() const { - QDesktopServices::openUrl(QUrl(QString::fromUtf8("http://bugs.qbittorrent.org"))); - } - - void GUI::writeSettings() { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - settings.beginGroup(QString::fromUtf8("MainWindow")); - settings.setValue(QString::fromUtf8("size"), size()); - settings.setValue(QString::fromUtf8("pos"), pos()); - settings.endGroup(); - } - - // called when a torrent has finished - void GUI::finishedTorrent(QTorrentHandle& h) const { - qDebug("In GUI, a torrent has finished"); - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - bool show_msg = true; - if(TorrentPersistentData::isSeed(h.hash())) - show_msg = false; - QString fileName = h.name(); - bool useNotificationBalloons = settings.value(QString::fromUtf8("Preferences/General/NotificationBaloons"), true).toBool(); - // Add it to finished tab - QString hash = h.hash(); - if(show_msg) - BTSession->addConsoleMessage(tr("%1 has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(fileName)); - downloadingTorrentTab->deleteTorrent(hash); - finishedTorrentTab->addTorrent(hash); - if(show_msg && systrayIntegration && useNotificationBalloons) { - myTrayIcon->showMessage(tr("Download finished"), tr("%1 has finished downloading.", "e.g: xxx.avi has finished downloading.").arg(fileName), QSystemTrayIcon::Information, TIME_TRAY_BALLOON); - } +} + +void GUI::pausedTorrent(QTorrentHandle& h) const { + if(h.is_seed()) { + finishedTorrentTab->pauseTorrent(h.hash()); + } else { + downloadingTorrentTab->pauseTorrent(h.hash()); } - - void GUI::addedTorrent(QTorrentHandle& h) const { - if(h.is_seed()) { - finishedTorrentTab->addTorrent(h.hash()); - } else { +} + +void GUI::resumedTorrent(QTorrentHandle& h) const { + if(h.is_seed()) { + finishedTorrentTab->updateTorrent(h); + } else { + downloadingTorrentTab->updateTorrent(h); + } +} + +void GUI::checkedTorrent(QTorrentHandle& h) const { + if(h.is_seed()) { + // Move torrent to finished tab + downloadingTorrentTab->deleteTorrent(h.hash()); + finishedTorrentTab->addTorrent(h.hash()); + } else { + // Move torrent back to download list (if necessary) + if(TorrentPersistentData::isSeed(h.hash())) { + TorrentPersistentData::saveSeedStatus(h); + finishedTorrentTab->deleteTorrent(h.hash()); downloadingTorrentTab->addTorrent(h.hash()); } } - - void GUI::pausedTorrent(QTorrentHandle& h) const { - if(h.is_seed()) { - finishedTorrentTab->pauseTorrent(h.hash()); - } else { - downloadingTorrentTab->pauseTorrent(h.hash()); - } +} + +// Notification when disk is full +void GUI::fullDiskError(QTorrentHandle& h, QString msg) const { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + bool useNotificationBalloons = settings.value(QString::fromUtf8("Preferences/General/NotificationBaloons"), true).toBool(); + if(systrayIntegration && useNotificationBalloons) { + myTrayIcon->showMessage(tr("I/O Error", "i.e: Input/Output Error"), tr("An I/O error occured for torrent %1.\n Reason: %2", "e.g: An error occured for torrent xxx.avi.\n Reason: disk is full.").arg(h.name()).arg(msg), QSystemTrayIcon::Critical, TIME_TRAY_BALLOON); + } + // Download will be paused by libtorrent. Updating GUI information accordingly + QString hash = h.hash(); + qDebug("Full disk error, pausing torrent %s", hash.toLocal8Bit().data()); + setPaused(h); + BTSession->addConsoleMessage(tr("An error occured (full disk?), '%1' paused.", "e.g: An error occured (full disk?), 'xxx.avi' paused.").arg(h.name())); +} + +void GUI::setPaused(QTorrentHandle &h) const { + if(!h.is_paused()) { + // FIXME in v1.6.0: Add Error state and stop using pause for this + h.pause(); + } + qDebug("Marking torrent %s as paused", h.hash().toLocal8Bit().data()); + if(h.is_seed()) { + // In finished list + qDebug("Automatically paused torrent was in finished list"); + finishedTorrentTab->pauseTorrent(h.hash()); + }else{ + downloadingTorrentTab->pauseTorrent(h.hash()); } - - void GUI::resumedTorrent(QTorrentHandle& h) const { - if(h.is_seed()) { - finishedTorrentTab->updateTorrent(h); - } else { - downloadingTorrentTab->updateTorrent(h); +} + +void GUI::createKeyboardShortcuts() { + actionCreate_torrent->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+N"))); + actionOpen->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+O"))); + actionExit->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Q"))); + switchDownShortcut = new QShortcut(QKeySequence(tr("Alt+1", "shortcut to switch to first tab")), this); + connect(switchDownShortcut, SIGNAL(activated()), this, SLOT(displayDownTab())); + switchUpShortcut = new QShortcut(QKeySequence(tr("Alt+2", "shortcut to switch to second tab")), this); + connect(switchUpShortcut, SIGNAL(activated()), this, SLOT(displayUpTab())); + switchSearchShortcut = new QShortcut(QKeySequence(tr("Alt+3", "shortcut to switch to third tab")), this); + connect(switchSearchShortcut, SIGNAL(activated()), this, SLOT(displaySearchTab())); + switchSearchShortcut2 = new QShortcut(QKeySequence(tr("Ctrl+F", "shortcut to switch to search tab")), this); + connect(switchSearchShortcut2, SIGNAL(activated()), this, SLOT(displaySearchTab())); + switchRSSShortcut = new QShortcut(QKeySequence(tr("Alt+4", "shortcut to switch to fourth tab")), this); + connect(switchRSSShortcut, SIGNAL(activated()), this, SLOT(displayRSSTab())); + actionTorrent_Properties->setShortcut(QKeySequence(QString::fromUtf8("Alt+P"))); + actionOptions->setShortcut(QKeySequence(QString::fromUtf8("Alt+O"))); + actionDelete->setShortcut(QKeySequence(QString::fromUtf8("Del"))); + actionDelete_Permanently->setShortcut(QKeySequence(QString::fromUtf8("Shift+Del"))); + actionStart->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+S"))); + actionStart_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+S"))); + actionPause->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+P"))); + actionPause_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+P"))); + actionDecreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+-"))); + actionIncreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl++"))); +} + +// Keyboard shortcuts slots +void GUI::displayDownTab() const { + tabs->setCurrentIndex(0); +} + +void GUI::displayUpTab() const { + tabs->setCurrentIndex(1); +} + +void GUI::displaySearchTab() const { + tabs->setCurrentIndex(2); +} + +void GUI::displayRSSTab() const { + tabs->setCurrentIndex(3); +} + +// End of keyboard shortcuts slots + +void GUI::readSettings() { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + settings.beginGroup(QString::fromUtf8("MainWindow")); + resize(settings.value(QString::fromUtf8("size"), size()).toSize()); + move(settings.value(QString::fromUtf8("pos"), screenCenter()).toPoint()); + settings.endGroup(); +} + +void GUI::balloonClicked() { + if(isHidden()) { + show(); + if(isMinimized()) { + showNormal(); } + raise(); + activateWindow(); } - - void GUI::checkedTorrent(QTorrentHandle& h) const { - if(h.is_seed()) { - // Move torrent to finished tab - downloadingTorrentTab->deleteTorrent(h.hash()); - finishedTorrentTab->addTorrent(h.hash()); - } else { - // Move torrent back to download list (if necessary) - if(TorrentPersistentData::isSeed(h.hash())) { - TorrentPersistentData::saveSeedStatus(h); - finishedTorrentTab->deleteTorrent(h.hash()); - downloadingTorrentTab->addTorrent(h.hash()); - } +} + +void GUI::acceptConnection() { + clientConnection = localServer->nextPendingConnection(); + connect(clientConnection, SIGNAL(disconnected()), this, SLOT(readParamsOnSocket())); + qDebug("accepted connection from another instance"); +} + +void GUI::readParamsOnSocket() { + if(clientConnection) { + QByteArray params = clientConnection->readAll(); + if(!params.isEmpty()) { + processParams(QString::fromUtf8(params.data()).split(QString::fromUtf8("\n"))); + qDebug("Received parameters from another instance"); } } - - // Notification when disk is full - void GUI::fullDiskError(QTorrentHandle& h, QString msg) const { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - bool useNotificationBalloons = settings.value(QString::fromUtf8("Preferences/General/NotificationBaloons"), true).toBool(); - if(systrayIntegration && useNotificationBalloons) { - myTrayIcon->showMessage(tr("I/O Error", "i.e: Input/Output Error"), tr("An I/O error occured for torrent %1.\n Reason: %2", "e.g: An error occured for torrent xxx.avi.\n Reason: disk is full.").arg(h.name()).arg(msg), QSystemTrayIcon::Critical, TIME_TRAY_BALLOON); - } - // Download will be paused by libtorrent. Updating GUI information accordingly - QString hash = h.hash(); - qDebug("Full disk error, pausing torrent %s", hash.toLocal8Bit().data()); - setPaused(h); - BTSession->addConsoleMessage(tr("An error occured (full disk?), '%1' paused.", "e.g: An error occured (full disk?), 'xxx.avi' paused.").arg(h.name())); - } - - void GUI::setPaused(QTorrentHandle &h) const { - if(!h.is_paused()) { - // FIXME in v1.6.0: Add Error state and stop using pause for this - h.pause(); +} + +void GUI::handleDownloadFromUrlFailure(QString url, QString reason) const{ + // Display a message box + QMessageBox::critical(0, tr("Url download error"), tr("Couldn't download file at url: %1, reason: %2.").arg(url).arg(reason)); +} + +void GUI::on_actionSet_global_upload_limit_triggered() { + qDebug("actionSet_global_upload_limit_triggered"); + new BandwidthAllocationDialog(this, true, BTSession, QStringList()); +} + +void GUI::on_actionShow_console_triggered() { + new consoleDlg(this, BTSession); +} + +void GUI::on_actionSet_global_download_limit_triggered() { + qDebug("actionSet_global_download_limit_triggered"); + new BandwidthAllocationDialog(this, false, BTSession, QStringList()); +} + +void GUI::on_actionPreview_file_triggered() { + QString hash; + switch(tabs->currentIndex()){ + case 0: + hash = downloadingTorrentTab->getSelectedTorrents(true).first(); + break; + case 1: + hash = finishedTorrentTab->getSelectedTorrents(true).first(); + break; + default: + return; + } + QTorrentHandle h = BTSession->getTorrentHandle(hash); + new previewSelect(this, h); +} + +void GUI::openDestinationFolder() const { + QStringList hashes; + switch(tabs->currentIndex()){ + case 0: + hashes = downloadingTorrentTab->getSelectedTorrents(true); + break; + case 1: + hashes = finishedTorrentTab->getSelectedTorrents(true); + break; + default: + return; + } + QStringList pathsList; + foreach(const QString &hash, hashes) { + QTorrentHandle h = BTSession->getTorrentHandle(hash); + QString savePath = h.save_path(); + if(!pathsList.contains(savePath)) { + pathsList.append(savePath); + QDesktopServices::openUrl(QString("file://")+savePath); } - qDebug("Marking torrent %s as paused", h.hash().toLocal8Bit().data()); - if(h.is_seed()) { - // In finished list - qDebug("Automatically paused torrent was in finished list"); - finishedTorrentTab->pauseTorrent(h.hash()); - }else{ - downloadingTorrentTab->pauseTorrent(h.hash()); + } +} + +void GUI::copyMagnetURI() const { + QStringList hashes; + switch(tabs->currentIndex()){ + case 0: + hashes = downloadingTorrentTab->getSelectedTorrents(); + break; + case 1: + hashes = finishedTorrentTab->getSelectedTorrents(); + break; + default: + return; + } + QStringList magnet_uris; + foreach(QString hash, hashes) { + QTorrentHandle h = BTSession->getTorrentHandle(hash); + if(h.is_valid()) { + magnet_uris << misc::toQString(make_magnet_uri(h.get_torrent_info())); } } - - void GUI::createKeyboardShortcuts() { - actionCreate_torrent->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+N"))); - actionOpen->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+O"))); - actionExit->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Q"))); - switchDownShortcut = new QShortcut(QKeySequence(tr("Alt+1", "shortcut to switch to first tab")), this); - connect(switchDownShortcut, SIGNAL(activated()), this, SLOT(displayDownTab())); - switchUpShortcut = new QShortcut(QKeySequence(tr("Alt+2", "shortcut to switch to second tab")), this); - connect(switchUpShortcut, SIGNAL(activated()), this, SLOT(displayUpTab())); - switchSearchShortcut = new QShortcut(QKeySequence(tr("Alt+3", "shortcut to switch to third tab")), this); - connect(switchSearchShortcut, SIGNAL(activated()), this, SLOT(displaySearchTab())); - switchSearchShortcut2 = new QShortcut(QKeySequence(tr("Ctrl+F", "shortcut to switch to search tab")), this); - connect(switchSearchShortcut2, SIGNAL(activated()), this, SLOT(displaySearchTab())); - switchRSSShortcut = new QShortcut(QKeySequence(tr("Alt+4", "shortcut to switch to fourth tab")), this); - connect(switchRSSShortcut, SIGNAL(activated()), this, SLOT(displayRSSTab())); - actionTorrent_Properties->setShortcut(QKeySequence(QString::fromUtf8("Alt+P"))); - actionOptions->setShortcut(QKeySequence(QString::fromUtf8("Alt+O"))); - actionDelete->setShortcut(QKeySequence(QString::fromUtf8("Del"))); - actionDelete_Permanently->setShortcut(QKeySequence(QString::fromUtf8("Shift+Del"))); - actionStart->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+S"))); - actionStart_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+S"))); - actionPause->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+P"))); - actionPause_All->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+Shift+P"))); - actionDecreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl+-"))); - actionIncreasePriority->setShortcut(QKeySequence(QString::fromUtf8("Ctrl++"))); - } - - // Keyboard shortcuts slots - void GUI::displayDownTab() const { - tabs->setCurrentIndex(0); - } - - void GUI::displayUpTab() const { - tabs->setCurrentIndex(1); - } - - void GUI::displaySearchTab() const { - tabs->setCurrentIndex(2); - } - - void GUI::displayRSSTab() const { - tabs->setCurrentIndex(3); - } - - // End of keyboard shortcuts slots - - void GUI::readSettings() { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - settings.beginGroup(QString::fromUtf8("MainWindow")); - resize(settings.value(QString::fromUtf8("size"), size()).toSize()); - move(settings.value(QString::fromUtf8("pos"), screenCenter()).toPoint()); - settings.endGroup(); - } - - void GUI::balloonClicked() { + qApp->clipboard()->setText(magnet_uris.join("\n")); +} + +void GUI::goBuyPage() const { + QStringList hashes; + switch(tabs->currentIndex()){ + case 0: + hashes = downloadingTorrentTab->getSelectedTorrents(true); + break; + case 1: + hashes = finishedTorrentTab->getSelectedTorrents(true); + break; + default: + return; + } + QStringList pathsList; + foreach(const QString &hash, hashes) { + QTorrentHandle h = BTSession->getTorrentHandle(hash); + QDesktopServices::openUrl("http://match.sharemonkey.com/?info_hash="+hash+"&n="+h.name()+"&cid=33"); + } +} + +// Necessary if we want to close the window +// in one time if "close to systray" is enabled +void GUI::on_actionExit_triggered() { + force_exit = true; + close(); +} + +void GUI::previewFile(QString filePath) { + QDesktopServices::openUrl(QString("file://")+filePath); +} + +int GUI::getCurrentTabIndex() const{ + if(isMinimized() || isHidden()) + return -1; + return tabs->currentIndex(); +} + +void GUI::setTabText(int index, QString text) const { + tabs->setTabText(index, text); +} + +// Toggle Main window visibility +void GUI::toggleVisibility(QSystemTrayIcon::ActivationReason e) { + if(e == QSystemTrayIcon::Trigger || e == QSystemTrayIcon::DoubleClick) { if(isHidden()) { show(); if(isMinimized()) { - showNormal(); + if(isMaximized()) { + showMaximized(); + }else{ + showNormal(); + } } raise(); activateWindow(); + }else{ + hide(); } } - - void GUI::acceptConnection() { - clientConnection = localServer->nextPendingConnection(); - connect(clientConnection, SIGNAL(disconnected()), this, SLOT(readParamsOnSocket())); - qDebug("accepted connection from another instance"); - } - - void GUI::readParamsOnSocket() { - if(clientConnection) { - QByteArray params = clientConnection->readAll(); - if(!params.isEmpty()) { - processParams(QString::fromUtf8(params.data()).split(QString::fromUtf8("\n"))); - qDebug("Received parameters from another instance"); - } - } +} + +// Center window +QPoint GUI::screenCenter() const{ + int scrn = 0; + QWidget *w = this->topLevelWidget(); + + if(w) + scrn = QApplication::desktop()->screenNumber(w); + else if(QApplication::desktop()->isVirtualDesktop()) + scrn = QApplication::desktop()->screenNumber(QCursor::pos()); + else + scrn = QApplication::desktop()->screenNumber(this); + + QRect desk(QApplication::desktop()->availableGeometry(scrn)); + return QPoint((desk.width() - this->frameGeometry().width()) / 2, (desk.height() - this->frameGeometry().height()) / 2); +} + +// Display About Dialog +void GUI::on_actionAbout_triggered() { + //About dialog + new about(this); +} + +void GUI::showEvent(QShowEvent *e) { + qDebug("** Show Event **"); + updateLists(true); + e->accept(); +} + +// Called when we close the program +void GUI::closeEvent(QCloseEvent *e) { + + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + bool goToSystrayOnExit = settings.value(QString::fromUtf8("Preferences/General/CloseToTray"), false).toBool(); + if(!force_exit && systrayIntegration && goToSystrayOnExit && !this->isHidden()) { + hide(); + //e->ignore(); + e->accept(); + return; } - - void GUI::handleDownloadFromUrlFailure(QString url, QString reason) const{ - // Display a message box - QMessageBox::critical(0, tr("Url download error"), tr("Couldn't download file at url: %1, reason: %2.").arg(url).arg(reason)); - } - - void GUI::on_actionSet_global_upload_limit_triggered() { - qDebug("actionSet_global_upload_limit_triggered"); - new BandwidthAllocationDialog(this, true, BTSession, QStringList()); - } - - void GUI::on_actionShow_console_triggered() { - new consoleDlg(this, BTSession); - } - - void GUI::on_actionSet_global_download_limit_triggered() { - qDebug("actionSet_global_download_limit_triggered"); - new BandwidthAllocationDialog(this, false, BTSession, QStringList()); - } - - void GUI::on_actionPreview_file_triggered() { - QString hash; - switch(tabs->currentIndex()){ - case 0: - hash = downloadingTorrentTab->getSelectedTorrents(true).first(); - break; - case 1: - hash = finishedTorrentTab->getSelectedTorrents(true).first(); - break; - default: - return; - } - QTorrentHandle h = BTSession->getTorrentHandle(hash); - new previewSelect(this, h); - } - - void GUI::openDestinationFolder() const { - QStringList hashes; - switch(tabs->currentIndex()){ - case 0: - hashes = downloadingTorrentTab->getSelectedTorrents(true); - break; - case 1: - hashes = finishedTorrentTab->getSelectedTorrents(true); - break; - default: - return; - } - QStringList pathsList; - foreach(const QString &hash, hashes) { - QTorrentHandle h = BTSession->getTorrentHandle(hash); - QString savePath = h.save_path(); - if(!pathsList.contains(savePath)) { - pathsList.append(savePath); - QDesktopServices::openUrl(QString("file://")+savePath); + if(settings.value(QString::fromUtf8("Preferences/General/ExitConfirm"), true).toBool() && downloadingTorrentTab->getNbTorrentsInList()) { + show(); + if(!isMaximized()) + showNormal(); + if(e->spontaneous() == true || force_exit == true) { + if(QMessageBox::question(this, + tr("Are you sure you want to quit?")+QString::fromUtf8(" -- ")+tr("qBittorrent"), + tr("The download list is not empty.\nAre you sure you want to quit qBittorrent?"), + tr("&Yes"), tr("&No"), + QString(), 0, 1)) { + e->ignore(); + force_exit = false; + return; } } } - - void GUI::copyMagnetURI() const { - QStringList hashes; - switch(tabs->currentIndex()){ - case 0: - hashes = downloadingTorrentTab->getSelectedTorrents(); - break; - case 1: - hashes = finishedTorrentTab->getSelectedTorrents(); - break; - default: - return; - } - QStringList magnet_uris; - foreach(QString hash, hashes) { - QTorrentHandle h = BTSession->getTorrentHandle(hash); - if(h.is_valid()) { - magnet_uris << misc::toQString(make_magnet_uri(h.get_torrent_info())); - } - } - qApp->clipboard()->setText(magnet_uris.join("\n")); - } - - void GUI::goBuyPage() const { - QStringList hashes; - switch(tabs->currentIndex()){ - case 0: - hashes = downloadingTorrentTab->getSelectedTorrents(true); - break; - case 1: - hashes = finishedTorrentTab->getSelectedTorrents(true); - break; - default: - return; - } - QStringList pathsList; - foreach(const QString &hash, hashes) { - QTorrentHandle h = BTSession->getTorrentHandle(hash); - QDesktopServices::openUrl("http://match.sharemonkey.com/?info_hash="+hash+"&n="+h.name()+"&cid=33"); - } + hide(); + if(systrayIntegration) { + // Hide tray icon + myTrayIcon->hide(); } - - // Necessary if we want to close the window - // in one time if "close to systray" is enabled - void GUI::on_actionExit_triggered() { - force_exit = true; - close(); - } - - void GUI::previewFile(QString filePath) { - QDesktopServices::openUrl(QString("file://")+filePath); - } - - int GUI::getCurrentTabIndex() const{ - if(isMinimized() || isHidden()) - return -1; - return tabs->currentIndex(); - } - - void GUI::setTabText(int index, QString text) const { - tabs->setTabText(index, text); - } - - // Toggle Main window visibility - void GUI::toggleVisibility(QSystemTrayIcon::ActivationReason e) { - if(e == QSystemTrayIcon::Trigger || e == QSystemTrayIcon::DoubleClick) { - if(isHidden()) { - show(); - if(isMinimized()) { - if(isMaximized()) { - showMaximized(); - }else{ - showNormal(); - } - } - raise(); - activateWindow(); - }else{ + // Save window size, columns size + writeSettings(); + // Accept exit + e->accept(); + qApp->exit(); +} + + +// Display window to create a torrent +void GUI::on_actionCreate_torrent_triggered() { + createtorrent *ct = new createtorrent(this); + connect(ct, SIGNAL(torrent_to_seed(QString)), this, SLOT(addTorrent(QString))); +} + +bool GUI::event(QEvent * e) { + if(e->type() == QEvent::WindowStateChange) { + //Now check to see if the window is minimised + if(isMinimized()) { + qDebug("minimisation"); + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + if(systrayIntegration && settings.value(QString::fromUtf8("Preferences/General/MinimizeToTray"), false).toBool()) { hide(); } } } - - // Center window - QPoint GUI::screenCenter() const{ - int scrn = 0; - QWidget *w = this->topLevelWidget(); - - if(w) - scrn = QApplication::desktop()->screenNumber(w); - else if(QApplication::desktop()->isVirtualDesktop()) - scrn = QApplication::desktop()->screenNumber(QCursor::pos()); - else - scrn = QApplication::desktop()->screenNumber(this); - - QRect desk(QApplication::desktop()->availableGeometry(scrn)); - return QPoint((desk.width() - this->frameGeometry().width()) / 2, (desk.height() - this->frameGeometry().height()) / 2); - } - - // Display About Dialog - void GUI::on_actionAbout_triggered() { - //About dialog - new about(this); - } - - void GUI::showEvent(QShowEvent *e) { - qDebug("** Show Event **"); - updateLists(true); - e->accept(); - } - - // Called when we close the program - void GUI::closeEvent(QCloseEvent *e) { - - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - bool goToSystrayOnExit = settings.value(QString::fromUtf8("Preferences/General/CloseToTray"), false).toBool(); - if(!force_exit && systrayIntegration && goToSystrayOnExit && !this->isHidden()) { - hide(); - //e->ignore(); - e->accept(); - return; - } - if(settings.value(QString::fromUtf8("Preferences/General/ExitConfirm"), true).toBool() && downloadingTorrentTab->getNbTorrentsInList()) { - show(); - if(!isMaximized()) - showNormal(); - if(e->spontaneous() == true || force_exit == true) { - if(QMessageBox::question(this, - tr("Are you sure you want to quit?")+QString::fromUtf8(" -- ")+tr("qBittorrent"), - tr("The download list is not empty.\nAre you sure you want to quit qBittorrent?"), - tr("&Yes"), tr("&No"), - QString(), 0, 1)) { - e->ignore(); - force_exit = false; - return; - } - } - } - hide(); - if(systrayIntegration) { - // Hide tray icon - myTrayIcon->hide(); + return QMainWindow::event(e); +} + +// Action executed when a file is dropped +void GUI::dropEvent(QDropEvent *event) { + event->acceptProposedAction(); + QStringList files; + if(event->mimeData()->hasUrls()) { + QList urls = event->mimeData()->urls(); + foreach(const QUrl &url, urls) { + QString tmp = url.toString().trimmed(); + if(!tmp.isEmpty()) + files << url.toString(); + } + } else { + files = event->mimeData()->text().split(QString::fromUtf8("\n")); + } + // Add file to download list + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); + foreach(QString file, files) { + file = file.trimmed().replace(QString::fromUtf8("file://"), QString::fromUtf8(""), Qt::CaseInsensitive); + qDebug("Dropped file %s on download list", file.toLocal8Bit().data()); + if(file.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || file.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || file.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) { + BTSession->downloadFromUrl(file); + continue; + } + if(file.startsWith("magnet:", Qt::CaseInsensitive)) { + // FIXME: Possibly skipped torrent addition dialog + BTSession->addMagnetUri(file); + continue; } - // Save window size, columns size - writeSettings(); - // Accept exit - e->accept(); - qApp->exit(); - } - - - // Display window to create a torrent - void GUI::on_actionCreate_torrent_triggered() { - createtorrent *ct = new createtorrent(this); - connect(ct, SIGNAL(torrent_to_seed(QString)), this, SLOT(addTorrent(QString))); - } - - bool GUI::event(QEvent * e) { - if(e->type() == QEvent::WindowStateChange) { - //Now check to see if the window is minimised - if(isMinimized()) { - qDebug("minimisation"); - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - if(systrayIntegration && settings.value(QString::fromUtf8("Preferences/General/MinimizeToTray"), false).toBool()) { - hide(); - } - } + if(useTorrentAdditionDialog) { + torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession); + dialog->showLoad(file); + }else{ + BTSession->addTorrent(file); } - return QMainWindow::event(e); } - - // Action executed when a file is dropped - void GUI::dropEvent(QDropEvent *event) { +} + +// Decode if we accept drag 'n drop or not +void GUI::dragEnterEvent(QDragEnterEvent *event) { + foreach(const QString &mime, event->mimeData()->formats()){ + qDebug("mimeData: %s", mime.toLocal8Bit().data()); + } + if (event->mimeData()->hasFormat(QString::fromUtf8("text/plain")) || event->mimeData()->hasFormat(QString::fromUtf8("text/uri-list"))) { event->acceptProposedAction(); - QStringList files; - if(event->mimeData()->hasUrls()) { - QList urls = event->mimeData()->urls(); - foreach(const QUrl &url, urls) { - QString tmp = url.toString().trimmed(); - if(!tmp.isEmpty()) - files << url.toString(); - } - } else { - files = event->mimeData()->text().split(QString::fromUtf8("\n")); - } - // Add file to download list - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + } +} + +/***************************************************** + * * + * Torrent * + * * + *****************************************************/ + +// Display a dialog to allow user to add +// torrents to download list +void GUI::on_actionOpen_triggered() { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + // Open File Open Dialog + // Note: it is possible to select more than one file + QStringList pathsList = QFileDialog::getOpenFileNames(0, + tr("Open Torrent Files"), settings.value(QString::fromUtf8("MainWindowLastDir"), QDir::homePath()).toString(), + tr("Torrent Files")+QString::fromUtf8(" (*.torrent)")); + if(!pathsList.empty()) { bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); - foreach(QString file, files) { - file = file.trimmed().replace(QString::fromUtf8("file://"), QString::fromUtf8(""), Qt::CaseInsensitive); - qDebug("Dropped file %s on download list", file.toLocal8Bit().data()); - if(file.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || file.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || file.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) { - BTSession->downloadFromUrl(file); - continue; - } - if(file.startsWith("magnet:", Qt::CaseInsensitive)) { - // FIXME: Possibly skipped torrent addition dialog - BTSession->addMagnetUri(file); - continue; - } + unsigned int listSize = pathsList.size(); + for(unsigned int i=0; ishowLoad(file); + dialog->showLoad(pathsList.at(i)); }else{ - BTSession->addTorrent(file); + BTSession->addTorrent(pathsList.at(i)); } } + // Save last dir to remember it + QStringList top_dir = pathsList.at(0).split(QDir::separator()); + top_dir.removeLast(); + settings.setValue(QString::fromUtf8("MainWindowLastDir"), top_dir.join(QDir::separator())); } - - // Decode if we accept drag 'n drop or not - void GUI::dragEnterEvent(QDragEnterEvent *event) { - foreach(const QString &mime, event->mimeData()->formats()){ - qDebug("mimeData: %s", mime.toLocal8Bit().data()); - } - if (event->mimeData()->hasFormat(QString::fromUtf8("text/plain")) || event->mimeData()->hasFormat(QString::fromUtf8("text/uri-list"))) { - event->acceptProposedAction(); - } +} + +// delete from download list AND from hard drive +void GUI::on_actionDelete_Permanently_triggered() { + QStringList hashes; + bool inDownloadList = true; + switch(tabs->currentIndex()){ + case 0: + hashes = downloadingTorrentTab->getSelectedTorrents(); + break; + case 1: + hashes = finishedTorrentTab->getSelectedTorrents(); + inDownloadList = false; + break; + default: + return; + } + if(hashes.empty()) return; + int ret; + if(inDownloadList) { + ret = QMessageBox::question( + this, + tr("Are you sure? -- qBittorrent"), + tr("Are you sure you want to delete the selected item(s) from download list and from hard drive?"), + tr("&Yes"), tr("&No"), + QString(), 0, 1); + }else{ + ret = QMessageBox::question( + this, + tr("Are you sure? -- qBittorrent"), + tr("Are you sure you want to delete the selected item(s) from finished list and from hard drive?"), + tr("&Yes"), tr("&No"), + QString(), 0, 1); + } + if(ret) return; + //User clicked YES + foreach(const QString &hash, hashes) { + // Get the file name + QTorrentHandle h = BTSession->getTorrentHandle(hash); + QString fileName = h.name(); + // Remove the torrent + BTSession->deleteTorrent(hash, true); } - - /***************************************************** - * * - * Torrent * - * * - *****************************************************/ - - // Display a dialog to allow user to add - // torrents to download list - void GUI::on_actionOpen_triggered() { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - // Open File Open Dialog - // Note: it is possible to select more than one file - QStringList pathsList = QFileDialog::getOpenFileNames(0, - tr("Open Torrent Files"), settings.value(QString::fromUtf8("MainWindowLastDir"), QDir::homePath()).toString(), - tr("Torrent Files")+QString::fromUtf8(" (*.torrent)")); - if(!pathsList.empty()) { - bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); - unsigned int listSize = pathsList.size(); - for(unsigned int i=0; ideleteTorrent(hash); + finishedTorrentTab->deleteTorrent(hash); +} + +// delete selected items in the list +void GUI::on_actionDelete_triggered() { + QStringList hashes; + bool inDownloadList = true; + switch(tabs->currentIndex()){ + case 0: // DL + hashes = downloadingTorrentTab->getSelectedTorrents(); + break; + case 1: // SEED + hashes = finishedTorrentTab->getSelectedTorrents(); + inDownloadList = false; + break; + case 3: //RSSImp + rssWidget->deleteSelectedItems(); + return; + default: + return; + } + if(hashes.empty()) return; + int ret; + if(inDownloadList) { + ret = QMessageBox::question( + this, + tr("Are you sure? -- qBittorrent"), + tr("Are you sure you want to delete the selected item(s) in download list?"), + tr("&Yes"), tr("&No"), + QString(), 0, 1); + } else { + ret = QMessageBox::question( + this, + tr("Are you sure? -- qBittorrent"), + tr("Are you sure you want to delete the selected item(s) in finished list?"), + tr("&Yes"), tr("&No"), + QString(), 0, 1); + } + if(ret) return; + //User clicked YES + foreach(const QString &hash, hashes) { + // Get the file name + QTorrentHandle h = BTSession->getTorrentHandle(hash); + QString fileName = h.name(); + // Remove the torrent + BTSession->deleteTorrent(hash, false); + } +} + +// As program parameters, we can get paths or urls. +// This function parse the parameters and call +// the right addTorrent function, considering +// the parameter type. +void GUI::processParams(const QStringList& params) { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); + foreach(QString param, params) { + param = param.trimmed(); + if(param.startsWith("--")) continue; + if(param.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) { + BTSession->downloadFromUrl(param); + }else{ + if(param.startsWith("magnet:", Qt::CaseInsensitive)) { + // FIXME: Possibily skipped torrent addition dialog + BTSession->addMagnetUri(param); + } else { if(useTorrentAdditionDialog) { torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession); - dialog->showLoad(pathsList.at(i)); + dialog->showLoad(param); }else{ - BTSession->addTorrent(pathsList.at(i)); - } - } - // Save last dir to remember it - QStringList top_dir = pathsList.at(0).split(QDir::separator()); - top_dir.removeLast(); - settings.setValue(QString::fromUtf8("MainWindowLastDir"), top_dir.join(QDir::separator())); - } - } - - // delete from download list AND from hard drive - void GUI::on_actionDelete_Permanently_triggered() { - QStringList hashes; - bool inDownloadList = true; - switch(tabs->currentIndex()){ - case 0: - hashes = downloadingTorrentTab->getSelectedTorrents(); - break; - case 1: - hashes = finishedTorrentTab->getSelectedTorrents(); - inDownloadList = false; - break; - default: - return; - } - if(hashes.empty()) return; - int ret; - if(inDownloadList) { - ret = QMessageBox::question( - this, - tr("Are you sure? -- qBittorrent"), - tr("Are you sure you want to delete the selected item(s) from download list and from hard drive?"), - tr("&Yes"), tr("&No"), - QString(), 0, 1); - }else{ - ret = QMessageBox::question( - this, - tr("Are you sure? -- qBittorrent"), - tr("Are you sure you want to delete the selected item(s) from finished list and from hard drive?"), - tr("&Yes"), tr("&No"), - QString(), 0, 1); - } - if(ret) return; - //User clicked YES - foreach(const QString &hash, hashes) { - // Get the file name - QTorrentHandle h = BTSession->getTorrentHandle(hash); - QString fileName = h.name(); - // Remove the torrent - BTSession->deleteTorrent(hash, true); - } - } - - void GUI::deleteTorrent(QString hash) { - // Delete item from list - downloadingTorrentTab->deleteTorrent(hash); - finishedTorrentTab->deleteTorrent(hash); - } - - // delete selected items in the list - void GUI::on_actionDelete_triggered() { - QStringList hashes; - bool inDownloadList = true; - switch(tabs->currentIndex()){ - case 0: // DL - hashes = downloadingTorrentTab->getSelectedTorrents(); - break; - case 1: // SEED - hashes = finishedTorrentTab->getSelectedTorrents(); - inDownloadList = false; - break; - case 3: //RSSImp - rssWidget->deleteSelectedItems(); - return; - default: - return; - } - if(hashes.empty()) return; - int ret; - if(inDownloadList) { - ret = QMessageBox::question( - this, - tr("Are you sure? -- qBittorrent"), - tr("Are you sure you want to delete the selected item(s) in download list?"), - tr("&Yes"), tr("&No"), - QString(), 0, 1); - } else { - ret = QMessageBox::question( - this, - tr("Are you sure? -- qBittorrent"), - tr("Are you sure you want to delete the selected item(s) in finished list?"), - tr("&Yes"), tr("&No"), - QString(), 0, 1); - } - if(ret) return; - //User clicked YES - foreach(const QString &hash, hashes) { - // Get the file name - QTorrentHandle h = BTSession->getTorrentHandle(hash); - QString fileName = h.name(); - // Remove the torrent - BTSession->deleteTorrent(hash, false); - } - } - - // As program parameters, we can get paths or urls. - // This function parse the parameters and call - // the right addTorrent function, considering - // the parameter type. - void GUI::processParams(const QStringList& params) { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); - foreach(QString param, params) { - param = param.trimmed(); - if(param.startsWith("--")) continue; - if(param.startsWith(QString::fromUtf8("http://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("ftp://"), Qt::CaseInsensitive) || param.startsWith(QString::fromUtf8("https://"), Qt::CaseInsensitive)) { - BTSession->downloadFromUrl(param); - }else{ - if(param.startsWith("magnet:", Qt::CaseInsensitive)) { - // FIXME: Possibily skipped torrent addition dialog - BTSession->addMagnetUri(param); - } else { - if(useTorrentAdditionDialog) { - torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession); - dialog->showLoad(param); - }else{ - BTSession->addTorrent(param); - } + BTSession->addTorrent(param); } } } } - - void GUI::addTorrent(QString path) { - BTSession->addTorrent(path); - } - - void GUI::processDownloadedFiles(QString path, QString url) { - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); - if(useTorrentAdditionDialog) { - torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession); - dialog->showLoad(path, url); - }else{ - BTSession->addTorrent(path, false, url); - } +} + +void GUI::addTorrent(QString path) { + BTSession->addTorrent(path); +} + +void GUI::processDownloadedFiles(QString path, QString url) { + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + bool useTorrentAdditionDialog = settings.value(QString::fromUtf8("Preferences/Downloads/AdditionDialog"), true).toBool(); + if(useTorrentAdditionDialog) { + torrentAdditionDialog *dialog = new torrentAdditionDialog(this, BTSession); + dialog->showLoad(path, url); + }else{ + BTSession->addTorrent(path, false, url); } - - // Set BT session configuration - void GUI::configureSession(bool deleteOptions) { - qDebug("Configuring session"); - // General - bool new_displaySpeedInTitle = options->speedInTitleBar(); - if(!new_displaySpeedInTitle && new_displaySpeedInTitle != displaySpeedInTitle) { - // Reset title - setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION))); - } - displaySpeedInTitle = new_displaySpeedInTitle; - if(options->isToolbarDisplayed()) { - toolBar->setVisible(true); +} + +// Set BT session configuration +void GUI::configureSession(bool deleteOptions) { + qDebug("Configuring session"); + // General + bool new_displaySpeedInTitle = options->speedInTitleBar(); + if(!new_displaySpeedInTitle && new_displaySpeedInTitle != displaySpeedInTitle) { + // Reset title + setWindowTitle(tr("qBittorrent %1", "e.g: qBittorrent v0.x").arg(QString::fromUtf8(VERSION))); + } + displaySpeedInTitle = new_displaySpeedInTitle; + if(options->isToolbarDisplayed()) { + toolBar->setVisible(true); + toolBar->layout()->setSpacing(7); + } else { + toolBar->setVisible(false); + } + unsigned int new_refreshInterval = options->getRefreshInterval(); + if(refreshInterval != new_refreshInterval) { + refreshInterval = new_refreshInterval; + refresher->start(refreshInterval); + } + // Downloads + // * Save path + BTSession->setDefaultSavePath(options->getSavePath()); + if(options->isTempPathEnabled()) { + BTSession->setDefaultTempPath(options->getTempPath()); + } else { + BTSession->setDefaultTempPath(QString::null); + } + BTSession->preAllocateAllFiles(options->preAllocateAllFiles()); + BTSession->startTorrentsInPause(options->addTorrentsInPause()); + // * Scan dir + if(options->getScanDir().isNull()) { + BTSession->disableDirectoryScanning(); + }else{ + //Interval first + BTSession->enableDirectoryScanning(options->getScanDir()); + } + // Connection + // * Ports binding + unsigned short old_listenPort = BTSession->getListenPort(); + BTSession->setListeningPort(options->getPort()); + unsigned short new_listenPort = BTSession->getListenPort(); + if(new_listenPort != old_listenPort) { + BTSession->addConsoleMessage(tr("qBittorrent is bound to port: TCP/%1", "e.g: qBittorrent is bound to port: 6881").arg( misc::toQString(new_listenPort))); + } + // * Global download limit + QPair limits = options->getGlobalBandwidthLimits(); + if(limits.first <= 0) { + // Download limit disabled + BTSession->setDownloadRateLimit(-1); + } else { + // Enabled + BTSession->setDownloadRateLimit(limits.first*1024); + } + // * Global Upload limit + if(limits.second <= 0) { + // Upload limit disabled + BTSession->setUploadRateLimit(-1); + } else { + // Enabled + BTSession->setUploadRateLimit(limits.second*1024); + } + // * UPnP + if(options->isUPnPEnabled()) { + BTSession->enableUPnP(true); + BTSession->addConsoleMessage(tr("UPnP support [ON]"), QString::fromUtf8("blue")); + } else { + BTSession->enableUPnP(false); + BTSession->addConsoleMessage(tr("UPnP support [OFF]"), QString::fromUtf8("blue")); + } + // * NAT-PMP + if(options->isNATPMPEnabled()) { + BTSession->enableNATPMP(true); + BTSession->addConsoleMessage(tr("NAT-PMP support [ON]"), QString::fromUtf8("blue")); + } else { + BTSession->enableNATPMP(false); + BTSession->addConsoleMessage(tr("NAT-PMP support [OFF]"), QString::fromUtf8("blue")); + } + // * Session settings + session_settings sessionSettings; + if(options->shouldSpoofAzureus()) { + sessionSettings.user_agent = "Azureus 3.0.5.2"; + } else { + sessionSettings.user_agent = "qBittorrent "VERSION; + } + sessionSettings.upnp_ignore_nonrouters = true; + sessionSettings.use_dht_as_fallback = false; + // To keep same behavior as in qbittorrent v1.2.0 + sessionSettings.rate_limit_ip_overhead = false; + // Queueing System + if(options->isQueueingSystemEnabled()) { + if(!BTSession->isQueueingEnabled()) { + downloadingTorrentTab->hidePriorityColumn(false); + actionDecreasePriority->setVisible(true); + actionIncreasePriority->setVisible(true); + prioSeparator->setVisible(true); + prioSeparator2->setVisible(true); toolBar->layout()->setSpacing(7); - } else { - toolBar->setVisible(false); - } - unsigned int new_refreshInterval = options->getRefreshInterval(); - if(refreshInterval != new_refreshInterval) { - refreshInterval = new_refreshInterval; - refresher->start(refreshInterval); - } - // Downloads - // * Save path - BTSession->setDefaultSavePath(options->getSavePath()); - if(options->isTempPathEnabled()) { - BTSession->setDefaultTempPath(options->getTempPath()); - } else { - BTSession->setDefaultTempPath(QString::null); } - BTSession->preAllocateAllFiles(options->preAllocateAllFiles()); - BTSession->startTorrentsInPause(options->addTorrentsInPause()); - // * Scan dir - if(options->getScanDir().isNull()) { - BTSession->disableDirectoryScanning(); - }else{ - //Interval first - BTSession->enableDirectoryScanning(options->getScanDir()); - } - // Connection - // * Ports binding - unsigned short old_listenPort = BTSession->getListenPort(); - BTSession->setListeningPort(options->getPort()); - unsigned short new_listenPort = BTSession->getListenPort(); - if(new_listenPort != old_listenPort) { - BTSession->addConsoleMessage(tr("qBittorrent is bound to port: TCP/%1", "e.g: qBittorrent is bound to port: 6881").arg( misc::toQString(new_listenPort))); - } - // * Global download limit - QPair limits = options->getGlobalBandwidthLimits(); - if(limits.first <= 0) { - // Download limit disabled - BTSession->setDownloadRateLimit(-1); - } else { - // Enabled - BTSession->setDownloadRateLimit(limits.first*1024); - } - // * Global Upload limit - if(limits.second <= 0) { - // Upload limit disabled - BTSession->setUploadRateLimit(-1); - } else { - // Enabled - BTSession->setUploadRateLimit(limits.second*1024); - } - // * UPnP - if(options->isUPnPEnabled()) { - BTSession->enableUPnP(true); - BTSession->addConsoleMessage(tr("UPnP support [ON]"), QString::fromUtf8("blue")); - } else { - BTSession->enableUPnP(false); - BTSession->addConsoleMessage(tr("UPnP support [OFF]"), QString::fromUtf8("blue")); - } - // * NAT-PMP - if(options->isNATPMPEnabled()) { - BTSession->enableNATPMP(true); - BTSession->addConsoleMessage(tr("NAT-PMP support [ON]"), QString::fromUtf8("blue")); - } else { - BTSession->enableNATPMP(false); - BTSession->addConsoleMessage(tr("NAT-PMP support [OFF]"), QString::fromUtf8("blue")); - } - // * Session settings - session_settings sessionSettings; - if(options->shouldSpoofAzureus()) { - sessionSettings.user_agent = "Azureus 3.0.5.2"; - } else { - sessionSettings.user_agent = "qBittorrent "VERSION; - } - sessionSettings.upnp_ignore_nonrouters = true; - sessionSettings.use_dht_as_fallback = false; - // To keep same behavior as in qbittorrent v1.2.0 - sessionSettings.rate_limit_ip_overhead = false; - // Queueing System - if(options->isQueueingSystemEnabled()) { - if(!BTSession->isQueueingEnabled()) { - downloadingTorrentTab->hidePriorityColumn(false); - actionDecreasePriority->setVisible(true); - actionIncreasePriority->setVisible(true); - prioSeparator->setVisible(true); - prioSeparator2->setVisible(true); - toolBar->layout()->setSpacing(7); - } - int max_torrents = options->getMaxActiveTorrents(); - int max_uploads = options->getMaxActiveUploads(); - int max_downloads = options->getMaxActiveDownloads(); - sessionSettings.active_downloads = max_downloads; - sessionSettings.active_seeds = max_uploads; - sessionSettings.active_limit = max_torrents; - sessionSettings.dont_count_slow_torrents = false; - BTSession->setQueueingEnabled(true); - } else { - if(BTSession->isQueueingEnabled()) { - sessionSettings.active_downloads = -1; - sessionSettings.active_seeds = -1; - sessionSettings.active_limit = -1; - BTSession->setQueueingEnabled(false); - downloadingTorrentTab->hidePriorityColumn(true); - actionDecreasePriority->setVisible(false); - actionIncreasePriority->setVisible(false); - prioSeparator->setVisible(false); - prioSeparator2->setVisible(false); - toolBar->layout()->setSpacing(7); - } - } - BTSession->setSessionSettings(sessionSettings); - // Bittorrent - // * Max connections limit - BTSession->setMaxConnections(options->getMaxConnecs()); - // * Max connections per torrent limit - BTSession->setMaxConnectionsPerTorrent(options->getMaxConnecsPerTorrent()); - // * Max uploads per torrent limit - BTSession->setMaxUploadsPerTorrent(options->getMaxUploadsPerTorrent()); - // * DHT - if(options->isDHTEnabled()) { - // Set DHT Port - BTSession->setDHTPort(options->getDHTPort()); - if(BTSession->enableDHT(true)) { - int dht_port = new_listenPort; - if(options->getDHTPort()) - dht_port = options->getDHTPort(); - BTSession->addConsoleMessage(tr("DHT support [ON], port: UDP/%1").arg(dht_port), QString::fromUtf8("blue")); - } else { - BTSession->addConsoleMessage(tr("DHT support [OFF]"), QString::fromUtf8("red")); - } - } else { - BTSession->enableDHT(false); - BTSession->addConsoleMessage(tr("DHT support [OFF]"), QString::fromUtf8("blue")); + int max_torrents = options->getMaxActiveTorrents(); + int max_uploads = options->getMaxActiveUploads(); + int max_downloads = options->getMaxActiveDownloads(); + sessionSettings.active_downloads = max_downloads; + sessionSettings.active_seeds = max_uploads; + sessionSettings.active_limit = max_torrents; + sessionSettings.dont_count_slow_torrents = false; + BTSession->setQueueingEnabled(true); + } else { + if(BTSession->isQueueingEnabled()) { + sessionSettings.active_downloads = -1; + sessionSettings.active_seeds = -1; + sessionSettings.active_limit = -1; + BTSession->setQueueingEnabled(false); + downloadingTorrentTab->hidePriorityColumn(true); + actionDecreasePriority->setVisible(false); + actionIncreasePriority->setVisible(false); + prioSeparator->setVisible(false); + prioSeparator2->setVisible(false); + toolBar->layout()->setSpacing(7); } - // * PeX - BTSession->addConsoleMessage(tr("PeX support [ON]"), QString::fromUtf8("blue")); - // * LSD - if(options->isLSDEnabled()) { - BTSession->enableLSD(true); - BTSession->addConsoleMessage(tr("Local Peer Discovery [ON]"), QString::fromUtf8("blue")); + } + BTSession->setSessionSettings(sessionSettings); + // Bittorrent + // * Max connections limit + BTSession->setMaxConnections(options->getMaxConnecs()); + // * Max connections per torrent limit + BTSession->setMaxConnectionsPerTorrent(options->getMaxConnecsPerTorrent()); + // * Max uploads per torrent limit + BTSession->setMaxUploadsPerTorrent(options->getMaxUploadsPerTorrent()); + // * DHT + if(options->isDHTEnabled()) { + // Set DHT Port + BTSession->setDHTPort(options->getDHTPort()); + if(BTSession->enableDHT(true)) { + int dht_port = new_listenPort; + if(options->getDHTPort()) + dht_port = options->getDHTPort(); + BTSession->addConsoleMessage(tr("DHT support [ON], port: UDP/%1").arg(dht_port), QString::fromUtf8("blue")); } else { - BTSession->enableLSD(false); - BTSession->addConsoleMessage(tr("Local Peer Discovery support [OFF]"), QString::fromUtf8("blue")); - } - // * Encryption - int encryptionState = options->getEncryptionSetting(); - // The most secure, rc4 only so that all streams and encrypted - pe_settings encryptionSettings; - encryptionSettings.allowed_enc_level = pe_settings::rc4; - encryptionSettings.prefer_rc4 = true; - switch(encryptionState) { - case 0: //Enabled - encryptionSettings.out_enc_policy = pe_settings::enabled; - encryptionSettings.in_enc_policy = pe_settings::enabled; - BTSession->addConsoleMessage(tr("Encryption support [ON]"), QString::fromUtf8("blue")); + BTSession->addConsoleMessage(tr("DHT support [OFF]"), QString::fromUtf8("red")); + } + } else { + BTSession->enableDHT(false); + BTSession->addConsoleMessage(tr("DHT support [OFF]"), QString::fromUtf8("blue")); + } + // * PeX + BTSession->addConsoleMessage(tr("PeX support [ON]"), QString::fromUtf8("blue")); + // * LSD + if(options->isLSDEnabled()) { + BTSession->enableLSD(true); + BTSession->addConsoleMessage(tr("Local Peer Discovery [ON]"), QString::fromUtf8("blue")); + } else { + BTSession->enableLSD(false); + BTSession->addConsoleMessage(tr("Local Peer Discovery support [OFF]"), QString::fromUtf8("blue")); + } + // * Encryption + int encryptionState = options->getEncryptionSetting(); + // The most secure, rc4 only so that all streams and encrypted + pe_settings encryptionSettings; + encryptionSettings.allowed_enc_level = pe_settings::rc4; + encryptionSettings.prefer_rc4 = true; + switch(encryptionState) { + case 0: //Enabled + encryptionSettings.out_enc_policy = pe_settings::enabled; + encryptionSettings.in_enc_policy = pe_settings::enabled; + BTSession->addConsoleMessage(tr("Encryption support [ON]"), QString::fromUtf8("blue")); + break; + case 1: // Forced + encryptionSettings.out_enc_policy = pe_settings::forced; + encryptionSettings.in_enc_policy = pe_settings::forced; + BTSession->addConsoleMessage(tr("Encryption support [FORCED]"), QString::fromUtf8("blue")); + break; + default: // Disabled + encryptionSettings.out_enc_policy = pe_settings::disabled; + encryptionSettings.in_enc_policy = pe_settings::disabled; + BTSession->addConsoleMessage(tr("Encryption support [OFF]"), QString::fromUtf8("blue")); + } + BTSession->applyEncryptionSettings(encryptionSettings); + // * Desired ratio + BTSession->setGlobalRatio(options->getDesiredRatio()); + // * Maximum ratio + BTSession->setDeleteRatio(options->getDeleteRatio()); + // Ip Filter + if(options->isFilteringEnabled()) { + BTSession->enableIPFilter(options->getFilter()); + }else{ + BTSession->disableIPFilter(); + } + // RSS + if(options->isRSSEnabled()) { + displayRSSTab(true); + } else { + displayRSSTab(false); + } + // * Proxy settings + proxy_settings proxySettings; + if(options->isProxyEnabled()) { + qDebug("Enabling P2P proxy"); + proxySettings.hostname = options->getProxyIp().toStdString(); + qDebug("hostname is %s", proxySettings.hostname.c_str()); + proxySettings.port = options->getProxyPort(); + qDebug("port is %d", proxySettings.port); + if(options->isProxyAuthEnabled()) { + + proxySettings.username = options->getProxyUsername().toStdString(); + proxySettings.password = options->getProxyPassword().toStdString(); + qDebug("username is %s", proxySettings.username.c_str()); + qDebug("password is %s", proxySettings.password.c_str()); + } + switch(options->getProxyType()) { + case HTTP: + qDebug("type: http"); + proxySettings.type = proxy_settings::http; break; - case 1: // Forced - encryptionSettings.out_enc_policy = pe_settings::forced; - encryptionSettings.in_enc_policy = pe_settings::forced; - BTSession->addConsoleMessage(tr("Encryption support [FORCED]"), QString::fromUtf8("blue")); + case HTTP_PW: + qDebug("type: http_pw"); + proxySettings.type = proxy_settings::http_pw; + break; + case SOCKS5: + qDebug("type: socks5"); + proxySettings.type = proxy_settings::socks5; + break; + default: + qDebug("type: socks5_pw"); + proxySettings.type = proxy_settings::socks5_pw; break; - default: // Disabled - encryptionSettings.out_enc_policy = pe_settings::disabled; - encryptionSettings.in_enc_policy = pe_settings::disabled; - BTSession->addConsoleMessage(tr("Encryption support [OFF]"), QString::fromUtf8("blue")); - } - BTSession->applyEncryptionSettings(encryptionSettings); - // * Desired ratio - BTSession->setGlobalRatio(options->getDesiredRatio()); - // * Maximum ratio - BTSession->setDeleteRatio(options->getDeleteRatio()); - // Ip Filter - if(options->isFilteringEnabled()) { - BTSession->enableIPFilter(options->getFilter()); - }else{ - BTSession->disableIPFilter(); - } - // RSS - if(options->isRSSEnabled()) { - displayRSSTab(true); - } else { - displayRSSTab(false); } - // * Proxy settings - proxy_settings proxySettings; - if(options->isProxyEnabled()) { - qDebug("Enabling P2P proxy"); - proxySettings.hostname = options->getProxyIp().toStdString(); - qDebug("hostname is %s", proxySettings.hostname.c_str()); - proxySettings.port = options->getProxyPort(); - qDebug("port is %d", proxySettings.port); - if(options->isProxyAuthEnabled()) { - - proxySettings.username = options->getProxyUsername().toStdString(); - proxySettings.password = options->getProxyPassword().toStdString(); - qDebug("username is %s", proxySettings.username.c_str()); - qDebug("password is %s", proxySettings.password.c_str()); - } - switch(options->getProxyType()) { - case HTTP: - qDebug("type: http"); - proxySettings.type = proxy_settings::http; - break; - case HTTP_PW: - qDebug("type: http_pw"); - proxySettings.type = proxy_settings::http_pw; - break; - case SOCKS5: - qDebug("type: socks5"); - proxySettings.type = proxy_settings::socks5; - break; - default: - qDebug("type: socks5_pw"); - proxySettings.type = proxy_settings::socks5_pw; - break; - } - qDebug("booleans: %d %d %d %d", options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT()); - BTSession->setProxySettings(proxySettings, options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT()); - } else { - qDebug("Disabling P2P proxy"); - BTSession->setProxySettings(proxySettings, false, false, false, false); + qDebug("booleans: %d %d %d %d", options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT()); + BTSession->setProxySettings(proxySettings, options->useProxyForTrackers(), options->useProxyForPeers(), options->useProxyForWebseeds(), options->useProxyForDHT()); + } else { + qDebug("Disabling P2P proxy"); + BTSession->setProxySettings(proxySettings, false, false, false, false); + } + if(options->isHTTPProxyEnabled()) { + qDebug("Enabling Search HTTP proxy"); + // HTTP Proxy + QString proxy_str; + switch(options->getHTTPProxyType()) { + case HTTP_PW: + proxy_str = misc::toQString("http://")+options->getHTTPProxyUsername()+":"+options->getHTTPProxyPassword()+"@"+options->getHTTPProxyIp()+":"+misc::toQString(options->getHTTPProxyPort()); + break; + default: + proxy_str = misc::toQString("http://")+options->getHTTPProxyIp()+":"+misc::toQString(options->getHTTPProxyPort()); } - if(options->isHTTPProxyEnabled()) { - qDebug("Enabling Search HTTP proxy"); - // HTTP Proxy - QString proxy_str; - switch(options->getHTTPProxyType()) { - case HTTP_PW: - proxy_str = misc::toQString("http://")+options->getHTTPProxyUsername()+":"+options->getHTTPProxyPassword()+"@"+options->getHTTPProxyIp()+":"+misc::toQString(options->getHTTPProxyPort()); - break; - default: - proxy_str = misc::toQString("http://")+options->getHTTPProxyIp()+":"+misc::toQString(options->getHTTPProxyPort()); - } - // We need this for urllib in search engine plugins + // We need this for urllib in search engine plugins #ifdef Q_WS_WIN - char proxystr[512]; - snprintf(proxystr, 512, "http_proxy=%s", proxy_str.toLocal8Bit().data()); - putenv(proxystr); + char proxystr[512]; + snprintf(proxystr, 512, "http_proxy=%s", proxy_str.toLocal8Bit().data()); + putenv(proxystr); #else - qDebug("HTTP: proxy string: %s", proxy_str.toLocal8Bit().data()); - setenv("http_proxy", proxy_str.toLocal8Bit().data(), 1); + qDebug("HTTP: proxy string: %s", proxy_str.toLocal8Bit().data()); + setenv("http_proxy", proxy_str.toLocal8Bit().data(), 1); #endif - } else { - qDebug("Disabling search proxy"); + } else { + qDebug("Disabling search proxy"); #ifdef Q_WS_WIN - putenv("http_proxy="); + putenv("http_proxy="); #else - unsetenv("http_proxy"); + unsetenv("http_proxy"); #endif + } + // Clean up + if(deleteOptions && options) { + qDebug("Deleting options"); + //delete options; + options->deleteLater(); + } + qDebug("Session configured"); +} + +void GUI::updateUnfinishedTorrentNumber(unsigned int nb) { + unsigned int paused = BTSession->getUnfinishedPausedTorrentsNb(); + tabs->setTabText(0, tr("Downloads") +QString::fromUtf8(" (")+misc::toQString(nb-paused)+"/"+misc::toQString(nb)+QString::fromUtf8(")")); +} + +void GUI::updateFinishedTorrentNumber(unsigned int nb) { + unsigned int paused = BTSession->getFinishedPausedTorrentsNb(); + tabs->setTabText(1, tr("Finished") +QString::fromUtf8(" (")+misc::toQString(nb-paused)+"/"+misc::toQString(nb)+QString::fromUtf8(")")); +} + +// Allow to change action on double-click +void GUI::torrentDoubleClicked(QString hash, bool finished) { + int action; + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); + QTorrentHandle h = BTSession->getTorrentHandle(hash); + + if(finished) { + action = settings.value(QString::fromUtf8("Preferences/Downloads/DblClOnTorFN"), 0).toInt(); + } else { + action = settings.value(QString::fromUtf8("Preferences/Downloads/DblClOnTorDl"), 0).toInt(); + } + + switch(action) { + case TOGGLE_PAUSE: + this->togglePausedState(hash); + break; + case OPEN_DEST: { + QTorrentHandle h = BTSession->getTorrentHandle(hash); + QString savePath = h.save_path(); + QDesktopServices::openUrl(QUrl(savePath)); + break; } - // Clean up - if(deleteOptions && options) { - qDebug("Deleting options"); - //delete options; - options->deleteLater(); - } - qDebug("Session configured"); - } - - void GUI::updateUnfinishedTorrentNumber(unsigned int nb) { - unsigned int paused = BTSession->getUnfinishedPausedTorrentsNb(); - tabs->setTabText(0, tr("Downloads") +QString::fromUtf8(" (")+misc::toQString(nb-paused)+"/"+misc::toQString(nb)+QString::fromUtf8(")")); - } - - void GUI::updateFinishedTorrentNumber(unsigned int nb) { - unsigned int paused = BTSession->getFinishedPausedTorrentsNb(); - tabs->setTabText(1, tr("Finished") +QString::fromUtf8(" (")+misc::toQString(nb-paused)+"/"+misc::toQString(nb)+QString::fromUtf8(")")); - } - - // Allow to change action on double-click - void GUI::torrentDoubleClicked(QString hash, bool finished) { - int action; - QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - QTorrentHandle h = BTSession->getTorrentHandle(hash); - + case SHOW_PROPERTIES : if(finished) { - action = settings.value(QString::fromUtf8("Preferences/Downloads/DblClOnTorFN"), 0).toInt(); + finishedTorrentTab->showPropertiesFromHash(hash); } else { - action = settings.value(QString::fromUtf8("Preferences/Downloads/DblClOnTorDl"), 0).toInt(); + downloadingTorrentTab->showPropertiesFromHash(hash); } - - switch(action) { - case TOGGLE_PAUSE: - this->togglePausedState(hash); - break; - case OPEN_DEST: { - QTorrentHandle h = BTSession->getTorrentHandle(hash); - QString savePath = h.save_path(); - QDesktopServices::openUrl(QUrl(savePath)); - break; - } - case SHOW_PROPERTIES : - if(finished) { - finishedTorrentTab->showPropertiesFromHash(hash); - } else { - downloadingTorrentTab->showPropertiesFromHash(hash); - } - break; + break; + } +} + +// Toggle paused state of selected torrent +void GUI::togglePausedState(QString hash) { + if(tabs->currentIndex() > 1) return; + bool inDownloadList = true; + if(tabs->currentIndex() == 1) + inDownloadList = false; + QTorrentHandle h = BTSession->getTorrentHandle(hash); + if(h.is_paused()) { + h.resume(); + resumedTorrent(h); + if(inDownloadList) { + updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); + }else{ + updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); + } + }else{ + h.pause(); + pausedTorrent(h); + if(inDownloadList) { + updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); + }else{ + updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); } } - - // Toggle paused state of selected torrent - void GUI::togglePausedState(QString hash) { - if(tabs->currentIndex() > 1) return; - bool inDownloadList = true; - if(tabs->currentIndex() == 1) - inDownloadList = false; +} + +// Pause All Downloads in DL list +void GUI::on_actionPause_All_triggered() { + bool change = false; + std::vector torrents = BTSession->getTorrents(); + std::vector::iterator torrentIT; + for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { + QTorrentHandle h = QTorrentHandle(*torrentIT); + if(!h.is_valid() || h.is_paused()) continue; + change = true; + h.pause(); + pausedTorrent(h); + } + if(change) { + updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); + updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); + } +} + +void GUI::on_actionIncreasePriority_triggered() { + if(tabs->currentIndex() != 0) + return; + QStringList hashes = downloadingTorrentTab->getSelectedTorrents(); + foreach(const QString &hash, hashes) { + BTSession->increaseDlTorrentPriority(hash); + } + updateLists(); +} + +void GUI::on_actionDecreasePriority_triggered() { + Q_ASSERT(tabs->currentIndex() == 0); + QStringList hashes = downloadingTorrentTab->getSelectedTorrents(); + foreach(const QString &hash, hashes) { + BTSession->decreaseDlTorrentPriority(hash); + } + updateLists(); +} + +// pause selected items in the list +void GUI::on_actionPause_triggered() { + bool inDownloadList = true; + if(tabs->currentIndex() > 1) return; + if(tabs->currentIndex() == 1) + inDownloadList = false; + QStringList hashes; + if(inDownloadList) { + hashes = downloadingTorrentTab->getSelectedTorrents(); + } else { + hashes = finishedTorrentTab->getSelectedTorrents(); + } + qDebug("nb hashes: %d", hashes.size()); + foreach(const QString &hash, hashes) { QTorrentHandle h = BTSession->getTorrentHandle(hash); - if(h.is_paused()) { - h.resume(); - resumedTorrent(h); - if(inDownloadList) { - updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); - }else{ - updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); - } - }else{ + if(!h.is_paused()){ h.pause(); pausedTorrent(h); if(inDownloadList) { updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); - }else{ + } else { updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); } } } - - // Pause All Downloads in DL list - void GUI::on_actionPause_All_triggered() { - bool change = false; - std::vector torrents = BTSession->getTorrents(); - std::vector::iterator torrentIT; - for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { - QTorrentHandle h = QTorrentHandle(*torrentIT); - if(!h.is_valid() || h.is_paused()) continue; - change = true; - h.pause(); - pausedTorrent(h); - } - if(change) { - updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); - updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); - } - } - - void GUI::on_actionIncreasePriority_triggered() { - if(tabs->currentIndex() != 0) - return; - QStringList hashes = downloadingTorrentTab->getSelectedTorrents(); - foreach(const QString &hash, hashes) { - BTSession->increaseDlTorrentPriority(hash); - } - updateLists(); - } - - void GUI::on_actionDecreasePriority_triggered() { - Q_ASSERT(tabs->currentIndex() == 0); - QStringList hashes = downloadingTorrentTab->getSelectedTorrents(); - foreach(const QString &hash, hashes) { - BTSession->decreaseDlTorrentPriority(hash); - } - updateLists(); - } - - // pause selected items in the list - void GUI::on_actionPause_triggered() { - bool inDownloadList = true; - if(tabs->currentIndex() > 1) return; - if(tabs->currentIndex() == 1) - inDownloadList = false; - QStringList hashes; - if(inDownloadList) { - hashes = downloadingTorrentTab->getSelectedTorrents(); - } else { - hashes = finishedTorrentTab->getSelectedTorrents(); - } - qDebug("nb hashes: %d", hashes.size()); - foreach(const QString &hash, hashes) { - QTorrentHandle h = BTSession->getTorrentHandle(hash); - if(!h.is_paused()){ - h.pause(); - pausedTorrent(h); - if(inDownloadList) { - updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); - } else { - updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); - } +} + +// Resume All Downloads in DL list +void GUI::on_actionStart_All_triggered() { + bool change = false; + std::vector torrents = BTSession->getTorrents(); + std::vector::iterator torrentIT; + for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { + QTorrentHandle h = QTorrentHandle(*torrentIT); + if(!h.is_valid() || !h.is_paused()) continue; + change = true; + h.resume(); + resumedTorrent(h); + } + if(change) { + updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); + updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); + } +} + +// start selected items in the list +void GUI::on_actionStart_triggered() { + bool inDownloadList = true; + if(tabs->currentIndex() > 1) return; + if(tabs->currentIndex() == 1) + inDownloadList = false; + QStringList hashes; + if(inDownloadList) { + hashes = downloadingTorrentTab->getSelectedTorrents(); + } else { + hashes = finishedTorrentTab->getSelectedTorrents(); + } + foreach(const QString &hash, hashes) { + QTorrentHandle h = BTSession->getTorrentHandle(hash); + if(h.is_paused()){ + h.resume(); + resumedTorrent(h); + if(inDownloadList) { + updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); + } else { + updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); } } } - - // Resume All Downloads in DL list - void GUI::on_actionStart_All_triggered() { - bool change = false; +} + +void GUI::addUnauthenticatedTracker(QPair tracker) { + // Trackers whose authentication was cancelled + if(unauthenticated_trackers.indexOf(tracker) < 0) { + unauthenticated_trackers << tracker; + } +} + +// display properties of selected items +void GUI::on_actionTorrent_Properties_triggered() { + if(tabs->currentIndex() > 1) return; + switch(tabs->currentIndex()){ + case 1: // DL List + finishedTorrentTab->propertiesSelection(); + break; + default: + downloadingTorrentTab->propertiesSelection(); + } +} + +void GUI::updateLists(bool force) { + if(isVisible() || force) { + // update global informations + dlSpeedLbl->setText(tr("DL: %1 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1)))); + upSpeedLbl->setText(tr("UP: %1 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1)))); std::vector torrents = BTSession->getTorrents(); std::vector::iterator torrentIT; for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { QTorrentHandle h = QTorrentHandle(*torrentIT); - if(!h.is_valid() || !h.is_paused()) continue; - change = true; - h.resume(); - resumedTorrent(h); - } - if(change) { - updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); - updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); - } - } - - // start selected items in the list - void GUI::on_actionStart_triggered() { - bool inDownloadList = true; - if(tabs->currentIndex() > 1) return; - if(tabs->currentIndex() == 1) - inDownloadList = false; - QStringList hashes; - if(inDownloadList) { - hashes = downloadingTorrentTab->getSelectedTorrents(); - } else { - hashes = finishedTorrentTab->getSelectedTorrents(); - } - foreach(const QString &hash, hashes) { - QTorrentHandle h = BTSession->getTorrentHandle(hash); - if(h.is_paused()){ - h.resume(); - resumedTorrent(h); - if(inDownloadList) { - updateUnfinishedTorrentNumber(downloadingTorrentTab->getNbTorrentsInList()); + if(!h.is_valid()) continue; + try { + if(h.is_seed()) { + // Update in finished list + finishedTorrentTab->updateTorrent(h); } else { - updateFinishedTorrentNumber(finishedTorrentTab->getNbTorrentsInList()); - } - } - } - } - - void GUI::addUnauthenticatedTracker(QPair tracker) { - // Trackers whose authentication was cancelled - if(unauthenticated_trackers.indexOf(tracker) < 0) { - unauthenticated_trackers << tracker; - } - } - - // display properties of selected items - void GUI::on_actionTorrent_Properties_triggered() { - if(tabs->currentIndex() > 1) return; - switch(tabs->currentIndex()){ - case 1: // DL List - finishedTorrentTab->propertiesSelection(); - break; - default: - downloadingTorrentTab->propertiesSelection(); - } - } - - void GUI::updateLists(bool force) { - if(isVisible() || force) { - // update global informations - dlSpeedLbl->setText(tr("DL: %1 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1)))); - upSpeedLbl->setText(tr("UP: %1 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1)))); - std::vector torrents = BTSession->getTorrents(); - std::vector::iterator torrentIT; - for(torrentIT = torrents.begin(); torrentIT != torrents.end(); torrentIT++) { - QTorrentHandle h = QTorrentHandle(*torrentIT); - if(!h.is_valid()) continue; - try { - if(h.is_seed()) { - // Update in finished list - finishedTorrentTab->updateTorrent(h); - } else { - // Update in download list - if(downloadingTorrentTab->updateTorrent(h)) { - // Torrent was added, we may need to remove it from finished tab - finishedTorrentTab->deleteTorrent(h.hash()); - TorrentPersistentData::saveSeedStatus(h); - } + // Update in download list + if(downloadingTorrentTab->updateTorrent(h)) { + // Torrent was added, we may need to remove it from finished tab + finishedTorrentTab->deleteTorrent(h.hash()); + TorrentPersistentData::saveSeedStatus(h); } - } catch(invalid_handle e) { - qDebug("Caught Invalid handle exception, lucky us."); } + } catch(invalid_handle e) { + qDebug("Caught Invalid handle exception, lucky us."); } } - if(displaySpeedInTitle) { - QString dl_rate = QByteArray::number(BTSession->getSessionStatus().payload_download_rate/1024, 'f', 1); - QString up_rate = QByteArray::number(BTSession->getSessionStatus().payload_upload_rate/1024, 'f', 1); - setWindowTitle(tr("qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s)", "%1 is qBittorrent version").arg(QString::fromUtf8(VERSION)).arg(dl_rate).arg(up_rate)); - } } - - // Called when a tracker requires authentication - void GUI::trackerAuthenticationRequired(QTorrentHandle& h) { - if(unauthenticated_trackers.indexOf(QPair(h, h.current_tracker())) < 0) { - // Tracker login - new trackerLogin(this, h); - } + if(displaySpeedInTitle) { + QString dl_rate = QByteArray::number(BTSession->getSessionStatus().payload_download_rate/1024, 'f', 1); + QString up_rate = QByteArray::number(BTSession->getSessionStatus().payload_upload_rate/1024, 'f', 1); + setWindowTitle(tr("qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s)", "%1 is qBittorrent version").arg(QString::fromUtf8(VERSION)).arg(dl_rate).arg(up_rate)); } - - // Check connection status and display right icon - void GUI::checkConnectionStatus() { - // qDebug("Checking connection status"); - // Update Ratio - updateRatio(); - // update global informations - if(systrayIntegration) { +} + +// Called when a tracker requires authentication +void GUI::trackerAuthenticationRequired(QTorrentHandle& h) { + if(unauthenticated_trackers.indexOf(QPair(h, h.current_tracker())) < 0) { + // Tracker login + new trackerLogin(this, h); + } +} + +// Check connection status and display right icon +void GUI::checkConnectionStatus() { + // qDebug("Checking connection status"); + // Update Ratio + updateRatio(); + // update global informations + if(systrayIntegration) { #ifdef Q_WS_WIN - // Windows does not support html here - QString html =tr("DL speed: %1 KiB/s", "e.g: Download speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1))); - html += "\n"; - html += tr("UP speed: %1 KiB/s", "e.g: Upload speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1))); + // Windows does not support html here + QString html =tr("DL speed: %1 KiB/s", "e.g: Download speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1))); + html += "\n"; + html += tr("UP speed: %1 KiB/s", "e.g: Upload speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1))); #else - QString html = "
"; - html += tr("qBittorrent"); - html += "
"; - html += "
"; - html += " "+tr("DL speed: %1 KiB/s", "e.g: Download speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1))); - html += "
"; - html += "
"; - html += " "+tr("UP speed: %1 KiB/s", "e.g: Upload speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1))); - html += "
"; + QString html = "
"; + html += tr("qBittorrent"); + html += "
"; + html += "
"; + html += " "+tr("DL speed: %1 KiB/s", "e.g: Download speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadDownloadRate()/1024., 'f', 1))); + html += "
"; + html += "
"; + html += " "+tr("UP speed: %1 KiB/s", "e.g: Upload speed: 10 KiB/s").arg(QString(QByteArray::number(BTSession->getPayloadUploadRate()/1024., 'f', 1))); + html += "
"; #endif - myTrayIcon->setToolTip(html); // tray icon - } - session_status sessionStatus = BTSession->getSessionStatus(); - if(sessionStatus.has_incoming_connections) { - // Connection OK - connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/connected.png"))); - connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection Status:")+QString::fromUtf8("
")+tr("Online")); - }else{ - connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png"))); - connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection status:")+QString::fromUtf8("
")+QString::fromUtf8("")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("")); - } + myTrayIcon->setToolTip(html); // tray icon } - - /***************************************************** + session_status sessionStatus = BTSession->getSessionStatus(); + if(sessionStatus.has_incoming_connections) { + // Connection OK + connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/connected.png"))); + connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection Status:")+QString::fromUtf8("
")+tr("Online")); + }else{ + connecStatusLblIcon->setPixmap(QPixmap(QString::fromUtf8(":/Icons/skin/firewalled.png"))); + connecStatusLblIcon->setToolTip(QString::fromUtf8("")+tr("Connection status:")+QString::fromUtf8("
")+QString::fromUtf8("")+tr("No direct connections. This may indicate network configuration problems.")+QString::fromUtf8("")); + } +} + +/***************************************************** * * * Utils * * * *****************************************************/ - - void GUI::downloadFromURLList(const QStringList& url_list) { - foreach(const QString url, url_list) { - if(url.startsWith("magnet:", Qt::CaseInsensitive)) { - BTSession->addMagnetUri(url); - } else { - BTSession->downloadFromUrl(url); - } + +void GUI::downloadFromURLList(const QStringList& url_list) { + foreach(const QString url, url_list) { + if(url.startsWith("magnet:", Qt::CaseInsensitive)) { + BTSession->addMagnetUri(url); + } else { + BTSession->downloadFromUrl(url); } } - - /***************************************************** +} + +/***************************************************** * * * Options * * * *****************************************************/ - - void GUI::createSystrayDelayed() { - static int timeout = 10; - if(QSystemTrayIcon::isSystemTrayAvailable()) { - // Ok, systray integration is now supported - // Create systray icon - createTrayIcon(); - systrayIntegration = true; - delete systrayCreator; + +void GUI::createSystrayDelayed() { + static int timeout = 10; + if(QSystemTrayIcon::isSystemTrayAvailable()) { + // Ok, systray integration is now supported + // Create systray icon + createTrayIcon(); + systrayIntegration = true; + delete systrayCreator; + } else { + if(timeout) { + // Retry a bit later + systrayCreator->start(1000); + --timeout; } else { - if(timeout) { - // Retry a bit later - systrayCreator->start(1000); - --timeout; - } else { - // Timed out, apparently system really does not - // support systray icon - delete systrayCreator; - } + // Timed out, apparently system really does not + // support systray icon + delete systrayCreator; } } - - void GUI::createTrayIcon() { - // Tray icon +} + +void GUI::createTrayIcon() { + // Tray icon #ifdef Q_WS_WIN - myTrayIcon = new QSystemTrayIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent16.png")), this); + myTrayIcon = new QSystemTrayIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent16.png")), this); #endif #ifndef Q_WS_WIN - myTrayIcon = new QSystemTrayIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent22.png")), this); + myTrayIcon = new QSystemTrayIcon(QIcon(QString::fromUtf8(":/Icons/skin/qbittorrent22.png")), this); #endif - // Tray icon Menu - myTrayIconMenu = new QMenu(this); - myTrayIconMenu->addAction(actionOpen); - myTrayIconMenu->addAction(actionDownload_from_URL); - myTrayIconMenu->addSeparator(); - myTrayIconMenu->addAction(actionSet_global_download_limit); - myTrayIconMenu->addAction(actionSet_global_upload_limit); - myTrayIconMenu->addSeparator(); - myTrayIconMenu->addAction(actionStart_All); - myTrayIconMenu->addAction(actionPause_All); - myTrayIconMenu->addSeparator(); - myTrayIconMenu->addAction(actionExit); - myTrayIcon->setContextMenu(myTrayIconMenu); - connect(myTrayIcon, SIGNAL(messageClicked()), this, SLOT(balloonClicked())); - // End of Icon Menu - connect(myTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(toggleVisibility(QSystemTrayIcon::ActivationReason))); - myTrayIcon->show(); - } - - // Display Program Options - void GUI::on_actionOptions_triggered() { - options = new options_imp(this); - connect(options, SIGNAL(status_changed(bool)), this, SLOT(OptionsSaved(bool))); - options->show(); - } - - // Is executed each time options are saved - void GUI::OptionsSaved(bool deleteOptions) { - BTSession->addConsoleMessage(tr("Options were saved successfully.")); - bool newSystrayIntegration = options->systrayIntegration(); - if(newSystrayIntegration != systrayIntegration) { - if(newSystrayIntegration) { - // create the trayicon - createTrayIcon(); - } else { - // Destroy trayicon - delete myTrayIcon; - delete myTrayIconMenu; - } - systrayIntegration = newSystrayIntegration; - } - // Update Web UI - if (options->isWebUiEnabled()) { - quint16 port = options->webUiPort(); - QString username = options->webUiUsername(); - QString password = options->webUiPassword(); - initWebUi(username, password, port); - } else if(httpServer) { - delete httpServer; + // Tray icon Menu + myTrayIconMenu = new QMenu(this); + myTrayIconMenu->addAction(actionOpen); + myTrayIconMenu->addAction(actionDownload_from_URL); + myTrayIconMenu->addSeparator(); + myTrayIconMenu->addAction(actionSet_global_download_limit); + myTrayIconMenu->addAction(actionSet_global_upload_limit); + myTrayIconMenu->addSeparator(); + myTrayIconMenu->addAction(actionStart_All); + myTrayIconMenu->addAction(actionPause_All); + myTrayIconMenu->addSeparator(); + myTrayIconMenu->addAction(actionExit); + myTrayIcon->setContextMenu(myTrayIconMenu); + connect(myTrayIcon, SIGNAL(messageClicked()), this, SLOT(balloonClicked())); + // End of Icon Menu + connect(myTrayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), this, SLOT(toggleVisibility(QSystemTrayIcon::ActivationReason))); + myTrayIcon->show(); +} + +// Display Program Options +void GUI::on_actionOptions_triggered() { + options = new options_imp(this); + connect(options, SIGNAL(status_changed(bool)), this, SLOT(OptionsSaved(bool))); + options->show(); +} + +// Is executed each time options are saved +void GUI::OptionsSaved(bool deleteOptions) { + BTSession->addConsoleMessage(tr("Options were saved successfully.")); + bool newSystrayIntegration = options->systrayIntegration(); + if(newSystrayIntegration != systrayIntegration) { + if(newSystrayIntegration) { + // create the trayicon + createTrayIcon(); + } else { + // Destroy trayicon + delete myTrayIcon; + delete myTrayIconMenu; } - // Update session - configureSession(deleteOptions); + systrayIntegration = newSystrayIntegration; } - - bool GUI::initWebUi(QString username, QString password, int port) { - if(httpServer) - httpServer->close(); - else - httpServer = new HttpServer(BTSession, 3000, this); - httpServer->setAuthorization(username, password); - bool success = httpServer->listen(QHostAddress::Any, port); - if (success) - qDebug("Web UI listening on port %d", port); - else - QMessageBox::critical(this, "Web User Interface Error", "Unable to initialize HTTP Server on port " + misc::toQString(port)); - return success; + // Update Web UI + if (options->isWebUiEnabled()) { + quint16 port = options->webUiPort(); + QString username = options->webUiUsername(); + QString password = options->webUiPassword(); + initWebUi(username, password, port); + } else if(httpServer) { + delete httpServer; } - - /***************************************************** + // Update session + configureSession(deleteOptions); +} + +bool GUI::initWebUi(QString username, QString password, int port) { + if(httpServer) + httpServer->close(); + else + httpServer = new HttpServer(BTSession, 3000, this); + httpServer->setAuthorization(username, password); + bool success = httpServer->listen(QHostAddress::Any, port); + if (success) + qDebug("Web UI listening on port %d", port); + else + QMessageBox::critical(this, "Web User Interface Error", "Unable to initialize HTTP Server on port " + misc::toQString(port)); + return success; +} + +/***************************************************** * * * HTTP Downloader * * * *****************************************************/ - - // Display an input dialog to prompt user for - // an url - void GUI::on_actionDownload_from_URL_triggered() { - downloadFromURL *downloadFromURLDialog = new downloadFromURL(this); - connect(downloadFromURLDialog, SIGNAL(urlsReadyToBeDownloaded(const QStringList&)), BTSession, SLOT(downloadFromURLList(const QStringList&))); - } - + +// Display an input dialog to prompt user for +// an url +void GUI::on_actionDownload_from_URL_triggered() { + downloadFromURL *downloadFromURLDialog = new downloadFromURL(this); + connect(downloadFromURLDialog, SIGNAL(urlsReadyToBeDownloaded(const QStringList&)), BTSession, SLOT(downloadFromURLList(const QStringList&))); +} + diff --git a/src/GUI.h b/src/GUI.h index 3c81d2b06..1c789f7fc 100644 --- a/src/GUI.h +++ b/src/GUI.h @@ -44,13 +44,8 @@ class DownloadingTorrents; class FinishedTorrents; class downloadFromURL; class SearchEngine; -#ifdef QT_4_4 - class QLocalServer; - class QLocalSocket; -#else - class QTcpServer; - class QTcpSocket; -#endif +class QLocalServer; +class QLocalSocket; class QCloseEvent; class RSSImp; class QShortcut; @@ -109,13 +104,8 @@ class GUI : public QMainWindow, private Ui::MainWindow{ // Web UI QPointer httpServer; // Misc -#ifdef QT_4_4 QLocalServer *localServer; QLocalSocket *clientConnection; -#else - QTcpServer *localServer; - QTcpSocket *clientConnection; -#endif protected slots: // GUI related slots diff --git a/src/about_imp.h b/src/about_imp.h index 190688094..67120768b 100644 --- a/src/about_imp.h +++ b/src/about_imp.h @@ -52,10 +52,10 @@ class about : public QDialog, private Ui::AboutDlg{ lb_name->setText(QString::fromUtf8("

")+tr("qBittorrent")+QString::fromUtf8(" "VERSION"

")); // Thanks te_thanks->append(QString::fromUtf8("")); - te_thanks->append(QString::fromUtf8("
  • I would like to thank sourceforge.net for hosting qBittorrent project.
  • ")); - te_thanks->append(QString::fromUtf8("
  • I am happy that Ishan Arora and Arnaud Demaizière are contributing to the project as developers. Their help is greatly appreciated
  • ")); - te_thanks->append(QString::fromUtf8("
  • I also want to thank Jeffery Fernandez (jeffery@qbittorrent.org), project consultant, RPM packager, for his help and support.
  • ")); - te_thanks->append(QString::fromUtf8("
  • I am grateful to Peter Koeleman (peter@qbittorrent.org) who is helping port qBittorrent to Windows.
  • ")); + te_thanks->append(QString::fromUtf8("
    • I would first like to thank sourceforge.net for hosting qBittorrent project and for their support.
    • ")); + te_thanks->append(QString::fromUtf8("
    • I am pleased that people from all over the world are contributing to qBittorrent: Ishan Arora (India), Arnaud Demaizière (France) and Stephanos Antaris (Greece). Their help is greatly appreciated
    • ")); + te_thanks->append(QString::fromUtf8("
    • I also want to thank Jeffery Fernandez (jeffery@qbittorrent.org), project consultant, for his help and support since the beginning of this project.
    • ")); + te_thanks->append(QString::fromUtf8("
    • I am grateful to Peter Koeleman (peter@qbittorrent.org) for working on qBittorrent port to Windows.
    • ")); te_thanks->append(QString::fromUtf8("
    • Thanks a lot to our graphist Mateusz Toboła (tobejodok@qbittorrent.org) for his great work.


    ")); te_thanks->scrollToAnchor(QString::fromUtf8("top")); // Translation diff --git a/src/addTorrentDialog.ui b/src/addTorrentDialog.ui index 7f0004d21..7a6efd96a 100644 --- a/src/addTorrentDialog.ui +++ b/src/addTorrentDialog.ui @@ -207,6 +207,13 @@ + + + + Skip file checking and start seeding immediately + + + diff --git a/src/bittorrent.cpp b/src/bittorrent.cpp index 1afcb2a73..281de1b89 100644 --- a/src/bittorrent.cpp +++ b/src/bittorrent.cpp @@ -64,8 +64,8 @@ bittorrent::bittorrent() : DHTEnabled(false), preAllocateAll(false), addInPause( // Check if we should spoof utorrent QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); if(settings.value(QString::fromUtf8("Preferences/Bittorrent/AzureusSpoof"), false).toBool()) { - s = new session(fingerprint("UT", 1, 8, 4, 0), 0); - qDebug("Peer ID: %s", fingerprint("UT", 1, 8, 4, 0).to_string().c_str()); + s = new session(fingerprint("UT", 1, 8, 5, 0), 0); + qDebug("Peer ID: %s", fingerprint("UT", 1, 8, 5, 0).to_string().c_str()); } else { s = new session(fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0), 0); qDebug("Peer ID: %s", fingerprint("qB", VERSION_MAJOR, VERSION_MINOR, VERSION_BUGFIX, 0).to_string().c_str()); @@ -581,6 +581,14 @@ QTorrentHandle bittorrent::addTorrent(QString path, bool fromScanDir, QString fr } else { p.save_path = defaultTempPath.toLocal8Bit().data(); } + + // Skip checking and directly start seeding (new in libtorrent v0.15) + if(TorrentTempData::isSeedingMode(hash)){ + p.seed_mode=true; + } else { + p.seed_mode=false; + } + // TODO: Remove in v1.6.0: For backward compatibility only if(QFile::exists(misc::qBittorrentPath()+"BT_backup"+QDir::separator()+hash+".finished")) { p.save_path = savePath.toLocal8Bit().data(); @@ -858,7 +866,8 @@ void bittorrent::loadFilesPriorities(QTorrentHandle &h) { qDebug("Setting file piority to %d", priority); v.push_back(priority); } - h.prioritize_files(v); + if(v.size() == (unsigned int)h.num_files()) + h.prioritize_files(v); } float bittorrent::getRealRatio(QString hash) const{ @@ -983,6 +992,12 @@ void bittorrent::scanDirectory(QString scan_dir) { FSMutex->lock(); qDebug("Scanning directory: %s", scan_dir.toLocal8Bit().data()); QDir dir(scan_dir); + QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); + // Check that scan dir is not BT_backup (silly but who knows...) + if(dir == torrentBackup) { + std::cerr << "Scan directory cannot be qBittorrent backup folder!" << std::endl; + return; + } QStringList filters; filters << "*.torrent"; QStringList files = dir.entryList(filters, QDir::Files, QDir::Unsorted); @@ -1522,14 +1537,31 @@ void bittorrent::applyEncryptionSettings(pe_settings se) { // backup directory void bittorrent::startUpTorrents() { qDebug("Resuming unfinished torrents"); + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); QStringList fileNames; QStringList known_torrents = TorrentPersistentData::knownTorrents(); - if(known_torrents.empty()) { + + if(known_torrents.empty() && !settings.value("v1_4_x_torrent_imported", false).toBool()) { qDebug("No known torrent, importing old torrents"); importOldTorrents(); return; } + + // Safety measure because some people reported torrent loss since + // we switch the v1.5 way of resuming torrents on startup + QStringList filters; + filters << "*.torrent"; + QStringList torrents_on_hd = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); + foreach(QString hash, torrents_on_hd) { + hash.chop(8); // remove trailing .torrent + if(!known_torrents.contains(hash)) { + std::cerr << "ERROR Detected!!! Adding back torrent " << hash.toLocal8Bit().data() << " which got lost for some reason." << std::endl; + addTorrent(torrentBackup.path()+QDir::separator()+hash+".torrent", false, QString(), true); + } + } + // End of safety measure + qDebug("Starting up torrents"); if(isQueueingEnabled()) { QList > hashes; @@ -1690,79 +1722,78 @@ void bittorrent::applyFormerAttributeFiles(QTorrentHandle h) { // TODO: Remove in qBittorrent v1.6.0 void bittorrent::importOldTorrents() { QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent")); - if(!settings.value("v1_4_x_torrent_imported", false).toBool()) { - // Import old torrent - QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); - QStringList fileNames; - QStringList filters; - filters << "*.torrent"; - fileNames = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); - if(isQueueingEnabled()) { - QList > filePaths; - foreach(const QString &fileName, fileNames) { - QString filePath = torrentBackup.path()+QDir::separator()+fileName; - int prio = 99999; - // Get priority - QString prioPath = filePath; - prioPath.replace(".torrent", ".prio"); - if(QFile::exists(prioPath)) { - QFile prio_file(prioPath); - if(prio_file.open(QIODevice::ReadOnly | QIODevice::Text)) { - bool ok = false; - prio = prio_file.readAll().toInt(&ok); - if(!ok) - prio = 99999; - prio_file.close(); - } + Q_ASSERT(!settings.value("v1_4_x_torrent_imported", false).toBool()); + // Import old torrent + QDir torrentBackup(misc::qBittorrentPath() + "BT_backup"); + QStringList fileNames; + QStringList filters; + filters << "*.torrent"; + fileNames = torrentBackup.entryList(filters, QDir::Files, QDir::Unsorted); + if(isQueueingEnabled()) { + QList > filePaths; + foreach(const QString &fileName, fileNames) { + QString filePath = torrentBackup.path()+QDir::separator()+fileName; + int prio = 99999; + // Get priority + QString prioPath = filePath; + prioPath.replace(".torrent", ".prio"); + if(QFile::exists(prioPath)) { + QFile prio_file(prioPath); + if(prio_file.open(QIODevice::ReadOnly | QIODevice::Text)) { + bool ok = false; + prio = prio_file.readAll().toInt(&ok); + if(!ok) + prio = 99999; + prio_file.close(); } - misc::insertSort2(filePaths, qMakePair(prio, filePath)); } - // Resume downloads - QPair fileName; - foreach(fileName, filePaths) { - importOldTempData(fileName.second); - QTorrentHandle h = addTorrent(fileName.second, false, QString(), true); - // Sequential download - if(TorrentTempData::hasTempData(h.hash())) { - qDebug("addTorrent: Setting download as sequential (from tmp data)"); - h.set_sequential_download(TorrentTempData::isSequential(h.hash())); - } - applyFormerAttributeFiles(h); - QString savePath = TorrentTempData::getSavePath(h.hash()); - // Save persistent data for new torrent - TorrentPersistentData::saveTorrentPersistentData(h); - // Save save_path - if(!defaultTempPath.isEmpty() && !savePath.isNull()) { - qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data()); - TorrentPersistentData::saveSavePath(h.hash(), savePath); - } + misc::insertSort2(filePaths, qMakePair(prio, filePath)); + } + // Resume downloads + QPair fileName; + foreach(fileName, filePaths) { + importOldTempData(fileName.second); + QTorrentHandle h = addTorrent(fileName.second, false, QString(), true); + // Sequential download + if(TorrentTempData::hasTempData(h.hash())) { + qDebug("addTorrent: Setting download as sequential (from tmp data)"); + h.set_sequential_download(TorrentTempData::isSequential(h.hash())); } - } else { - QStringList filePaths; - foreach(const QString &fileName, fileNames) { - filePaths.append(torrentBackup.path()+QDir::separator()+fileName); + applyFormerAttributeFiles(h); + QString savePath = TorrentTempData::getSavePath(h.hash()); + // Save persistent data for new torrent + TorrentPersistentData::saveTorrentPersistentData(h); + // Save save_path + if(!defaultTempPath.isEmpty() && !savePath.isNull()) { + qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data()); + TorrentPersistentData::saveSavePath(h.hash(), savePath); } - // Resume downloads - foreach(const QString &fileName, filePaths) { - importOldTempData(fileName); - QTorrentHandle h = addTorrent(fileName, false, QString(), true); - // Sequential download - if(TorrentTempData::hasTempData(h.hash())) { - qDebug("addTorrent: Setting download as sequential (from tmp data)"); - h.set_sequential_download(TorrentTempData::isSequential(h.hash())); - } - applyFormerAttributeFiles(h); - QString savePath = TorrentTempData::getSavePath(h.hash()); - // Save persistent data for new torrent - TorrentPersistentData::saveTorrentPersistentData(h); - // Save save_path - if(!defaultTempPath.isEmpty() && !savePath.isNull()) { - qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data()); - TorrentPersistentData::saveSavePath(h.hash(), savePath); - } + } + } else { + QStringList filePaths; + foreach(const QString &fileName, fileNames) { + filePaths.append(torrentBackup.path()+QDir::separator()+fileName); + } + // Resume downloads + foreach(const QString &fileName, filePaths) { + importOldTempData(fileName); + QTorrentHandle h = addTorrent(fileName, false, QString(), true); + // Sequential download + if(TorrentTempData::hasTempData(h.hash())) { + qDebug("addTorrent: Setting download as sequential (from tmp data)"); + h.set_sequential_download(TorrentTempData::isSequential(h.hash())); + } + applyFormerAttributeFiles(h); + QString savePath = TorrentTempData::getSavePath(h.hash()); + // Save persistent data for new torrent + TorrentPersistentData::saveTorrentPersistentData(h); + // Save save_path + if(!defaultTempPath.isEmpty() && !savePath.isNull()) { + qDebug("addTorrent: Saving save_path in persistent data: %s", savePath.toLocal8Bit().data()); + TorrentPersistentData::saveSavePath(h.hash(), savePath); } } - settings.setValue("v1_4_x_torrent_imported", true); - std::cout << "Successfully imported torrents from v1.4.x (or previous) instance" << std::endl; } + settings.setValue("v1_4_x_torrent_imported", true); + std::cout << "Successfully imported torrents from v1.4.x (or previous) instance" << std::endl; } diff --git a/src/downloadThread.cpp b/src/downloadThread.cpp index 2f90c74a4..2c83dbd8a 100644 --- a/src/downloadThread.cpp +++ b/src/downloadThread.cpp @@ -29,215 +29,140 @@ */ #include "downloadThread.h" -#include +#include #include -#include +#include +#include +#include -#define MAX_THREADS 3 +/** Download Thread **/ -// http://curl.rtin.bz/libcurl/c/libcurl-errors.html -QString subDownloadThread::errorCodeToString(CURLcode status) { - switch(status){ - case CURLE_FTP_CANT_GET_HOST: - case CURLE_COULDNT_RESOLVE_HOST: - return tr("Host is unreachable"); - case CURLE_READ_ERROR: - case CURLE_FILE_COULDNT_READ_FILE: - return tr("File was not found (404)"); - case CURLE_FTP_ACCESS_DENIED: - case CURLE_LOGIN_DENIED: - case CURLE_FTP_USER_PASSWORD_INCORRECT: - return tr("Connection was denied"); - case CURLE_URL_MALFORMAT: - return tr("Url is invalid"); - case CURLE_COULDNT_RESOLVE_PROXY: - return tr("Could not resolve proxy"); - //case 5: - // return tr("Connection forbidden (403)"); - //case 6: - // return tr("Connection was not authorized (401)"); - //case 7: - // return tr("Content has moved (301)"); - case CURLE_COULDNT_CONNECT: - return tr("Connection failure"); - case CURLE_OPERATION_TIMEOUTED: - return tr("Connection was timed out"); - case CURLE_INTERFACE_FAILED: - return tr("Incorrect network interface"); - default: - return tr("Unknown error"); - } +downloadThread::downloadThread(QObject* parent) : QObject(parent) { + networkManager = new QNetworkAccessManager(this); + connect(networkManager, SIGNAL(finished (QNetworkReply*)), this, SLOT(processDlFinished(QNetworkReply*))); } -subDownloadThread::subDownloadThread(QObject *parent, QString url) : QThread(parent), url(url), abort(false){} - -subDownloadThread::~subDownloadThread(){ - abort = true; - wait(); +downloadThread::~downloadThread(){ + delete networkManager; } -void subDownloadThread::run(){ - // Get a unique filename - QString filePath; - QTemporaryFile tmpfile; - tmpfile.setAutoRemove(false); - if (tmpfile.open()) { - filePath = tmpfile.fileName(); - qDebug("Temporary filename is: %s", filePath.toLocal8Bit().data()); +void downloadThread::processDlFinished(QNetworkReply* reply) { + QString url = reply->url().toString(); + if(reply->error() != QNetworkReply::NoError) { + // Failure + emit downloadFailure(url, errorCodeToString(reply->error())); } else { - emit downloadFailureST(this, url, tr("I/O Error")); - return; - } - tmpfile.close(); - // Now temporary file is created but closed so that - // curl can use it - FILE *f = fopen(filePath.toLocal8Bit().data(), "wb"); - if(!f) { - std::cerr << "couldn't open destination file" << "\n"; - return; - } - CURL *curl; - CURLcode res = (CURLcode)-1; - curl = curl_easy_init(); - if(curl) { - std::string c_url = url.toLocal8Bit().data(); - curl_easy_setopt(curl, CURLOPT_URL, c_url.c_str()); - // SSL support - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0); - curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 0); - // PROXY SUPPORT - QSettings settings("qBittorrent", "qBittorrent"); - int intValue = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxyType"), 0).toInt(); - if(intValue > 0) { - // Proxy enabled - QString IP = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/IP"), "0.0.0.0").toString(); - QString port = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Port"), 8080).toString(); - qDebug("Using proxy: %s", (IP+QString(":")+port).toLocal8Bit().data()); - curl_easy_setopt(curl, CURLOPT_PROXYPORT, (IP+QString(":")+port).toLocal8Bit().data()); - // Default proxy type is HTTP, we must change if it is SOCKS5 - if(intValue%2==0) { - qDebug("Proxy is SOCKS5, not HTTP"); - curl_easy_setopt(curl, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5); - } - // Authentication? - if(intValue > 2) { - qDebug("Proxy requires authentication, authenticating"); - QString username = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Username"), QString()).toString(); - QString password = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Password"), QString()).toString(); - curl_easy_setopt(curl, CURLOPT_PROXYUSERPWD, (username+QString(":")+password).toLocal8Bit().data()); + // Success + QString filePath; + QTemporaryFile tmpfile; + tmpfile.setAutoRemove(false); + if (tmpfile.open()) { + filePath = tmpfile.fileName(); + qDebug("Temporary filename is: %s", filePath.toLocal8Bit().data()); + if(reply->open(QIODevice::ReadOnly)) { + tmpfile.write(reply->readAll()); + reply->close(); + tmpfile.close(); + // Send finished signal + emit downloadFinished(url, filePath); + } else { + // Error when reading the request + tmpfile.close(); + emit downloadFailure(url, tr("I/O Error")); } - } - // We have to define CURLOPT_WRITEFUNCTION or it will crash on windows - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, fwrite); - curl_easy_setopt(curl, CURLOPT_WRITEDATA, f); - // Verbose - //curl_easy_setopt(curl, CURLOPT_VERBOSE, 1); - // No progress info (we don't use it) - curl_easy_setopt(curl, CURLOPT_NOPROGRESS, 1); - // Redirections - curl_easy_setopt(curl, CURLOPT_AUTOREFERER, 1); - curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); - curl_easy_setopt(curl, CURLOPT_MAXREDIRS, -1); - qDebug("Downloading %s", url.toLocal8Bit().data()); - if(!abort) - res = curl_easy_perform(curl); - qDebug("done downloading %s", url.toLocal8Bit().data()); - /* always cleanup */ - curl_easy_cleanup(curl); - fclose(f); - if(abort) - return; - if(res) { - emit downloadFailureST(this, url, errorCodeToString(res)); } else { - emit downloadFinishedST(this, url, filePath); + emit downloadFailure(url, tr("I/O Error")); } - qDebug("%s Raised the signal", url.toLocal8Bit().data()); - } else { - std::cerr << "Could not initialize CURL" << "\n"; } -} - -/** Download Thread **/ - -downloadThread::downloadThread(QObject* parent) : QThread(parent), abort(false){} - -downloadThread::~downloadThread(){ - mutex.lock(); - abort = true; - condition.wakeOne(); - mutex.unlock(); - //qDebug("downloadThread deleting subthreads..."); - qDeleteAll(subThreads); - //qDebug("downloadThread deleted subthreads"); - wait(); + // Clean up + reply->deleteLater(); } void downloadThread::downloadUrl(QString url){ - QMutexLocker locker(&mutex); - urls_queue.enqueue(url); - if(!isRunning()){ - start(); - }else{ - condition.wakeOne(); - } + // Update proxy settings + applyProxySettings(); + // Process download request + networkManager->get(QNetworkRequest(QUrl(url))); } -void downloadThread::run(){ - forever{ - if(abort) { - qDebug("DownloadThread aborting..."); - return; +void downloadThread::applyProxySettings() { + QNetworkProxy proxy; + QSettings settings("qBittorrent", "qBittorrent"); + int intValue = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxyType"), 0).toInt(); + if(intValue > 0) { + // Proxy enabled + QString IP = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/IP"), "0.0.0.0").toString(); + proxy.setHostName(IP); + QString port = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Port"), 8080).toString(); + qDebug("Using proxy: %s", (IP+QString(":")+port).toLocal8Bit().data()); + proxy.setPort(port.toUShort()); + // Default proxy type is HTTP, we must change if it is SOCKS5 + if(intValue%2==0) { + qDebug("Proxy is SOCKS5, not HTTP"); + proxy.setType(QNetworkProxy::Socks5Proxy); + } else { + proxy.setType(QNetworkProxy::HttpProxy); } - mutex.lock(); - if(!urls_queue.empty() && subThreads.size() < MAX_THREADS){ - QString url = urls_queue.dequeue(); - mutex.unlock(); - //qDebug("DownloadThread downloading %s...", url.toLocal8Bit().data()); - subDownloadThread *st = new subDownloadThread(0, url); - subThreads << st; - connect(st, SIGNAL(downloadFinishedST(subDownloadThread*, QString, QString)), this, SLOT(propagateDownloadedFile(subDownloadThread*, QString, QString))); - connect(st, SIGNAL(downloadFailureST(subDownloadThread*, QString, QString)), this, SLOT(propagateDownloadFailure(subDownloadThread*, QString, QString))); - st->start(); - }else{ - //qDebug("DownloadThread sleeping..."); - condition.wait(&mutex); - //qDebug("DownloadThread woke up"); - mutex.unlock(); + // Authentication? + if(intValue > 2) { + qDebug("Proxy requires authentication, authenticating"); + QString username = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Username"), QString()).toString(); + proxy.setUser(username); + QString password = settings.value(QString::fromUtf8("Preferences/Connection/HTTPProxy/Password"), QString()).toString(); + proxy.setPassword(password); } - } -} -void downloadThread::propagateDownloadedFile(subDownloadThread* st, QString url, QString path){ - qDebug("Downloading %s was successful", url.toLocal8Bit().data()); - mutex.lock(); - int index = subThreads.indexOf(st); - Q_ASSERT(index != -1); - subThreads.removeAt(index); - mutex.unlock(); - qDebug("Deleting subthread"); - delete st; - emit downloadFinished(url, path); - mutex.lock(); - if(!urls_queue.empty()) { - condition.wakeOne(); + } else { + proxy.setType(QNetworkProxy::NoProxy); } - mutex.unlock(); - qDebug("Out of propagateDownloadedFile"); + networkManager->setProxy(proxy); } -void downloadThread::propagateDownloadFailure(subDownloadThread* st, QString url, QString reason){ - qDebug("Downloading %s failed", url.toLocal8Bit().data()); - mutex.lock(); - int index = subThreads.indexOf(st); - Q_ASSERT(index != -1); - subThreads.removeAt(index); - mutex.unlock(); - delete st; - emit downloadFailure(url, reason); - mutex.lock(); - if(!urls_queue.empty()) { - condition.wakeOne(); +QString downloadThread::errorCodeToString(QNetworkReply::NetworkError status) { + switch(status){ + case QNetworkReply::HostNotFoundError: + return tr("The remote host name was not found (invalid hostname)"); + case QNetworkReply::OperationCanceledError: + return tr("The operation was canceled"); + case QNetworkReply::RemoteHostClosedError: + return tr("The remote server closed the connection prematurely, before the entire reply was received and processed"); + case QNetworkReply::TimeoutError: + return tr("The connection to the remote server timed out"); + case QNetworkReply::SslHandshakeFailedError: + return tr("SSL/TLS handshake failed"); + case QNetworkReply::ConnectionRefusedError: + return tr("The remote server refused the connection"); + case QNetworkReply::ProxyConnectionRefusedError: + return tr("The connection to the proxy server was refused"); + case QNetworkReply::ProxyConnectionClosedError: + return tr("The proxy server closed the connection prematurely"); + case QNetworkReply::ProxyNotFoundError: + return tr("The proxy host name was not found"); + case QNetworkReply::ProxyTimeoutError: + return tr("The connection to the proxy timed out or the proxy did not reply in time to the request sent"); + case QNetworkReply::ProxyAuthenticationRequiredError: + return tr("The proxy requires authentication in order to honour the request but did not accept any credentials offered"); + case QNetworkReply::ContentAccessDenied: + return tr("The access to the remote content was denied (401)"); + case QNetworkReply::ContentOperationNotPermittedError: + return tr("The operation requested on the remote content is not permitted"); + case QNetworkReply::ContentNotFoundError: + return tr("The remote content was not found at the server (404)"); + case QNetworkReply::AuthenticationRequiredError: + return tr("The remote server requires authentication to serve the content but the credentials provided were not accepted"); + case QNetworkReply::ProtocolUnknownError: + return tr("The Network Access API cannot honor the request because the protocol is not known"); + case QNetworkReply::ProtocolInvalidOperationError: + return tr("The requested operation is invalid for this protocol"); + case QNetworkReply::UnknownNetworkError: + return tr("An unknown network-related error was detected"); + case QNetworkReply::UnknownProxyError: + return tr("An unknown proxy-related error was detected"); + case QNetworkReply::UnknownContentError: + return tr("An unknown error related to the remote content was detected"); + case QNetworkReply::ProtocolFailure: + return tr("A breakdown in protocol was detected"); + default: + return tr("Unknown error"); } - mutex.unlock(); } diff --git a/src/downloadThread.h b/src/downloadThread.h index 8bdf58063..af5ee8abc 100644 --- a/src/downloadThread.h +++ b/src/downloadThread.h @@ -31,64 +31,34 @@ #ifndef DOWNLOADTHREAD_H #define DOWNLOADTHREAD_H -#include -#include -#include -#include -#include -#include -#include -#include -#include +#include +#include -class subDownloadThread : public QThread { - Q_OBJECT - private: - QString url; - bool abort; - - public: - subDownloadThread(QObject *parent, QString url); - ~subDownloadThread(); - QString errorCodeToString(CURLcode status); - - signals: - // For subthreads - void downloadFinishedST(subDownloadThread* st, QString url, QString file_path); - void downloadFailureST(subDownloadThread* st, QString url, QString reason); +class QNetworkAccessManager; - protected: - void run(); -}; - -class downloadThread : public QThread { +class downloadThread : public QObject { Q_OBJECT - private: - QQueue urls_queue; - QMutex mutex; - QWaitCondition condition; - bool abort; - QList subThreads; - - signals: - void downloadFinished(QString url, QString file_path); - void downloadFailure(QString url, QString reason); +private: + QNetworkAccessManager *networkManager; - public: - downloadThread(QObject* parent); +signals: + void downloadFinished(QString url, QString file_path); + void downloadFailure(QString url, QString reason); - ~downloadThread(); +public: + downloadThread(QObject* parent); + ~downloadThread(); + void downloadUrl(QString url); + //void setProxy(QString IP, int port, QString username, QString password); - void downloadUrl(QString url); - void setProxy(QString IP, int port, QString username, QString password); +protected: + QString errorCodeToString(QNetworkReply::NetworkError status); + void applyProxySettings(); - protected: - void run(); +protected slots: + void processDlFinished(QNetworkReply* reply); - protected slots: - void propagateDownloadedFile(subDownloadThread* st, QString url, QString path); - void propagateDownloadFailure(subDownloadThread* st, QString url, QString reason); }; #endif diff --git a/src/engineSelectDlg.cpp b/src/engineSelectDlg.cpp index 96590d1cf..584d90c71 100644 --- a/src/engineSelectDlg.cpp +++ b/src/engineSelectDlg.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #ifdef HAVE_ZZIP #include diff --git a/src/lang/qbittorrent_bg.qm b/src/lang/qbittorrent_bg.qm index 32111091775599c0fd5abb85e3c75161b784eb20..9f16816d7f1ac5ecfd9479e8d498ded4e36deddd 100644 GIT binary patch delta 1852 zcmXZdc~q3;9tZI6yUoix!#l_b5>ql!;6Mvg+=Jl8T;l?YfK-A&j2sFQmoPQVyo{5P zc{B0~4~RFHQ!YqKhO(s|NKhn8)KI)u;zAgUEJk{}q1F9)-uu_*%0UsZ23)yB&IOv67C-I7Z7q(ra(@=T<}-T>5O)$N{4bEu0eme0&p+^S z;Kc_<0rLxiCst@?dIRYX-hTziC<2b$12RtlU&R);Tezm;p%DI(jZNe%zD`K9!srXp zn&;MN_HAd$oONb4q)#N^e1zsTf6ak1&D#edRg3{`QIM+k0QSE@*Fe!cN zYviV|Ke!3XO2oW740P19iF~YY6A}t3oOORi(nr}8YAcc|6yVln=Hye%wR)r!l>z99EF23_IV9sjppKJdBc6xIqTdBqgM>KE6vl*hFzTS)&vOA4tkx_pn0fKNL{-gaODW8)?8VtR73kkQuwv|nPXE>^iKY&IPME@d!>&W9^v`8qpykJafyLYrhUEt-;QIx40= z-wk~1C9W*^1-SUA=#ra&<0<00-B-v#aYJ$yH9vrP%eLS>;`Rm+sJ^55)2O(sawCwU zko(C@aaUC&(D(v-O`a5b*h{Q>YA?{+EH>$lz(Z@r<5`I`^hx5$w*rALg2YpcT7a5; zntd&-RSxI2vfpJJx1T-j<}-W0l=Dn9;5a8O9sCQBe~hHrj0}+Sj#5}H(bDpgPXVh- zdTZI&G)z&Ft9Su*&`m0QI|q0wQ(FHJ4cV7F*@teEL+e7NZU5K`^i*l~w@OvQ`?OJo z(&6KD&8v}`hhsE*N7!AraOF$s+kyi?-!vAcgnORQnGCWGQLqVFoOXLa3aX@#NY`#g=Ilq{->%)CNkn<C5(w{ZUr2-}LO$AFZ_{`iW@BVcW@QSzmxgT9sFeX>? z45)iqu5nQMJy+$%x2d~R7RpzBegsl)$UokzqcKU8d(w{r?n~Hb1`Aiu+6{hu=TtUi zh~-*Yn7f@TWKMTm@H|CVb{eR4X?7K9j%-rQOYTr6?vFfzNmccW>xx$v zyng|RFlp8v(>yn(+0~{wa#2~%T?cG+N`61JwxvZ`z5XEZZjj=fz6S89WllB5d^AuQ z7CV95eVVmXH2dROmpaKbV$@Fv?V($S^+9cv>8W+h+c=rO5X};d3!b}a)gO$cF$wy= zB{TKaZTo>Abo%;Lbn0fdzM+06F#NH;vqujEKC188G>f`t)f~LfhK%9dC=2wk2CpzY z@(7*ji7*8D4**-o=u~S-F>(bDWRT;-0>Q?rpHL9pe^qj7gq}`ZEu!vP2EK5yc#y ze*D>3<|M8qu^pb4tXt~REdfBY4%B|Y{V)IwzsP#SiNkbCFp?W(5vd$dvyM0ISVwol>5eY*J;oO z7qibyHqY0MH3w**3_9bnX;jcJZm=O!2> delta 2777 zcmaKtc~nz(7RSFY`GxQTVTmG(3elqiDvJoRC?NZyxXgeeN2C;@q{c*nfI8N=QKya@ z{ARd*AoDufh$`8#aQ6ZD&l0|oLi}nvk+ez=P4X6o#&hs3nX6vR{k4Exk;BF z1E%)y2JrhHJ_Dw&1cv8J%yI%U==@bjVCGuj>(oamHT?oE-#i2bwWGt+zDf_Rp zATG%P&bRU!A=ER}g{pcSgRr_&KzKjI-QGp%y+GW3O8L?t#INcAZsu|)S%RwpDJv<_ z<>N7BdoEpd5mWYx!1u$sSvGBO#R*JXOIEejW4eAZ;GK-=AN+^vc1C(a3D9B3TVx*I zWk_H16VN^m8ReUScdkjSikA4ugp41SkSlYzk9@Lt05x70fiI$YiQH58lpmIR2s&OT z51#5EOl%koOjs!K$u(ia(jS3OoPZPsFzAqJM+Q!#04`DGs%$&toS!C^Speu~mF;~wbuQcGh z_hiL3)S?C-iO)Wht;mi9rqsw*m#?GVJ9CA?PsrjyimVxd@-e2RK;P@~@R>2dL~Dty z*X5CQNx+L!0-<>&o7_Hi`>j_#7!x|8iHUjs}Ni3f;TY}cU(pawieIV|AV zd3I=I8Sv1=&Zz7Fm!<4%_9WVjDeS_cp+NO*R;xb`RHR94o6pOX!9qN5RQd_&Ty5=~ zl&;YE#{rr33d7^kfcZ3$1~_7f!gz|(I@hUKu!(lX)1p{px=M2uqp+0D0=}(MtX!r8 zMrJ8WTxj0@I+4$_9usi9N%7Giw*t)>659(Dhve_m+Kp0tewM<_j*xh)OX9;FyumtH zoTs?4{)W*K!i zbdK__^8+CLp7OzeE9veZl+78Z0Nc6Bw&GYC)w{gJ#$!;f^~g>WJ($$i(L;^Eq!{by z{S$%pnG*lr#xL3=2nAei8!3*mKD~mLpyLitvGp4z6Royf0gn4fYz&k5yh(H%9SS^w z=r*?tIOZ>UuYHG#@!@5*ewG3;>7p|*I7Uo8Kx^qN893-8W*SuVOzjqDy?+Y` z(MUY5msnpevC%BCbC|e5Xaf8yMRPk1$@%%>!jdDvDlhTfaf<=_yx0AQT4%PtV?UPvXP-0s*-=Q9+dH$BFUqCa(?ofGMA}4G8c!PS3 z>}Drd+s%q@ZcrVGpfU9Fl(;EMb@b8!;G5&Bsv^3pMWd>&`UH6PT-DG_6%Ey@n%5^% zs~aRfox~5@1q(ZQi=C&p)@Hx}y5~Wwjn|+@fNP{pPzXJo+-htRMtnr8+|MStjH>v@ zIv!;2DNN;=_C=b;qc*ka&w);Z%@>(@BoxnE?0sb&tGSbdry%lh2WN4(nd7 zJwW+A_1Z*o>WNYP@%=A>#60yu+d?W##;`b>A2I4LD|BTP1Hx46nUKCZV>9hA}#fl5f zVfI=!kOi?A7R4foiG2O2{uWJ)$!OH&6zWYz?d)v5!JMyC(wp3|!2EWssn}>RW#^{m z0=jQO)@<_|3kqE7^Uk7EJ!&v-VLVuv$-Yq}g(^l^Gcp*Xuh zo2xVGb-6!_Sbj^z{WnxXNHdxuC$OO2$S%K%T&SO?%hj69g>R@}NRJ1UF=fccu^>quor`?Nd$DQz( zYOg3tg3!VXf$+D`!Mj(@C0=jPX?slS5u9x@8*{Z@f&PKsZ;%_phEmp1uQY=sS>Vs- zl3%tuyjP)5qN$)zt1r-+jnvefJh$w(4Xet()0<5HBx8;#KcA*gYt$7MoAT#s^~OS7{_O0WS8}p_ zbqe{23o&oKCLy<%2?dbISV|>ON(yPnhoM)}E-l~CQ@-9 GUI - + Open Torrent Files Отвори Торент Файлове @@ -1726,25 +1726,25 @@ Copyright © 2006 от Christophe Dumez<br> Сигурни ли сте че искате да изтриете всички файлове от списъка за сваляне? - - - - - + + + + + &Yes &Да - - - - - + + + + + &No &Не - + Are you sure you want to delete the selected item(s) in download list? Сигурни ли сте че искате да изтриете избраните файлове от списъка за сваляне? @@ -1761,7 +1761,7 @@ Copyright © 2006 от Christophe Dumez<br> kb/с - + Finished Завършен @@ -1806,7 +1806,7 @@ Copyright © 2006 от Christophe Dumez<br> Не мога да създам директория: - + Torrent Files Торент Файлове @@ -1866,16 +1866,16 @@ Copyright © 2006 от Christophe Dumez<br> qBittorrent - - + + qBittorrent qBittorrent - - - - + + + + Are you sure? -- qBittorrent Сигурни ли сте? -- qBittorrent @@ -2129,7 +2129,7 @@ Please close the other one first. Сигурни ли сте че искате да изтриете избраните файлове от списъка за сваляне и от твърдия диск? - + Download finished Свалянето завърши @@ -2143,15 +2143,15 @@ Please close the other one first. Търсачка - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Състояние на връзката: @@ -2214,15 +2214,15 @@ Please close the other one first. qBittorrent %1 стартиран. - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s DL Скорост %1 KB/с - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s UL Скорост %1 KB/с @@ -2243,7 +2243,7 @@ Please close the other one first. Отложен - + Are you sure you want to quit? Сигурни ли сте че искате да напуснете? @@ -2306,14 +2306,14 @@ Please close the other one first. '%1' бе възстановен. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. '%1' завърши свалянето. - + I/O Error i.e: Input/Output Error В/И Грешка @@ -2329,12 +2329,12 @@ Please close the other one first. Намерена грешка (пълен диск?), '%1' е в пауза. - + Connection Status: Състояние на връзката: - + Online Свързан @@ -2370,18 +2370,18 @@ Please close the other one first. Сваляне на '%1', моля изчакайте... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Намерена грешка (пълен диск?), '%1' е в пауза. - + Search Търси - + RSS RSS @@ -2395,13 +2395,13 @@ Please close the other one first. DHT поддръжка [ВКЛ], порт: %1 - - + + DHT support [OFF] DHT поддръжка [ИЗКЛ] - + PeX support [ON] PeX поддръжка [ВКЛ] @@ -2410,51 +2410,51 @@ Please close the other one first. PeX поддръжка [ИЗКЛ] - + The download list is not empty. Are you sure you want to quit qBittorrent? Листата за сваляне не е празна. Сигурни ли сте че искате да напуснете qBittorrent? - - + + Downloads Сваляне - + Are you sure you want to delete the selected item(s) in finished list? Сигурни ли сте че искате да изтриете избраните файлове от списъка на завършените сваляния? - + UPnP support [ON] UPnP поддръжка [ВКЛ] - + Encryption support [ON] Поддръжка кодиране [ВКЛ] - + Encryption support [FORCED] Поддръжка кодиране [ФОРСИРАНА] - + Encryption support [OFF] Поддръжка кодиране [ИЗКЛ] - + Alt+1 shortcut to switch to first tab Alt+1 - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2463,34 +2463,34 @@ Are you sure you want to quit qBittorrent? Причина:%2 - + Alt+2 shortcut to switch to second tab Alt+2 - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Грешка при сваляне от Url - + Couldn't download file at url: %1, reason: %2. Невъзможно сваляне на файл от url: %1, причина: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Сигурни ли сте че искате да изтриете избраните от списъка за сваляне или от твърдия диск? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Сигурни ли сте че искате да изтриете избраните от списъка на свалените или от твърдия диск? @@ -2500,50 +2500,50 @@ Are you sure you want to quit qBittorrent? '%1' бе премахнат завинаги. - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent се прехвърля на порт: TCP/%1 - + UPnP support [OFF] UPnP поддръжка [ИЗКЛ] - + NAT-PMP support [ON] NAT-PMP поддръжка [ВКЛ] - + NAT-PMP support [OFF] NAT-PMP поддръжка [ИЗКЛ] - + DHT support [ON], port: UDP/%1 DHT поддръжка [ВКЛ], порт: UDP/%1 - + Local Peer Discovery [ON] Търсене на локални връзки [ВКЛ] - + Local Peer Discovery support [OFF] Търсене на локални връзки [ИЗКЛ] @@ -2553,48 +2553,48 @@ Are you sure you want to quit qBittorrent? '%1' бе премахнат защото съотношението му надвишава определеното. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) - - + + DL: %1 KiB/s DL: %1 KB/с - - + + UP: %1 KiB/s UP: %1 KB/с - - + + Ratio: %1 Съотношение: %1 - - + + DHT: %1 nodes DHT: %1 възли - - + + No direct connections. This may indicate network configuration problems. Няма директни връзки. Това може да е от проблеми в мрежовата настройка. - + Uploads Качени - + Options were saved successfully. Опциите бяха съхранени успешно. @@ -3318,12 +3318,12 @@ p, li { white-space: pre-wrap; } Програма за търсене - + Empty search pattern Празен образец за търсене - + Please type a search pattern first Моля първо въведете образец за търсене @@ -3336,13 +3336,13 @@ p, li { white-space: pre-wrap; } Трябва да изберете поне една търсачка. - - + + Results Резултати - + Searching... Търсене... @@ -3385,65 +3385,65 @@ Changelog: Вашата добавка за търсене е вече обновена. - + Cut Отрежи - + Copy Копирай - + Paste Залепи - + Clear field Изчисти полето - + Clear completion history Изчисти листа на завършените - + Search Engine Търсачка - - + + Search has finished Търсенето завърши - + An error occured during search... Намерена грешка при търсенето... - + Search aborted Търсенето е прекъснато - + Search returned no results Търсене завършено без резултат - + Results i.e: Search results Резултати - - + + Unknown Неизвестен @@ -3621,6 +3621,11 @@ Changelog: Download in sequential order (slower but good for previewing) Сваляне поред (по-бавно но удобно за преглед) + + + Skip file checking and start seeding immediately + + File name Име файл @@ -3638,17 +3643,17 @@ Changelog: Сваляне в правилен ред (по-бавен, но добър за оглед на файловете) - + Add to download list in paused state Добави в листа за сваляне в състояние на пауза - + Add Добави - + Cancel Прекъсни @@ -3665,22 +3670,22 @@ Changelog: Избери - + Ignored Игнорирано - + Normal Нормален - + High Висок - + Maximum Максимален @@ -3754,18 +3759,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. %1 използва максималното разрешено от вас отношение. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' бе премахнат завинаги. - + '%1' was removed. 'xxx.avi' was removed. '%1' бе премахнат. @@ -3781,96 +3786,96 @@ Changelog: '%1' бе възстановен. - + '%1' is not a valid magnet URI. '%1' е невалиден magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' вече е в листа за сваляне. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' бе възстановен. (бързо възстановяване) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' добавен в листа за сваляне. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Не мога да декодирам торент-файла: '%1' - + This file is either corrupted or this isn't a torrent. Този файла или е разрушен или не е торент. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>бе блокиран от вашия IP филтър</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>бе прекъснат поради разрушени части</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Програмирано сваляне на файл %1 вмъкнато в торент %2 - + Unable to decode %1 torrent file. Не мога да декодирам %1 торент-файла. - + Couldn't listen on any of the given ports. Невъзможно изчакване от дадените портове. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Грешка при следене на порт, съобщение: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Следене на порт успешно, съобщение: %1 - + Fast resume data was rejected for torrent %1, checking again... Бърза пауза бе отхвърлена за торент %1, нова проверка... - + Url seed lookup failed for url: %1, message: %2 Url споделяне провалено за url: %1, съобщение: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Сваляне на '%1', моля изчакайте... @@ -4203,6 +4208,125 @@ Changelog: Моля въведете поне един URL. + + downloadThread + + + + I/O Error + + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Неизвестна грешка + + downloading @@ -4428,12 +4552,12 @@ Changelog: Грешно - + Uninstall warning Предупреждение за деинсталиране - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4442,7 +4566,7 @@ However, those plugins were disabled. Обаче добавките бяха изключени. - + Uninstall success Успешно деинсталиране @@ -4451,62 +4575,62 @@ However, those plugins were disabled. Всички избрани добавки бяха успешно деинсталирани - + Select search plugins Избери добавки за търсене - - + + qBittorrent search plugins qBittorrent добавки за търсене - - - - - - - - + + + + + + + + Search plugin install Инсталиране на добавка за търсене - - - + + + Yes Да - - - - + + + + No Не - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine По-нова версия на %1 добавката за търсене вече е инсталирана. @@ -4522,17 +4646,17 @@ However, those plugins were disabled. %1 добавка на търсачката беше успешно инсталирана. - - - - - + + + + + Search plugin update Добавката за търсене е обновена - - + + Sorry, update server is temporarily unavailable. Съжалявам, сървъра за обновяване е временно недостъпен. @@ -4547,60 +4671,60 @@ However, those plugins were disabled. Съжалявам, %1 обновяването на добавката бе неуспешно. - + All your plugins are already up to date. Всички ваши добавки са вече обновени. - + All selected plugins were uninstalled successfully Всички избрани добавки бяха успешно деинсталирани - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine %1 добавка на търсачката не бе обновена, запазване на досегашната версия. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine %1 добавка на търсачката не бе инсталирана. - + %1 search engine plugin was successfully updated. %1 is the name of the search engine %1 добавка на търсачката беше успешно обновена. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine %1 добавка на търсачката беше успешно обновена. - + Search engine plugin archive could not be read. Файла за добавки на търсачката не бе прочетен. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Съжалявам, инсталацията на %1 добавката за търсене бе неуспешна. - + New search engine plugin URL Нов URL за добавки на търсачката - + URL: URL: @@ -5502,29 +5626,24 @@ However, those plugins were disabled. subDownloadThread - Host is unreachable - Хоста е недостъпен + Хоста е недостъпен - File was not found (404) - Файла не е намерен (404) + Файла не е намерен (404) - Connection was denied - Връзката е отхвърлена + Връзката е отхвърлена - Url is invalid - Невалиден Url + Невалиден Url - I/O Error - В/И Грешка + В/И Грешка Connection forbidden (403) @@ -5539,29 +5658,24 @@ However, those plugins were disabled. Съдържанието бе преместено (301) - Connection failure - Неуспешна връзка + Неуспешна връзка - Connection was timed out - Връзката изтече + Връзката изтече - Incorrect network interface - Неточен интерфейс на мрежата + Неточен интерфейс на мрежата - Unknown error - Неизвестна грешка + Неизвестна грешка - Could not resolve proxy - Не намерено прокси + Не намерено прокси @@ -5627,12 +5741,12 @@ However, those plugins were disabled. Не мога да създам път за съхранение - + Invalid file selection Невалиден избор на файл - + You must select at least one file in the torrent Трябва да изберете поне един файл в торента diff --git a/src/lang/qbittorrent_ca.qm b/src/lang/qbittorrent_ca.qm index 746d05d6cd644f4adbb09102b0570f63681398f7..995ec3126f4cf5cca9efeb28cbffec16552a7c64 100644 GIT binary patch delta 827 zcmXBSZAep57zgnGz1!Wocc|#h;ZUZ6+g!fQId$`8l9kI!u+mJhk|wE?Qc_xpCibR? zXeUh&3oA>*q7<@1($K7+ERw_Qlk8WJHmtw6*M zW>h~jDXh(H2;B{#M*yOaGvl4iq~FYx1rp5FiABh3ZU>T_q?gm#YEjU46|m`0eXbk` zTgB6lXMotV_;&9wpoziis2wo>k?C%;j2`%UGsgWeV%OP4crhp#_tQQmk&ht0zP+{Y70|e!%XZXi@dI`U$Ay~fZ+W? z*X2&Y>j6`JkZBBICj4V2y%7dvjr6-5!r)jxtv<)pKV&ApR%o;7Tz<1m<0EE#CDWFz z$apaa#EdI4rd9ybATtL(SMrt-AY@b-kedZqYn0kW+IjR1@=m7leWGlBe+`I~DSNIg z0SOZMC3A>%VnlNpy*oit<+{Kn@j&AYePLr-{Fx~xa#C){X%&CS-87L(aoH74S7TcA z%+vz%o09iRHIRHqGQNtYp`ViSztDWcv!x@RK$_8nRB5DZBkPd5gIWNcMd}-&StZ7j z?{bZ~SQ>szmn=C>T4-_7iAtEZKI!Z1OIn>*;nsOt4Jz?;F|F=Htb$I=Qw0Sr&?#z3 zphFZ_a?cD zOm2*HD>MpsDUfz?=$T@(o=mAV#F4J{@pe^Il^?Ara_ucSQC#FAhXRa4x+qaSRGK~~ F{||GP;4uII delta 830 zcmXBST}YEr7zgnG`)=<$-*?Q^naiOp6}M?kn{&GPF)a&4O0d#wV6jp%O$9~#xJbja zG?Da_7Ghu}X-O9fg<)xkc4JnG7Iq>XDH9A~VTCs+6YeC0?oiKtrvvT(U_CA z=Pv`w`?B{&4Ujk}o8Lsy&>eE#XPR$#mV9A5kY>~@SDL*6MVH(g)D9SI^1v9)DsG+p zQtGTG`S~+CWQlfpr9FfGD3a-XBL7&NqSbjd9$cl>pq6S20rLl97Yx!Kbx_a>t&vLd z1(UB@J)O4>B$cXX@{53kyX3Zz!ii*ou3lufXw=89X&NOu&mobTPkuC@=m}csAgfU9NXg?PwFa$R8~`4&k_X0!bDat*knCxV*aTQn{z#WKl(-r(ndB Hx~%*UQpn#h diff --git a/src/lang/qbittorrent_ca.ts b/src/lang/qbittorrent_ca.ts index 462b51b37..7988bfa1c 100644 --- a/src/lang/qbittorrent_ca.ts +++ b/src/lang/qbittorrent_ca.ts @@ -1508,8 +1508,8 @@ p, li { white-space: pre-wrap; } iniciat. - - + + qBittorrent qBittorrent @@ -1526,12 +1526,12 @@ p, li { white-space: pre-wrap; } Vel. Pujada: - + Open Torrent Files Arxius Torrent oberts - + Torrent Files Arxius Torrent @@ -1569,10 +1569,10 @@ p, li { white-space: pre-wrap; } Aquest arxiu està corrupte o no es un arxiu torrent. - - - - + + + + Are you sure? -- qBittorrent Estàs segur? -- qBittorrent @@ -1581,20 +1581,20 @@ p, li { white-space: pre-wrap; } Estàs segur de que vols buidar la llista de descàrregues? - - - - - + + + + + &Yes &Yes - - - - - + + + + + &No &No @@ -1603,7 +1603,7 @@ p, li { white-space: pre-wrap; } Llista de descàrregues buidada. - + Are you sure you want to delete the selected item(s) in download list? Estàs segur de que vols esborrar les descàrregues seleccionades? @@ -1672,7 +1672,7 @@ p, li { white-space: pre-wrap; } /s - + Finished Finalitzat @@ -1944,7 +1944,7 @@ Si et plau tanca l'altre primer. Estàs segur que vols esborrar els objectes seleccionats de la llista de descàrregues i del disc dur? - + Download finished @@ -1958,15 +1958,15 @@ Si et plau tanca l'altre primer. Motor de Busqueda - - + + qBittorrent %1 e.g: qBittorrent v0.x - - + + Connection status: @@ -2011,15 +2011,15 @@ Si et plau tanca l'altre primer. Leechers - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s @@ -2035,7 +2035,7 @@ Si et plau tanca l'altre primer. Validant... - + Are you sure you want to quit? @@ -2050,25 +2050,25 @@ Si et plau tanca l'altre primer. Conectant... - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. - + I/O Error i.e: Input/Output Error I/O Error - + Connection Status: - + Online @@ -2078,115 +2078,115 @@ Si et plau tanca l'altre primer. Resultats - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. - + Search Cercar - + RSS - - + + DHT support [OFF] - + PeX support [ON] - + The download list is not empty. Are you sure you want to quit qBittorrent? - - + + Downloads Descarregues - + Are you sure you want to delete the selected item(s) in finished list? - + UPnP support [ON] - + Encryption support [ON] - + Encryption support [FORCED] - + Encryption support [OFF] - + Alt+1 shortcut to switch to first tab - + Alt+2 shortcut to switch to second tab - + Alt+4 shortcut to switch to fourth tab - + Url download error - + Couldn't download file at url: %1, reason: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? - + Alt+3 shortcut to switch to third tab - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2194,90 +2194,90 @@ Are you sure you want to quit qBittorrent? - + Ctrl+F shortcut to switch to search tab - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 - + UPnP support [OFF] - + NAT-PMP support [ON] - + NAT-PMP support [OFF] - + DHT support [ON], port: UDP/%1 - + Local Peer Discovery [ON] - + Local Peer Discovery support [OFF] - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version - - + + DL: %1 KiB/s - - + + UP: %1 KiB/s - - + + Ratio: %1 - - + + DHT: %1 nodes - - + + No direct connections. This may indicate network configuration problems. - + Uploads - + Options were saved successfully. @@ -2932,12 +2932,12 @@ p, li { white-space: pre-wrap; } Motor per cercar - + Empty search pattern Busqueda pare buida - + Please type a search pattern first Si us plau introduïu una busqueda pare primer @@ -2946,13 +2946,13 @@ p, li { white-space: pre-wrap; } Has de seleccionar un motor de busqueda. - - + + Results Resultats - + Searching... Cercant... @@ -2987,65 +2987,65 @@ Log: El teu plugin de recerca torna a estar actualitzat. - + Cut - + Copy - + Paste - + Clear field - + Clear completion history - + Search Engine Motor de Busqueda - - + + Search has finished - + An error occured during search... Hi ha hagut un error durant la recerca... - + Search aborted Recerca abortada - + Search returned no results La recerca no ha tornat Resultats - + Results i.e: Search results Resultats - - + + Unknown Desconegut @@ -3215,6 +3215,11 @@ Log: Download in sequential order (slower but good for previewing) + + + Skip file checking and start seeding immediately + + File name Nom del fitxer @@ -3232,17 +3237,17 @@ Log: Descarrega en l'ordre correcte (més lent però més bona previsualització) - + Add to download list in paused state Afegeix a la llista de descàrregues en estat pausat - + Add Afegir - + Cancel Cancelar @@ -3255,22 +3260,22 @@ Log: Desseleccionat - + Ignored - + Normal - + High - + Maximum @@ -3340,113 +3345,113 @@ Log: bittorrent - + %1 reached the maximum ratio you set. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. - + '%1' was removed. 'xxx.avi' was removed. - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' - + This file is either corrupted or this isn't a torrent. Aquest arxiu està corrupte o no es un arxiu torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. No es pot obrir el port especificat. - + UPnP/NAT-PMP: Port mapping failure, message: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 - + Fast resume data was rejected for torrent %1, checking again... - + Url seed lookup failed for url: %1, message: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... @@ -3751,6 +3756,125 @@ Log: Si et plau entra mínimament una URL. + + downloadThread + + + + I/O Error + I/O Error + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + + + downloading @@ -3968,153 +4092,153 @@ Log: Fals - + Uninstall warning - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. - + Uninstall success - + Select search plugins - - + + qBittorrent search plugins - - - - - - - - + + + + + + + + Search plugin install - - - + + + Yes - - - - + + + + No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine - - - - - + + + + + Search plugin update - - + + Sorry, update server is temporarily unavailable. Ho sento, el servidor per actualitzar està temporalment no disponible. - + All your plugins are already up to date. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine - + All selected plugins were uninstalled successfully - + %1 search engine plugin was successfully updated. %1 is the name of the search engine - + %1 search engine plugin was successfully installed. %1 is the name of the search engine - + Search engine plugin archive could not be read. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine - + New search engine plugin URL - + URL: @@ -4967,54 +5091,8 @@ However, those plugins were disabled. subDownloadThread - - Host is unreachable - - - - - File was not found (404) - - - - - Connection was denied - - - - - Url is invalid - - - - - Connection failure - - - - - Connection was timed out - - - - - Incorrect network interface - - - - - Unknown error - - - - I/O Error - I/O Error - - - - Could not resolve proxy - + I/O Error @@ -5080,12 +5158,12 @@ However, those plugins were disabled. No es pot creat la ruta guardada - + Invalid file selection Seleció invàlida de fitxer - + You must select at least one file in the torrent Has de seleccionar mínimament un fitxer en el torrent diff --git a/src/lang/qbittorrent_cs.qm b/src/lang/qbittorrent_cs.qm index 349269df15cc5140afc5257d322f224441c11bbf..17d187b44878e74f9d0b1264e2005c467337de47 100644 GIT binary patch delta 2023 zcmXBVc~BHr9tZGm_jFHB&oF}w0y-tku7+b!AhHX@1E@kd#6ZxMGmI&+kc32`3_BVl zpoSpp#exq^JXqI@1wSEu?pz`ceE7^tMCH+~ZD~Zz{!}3G zC1T2DVBAV9eEiHuh}%^PjCvqG{ZqhHi1@wFX`t!E${S5Lk+9<>{q-=CDoTL#NoK=3 z=GcFc^jkI!u9f&HqSc)mT<~ZCt{0Hq3U_Xj)GLf!6X{m?`!O z?yhHAKjc442?k;|@C6mSX&Ze`Tty%52#FQnNhAvY%v`|1MG=_1god$~Ic!n{cPsF=z<&OHtw2g?kxp+0uJ0<3ANdxBPi}^EXdtF*YcB=wRQ{sWYe+djUGDmNS zr!UjhY0H_X-I*gGR#kvpF5byL0gOZtFFC;On9>kU2jKgi%yE%eWTU)ax#Y?N;C3e| zljHcd81hWs#t-C>9JSl*{{%?-r<-U}UNVP2l^kOufk#Uv!w?PsRvKwh`y0N?l`M|5 z)_eLTi|_k%re$e;1A={adMY z^nd9<%J0%C7y9(q8Zt@Pp)}%jYb|UpRcAT71^nM-EhuVo)Ef$ z_b)Qf7?`7G(yevVPs~v}`VIoG>(m}sX*OGGh*sy%cP5ii-Rh9Rh3cB1Nx;LxEN)iU zUabNi%vCq6r>h3nsT&*q30ND|-GekDSAX?jVFYa(U*=<(4Cw;6hs4>|-E=@RYZhHI z5UBC^<2W$$Pa3~Bd;!BZn((;?=m;ljB9GI0KLlB8>&`tPrM4UFrZlYyKhvXUj^>8> z1K{yX;ylfpugxP-)7(6p!faN?6$0D7Wft9Mw(n>5-?B;ih`zDmH&Qn3J-#WMh<4HH z>o!_Rr2Wx1kC^RT_>LfwL+SM+Wp>7tr`k1pU!%Pgugxi;SJ~A*ZJvA#sPNPt?7s;_ zL~2ji{0;baSX(!o2zX!7Hn%MX?83BN84k3U1GM*yxxn6)+WUGskasl9#}@76HoAVW znz-t7)dLFM);`+$KV*@UdT;&NwYs_!w0@fDy7P-@wwrDftKOS`Vj<4tw;m>gqwz|~J4H;`P YQ&Lxb@Nrs7YMo=V>%ztnj$5MqKXlQTMgRZ+ delta 2884 zcmaKud010t7RKLulaSnm8%$hKst_GPunLNbyG%hAQK%aTRPYH9OKMCsA>axqF4a-1 zeroF|Q>{`F#SH}=D=x)#+)%0GRux4-#a-tatvUy9A6whU`Qzqyxyg6VdEaxs?{a94 zylA0(VUrd+0fYcYtbn37aLGvg6xcU@QAc;K-J&p`lvC4zh_%4qb^%e-fbMpQTkjGp zfIM0feTG8J1%@K|XlbZmE4bL9}Bj*9Ta)D7l0*7ubI^o3)SXA%N zpDSmrI8TplN1%x82J9@Ac;c?a+wLru^9k9p1B%rO;N&`qS0+iU^OX4bEEM0r01n=V zVj~qEY=ui1X*!<*VM;1+K*RQMJ-vE1p8?!$iC!oE3G@v?STz-U$P?i+?gN$GnaD@9 zXpQJRDlxYVga4ieB)q}k?*-t#j*aC~n5@Na1fn(~ZHv;4FT2;e6omFHBSf za2~9$VpM`g7G%o?ntICmjtnI^%OuvUmIa>}0E`|Yaoa>$SQ7o6c3k3CPg#66*_wS# z7XP&e@UM}wkq)Zu<0G<>wPnEZQ1(m_-sb!!*+M;y>bZK^vW9V7bwswZjz;*Cm9qR~ za_3G9mgLfpzch>Gy99LhmnVdg-aVD_#39wdw`RFx$`jzsI(d$=9N24;Pg`@D_)h9-MtoZU9;6{MN+Wv}d`_==d zffBcVEAiF@R;B7Lcq%HVY@jOlv8F#yllo&I*3>z96A0 zR^S?t^H*WOL3f}{V_|p^O{M1sA>sNGplGd-WKq*Od`d{3a~9|^SmJiQ#FOJCUJjA? zSP;f@*MNX3!C4mu>@N@|%-lqWG83lup)<*?LdbnX4&I$4%DR_%M3Tt4W-s>C3^@*ESj$ssqksWSfeh@q*XWS)Mcgr03KdaSKTB<-a+b{3nGD2MG_x$WX0O<+%Q(7 zZRgim)3PP4sotUSZG8u5(M8j(M&8;1m&XU}+bWY8o z_{YHG2+i@NbjtG=R^#T+*V|dsMm~I5IqTcVU8i>)8b|%Dj&MyJL-9*9n5ofdzU(PG z(I_VB*bGsrpeeb!R@BN!-?Bncw{kA9aJtxX1WnP*K4RO?ex`$^RPB&M~G9GIOxcW7xRR*Kw*1vUL=`(FF{;ceG-U_ z5;wSJkWa~C$*lyyf4^99qz|AA7tdOo0!KHC=e@G2nxW#q^|XCY=Sh69TzoN$*57Qa zb&aE=s^3Db>#hb~)9SvYs@Y3jy1II@cG@-CKKH+7WA*;}oi*B$4atC}iFS8ys&r>0 zE7tq-PnNSQ`e5!O)~a!w*H8IwwF}nM+wqp$!^g)V)l&1yBJW|(bO!)T+~;*Ov*A2cFst#Dcig1oBttnhIyWDDR%meL;9ZXZJ2 z?^)M@MA;}_3VqrshxM&ZMv`N~q__75_@XO1(dG9pQ}b}M#bju3ts&WHo70+R@a@{E ztKa*n{*Wn>aya0Y@m5ZQV}^#lv(*=xb$l1Oaiq0u%`n+V8&iMF z!;}?~X&*@7iC7H9AgT6W4I4*VjMO4Z_D+a4)^2IgVYX%(E#?o*RY~^iNSFTs7ch7G diff --git a/src/lang/qbittorrent_cs.ts b/src/lang/qbittorrent_cs.ts index 74a7d4d70..dc082d56c 100644 --- a/src/lang/qbittorrent_cs.ts +++ b/src/lang/qbittorrent_cs.ts @@ -1274,61 +1274,61 @@ Copyright © 2006 by Christophe Dumez<br> GUI - + Open Torrent Files Otevřít torrent soubory - - - - - + + + + + &Yes &Ano - - - - - + + + + + &No &Ne - + Are you sure you want to delete the selected item(s) in download list? Jste si jist, že chcete smazat vybrané položky ze seznamu stahování? - + Torrent Files Torrent soubory - - - - + + + + Are you sure? -- qBittorrent Jste si jist? -- qBittorrent - + Download finished Stahování dokončeno - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Stav připojení: @@ -1341,27 +1341,27 @@ Copyright © 2006 by Christophe Dumez<br> Nebyly nalezeny žádné peery... - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Rychlost stahování: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Rychlost nahrávání: %1 KiB/s - + Are you sure you want to quit? Opravdu ukončit program? @@ -1389,14 +1389,14 @@ Copyright © 2006 by Christophe Dumez<br> '%1' obnoven. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. Stahování %1 bylo dokončeno. - + I/O Error i.e: Input/Output Error Chyba I/O @@ -1407,12 +1407,12 @@ Copyright © 2006 by Christophe Dumez<br> Nastala chyba při pokusu o čtení či zápis %1. Disk je provděpodobně plný, stahování bylo pozastaveno - + Connection Status: Stav připojení: - + Online Online @@ -1426,18 +1426,18 @@ Copyright © 2006 by Christophe Dumez<br> Žádná příchozí spojení... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Nastala chyba (plný disk?), '%1' pozastaven. - + Search Hledat - + RSS RSS @@ -1451,13 +1451,13 @@ Copyright © 2006 by Christophe Dumez<br> Podpora DHT [ZAP], port: %1 - - + + DHT support [OFF] Podpora DHT [VYP] - + PeX support [ON] Podpora PeX [ZAP] @@ -1466,56 +1466,56 @@ Copyright © 2006 by Christophe Dumez<br> Podpora PeX [VYP] - + The download list is not empty. Are you sure you want to quit qBittorrent? Seznam stahování není prázdný. Opravdu chcete ukončit qBittorrent? - - + + Downloads Stahování - + Finished Dokončeno - + Are you sure you want to delete the selected item(s) in finished list? Jste si jist, že chcete smazat vybrané položky ze seznamu dokončených? - + UPnP support [ON] Podpora UPnP [ZAP] - + Encryption support [ON] Podpora šifrování [ZAP] - + Encryption support [FORCED] Podpora šifrování [VYNUCENO] - + Encryption support [OFF] Podpora šifrování [VYP] - + Alt+1 shortcut to switch to first tab Alt+1 - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -1524,34 +1524,34 @@ Opravdu chcete ukončit qBittorrent? Důvod: %2 - + Alt+2 shortcut to switch to second tab Alt+2 - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Chyba stahování URL - + Couldn't download file at url: %1, reason: %2. Nemohu stáhnout soubor na URL: %1, důvod: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Jste si jist, že chcete smazat vybrané položky ze seznamu stahování a pevného disku? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Jste si jist, že chcete smazat vybrané položky ze seznamu dokončených a pevného disku? @@ -1561,50 +1561,50 @@ Opravdu chcete ukončit qBittorrent? '%1' byl trvale odstraněn. - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent naslouchá na portu: TCP/%1 - + UPnP support [OFF] Podpora UPnP [VYP] - + NAT-PMP support [ON] Podpora NAT-PMP [ZAP] - + NAT-PMP support [OFF] Podpora NAT-PMP [VYP] - + DHT support [ON], port: UDP/%1 Podpora DHT [ZAP], port: UDP/%1 - + Local Peer Discovery [ON] Local Peer Discovery [ZAP] - + Local Peer Discovery support [OFF] Podpora Local Peer Discovery [VYP] @@ -1614,48 +1614,48 @@ Opravdu chcete ukončit qBittorrent? '%1' byl odstraněn protože jeho poměr dosáhl nastaveného maxima. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (Stahování: %2KiB/s, Nahrávání: %3KiB/s) - - + + DL: %1 KiB/s Stahování: %1 KiB/s - - + + UP: %1 KiB/s Nahrávání: %1 KiB/s - - + + Ratio: %1 Poměr: %1 - - + + DHT: %1 nodes DHT: %1 uzlů - - + + No direct connections. This may indicate network configuration problems. Žádná přímá spojení. To může značit problémy s nastavením sítě. - + Uploads Nahrávání - + Options were saved successfully. Nastavení bylo úspěšně uloženo. @@ -2204,86 +2204,86 @@ p, li { white-space: pre-wrap; } SearchEngine - + Cut Vyjmout - + Copy Kopírovat - + Paste Vložit - + Clear field Vyprázdnit pole - + Clear completion history Vymazat historii - + Empty search pattern Prázdný hledaný řetězec - + Please type a search pattern first Nejdříve prosím napište hledaný řetězec - - + + Results Výsledky - + Searching... Hledám... - + Search Engine Vyhledávač - - + + Search has finished Hledání ukončeno - + An error occured during search... Během hledání nastala chyba... - + Search aborted Hledání přerušeno - + Search returned no results Nebyly nalezeny žádné výsledky - + Results i.e: Search results Výsledky - - + + Unknown Neznámý @@ -2394,42 +2394,47 @@ p, li { white-space: pre-wrap; } Download in sequential order (slower but good for previewing) Stahovat v sekvenčním pořadí (pomalejší, ale dobré pro náhled) + + + Skip file checking and start seeding immediately + + Download in correct order (slower but good for previewing) Stahovat ve správném pořadí (pomalejší, ale dobré pro náhled) - + Add to download list in paused state Přidat do seznamu stahování jako pozastavené - + Add Přidat - + Cancel Zrušit - + Ignored Ignorovat - + Normal Normální - + High Vysoká - + Maximum Maximální @@ -2499,18 +2504,18 @@ p, li { white-space: pre-wrap; } bittorrent - + %1 reached the maximum ratio you set. '%1' - poměr dosáhl nastaveného maxima. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' byl trvale odstraněn. - + '%1' was removed. 'xxx.avi' was removed. '%1' byl odstraněn. @@ -2526,96 +2531,96 @@ p, li { white-space: pre-wrap; } '%1' obnoven. - + '%1' is not a valid magnet URI. '%1' není platný magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' už je v seznamu stahování. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' obnoven. (rychlé obnovení) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' přidán do seznamu stahování. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Nelze dekódovat soubor torrentu: '%1' - + This file is either corrupted or this isn't a torrent. Tento soubor je buď poškozen, nebo to není soubor torrentu. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>byl zablokován kvůli filtru IP</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>byl zakázán kvůli poškozeným částem</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Rekurzivní stahování souboru %1 vloženého v torrentu %2 - + Unable to decode %1 torrent file. Nelze dekódovat soubor torrentu %1. - + Couldn't listen on any of the given ports. Nelze naslouchat na žádném z udaných portů. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Namapování portů selhalo, zpráva: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Namapování portů bylo úspěšné, zpráva: %1 - + Fast resume data was rejected for torrent %1, checking again... Rychlé obnovení torrentu %1 bylo odmítnuto, zkouším znovu... - + Url seed lookup failed for url: %1, message: %2 Vyhledání URL seedu selhalo pro URL: %1, zpráva: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Stahuji '%1', prosím čekejte... @@ -2864,6 +2869,125 @@ p, li { white-space: pre-wrap; } Prosím napište alespoň jedno URL. + + downloadThread + + + + I/O Error + Chyba I/O + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Neznámá chyba + + downloading @@ -3073,12 +3197,12 @@ p, li { white-space: pre-wrap; } Ne - + Uninstall warning Upozornění na odstranění - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -3087,141 +3211,141 @@ Můžete odstranit pouze moduly, které jste sám přidal. Nicméně, tyto moduly byly vypnuty. - + Uninstall success Odstranění bylo úspěšné - + Select search plugins Vybrat vyhledávače - - + + qBittorrent search plugins qBittorrent - vyhledávače - - - - - - - - + + + + + + + + Search plugin install Nainstalovat vyhledávač - - - + + + Yes Ano - - - - + + + + No Ne - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine V systému je již nainstalována novější verze vyhledávače %1. - - - - - + + + + + Search plugin update Aktualizovat vyhledávač - - + + Sorry, update server is temporarily unavailable. Omlouvám se, server s aktualizacemi je dočasně nedostupný. - + All your plugins are already up to date. Všechny zásuvné moduly jsou aktuální. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine Vyhledávač %1 nelze aktualizovat, ponechávám starou verzi. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine Vyhledávač %1 nelze nainstalovat. - + All selected plugins were uninstalled successfully Všechny zásuvné moduly byly úspěšně odstraněny - + %1 search engine plugin was successfully updated. %1 is the name of the search engine Vyhledávač %1 byl úspěšně aktualizován. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine Vyhledávač %1 byl úspěšně nainstalován. - + Search engine plugin archive could not be read. Nelze přečíst zásuvný modul vyhledávače. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Omlouvám se, instalace vyhledávače %1 selhala. - + New search engine plugin URL URL nového zásuvného modulu - + URL: URL: @@ -3832,54 +3956,44 @@ Nicméně, tyto moduly byly vypnuty. subDownloadThread - Host is unreachable - Hostitel je nedostupný + Hostitel je nedostupný - File was not found (404) - Soubor nenalezen (404) + Soubor nenalezen (404) - Connection was denied - Spojení bylo odepřeno + Spojení bylo odepřeno - Url is invalid - URL je neplatné + URL je neplatné - Connection failure - Chyba spojení + Chyba spojení - Connection was timed out - Spojení vypršelo + Spojení vypršelo - Incorrect network interface - Nesprávné síťové rozhraní + Nesprávné síťové rozhraní - Unknown error - Neznámá chyba + Neznámá chyba - I/O Error - Chyba I/O + Chyba I/O - Could not resolve proxy - Nemohu přeložit adresu proxy + Nemohu přeložit adresu proxy @@ -3937,12 +4051,12 @@ Nicméně, tyto moduly byly vypnuty. Nemohu vytvořit cestu pro uložení - + Invalid file selection Neplatný výběr souboru - + You must select at least one file in the torrent Musíte v torrentu vybrat alespoň jeden soubor diff --git a/src/lang/qbittorrent_da.qm b/src/lang/qbittorrent_da.qm index d9cba79c35aab186b68853b462a909556d203191..0219e9863d8b235bbfa8502bffabb49cc612cbb3 100644 GIT binary patch delta 781 zcmXBRZAep57zgnGz1!WqTTWar%cU(P-LmGUZq8TC+0cR+S~DBi5S6q-K`?up^g^Y! zBs)eyC|Ma+YU#}IOB$vIwTeQE{1jQU9+7I+!2Bldtcw{X zoJh-W7k6%I2R08Avq-~q5Qj*cJI-CLyF%Brf*DV_PEkD_`~}xLbQ@T4P0-*L-0YXA zb7*6#bAoAqC6-UEfb5AR^YMEise$gJyUS0+gVx-NY z1;D&t+IH~^kbYEppCvS0hB(Ced8rZn2G2gaY~c;_3Sd3Yo31;6Xg_aNm(ybb{GR$Z z0ADU>Y!ggW2&Uc;v@v}3tPO};NfyOg-o<|tkJI!Uh@Ml06w7pDF?8>+tYDG@V&Y|c z|Ao-hM@S*3VI0IwYdo@t{dBO*U$UvjY&w`(&}t`Lw5FH%I1O);hlWnkUO$t0P8&QS zA1(Mnzaw4#ys(U(EG2qL7W05qOLj3X;*%JdyJS(K;YR}BDQV=^E)prVFm6&PRVn&{ zx?k}?l!lI&73n=GRT+p+sS8q+RMu1+s4ObkSyokAR6_1)BE0 z*lTn{$;hx$(H2P{XjIk*mt{z|FF`8Z?1O2bru2^U>BkGt`&@h5nEp2A(nfXcUw}&n zQmlZX9*FH}F^1I;bcSn%SKu<@f#_~gQ>Lh8sbxwZssh)+0f_;k=4R2fN20btVq|I*!W{BF zSAeuI(!=PY?QnLr($_TV8Y+S9{qWvB18BbC$@`N)QUZS6KLP|hu{e|jB%dbB%qG^V zA|b3!6~eAJI03VjO&y5pX3}k+@ia86=(TA?6(6Bzk_W zw0lP)g$=*MQWYqG=wkTjHh*xy(Hrz6Y$kB`TzeTKZ*L2W?E# zENUK>nWozT#dBHu(@(%o2l3I|4l+aQ4al`qv|gfxgh(}^yxcQ(6^Ngew@MbMg1qDM z4_Y}@-p3Lk>IKP@=I16)^V>YffL%+xFdqnP;rY1Rc|gPrZ`GF5#zy&r?souRE*e!L zY8n?!DHXLzdDnLvz1c^yEYOkk?WvP{RjSAS5`m0SDBR=J63Acb;GVBMPDH#`uo tqa)f4-bT4b@J=MGsEJQ)P^*r+4)3n2t*odjD&AjKT~bu+eZA+4^gr#q+ZzA? diff --git a/src/lang/qbittorrent_da.ts b/src/lang/qbittorrent_da.ts index 9f58d5b8a..5cd8d23fc 100644 --- a/src/lang/qbittorrent_da.ts +++ b/src/lang/qbittorrent_da.ts @@ -1401,7 +1401,7 @@ Copyright © 2006 by Christophe Dumez<br> GUI - + Open Torrent Files Åbn Torrent Filer @@ -1410,25 +1410,25 @@ Copyright © 2006 by Christophe Dumez<br> Denne fil er enten korrupt eller ikke en torrent. - - - - - + + + + + &Yes &Ja - - - - - + + + + + &No &Nej - + Are you sure you want to delete the selected item(s) in download list? Er du sikker på at du vil slette det markerede fra download listen? @@ -1441,15 +1441,15 @@ Copyright © 2006 by Christophe Dumez<br> Downloader... - + Torrent Files Torrent Filer - - - - + + + + Are you sure? -- qBittorrent Er du sikker? -- qBittorrent @@ -1538,7 +1538,7 @@ Luk venglist denne først. Overførsler - + Download finished Download afsluttet @@ -1555,15 +1555,15 @@ Luk venglist denne først. Er du sikker på at du vil slette de markerede elementer i download listen og på harddisken? - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Forbindelses status: @@ -1626,21 +1626,21 @@ Luk venglist denne først. qBittorrent %1 startet. - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s DL hastighed: %1 KB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s UP hastighed: %1 KB/s @@ -1661,7 +1661,7 @@ Luk venglist denne først. Gået i stå - + Are you sure you want to quit? Er du sikker på at du vil afslutte? @@ -1724,14 +1724,14 @@ Luk venglist denne først. '%1' fortsat. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 er hentet færdig. - + I/O Error i.e: Input/Output Error I/O Fejl @@ -1742,12 +1742,12 @@ Luk venglist denne først. Der opstod en fejl under forsøget på at skrive %1. Disken er måske fuld, downloaden er sat på pause - + Connection Status: Forbindelses Status: - + Online Online @@ -1783,120 +1783,120 @@ Luk venglist denne først. Downloader '%1', vent venligst... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Der opstod en fejl (fuld disk?), '%1' sat på pause. - + Search Søg - + RSS - - + + DHT support [OFF] - + PeX support [ON] - + The download list is not empty. Are you sure you want to quit qBittorrent? - - + + Downloads - + Finished Færdig - + Are you sure you want to delete the selected item(s) in finished list? - + UPnP support [ON] - + Encryption support [ON] - + Encryption support [FORCED] - + Encryption support [OFF] - + Alt+1 shortcut to switch to first tab - + Alt+2 shortcut to switch to second tab - + Alt+4 shortcut to switch to fourth tab - + Url download error - + Couldn't download file at url: %1, reason: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? - + Alt+3 shortcut to switch to third tab - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -1904,90 +1904,90 @@ Are you sure you want to quit qBittorrent? - + Ctrl+F shortcut to switch to search tab - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 - + UPnP support [OFF] - + NAT-PMP support [ON] - + NAT-PMP support [OFF] - + DHT support [ON], port: UDP/%1 - + Local Peer Discovery [ON] - + Local Peer Discovery support [OFF] - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version - - + + DL: %1 KiB/s - - + + UP: %1 KiB/s - - + + Ratio: %1 - - + + DHT: %1 nodes - - + + No direct connections. This may indicate network configuration problems. - + Uploads - + Options were saved successfully. Indstillingerne blev gemt. @@ -2567,12 +2567,12 @@ p, li { white-space: pre-wrap; } Søgemaskine - + Empty search pattern Tomt søge kriterie - + Please type a search pattern first Indtast venligst et søge kriterie først @@ -2585,13 +2585,13 @@ p, li { white-space: pre-wrap; } Du skal vælge mindst en søgemaskine. - - + + Results Resultater - + Searching... Søger... @@ -2634,65 +2634,65 @@ Changelog: Dit søge plugin er allerede opdateret fuldt ud. - + Cut - + Copy - + Paste - + Clear field - + Clear completion history - + Search Engine Søgemaskine - - + + Search has finished Søgningen er færdig - + An error occured during search... Der opstod en fejl under søgningen... - + Search aborted Søgning afbrudt - + Search returned no results Søgningen gav intet resultat - + Results i.e: Search results Resultater - - + + Unknown Ukendt @@ -2846,6 +2846,11 @@ Changelog: Download in sequential order (slower but good for previewing) + + + Skip file checking and start seeding immediately + + File name Fil navn @@ -2863,17 +2868,17 @@ Changelog: Download i korrekt rækkefølge (langsommere, men godt for smugkig) - + Add to download list in paused state Tilføj til download listen som sat på pause - + Add Tilføj - + Cancel Annuller @@ -2886,22 +2891,22 @@ Changelog: Vælg - + Ignored - + Normal - + High - + Maximum @@ -2971,18 +2976,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. - + '%1' was removed. 'xxx.avi' was removed. '%1' blev fjernet. @@ -2998,96 +3003,96 @@ Changelog: '%1' fortsat. - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' findes allerede i download listen. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' fortsat. (hurtig fortsættelse) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' lagt til download listen. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Kan ikke dekode torrent filen: '%1' - + This file is either corrupted or this isn't a torrent. Denne fil er enten korrupt eller ikke en torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. Kunne ikke lytte på de opgivne porte. - + UPnP/NAT-PMP: Port mapping failure, message: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 - + Fast resume data was rejected for torrent %1, checking again... - + Url seed lookup failed for url: %1, message: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Downloader '%1', vent venligst... @@ -3372,6 +3377,125 @@ Changelog: Indtast venligst mindst en URL. + + downloadThread + + + + I/O Error + I/O Fejl + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + + + downloading @@ -3589,153 +3713,153 @@ Changelog: Falsk - + Uninstall warning - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. - + Uninstall success - + Select search plugins - - + + qBittorrent search plugins - - - - - - - - + + + + + + + + Search plugin install - - - + + + Yes - - - - + + + + No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine - - - - - + + + + + Search plugin update Søge plugin opdatering - - + + Sorry, update server is temporarily unavailable. Beklager, opdaterings-serveren er midlertidigt utilgængelig. - + All your plugins are already up to date. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine - + All selected plugins were uninstalled successfully - + %1 search engine plugin was successfully updated. %1 is the name of the search engine - + %1 search engine plugin was successfully installed. %1 is the name of the search engine - + Search engine plugin archive could not be read. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine - + New search engine plugin URL - + URL: @@ -4441,54 +4565,8 @@ However, those plugins were disabled. subDownloadThread - - Host is unreachable - - - - - File was not found (404) - - - - - Connection was denied - - - - - Url is invalid - - - - - Connection failure - - - - - Connection was timed out - - - - - Incorrect network interface - - - - - Unknown error - - - - I/O Error - I/O Fejl - - - - Could not resolve proxy - + I/O Fejl @@ -4554,12 +4632,12 @@ However, those plugins were disabled. Kunne ikke oprette mappe svarende til den indtastede sti - + Invalid file selection Valg af filer ugyldigt - + You must select at least one file in the torrent Du skal vælge mindst en fil per torrent diff --git a/src/lang/qbittorrent_de.qm b/src/lang/qbittorrent_de.qm index 6ead513099bea04d59d095895e749ac3e9427683..7ce1a7607b84623f561ddcc4fc8b09678337e49f 100644 GIT binary patch delta 1875 zcmXBVdr(wW90&04y?5_k?k<;A(nZKXW@s0DZPI`bR19Ycbkr;nmV_dq#1|Hlrr-l4 ze1WV7utY2$5KmuQ68J!{1uVhIhF;?%6&+;6Cd-_xv>%lbs|n^>4&o!kfcfDAMQa!>bjJI`{vu0pPQ3>^EsYhqobm3+?ad0J|-OizQL)IWgX`3JZ6Z0v%C^PhUrM??rssUsT8*By4{QOl;&v zRB@eY+>S;hR+j*;=W&^t+u4W2f3m6Ibk-w=haQW>nP4|i@ZG!2Z2rWcz5KdpOf{z5#2D)Zr7qi2wUd zu9%w=3Cw_4P+dq_yvpY2tU?yc(nUHdr0@*-zhTMJv_&(4DK4(NP>Sq|rHrp|cNI(a zB>KK^BDZirO4yJOqfdnnsN*68*%>VU#kT=yHggVoys`&zP=?9?5spAPJu!sh5LhN5U){n$#t z{UgiK`wVT?wWqfM#YS%X4OXe2C}gs$ddukD-tt05!6v=LU2%ikv`kKW!4AxQR$kdm z`}kxw8>jdT{Y}o>lm?6`k@H8;IPLqA#VOVa`{nYj9|3I*+>U#4y|j%^$tL;4xf<$X z8@Fg3x7~v^DE@|BW8`nM>wxwI)}vUwnO*NUmuBW{0r$c)O!Ej(v-LAue+G`+VPPK8 zVwIldcti^8*%=Ru_s5eIbKET8oJH}wP31PsXAeEB8xxc)GiCg4jFJ`l4xNt&%KO#S zn^r~1t9=Xv6)HQ-6MzqXQFdP1L)rbVlt@%d^#P@H`dz@>uN>IjPrr96haRQVbD&%~ z>QAe@@kBW$GQiobxRR2o+Uv@hO_b!MT;-b2Eg)vCa_jFe07K1er8lt|@Z8KAR3G6! zbE^SDIlHaegv)HW!77|!c7tVflS$Q=UZ7Y8xThT4i*D6#*&mekK{aIOQmSqXt1wto z&Z)6(A0V(xT~JFi<^P)MxIqWCAVW=BZU9dCsL9*t#7umb>$Gy~?{ZJ==60!S)?Lc= zlN0LN{3G<_i&k@{t^-V~*f^ur_b2tft_N_$a*Hdu9hq!}(c*nE%wP`f1;&4F2=1WL z57n_sqg5zlUB>9B^Pz?#)2YAKr`%QkhGQMIz?W{r$@l4|^XZ1hlly^hIt)F%wBw)$ zhTftWN;aJP^)oEa(<-cEIiA*#IOE8XbWdA^F*vXv7*S&kn-mK8tuVekrkpa1FwUx^ zY?}75F1qI(_Ruqa=p|!&!ULcy)_5^#39S>zlC<$+;Ye1fSpy$>zPhjoczZuLV-mOZ zf@k6~T8JHBJzBC@YGYwubE9fTXo^e;wv5%hB&svZTN@cq(WXAqf?mG{)LFFWi_X)l zLgH@SriJ%B0dniK7#p?Vj4yM01voBi%gcgjFh19EN-}}Uy;`1n7}zqP)p@R_#%$1B zcO1aDecD%@Q-PtP_T9?iG>Fr*9|AT2tDChSz3EsT4di~EuRZ>-n;Kcg?54NHHi0#m z#(S3qdAaJ60b{7wsR&xTw15qmEMoU@HhhRpa5DRldFBFBUr`OcJ-#>n8Jz^gwo>aZ p<-2N!j4EX7ug)-erDm*IxjZ8!b-|MN(o#}g?uzQEF3Ytn`9EWESC0Sy delta 2652 zcmaKtc~BI07RSFm-ObQ53w!%Rp=dn`O!-`9)++F~-6`Iz z?1|#0RXz<4{19SN3{bsWX1$NhP7{ma^l?=XcZooKkIZA6WOgr=d2t%Vy-$EWB0L&N z#!(MQMcKg4CRWYGY2ya31*Qk|b|Vb{3{3U;6QE7A-@F@JqE(0Lze zW)d5=6=|FPMS?!Yf|+H&x%pV|!80JXQRbw*GAn&$c4Z@@t_oPVM&`zLncY>$_)ifT z;Lkb~6QV!+D~^YC0Q;ukW)Tle>Xq4b3VlsWfzhwwhy7Hy=`NnMz6KobWMgy>l5DbWGtjt^|nU6#-!x zz_DaSeDrW&N1`IWGXl7{f<5H}_4#3`!0A>+fts8@yk6${JBrnYc;L5Ctg9;rYX8e( z1U)x`WeV|JGOH1^zl-DJdy=Ws-^u)FGM|u1zvsuwEZ@Q}C?V4fp8SH3gGlXr{2~Ws zjrbG4=x!shKaD*U;saCo3cs&_hCF_gdzOlS;%l;K#!lz5*%k;1Co-x1FV>r(51FLK#+F)I8w!uCc1C?6`bLoIw# z_W_VlNZe2C7Cxz;3T*kF#dw59mp>5dN7n)!YlRk-H=zBqaKexR#03kdmX8Fga)eHE zJMdAX%+7LF?h(rcvks3?MP&>7(L)=j6-{FkfRrJkwTbH3@mO58aUY=HB`&v}p)qO` zODnU0<2B-%l_p?Rl~^{I#%sHgO;PI8XNlY1+YGd)%k0`L*7NVv?ino}K0#6Dx69lR zDzoE=*kNn{#{MLpT}-})j1(`5}nnWWziY6}5+%$upkQvs%wkzsm_B-U&xvIr|i0?K2T7) z0!n~oNlI7rTeOjODD&&c#uE)}n4}HdsjT8jQr&E2_0)SnK%a8g#y+5J3Y#ryUtOVW z$Rq>WKU5xHNe!L2T6sfz8%Qct-v0L&^weWzZ$=Z~wMu!nUslaL~X zuU|@~j%9f&eW^uC?$81wdZc;#Y2t>zA*J7}0@m52OpA(MgeRq}_h}c!E|XbtS!R8; z%;u>wFIXklJ?i?-EUB>U5WO7}rQ*pe0H3#|mCwv1;*qp&5{WJhmk!-LL*f#o=K7NW zQ>%Rg%cT3l6(BuXX2o2YUBN6y9qRY>R#iZBFA#Y|71l+5?M`EPYCSiNRjU&f?KjwU zwKja2>S#XQa?)SbcytHw^=Q?VUaCIifvR^y5^(UA%$`Cv%uCOOvIH-EIHw*ul%8q3 zqYfL<2Mpe)j+qz@1m&q`j@m{$^^SU0Emi(i604?XUSh|+(tO`hcP@AUTsWjYm$?Ku z|1KM;iBz2HVW}EDw~G~Pw35p!BbUOm*{nvBrKtLrJ=LVVQg=$D6se~zS2f-|X>j>z zhNe-kjgK`U3vbYC;1bL89yyZ* zvp;JNcsYSDBQy=)rvqcQYfg1f27DEo%T|BdEB7?t1eXBLCe2kp+DnIeWcKuFp1gaW zTzZ{}J~@iEgDlS{(y#i0cf$edj5^x8dD0X5>WpIteL@wN0@xLwC~gW92h9l>=W}<% zKKhib_IZ?;2_(0XFPHinmJZUDH{7V%J(&w(bEf&vbYKh;VZstv=xq0-Zz??K@SAS4 zT20wbv(2i@F_Xn(vN)0y>-VR{yng zAfErP;uRPiI-|*IHW^)Y(lAngTT<0++q0=lizkv223sRix?ZsT(LwYihLX{Dtw zjK^3y!Ur-APBdFgI=7GRq&YU1)u;;_KX!ch3sOcPiL}Wo%)ijZDozKK4upLv$>wnC z%nqH)O0CUaVpwc>QP(HXTb(9*jv@Owd0AOa!tmz|p$@5d9e-d&RY8#hIlNQt7Plg^ VHQ!({KWE_B&Xz?DSFa5h{|8A+6kPxS diff --git a/src/lang/qbittorrent_de.ts b/src/lang/qbittorrent_de.ts index 087fb2fd8..48485c691 100644 --- a/src/lang/qbittorrent_de.ts +++ b/src/lang/qbittorrent_de.ts @@ -1657,8 +1657,8 @@ qBittorrent beobachtet das Verzeichniss und starten den Download von vorhandenen :: By Christophe Dumez :: Copyright (c) 2006 - - + + qBittorrent qBittorrent @@ -1679,12 +1679,12 @@ qBittorrent beobachtet das Verzeichniss und starten den Download von vorhandenen UP Geschwindigkeit: - + Open Torrent Files Öffne Torrent-Dateien - + Torrent Files Torrent-Dateien @@ -1726,10 +1726,10 @@ qBittorrent beobachtet das Verzeichniss und starten den Download von vorhandenen Diese Datei ist entweder beschädigt, oder kein torrent. - - - - + + + + Are you sure? -- qBittorrent Sind Sie sicher? -- qBittorrent @@ -1738,20 +1738,20 @@ qBittorrent beobachtet das Verzeichniss und starten den Download von vorhandenen Wollen Sie wirklich alle Dateien aus der Download Liste löschen? - - - - - + + + + + &Yes &Ja - - - - - + + + + + &No &Nein @@ -1760,7 +1760,7 @@ qBittorrent beobachtet das Verzeichniss und starten den Download von vorhandenen Download Liste gelöscht. - + Are you sure you want to delete the selected item(s) in download list? Wollen Sie wirklich die ausgewählten Elemente aus der Download-Liste löschen? @@ -1820,7 +1820,7 @@ qBittorrent beobachtet das Verzeichniss und starten den Download von vorhandenen <b>qBittorrent</b><br>DL Geschwindigkeit: - + Finished Beendet @@ -2081,7 +2081,7 @@ Bitte schliessen Sie diesen zuerst. Wollen Sie wirklich die ausgewählten Elemente aus der Download Liste und von der Festplatte löschen? - + Download finished Download abgeschlossen @@ -2095,15 +2095,15 @@ Bitte schliessen Sie diesen zuerst. Suchmaschine - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Verbindungs-Status: @@ -2166,15 +2166,15 @@ Bitte schliessen Sie diesen zuerst. qBittorrent %1 gestartet. - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s DL Geschwindigkeit: %1 KB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s UP Geschwindigkeit: %1 KiB/s @@ -2195,7 +2195,7 @@ Bitte schliessen Sie diesen zuerst. Angehalten - + Are you sure you want to quit? Wollen Sie wirklich beenden? @@ -2258,14 +2258,14 @@ Bitte schliessen Sie diesen zuerst. '%1' fortgesetzt. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 vollständig heruntergeladen. - + I/O Error i.e: Input/Output Error I/O Error @@ -2281,12 +2281,12 @@ Bitte schliessen Sie diesen zuerst. Ein Fehler ist aufgetreten (Festplatte voll?), '%1' angehalten. - + Connection Status: Verbindungs-Status: - + Online Online @@ -2322,23 +2322,23 @@ Bitte schliessen Sie diesen zuerst. Lade '%1', bitte warten... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Ein Fehler ist aufgetreten (Festplatte voll?), '%1' angehalten. - + Search Suche - + RSS RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2355,13 +2355,13 @@ Bitte schliessen Sie diesen zuerst. DHT Unterstützung [Aktiviert], port: %1 - - + + DHT support [OFF] DHT Unterstützung [Deaktiviert] - + PeX support [ON] PeX Unterstützung [Aktiviert] @@ -2370,15 +2370,15 @@ Bitte schliessen Sie diesen zuerst. PeX Unterstützung [Deaktiviert] - + The download list is not empty. Are you sure you want to quit qBittorrent? Die Download Liste ist nicht leer. Möchten sie qBittorrent wirklich beenden? - - + + Downloads Downloads @@ -2387,12 +2387,12 @@ Möchten sie qBittorrent wirklich beenden? Wollen Sie wirklich die ausgewählten Elemente aus der Beendet Liste und von der Festplatte löschen? - + Are you sure you want to delete the selected item(s) in finished list? Wollen Sie wirklich die ausgewählten Elemente aus der Beendet Liste löschen? - + UPnP support [ON] UPNP Unterstützung [Aktiviert] @@ -2401,17 +2401,17 @@ Möchten sie qBittorrent wirklich beenden? ACHTUNG! Die Verbreitung von urheberrechlich geschütztem Material ist gegen das Gesetz. - + Encryption support [ON] Verschlüsselung Unterstützung [Aktiviert] - + Encryption support [FORCED] Verschlüsselung Unterstützung [Erzwungen] - + Encryption support [OFF] Verschlüsselungs-Unterstützung [Deaktiviert] @@ -2425,13 +2425,13 @@ Möchten sie qBittorrent wirklich beenden? Verhältnis - + Alt+1 shortcut to switch to first tab Alt+1 - + Alt+2 shortcut to switch to second tab Alt+2 @@ -2442,18 +2442,18 @@ Möchten sie qBittorrent wirklich beenden? Alt+3, Strg+F - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error URL Download Fehler - + Couldn't download file at url: %1, reason: %2. Konnte Datei von URL: %1 nicht laden, Begründung: %2. @@ -2462,12 +2462,12 @@ Möchten sie qBittorrent wirklich beenden? Fast-Resume Daten wurden zurückgewiesen für torrent %1, prüfe nochmal... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Sind Sie sicher, daß Sie die ausgewählten Einträge aus der Download Liste und von der Festplatte löschen möchten? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Sind Sie sicher, daß Sie die ausgewählten Einträge aus der Beendet Liste und von der Festplatte löschen möchten? @@ -2481,50 +2481,50 @@ Möchten sie qBittorrent wirklich beenden? URL Seed Lookup fehlgeschlagen für URL: %1, Begründung: %2 - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Strg+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent lauscht auf Port: TCP/%1 - + UPnP support [OFF] UPnP Unterstützung [AUS] - + NAT-PMP support [ON] NAT-PMP Unterstützung [AN] - + NAT-PMP support [OFF] NAT-PMP Unterstützung [AUS] - + DHT support [ON], port: UDP/%1 DHT Unterstützung [EIN], Port: UDP/%1 - + Local Peer Discovery [ON] Lokale Peer Auffindung [AN] - + Local Peer Discovery support [OFF] Unterstützung für Lokale Peer Auffindung [AUS] @@ -2534,48 +2534,48 @@ Möchten sie qBittorrent wirklich beenden? '%1' wurde entfernt, weil das von Ihnen eingestellte maximale Verhältnis erreicht wurde. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) - - + + DL: %1 KiB/s DL: %1 KiB/s - - + + UP: %1 KiB/s UP: %1 KiB/s - - + + Ratio: %1 Verhältnis: %1 - - + + DHT: %1 nodes DHT: %1 Nodes - - + + No direct connections. This may indicate network configuration problems. Keine direkten Verbindungen. Es könnte bedeuten, daß Sie Probleme mit Ihrer Netzwerkkonfiguration haben. - + Uploads Uploads - + Options were saved successfully. Optionen wurden erfolgreich gespeichert. @@ -3303,12 +3303,12 @@ p, li { white-space: pre-wrap; } Suchmaschine - + Empty search pattern Leere Suchanfrage - + Please type a search pattern first Bitte geben Sie zuerst eine Suchanfrage ein @@ -3321,13 +3321,13 @@ p, li { white-space: pre-wrap; } Sie müssen mindestens eine Suchmaschine auswählen. - - + + Results Ergebnisse - + Searching... Suche... @@ -3370,58 +3370,58 @@ Changelog: "Such"-Plugin ist schon auf dem neuesten Stand. - + Cut Ausschneiden - + Copy Kopieren - + Paste Einfügen - + Clear field Feld leeren - + Clear completion history Vervollständigungshistorie löschen - + Search Engine Suchmaschine - - + + Search has finished Suche abgeschlossen - + An error occured during search... Während der Suche ist ein Fehler aufgetreten ... - + Search aborted Suche abgebrochen - + Search returned no results Suche lieferte keine Ergebnisse - + Results i.e: Search results Ergebnisse @@ -3435,8 +3435,8 @@ Changelog: Konnte Such-Plugin Update nicht von URL: %1 laden, Begründung: %2. - - + + Unknown Unbekannt @@ -3614,6 +3614,11 @@ Changelog: Download in sequential order (slower but good for previewing) + + + Skip file checking and start seeding immediately + + File name Datei Name @@ -3631,17 +3636,17 @@ Changelog: In richtiger Reihenfolge herunterladen (langsamer, aber besser zum Vorschauen) - + Add to download list in paused state Der Download Liste im Pause-Modus hinzufügen - + Add Hinzufügen - + Cancel Abbrechen @@ -3658,22 +3663,22 @@ Changelog: Auswählen - + Ignored Ignoriert - + Normal Normal - + High Hoch - + Maximum Maximum @@ -3743,18 +3748,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. %1 hat das gesetzte maximale Verhältnis erreicht. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' wurde endgültig entfernt. - + '%1' was removed. 'xxx.avi' was removed. '%1' wurde entfernt. @@ -3770,96 +3775,96 @@ Changelog: '%1' wird fortgesetzt. - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' befindet sich bereits in der Download-Liste. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' wird fortgesetzt. (Schnelles Fortsetzen) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' wurde der Download-Liste hinzugefügt. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Kann Torrent Datei nicht dekodieren: '%1' - + This file is either corrupted or this isn't a torrent. Diese Datei ist entweder beschädigt, oder kein Torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>wurde geblockt aufgrund Ihrer IP Filter</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>wurde gebannt aufgrund von beschädigten Teilen</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. Konnte nicht auf den angegebenen Ports lauschen. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Port Mapping Fehler, Fehlermeldung: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Port Mapping erfolgreich, Meldung: %1 - + Fast resume data was rejected for torrent %1, checking again... Fast-Resume Daten für den Torrent %1 wurden zurückgewiesen, prüfe erneut... - + Url seed lookup failed for url: %1, message: %2 URL Seed Lookup für die URL: %1 ist fehlgeschlagen, Meldung: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Lade '%1', bitte warten... @@ -4192,6 +4197,125 @@ Changelog: Bitte geben Sie mindestens eine URL an. + + downloadThread + + + + I/O Error + + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Unbekannter Fehler + + downloading @@ -4417,12 +4541,12 @@ Changelog: Falsch - + Uninstall warning Deinstallations Warnung - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4431,7 +4555,7 @@ However, those plugins were disabled. Die Plugins wurden jedoch deaktiviert. - + Uninstall success Deinstallation erfolgreich @@ -4440,62 +4564,62 @@ Die Plugins wurden jedoch deaktiviert. Alle ausgewählten Plugins wurden erfolgreich deinstalliert - + Select search plugins Wähle Suchplugin - - + + qBittorrent search plugins qBittorrent Suchplugins - - - - - - - - + + + + + + + + Search plugin install Suchplugin installieren - - - + + + Yes - - - - + + + + No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine Eine neuere Version des Suchmaschinen Plugins %1 ist bereits installiert. @@ -4511,17 +4635,17 @@ Die Plugins wurden jedoch deaktiviert. Das Suchmaschinen Plugin wurde erfolgreich installiert. - - - - - + + + + + Search plugin update Such-Plugin update - - + + Sorry, update server is temporarily unavailable. Update Server vorübergehend nicht erreichbar. @@ -4536,60 +4660,60 @@ Die Plugins wurden jedoch deaktiviert. Update des Suchplugins %1 fehlgeschlagen. - + All your plugins are already up to date. Alle Plugins sind auf dem neuesten Stand. - + All selected plugins were uninstalled successfully Alle ausgewählten Plugins wurden erfolgreich deinstalliert - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine %1 Suchmaschinen Plugin konnte nich aktualisiert werden, behalte alte Version. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine %1 Suchmaschinen Plugin konnte nicht installiert werden. - + %1 search engine plugin was successfully updated. %1 is the name of the search engine %1 Suchmaschinen Plugin wurder erfolgreich geupdated. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine %1 Suchmaschinen Plugin wurde erfolgreich installiert. - + Search engine plugin archive could not be read. Konnte Suchmaschinen Plugin Archiv nicht lesen. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Installation des Suchmaschinen Plugins %1 fehlgeschlagen. - + New search engine plugin URL Neue Suchmaschinen Plugin URL - + URL: URL: @@ -5521,29 +5645,20 @@ Die Plugins wurden jedoch deaktiviert. subDownloadThread - Host is unreachable - Host ist unerreichbar + Host ist unerreichbar - File was not found (404) - Datei nicht gefunden (404) + Datei nicht gefunden (404) - Connection was denied - Verbindung verweigert + Verbindung verweigert - Url is invalid - URL ist ungültig - - - - I/O Error - + URL ist ungültig Connection forbidden (403) @@ -5558,29 +5673,24 @@ Die Plugins wurden jedoch deaktiviert. Inhalt wurde verschoben (301) - Connection failure - Verbindungs-Fehler + Verbindungs-Fehler - Connection was timed out - Verbidung wurde unterbrochen + Verbidung wurde unterbrochen - Incorrect network interface - Falsches Netzwerk Interface + Falsches Netzwerk Interface - Unknown error - Unbekannter Fehler + Unbekannter Fehler - Could not resolve proxy - Der Proxy konnte nicht aufgelöst werden + Der Proxy konnte nicht aufgelöst werden @@ -5646,12 +5756,12 @@ Die Plugins wurden jedoch deaktiviert. Speicher-Pfad konnte nicht erstellt werden - + Invalid file selection Ungültige Datei Auswahl - + You must select at least one file in the torrent Sie müssen mindestens eine Datei aus dem Torrent selektieren diff --git a/src/lang/qbittorrent_el.qm b/src/lang/qbittorrent_el.qm index 258436f96d757b3addcaaf372af4d01d73ab3b32..979a392ac47c6c7b6a799536803548515a30ad93 100644 GIT binary patch delta 1840 zcmXZdc~n$Y90&04+vfRZm>D*iAZ4;bL<5Wtk{eVm2q99j9|j}gC~icCmNKppVQAt{ z%~UEEk^+e&#V|mPtSqQ3v{FoIEJcTsSQJ6Kp4&g~bKaac_uTvYeebwrQhO%1$&gFBjRdD<6a_=mK@12fmL=@jll+>T5j{aeI+paHkS$u1_o&@cpv#an^ixk$=h z4vc;sN!xC*)ny<#rW<%=50cm41;+pHtU~_YsBn87NG;z2128GSrS^48qxHrpb zvh1rrHdZ+Nv?tKFo3i8}_lv`X_JDVQqBn%A`{My;DV53Alw{E__Ge&XjX0?)2#CBb zMuhmX4kwBcCr1N!4vI6noWKLe#ni=Yun8-;an<571MAGCVD5lHT$>TW+TAD?mTzE* zDIz~5NIW^75|r5~ozl3RmB7$MX>uCteQYteJ6?)tjsh0caqCUeG#h)Le?Rx=Dk*to z0Z_18N`Bji)#93zwuDXUkrpZKN-gk96B%{W^_Rn>P41ro?PJNNvk1MEr;8Bs=#Vb> z(W7$8G`6a57R#y6v;*bg@{;_2f!~|tRcZt9?S1l^z2})nx^n3Sxs(}0W~W#RS5faMiTmfMIbWpN#wRr5ni?&c4H zQDw@jIj30A-c(kVqyyKhm36DLfIw0T?qdNwl};Omj08tA;F`dnt!Iaf{1`f)zjJk&fd zmV_N8YF@}(wl#azrRA)Yf1jY?hLQSTz0@rdTgjPYG}B;t@_BV{Up6o|N&VQDjkWe8 zwOS;g@g=p!#@2u1lv=-+U$KS$SU^KfVZt?&+H$t$uMjf`_m0i!>AD* zfOoDT^zjhjes4qMn4N52J!^6?o&c5z?kNn(MX+N0OTx0>d^(P&04|eM{)l{&c7$%sGPV8sbNEA8U z10~#zr{NwELOat2H g&8EzpWs4W)WMszAdnqd;vnI5K!fW$gg>$<90Gp{~F#rGn delta 2677 zcmaKtdsGu=8pfZ=WHL-bfS?$`OVaLEz>0Xqq5^Fd1Xe{>5oAG|lBm&`)Ns{Wuqs+v z>qZ^(tx^3R>g(-hjv~7{JI{4>nefprHDLR1Was0v+yfeZV?K%zzN;{5 zJ|((n4aR(7rl(F|%q9tVx`|~f#!su-i}6cV04-gRXq^r8T!_S#zf#>MB#p=i+EyWH zWHXRcgrtJ!KK98jY%e8sJi9vr5N>4s>%eF)nQaM7tJDXka2tE|1O7UW+x(Ag;PV`A_g^|v zm_9PA8)ZIDV55}1y?^|kyB7FQVDTs1?akwWrg-+L(!ja1Ql(x}DqAj128^V|%^j6d~v4O&*2}OK}BNy-)&xfT9 zqfD2`YSBQDl`{7p;(CZYRa;pM3 zpTnAjD0Smqewp`oz|}?;rqXlUSb{2o3uG%)!F?Ud36Z^lW3MZd&kD~q-i028W-+sMtH%A%5R zpth2Y68)vmlqJ22f#x#yk*L>sE00(Y0#)%cAAQ4$#X;PAtU(Mm}0Q%#{yi z-aIH+`a}YzM}qC={=n?*M6zf)o&8$=%;&-Q3%^Fr@+%_?53$^k; zS?rm*hx+_+aXC+woXucC8huPhal>OPFeOpk*`2iJZ4Gxl(Ml*s7V_Nrcb;AL- zJ@d%yPv2vs+=Kg?CDn>!z`l26-ah_<9QI4P{-HqYJjri*GnM#63S2UcO1sU9-Ge#C z>fH_T^Q4K3&(I+^%iK3#=7lFR?`U3-u9D1rd^=l-xSam=xHR6X*R<9kz ztz%k`iHZjo*$fYTpqF}g7CrK?v$|sUTHyJ9b$z26=+Rx>xHOt387lMHEmrCgqBwAh z-SF@a9Iolwl{Vc!stI`Q4&XaeGw>~Xmvr&fjCgZ3oja8#wwSWK`Irs#^ymCps%N(D zZOxIShv2x8nvBY2Ok=&F{b+eQeJ~bl=Sv%bvenup(bSdJX6>45 zr|4r;q}}eG0sK_0E&pi(5PVg8_~=kTH%EKM?n7pR_MCw{x7MOP?@i~T!6@^$6m9E5 z+W&AYYtZFM3p_r)Le_gWnpwPqb=y43x0A&*gFW^PX$1~GW5wPb)blmCUEZ zc*FIhp0}261#TET?_YWsh_-sRM5O|$_pRXg-134BQ!C5EPc04CcIP+nNB9zc55Jc$ zW8a5#8R9+6VYge-GOP}}ak9y3%XC^q`uytBGv6QX$hO-YCiA$dPK(LR@wD8XU&tTe ztN0535MSZiAM5jn{n@5;quFA&TFmW8^yD}4rIbK5e-K8#mgG*7U^QRkk{j6h|Ku{P zGc0DKBQv8N#i6Y2z9H{xQrg9TOV>`)JpmwuQd(`Gi>9T`Ta zCEa1mvKT*bI&x;UBR_x=CNaK@0@S+XU)+7e@1iwV&{7Io!RJ-F77%~|=tEcF%ZQz$ ztTv0$)f!jO$&O6B*%&aO&w#*oLI&{bNc;$O#U)?%qEi%*ulk>m6!B%04tddz^bDgl z-I!^oX{Ajyy>Dx8kRAVM1j;)G!H9dQCdCBD86%xehqIj|-{MzOYE@Ky8M&d`Udoi_ zNLp6dkpTcWy< qVMTAUVkKWg9dgCYq-eI6`FkWdZLVHe?O7(9^%ZWcsCDPAsQwGBl~Bn5 diff --git a/src/lang/qbittorrent_el.ts b/src/lang/qbittorrent_el.ts index f57662ce3..5610920f1 100644 --- a/src/lang/qbittorrent_el.ts +++ b/src/lang/qbittorrent_el.ts @@ -1724,7 +1724,7 @@ Copyright © 2006 από τον Christophe Dumez<br> GUI - + Open Torrent Files Άνοιγμα Αρχείων τορεντ @@ -1745,25 +1745,25 @@ Copyright © 2006 από τον Christophe Dumez<br> Σίγουρα θέλετε να διαγράψετε όλα τα αρχεία στην λίστα κατεβάσματος? - - - - - + + + + + &Yes &Ναι - - - - - + + + + + &No &Όχι - + Are you sure you want to delete the selected item(s) in download list? Είστε σίγουρος οτι θέλετε να διαγράψετε το(α) επιλεγμλένα αντικείμενο(α) από την λίστα κατεβάσματος? @@ -1780,7 +1780,7 @@ Copyright © 2006 από τον Christophe Dumez<br> kb/s - + Finished Τελείωσε @@ -1825,7 +1825,7 @@ Copyright © 2006 από τον Christophe Dumez<br> Δεν μπόρεσε να δημιουργηθεί η κατηγορία: - + Torrent Files Αρχεία Τορεντ @@ -1885,16 +1885,16 @@ Copyright © 2006 από τον Christophe Dumez<br> qBittorrent - - + + qBittorrent qBittorrent - - - - + + + + Are you sure? -- qBittorrent Είστε σίγουρος? -- qBittorrent @@ -2172,7 +2172,7 @@ Please close the other one first. Είστε σίγουρος/η οτι θέλετε να διαγράψετε το(α) επιλεγμένο(α) αντικείμενο(α) από τη λίστα κατεβάσματος και το σκληρό δίσκο? - + Download finished Το κατέβασμα τελείωσε @@ -2186,15 +2186,15 @@ Please close the other one first. Μηχανή Αναζήτησης - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Κατάσταση Σύνδεσης: @@ -2257,15 +2257,15 @@ Please close the other one first. Εκκινήθηκε το qBittorrent %1. - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Ταχύτητα Κατεβάσματος: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Ταχύτητα Ανεβάσματος: %1 KiB/s @@ -2286,7 +2286,7 @@ Please close the other one first. Αποτυχία λειτουργίας - + Are you sure you want to quit? Είστε σίγουρος/η οτι θέλετε να κλείσετε την εφαρμογή? @@ -2349,14 +2349,14 @@ Please close the other one first. Το '%1' ξανάρχισε. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. Έχει τελειώσει το κατέβασμα του '%1'. - + I/O Error i.e: Input/Output Error I/O Λάθος @@ -2372,12 +2372,12 @@ Please close the other one first. Ένα σφάλμα προέκυψε (δίσκος πλήρης?), το '%1' είναι σε παύση. - + Connection Status: Κατάσταση Σύνδεσης: - + Online Online @@ -2413,23 +2413,23 @@ Please close the other one first. Κατέβασμα του '%1', παρακαλώ περιμένετε... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Ένα σφάλμα προέκυψε (δίσκος πλήρης?), το '%1' είναι σε παύση. - + Search Εύρεση - + RSS RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2447,13 +2447,13 @@ Please close the other one first. Υποστήριξη DHT [ΝΑΙ], θύρα: %1 - - + + DHT support [OFF] Υποστήριξη DHT [ΟΧΙ] - + PeX support [ON] Υποστήριξη PeX [ΝΑΙ] @@ -2462,25 +2462,25 @@ Please close the other one first. Υποστήριξη PeX [ΟΧΙ] - + The download list is not empty. Are you sure you want to quit qBittorrent? Η λίστα κατεβάσματος δεν είναι άδεια. Σίγουρα θέλετε να κλείσετε το qBittorrent? - - + + Downloads Κατέβασματα - + Are you sure you want to delete the selected item(s) in finished list? Είστε σίγουρος οτι θέλετε να διαγράψετε το(α) επιλεγμλένα αντικείμενο(α) από την λίστα των ολοκληρωμένων? - + UPnP support [ON] Υποστήριξη UPnP [ΝΑΙ] @@ -2489,17 +2489,17 @@ Are you sure you want to quit qBittorrent? Προσοχή, η διακίνηση υλικού προστατευόμενου από πνευματικά δικαιώματα χωρίς άδεια είναι παράνομη. - + Encryption support [ON] Υποστήριξη κρυπτογράφησης [ΝΑΙ] - + Encryption support [FORCED] Υποστήριξη κρυπτογράφησης [ΑΝΑΓΚΑΣΤΙΚΑ] - + Encryption support [OFF] Υποστήριξη κρυπτογράφησης [ΟΧΙ] @@ -2513,13 +2513,13 @@ Are you sure you want to quit qBittorrent? Αναλογία - + Alt+1 shortcut to switch to first tab Alt+1 - + Alt+2 shortcut to switch to second tab Alt+2 @@ -2530,18 +2530,18 @@ Are you sure you want to quit qBittorrent? Alt+3, Ctrl+F - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Σφάλμα κατεβάσματος url - + Couldn't download file at url: %1, reason: %2. Αδύνατο κατέβασμα αρχείου από το url: %1,αιτία: %2. @@ -2550,12 +2550,12 @@ Are you sure you want to quit qBittorrent? Γρήγορη συνέχεια κατεβάσματος αρχείων απορρίφθηκε για το τορεντ %1, επανέλεγχος... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Είστε σίγουρος οτι θέλετε να διαγράψετε το(α) επιλεγμλένα αντικείμενο(α) από την λίστα κατεβάσματος και από το σκληρό δίσκο? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Είστε σίγουρος οτι θέλετε να διαγράψετε το(α) επιλεγμλένα αντικείμενο(α) από το σκληρό δίσκο? @@ -2569,50 +2569,50 @@ Are you sure you want to quit qBittorrent? Αποτυχία ελέγχου url μοιράσματος για το url: %1, μήνυμα: %2 - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 Το qBittorrent χρησιμοποιεί τη θύρα: TCP/%1 - + UPnP support [OFF] Υποστήριξη UPnP [ΟΧΙ] - + NAT-PMP support [ON] Υποστήριξη NAT-PMP [NAI] - + NAT-PMP support [OFF] Υποστήριξη NAT-PMP [OXI] - + DHT support [ON], port: UDP/%1 Υποστήριξη DHT [NAI], θύρα: UDP/%1 - + Local Peer Discovery [ON] Ανακάλυψη Τοπικών Συνδέσεων [ΝΑΙ] - + Local Peer Discovery support [OFF] Ανακάλυψη Τοπικών Συνδέσεων [ΟΧΙ] @@ -2622,48 +2622,48 @@ Are you sure you want to quit qBittorrent? Το '%1' αφαιρέθηκε επειδή η αναλογία του έφτασε τη μέγιστη τιμή που θέσατε. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) - - + + DL: %1 KiB/s DL: %1 KiB/s - - + + UP: %1 KiB/s UP: %1 KiB/s - - + + Ratio: %1 Αναλογία: %1 - - + + DHT: %1 nodes DHT: %1 κόμβοι - - + + No direct connections. This may indicate network configuration problems. Χωρίς απευθείας συνδέσεις. Αυτό μπορεί να οφείλεται σε προβλήματα ρυθμίσεων δικτύου. - + Uploads Ανεβάσματα - + Options were saved successfully. Οι επιλογές αποθηκεύτηκαν επιτυχώς. @@ -3400,12 +3400,12 @@ p, li { white-space: pre-wrap; } Μηχανή αναζήτησης - + Empty search pattern Κενό πρότυπο εύρεσης - + Please type a search pattern first Παρακαλώ εισάγετε ένα σχέδιο εύρεσης πρώτα @@ -3418,13 +3418,13 @@ p, li { white-space: pre-wrap; } Πρέπει να επιλέξετε τουλάχιστο μια μηχανή αναζήτησης. - - + + Results Αποτελέσματα - + Searching... Αναζήτηση... @@ -3467,58 +3467,58 @@ Changelog: Το plugin αναζήτησης είναι ήδη αναβαθμισμένο. - + Cut Αποκοπή - + Copy Αντιγραφή - + Paste Επικόλληση - + Clear field Εκκαθάριση πεδίου - + Clear completion history Εκκαθάριση ιστορικού φόρμας - + Search Engine Μηχανή Αναζήτησης - - + + Search has finished Η αναζήτηση τελείωσε - + An error occured during search... Σφάλμα κατά την εύρεση... - + Search aborted Αναζήτηση διεκόπη - + Search returned no results Η αναζήτηση δεν έφερε αποτελέσματα - + Results i.e: Search results Αποτελέσματα @@ -3532,8 +3532,8 @@ Changelog: Αδύνατο κατέβασμα plugin αναζήτησης από το url: %1,αιτία: %2. - - + + Unknown Άγνωστο @@ -3711,6 +3711,11 @@ Changelog: Download in sequential order (slower but good for previewing) Κατέβασμα σε συνεχόμενη σειρά (πιο αργό αλλά καλό για preview) + + + Skip file checking and start seeding immediately + + File name Όνομα αρχείου @@ -3728,17 +3733,17 @@ Changelog: Κατέβασμα στη σωστή σειρά (πιο αργό αλλα καλό για προεπισκόπηση) - + Add to download list in paused state Προσθήκη στη λίστα κατεβάσματος σε κατάσταση παύσης - + Add Προσθήκη - + Cancel Ακύρωση @@ -3755,22 +3760,22 @@ Changelog: Επιλογή - + Ignored Αγνοήθηκε - + Normal Κανονικό - + High Υψηλό - + Maximum Μέγιστο @@ -3844,18 +3849,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. Το %1 έφτασε στη μέγιστη αναλογία που θέσατε. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' διαγράφηκε για πάντα. - + '%1' was removed. 'xxx.avi' was removed. Το '%1' αφαιρέθηκε. @@ -3871,96 +3876,96 @@ Changelog: Το '%1' ξανάρχισε. - + '%1' is not a valid magnet URI. Το '%1' δεν είναι ένα έγκυρο magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. Το '%1' είναι ήδη στη λίστα κατεβάσματος. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) Το '%1' ξανάρχισε. (γρήγορη επανασύνδεση) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. Το '%1' προστέθηκε στη λίστα κατεβάσματος. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Αδύνατο να αποκωδικοποιηθεί το αρχείο τορεντ: '%1' - + This file is either corrupted or this isn't a torrent. Το αρχείο είτε είναι κατεστραμμένο, ή δεν ειναι τορεντ. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>μπλοκαρίστηκε εξαιτίας του IP φίλτρου</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>απαγορεύτηκε εξαιτίας κατεστραμμένων κομματιών</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Προγραμματισμένο κατέβασμα του αρχείου %1,που βρίσκεται στο τόρεντ %2 - + Unable to decode %1 torrent file. Αδύνατο να αποκωδικοποιηθεί το αρχείο τόρεντ %1. - + Couldn't listen on any of the given ports. Δεν "ακροάστηκα" καμία σπό τις δωσμένες θύρες. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Σφάλμα χαρτογράφησης θυρών, μήνυμα: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Χαρτογράφηση θυρών επιτυχής, μήνυμα: %1 - + Fast resume data was rejected for torrent %1, checking again... Γρήγορη συνέχεια κατεβάσματος αρχείων απορρίφθηκε για το τορεντ %1, επανέλεγχος... - + Url seed lookup failed for url: %1, message: %2 Αποτυχία ελέγχου url μοιράσματος για το url: %1, μήνυμα: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Κατέβασμα του '%1', παρακαλώ περιμένετε... @@ -4293,6 +4298,125 @@ Changelog: Παρακαλώ εισάγετε τουλάχιστο ένα URL. + + downloadThread + + + + I/O Error + + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Άγνωστο σφάλμα + + downloading @@ -4518,12 +4642,12 @@ Changelog: Λάθος - + Uninstall warning Προειδοποίηση απεγκατάστασης - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4532,7 +4656,7 @@ However, those plugins were disabled. Ωστόσο, αυτά τα plugin απενεργοποιήθηκαν. - + Uninstall success Επιτυχής απεγκατάσταση @@ -4541,62 +4665,62 @@ However, those plugins were disabled. Όλα τα επιλεγμένα plugin απεγκαταστήθηκαν επιτυχώς - + Select search plugins Επιλέξτε plugin αναζήτησης - - + + qBittorrent search plugins plugin αναζήτησης του qBittorrent - - - - - - - - + + + + + + + + Search plugin install Εγκατάσταση plugin αναζήτησης - - - + + + Yes Ναι - - - - + + + + No Όχι - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine Μια πιο πρόσφατη έκδοση plugin αναζήτησης %1 έχει ήδη εγκατασταθεί. @@ -4612,17 +4736,17 @@ However, those plugins were disabled. Το plugin αναζήτησης %1 εγκαταστήθηκε επιτυχώς. - - - - - + + + + + Search plugin update Αναβάθμιση plugin αναζήτησης - - + + Sorry, update server is temporarily unavailable. Λυπούμαστε, ο εξυπηρετητής αναβάθμισης δεν είναι προσωρινά διαθέσιμος. @@ -4637,60 +4761,60 @@ However, those plugins were disabled. Λυπούμαστε, η αναβάθμιση του plugin αναζήτησης %1 απέτυχε. - + All your plugins are already up to date. Όλα τα plugin σας είναι ήδη αναβαθμισμένα. - + All selected plugins were uninstalled successfully Όλα τα επιλεγμένα plugin απεγκαταστάθηκαν επιτυχώς - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine Το plugin αναζήτησης %1 δεν ήταν δυνατό να αναβαθμιστεί, παραμένει η παλιά έκδοση. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine Το plugin αναζήτησης %1 δεν ήταν δυνατό να εγκατασταθεί. - + %1 search engine plugin was successfully updated. %1 is the name of the search engine Το plugin αναζήτησης %1 αναβαθμίστηκε επιτυχώς. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine Το plugin αναζήτησης %1 εγκαταστάθηκε επιτυχώς. - + Search engine plugin archive could not be read. Το αρχείο του plugin αναζήτησης δεν ήταν δυνατό να διαβαστεί. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Λυπούμαστε, η εγκατάσταση του plugin αναζήτησης %1 απέτυχε. - + New search engine plugin URL Νέο URL plugin αναζήτησης - + URL: URL: @@ -5601,29 +5725,24 @@ However, those plugins were disabled. subDownloadThread - Host is unreachable - Ο φορέας δεν βρέθηκε + Ο φορέας δεν βρέθηκε - File was not found (404) - Το αρχείο δε βρέθηκε (404) + Το αρχείο δε βρέθηκε (404) - Connection was denied - Άρνηση σύνδεσης + Άρνηση σύνδεσης - Url is invalid - Άκυρο url + Άκυρο url - I/O Error - Σφάλμα I/O + Σφάλμα I/O Connection forbidden (403) @@ -5638,29 +5757,24 @@ However, those plugins were disabled. Το περιεχόμενο έχει μετακινηθεί (301) - Connection failure - Σφάλμα σύνδεσης + Σφάλμα σύνδεσης - Connection was timed out - Τέλος χρόνου σύνδεσης + Τέλος χρόνου σύνδεσης - Incorrect network interface - Λανθασμένο interface δικτύου + Λανθασμένο interface δικτύου - Unknown error - Άγνωστο σφάλμα + Άγνωστο σφάλμα - Could not resolve proxy - Δεν μπόρεσε να βρεθεί το proxy + Δεν μπόρεσε να βρεθεί το proxy @@ -5726,12 +5840,12 @@ However, those plugins were disabled. Δεν μπόρεσε να δημιουργηθεί η διαδρομή αποθήκευσης - + Invalid file selection Άκυρη επιλογή αρχείου - + You must select at least one file in the torrent Πρέπει να επιλέξετε τουλάχιστο ένα αρχείο του τορεντ diff --git a/src/lang/qbittorrent_en.ts b/src/lang/qbittorrent_en.ts index cee2bfaf1..74794e385 100644 --- a/src/lang/qbittorrent_en.ts +++ b/src/lang/qbittorrent_en.ts @@ -1092,227 +1092,227 @@ p, li { white-space: pre-wrap; } GUI - + Open Torrent Files - - - - - + + + + + &Yes - - - - - + + + + + &No - + Are you sure you want to delete the selected item(s) in download list? - + Torrent Files - - - - + + + + Are you sure? -- qBittorrent - + Download finished - - + + qBittorrent %1 e.g: qBittorrent v0.x - - + + Connection status: - - + + qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s - + Are you sure you want to quit? - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. - + I/O Error i.e: Input/Output Error - + Connection Status: - + Online - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. - + Search - + RSS - - + + DHT support [OFF] - + PeX support [ON] - + The download list is not empty. Are you sure you want to quit qBittorrent? - - + + Downloads - + Finished - + Are you sure you want to delete the selected item(s) in finished list? - + UPnP support [ON] - + Encryption support [ON] - + Encryption support [FORCED] - + Encryption support [OFF] - + Alt+1 shortcut to switch to first tab - + Alt+2 shortcut to switch to second tab - + Alt+4 shortcut to switch to fourth tab - + Url download error - + Couldn't download file at url: %1, reason: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? - + Alt+3 shortcut to switch to third tab - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -1320,90 +1320,90 @@ Are you sure you want to quit qBittorrent? - + Ctrl+F shortcut to switch to search tab - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 - + UPnP support [OFF] - + NAT-PMP support [ON] - + NAT-PMP support [OFF] - + DHT support [ON], port: UDP/%1 - + Local Peer Discovery [ON] - + Local Peer Discovery support [OFF] - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version - - + + DL: %1 KiB/s - - + + UP: %1 KiB/s - - + + Ratio: %1 - - + + DHT: %1 nodes - - + + No direct connections. This may indicate network configuration problems. - + Uploads - + Options were saved successfully. @@ -1875,86 +1875,86 @@ p, li { white-space: pre-wrap; } SearchEngine - + Cut - + Copy - + Paste - + Clear field - + Clear completion history - + Empty search pattern - + Please type a search pattern first - - + + Results - + Searching... - + Search Engine - - + + Search has finished - + An error occured during search... - + Search aborted - + Search returned no results - + Results i.e: Search results - - + + Unknown @@ -2067,36 +2067,41 @@ p, li { white-space: pre-wrap; } + Skip file checking and start seeding immediately + + + + Add to download list in paused state - + Add - + Cancel - + Ignored - + Normal - + High - + Maximum @@ -2166,113 +2171,113 @@ p, li { white-space: pre-wrap; } bittorrent - + %1 reached the maximum ratio you set. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. - + '%1' was removed. 'xxx.avi' was removed. - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' - + This file is either corrupted or this isn't a torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. - + UPnP/NAT-PMP: Port mapping failure, message: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 - + Fast resume data was rejected for torrent %1, checking again... - + Url seed lookup failed for url: %1, message: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... @@ -2505,6 +2510,125 @@ p, li { white-space: pre-wrap; } + + downloadThread + + + + I/O Error + + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + + + downloading @@ -2694,153 +2818,153 @@ p, li { white-space: pre-wrap; } engineSelectDlg - + Uninstall warning - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. - + Uninstall success - + Select search plugins - - + + qBittorrent search plugins - - - - - - - - + + + + + + + + Search plugin install - - - + + + Yes - - - - + + + + No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine - - - - - + + + + + Search plugin update - - + + Sorry, update server is temporarily unavailable. - + All your plugins are already up to date. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine - + All selected plugins were uninstalled successfully - + %1 search engine plugin was successfully updated. %1 is the name of the search engine - + %1 search engine plugin was successfully installed. %1 is the name of the search engine - + Search engine plugin archive could not be read. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine - + New search engine plugin URL - + URL: @@ -3408,59 +3532,6 @@ However, those plugins were disabled. - - subDownloadThread - - - Host is unreachable - - - - - File was not found (404) - - - - - Connection was denied - - - - - Url is invalid - - - - - Connection failure - - - - - Connection was timed out - - - - - Incorrect network interface - - - - - Unknown error - - - - - I/O Error - - - - - Could not resolve proxy - - - torrentAdditionDialog @@ -3508,12 +3579,12 @@ However, those plugins were disabled. - + Invalid file selection - + You must select at least one file in the torrent diff --git a/src/lang/qbittorrent_es.qm b/src/lang/qbittorrent_es.qm index f85243dfcbdd745334d8cfbd22015d4edc27948a..56e3cafa48e8cfc42458efabd1befb396b36effb 100644 GIT binary patch delta 1754 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 se pudo crear el directorio: - + Open Torrent Files Abrir archivos Torrent - + Torrent Files Archivos Torrent @@ -1717,20 +1717,20 @@ p, li { white-space: pre-wrap; } ¿Seguro que quieres eliminar todos los archivos de la lista de descargas? - - - - - + + + + + &Yes &Sí - - - - - + + + + + &No &No @@ -1739,7 +1739,7 @@ p, li { white-space: pre-wrap; } Lista de descargas borrada. - + Are you sure you want to delete the selected item(s) in download list? ¿Seguro que quieres borrar el o los elemento(s) seleccionados de la lista de descargas? @@ -1775,7 +1775,7 @@ p, li { white-space: pre-wrap; } continuada. - + Finished Terminada @@ -1819,16 +1819,16 @@ p, li { white-space: pre-wrap; } qBittorrent - - + + qBittorrent qBittorrent - - - - + + + + Are you sure? -- qBittorrent ¿Estás seguro? -- qBittorrent @@ -2086,7 +2086,7 @@ Por favor cierra el otro antes. ¿Seguro que deseas borrar el o los elementos seleccionados de la lista de descargas y del disco duro? - + Download finished Descarga terminada @@ -2100,15 +2100,15 @@ Por favor cierra el otro antes. Motor de Búsqueda - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Estado de la conexión: @@ -2171,15 +2171,15 @@ Por favor cierra el otro antes. qBittorrent %1 iniciado. - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Velocidad de Descarga: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Velocidad de subida: %1 KiB/s @@ -2200,7 +2200,7 @@ Por favor cierra el otro antes. Detenida - + Are you sure you want to quit? ¿Estás seguro de que deseas salir? @@ -2263,14 +2263,14 @@ Por favor cierra el otro antes. '%1' reiniciado. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 ha terminado de descargarse. - + I/O Error i.e: Input/Output Error Error de Entrada/Salida @@ -2286,12 +2286,12 @@ Por favor cierra el otro antes. Un error ocurrió (¿disco lleno?), '%1' pausado. - + Connection Status: Estado de la conexión: - + Online En línea @@ -2327,23 +2327,23 @@ Por favor cierra el otro antes. Descargando '%1', por favor espera... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Un error ocurrió (¿disco lleno?), '%1' pausado. - + Search Buscar - + RSS RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2360,13 +2360,13 @@ Por favor cierra el otro antes. Soporte para DHT [encendido], puerto: %1 - - + + DHT support [OFF] Soporte para DHT [apagado] - + PeX support [ON] Soporte para PeX [encendido] @@ -2375,31 +2375,31 @@ Por favor cierra el otro antes. Soporte para PeX [apagado] - + The download list is not empty. Are you sure you want to quit qBittorrent? La lista de descargas no está vacía. ¿En verdad deseas salir de qBittorrent? - - + + Downloads Descargas - + Are you sure you want to delete the selected item(s) in finished list? ¿Estás seguro de que deseas borrar los íconos seleccionados en la lista de terminados? - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 - + UPnP support [ON] Soporte para UPnP [encendido] @@ -2408,17 +2408,17 @@ Are you sure you want to quit qBittorrent? Ten cuidado, compartir material protegido sin permiso es ilegal. - + Encryption support [ON] Soporte para encriptado [encendido] - + Encryption support [FORCED] Soporte para encriptado [forzado] - + Encryption support [OFF] Sopote para encriptado [apagado] @@ -2432,13 +2432,13 @@ Are you sure you want to quit qBittorrent? Radio - + Alt+1 shortcut to switch to first tab Alt+1 - + Alt+2 shortcut to switch to second tab Alt+2 @@ -2449,18 +2449,18 @@ Are you sure you want to quit qBittorrent? Alt+3, Ctrl+F - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Error de descarga de Url - + Couldn't download file at url: %1, reason: %2. No se pudo descargar el archivo en la url: %1, razón: %2. @@ -2469,12 +2469,12 @@ Are you sure you want to quit qBittorrent? Se negaron los datos para reinicio rápido del torrent: %1, verificando de nuevo... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? ¿Estás seguro de que deseas borrar los elementos seleccionados de la lista de descargas y el disco duro? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? ¿Estás seguro de que deseas borrar los elementos selccionados de la lista de terminados y el disco duro? @@ -2488,13 +2488,13 @@ Are you sure you want to quit qBittorrent? Falló la búsqueda de semilla por Url para la url: %1, mensaje: %2 - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl + F @@ -2505,78 +2505,78 @@ Are you sure you want to quit qBittorrent? '%1' fue eliminado porque su radio llegó al valor máximo que estableciste. - + UPnP support [OFF] Soporte para UPnP [Apagado] - + NAT-PMP support [ON] Soporte para NAT-PMP [Encendido] - + NAT-PMP support [OFF] Soporte para NAT-PMP[Apagado] - + DHT support [ON], port: UDP/%1 - + Local Peer Discovery [ON] Descubrimiento local de Peers [Encendido] - + Local Peer Discovery support [OFF] Soporte para descubrimiento local de Peers [Apagado] - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) - - + + DL: %1 KiB/s - - + + UP: %1 KiB/s - - + + Ratio: %1 - - + + DHT: %1 nodes - - + + No direct connections. This may indicate network configuration problems. - + Uploads - + Options were saved successfully. Opciones guardadas exitosamente. @@ -3304,12 +3304,12 @@ p, li { white-space: pre-wrap; } Motor de búsqueda - + Empty search pattern Patrón de búsqueda vacío - + Please type a search pattern first Por favor escriba un patrón de búsqueda primero @@ -3322,13 +3322,13 @@ p, li { white-space: pre-wrap; } Debes seleccionar al menos un motor de búsqueda. - - + + Results Resultados - + Searching... Buscando... @@ -3371,58 +3371,58 @@ Log: Tu plugin de búsqueda vuelve a estar actualizado. - + Cut - + Copy - + Paste - + Clear field - + Clear completion history - + Search Engine Motor de Búsqueda - - + + Search has finished Búsqueda terminada - + An error occured during search... Ocurrió un error durante la búsqueda... - + Search aborted Búsqueda abortada - + Search returned no results La búsqueda no devolvió resultados - + Results i.e: Search results Resultados @@ -3436,8 +3436,8 @@ Log: No se pudo descargar la actualización del plugin de búsqueda en la url: %1, razón: %2. - - + + Unknown Desconocido @@ -3615,6 +3615,11 @@ Log: Download in sequential order (slower but good for previewing) + + + Skip file checking and start seeding immediately + + File name Nombre del archivo @@ -3632,17 +3637,17 @@ Log: Descargar por orden (mas lento pero mejor para previsualizar) - + Add to download list in paused state Agregar a la lista de descargas en estado de pausa - + Add Agregar - + Cancel Cancelar @@ -3659,22 +3664,22 @@ Log: Seleccionar - + Ignored Ignorado - + Normal Normal - + High Alta - + Maximum Máxima @@ -3744,18 +3749,18 @@ Log: bittorrent - + %1 reached the maximum ratio you set. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' fue borrado permanentemente. - + '%1' was removed. 'xxx.avi' was removed. '%1' fue removido. @@ -3771,96 +3776,96 @@ Log: '%1' reiniciado. - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' ya está en la lista de descargas. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' reiniciado. (reinicio rápido) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' agregado a la lista de descargas. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Imposible decodificar el archivo torrent: '%1' - + This file is either corrupted or this isn't a torrent. Este archivo puede estar corrupto, o no ser un torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. No se pudo escuchar en ninguno de los puertos brindados. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Falló el mapeo del puerto, mensaje: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Mapeo del puerto exitoso, mensaje: %1 - + Fast resume data was rejected for torrent %1, checking again... Se negaron los datos para reinicio rápido del torrent: %1, verificando de nuevo... - + Url seed lookup failed for url: %1, message: %2 Falló la búsqueda de semilla por Url para la url: %1, mensaje: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Descargando '%1', por favor espera... @@ -4193,6 +4198,125 @@ Log: Por favor escribe al menos una URL. + + downloadThread + + + + I/O Error + + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Error desconocido + + downloading @@ -4418,12 +4542,12 @@ Log: Falso - + Uninstall warning Alerta de desinstalación - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4432,83 +4556,83 @@ Solamente los que has agregado por tí mismo pueden ser desinstalados. De cualquier forma, esos plugins fueron deshabilitados. - + Uninstall success Éxito de desinstalación - + Select search plugins Selecciona los plugins de búsqueda - - + + qBittorrent search plugins Plugins de búsqueda de qBittorrent - - - - - - - - + + + + + + + + Search plugin install Instalar plugin de búsqueda - - - + + + Yes - - - - + + + + No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine Una versión más reciente del plugin de motor de búsqueda %1 ya está instalada. - - - - - + + + + + Search plugin update Actualización del plugin de búsqueda - - + + Sorry, update server is temporarily unavailable. Lo siento, el servidor de actualización esta temporalmente no disponible. @@ -4518,37 +4642,37 @@ De cualquier forma, esos plugins fueron deshabilitados. Lo lamento, la actualización del plugin de búsqueda %1 ha fallado. - + All your plugins are already up to date. Todos tus plugins ya están actualizados. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine El plugin de motor de búsqueda %1 no pudo ser actualizado, manteniendo la versión antigua. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine El plugin de motor de búsqueda %1 no pudo ser instalado. - + All selected plugins were uninstalled successfully Todos los plugins seleccionados fueron instalados exitosamente - + %1 search engine plugin was successfully updated. %1 is the name of the search engine El plugin de motor de búsqueda %1 fue actualizado exitosamente. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine El plugin de motor de búsqueda %1 fue instalado exitosamente. @@ -4559,24 +4683,24 @@ De cualquier forma, esos plugins fueron deshabilitados. El plugin de búsqueda %1 fué actualizado exitosamente. - + Search engine plugin archive could not be read. El archivo de plugin de motor de búsqueda no pudo ser leído. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Lo lamento, la instalación del plugin de búsqueda %1 ha fallado. - + New search engine plugin URL URL del nuevo plugin de motor de búsqueda - + URL: URL: @@ -5515,29 +5639,20 @@ De cualquier forma, esos plugins fueron deshabilitados. subDownloadThread - Host is unreachable - El host no se puede alcanzar + El host no se puede alcanzar - File was not found (404) - El archivo no fue encontrado (404) + El archivo no fue encontrado (404) - Connection was denied - La conexión fue negada + La conexión fue negada - Url is invalid - La url es inválida - - - - I/O Error - + La url es inválida Connection forbidden (403) @@ -5552,29 +5667,24 @@ De cualquier forma, esos plugins fueron deshabilitados. El contenido ha sido cambiado de lugar (301) - Connection failure - Falla de conexión + Falla de conexión - Connection was timed out - El tiempo de espera para la conexión se ha agotado + El tiempo de espera para la conexión se ha agotado - Incorrect network interface - Interfaz de red incorrecta + Interfaz de red incorrecta - Unknown error - Error desconocido + Error desconocido - Could not resolve proxy - No se pudo resolver el proxy + No se pudo resolver el proxy @@ -5640,12 +5750,12 @@ De cualquier forma, esos plugins fueron deshabilitados. No se pudo crear la ruta de guardado - + Invalid file selection Selección de archivo inválida - + You must select at least one file in the torrent Debes seleccionar al menos un arcihvo en el torrent diff --git a/src/lang/qbittorrent_fi.qm b/src/lang/qbittorrent_fi.qm index 0252a0b99cc771ff06394dc3e2cbb516a20c3159..fdc647282fe4c788b7e1230e5d76a03449197d62 100644 GIT binary patch delta 2013 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 aika tapahtui virhe... - - - - + + + + Are you sure? -- qBittorrent Oletko varma? — qBittorrent @@ -1537,7 +1537,7 @@ p, li { white-space: pre-wrap; } Haluatko varmasti poistaa kaikki tiedostot latauslistasta? - + Are you sure you want to delete the selected item(s) in download list? Haluatko varmasti poistaa valitut tiedostot latauslistasta? @@ -1599,7 +1599,7 @@ p, li { white-space: pre-wrap; } Latausnopeus - + Download finished Lataus valmistui @@ -1625,7 +1625,7 @@ p, li { white-space: pre-wrap; } ETA - + Finished Valmis @@ -1655,11 +1655,11 @@ p, li { white-space: pre-wrap; } Nimi - - - - - + + + + + &No &Ei @@ -1672,7 +1672,7 @@ p, li { white-space: pre-wrap; } Hakupalvelua ei ole valittu - + Open Torrent Files Avaa torrent-tiedostoja @@ -1802,7 +1802,7 @@ Uutta esikatselua ei voi aloittaa. Tiedosto ei ole kelvollinen torrent-tiedosto. - + Torrent Files Torrent-tiedostot @@ -1823,11 +1823,11 @@ Uutta esikatselua ei voi aloittaa. Lähetysnopeus: - - - - - + + + + + &Yes &Kyllä @@ -1844,15 +1844,15 @@ Uutta esikatselua ei voi aloittaa. I/O-virhe - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Yhteyden tila: @@ -1905,21 +1905,21 @@ Uutta esikatselua ei voi aloittaa. Lataajia - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Latausnopeus: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Lähetysnopeus: %1 KiB/s @@ -1940,7 +1940,7 @@ Uutta esikatselua ei voi aloittaa. Seisahtunut - + Are you sure you want to quit? Haluatko varmasti poistua? @@ -1978,14 +1978,14 @@ Uutta esikatselua ei voi aloittaa. Torrentin ”%1” lataamista jatkettiin. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. Lataus ”%1” tuli valmiiksi. - + I/O Error i.e: Input/Output Error I/O-virhe @@ -1996,12 +1996,12 @@ Uutta esikatselua ei voi aloittaa. Tiedostoon %1 kirjoittaminen tai lukeminen epäonnistui. Levy saattaa olla täynnä. Lataus pysäytettiin. - + Connection Status: Yhteyden tila: - + Online Ei verkkoyhteyttä @@ -2020,18 +2020,18 @@ Uutta esikatselua ei voi aloittaa. Tulokset - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Tapahtui virhe (levy on täynnä?). Lataus ”%1” pysäytettiin. - + Search Etsi - + RSS RSS @@ -2045,13 +2045,13 @@ Uutta esikatselua ei voi aloittaa. DHT-tuki [PÄÄLLÄ] portissa %1 - - + + DHT support [OFF] DHT-tuki [EI PÄÄLLÄ] - + PeX support [ON] PeX-tuki [PÄÄLLÄ] @@ -2060,51 +2060,51 @@ Uutta esikatselua ei voi aloittaa. PeX-tuki [EI PÄÄLLÄ] - + The download list is not empty. Are you sure you want to quit qBittorrent? Latauslista ei ole tyhjä. Haluatko varmasti lopettaa? - - + + Downloads Lataukset - + Are you sure you want to delete the selected item(s) in finished list? Haluatko poistaa valitut kohteet listalta? - + UPnP support [ON] UPnP-tuki [PÄÄLLÄ] - + Encryption support [ON] Salaus [KÄYTÖSSÄ] - + Encryption support [FORCED] Salaus [PAKOTETTU] - + Encryption support [OFF] Salaus [EI KÄYTÖSSÄ] - + Alt+1 shortcut to switch to first tab Alt+1 - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2113,34 +2113,34 @@ Haluatko varmasti lopettaa? Syy: %2 - + Alt+2 shortcut to switch to second tab Alt+2 - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Latausvirhe - + Couldn't download file at url: %1, reason: %2. Tiedoston lataaminen osoitteesta %1 epäonnistui: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Haluatko varmasti poistaa valitut tiedostot listalta ja kovalevyltä? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Haluatko varmasti poistaa valitut tiedostot listalta ja kovalevyltä? @@ -2150,50 +2150,50 @@ Haluatko varmasti lopettaa? ”%1” poistettiin pysyvästi. - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent käyttää porttia: TCP/%1 - + UPnP support [OFF] UPnP-tuki [EI PÄÄLLÄ] - + NAT-PMP support [ON] NAT-PMP-tuki [PÄÄLLÄ] - + NAT-PMP support [OFF] NAT-PMP-tuki [EI PÄÄLLÄ] - + DHT support [ON], port: UDP/%1 DHT-tuki [KÄYTÖSSÄ], portti: UDP/%1 - + Local Peer Discovery [ON] Paikallinen käyttäjien löytäminen [PÄÄLLÄ] - + Local Peer Discovery support [OFF] Paikallinen käyttäjien löytäminen [EI PÄÄLLÄ] @@ -2203,48 +2203,48 @@ Haluatko varmasti lopettaa? ”%1% poistettiin, koska sen jakosuhde saavutti asettamasi enimmäisarvon. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (↓ %2 KiB/s | ↑ %3 KiB/s) - - + + DL: %1 KiB/s ↓%1 KiB/s - - + + UP: %1 KiB/s ↑%1 KiB/s - - + + Ratio: %1 Suhde: %1 - - + + DHT: %1 nodes DHT: %1 solmua - - + + No direct connections. This may indicate network configuration problems. Ei suoria yhteyksiä. Tämä voi olla merkki verkko-ongelmista. - + Uploads Lähetykset - + Options were saved successfully. Asetukset tallennettiin. @@ -2905,12 +2905,12 @@ p, li { white-space: pre-wrap; } Hakupalvelu - + Empty search pattern Tyhjä hakulauseke - + Please type a search pattern first Kirjoita ensin hakulauseke @@ -2919,13 +2919,13 @@ p, li { white-space: pre-wrap; } Valitse ensin ainakin yksi hakupalvelu. - - + + Results Tulokset - + Searching... Etsitään... @@ -2960,65 +2960,65 @@ Muutoshistoria: Hakuliitännäinen on ajan tasalla. - + Cut Leikkaa - + Copy Kopioi - + Paste Liitä - + Clear field Tyhjennä kenttä - + Clear completion history Tyhjennä hakuhistoria - + Search Engine Hakupalvelu - - + + Search has finished Haku on päättynyt - + An error occured during search... Haun aikana tapahtui virhe... - + Search aborted Haku keskeytetty - + Search returned no results Haku ei palauttanut tuloksia - + Results i.e: Search results Tulokset - - + + Unknown Tuntematon @@ -3158,17 +3158,22 @@ Muutoshistoria: Lataa järjestyksessä (hitaampi, mutta mahdollistaa aikaisemman esikatselun) - + + Skip file checking and start seeding immediately + + + + Add Lisää - + Add to download list in paused state Lisää latauslistaan pysäytettynä - + Cancel Peru @@ -3212,22 +3217,22 @@ Muutoshistoria: Poista valinta - + Ignored Ei ladata - + Normal Normaali - + High Korkea - + Maximum Korkein @@ -3301,18 +3306,18 @@ Muutoshistoria: bittorrent - + %1 reached the maximum ratio you set. %1 on saavuttanut asetetun jakosuhdeluvun. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. ”%1” poistettiin pysyvästi. - + '%1' was removed. 'xxx.avi' was removed. ”%1” poistettiin. @@ -3328,96 +3333,96 @@ Muutoshistoria: Torrentin ”%1” lataamista jatkettiin. - + '%1' is not a valid magnet URI. ”%1” ei kelpaa magnet-URI:ksi. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. ”%1” on jo latauslistassa. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) Torrentin "%1” latausta jatkettiin. (nopea palautuminen) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. ”%1” lisättiin latauslistaan. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Viallinen torrent-tiedosto: ”%1” - + This file is either corrupted or this isn't a torrent. Tiedosto ei ole kelvollinen torrent-tiedosto. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <i>IP-suodatin on estänyt osoitteen</i> <font color='red'>%1</font> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>on estetty korruptuneiden osien takia</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Rekursiivinen tiedoston %1 lataus torrentissa %2 - + Unable to decode %1 torrent file. Torrent-tiedostoa %1 ei voitu tulkita. - + Couldn't listen on any of the given ports. Minkään annetun portin käyttäminen ei onnistunut. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: portin varaaminen epäonnistui: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: portin varaaminen onnistui: %1 - + Fast resume data was rejected for torrent %1, checking again... Nopean jatkamisen tiedot eivät kelpaa torrentille %1. Tarkistetaan uudestaan... - + Url seed lookup failed for url: %1, message: %2 Jakajien haku osoitteesta %1 epäonnistui: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Ladataa torrenttia ”%1”. Odota... @@ -3722,6 +3727,125 @@ Muutoshistoria: Anna vähintään yksi URL-osoite. + + downloadThread + + + + I/O Error + I/O-virhe + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Tuntematon virhe + + downloading @@ -3947,12 +4071,12 @@ Muutoshistoria: Ei - + Uninstall warning Poistovaroitus - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -3961,141 +4085,141 @@ However, those plugins were disabled. Kyseiset liitänäiset poistettiin kuitenkin käytöstä. - + Uninstall success Poisto onnistui - + Select search plugins Valitse hakuliitännäiset - - + + qBittorrent search plugins qBittorrentin hakuliitännäiset - - - - - - - - + + + + + + + + Search plugin install Hakuliitännäisen asennus - - - + + + Yes Kyllä - - - - + + + + No Ei - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine Uudempi versio hakuliitännäisestä %1 on jo asennettu. - - - - - + + + + + Search plugin update Hakuliitännäisen päivitys - - + + Sorry, update server is temporarily unavailable. Päivityspalvelin ei ole tällä hetkellä saavutettavissa. - + All your plugins are already up to date. Kaikki liitännäiset ovat ajan tasalla. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine Hakuliitännäisen %1 päivitys epäonnistui. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine Hakuliitännäisen %1 asennus epäonnistui. - + All selected plugins were uninstalled successfully Kaikki valitut liitännäiset poistettiin - + %1 search engine plugin was successfully updated. %1 is the name of the search engine Hakuliitännäinen %1 päivitettiin. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine Hakuliitännäinen %1 asennettiin. - + Search engine plugin archive could not be read. Hakuliitännäisarkiston lukeminen epäonnistui. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Hakuliitännäisen %1 asennus epäonnistui. - + New search engine plugin URL Uusi hakukoneliitännäisen osoite - + URL: URL: @@ -4937,54 +5061,44 @@ Kyseiset liitänäiset poistettiin kuitenkin käytöstä. subDownloadThread - Host is unreachable - Kohdekone ei ole saavutettavissa + Kohdekone ei ole saavutettavissa - File was not found (404) - Tiedostoa ei löytynyt (404) + Tiedostoa ei löytynyt (404) - Connection was denied - Yhteys evättiin + Yhteys evättiin - Url is invalid - URL ei ole kelvollinen + URL ei ole kelvollinen - Connection failure - Yhteysvirhe + Yhteysvirhe - Connection was timed out - Yhteys aikakatkaistiin + Yhteys aikakatkaistiin - Incorrect network interface - Väärä verkkoliitäntä + Väärä verkkoliitäntä - Unknown error - Tuntematon virhe + Tuntematon virhe - I/O Error - I/O-virhe + I/O-virhe - Could not resolve proxy - Välityspalvelimen osoitteen selvittäminen epäonnistui + Välityspalvelimen osoitteen selvittäminen epäonnistui @@ -5010,7 +5124,7 @@ Kyseiset liitänäiset poistettiin kuitenkin käytöstä. Ei - + Invalid file selection Virheellinen tiedostovalinta @@ -5055,7 +5169,7 @@ Kyseiset liitänäiset poistettiin kuitenkin käytöstä. Torrent-tiedoston purkaminen ei onnistunut: - + You must select at least one file in the torrent Valitse ainakin yksi torrent-tiedosto diff --git a/src/lang/qbittorrent_fr.qm b/src/lang/qbittorrent_fr.qm index 4ad01e5dcfd1f3d7e45c97cd22a2d43cc5c78e14..47d48cc80ed8eb401dd9e7bb632a78fc687c89c9 100644 GIT binary patch delta 8872 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 PwfwKT?p{!d`APPF8Wsd+ delta 5881 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 W`$EF3bA!Ue{vn?B?=VSjEB*`HRRos+ diff --git a/src/lang/qbittorrent_fr.ts b/src/lang/qbittorrent_fr.ts index a973618a8..c67ac2c46 100644 --- a/src/lang/qbittorrent_fr.ts +++ b/src/lang/qbittorrent_fr.ts @@ -787,7 +787,7 @@ Copyright © 2006 par Christophe DUMEZ<br> Disable splash screen - + Désactiver l'écran de démarrage @@ -1725,7 +1725,7 @@ Copyright © 2006 par Christophe DUMEZ<br> Super seeding mode - + Mode de partage optimal @@ -1752,7 +1752,7 @@ Copyright © 2006 par Christophe DUMEZ<br> Impossible de trouver le dossier : ' - + Open Torrent Files Ouvrir fichiers torrent @@ -1781,10 +1781,10 @@ Copyright © 2006 par Christophe DUMEZ<br> Ce fichier est corrompu ou il ne s'agit pas d'un torrent. - - - - + + + + Are you sure? -- qBittorrent Etes vous sûr ? -- qBittorrent @@ -1793,25 +1793,25 @@ Copyright © 2006 par Christophe DUMEZ<br> Etes-vous sûr de vouloir enlever tous les fichiers de la liste de téléchargement ? - - - - - + + + + + &Yes &Oui - - - - - + + + + + &No &Non - + Are you sure you want to delete the selected item(s) in download list? Etes-vous sûr de vouloir enlever tous les fichiers sélectionnés de la liste de téléchargement ? @@ -1832,7 +1832,7 @@ Copyright © 2006 par Christophe DUMEZ<br> ko/s - + Finished Terminé @@ -1877,7 +1877,7 @@ Copyright © 2006 par Christophe DUMEZ<br> Impossible de créer le dossier : - + Torrent Files Fichiers Torrent @@ -2217,7 +2217,7 @@ Veuillez d'abord le quitter. Transferts - + Download finished Téléchargement terminé @@ -2239,15 +2239,15 @@ Veuillez d'abord le quitter. Etes-vous certain de vouloir supprimer les fichiers sélectionnés depuis la liste de téléchargement ainsi que le disque dur ? - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Statut de la connexion : @@ -2310,21 +2310,21 @@ Veuillez d'abord le quitter. qBittorrent %1 démarré. - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Vitesse DL : %1 Ko/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Vitesse UP : %1 Ko/s @@ -2345,7 +2345,7 @@ Veuillez d'abord le quitter. En attente - + Are you sure you want to quit? Etes vous certain de vouloir quitter ? @@ -2408,14 +2408,14 @@ Veuillez d'abord le quitter. '%1' a été relancé. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. Le téléchargement de %1 est terminé. - + I/O Error i.e: Input/Output Error Erreur E/S @@ -2431,12 +2431,12 @@ Veuillez d'abord le quitter. Une erreur s'est produite (disque plein ?), '%1' a été mis en pause. - + Connection Status: Etat de la connexion : - + Online Connecté @@ -2472,23 +2472,23 @@ Veuillez d'abord le quitter. Téléchargement de '%1', veuillez patienter... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Une erreur s'est produite (disque plein ?), '%1' a été mis en pause. - + Search Recherche - + RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2506,13 +2506,13 @@ Raison : %2 Support DHT [ON], port : %1 - - + + DHT support [OFF] Support DHT [OFF] - + PeX support [ON] Support PeX [ON] @@ -2521,15 +2521,15 @@ Raison : %2 Support PeX [OFF] - + The download list is not empty. Are you sure you want to quit qBittorrent? La liste de téléchargement n'est pas vide. Etes-vous certain de vouloir quitter qBittorrent ? - - + + Downloads Téléchargements @@ -2538,12 +2538,12 @@ Etes-vous certain de vouloir quitter qBittorrent ? Etes-vous certain de vouloir supprimer les torrents sélectionnés dans la liste de partage et sur le disque dur ? - + Are you sure you want to delete the selected item(s) in finished list? Etes-vous certain de vouloir supprimer les torrents sélectionnés de la liste de partage ? - + UPnP support [ON] Support UPnP [ON] @@ -2552,17 +2552,17 @@ Etes-vous certain de vouloir quitter qBittorrent ? Attention, partager des oeuvres sous copyright sans en avoir la permission est illégal. - + Encryption support [ON] Support cryptage [ON] - + Encryption support [FORCED] Support cryptage [Forcé] - + Encryption support [OFF] Support cryptage [OFF] @@ -2576,13 +2576,13 @@ Etes-vous certain de vouloir quitter qBittorrent ? Ratio - + Alt+1 shortcut to switch to first tab Alt+& - + Alt+2 shortcut to switch to second tab Alt+é @@ -2593,18 +2593,18 @@ Etes-vous certain de vouloir quitter qBittorrent ? Qt::CTRL+Qt::Key_F, Qt::Alt+Qt::Key_QuoteDbl - + Alt+4 shortcut to switch to fourth tab Alt+' - + Url download error Erreur téléchargement url - + Couldn't download file at url: %1, reason: %2. Impossible de télécharger le fichier à l'url : %1, raison : %2. @@ -2613,12 +2613,12 @@ Etes-vous certain de vouloir quitter qBittorrent ? Le relancement rapide a échoué pour le torrent %1, revérification... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Etes-vous certain de vouloir supprimer les fichiers sélectionnés depuis la liste de téléchargement ainsi que le disque dur ? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Etes-vous certain de vouloir supprimer les torrents sélectionnés dans la liste de partage et sur le disque dur ? @@ -2632,50 +2632,50 @@ Etes-vous certain de vouloir quitter qBittorrent ? Le contact de la source HTTP a échoué à l'url : %1, message : %2 - + Alt+3 shortcut to switch to third tab Alt+" - + Ctrl+F shortcut to switch to search tab - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent écoute sur le port : TCP/%1 - + UPnP support [OFF] Support UPNP [OFF] - + NAT-PMP support [ON] Support NAT-PMP [ON] - + NAT-PMP support [OFF] Support NAT-PMP [OFF] - + DHT support [ON], port: UDP/%1 Support DHT [ON], port : UDP/%1 - + Local Peer Discovery [ON] Découverte locale de sources [ON] - + Local Peer Discovery support [OFF] Découverte locale de sources [OFF] @@ -2685,48 +2685,48 @@ Etes-vous certain de vouloir quitter qBittorrent ? '%1' a été supprimé car son ratio a atteint la limite que vous avez fixée. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2Ko/s, UP: %3Ko/s) - - + + DL: %1 KiB/s R : %1 Ko/s - - + + UP: %1 KiB/s E : %1 Ko/s - - + + Ratio: %1 Ratio : %1 - - + + DHT: %1 nodes DHT : %1 noeuds - - + + No direct connections. This may indicate network configuration problems. Aucune connexion directe. Ceci peut être signe d'une mauvaise configuration réseau. - + Uploads Partages - + Options were saved successfully. Préférences sauvegardées avec succès. @@ -3474,12 +3474,12 @@ p, li { white-space: pre-wrap; } Moteur de recherche - + Empty search pattern Motif de recherche vide - + Please type a search pattern first Veuillez entrer un motif de recherche d'abord @@ -3492,13 +3492,13 @@ p, li { white-space: pre-wrap; } Vous devez sélectionner au moins un moteur de recherche. - - + + Results Résultats - + Searching... Recherche en cours... @@ -3541,58 +3541,58 @@ Changements: Votre greffon de recherche est déjà à jour. - + Cut Couper - + Copy Copier - + Paste Coller - + Clear field Vider le champ - + Clear completion history Vider l'historique d'autocomplétion - + Search Engine Moteur de recherche - - + + Search has finished Fin de la recherche - + An error occured during search... Une erreur s'est produite lors de la recherche... - + Search aborted La recherche a été interrompue - + Search returned no results La recherche n'a retourné aucun résultat - + Results i.e: Search results Résultats @@ -3606,8 +3606,8 @@ Changements: Impossible de télécharger la mise à jour du greffon de recherche à l'url : %1, raison : %2. - - + + Unknown Inconnu @@ -3781,6 +3781,11 @@ Changements: Download in sequential order (slower but good for previewing) Téléchargement séquentiel (plus lent mais facilite la prévisualisation) + + + Skip file checking and start seeding immediately + Ne pas vérifier les fichiers et commencer directement à partager + File name Nom @@ -3798,17 +3803,17 @@ Changements: Télécharger dans l'ordre (plus lent mais idéal pour la prévisualisation) - + Add to download list in paused state Ajouter à la liste de téléchargement en état de pause - + Add Ajouter - + Cancel Annuler @@ -3825,22 +3830,22 @@ Changements: Sélectionner - + Ignored Ignoré - + Normal Normale - + High Haute - + Maximum Maximale @@ -3914,18 +3919,18 @@ Changements: bittorrent - + %1 reached the maximum ratio you set. %1 a atteint le ratio maximum défini. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' a été supprimé de manière permanente. - + '%1' was removed. 'xxx.avi' was removed. '%1' a été supprimé. @@ -3941,96 +3946,96 @@ Changements: '%1' a été relancé. - + '%1' is not a valid magnet URI. '%1' n'est pas un lien magnet valide. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' est déjà présent dans la liste de téléchargement. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' a été relancé. (relancement rapide) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' a été ajouté à la liste de téléchargement. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Impossible de décoder le torrent : '%1' - + This file is either corrupted or this isn't a torrent. Ce fichier est corrompu ou il ne s'agit pas d'un torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>a été bloqué par votre filtrage IP</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>a été banni suite à l'envoi de données corrompues</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Téléchargement récursif du fichier %1 au sein du torrent %2 - + Unable to decode %1 torrent file. Impossible de décoder le torrent %1. - + Couldn't listen on any of the given ports. Impossible d'écouter sur les ports donnés. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP : Echec de mapping du port, message : %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP : Réussite du mapping de port, message : %1 - + Fast resume data was rejected for torrent %1, checking again... Le relancement rapide a échoué pour le torrent %1, revérification... - + Url seed lookup failed for url: %1, message: %2 Le contact de la source HTTP a échoué à l'url : %1, message : %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Téléchargement de '%1', veuillez patienter... @@ -4379,6 +4384,125 @@ Changements: Veuillez entrer au moins une URL. + + downloadThread + + + + I/O Error + Erreur E/S + + + + The remote host name was not found (invalid hostname) + Hôte distant introuvable (Nom d'hôte invalide) + + + + The operation was canceled + Opération annulée + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + Connexion fermée prématurément par le serveur distant, avant la réception complète de sa réponse + + + + The connection to the remote server timed out + Délai de connexion au serveur distant écoulée + + + + SSL/TLS handshake failed + Erreur poignée de main SSL/TLS + + + + The remote server refused the connection + Connexion refusée par le serveur distant + + + + The connection to the proxy server was refused + Connexion refusée par le serveur mandataire + + + + The proxy server closed the connection prematurely + Connexion fermée prématurément par le serveur mandataire + + + + The proxy host name was not found + Nom d'hôte du serveur mandataire introuvable + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + Délai de connexion au serveur mandataire écoulée + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + Echec d'authentification auprès du serveur mandataire + + + + The access to the remote content was denied (401) + Accès au contenu distant refusé (401) + + + + The operation requested on the remote content is not permitted + L'opération sur le contenu distant n'est pas permise + + + + The remote content was not found at the server (404) + Contenu distant introuvable (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + Echec d'authentification avec le serveur distant + + + + The Network Access API cannot honor the request because the protocol is not known + Protocole inconnu + + + + The requested operation is invalid for this protocol + Opération invalide pour ce protocole + + + + An unknown network-related error was detected + Erreur inconnue relative au réseau + + + + An unknown proxy-related error was detected + Erreur inconnue relative au serveur mandataire + + + + An unknown error related to the remote content was detected + Erreur inconnue relative au serveur distant + + + + A breakdown in protocol was detected + Erreur du protocole + + + + Unknown error + Erreur inconnue + + downloading @@ -4604,12 +4728,12 @@ Changements: Non - + Uninstall warning Désinstallation - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4618,7 +4742,7 @@ However, those plugins were disabled. Cependant, les greffons en question ont été désactivés. - + Uninstall success Désinstallation réussie @@ -4627,62 +4751,62 @@ Cependant, les greffons en question ont été désactivés. Tous les greffons sélectionnés ont été désinstallés avec succès - + Select search plugins Sélectionnez les greffons - - + + qBittorrent search plugins Greffons de recherche de qBittorrent - - - - - - - - + + + + + + + + Search plugin install Installation d'un greffon de recherche - - - + + + Yes Oui - - - - + + + + No Non - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine Une version plus récente du greffon %1 est déjà installée. @@ -4698,17 +4822,17 @@ Cependant, les greffons en question ont été désactivés. Le greffon %1 a été installé avec succès. - - - - - + + + + + Search plugin update Mise à jour du greffon de recherche - - + + Sorry, update server is temporarily unavailable. Désolé, le serveur de mise à jour est temporairement indisponible. @@ -4723,37 +4847,37 @@ Cependant, les greffons en question ont été désactivés. Désolé, la mise à jour du greffon %1 a échoué. - + All your plugins are already up to date. Tous vos greffons de recherche sont déjà à jour. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine Le greffon de recherche %1 n'a pas pu être mis à jour, l'ancienne version est conservée. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine Le greffon de recherche %1 n'a pas pu être installé. - + All selected plugins were uninstalled successfully Tous les greffons sélectionnés ont été désinstallés avec succès - + %1 search engine plugin was successfully updated. %1 is the name of the search engine Le greffon %1 a été mis à jour avec succès. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine Le greffon %1 a été installé avec succès. @@ -4764,24 +4888,24 @@ Cependant, les greffons en question ont été désactivés. Le greffon %1 a été mis à jour avec succès. - + Search engine plugin archive could not be read. L'archive contenant le greffon de recherche n'a pas pu être lue. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Désolé, l'installation du greffon de recherche %1 a échouée. - + New search engine plugin URL Adresse du nouveau greffon de recherche - + URL: Adresse : @@ -5712,29 +5836,24 @@ Cependant, les greffons en question ont été désactivés. subDownloadThread - Host is unreachable - L'hôte distant est injoignable + L'hôte distant est injoignable - File was not found (404) - Fichier non trouvé (404) + Fichier non trouvé (404) - Connection was denied - Connexion refusée + Connexion refusée - Url is invalid - Url invalide + Url invalide - I/O Error - Erreur E/S + Erreur E/S Connection forbidden (403) @@ -5749,29 +5868,24 @@ Cependant, les greffons en question ont été désactivés. Le contenu a été déplacé (301) - Connection failure - Echec de la connexion + Echec de la connexion - Connection was timed out - Délai de connexion dépassé + Délai de connexion dépassé - Incorrect network interface - Interface réseau incorrecte + Interface réseau incorrecte - Unknown error - Erreur inconnue + Erreur inconnue - Could not resolve proxy - Impossible de résoudre le nom du serveur mandataire + Impossible de résoudre le nom du serveur mandataire @@ -5837,12 +5951,12 @@ Cependant, les greffons en question ont été désactivés. Impossible de créer le répertoire de destination - + Invalid file selection Sélection de fichiers invalide - + You must select at least one file in the torrent Veuillez sélectionner au moins un fichier dans le torrent diff --git a/src/lang/qbittorrent_hu.qm b/src/lang/qbittorrent_hu.qm index 6dbd7ba97601cec264d95efcb4c92778f95e625c..bd860f11a5669f99abe25ec98eed5946aafad159 100644 GIT binary patch delta 1986 zcmXBVc~BHr9tZGmcTdyw3^O>x6^O!;$f=GIiz9#%MLWYwEY;sa^R{ZAo>A6C6ey~|6E(Lz=mrn33AzV5ePXA?7I(y?gBhh6szWtSAm_^ zf$(lx;Voe8E8heD_{xuf^#y?2WyRRlK+LP(j{vd7K;1rIV=Hhap`^=!n<$wy@;|89 z9M0aZdKSc$p1`+1DRzb^j=atyIhSS6A^u$iI;R!;vK7Y+iW9#;{Avnl*$uIR&b?$c zOzJ73?g+>^TY#n>*2KMSx~5 zqWuu@l?*(5pJnjtZ9hj;@n^uuajf5#4Y-m={!4)-u}R+E{d_i}i)MgP0Ws$e14(xj zYu;2G^GD2!9EyK6^Az5dC(z{D2DCS@{etrwqw#pqLWx@1kH?K40P}6}>o;`hf@7Ha z&KJ0~kM#)Ni)OghJ#PT342scdiskpXgL(f0jx}?i9;MQRg(;4;vLz}9xrDnAMr9tY zVTmeZ{>_cth}$tB|95WU>^k6XC^xg?HlUx)o2FR-S?Rpl;yl3k8*l9z1N1H6oz~m| ze3E$oDkBis&j)zeQ>Wze0qyR<<2U)0PbUF~Bt9mEw(<5;3_HnZX{egFA{2if=67!j zfCg)__`T=$1Fgl(Ni_2H&MZ=lkGbw5c%{;|R<8+5Vgo70BE{iTLO|ClAR$b#>XHx? zN6(up6f55mqVo!YoCqQMb35RgsSuk^$8zr$V#n+0xr=E{LL7^PLxu+6heg7XSIt^x zBAl4m4Fu!}W$~1;hgz0l62KL)IuoNugRg2s5JlS1tBP4W0+gOrrRV$x+%#9^OP7I5 zYgN0x93UrDdm}4=AFnYhX`$OG)roo)P?4xOoUHodToKJg1NjZGPOJK&VkvO3l>J$9 zkxNw-^UnYeRZPuV7k|tt zr$DYSPua^*6J=tzh8nm3Uy5VNELV1rhfD%n?gH00vomrO-x|tZ%6qvsR;YGyY?BPn zc2L^N6o;Ql){&vWy&TEzAtmVhd8|wAZTm>du%_-fcv{NvNTSO_FJ+#iWDbO|IT~km zhbSEuD3Z3@EL>x=tXKN-_ic2`ypXExX{l^ZI?prU{Ge1DNAVANN=-YdzTUagkj*F% zwL==6uA^DZlEz{h0kc9@sj=sq-)3FJEgLqe3FZfM%+qWsea~NsC71s?^0WP zjL{;;)vnhl)aC(ZrSsyud|9|Io*&9#l{y=@gX#;J^q-+Rb^V2tz__EjXG{&uJ)|Bx zu#z%AtoSIIP3pWk#+=Mu+?ZzeYUep0#Pk`e7uY z*XABhryl9k7RaZ8)0Wy3BR7FyJ8ikyN5Gv>ZSA8Cz=AaG)ee8U__k_qr_jaMmZa@< zpdMq;_8DjpuAfqT)TEvIE4@GTlsOsl)Pv!=UBlFC5AU-|gV9jO>1xZVsWfwSm;9#a z0el~JJUYqx`foMl delta 2840 zcmaKu2~ZPx7RJAH651p*2#6f35M34UK*a+Ug&Gk=Q9MD!Ya@ve35g~I6ctpw%M1VN zdf}|&Jpwv1ipQXM;)PQxj2Ea}Dhie>?(VF|xG&SQ)YiCTr8>W))BWD}-uqs|5}YjZj!+4FdvOSFmw;F;xRCM5zxmdGLI220t>GL zBX3iLeZUwSuK?q0d;v_z0{qU1oIC=Eqw^Q-fyt|Z?|%WNT>#EK$S(DkOv`Tc=YC9Q zZ6#iw`O6@W=tEbG5P79YWK}kcmiT;?1oF+D!O$Uiuv(CQ6wvp^!M)Xz67Y-h5@CgfS^_gt0t}Id=b9n6>!6a30%16(Q=H; zB8eHjFnXI7hz-K%eG1_D*DRTv&`vP97E3m4 zp;1LfimdI=y2-p1yySRfE1<@gMa%p%OUotIep`Xee@W{1j|c7-OFqrJ130zeTFiC@ z(kz^PuMEJyiEHf}2i)Dwb&M(l`Xz7!^T{Kj_qmV&FLF*37jn5X(3rqQylDiy6Sz1d zr3nlY8M%{7^^FEm+>izuD(%8RxQX4a*lPx5s^KI$m=Y>E? zDEo(eXgf&PJD&u8+%Mg1vuuu?bVvPSAY{HYXDaonHj7QM3z2~3*!c&XI3k-EM)jQ> zDT^CZ4Q$^pv&?S-N|(wq`7^+&64|2N6;$^$+4AUI^4TEv(XP9bt87Q13^?>qr;{wV>t5i=8QB@71K=JZE7nBOmc5c)oZAs7=r6mhKM&*|5m{Bp^7y`7 zNgb=>{XLKDmd7yii++p9)lMSIPO@$-ygL7|T0VQjLBNNX&ox~mH)hK-v!??0?#r_l z>VPiu!*ZI2}cAin>%KJKzHC0Tf@K%hs3qAJ$xOR`NQN(cPi&>pwxg>}s zD}CAp@y>7O0l6+BpUmW2M-K-cyx~3Ts54i0v17_WkIB5XH92nG9^M*|K-;;TPdyL} zJS<{zRj2kP^Z1QYs^rozep7Hg;AZB(u73}>{Dt4O;RR4Jl8sck^&H0+OriQK5Aj6{ zX^epj_(yIvK+HV8=KV3cyOFPrI|bM;<)5bwp+`a=wnpW}ojuI*2shWTQdKzja0zp@ z4_02k(c<)CT8-x;S+srkp2HM&o2~+fGerKBEwUk0;nb@?@YJgCOnOU2CMo<@&m`Hs zS)P4&$t+fB?>%OeV(Lm-uD(M=9zG%RYM{uUu8C||u9z)(LQ6MMVXY4XeyCH-S(;A| z-H(a|1JeP=dy0jh^rZSV3loNV_$pq>$^l)m$iu-Rs|T^YLMP{!mz1poYAM(@rEdwf zqIfK;6#8;Ejxbk;se>!uDD#8gk#P=+T)Rwpq~u$mOs+hhN_Rc#qAWbV6L_gpme(qQ z4(pY*Ya?j9F(T^^vttf{5(R5?@bOcq+O(m2D&DJn+tDaITvUDf1puDYR71OLr?sq9 z4c|+$%Np1q$4*?)0j6_IbCReo$G!m?uBvWKNd#V8V2zIc+_Mj?ZA+haGwsL5tOb^Y zh+MNxWW`GRxFpJS)R*a6&fp6E#!6d8b-r{;;N>*b2M&URlqzLo1*aXWfHlK~HWO&* zi+2beCOx9ZK|Tv}^3H54Ov>*7sLl&h2V4V|r3>2REMUqlLAQGVMfpZBY^L913WWt5 zEx`FGAxp6b*wac_9YO7WS|jYJz6peT3Ww}dfIG!P!PALAx7otQD+B2Xnkd{cy3$fr z3U|FTNDYL0&a`ybT}3KiNQ8IGD8QpcR_BzVthnH?=m{CS{?9Dg+28s5G>3vif%%MCZl?WMsKj1bv*sM;AF8*A7V-~8cZ7P_(Zc#qm@YMbZ10RlyrJkVFv19ro#d? zlA%KaQYcdb9a^M9(}FIC9UZR!lOauGQEPQZy-xdElFa{?#T~<-m5iadDR@Vk4U}b; zEmLz$_us`#(I@M)YLhkP3)&+PMJkgiss(x^(PuM0ut($gOj~a>l*>TxNx#--q$||) zO-*^tbY>3bq8k!zzcp)c3pH5{TD8%XqBiR+CPS)DJnVf;-@ z3fP-<&Xau68$IaoYmV<8t~cn^wvO3S%rIGvTD5QQ9=-j(kieg&t*2_zNvVNmQAO`f zET_z~TXR^K2$Lm6t+%MHMjC5;qGr0`vx&2u$-OfFzybke0X?SMOhi>AiYX|et%0_t zecsHb=G=c8W{fwP&15&VQJ0ctGAF6^#uS}-h9>@V4d0v%bN>SkUaU06qgOl{k=z{H aA=+%Pm8CbPY7F}S`s;W0Droq*N&X+W#dXjC diff --git a/src/lang/qbittorrent_hu.ts b/src/lang/qbittorrent_hu.ts index 32a7c8617..5ba613d9b 100644 --- a/src/lang/qbittorrent_hu.ts +++ b/src/lang/qbittorrent_hu.ts @@ -1552,7 +1552,7 @@ Copyright © 2006 by Christophe Dumez<br> GUI - + Open Torrent Files Torrent fájl megnyitása @@ -1561,25 +1561,25 @@ Copyright © 2006 by Christophe Dumez<br> Ez a fájl sérült, vagy nem is torrent. - - - - - + + + + + &Yes &Igen - - - - - + + + + + &No &Nem - + Are you sure you want to delete the selected item(s) in download list? Biztos vagy benne, hogy törlöd a felsorlolt elemeket a letöltési listáról? @@ -1592,15 +1592,15 @@ Copyright © 2006 by Christophe Dumez<br> Letöltés... - + Torrent Files Torrentek - - - - + + + + Are you sure? -- qBittorrent Egészen biztos? -- qBittorrent @@ -1627,7 +1627,7 @@ Please close the other one first. Kérlek előbb azt zárd be. - + Download finished Letöltés elkészült @@ -1636,15 +1636,15 @@ Kérlek előbb azt zárd be. Egészen biztos vagy benne, hogy törlöd a felsorlolt elemeket a letöltési listáról ÉS a merevlemezről? - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Kapcsolat állapota: @@ -1697,21 +1697,21 @@ Kérlek előbb azt zárd be. qBittorrent %1 elindítva. - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Letöltés: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Feltöltés: %1 KiB/s @@ -1727,7 +1727,7 @@ Kérlek előbb azt zárd be. Elakadt - + Are you sure you want to quit? Egészen biztos, hogy kilépsz? @@ -1785,14 +1785,14 @@ Kérlek előbb azt zárd be. '%1' elindítva. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 letöltve. - + I/O Error i.e: Input/Output Error I/O Hiba @@ -1803,12 +1803,12 @@ Kérlek előbb azt zárd be. Hiba történ a(z) %1 írása/olvasása közben. Valószínűleg tele a lemez, így a letöltés megszakítva - + Connection Status: A kapcsolat állapota: - + Online Online @@ -1827,23 +1827,23 @@ Kérlek előbb azt zárd be. Letöltés alatt: '%1', kis türelmet... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Hiba történt (megtelt a merevlemez?), '%1' megállítva. - + Search Keresés - + RSS RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -1860,13 +1860,13 @@ Kérlek előbb azt zárd be. DHT funkció [ON], port: %1 - - + + DHT support [OFF] DHT funkció [OFF] - + PeX support [ON] PeX [ON] @@ -1875,20 +1875,20 @@ Kérlek előbb azt zárd be. PeX [OFF] - + The download list is not empty. Are you sure you want to quit qBittorrent? Letöltés folyamatban. Mégis leállítod a qBittorrentet? - - + + Downloads Letöltések - + Finished Feltöltések @@ -1897,12 +1897,12 @@ Mégis leállítod a qBittorrentet? Egészen biztos vagy benne, hogy törlöd a felsorolt elemeket a feltöltési listáról ÉS a merevlemezről? - + Are you sure you want to delete the selected item(s) in finished list? Biztos vagy benne, hogy törlöd a felsorolt elemeket a feltöltési listáról? - + UPnP support [ON] UPnP támogatás [ON] @@ -1911,17 +1911,17 @@ Mégis leállítod a qBittorrentet? Csak óvatosan a megosztással. Nehogy megsértsd a szerzői jogokat!. - + Encryption support [ON] Titkosítás [ON] - + Encryption support [FORCED] Titkosítás [KÉNYSZERÍTVE] - + Encryption support [OFF] Titkosítás [OFF] @@ -1935,13 +1935,13 @@ Mégis leállítod a qBittorrentet? Arány - + Alt+1 shortcut to switch to first tab Alt+1 - + Alt+2 shortcut to switch to second tab Alt+2 @@ -1952,18 +1952,18 @@ Mégis leállítod a qBittorrentet? Alt+3, Ctrl+F - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Url letöltés hiba - + Couldn't download file at url: %1, reason: %2. Nem sikerült letölteni url címről: %1, mert: %2. @@ -1972,12 +1972,12 @@ Mégis leállítod a qBittorrentet? Hibás ellenőrző adat ennél a torrentnél: %1, újraellenőrzés... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Egészen biztos vagy benne, hogy törlöd a felsorlolt elemeket a letöltési listáról ÉS a merevlemezről? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Egészen biztos vagy benne, hogy törlöd a felsorlolt elemeket a feltöltési listáról ÉS a merevlemezről? @@ -1991,50 +1991,50 @@ Mégis leállítod a qBittorrentet? Url forrás meghatározása sikertelen: %1, hibaüzenet: %2 - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent ezen a porton figyel: TCP/%1 - + UPnP support [OFF] UPnP támogatás [OFF] - + NAT-PMP support [ON] NAT-PMP támogatás [ON] - + NAT-PMP support [OFF] NAT-PMP támogatás [OFF] - + DHT support [ON], port: UDP/%1 DHT támogatás [ON], port: UDP/%1 - + Local Peer Discovery [ON] Local Peer Discovery [ON] - + Local Peer Discovery support [OFF] Local Peer Discovery támogatás [OFF] @@ -2044,48 +2044,48 @@ Mégis leállítod a qBittorrentet? '%1' eltávolítva, mivel elérte a kítűzött megosztási arányt. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (Le: %2KiB/s, Fel: %3KiB/s) - - + + DL: %1 KiB/s Le: %1 KiB/s - - + + UP: %1 KiB/s Fel: %1 KiB/s - - + + Ratio: %1 Arány: %1 - - + + DHT: %1 nodes DHT: %1 csomó - - + + No direct connections. This may indicate network configuration problems. Nincsenek kapcsolatok. Ez lehet hálózat beállítási hiba miatt is. - + Uploads Feltöltések - + Options were saved successfully. Beállítások sikeresen elmentve. @@ -2706,12 +2706,12 @@ p, li { white-space: pre-wrap; } Kereső oldal - + Empty search pattern Hiányzó kulcsszó - + Please type a search pattern first Kérlek adj meg kulcsszót a kereséshez @@ -2724,13 +2724,13 @@ p, li { white-space: pre-wrap; } Válassz legalább egy keresőt. - - + + Results Eredmény - + Searching... Keresés... @@ -2773,58 +2773,58 @@ Changelog: A legújabb keresőt használod. - + Cut Kivágás - + Copy Másolás - + Paste Beillesztés - + Clear field Mező törlése - + Clear completion history Előzmények törlése - + Search Engine Keresőmotor - - + + Search has finished A keresés befejeződött - + An error occured during search... Hiba a keresés közben... - + Search aborted Keresés félbeszakítva - + Search returned no results Eredménytelen keresés - + Results i.e: Search results Találat @@ -2838,8 +2838,8 @@ Changelog: Nem sikerült kereső modult letölteni innen: %1, mert: %2. - - + + Unknown Ismeretlen @@ -2950,42 +2950,47 @@ Changelog: Download in sequential order (slower but good for previewing) Letöltés sorrendben (lassabb, de előnézethez ideális) + + + Skip file checking and start seeding immediately + + Download in correct order (slower but good for previewing) Letöltés sorrendben. Előnézethez kiváló, de lassabb a letöltés - + Add to download list in paused state Letöltés nélkül add a listához - + Add Mehet - + Cancel Mégse - + Ignored Mellőzve - + Normal Átlagos - + High Magas - + Maximum Maximális @@ -3059,18 +3064,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. %1 elérte a megengedett arányt. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' véglegesen törölve. - + '%1' was removed. 'xxx.avi' was removed. '%1' eltávolítva. @@ -3086,96 +3091,96 @@ Changelog: '%1' elindítva. - + '%1' is not a valid magnet URI. '%1' nem hiteles magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' már letöltés alatt. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' visszaállítva. (folytatás) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' felvéve a letöltési listára. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Megfejthetetlen torrent: '%1' - + This file is either corrupted or this isn't a torrent. Ez a fájl sérült, vagy nem is torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>letiltva IP szűrés miatt</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>kitiltva hibás adatküldés miatt</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Fájl ismételt letöltése %1 beágyazva a torrent %2 - + Unable to decode %1 torrent file. Megfejthetetlen torrent: %1. - + Couldn't listen on any of the given ports. A megadott porok zártak. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Port felderítése sikertelen, hibaüzenet: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Port felderítése sikeres, hibaüzenet: %1 - + Fast resume data was rejected for torrent %1, checking again... Hibás ellenőrző adat ennél a torrentnél: %1, újraellenőrzés... - + Url seed lookup failed for url: %1, message: %2 Url forrás meghatározása sikertelen: %1, hibaüzenet: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Letöltés alatt: '%1', kis türelmet... @@ -3460,6 +3465,125 @@ Changelog: Kérlek adj meg legalább egy url címet. + + downloadThread + + + + I/O Error + I/O Hiba + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Ismeretlen hiba + + downloading @@ -3685,12 +3809,12 @@ Changelog: Tiltva - + Uninstall warning Figyelemeztetés - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -3699,83 +3823,83 @@ However, those plugins were disabled. Viszont azok a modulok kikapcsolhatóak. - + Uninstall success Sikeresen eltávolítva - + Select search plugins Modul kiválasztása - - + + qBittorrent search plugins qBittorrent kereső modulok - - - - - - - - + + + + + + + + Search plugin install Kerső telepítése - - - + + + Yes Igen - - - - + + + + No Nem - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine A %1 kereső modul egy újabb verziója már telepítve van. - - - - - + + + + + Search plugin update Kereső modul frissítése - - + + Sorry, update server is temporarily unavailable. A kiszolgálő jelenleg nem elérhető. Bocs. @@ -3785,37 +3909,37 @@ Viszont azok a modulok kikapcsolhatóak. Bocs, nem sikerült frissíteni: %1. - + All your plugins are already up to date. A legújabb kereső modulokat használod. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine %1 keresőt nem lehet frissíteni, előző verzió megtartva. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine %1 kereső modul telepítése sikertelen. - + All selected plugins were uninstalled successfully Kereső modul(ok) sikeresen eltávolítva - + %1 search engine plugin was successfully updated. %1 is the name of the search engine %1 kereső modul sikeresen frissítve. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine %1 kereső modul sikeresen telepítve. @@ -3826,24 +3950,24 @@ Viszont azok a modulok kikapcsolhatóak. %1 kereső modul sikeresen frissítve. - + Search engine plugin archive could not be read. Kereső modul beolvasása sikertelen. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Bocs, %1 kereső modul telepítése sikertelen. - + New search engine plugin URL Új kereső modul címe - + URL: URL: @@ -4557,29 +4681,24 @@ Viszont azok a modulok kikapcsolhatóak. subDownloadThread - Host is unreachable - Kiszolgáló nem elérhető + Kiszolgáló nem elérhető - File was not found (404) - Fájl nem található (404) + Fájl nem található (404) - Connection was denied - Hozzáférés megtagadva + Hozzáférés megtagadva - Url is invalid - Érvénytelen cím + Érvénytelen cím - I/O Error - I/O Hiba + I/O Hiba Connection forbidden (403) @@ -4594,29 +4713,24 @@ Viszont azok a modulok kikapcsolhatóak. Tartalom áthelyezve (301) - Connection failure - Kapcsolódás sikertelen + Kapcsolódás sikertelen - Connection was timed out - Idő túllépés + Idő túllépés - Incorrect network interface - Hibás hálózati csatlakozó + Hibás hálózati csatlakozó - Unknown error - Ismeretlen hiba + Ismeretlen hiba - Could not resolve proxy - Nem sikerült csatlakozni a proxy-hoz + Nem sikerült csatlakozni a proxy-hoz @@ -4674,12 +4788,12 @@ Viszont azok a modulok kikapcsolhatóak. Nem sikerült létrehozni a letöltési könyvtárat. (Írásvédett?) - + Invalid file selection Választás hiánya - + You must select at least one file in the torrent Legalább egy fájlt ki kell választanod diff --git a/src/lang/qbittorrent_it.qm b/src/lang/qbittorrent_it.qm index fa0d8c518330576864e63b1c997058712cc6ef5f..0bc9a912bd71aadb4839b73c4df7a60cad37dda6 100644 GIT binary patch delta 1943 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 I!%3p}4>i6}P5=M^ diff --git a/src/lang/qbittorrent_it.ts b/src/lang/qbittorrent_it.ts index 859d68e6e..0080ee550 100644 --- a/src/lang/qbittorrent_it.ts +++ b/src/lang/qbittorrent_it.ts @@ -1593,7 +1593,7 @@ Copyright © 2006 by Christophe Dumez<br> GUI - + Open Torrent Files Apri file torrent @@ -1606,30 +1606,30 @@ Copyright © 2006 by Christophe Dumez<br> Sei sicuro di voler cancellare tutti i file nella lista di download? - - - - - + + + + + &Yes &Sì - - - - - + + + + + &No &No - + Are you sure you want to delete the selected item(s) in download list? Sei sicuro di voler cancellare gli elementi selezionati dalla lista dei download? - + Finished In Upload @@ -1670,7 +1670,7 @@ Copyright © 2006 by Christophe Dumez<br> Impossibile creare la directory: - + Torrent Files File torrent @@ -1715,10 +1715,10 @@ Copyright © 2006 by Christophe Dumez<br> qBittorrent - - - - + + + + Are you sure? -- qBittorrent Sei sicuro? -- qBittorrent @@ -1912,7 +1912,7 @@ Example: Downloading www.example.com/test.torrent Downloading - + Download finished Download completato @@ -1938,15 +1938,15 @@ Example: Downloading www.example.com/test.torrent Errore I/O - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Stato della connessione: @@ -2009,21 +2009,21 @@ Example: Downloading www.example.com/test.torrent qBittorrent %1 avviato. - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Velocità DL: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Velocità UP: %1 KiB/s @@ -2044,7 +2044,7 @@ Example: Downloading www.example.com/test.torrent In Stallo - + Are you sure you want to quit? Sei sicuro di voler uscire? @@ -2107,14 +2107,14 @@ Example: Downloading www.example.com/test.torrent '%1' ripreso. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 è stato scaricato. - + I/O Error i.e: Input/Output Error Errore I/O @@ -2125,12 +2125,12 @@ Example: Downloading www.example.com/test.torrent Errore di scrittura o di lettura con %1. Probabilmente il disco è pieno, il download è stato fermato - + Connection Status: Stato della connessione: - + Online Online @@ -2166,23 +2166,23 @@ Example: Downloading www.example.com/test.torrent Download di '%1' in corso... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Si è verificato un errore (disco pieno?), '%1' fermato. - + Search Ricerca - + RSS RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2200,13 +2200,13 @@ Motivo: %2 Supporto DHT [ON], porta: %1 - - + + DHT support [OFF] Supporto DHT [OFF] - + PeX support [ON] Supporto PeX [ON] @@ -2215,25 +2215,25 @@ Motivo: %2 Supporto PeX [OFF] - + The download list is not empty. Are you sure you want to quit qBittorrent? La lista dei download non è vuota. Sei sicuro di voler uscire da qBittorrent? - - + + Downloads In Download - + Are you sure you want to delete the selected item(s) in finished list? Sei sicuro di voler cancellare gli elementi selezionati dalla lista dei download completati? - + UPnP support [ON] Supporto UPnP [ON] @@ -2242,17 +2242,17 @@ Sei sicuro di voler uscire da qBittorrent? Attenzione, condividere materiale protetto da copyright senza il permesso è illegale. - + Encryption support [ON] Supporto cifratura [ON] - + Encryption support [FORCED] Supporto cifratura [FORZATO] - + Encryption support [OFF] Supporto cifratura [OFF] @@ -2266,13 +2266,13 @@ Sei sicuro di voler uscire da qBittorrent? Rapporto - + Alt+1 shortcut to switch to first tab Alt+1 - + Alt+2 shortcut to switch to second tab Alt+2 @@ -2283,18 +2283,18 @@ Sei sicuro di voler uscire da qBittorrent? Alt+3, Ctrl+F - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Errore download da indirizzo web - + Couldn't download file at url: %1, reason: %2. Impossibile scaricare il file all'indirizzo: %1, motivo: %2. @@ -2303,12 +2303,12 @@ Sei sicuro di voler uscire da qBittorrent? Il recupero veloce del torrent %1 è stato rifiutato, altro tentativo in corso... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? Sei sicuro di voler rimuovere gli elementi selezionati dalla lista dei download e dal disco? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? Sei sicuro di voler rimuovere gli oggetti selezionati dalla lista dei download completati e dal disco? @@ -2322,50 +2322,50 @@ Sei sicuro di voler uscire da qBittorrent? Fallito seed per l'url: %1, messaggio: %2 - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 qBittorrent è in ascolto sulla porta: TCP/%1 - + UPnP support [OFF] Supporto UPnP [OFF] - + NAT-PMP support [ON] Supporto NAT-PMP [ON] - + NAT-PMP support [OFF] Supporto NAT-PMP [OFF] - + DHT support [ON], port: UDP/%1 Supporto DHT [ON], porta: UDP/%1 - + Local Peer Discovery [ON] Supporto scoperta peer locali [ON] - + Local Peer Discovery support [OFF] Supporto scoperta peer locali [OFF] @@ -2375,48 +2375,48 @@ Sei sicuro di voler uscire da qBittorrent? '%1' è stato rimosso perché il suo rapporto di condivisione ha raggiunto il massimo stabilito. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) - - + + DL: %1 KiB/s DL: %1 KiB/s - - + + UP: %1 KiB/s UP: %1 KiB/s - - + + Ratio: %1 Rapporto: %1 - - + + DHT: %1 nodes DHT: %1 nodi - - + + No direct connections. This may indicate network configuration problems. Nessuna connessione diretta. Questo potrebbe indicare problemi di configurazione della rete. - + Uploads Upload - + Options were saved successfully. Le opzioni sono state salvate. @@ -3093,12 +3093,12 @@ p, li { white-space: pre-wrap; } Motore di ricerca - + Empty search pattern Campo di ricerca vuoto - + Please type a search pattern first Per favore inserire prima un campo di ricerca @@ -3111,13 +3111,13 @@ p, li { white-space: pre-wrap; } Selezionare almeno un motore di ricerca. - - + + Results Risultati - + Searching... Ricerca in corso... @@ -3160,58 +3160,58 @@ Changelog: Il plugin di ricerca è già aggiornato. - + Cut Taglia - + Copy Copia - + Paste Incolla - + Clear field Azzera campo - + Clear completion history Azzera cronologia completamento - + Search Engine Motore di Ricerca - - + + Search has finished La ricerca è terminata - + An error occured during search... Si è verificato un errore durante la ricerca... - + Search aborted Ricerca annullata - + Search returned no results La ricerca non ha prodotto risultati - + Results i.e: Search results Risultati @@ -3225,8 +3225,8 @@ Changelog: Impossibile aggiornare il plugin all'url: %1, motivo: %2. - - + + Unknown Sconosciuto @@ -3388,6 +3388,11 @@ Changelog: Download in sequential order (slower but good for previewing) Scarica nell'ordine giusto (più lento ma migliore per le anteprime) + + + Skip file checking and start seeding immediately + + File name Nome del file @@ -3405,17 +3410,17 @@ Changelog: Scarica nell'ordine giusto (più lento ma migliore per le anteprime) - + Add to download list in paused state Aggiungi fra i download mettendolo in pausa - + Add Aggiungi - + Cancel Cancella @@ -3428,22 +3433,22 @@ Changelog: Seleziona - + Ignored Ignora - + Normal Normale - + High Alta - + Maximum Massima @@ -3517,18 +3522,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. %1 ha raggiunto il rapporto massimo impostato. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' è stato cancellato permanentemente. - + '%1' was removed. 'xxx.avi' was removed. '%1' è stato rimosso. @@ -3544,96 +3549,96 @@ Changelog: '%1' ripreso. - + '%1' is not a valid magnet URI. '%1' non è un URI magnetico valido. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' è già nella lista dei download. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' ripreso. (recupero veloce) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' è stato aggiunto alla lista dei download. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Impossibile decifrare il file torrent: '%1' - + This file is either corrupted or this isn't a torrent. Questo file è corrotto o non è un torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>è stato bloccato a causa dei tuoi filtri IP</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>è stato bannato a causa di parti corrotte</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 Download ricorsivo del file %1 incluso nel torrent %2 - + Unable to decode %1 torrent file. Impossibile decifrare il file torrent %1. - + Couldn't listen on any of the given ports. Impossibile mettersi in ascolto sulle porte scelte. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: mappatura porte fallita, messaggio: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: mappatura porte riuscita, messaggio: %1 - + Fast resume data was rejected for torrent %1, checking again... Il recupero veloce del torrent %1 è stato rifiutato, altro tentativo in corso... - + Url seed lookup failed for url: %1, message: %2 Fallito seed web per l'indirizzo: %1, messaggio: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Download di '%1' in corso... @@ -3954,6 +3959,125 @@ Changelog: Per favore inserire almeno un indirizzo web. + + downloadThread + + + + I/O Error + Errore I/O + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + Errore sconosciuto + + downloading @@ -4179,12 +4303,12 @@ Changelog: Falso - + Uninstall warning Avviso di disinstallazione - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4193,7 +4317,7 @@ However, those plugins were disabled. Comunque, quei plugin sono stati disabilitati. - + Uninstall success Disinstallazione riuscita @@ -4202,62 +4326,62 @@ Comunque, quei plugin sono stati disabilitati. Tutti i plugin selezionati sono stati disinstallati con successo - + Select search plugins Seleziona plugin di ricerca - - + + qBittorrent search plugins Plugin di ricerca di qBittorrent - - - - - - - - + + + + + + + + Search plugin install Installare plugin di ricerca - - - + + + Yes - - - - + + + + No No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine Una versione più recente del plugin di ricerca %1 è già installata. @@ -4273,17 +4397,17 @@ Comunque, quei plugin sono stati disabilitati. Il plugin di ricerca %1 è stato installato con successo. - - - - - + + + + + Search plugin update Aggiornato il plugin di ricerca - - + + Sorry, update server is temporarily unavailable. Spiacente, il server è momentaneamente non disponibile. @@ -4298,37 +4422,37 @@ Comunque, quei plugin sono stati disabilitati. Spiacente, l'aggiornamento del plugin di ricerca %1 è fallito. - + All your plugins are already up to date. Tutti i plugin sono già aggiornati. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine Non è stato possibile aggiornare %1, mantengo la versione attuale. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine Non è stato possibile installare il plugin di ricerca %1. - + All selected plugins were uninstalled successfully Tutti i plugin selezionati sono stati disinstallati con successo - + %1 search engine plugin was successfully updated. %1 is the name of the search engine Il plugin di ricerca %1 è stato aggiornato con successo. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine Il plugin di ricerca %1 è stato installato con successo. @@ -4339,24 +4463,24 @@ Comunque, quei plugin sono stati disabilitati. Il plugin di ricerca %1 è stato aggiornato con successo. - + Search engine plugin archive could not be read. Non è stato possibile leggere l'archivio dei plugin dei motori di ricerca. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine Spiacente, l'installazione del plugin di ricerca %1 è fallita. - + New search engine plugin URL Indirizzo del nuovo plugin di ricerca - + URL: Indirizzo web: @@ -5226,29 +5350,24 @@ Comunque, quei plugin sono stati disabilitati. subDownloadThread - Host is unreachable - Host non raggiungibile + Host non raggiungibile - File was not found (404) - File non trovato (404) + File non trovato (404) - Connection was denied - Connessione negata + Connessione negata - Url is invalid - Indirizzo non valido + Indirizzo non valido - I/O Error - Errore I/O + Errore I/O Connection forbidden (403) @@ -5263,29 +5382,24 @@ Comunque, quei plugin sono stati disabilitati. Il contenuto è stato spostato (301) - Connection failure - Connessione fallita + Connessione fallita - Connection was timed out - Connessione scaduta + Connessione scaduta - Incorrect network interface - Interfaccia di rete non corretta + Interfaccia di rete non corretta - Unknown error - Errore sconosciuto + Errore sconosciuto - Could not resolve proxy - Impossibile risolvere proxy + Impossibile risolvere proxy @@ -5351,12 +5465,12 @@ Comunque, quei plugin sono stati disabilitati. Impossibile creare la directory di salvataggio - + Invalid file selection Selezione file non valida - + You must select at least one file in the torrent Devi selezionare almeno un file nel torrent diff --git a/src/lang/qbittorrent_ja.qm b/src/lang/qbittorrent_ja.qm index d56863be9c5dd5f94d1cda45b5ca5588a256490a..57a44d7047b9cbeb5b2609794c0cacfc767a4671 100644 GIT binary patch delta 1757 zcmXAqX;2hb6opUsbWhVg^dM+J2{LMA0JRWNf-4j;DBxBqFfb7m1pxuUg+*ir0Z}w) z#D`17B}R=Hmn;;RxW=fcF{q_+iLtE2T@#IE)F^7mwcf9STdu2J=GFZGFsTNxpN4q&C}5e*Ip8!5Hz{&P$J*moF+ZvHp|5xRWXRE>bhbBV zb_%DXkogJz{hA?fmVq3Jv+yfU=LOD+5s<%V1Jd1~mQDkvdNYSG$SvwdB|VG4h=q@U z+#{@22op{+Ssa)23leHp0gjunWt9LO8(>@g66iDziA&pocMo&=PUcM5#OaKNy`c^W z8N+G&ozwXe_SdCUeJyJe`*vx^!GPmH=4<@*B~>$M5!w!ux_Nim8_`l$EsVa{1L&I1 z>0in@@s+UslOiDen$SF|6XkH>wB>U;YlXdTV@cj>;mn0dpijMUF}ngVMG2Rp4pDTA zaDRIoP#h?__ICoFt)gdu9VjdnBSL(EDG$VmmR>ZriW1R2lM?uJ;0~`?7{Cf;|?@!JF&&7SwW*Y58_RtXSkriQ>G>788<87F9Z!eJb zlns-Dyk|!mR(O05#FmM;4T zo|AU<*+!%7EFIFQO3ff0o9724S*4b&AA$JAoQ`#@Ne&Y>vWK#Df-OK!U^Kt}M>xah za?brwP7jWvJ!qF_?xXan^W<48cK{wIRtg)!fqA=>nzL(w8No`OfvV1&rmPCT52#tn=9LeC5*Mbs zc=da%G$vDz^M@)27tpAD?8?noO?3Kza?8FC5Ed$L8d?GKH!fW}F9)W*V972Kf`e^v z@fTLIRu})kC#rGPDIg(|v*2^ia;NH@{glSINe!%-LG^?&Kh1KbSnuVH2daiZ5x1744o$dB~L^2g{gruol v-?-A;K9L#wSVeOh8?_?b&7783G&3hJH7zc4c6w@BW6jjy-i>!wyfFL^R~rZn delta 2565 zcmaKtdr(tn8pfY2U8;qxRK*LpD&eM}fdq(zL~|iP3E}E( z(W)O%yRL4%P|;d#mr+Mut5y-Wu6D-`b+@hE-D-E#uI^Y?J8Qk{%Y0ME+G+pD{4(bx z&-=d5^M2>t+97_iTUE;gd69nfIWTXK4}k^5GW~|N;iE`(Q5#S&590AtK(v!H`5Y8i29@8~&}$GK zf8TI3Dl+>ks4^x3`R{Qqy~_W*MT)O96* z=}qPnQo>UrS^)n6O#8B#?)74N%PpXC2J00j30drcFxOOooVE_YXGN~H7I>x`xt;$5 zhRsFZj8>p=5%ShN0-ih08MT-*Cx+8^0R`RdKvE`WZYgKI9|ia8X!3B@C5|87iequT zKzS4Xy@$F>S%G`UUj!VL?4}s)4;JS1j|N6AXCmz2*f{KNk+p9!50+IdkrE z)`ts+hGdc5tAq<5zYILTS?I550<_bFPo}*O*t>-5yRrfAelci5JrH(Y42vrOszfm@ zDGFG!OiVj77MR~URxGenff0Jns3T%koRN$(h+Zv4;+V|YoGvz*(g6J_ab@>fif^j; z`nRWnUwqA(d{;b@5ezK+8|zo3hL-m#7P(0O*+|8rYli@9EsIemL@w`BtPed5EK@2v z2RA08MX{xbRO)ZBN@arRKFYQz4M~Lul=;&VfTC1o!MrbN_hOW;x&az$vC=QmaEsR~ z8+XvoEeTYvH0}kK&tZ3z+LD!1=V1qw&AOjT@r zj&kqwT|nJd<@*}yTcc2(u89Hi_A1X$PSVjijNN2sACk5tPy?gm2pR5gwdX`{R<|Ar!R{~J|vgN0mqL)98Vn^yFY zWd_9h=cqQX+62^ga{6wo_9|A>F*2+EaDr44KHNWQO;pYNEy)@v^p#hOu zv{^~JICEd)^cHj0?+h4sl)4C+6)@>vTPf;00qG|{1#E2r=@-aWHV}{~h%81*6P7TG z6dkfu3Ny|EsvD)qugIc`gRDa`_&pyyK_fRcLlQec{(V7|aubwuFNCff5R z4eJVwO{`W2bo`0J>*MsqakeC=LnfpE4dv>{ivI%HG3xlXr8MC&b|=tKT-K?c*&7ZF zIjhe9XFD)ASY2q-(8KVqx@h&s^Z;1NX}rT(k;myVa<-JJJ=ZCIQ?|OgbssRPTkV@t z3n;DXhDS7cgN}LB(ZgR=-%|Di@@7usN>1NK_Kw;xw)vtaEa@tp)J>YWKC;6cqRIPA zMe96Xv*`C<05kV#${r4NZUUK=;+1|5NR?Tm4oDac{kSzXk& zYk-~CM2V)G?51XJNQ?GN-ZwzYo7z7YmXqPMy4nP>v5)z*hS7PKgXZT@G%tp6rnPd` zoCqqYpc1*4S+6!%P_vOi(?h)jx)He)^e<28#w?`CtXG&PC|W3D9YN9aQgpV?F@QnT z`PyByWLtI3>YenO(d*hW$h?NX=-v);1I_{6>9bSlo#oeEimnIJXX^eMN@vJ+jI(Kz z?%s+E|OS*i&%}=!C29gj0=o6amu-h#q zZmYwtFEv?h9;Zd3%ONgL@hc9m-R3Zvv&)?plUY#E0Uh(A2t;jx+Zc86Qj#LlI7$j z@jp{2O#VzhOddGaXBQ9szH6C17JVke;d1M(F1^Q2nUs{9ifuoNiya-8=>LiQ#%Ad% zN~({@OXc(ODXQ}y`M$g#dKztjGPqA;?xOF9sdE0~n$OL&mpGhG+7Z3o;`Tb66?&`P zZE=>GN`6%P`&D79ipS^uL=T}b!U-Eybqsd%gId8xr)_XNtG&u(vp%^xPbA!Pd+h_o F{{a$2`B4A> diff --git a/src/lang/qbittorrent_ja.ts b/src/lang/qbittorrent_ja.ts index c49dd9623..bc41e29de 100644 --- a/src/lang/qbittorrent_ja.ts +++ b/src/lang/qbittorrent_ja.ts @@ -1542,7 +1542,7 @@ Copyright © 2006 by Christophe Dumez<br> GUI - + Open Torrent Files Torrent ファイルを開く @@ -1551,25 +1551,25 @@ Copyright © 2006 by Christophe Dumez<br> このファイルは壊れているかこれは torrent ではないかのどちらかです。 - - - - - + + + + + &Yes はい(&Y) - - - - - + + + + + &No いいえ(&N) - + Are you sure you want to delete the selected item(s) in download list? ダウンロードの一覧にある選択されたアイテムを削除してもよろしいですか? @@ -1582,15 +1582,15 @@ Copyright © 2006 by Christophe Dumez<br> ダウンロードしています.... - + Torrent Files Torrent ファイル - - - - + + + + Are you sure? -- qBittorrent よろしいですか? -- qBittorrent @@ -1617,7 +1617,7 @@ Please close the other one first. まず他の 1 つを閉じてください。 - + Download finished ダウンロードが完了しました @@ -1626,15 +1626,15 @@ Please close the other one first. ダウンロードの一覧およびハード ドライブにある選択されたアイテムを削除してもよろしいですか? - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: 接続状態: @@ -1687,21 +1687,21 @@ Please close the other one first. qBittorrent %1 が開始されました。 - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s DL 速度: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s UP 速度: %1 KiB/s @@ -1717,7 +1717,7 @@ Please close the other one first. 失速しました - + Are you sure you want to quit? 終了してもよろしいですか? @@ -1775,14 +1775,14 @@ Please close the other one first. '%1' が再開されました。 - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 はダウンロードが完了しました。 - + I/O Error i.e: Input/Output Error I/O エラー @@ -1793,12 +1793,12 @@ Please close the other one first. %1 の読み込みまたは書き込みを試行にエラーが発生しました。ディスクはおそらくいっぱいです、ダウンロードは一時停止されました - + Connection Status: 接続状態: - + Online オンライン @@ -1817,18 +1817,18 @@ Please close the other one first. '%1' をダウンロードしています、お待ちください... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. エラーが発生しました (ディスクいっぱい?)、'%1' が停止されました。 - + Search 検索 - + RSS RSS @@ -1850,8 +1850,8 @@ Please close the other one first. DHT サポート [オン]、ポート: %1 - - + + DHT support [OFF] DHT サポート [オフ] @@ -1860,12 +1860,12 @@ Please close the other one first. UPnP サポート [オン]、ポート: %1 - + UPnP support [OFF] UPnP サポート [オフ] - + PeX support [ON] PeX サポート [オン] @@ -1874,20 +1874,20 @@ Please close the other one first. PeX サポート [オフ] - + The download list is not empty. Are you sure you want to quit qBittorrent? ダウンロードの一覧は空ではありません。 qBittorrent を終了してもよろしいですか? - - + + Downloads ダウンロード - + Finished 完了しました @@ -1896,12 +1896,12 @@ qBittorrent を終了してもよろしいですか? 完了済みの一覧およびハード ドライブにある選択されたアイテムを削除してもよろしいですか? - + Are you sure you want to delete the selected item(s) in finished list? ダウンロードの一覧にある選択されたアイテムを削除してもよろしいですか? - + UPnP support [ON] UPnP サポート [オン] @@ -1910,17 +1910,17 @@ qBittorrent を終了してもよろしいですか? ご用心ください、許可なしの著作権のある材料の共有は法律に違反しています。 - + Encryption support [ON] 暗号化サポート [オン] - + Encryption support [FORCED] 暗号化サポート [強制済み] - + Encryption support [OFF] 暗号化サポート [オフ] @@ -1934,13 +1934,13 @@ qBittorrent を終了してもよろしいですか? - + Alt+1 shortcut to switch to first tab Alt+1 - + Alt+2 shortcut to switch to second tab Alt+2 @@ -1951,18 +1951,18 @@ qBittorrent を終了してもよろしいですか? Alt+3、Ctrl+F - + Alt+4 shortcut to switch to fourth tab Alt+4 - + Url download error Url のダウンロード エラー - + Couldn't download file at url: %1, reason: %2. 次の url にあるファイルをダウンロードできませんでした: %1、理由: %2。 @@ -1971,12 +1971,12 @@ qBittorrent を終了してもよろしいですか? 高速再開データは torrent %1 を拒絶しました、再びチェックしています... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? ダウンロードの一覧とハード ドライブから選択されたアイテムを削除してもよろしいですか? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? 完了済みの一覧とハード ドライブから選択されたアイテムを削除してもよろしいですか? @@ -1990,13 +1990,13 @@ qBittorrent を終了してもよろしいですか? 次の url の url シードの参照に失敗しました: %1、メッセージ: %2 - + Alt+3 shortcut to switch to third tab Alt+3 - + Ctrl+F shortcut to switch to search tab Ctrl+F @@ -2007,73 +2007,73 @@ qBittorrent を終了してもよろしいですか? '%1' はその率が設定した最大値を達成したので削除されました。 - + NAT-PMP support [ON] NAT-PMP サポート [オン] - + NAT-PMP support [OFF] NAT-PMP サポート [オフ] - + DHT support [ON], port: UDP/%1 - + Local Peer Discovery [ON] ローカル ピア ディスカバリ [オン] - + Local Peer Discovery support [OFF] ローカル ピア ディスカバリ [オフ] - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version qBittorrent %1 (DL: %2KiB/s、UP: %3KiB/s) - - + + DL: %1 KiB/s - - + + UP: %1 KiB/s - - + + Ratio: %1 - - + + DHT: %1 nodes - - + + No direct connections. This may indicate network configuration problems. - + Uploads - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2081,13 +2081,13 @@ qBittorrent を終了してもよろしいですか? - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 - + Options were saved successfully. オプションの保存に成功しました。 @@ -2720,12 +2720,12 @@ p, li { white-space: pre-wrap; } 検索エンジン - + Empty search pattern 検索パターンを空にする - + Please type a search pattern first まず検索パターンを入力してください @@ -2738,13 +2738,13 @@ p, li { white-space: pre-wrap; } 少なくとも 1 つの検索エンジンを選択する必要があります。 - - + + Results 結果 - + Searching... 検索しています... @@ -2787,58 +2787,58 @@ Changelog: お使いの検索プラグインはすでに最新です。 - + Cut - + Copy - + Paste - + Clear field - + Clear completion history - + Search Engine 検索エンジン - - + + Search has finished 検索は完了しました - + An error occured during search... 検索中にエラーが発生しました... - + Search aborted 検索が中止されました - + Search returned no results 検索結果がありません - + Results i.e: Search results 結果 @@ -2852,8 +2852,8 @@ Changelog: 次の url にある検索プラグインの更新をダウンロードできませんでした: %1、理由: %2。 - - + + Unknown 不明 @@ -3007,6 +3007,11 @@ Changelog: Download in sequential order (slower but good for previewing) + + + Skip file checking and start seeding immediately + + File name ファイル名 @@ -3024,17 +3029,17 @@ Changelog: 正しい順にダウンロードする (より遅いがプレビューにはふさわしい) - + Add to download list in paused state 一時停止済み状態でダウンロードの一覧に追加する - + Add 追加 - + Cancel キャンセル @@ -3047,22 +3052,22 @@ Changelog: 選択 - + Ignored 無視済み - + Normal 通常 - + High - + Maximum 最大 @@ -3132,18 +3137,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' は永久に削除されました。 - + '%1' was removed. 'xxx.avi' was removed. '%1' は削除されました。 @@ -3159,96 +3164,96 @@ Changelog: '%1' が再開されました。 - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' はすでにダウンロードの一覧にあります。 - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' が再開されました。 (高速再開) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' がダウンロードの一覧に追加されました。 - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Torrent ファイルをデコードすることができません: '%1' - + This file is either corrupted or this isn't a torrent. このファイルは壊れているかこれは torrent ではないかのどちらかです。 - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. 所定のポートで記入できませんでした。 - + UPnP/NAT-PMP: Port mapping failure, message: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 - + Fast resume data was rejected for torrent %1, checking again... 高速再開データは torrent %1 を拒絶しました、再びチェックしています... - + Url seed lookup failed for url: %1, message: %2 次の url の url シードの参照に失敗しました: %1、メッセージ: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... '%1' をダウンロードしています、お待ちください... @@ -3585,6 +3590,125 @@ Changelog: 少なくとも 1 つの URL を入力してください。 + + downloadThread + + + + I/O Error + I/O エラー + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + 不明なエラーです + + downloading @@ -3810,12 +3934,12 @@ Changelog: False - + Uninstall warning アンインストールの警告 - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -3824,7 +3948,7 @@ However, those plugins were disabled. しかし、それらのプラグインは無効になります。 - + Uninstall success アンインストール成功 @@ -3833,47 +3957,47 @@ However, those plugins were disabled. すべての選択されたプラグインのアンインストールに成功しました - + Select search plugins 検索プラグインの選択 - - + + qBittorrent search plugins qBittorrent 検索プラグイン - - - - - - - - + + + + + + + + Search plugin install 検索プラグインのインストール - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine %1 検索エンジン プラグインのより最近のバージョンはすでにインストールされています。 @@ -3889,17 +4013,17 @@ However, those plugins were disabled. %1 検索エンジン プラグインのインストールに成功しました。 - - - - - + + + + + Search plugin update 検索プラグインの更新 - - + + Sorry, update server is temporarily unavailable. すみません、更新サーバーが一時的に利用不可です。 @@ -3914,75 +4038,75 @@ However, those plugins were disabled. すみません、%1 検索プラグインの更新に失敗しました。 - + All your plugins are already up to date. すべてのお使いのプラグインはすでに最新です。 - + All selected plugins were uninstalled successfully すべての選択されたプラグインのアンインストールに成功しました - - - + + + Yes - - - - + + + + No - + Search engine plugin archive could not be read. 検索エンジン プラグイン アーカイブは読み込めませんでした。 - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine %1 検索エンジン プラグインはインストールできませんでした。 - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine %1 検索エンジン プラグインは更新できませんでした、古いバージョンを維持します。 - + %1 search engine plugin was successfully updated. %1 is the name of the search engine %1 検索エンジン プラグインの更新に成功しました。 - + %1 search engine plugin was successfully installed. %1 is the name of the search engine %1 検索エンジン プラグインのインストールに成功しました。 - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine すみません、%1 検索エンジン プラグインのインストールに失敗しました。 - + New search engine plugin URL 新しい検索エンジン プラグインの URL - + URL: URL: @@ -4708,29 +4832,24 @@ However, those plugins were disabled. subDownloadThread - Host is unreachable - ホストは達成できません + ホストは達成できません - File was not found (404) - ファイルは見つかりませんでした (404) + ファイルは見つかりませんでした (404) - Connection was denied - 接続は拒否されました + 接続は拒否されました - Url is invalid - Url は不正です + Url は不正です - I/O Error - I/O エラー + I/O エラー Connection forbidden (403) @@ -4745,29 +4864,24 @@ However, those plugins were disabled. 内容は移動しました (301) - Connection failure - 接続失敗 + 接続失敗 - Connection was timed out - 接続はタイムアウトしました + 接続はタイムアウトしました - Incorrect network interface - 不正確なネットワーク インターフェイスです + 不正確なネットワーク インターフェイスです - Unknown error - 不明なエラーです + 不明なエラーです - Could not resolve proxy - プロキシを解決できませんでした + プロキシを解決できませんでした @@ -4833,12 +4947,12 @@ However, those plugins were disabled. 保存パスを作成できませんでした - + Invalid file selection 不正なファイル選択 - + You must select at least one file in the torrent Torrent では少なくとも 1 つのファイルを選択する必要があります diff --git a/src/lang/qbittorrent_ko.qm b/src/lang/qbittorrent_ko.qm index 79e9ac36e05ba5414170f5b661cb31077e54a505..ae6fd95c757a301f03a9177e64fe6764cf5f57c8 100644 GIT binary patch delta 1926 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 업로딩 속도: - + Open Torrent Files 토런트 파일 열기 - + Torrent Files 토런트 파일 @@ -1744,20 +1744,20 @@ list? 파일을 지우고 싶으세요? - - - - - + + + + + &Yes &예 - - - - - + + + + + &No &아니요 @@ -1812,7 +1812,7 @@ download list? 다시 시작됨. - + Finished 완료 @@ -1852,7 +1852,7 @@ download list? 다운로드 목록에 있는 모든 파일을 지우고 싶으세요? - + Are you sure you want to delete the selected item(s) in download list? 다운로딩 목록에서 선택하신 모든 아이템을 삭제하시겠습니까? @@ -1865,16 +1865,16 @@ download list? 개발자: 크리스토프 두메스 :: Copyright (c) 2006 - - + + qBittorrent 큐비토런트 - - - - + + + + Are you sure? -- qBittorrent 재확인해주십시요? -- 큐비토런트 @@ -2133,7 +2133,7 @@ Please close the other one first. 정말로 지금 선택하신 파일들을 다운로드 목록과 하드 드라이브에서 삭제하시겠습니까? - + Download finished 다운로드 완료 @@ -2147,15 +2147,15 @@ Please close the other one first. 검색 엔진 - - + + qBittorrent %1 e.g: qBittorrent v0.x 큐비토런트 %1 - - + + Connection status: 연결 상태: @@ -2218,15 +2218,15 @@ Please close the other one first. 큐비토런트 %1가 시작되었습니다. - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s 다운로딩 속도: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s 업로딩 속도: %1 KiB/s @@ -2247,7 +2247,7 @@ Please close the other one first. 대기중 - + Are you sure you want to quit? 정말로 종료하시겠습니까? @@ -2310,14 +2310,14 @@ Please close the other one first. '%1' 가 다운로드를 다시 시작되었습니다. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1가 다운로드를 완료하였습니다. - + I/O Error i.e: Input/Output Error I/O 에러 @@ -2333,12 +2333,12 @@ Please close the other one first. 오류 발생 (디스크가 꽉찼습니까?), '%1'가 정지 되었습니다. - + Connection Status: 연결 상태: - + Online 온라인 @@ -2374,23 +2374,23 @@ Please close the other one first. '%1'을 다운 중입니다, 잠시 기다려 주세요... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. 오류 발생 (디스크가 꽉찼습니까?), '%1'가 정지 되었습니다. - + Search 검색 - + RSS - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2408,13 +2408,13 @@ Please close the other one first. DHT 지원 [사용함], 포트: %1 - - + + DHT support [OFF] DHT 지원 [사용안함] - + PeX support [ON] Pes 지원 [사용함] @@ -2423,25 +2423,25 @@ Please close the other one first. Pes 지원 [사용안함] - + The download list is not empty. Are you sure you want to quit qBittorrent? 다운로드 리스트가 파일이 있습니다. 큐비토런트를 종료하시겠습니까? - - + + Downloads 다운로드 - + Are you sure you want to delete the selected item(s) in finished list? 현재 완료목록에서 선택된 파일을 지우시겠습니까? - + UPnP support [ON] UPnp 지원 [사용함] @@ -2450,17 +2450,17 @@ Are you sure you want to quit qBittorrent? 허락없이 저작권이 있는 자료를 공유하는 것은 법에 저촉됩니다. - + Encryption support [ON] 암호화(Encryption) 지원 [사용함] - + Encryption support [FORCED] 암호화(Encryption) 지원 [강압적으로 사용] - + Encryption support [OFF] 암호화(Encryption) 지원 [사용안함] @@ -2474,30 +2474,30 @@ Are you sure you want to quit qBittorrent? 비율 - + Alt+1 shortcut to switch to first tab - + Alt+2 shortcut to switch to second tab - + Alt+4 shortcut to switch to fourth tab - + Url download error Url 다운로드 오류 - + Couldn't download file at url: %1, reason: %2. 다음 주소(Url)에서 파일을 다운로드할수 없습니다: %1, 이유:%2. @@ -2506,12 +2506,12 @@ Are you sure you want to quit qBittorrent? 토렌트 %1는 빨리 이어받기가 사용될수 없습니다, 확인중입니다... - + Are you sure you want to delete the selected item(s) from download list and from hard drive? 다운로드 목록에서 선택된 파일을 하드 드라이버에서도 지우시겠습니까? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? 완료 목록에서 선택된 파일을 하드 드라이버에서도 지우시겠습니까? @@ -2525,50 +2525,50 @@ Are you sure you want to quit qBittorrent? 다음 Url 완전체(Url seed)의 검색이 실패하였습니다: %1, 관련내용: %2 - + Alt+3 shortcut to switch to third tab - + Ctrl+F shortcut to switch to search tab - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 큐비토런트는 다음 포트을 사용하고 있습니다: TCP/%1 - + UPnP support [OFF] UPnP 지원 [사용안함] - + NAT-PMP support [ON] NAT-PMP 지원 [사용함] - + NAT-PMP support [OFF] NAT-PMP 지원 [사용안함] - + DHT support [ON], port: UDP/%1 DHT 지원 [사용함], 포트:'UDP/%1 - + Local Peer Discovery [ON] Local Peer Discovery (로컬 네트웍크내 공유자 찾기) [사용함] - + Local Peer Discovery support [OFF] Local Peer Discovery (로컬 네트웍크내 공유자 찾기) [사용안함] @@ -2578,48 +2578,48 @@ Are you sure you want to quit qBittorrent? 사용자께거 지정하신 할당율에 도달하였기에 '%1'는(은) 목록에서 삭제되었습니다. - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version 큐비토런트 버젼: %1 (DL: %2KiB/s, UP: %3KiB/s) - - + + DL: %1 KiB/s 다운로딩 속도: %1 KiB/s - - + + UP: %1 KiB/s 업로딩 속도: %1 KiB/s - - + + Ratio: %1 비율: %1 - - + + DHT: %1 nodes DHT: %1 노드(nodes) - - + + No direct connections. This may indicate network configuration problems. 직접적으로 연결된 네트워크를 찾지 못했습니다. 네트워크 설정에 의해 발생된 오류일 가능성이 있습니다. - + Uploads 업로드 - + Options were saved successfully. 설정이 성공적으로 저장되었습니다. @@ -3343,12 +3343,12 @@ p, li { white-space: pre-wrap; } 검색 엔진 - + Empty search pattern 검색 양식 지우기 - + Please type a search pattern first 검색 양식을 작성해주십시오 @@ -3361,13 +3361,13 @@ p, li { white-space: pre-wrap; } 적어도 하나 이상의 검색 엔진을 선택해야 합니다. - - + + Results 결과 - + Searching... 검색중... @@ -3410,58 +3410,58 @@ Changelog: 님은 현재 최신 검색 엔진 플로그인을 사용중입니다. - + Cut 잘라내기 - + Copy 복사하기 - + Paste 붙이기 - + Clear field 내용 지우기 - + Clear completion history 완료 내역 지우기 - + Search Engine 검색 엔진 - - + + Search has finished 검색 완료 - + An error occured during search... 검색 중 오류 발생... - + Search aborted 검색이 중단됨 - + Search returned no results 검색 결과가 없음 - + Results i.e: Search results 결과 @@ -3475,8 +3475,8 @@ Changelog: 다음 url에서 검색 플러그인 (Plugin)을 다운로드 할수 없습니다: %1, 이유: %2. - - + + Unknown 알려지지 않음 @@ -3654,6 +3654,11 @@ Changelog: Download in sequential order (slower but good for previewing) 순차적으로 다운받기(느리지만 미리보기에 좋음) + + + Skip file checking and start seeding immediately + + File name 파일 이름 @@ -3671,17 +3676,17 @@ Changelog: 순차적으로 다운받기(느리지만 미리보기에 편합니다) - + Add to download list in paused state 정지 상태로 다운로드 목록에 추가하기 - + Add 추가 - + Cancel 취소 @@ -3698,22 +3703,22 @@ Changelog: 선택 - + Ignored 무시 - + Normal 보통 - + High 높음 - + Maximum 최고 @@ -3783,18 +3788,18 @@ Changelog: bittorrent - + %1 reached the maximum ratio you set. '%1' 는 설정된 최대 공유 비율에 도달했습니다. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. '%1' 는 영구삭제 되었습니다. - + '%1' was removed. 'xxx.avi' was removed. '%1' 가 삭제되었습니다. @@ -3810,96 +3815,96 @@ Changelog: '%1' 가 다운로드를 다시 시작되었습니다. - + '%1' is not a valid magnet URI. '%1'는 유효한 마그넷 URI (magnet URI)가 아닙니다. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1'는/은 이미 다운로드 목록에 포함되어 있습니다. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1'가 다시 시작되었습니다. (빠른 재개) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1'가 다운로드 목록에 추가되었습니다. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' 다음 파일은 해독 할수가 없습니다: '%1' - + This file is either corrupted or this isn't a torrent. 이 파일은 오류가 있거나 토런트 파일이 아닙니다. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked <font color='red'>%1</font> <i>은/는 IP 필터에 의해 접속이 금지되었습니다</i> - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned <font color='red'>%1</font> <i>은/는 유효하지 않은 파일 공유에 의해 접속이 금지되었습니다</i> - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 토렌트 %2 에는 회귀적 다운로드 파일 %1이 포함되어 있습니다 - + Unable to decode %1 torrent file. %1 토렌트를 해독할수 없습니다. - + Couldn't listen on any of the given ports. 설정하신 포트에 연결할수 없습니다. - + UPnP/NAT-PMP: Port mapping failure, message: %1 UPnP/NAT-PMP: Port mapping 실패, 메세지: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 UPnP/NAT-PMP: Port mapping 성공, 메세지: %1 - + Fast resume data was rejected for torrent %1, checking again... 토렌트 %1는 빨리 이어받기가 사용될수 없습니다, 확인중입니다... - + Url seed lookup failed for url: %1, message: %2 다음 Url 완전체(Url seed)의 검색이 실패하였습니다: %1, 관련내용: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... '%1'을 다운 중입니다, 잠시 기다려 주세요... @@ -4232,6 +4237,125 @@ Changelog: 적어도 하나의 주소(URL)를 적어주십시오. + + downloadThread + + + + I/O Error + I/O 에러 + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + 알수 없는 오류 + + downloading @@ -4453,12 +4577,12 @@ Changelog: 아님 - + Uninstall warning 언인스톨 경고 - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. @@ -4468,83 +4592,83 @@ However, those plugins were disabled. - + Uninstall success 제거 완료 - + Select search plugins 검색 플러그인을 선택하십시오 - - + + qBittorrent search plugins 큐비토런트 검색엔진 - - - - - - - - + + + + + + + + Search plugin install 검색 엔진 설치 - - - + + + Yes - - - - + + + + No 아니오 - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent 큐비토런트 - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine 최신 버젼의 %1이 이미 설치되어있습니다. - - - - - + + + + + Search plugin update 검색 엔진 플러그인 업데이트 - - + + Sorry, update server is temporarily unavailable. 죄송합니다. 현재 임시적으로 업데이트 서버가 접속이 불가능합니다. @@ -4554,37 +4678,37 @@ However, those plugins were disabled. 죄송하지만 검색엔진 %1의 업데이트가 실패하였습니다. - + All your plugins are already up to date. 모든 검색엔진이 최신버젼입니다. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine 검색엔진 %1은 업데이트 될수 없습니다. 기존버젼을 유지하겠습니다. - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine 검색엔진 %1은/는 설치될수 없습니다. - + All selected plugins were uninstalled successfully 선택된 모든 플러그인들이 성공적으로 제거 되었습니다 - + %1 search engine plugin was successfully updated. %1 is the name of the search engine 검색엔진 %1이 성공적으로 업데이트 되었습니다. - + %1 search engine plugin was successfully installed. %1 is the name of the search engine 검색엔진 %1이 성공적으로 설치 되었습니다. @@ -4595,24 +4719,24 @@ However, those plugins were disabled. 검색엔진 %1이 성공적으로 업데이트 되었습니다. - + Search engine plugin archive could not be read. 검색엔진 플러그인이 일혀지질 않습니다. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine 죄송하지만, 검색엔진 플로그인, %1,의 설치가 실패하였습니다. - + New search engine plugin URL 새 검색엔진 플러그인 주소(URL) - + URL: @@ -5532,29 +5656,24 @@ However, those plugins were disabled. subDownloadThread - Host is unreachable - 호스트에 도달할수 없습니다 + 호스트에 도달할수 없습니다 - File was not found (404) - 파일을 찾을수 없습니다 (404) + 파일을 찾을수 없습니다 (404) - Connection was denied - 연결 시간이 부인되었습니다 + 연결 시간이 부인되었습니다 - Url is invalid - 주소(Url)가 유효하지 않습니다 + 주소(Url)가 유효하지 않습니다 - I/O Error - I/O 에러 + I/O 에러 Connection forbidden (403) @@ -5569,29 +5688,24 @@ However, those plugins were disabled. 내용이 이동되었습니다 (301) - Connection failure - 연결 실패 + 연결 실패 - Connection was timed out - 연결 시간이 초과하였습니다 + 연결 시간이 초과하였습니다 - Incorrect network interface - 네트웍크 인터페이스(network interface)가 맞지 않습니다. + 네트웍크 인터페이스(network interface)가 맞지 않습니다. - Unknown error - 알수 없는 오류 + 알수 없는 오류 - Could not resolve proxy - 프록시를 설정할수 없습니다 + 프록시를 설정할수 없습니다 @@ -5657,12 +5771,12 @@ However, those plugins were disabled. 저장 경로를 생성할수가 없습니다 - + Invalid file selection 부적당한 파일 선택 - + You must select at least one file in the torrent 토렌트에서 적어도 하나 이상의 파일을 선택해야 합니다 diff --git a/src/lang/qbittorrent_nb.qm b/src/lang/qbittorrent_nb.qm index 84be77a97210a4b32b853bf75b8fa76653e94d07..64756be44c9385dce5ab8ccb7f5f92b77e7e6221 100644 GIT binary patch delta 841 zcmXBSYe-XJ7zgnGIomm>vuVqv&dYRK;5095md;B~-JF-QpuA)Q3(-s^jEo^vqS3un zTCY+dCQ62hg=rc@Vi#KwX&2F=5-VL%L{ws6AEH;zryu9=yf6RfdEQeU%<&H9g4SyY z;F5uqbRfJA*jVO_)+crWSyzFO31IUvKx8G?hXY$*(V~~Y_GK4Rune20+v29#OTC_ zu=lh8)+1zw(L^lZdv7VA9m3zyBw*7)CM5j?{Vrv4r`7<<6iGul31WkjQZrcJa64eG zWK&)1fXtt)z1o}hH6rO@WNVc)?WSZ&o02`<(?t8z69;QxoTQuG!;}(ErWXg~eNo*s zlrM>s>6kiFAPd`JRC8@-E(7U@C9R=cpX@9h$1ZN*{&m2|OVaR3(qiEQw$b!{D3GBQ45mkX#%_99uUzf_!evi zQa=a*ZW=8yP^dY77hr3JL+Zmo=(MDHmC*S75)kheT4YN!-5;Uz;x{1el+e!-z-Sgm z8e(V)A7S23&y!Mlj&V+mXrvj^;zh&aN?@%^+}KqBL~2D#Kqb9{h`Y~D($`ZiI=G8#!f4W-qEecG${7{^9PdiNeZW9dPp&?nN{2w zrW3H`D(0KBX%9~&t=C8st@%Z6a5}MBsnyQYDT7RLdarh+tLQgfWvud9aRrdkOFVfK zGeK;8A!`aI?Yx0$CgZ$LtnhrJrpw9jCX0M(*in_n;}F2RRN9?GK+q#q)~%EDDLPa) zUx+}MAMGl8&7fVVGLSZPf@)>if!gZ*2TIEFD{A(Zlnsu?FRdo;)AGpAErElMEnf2f D!xH0G delta 840 zcmXBSdq`7J90&04z1zLlyZJ~X)fequds20dvvJ2R<J_3uGU1!RhTR7OIs~_@3?RNm z@SLU5qQ-=>hI;^8DU`b$27KN~#*GM#W352MC80(3lcwtxI?l}j2{FPAmH;91!fCZ$?EL-P(28>e;7R9bW9=_n1#7r8}1azAn4BbnpG z%xAL^ GUI - + Open Torrent Files Åpne torrentfiler @@ -1436,30 +1436,30 @@ Copyright © 2006 av Christophe Dumez<br> Ønsker du å slette alle filene in nedlastingslisten? - - - - - + + + + + &Yes &Ja - - - - - + + + + + &No &Nei - + Are you sure you want to delete the selected item(s) in download list? Ønsker du å slette valgt(e) element(er) i nedlastingslisten? - + Finished Ferdig @@ -1500,7 +1500,7 @@ Copyright © 2006 av Christophe Dumez<br> Klarte ikke å opprette mappen: - + Torrent Files Torrentfiler @@ -1545,10 +1545,10 @@ Copyright © 2006 av Christophe Dumez<br> qBittorrent - - - - + + + + Are you sure? -- qBittorrent Er du sikker? -- qBittorrent @@ -1744,7 +1744,7 @@ Vennligst avslutt denne først. Ønsker du å slette valgte element(er) i nedlastningslisten, og fra lagringsenheten? - + Download finished Nedlastingen er fullført @@ -1762,15 +1762,15 @@ Vennligst avslutt denne først. Lese/Skrive feil - - + + qBittorrent %1 e.g: qBittorrent v0.x qBittorrent %1 - - + + Connection status: Tilkoblingsstatus: @@ -1833,21 +1833,21 @@ Vennligst avslutt denne først. qBittorrent %1 er startet. - - + + qBittorrent qBittorrent - - + + DL speed: %1 KiB/s e.g: Download speed: 10 KiB/s Nedlastingshastighet: %1 KiB/s - - + + UP speed: %1 KiB/s e.g: Upload speed: 10 KiB/s Opplastingshastighet: %1 KiB/s @@ -1868,7 +1868,7 @@ Vennligst avslutt denne først. Laster ikke ned - + Are you sure you want to quit? Ønsker du å avslutte qBittorrent? @@ -1931,14 +1931,14 @@ Vennligst avslutt denne først. '%1' gjenopptatt. - - + + %1 has finished downloading. e.g: xxx.avi has finished downloading. %1 er ferdig nedlastet. - + I/O Error i.e: Input/Output Error Lese/Skrive feil @@ -1954,12 +1954,12 @@ Vennligst avslutt denne først. Det har oppstått en feil (full disk?), '%1' er pauset. - + Connection Status: Tilkoblingsstatus: - + Online Tilkoblet @@ -1995,115 +1995,115 @@ Vennligst avslutt denne først. Laster ned '%1'... - + An error occured (full disk?), '%1' paused. e.g: An error occured (full disk?), 'xxx.avi' paused. Det har oppstått en feil (full disk?), '%1' er pauset. - + Search Søk - + RSS - - + + DHT support [OFF] - + PeX support [ON] - + The download list is not empty. Are you sure you want to quit qBittorrent? - - + + Downloads - + Are you sure you want to delete the selected item(s) in finished list? - + UPnP support [ON] - + Encryption support [ON] - + Encryption support [FORCED] - + Encryption support [OFF] - + Alt+1 shortcut to switch to first tab - + Alt+2 shortcut to switch to second tab - + Alt+4 shortcut to switch to fourth tab - + Url download error - + Couldn't download file at url: %1, reason: %2. - + Are you sure you want to delete the selected item(s) from download list and from hard drive? - + Are you sure you want to delete the selected item(s) from finished list and from hard drive? - + Alt+3 shortcut to switch to third tab - + An I/O error occured for torrent %1. Reason: %2 e.g: An error occured for torrent xxx.avi. @@ -2111,90 +2111,90 @@ Are you sure you want to quit qBittorrent? - + Ctrl+F shortcut to switch to search tab - + qBittorrent is bound to port: TCP/%1 e.g: qBittorrent is bound to port: 6881 - + UPnP support [OFF] - + NAT-PMP support [ON] - + NAT-PMP support [OFF] - + DHT support [ON], port: UDP/%1 - + Local Peer Discovery [ON] - + Local Peer Discovery support [OFF] - + qBittorrent %1 (DL: %2KiB/s, UP: %3KiB/s) %1 is qBittorrent version - - + + DL: %1 KiB/s - - + + UP: %1 KiB/s - - + + Ratio: %1 - - + + DHT: %1 nodes - - + + No direct connections. This may indicate network configuration problems. - + Uploads - + Options were saved successfully. Innstillingene ble lagret. @@ -2782,12 +2782,12 @@ p, li { white-space: pre-wrap; } Søkemotor - + Empty search pattern Ingen søketekst - + Please type a search pattern first Skriv en tekst å søke etter først @@ -2800,13 +2800,13 @@ p, li { white-space: pre-wrap; } Du må velge minst en søkemotor. - - + + Results Resultater - + Searching... Søker... @@ -2848,65 +2848,65 @@ Endringer: Ditt søkeprogramtillegg er allerede oppdatert. - + Cut - + Copy - + Paste - + Clear field - + Clear completion history - + Search Engine Søkemotor - - + + Search has finished Søket er ferdig - + An error occured during search... Det oppstod en feil under søket... - + Search aborted Søket er avbrutt - + Search returned no results Søket ga ingen resultater - + Results i.e: Search results Resultater - - + + Unknown @@ -3068,6 +3068,11 @@ Endringer: Download in sequential order (slower but good for previewing) + + + Skip file checking and start seeding immediately + + File name Filnavn @@ -3085,17 +3090,17 @@ Endringer: Last ned i riktig rekkefølge (tregere, men tilpasset forhåndsvisningen) - + Add to download list in paused state Legg til i nedlastningslisten som pauset - + Add Legg til - + Cancel Avbryt @@ -3112,22 +3117,22 @@ Endringer: velg - + Ignored - + Normal - + High - + Maximum @@ -3197,18 +3202,18 @@ Endringer: bittorrent - + %1 reached the maximum ratio you set. - + '%1' was removed permanently. 'xxx.avi' was removed permanently. - + '%1' was removed. 'xxx.avi' was removed. '%1' ble fjernet. @@ -3224,96 +3229,96 @@ Endringer: '%1' gjenopptatt. - + '%1' is not a valid magnet URI. - - - + + + '%1' is already in download list. e.g: 'xxx.avi' is already in download list. '%1' finnes allerede i nedlastingslisten. - - - + + + '%1' resumed. (fast resume) '/home/y/xxx.torrent' was resumed. (fast resume) '%1' ble gjenopptatt (hurtig gjenopptaging) - - - + + + '%1' added to download list. '/home/y/xxx.torrent' was added to download list. '%1' ble lagt til i nedlastingslisten. - - + + Unable to decode torrent file: '%1' e.g: Unable to decode torrent file: '/home/y/xxx.torrent' Klarte ikke å dekode torrentfilen: '%1' - + This file is either corrupted or this isn't a torrent. Denne filen er enten ødelagt, eller det er ikke en torrent. - + <font color='red'>%1</font> <i>was blocked due to your IP filter</i> x.y.z.w was blocked - + <font color='red'>%1</font> <i>was banned due to corrupt pieces</i> x.y.z.w was banned - + Recursive download of file %1 embedded in torrent %2 Recursive download of test.torrent embedded in torrent test2 - + Unable to decode %1 torrent file. - + Couldn't listen on any of the given ports. Klarte ikke å lytte på noen av de oppgitte portene. - + UPnP/NAT-PMP: Port mapping failure, message: %1 - + UPnP/NAT-PMP: Port mapping successful, message: %1 - + Fast resume data was rejected for torrent %1, checking again... - + Url seed lookup failed for url: %1, message: %2 - + Downloading '%1', please wait... e.g: Downloading 'xxx.torrent', please wait... Laster ned '%1'... @@ -3602,6 +3607,125 @@ Endringer: Angi minst en nettadresse. + + downloadThread + + + + I/O Error + Lese/Skrive feil + + + + The remote host name was not found (invalid hostname) + + + + + The operation was canceled + + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + + The connection to the remote server timed out + + + + + SSL/TLS handshake failed + + + + + The remote server refused the connection + + + + + The connection to the proxy server was refused + + + + + The proxy server closed the connection prematurely + + + + + The proxy host name was not found + + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + + The access to the remote content was denied (401) + + + + + The operation requested on the remote content is not permitted + + + + + The remote content was not found at the server (404) + + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + + The Network Access API cannot honor the request because the protocol is not known + + + + + The requested operation is invalid for this protocol + + + + + An unknown network-related error was detected + + + + + An unknown proxy-related error was detected + + + + + An unknown error related to the remote content was detected + + + + + A breakdown in protocol was detected + + + + + Unknown error + + + downloading @@ -3819,153 +3943,153 @@ Endringer: Nei - + Uninstall warning - + Some plugins could not be uninstalled because they are included in qBittorrent. Only the ones you added yourself can be uninstalled. However, those plugins were disabled. - + Uninstall success - + Select search plugins - - + + qBittorrent search plugins - - - - - - - - + + + + + + + + Search plugin install - - - + + + Yes - - - - + + + + No - - - - - - - - - - - - - + + + + + + + + + + + + + qBittorrent qBittorrent - + A more recent version of %1 search engine plugin is already installed. %1 is the name of the search engine - - - - - + + + + + Search plugin update Oppdatering av søkeprogramtillegget - - + + Sorry, update server is temporarily unavailable. Oppdateringstjeneren er midlertidig utilgjengelig. - + All your plugins are already up to date. - + %1 search engine plugin could not be updated, keeping old version. %1 is the name of the search engine - - - + + + %1 search engine plugin could not be installed. %1 is the name of the search engine - + All selected plugins were uninstalled successfully - + %1 search engine plugin was successfully updated. %1 is the name of the search engine - + %1 search engine plugin was successfully installed. %1 is the name of the search engine - + Search engine plugin archive could not be read. - - + + Sorry, %1 search plugin install failed. %1 is the name of the search engine - + New search engine plugin URL - + URL: @@ -4799,54 +4923,8 @@ However, those plugins were disabled. subDownloadThread - - Host is unreachable - - - - - File was not found (404) - - - - - Connection was denied - - - - - Url is invalid - - - - - Connection failure - - - - - Connection was timed out - - - - - Incorrect network interface - - - - - Unknown error - - - - I/O Error - Lese/Skrive feil - - - - Could not resolve proxy - + Lese/Skrive feil @@ -4908,12 +4986,12 @@ However, those plugins were disabled. Kunne ikke opprette nedlastingsfilstien - + Invalid file selection Ugyldig valg av filer - + You must select at least one file in the torrent Du må velge minst en fil fra torrenten diff --git a/src/lang/qbittorrent_nl.qm b/src/lang/qbittorrent_nl.qm index ff1480b5b75e71a1462f345bff824118ab692119..4557f2851c975b8f20929f108c80e91ae82c0730 100644 GIT binary patch delta 2025 zcmXZdc~}(Z9S895%RFmCLX;5FmnpQ2|8~Y7zlgKt(WKNC`y=a;TIT zi4gD=)QCAm3{gS}2peo^F2Z3&5jiw5hzM0cE^Fgci8Vi;>0h5`cJ@7f$NSFhBGqu7 zs?gRo3cymJ?H54w1Af{{h6CTK0cjcV;xyorN$=~5{GH;ingb!Hf%me3(0zc{sAA0& z*#zVS0*3~G6!&NRg9%MjL&}00-_HA7tR3dzXMv+i@w)$y+uO? zzUMV&$LZ%xLR{emH2mKy>y_tWJ$r?7e)$%}Peh=@UGdgiilYvSll1R1kAapfh?TTt zfEH#Z3hss*)ES$A?>=XB+#Z)G(cNzsY38y#(~Z+m>nO?f9c6$ z_|0+W6A^K!7#Kc+$gSy=nlwa~{FeetMpW2CAjO2Jyr+QA?-f_|DAw&z9I=D3;s~&< zLeXTSI2sD$FBz1GIOZ;dtEbWE@;z`VndJ&j{74%6T+nkJtX=SN?d8I{pQCKQtyo>l zy`S|z;AACt_!w0n>|@2zcIK{{tEtc7>Q~tUBTa0L%8=ca!wt9|2lj8`hCh7+xcx`& z>7HwVbvpGn2ADSo$>%GO<|IPS#n-xvrj!hhfoROC}Tl32ynSk~^?1>os+>Jj8g}MfyCsQbS)|H>Q2&KdOfhCc`$ymzSeLI$57RVK_ zagyl=KY(7;rZ~YcH z@1Qsw!s;Y%{&FN6lMMFtj$#C(*4VK@@qItVo1V~cOg{V>;M5?#opg~J@r0ON z6btlk7jyO|01Ms|b7xb7e!Yrin)|#^E}nSz7%=!qaU@i%6b{lk{8+5{nr2D3qF7U` zcrT3&nR{z$gT<>E=V-efY`)rCXIf%r|0*4y{{JYBrm{q}UfplD?3*8et4*v}9l^In zurc)ku92l`oE@J^x`%rxJIRW7$EBHTLVewA9U#ge-I=bV4sn(SjTZomOmTX~wTJ@XozD~tFDVYn7RK$glBtyCT5skX=CLvBaMuU2BvR3C ze;`{56luwI*`_oPC`^|fBB`jkw(`7neZXa&CD`b*%j9)c^8js=9P4`#IA|-!C(?z! zAxTas^QD5lDDNnt_fgyA%p)n(W+QTr`ZQ3{DwhsirtjN!`JBa{DO1bk+JCJD+>gsm zt&0I0UcR=|jv8>0+^f%`UF?^y>*y?X3W{SP^5b`CJU=wTWZf>!;4;g7{nW7c*Rgz^ zL3iP|mbK@oGqulK{>_gH)3BGd>kRyqCwrm`_r=7ytkO delta 2721 zcmaKu3s4hx9>>4gWLc6Bkf?wtB=#y0E%6O?v`{M`K9KQR5Ec@fG}Am1WDcfn_%Ee18!6+L0r!iLGWjuJuR_YFFM-HEh@AAj z$i2-XT_s2@TLox;RvLvp*eE{67k-VJW0Q9KjJZJX?=7n=!!xsXB`*VI_slbhLZorgFz^FiO%-4D# zrh|(fMwL4D4=(!DK;TgW7vI?qXcD+g%b^?(7Z;?)4X>1yu8>2+-o+nLN zNSYVNNK-Zj0_XJ78FmV0;0@`F)+#!G#9H{cH?FiwSE~<@?CdW4k<5nOE@YZUZ>`!@5*j2goHp~%lii~O;i1$k<8 z27dP1T|meIey;Tlwc!@NcuhL+Qxm^*kr5d58NV!m+VjW>X7r348pLn;GfjE3Rix`U zUm;xqoC)Cf93?BpI+1%+BJXyvTF(f@p2K|of^wiWo~h&!>dO5dfm3K?Zq5?f*3OdT z8hMJxxMNp=`Z26Xp3K#pXN~gZl94P;5!$~{P(Pke>bOMS%@+KUCIYu11h$Ycbw9A3 zipV}@A>WT$ZtW!@f7ncV0jv-T%A)A5I`)KYj1|^NDUq{5!ulu|i5MtsbI}V)eMi{7 zwhd^S#NJW*4^0%DX_S8R4&l%uD&yM`!VUi>AVn`UJ>N%9ZxfnRzXiOCgx10snsgm2 zQU-G;ce7H$r6cT+GLE~wiSb@hiu$LX2ba)jJQ&Mjy#^1RD)(4_8rW+Qd3~eE&QiJW z@KHd!NgkN@7}y;x*R9N@s3)>gufdXJR_mpi`o27U1r1lkEs=ZwF0#%f^7=)QolWxD zlAD0ORG#mO1&*JU&sp|0y-H`xi^j|YeCEg(y);qOKeLgl@qOau_hpShjzQ$!ULswQ zY`rQ(-5I3t8`ez5zE^~OM^c=6m({BD+{NSUg({tEe$3Lm{dK&evViVs8KkJH`~rBm zOVQY@0N%`0G_Q&WE|iJv2xX<-5nR4_DEWxMHSE)Re(n;@$Q02L_9P%WvMjt(QzmxGjLi^9~ z`eX7c;FDbgS8>C{{iDgr0B7WVOBpil&3!i*Hg- zK42_Ctydpd@9iw7=2O1qeQ@+Mn(P0t61ARtoW~BSqa{3hp-$FZZuDtgwF~&6pHIiN z_kh?;pQmwY!1OFq?8#uKt>=MnoX+at(X8)t1q(EJM`y!|d^kMm+YArd)Z?rci!sY# zvRbs+876bS%_z{auRT9A##(4GTQdwFAGD8#F=8uMy*>dx7%!MzQv#o8!=>r?ln%s z5Km^^PPLSTo%UAt;RC8o4uZ=jhh5uxllcLa@-8`)W3|Ll%tParB*F$+FsP)LdGN(NSo%7! diff --git a/src/lang/qbittorrent_nl.ts b/src/lang/qbittorrent_nl.ts index 32a0cccbf..cf8353697 100644 --- a/src/lang/qbittorrent_nl.ts +++ b/src/lang/qbittorrent_nl.ts @@ -3191,6 +3191,10 @@ Changelog: Expand all Alles uitklappen + + Skip file checking and start seeding immediately + + authentication @@ -3603,6 +3607,101 @@ Changelog: Typ op zijn minst één URL. + + downloadThread + + I/O Error + I/O Fout + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Onbekende fout + + downloading @@ -4703,23 +4802,23 @@ selecteer alstublieft een er van: subDownloadThread Host is unreachable - Host is onbereikbaar + Host is onbereikbaar File was not found (404) - Bestand niet gevonden (404) + Bestand niet gevonden (404) Connection was denied - Verbinding niet toegestaan + Verbinding niet toegestaan Url is invalid - Url is ongeldig + Url is ongeldig I/O Error - I/O Fout + I/O Fout Connection forbidden (403) @@ -4735,23 +4834,23 @@ selecteer alstublieft een er van: Connection failure - Verbindingsfout + Verbindingsfout Connection was timed out - Verbinding verlopen + Verbinding verlopen Incorrect network interface - Verkeerde netwerkinterface + Verkeerde netwerkinterface Unknown error - Onbekende fout + Onbekende fout Could not resolve proxy - Kon proxy niet herleiden + Kon proxy niet herleiden diff --git a/src/lang/qbittorrent_pl.qm b/src/lang/qbittorrent_pl.qm index 02b7abb8a028390279180de43e922a7c0657776c..967df4617bab6473018b58d953179d62ef32827e 100644 GIT binary patch delta 1795 zcmXZcc}x^n90&04%+4_EF}neUmGvMf>;f7UDAI~TsV?9FMvFpGtW>Dtfeoi3hYFM% z#mAu)v>?c`93~~z76q+<)-uzPo;5!56;as3d zL~!0CfDDsCZVtc0Kx95VIyDKaN~-`%2O<+P0K+IEtN#TioUoG^A~E>L}mhzgU}S#Igz zRGQ{oW>P-ayf+<)7~@VX84oPD!AxJrY{?`s3RBJ%?tXIwP=A~Az>ER zL1fY7H7I;!o(b%#6{4391M77{a^_Q@Do@CfdVoFQ!tSHLQip|tm2JR5KN2s_^5_+6 zPYOV?j@g_gG+2u1@w=$BJYKd!Lt6llqb1#Rj}f75MibE7D)gvmOqxL9Y-~7SS|arA za07Pi5zZ%^15$NN%QE6%mT<96K}WFU7xAmJEi|n~%oGP^ z^9?dt3b5Zk(Z&!?8>-&Sv`!~mB|UeaIj&p`G!#mPyEM>> z3uL~naq$s%Dbp)q4Y-j*U{9g=XdGYAM$`2IxPNN*uj_bzV~GLRIr{{#B{5NWs72lYsuF>8S)AE|p6t(eg&-PDf&-mj&R7hlu%FOcp; zcL7|v^vW^-jN4#q_iQ;`{g&$MZIn7>`XM?oIqJnt2|#T%xvO^Os)(qGv};$N zk9q>MkEk!jYy?^_lC7GVd{RHD)0kX3H7i!pw1)LESKeSY>NU}u=|m+T|(ymmC?8r>tn0BX6m81$^ep zS(VB3lCYO^m5soraJf~J0vt+{`@WwC*aXSf5*=v2Z3KVqDSz688UAEcYvhmn5eMBY?k{52g*d*_-7BYK zaqy+?d2kHyjxSBj@fV#9x}qdSPH*q9U_8`o*v U)9Xi$)h{EvdM0)%doBzA0ZLgYZ~y=R delta 2648 zcmaKtdsGzX8OEQPonhF^KqQJlj4UZEphf{fA}X|^fY*3K5S3(Q7hQo}-3u2Zpdu9% z2>2;p@CK+{1TWzzr<$0gqNbkO9_t~Rq{p<;v}z$N?dRv~I46GDOr|2NDkg^R@uf*VDiM zROt8wnDrOh^#L%qpLc=z#4Wm-%AoFr*Cn#*HV?kVSco@Wb5vWls+@GMZB}w6l?GO+50cA6wUYh}I+|3HP z@&4m|HUh1WF!jR*AZiq*epW(z-ax{}F9DXyE_37f{AwohvzIwR+giD%H}il6ecY)TgMs*u z6y|=Yu=zflr3x-i;O;an0O|*GPv5voCVt23#ufqo(|GTYG+^K7d|bqEV8bmw?!pM* z#1%g2eh=W)z^7SB)nHOMLdEBXBvZrU`8+LIQ7b4smdS50#sQ;V;x{!{l4~)1*&ee0 z)mDDT!!By%7pmv@wI|tQRbsfHn!0ov5cdNef-1F$x;O2zDs_h+m0hh`;-D0U-Bm5Q z-3e4JXD%Vy_Z3yO*Y7CcHC1i@44JH|z3C*}@{pYu#&ChGR|pQDAuO6oX_0|@^_mNm&yF>%_ zH?g=T9XJprmaH=aFTN?3`q1F5e~z`g1&8xuUD;0Hpi5zMm)NE%r{gt8eCs_@i7Qv= z*rKrMRVGTYBl2q8{ASa59XO+~rQU7i845PE$1VCF`>3L?+~VK=7})w6%aP(ZH`Y$~ zNvuaQcoh~&-pSKxnx060pHnkxCb1xQL-D?SlFPdYNcmK9MJ%UNbVJH*rp`57kxE+o zNO_gC#XB5$JzT2z^A2*hMcSsKGAb5H+hgwl+H$FW>s_F6zSQ{80!+Lu9UD$zl8#8n zc?RT0N*zn74F_AKch-^5hF0mu(3?QS6Y1u6CovKgkEL5_rva`?x}7(LrgWF|xcM^h z{Brj}U(cn$pSr*3Qw3~tXFcw*e8X<`vN~8D;C^NU9gX%AELm-cs4G;vZT|z{GArEM zsqlEEdeGSMz>#jXU)I+&E}iPoij`E{baqH>;I~w<%WD5=tJUe{bi9H(6}t8-tiGyn z?^gip89^p6^!_b6Wq;_oDrAhrn1XgEgmh8U)nBUfz57V^7mTHzi@uf5PFLquN zH-4DrXe^oGm#T1KhvxXjR-kUI=2R}J9h$G{Jhcxvc1&}tDv9ie!uD_3B&~tZ?_y@H ze`vgR*f84M_*fefK#u9Y(MG)z0eGZp6Gzt38Sd3iKSXux(Xn=|Kc{7vwJC#srM-}P zpI$AV+CMH`0UYgRQM%E5yNQ`~!2zMVc?-#zS?3fcf26RnQkRxRf%3j!?Yh@EBa`KX z;)+YMB$CbbnX-q93SYcf9+q+vnCUGCE~dh(K9+;3&H*uH3Ul6;$8|peEM9Wb7%F{# zp1k;IAbrvPE~m#_0_F^tO*tjB|DtSej3M1NIlGqr9~&bVZgT+TWpau7Ah2?_T#?j` z31~}{kLaAh?t60A2NMCe-^f?3L+Hfy%GdmhC?QV1?nNhZ>u!ZdGvvPC{)u`^-w}^Y zzVRH(@fb7cb&rlC>6FC;k24b}tAZ1(-NV4YmBG3_#&B6o^i1@2c;2pR0e0Cvze!jM zL`G3hJAylwd6wHdTpP|ttB2E9*$yMJSa_H>)A^{2z2a?Ft2x7Iv03$*MoYHKZk8y> zAct$&6kDD(+h#N^SYbCCO`M9BLof$6ZZan#18ZQ06&AYdVS|Zu*T6;VHd-~i(`LBQ zHRQka^NbF?$!xWlO#>lDJ{w~+lCg@Li~?9Wk*NPZmJyC0bB^-)KTW44$86HuT+RX6 zXH~`lo$;MvA&;EooE@2TUrFkE zy86A$fMp=t7p7S=Y<4?Mhu&&-=Gp97dW+R*wr3hMeu~L_HzcL~Ot8V2OvBExpand all + + Skip file checking and start seeding immediately + + authentication @@ -3710,6 +3714,101 @@ Zmiany: Proszę podać przynajmniej jeden adres URL. + + downloadThread + + I/O Error + Błąd We/Wy + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Nieznany błąd + + downloading @@ -4816,23 +4915,23 @@ Jednak tamte wtyczki były wyłączone. subDownloadThread Host is unreachable - Host jest niedostępny + Host jest niedostępny File was not found (404) - Nie znaleziono pliku (404) + Nie znaleziono pliku (404) Connection was denied - Połączenie odrzucone + Połączenie odrzucone Url is invalid - Błędny URL + Błędny URL I/O Error - Błąd We/Wy + Błąd We/Wy Connection forbidden (403) @@ -4848,23 +4947,23 @@ Jednak tamte wtyczki były wyłączone. Connection failure - Brak połączenia + Brak połączenia Connection was timed out - Upłynął czas połączenia + Upłynął czas połączenia Incorrect network interface - Niepoprawny interfejs sieci + Niepoprawny interfejs sieci Unknown error - Nieznany błąd + Nieznany błąd Could not resolve proxy - Nie można określić proxy + Nie można określić proxy diff --git a/src/lang/qbittorrent_pt.qm b/src/lang/qbittorrent_pt.qm index 937345335390b891eb987ce81c09a9e4bd4fde0f..b04d210f114c6422dd15b07f9f76bb32c8479358 100644 GIT binary patch delta 1833 zcmXBVdsGxv90&04%+BmEyX@jF>Ix|v9dTVXC<@7xB{e`)&{AHTSQZ98sg$$?#0L=` zHSs6-#C%a0kQKrzMWqRqiKR%I2a*s{hy_!`lcjb&_n-Zo-E-&e@BSWl?iEW%ili+A zeck{t322Z3c|7pPi_96osmy}MEy5QC5jLTsV2LIA7%=q|koz7GbDk~t2VQvSWMI}q z=K~4rfKmInugn6R4}Z@C=4=FNUj|xT2cOqLBR zg=uD}zoK?z9q@B26>3I^y^m0>#wu*07EP%C9$|XZW5D#i!Ux&+fqnVH)*USUu~)e_ zR#KScr#n7IsGc?u=uM^hQlRdBx}-aF(CE=@a!6K!l!{i zWQQ0Y?8hoxDu&mO0{Y{{DL37K^^WLV$~GG}kvn6fxI)h=^IH`6R)x5BUO4b#oS0X- z2{@BS0dk=DjW@-~bDd4kYsRK$1A`ozusM@ilRVAsc4)#IqJgya-0EOWL^AvS`Zey+ zbDG5LTp*`Olepa%_$5d)XBmrX^eN4p>n`A&kqp{MT}zB+i}^Tk`8i6~T7<7DLmMuv zpek)(@QJ6SqzHDd6U~zIg*M|rZ|wrEPgf4!SpcL=Q;ztty|X7N zpNRw<%T_9rSw1??Dz!PRs^fMlzgw=d%S2JG{#(U{Wrx!4tN}dJsX}iRE>VNtPy9_J zw?0Z(MIoNyLK0$i3~M`Y!5YN6S|28yB)*AEy@2AfcBG25a;g zb#8tmn`#Hwb&cEj8MiH(dplNrQ)mT(9;g|e5kTD!>dM?t+1+?l&6>b&3$L@3Wr*_0 zS9_!;V8LHpS2VXLjam#N%zevsgM-_FC!W=f{GOfj$L%!8I99x9qZs2{vCB>sMvFa7 zSN%3y)AfqZRlOIubzj%it^)$5=-M|=VRdNY-W*PD_UxBqD8S2R-=QBmls(k>n0}-` zOSDgtKIEBT!1tm)YV>Y4V7v5FOIYGt6DY&WCX`XJ*9y~GeSP9h;PzJindCI~M-B=Y z5GYm_QQQEVaFDVFSk%p)&P8n7niwh`kSbgu*)&6a&7jDv79D?4vdJnOp)B^i z*6dBExHtD2?!L!XcNJ2Ad9`}RxTckL)Zax^VGc6=VyrAEiTxDYMhwnm;e4GWGk>VXlQ90%`vTurFQx delta 2744 zcmaKuc~nzp8pfZSg_|1)5G)2LZDL0@MR2HqR)M3);(|&Q1S(d9AgLj-SwJlcRnRG; zR{X@Zc3PK;RmaYNpjCU^9i5^ridx0i1**6}6_kqgIB$Ae&p3|#=jPy z9SM0NE!vwbvf-%6J5yN-7ceve@=xW!=`|v+y)CjmU*yA2ApfizIPoXQw`~Msmcyxz zs&Co~p(qh z(tIj(-a(98lS8Z2826a~bS`IhN$NYbN0GXy61dZfiH6xgP!T4scu0MZKw3f>&{2f6 z(Vc*O2-3=*00T=zj`0&&cS>ZN4H;F-0b``d-FYJ0*COMWB9fz?^^=YjO0h5S2yki% zE0g+5+K#jBQY|-_)k`DQBe~IyuK}Y!7TKX?Dw!t8pW7H5Mx*iPHh)+MEL*_Uj(Q20 z-XwC@1(EHZEJ+sPaqb>>HE1upysQ}D%@oPPs>S4na3+_BNWMD2!sU}Q&fJqmnCAkX(b6aq z8%YC1-nuP~sUHF4m5SVXSsIr~pL4H^tSOeJ%_S{M8l`C~eW?3O(n(gTr0-$rq#Jd> zH+$I~dAzdek#woYZs5B%7UiVjj4Z_|hVx^UP9b6YugKElLVyG1vW(=b!1@xIwWtF) zw^3Hie+3-!m%YECiC80Bn6i!RqG0!(LW9a>AJxf#>J=hy)yURYm6M;tiJv=sEnB}W z8rVOOCGq~snzOQP!JB~Fi`g7rqxO;=H5>$Lvqj!1XPfv4$+!F2B|g-9raYC=RP#GT zR&yjp3|Jn8K0)Um4vB zXm0X%~3-JO42RS)PI6v`bfK-?^ax-%JIYn_E&3lzZ} zW?+Ieti&dFJADO-U-wM3qgzCA!RPIO)jC_I@ai-O`a`G{@^s72GJtxDn*{2 zEb>a1$e+&$?{b%c&?kbuHI9z20%2y^-|5t?5#|h`)5h(jQ1XNnx_gmDsS>;+g*I6u zV7Mi+wo7DNPqt3w@6pw*>>1V!^nXJcc#LE_9>*G05t6fwOyxRR(t3{NyJ~`ZDr*a9 z%}rNjUG2v}SE;hGSqb0Re4#?!rcP6be8E>sP6B4H0>UpCSJ~8XXXJ94zm`w z5J^Wn^K=j3l3A3yMi}CfF`dHhe#A1}r*Vtf5%;lzTE)w0v@NUID{3v5$)f1Klx3>5 zh6I&yMQ<{}P}Q8}R{CN2t7^Wm5!l*SwJ4E9xwlvK(bbc{2%BoFiw*d`PF4M5IuO#T zI{dF8fI35U+T=-Q^i`eHl4Vz?tIm7Su4=T1e9&9fy@0-dGnQRa7Ynmp-@i=Oz3FuGL$~kj_4?dj@v{dwyV>JVGSh1+38{TGG(TJbR>SFE+T{Sh5AU)X(jwreQ$B zD7OdknZR2ENSa5ztIK<=sje)!t-rWpo`?Z`8Y;^!bs zj9pC2J^w3sVU|^wqc<7!Ie!p8Qz$I*w4a^+(N%ul=U`kzELLw>P7 zM`yO%{xI2?--MY#p>rsx4i>swDTxsU^kktoGw5z631>Y`rinG%jX64#*`~ATt!86^ zUN^&Ho;mB;RPN6RHxNVFlXgw9o`lM#cqVGX@~d2qh5|7F{pkvNn!_vJVASgznmN+s zn(d|>UEqNJ1A?AS@=T6C7)!AnF$l=4j0LG*OR4v(=_E zSao(2O*uO+YpU@%1F&9Gl8ay9h%mhAh)3bC|0X6mfD$`|6eV?(;Aq+M>pR=;{vdn2 zJi?T1wphr0I+Na3Xtqq(8B8|4B{wVkxf+~A7c%X!*wQ>6QRZjl_qRmM> diff --git a/src/lang/qbittorrent_pt.ts b/src/lang/qbittorrent_pt.ts index 1807257d9..9a48bf137 100644 --- a/src/lang/qbittorrent_pt.ts +++ b/src/lang/qbittorrent_pt.ts @@ -3198,6 +3198,10 @@ Log de mudanças: Download in sequential order (slower but good for previewing) Baixar em ordem de sequência (mais lento porém melhor para visualizar) + + Skip file checking and start seeding immediately + + authentication @@ -3622,6 +3626,101 @@ Log de mudanças: Por favor digite uma URL. + + downloadThread + + I/O Error + + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Erro desconhecido + + downloading @@ -4683,19 +4782,19 @@ Portanto os plugins foram desabilitados. subDownloadThread Host is unreachable - O host é inalcançável + O host é inalcançável File was not found (404) - Arquivo não encontrado (404) + Arquivo não encontrado (404) Connection was denied - Conexão foi negada + Conexão foi negada Url is invalid - Url é inválida + Url é inválida Connection forbidden (403) @@ -4711,27 +4810,27 @@ Portanto os plugins foram desabilitados. Connection failure - Conexão falhou + Conexão falhou Connection was timed out - Conexão esgotou o tempo + Conexão esgotou o tempo Incorrect network interface - Relação da rede incorreta + Relação da rede incorreta Unknown error - Erro desconhecido + Erro desconhecido Could not resolve proxy - Não pude resolver proxy + Não pude resolver proxy I/O Error - Erro de entrada e saída + Erro de entrada e saída diff --git a/src/lang/qbittorrent_pt_BR.qm b/src/lang/qbittorrent_pt_BR.qm index 937345335390b891eb987ce81c09a9e4bd4fde0f..b04d210f114c6422dd15b07f9f76bb32c8479358 100644 GIT binary patch delta 1833 zcmXBVdsGxv90&04%+BmEyX@jF>Ix|v9dTVXC<@7xB{e`)&{AHTSQZ98sg$$?#0L=` zHSs6-#C%a0kQKrzMWqRqiKR%I2a*s{hy_!`lcjb&_n-Zo-E-&e@BSWl?iEW%ili+A zeck{t322Z3c|7pPi_96osmy}MEy5QC5jLTsV2LIA7%=q|koz7GbDk~t2VQvSWMI}q z=K~4rfKmInugn6R4}Z@C=4=FNUj|xT2cOqLBR zg=uD}zoK?z9q@B26>3I^y^m0>#wu*07EP%C9$|XZW5D#i!Ux&+fqnVH)*USUu~)e_ zR#KScr#n7IsGc?u=uM^hQlRdBx}-aF(CE=@a!6K!l!{i zWQQ0Y?8hoxDu&mO0{Y{{DL37K^^WLV$~GG}kvn6fxI)h=^IH`6R)x5BUO4b#oS0X- z2{@BS0dk=DjW@-~bDd4kYsRK$1A`ozusM@ilRVAsc4)#IqJgya-0EOWL^AvS`Zey+ zbDG5LTp*`Olepa%_$5d)XBmrX^eN4p>n`A&kqp{MT}zB+i}^Tk`8i6~T7<7DLmMuv zpek)(@QJ6SqzHDd6U~zIg*M|rZ|wrEPgf4!SpcL=Q;ztty|X7N zpNRw<%T_9rSw1??Dz!PRs^fMlzgw=d%S2JG{#(U{Wrx!4tN}dJsX}iRE>VNtPy9_J zw?0Z(MIoNyLK0$i3~M`Y!5YN6S|28yB)*AEy@2AfcBG25a;g zb#8tmn`#Hwb&cEj8MiH(dplNrQ)mT(9;g|e5kTD!>dM?t+1+?l&6>b&3$L@3Wr*_0 zS9_!;V8LHpS2VXLjam#N%zevsgM-_FC!W=f{GOfj$L%!8I99x9qZs2{vCB>sMvFa7 zSN%3y)AfqZRlOIubzj%it^)$5=-M|=VRdNY-W*PD_UxBqD8S2R-=QBmls(k>n0}-` zOSDgtKIEBT!1tm)YV>Y4V7v5FOIYGt6DY&WCX`XJ*9y~GeSP9h;PzJindCI~M-B=Y z5GYm_QQQEVaFDVFSk%p)&P8n7niwh`kSbgu*)&6a&7jDv79D?4vdJnOp)B^i z*6dBExHtD2?!L!XcNJ2Ad9`}RxTckL)Zax^VGc6=VyrAEiTxDYMhwnm;e4GWGk>VXlQ90%`vTurFQx delta 2744 zcmaKuc~nzp8pfZSg_|1)5G)2LZDL0@MR2HqR)M3);(|&Q1S(d9AgLj-SwJlcRnRG; zR{X@Zc3PK;RmaYNpjCU^9i5^ridx0i1**6}6_kqgIB$Ae&p3|#=jPy z9SM0NE!vwbvf-%6J5yN-7ceve@=xW!=`|v+y)CjmU*yA2ApfizIPoXQw`~Msmcyxz zs&Co~p(qh z(tIj(-a(98lS8Z2826a~bS`IhN$NYbN0GXy61dZfiH6xgP!T4scu0MZKw3f>&{2f6 z(Vc*O2-3=*00T=zj`0&&cS>ZN4H;F-0b``d-FYJ0*COMWB9fz?^^=YjO0h5S2yki% zE0g+5+K#jBQY|-_)k`DQBe~IyuK}Y!7TKX?Dw!t8pW7H5Mx*iPHh)+MEL*_Uj(Q20 z-XwC@1(EHZEJ+sPaqb>>HE1upysQ}D%@oPPs>S4na3+_BNWMD2!sU}Q&fJqmnCAkX(b6aq z8%YC1-nuP~sUHF4m5SVXSsIr~pL4H^tSOeJ%_S{M8l`C~eW?3O(n(gTr0-$rq#Jd> zH+$I~dAzdek#woYZs5B%7UiVjj4Z_|hVx^UP9b6YugKElLVyG1vW(=b!1@xIwWtF) zw^3Hie+3-!m%YECiC80Bn6i!RqG0!(LW9a>AJxf#>J=hy)yURYm6M;tiJv=sEnB}W z8rVOOCGq~snzOQP!JB~Fi`g7rqxO;=H5>$Lvqj!1XPfv4$+!F2B|g-9raYC=RP#GT zR&yjp3|Jn8K0)Um4vB zXm0X%~3-JO42RS)PI6v`bfK-?^ax-%JIYn_E&3lzZ} zW?+Ieti&dFJADO-U-wM3qgzCA!RPIO)jC_I@ai-O`a`G{@^s72GJtxDn*{2 zEb>a1$e+&$?{b%c&?kbuHI9z20%2y^-|5t?5#|h`)5h(jQ1XNnx_gmDsS>;+g*I6u zV7Mi+wo7DNPqt3w@6pw*>>1V!^nXJcc#LE_9>*G05t6fwOyxRR(t3{NyJ~`ZDr*a9 z%}rNjUG2v}SE;hGSqb0Re4#?!rcP6be8E>sP6B4H0>UpCSJ~8XXXJ94zm`w z5J^Wn^K=j3l3A3yMi}CfF`dHhe#A1}r*Vtf5%;lzTE)w0v@NUID{3v5$)f1Klx3>5 zh6I&yMQ<{}P}Q8}R{CN2t7^Wm5!l*SwJ4E9xwlvK(bbc{2%BoFiw*d`PF4M5IuO#T zI{dF8fI35U+T=-Q^i`eHl4Vz?tIm7Su4=T1e9&9fy@0-dGnQRa7Ynmp-@i=Oz3FuGL$~kj_4?dj@v{dwyV>JVGSh1+38{TGG(TJbR>SFE+T{Sh5AU)X(jwreQ$B zD7OdknZR2ENSa5ztIK<=sje)!t-rWpo`?Z`8Y;^!bs zj9pC2J^w3sVU|^wqc<7!Ie!p8Qz$I*w4a^+(N%ul=U`kzELLw>P7 zM`yO%{xI2?--MY#p>rsx4i>swDTxsU^kktoGw5z631>Y`rinG%jX64#*`~ATt!86^ zUN^&Ho;mB;RPN6RHxNVFlXgw9o`lM#cqVGX@~d2qh5|7F{pkvNn!_vJVASgznmN+s zn(d|>UEqNJ1A?AS@=T6C7)!AnF$l=4j0LG*OR4v(=_E zSao(2O*uO+YpU@%1F&9Gl8ay9h%mhAh)3bC|0X6mfD$`|6eV?(;Aq+M>pR=;{vdn2 zJi?T1wphr0I+Na3Xtqq(8B8|4B{wVkxf+~A7c%X!*wQ>6QRZjl_qRmM> diff --git a/src/lang/qbittorrent_pt_BR.ts b/src/lang/qbittorrent_pt_BR.ts index 1807257d9..9a48bf137 100644 --- a/src/lang/qbittorrent_pt_BR.ts +++ b/src/lang/qbittorrent_pt_BR.ts @@ -3198,6 +3198,10 @@ Log de mudanças: Download in sequential order (slower but good for previewing) Baixar em ordem de sequência (mais lento porém melhor para visualizar) + + Skip file checking and start seeding immediately + + authentication @@ -3622,6 +3626,101 @@ Log de mudanças: Por favor digite uma URL. + + downloadThread + + I/O Error + + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Erro desconhecido + + downloading @@ -4683,19 +4782,19 @@ Portanto os plugins foram desabilitados. subDownloadThread Host is unreachable - O host é inalcançável + O host é inalcançável File was not found (404) - Arquivo não encontrado (404) + Arquivo não encontrado (404) Connection was denied - Conexão foi negada + Conexão foi negada Url is invalid - Url é inválida + Url é inválida Connection forbidden (403) @@ -4711,27 +4810,27 @@ Portanto os plugins foram desabilitados. Connection failure - Conexão falhou + Conexão falhou Connection was timed out - Conexão esgotou o tempo + Conexão esgotou o tempo Incorrect network interface - Relação da rede incorreta + Relação da rede incorreta Unknown error - Erro desconhecido + Erro desconhecido Could not resolve proxy - Não pude resolver proxy + Não pude resolver proxy I/O Error - Erro de entrada e saída + Erro de entrada e saída diff --git a/src/lang/qbittorrent_ro.qm b/src/lang/qbittorrent_ro.qm index 03db572648946ce7618e8d3512d52aebccabb009..be2db575e89182951d1e89081e76d8738b94ccdb 100644 GIT binary patch delta 1994 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 diff --git a/src/lang/qbittorrent_ro.ts b/src/lang/qbittorrent_ro.ts index 809e7b7e1..53e3fa4d3 100644 --- a/src/lang/qbittorrent_ro.ts +++ b/src/lang/qbittorrent_ro.ts @@ -3027,6 +3027,10 @@ Changelog: Download in sequential order (slower but good for previewing) Descarcă în ordine secvențială (încet dar bine pentru preview) + + Skip file checking and start seeding immediately + + authentication @@ -3451,6 +3455,101 @@ Changelog: Vă rugăm să introduceţi cel puţin un URL. + + downloadThread + + I/O Error + Eroare de intrare/eşire + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Eroare necunoscută + + downloading @@ -4520,19 +4619,19 @@ Numai acele adăugate de dvs. pot fi dezinstalate. subDownloadThread Host is unreachable - Calculatorul nu poate fi accesat + Calculatorul nu poate fi accesat File was not found (404) - Fişierul nu a fost găsit(404) + Fişierul nu a fost găsit(404) Connection was denied - Conectarea a fost interzisă + Conectarea a fost interzisă Url is invalid - Adresa URL nu este validă + Adresa URL nu este validă Connection forbidden (403) @@ -4548,27 +4647,27 @@ Numai acele adăugate de dvs. pot fi dezinstalate. Connection failure - Conectarea eşuată + Conectarea eşuată Connection was timed out - Timpul de conectare expirat + Timpul de conectare expirat Incorrect network interface - Interfaţa de reţea incorectă + Interfaţa de reţea incorectă Unknown error - Eroare necunoscută + Eroare necunoscută Could not resolve proxy - Proxy nu a putut fi rezolvata + Proxy nu a putut fi rezolvata I/O Error - Eroare de intrare/eşire + Eroare de intrare/eşire diff --git a/src/lang/qbittorrent_ru.qm b/src/lang/qbittorrent_ru.qm index 77a04b0e919fc297f14a6b1e9d49692247d9b196..c2197db2fba8b862c23d60361db1f50ab26b7baf 100644 GIT binary patch delta 1998 zcmXBVdsGzH9S895&g?MkEDN#*P$E!FcqXpF2R=|JF(4X1jN#E0P!v+BC^Z(S!4;Jl zidB?cggnHYfEuG{Z8(6SKzyM_QBe^hfun#5#N{Puv`y`gbN|`T+1;5t_xHNfc0hfj zNWJ$ppREAi1#Wx@J}G3t+{0pz(fwqqA@$FyCwt z+72=&mCM8qNFg(Ux<2lmQEq=Si&S|8K8N(J1T@!kyGyu(d%4f@Asv1RT!GmXkEsfgkZ0 zEq=Nh5nm6um%`9%S=Mls_Ilk?b-+Q4b+B5| zS!mOeVw)_t$iBf(31=S|PgF7^b%~v}sr;AjT@4p5N&R|LE zsaZ{`PA{tQXF;mo?>+<`C8}O!-Ue(B2$mb{08_nSHGK=-okj5EjskJ7z8Yw277NGP_0TzS ze=oJ}f|Fu#Jf&;z)6$fM*HbxD~&a9(2TWOt=1 zRbBS>A;4U~ie(4e3Ux#BIiT8-+rNihlzoLeTK2naSao`e6ve1FQfs+vDfht~De0Xc zVC5z$<;iqlQxy3U_+zNFzJ_*o*4zU_l{IzTs#31`0vomTRZbbCrp?D_ zAoOge##etP#=R9?%lQ4r!uQKeFF7IjSzULvf#cP9y6_ zGAVHxT(hriAGsKKd{}mTNEvD#VvUNgW4DEzW=}0r_)Jcl_GcQ~3_1M><+EoUbJDsi zw@q?^NU=0cWMNu|zyZ1Rc`}f+NB);Ht+h2sJ}EGurbRA~qYU(g$+cUl#(vx64u>va z`9ittKNWQMRk_<(16Y-^<639oY8GoG?lET81`9p2*-R^cp>+Z?SxxnNpt0C@g(~)v z+vUm~{inup?FdElv&L)JUnq(})^24GZiX_Q&SlX9O?)m*+uTXqni<^YY;Kp4J9S=+&)s)ZIeFYodb;)jjt<(Hv!?;C zS8Er(^)*f9dF|puRE-BIEX~GUxUz~B+obEe^0f^y!*qn$YOlqu0iL!ow{ZrcVu(eK z^KgA)^+8k~u=7i9!EfAN4=dwZdeoURRy^(_q3%s4*@i1kg*sWHvOTI{akeh1Q_Mu4 zO|00~+553kms0p9RX9gyD%eQpPJ}L7a}YSbOSixC`q%v=nilF44XGjIRE5GIP^!QF;@sx80{^8;)kj^#*;topt#!>MCup^=UuK zYF#=r>kY#5IOa6oUubq^apU7%+OuqW@@R}YezF<-%^jWEL9)aSSO}ttWQZzNc?ck$4Lo^tpAmJ`GG6T{i=SoRQ=WB|I8Si ArT_o{ delta 2822 zcmaKtdt8k99>+iP%x`9zsVNO9QH@?ySg9mkR9h(_DMY7LPHL=KHM6RzMQPo(U55^S zSnIYgxvX2x9#$=>bDd?l;We+B_ssA4&G+*8etyq$=391c zJzLVn`yhaD;51Pd1l&AA91T>@BYp=Av;q_nfd2@#5}MjQo- zoPbg1>C$x|-poINvBWc4U;>5th(ef|`U{X`UZ->u7Xeidfk{Vzn!u$s&cf+6OItjJ ztABDQiAy(s$f5_)j-etijuzQ+geOSc!{Q;^AOmW$#kq@Y zfZ1QNfykY`C_zUm`V^K^+YH#L;pqZ5j@E+!|%a<$A;IJkue%Tk0(M!rsF9~L1E ztr-sJPm3&XkVYoc@2P`DmgPtjXOrf0mrE1BbtI9>q!Y8LnEnpZiB09e`G4@ovMATO zR_PMWKH%B_=}NO{Hy@U+ZJrB6{3u;&8S(PrRYE2~mj1Kr}-!PHnFW)nL)qc>1#!>aX%fuARf zY-#4D3P0h3jyEbi9rqW>#&hzBu~H8I+681iG1E&IbCvt z&SaX>)Eo&Mzp4CU!7jQf$14kl%mg|ORet$ePstK_qc`{Tf&VtB%5v#H zcY{^sW$S^bwW``%DjII0>Q-?y4YQNTC*FLowV!aHmbX~DscLkVJ$lf;nqF}y8+)ab z<%rExUdVuR}ay9k;v#d^}XTDHe%Uai|0NPB-$XRM^_pA@MJmS@vrYP))#auZOxNWCbUG<+1M zUR!_K{0LOfhDBY3Kx9dLZ)28ug2>X!qTG-e@~p)l^|U z=LR|P@kXAh@zhiqt@rF8%UMQQR|JvBm1lXW##4B)jn`>Hgp0GdQ|AsM@=injs3 z_p)ib9!|I0Qky4H$@DCpOVYhG?pfV=4v zA%{X1VnNS*$my+#Fd7WHv>d(Bpq-Mc&oE`_6trxcZJIpPm}kf^rlyaZnx#ukmq=;Z zm$^__Ulz!MSS%a%PGD~~lGZ{fMFl|-PL`LNtxeY%^t$v9uEA?QzxVBvhYhs&o9@6>D#lcUenrE86*oDW0_VNM+aL{Rl!=1N%@i=k@6-jT_l zDvzO+(dKn%d0ePnp?!qWl##AA7<05)x@==cu1@=Tmhp=jA4uiJdUX^XWY)VQX@@u+ zzs$|}nq`9)9`J=1z5BcwhC`G-L)W2R{LGS4l8>odAM#fa zi5E;Z2;gzPUHr`&(&cdG|E7ZO!wqT1tSoYy)}YJDGiFWG>J2%%tSPB!Z!6&iC&r|| wC!;eGFb3wanLQmyjeblo^S5yNeA}vZLRN;kQ@tTKHADX%gOw-ABqsU)0S9tdiU0rr diff --git a/src/lang/qbittorrent_ru.ts b/src/lang/qbittorrent_ru.ts index 9155d9db3..f19b02a49 100644 --- a/src/lang/qbittorrent_ru.ts +++ b/src/lang/qbittorrent_ru.ts @@ -3216,6 +3216,10 @@ Changelog: Download in sequential order (slower but good for previewing) Загружать последовательно (медленнее но удобнее для предпросмотра) + + Skip file checking and start seeding immediately + + authentication @@ -3632,6 +3636,101 @@ Changelog: Пожалуста введите минимум один URL. + + downloadThread + + I/O Error + Ошибка ввода/вывода + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Неизвестная ошибка + + downloading @@ -4730,19 +4829,19 @@ However, those plugins were disabled. subDownloadThread Host is unreachable - Хост недоступен + Хост недоступен File was not found (404) - Файл не был найден (404) + Файл не был найден (404) Connection was denied - Подключение было отклонено + Подключение было отклонено Url is invalid - URL некорректен + URL некорректен Connection forbidden (403) @@ -4758,27 +4857,27 @@ However, those plugins were disabled. Connection failure - Соединение не установлено + Соединение не установлено Connection was timed out - Тайм-аут соединения + Тайм-аут соединения Incorrect network interface - Неправильный интерфейс сети + Неправильный интерфейс сети Unknown error - Неизвестная ошибка + Неизвестная ошибка Could not resolve proxy - Не удалось соединиться с Прокси + Не удалось соединиться с Прокси I/O Error - Ошибка ввода/вывода + Ошибка ввода/вывода diff --git a/src/lang/qbittorrent_sk.qm b/src/lang/qbittorrent_sk.qm index dd9cda5224aa5176b41fadfcab4fb2b8ed5dfccf..0bfb9e5124590f7fecd9a220936b405eb9ae92d7 100644 GIT binary patch delta 1995 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 Download in sequential order (slower but good for previewing) Sťahovať v postupnom poradí (pomalšie, ale lepšie pre náhľady) + + Skip file checking and start seeding immediately + + authentication @@ -3562,6 +3566,101 @@ Záznam zmien: Prosím, napíšte aspoň jedno URL. + + downloadThread + + I/O Error + V/V Chyba + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Neznáma chyba + + downloading @@ -4699,19 +4798,19 @@ Tieto moduly však boli vypnuté. subDownloadThread Host is unreachable - Hostiteľ je nedostupný + Hostiteľ je nedostupný File was not found (404) - Súbor nebol nájdený (404) + Súbor nebol nájdený (404) Connection was denied - Spojenie bolo odmietnuté + Spojenie bolo odmietnuté Url is invalid - URL je neplatné + URL je neplatné Connection forbidden (403) @@ -4727,27 +4826,27 @@ Tieto moduly však boli vypnuté. Connection failure - Chyba spojenia + Chyba spojenia Connection was timed out - Časový limit spojenia vypršal + Časový limit spojenia vypršal Incorrect network interface - Nesprávne sieťové rozhranie + Nesprávne sieťové rozhranie Unknown error - Neznáma chyba + Neznáma chyba Could not resolve proxy - Nebolo možné preložiť adresu proxy + Nebolo možné preložiť adresu proxy I/O Error - V/V Chyba + V/V Chyba diff --git a/src/lang/qbittorrent_sv.qm b/src/lang/qbittorrent_sv.qm index fe830dd0fbf03028c2d096acc316d11ebee4c15a..4aabb973a63088aea41f7d76296da9973c2523e5 100644 GIT binary patch delta 1989 zcmXBVc~n%_9S895d-EQTH^YF8;uNBcddjK{iWOoMNAaLw1hr+4BZmr!CI(Jo5fcO# zP_h6CUNi=S%?3fCG=P9&Nkst_!MG6`VpNc!3l+; z)OFgy6WH*~<-i}F`9~l=5Ad(zCQk#Bo_(JWY%By?z6O%d1DDp9^q7Rcl5w-xH;c^_ zJUvcMgB-C4I6c9=`V!Y}XR(6M3LE6lWZ>Fd?wwz_W5e7>7a&*u3|x$XTtjhN&cUIX zGWxy=>aNW|yTV$9#l{zUT7b|pgbz}T7xS?ye*(C1hPjEWJWg2o>)cmT^3~_{dX6opUxI(qO~^_wEA`cJz19c(Kmq?Y~s>dGq7s2XbGbJol6rfo&LaMjTrHG956i)lhSFk#ns&CDPoq6I`iF5 z?t>a}Uy6nLt``fcih!q)O@8D-rRmme+)hEwy{g$b(hOWFXL^U#>J!a}hSNY_B(pjg zg#ni7U=fB{qeI|=ZYeRGlKOj&l(bWgJV91SpVuq{zA>`b6(6-xs+m^-*gaUeVsx#R zI=7w!PA=z;y0Q)>Sp4=a_CLieHu(A2amo?maJJ-I3jXMTw8{U+!?W(45%UFOKY-o;f@Q9|fFi_3Czk+3|Cbi6AWm`XR zy_1!zabi~(`xi}93Cq!X&uMj43{SGDI^T0gx|Hd$Yk+%86%QNL;aW25&<1Wbr zd8GrdyVObbqc>bC$jhxHPE+ODOHK5Vdxoi_){GXKLsY zV(;r0xc93QQZKOO9q!3a?&t@sSMP0j7^|HgGz84|*ZN+die1>p^v=QJ%>)+iyeVvW zxwdv04Vv#t?m=Je*B4FzKRnVl?Vwe|S=#2NW59!PZSN2zWk zmBD7Zc>7<<*3Fnft85!|zOzRG_cYz2=Ys$byKeQ|qjWkK>ef_j1#We**Im5D_H=g0 zCChb8*O~Abc(hK}ZQVkTvap#`%wpYU7B$7kZ_w%Yam7GEHn${#d%2Q3)a#V=8a=VO zl9f++Sv)<1$*$4b9!amrGzEh(%vKxC(<|nz zK2QA;IBwQ|GI#}uIHIq1`V&>)Q+>m5B4GYO-+pl^;2NyIk?uzG8LICy zA-f@PC+hS+AE5Qawam+qtF_6_d+*XXk2kWv7|e#2=bRg=sew9w=QB&F-ly}~xWOzw zE?_gKT7-9*b!xolzg6G^Sx;(rUM)z)y%TKGU^n#gB6`NeqaDA#@9lMwAFFL1w oRId@1yEvz2WTkJ*NJ)*^@@85}Dm(Vnx52X`ZAo*oBp4n35A=wLf&c&j delta 2817 zcmaKu2~-nz9>>3#Ob8R0V6cj!NVIaQQBm=hss-_)c2_`AaDxdDiHYU_T@O@5tWT}@ z$78*otw*(ZtfC;bDBj14>jBoSCrT7N@YYs~?hofZci*n<%lpq~GH>Sp`~AMZW9H{Y z{L6fP$tTVC0T=+Bo&zX)1K0W!zW@%Ep^$SY;bv=sbyIM2U~O%D$fY7FZW1Te|WnCF7992Q63!-d|A4iiVQ( z_dQuGuk)^`m)#2a8<5>wR{PyZplTjl#{27oxPX`npqGp5vqJ|&jpri5T2U3axQOGS zz>9HQ^wWoc|06EJLYwt0kQmd5%LtAI9&G0_Jt$+9zes%M&dt$BP(6rT?v_Qsskcm2 z=(zo7SzpDt(Qo_W9MP~=tv6pKs}%EC6(*?&b)p4GoYf7&r%)$%2x2RH(Vtd`t!N5 z+kneES-qPswEPjjrkDqI1xUPG&VRdQ0T35Y{GPap|8`qHpmYU`RR(qL#&2uC38-1c zA5f`*X6yJeeGK(ZGJkYx0I;tef82B!C@hm$o5!{*!@0A+GM7^4yZ1Xq9Ha6u&yx7{ zL5WwJvkva9LJzN3OkTPb2-={SYCTQ0H%*b1mjv9*Rbmo_c-C)~Q;l9@|E1gZLAXuEz8J0?2n5xX!Li*j#WA&;a!KloaQwV4LSO*WE!7Y>< zUYUU8d&-@yXshYxm4D|Lu-Bw4Or*eFc4g@-N@>q`%IiM2fze9k?KgYr>0)Jd0(H9Q zG-XZZ=hXQ!mgC{yda!%@XI7e5+3o`ZEI^FjeZbaXz~T&vmBs9s#~@h(6FnmY-hKZZ z>X^q}*l*p*{~+p<%@o~076)k}OHBxt(y1nR~JzUj{?_U%H*!U+_Nnr-szm^DHe ze9Q-EBNs+~Pu1A!Ct-9|K2We+NHnWx{O%Q!zPbqXm?v@18HwlY60e6#e4Z{$mfZw8 z-WQy;ku=o&gef^YXc&JX%;-b2$g4=0^^RnESSRH6CRtW>7j{&gCW(iNJ)0*8b$lg| zHeceND2eyH*jh2r``Ip4)39owQ>ZHV1SxrfW0hh!ckwb4)k&PIj7?PggiKZyWzapY zSE}Nob-=U1s>*6|Kfqg6y*L^;zggmwO>Db5oGX6BTJZk=E08-<#}d6VHR&G5M?D3e7kHdWOaq>-W-c!s z_o$9FX%r+&W_=s^XaYU|6t|f6jrB}Or~QiqnXyp{w{HzAZxl1+%v@2apv+fQh-x{- zvm#v7tXTjo`9*9QPnD5VA+{ZJoyNy{F<>zb`@iH%+_q5+uY3z^t`Va1FwuYs(j!iH+v*WO@( zjTqz~D_MGp47y^Y>keY-e_3nxKh_+kiAICg>U4b6pk%KT8@}5osUap8Md8FG`e|v| zV8s+n{Sb-IK&#Vi&|0hxt<7k+nlp^rNjB@0seiC_FGNu&W*Aw&OD(d}=-fd+Jvpu= zDZ8Q*t&k4}nnjt+#`hvM*hsNDEe36H*G^qS{=h;o;z%Ofd(j(`&~UDOpOyw`8j|8d zGFh~_gTCtCXQXko)$Y)m>{_RV@;W|EpKSiWlrzn^Zhd~I26|9XMhZ$#*>;erR5~^o zswPT#Nr#>F>*5#CVz6br)n=pYYb{1crq!0NHCY@+TZ(@Ce=M@QM?Y)(JEqzomf|s^ j7a6p$s{KuMAH-6}+RP0>m@FB3v+3gnW!QT_*3#|Y4m@e@ diff --git a/src/lang/qbittorrent_sv.ts b/src/lang/qbittorrent_sv.ts index 1c8821c4a..98a57a400 100644 --- a/src/lang/qbittorrent_sv.ts +++ b/src/lang/qbittorrent_sv.ts @@ -1870,6 +1870,10 @@ p, li { white-space: pre-wrap; } Download in sequential order (slower but good for previewing) Hämta i sekventiell ordning (långsammare men bra för förhandsvisning) + + Skip file checking and start seeding immediately + + authentication @@ -2210,6 +2214,101 @@ p, li { white-space: pre-wrap; } Ange åtminstone en url. + + downloadThread + + I/O Error + In/Ut-fel + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Okänt fel + + downloading @@ -2952,43 +3051,43 @@ Dock har dessa insticksmoduler blivit inaktiverade. subDownloadThread Host is unreachable - Värden är inte nåbar + Värden är inte nåbar File was not found (404) - Filen kunde inte hittas (404) + Filen kunde inte hittas (404) Connection was denied - Anslutningen nekades + Anslutningen nekades Url is invalid - Url:en är ogiltig + Url:en är ogiltig Connection failure - Anslutningsfel + Anslutningsfel Connection was timed out - Tidsgränsen för anslutningen överstegs + Tidsgränsen för anslutningen överstegs Incorrect network interface - Felaktigt nätverksgränssnitt + Felaktigt nätverksgränssnitt Unknown error - Okänt fel + Okänt fel Could not resolve proxy - Kunde inte slå upp proxy + Kunde inte slå upp proxy I/O Error - In/Ut-fel + In/Ut-fel diff --git a/src/lang/qbittorrent_tr.qm b/src/lang/qbittorrent_tr.qm index 78537a0d1bcc704d3aab006e6804426c10effd9b..6c90048013d3cc3e0eec14a7b66863112f2fd143 100644 GIT binary patch delta 1816 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 z?ff?Mk8Download in sequential order (slower but good for previewing) Doğru düzende indir (yavaş ama önizleme için iyi) + + Skip file checking and start seeding immediately + + authentication @@ -3609,6 +3613,101 @@ Changelog: Lütfen en az bir adres girin. + + downloadThread + + I/O Error + + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Bilinmeyen hata + + downloading @@ -4683,19 +4782,19 @@ Bununla birlikte, o eklentiler devre dışı. subDownloadThread Host is unreachable - Sunucuya erişilemiyor + Sunucuya erişilemiyor File was not found (404) - Dosya bulunamadı (404) + Dosya bulunamadı (404) Connection was denied - Bağlantı reddedildi + Bağlantı reddedildi Url is invalid - Adres geçersiz + Adres geçersiz Connection forbidden (403) @@ -4711,27 +4810,27 @@ Bununla birlikte, o eklentiler devre dışı. Connection failure - Bağlantı hatası + Bağlantı hatası Connection was timed out - Bağlantı zaman aşımına uğradı + Bağlantı zaman aşımına uğradı Incorrect network interface - Geçersiz ağ arayüzü + Geçersiz ağ arayüzü Unknown error - Bilinmeyen hata + Bilinmeyen hata Could not resolve proxy - Vekil çözümlenemedi + Vekil çözümlenemedi I/O Error - Girdi/Çıktı Hatası + Girdi/Çıktı Hatası diff --git a/src/lang/qbittorrent_uk.qm b/src/lang/qbittorrent_uk.qm index 983305b60fe3ace07e65ee5fb95231f7724ef9a3..6d0b825534a4a48de48683ed0ec3a4c2c2cf541a 100644 GIT binary patch delta 1560 zcmXBUc}x^n90&04%+Bnv$AC~}VGC?P+(oT`P(cNutwC5@peiD4SrSqZu!sjN6w4(@ z5yQ1SKn}r*TDd%_7!N#BL~TK%4c4eJ)uI7oZE6EnsIrmILlBfL8&%-eX;4U@EL;jq^1i@)l6w0IYiFhrpV5##*a1 zim!o$N?_w->tPLZ!+P1kytV$JbAACnViCRUBU!>pHrtXpjA3CB_@27!nZBXQY3FLH=0%nOO>~;sR@Cd>lmC}17Sh3?dP{xo^CXlHkA{(Vmb3<%p z1JE3Rb?MsxXEoL}zM{S)1+32gC`_I8KubDIuk-20^^n7?x3eYC zb@Va;wcTu}pBrFtVMB-J0qw)ADU+@;`v*zAmd#bsMwJ^S_ZZodq)-|`3R~V;MPn!= z12PRm$fzvTK2?^GMc2?iktK|u0*XH)b2uNx1zD}bX<(->F>`^;J<`A#=KjpZhj{~A zvpLhMN1#pMiiGn(wwl|%|338qSH89v*rg|rId5&T3)j)P3s_J_?WW%3I(kEZEn2dG z*K1Qlx!w;B0!@|Nd8I9&ddUsu%>go4vXKv9x7(6~yn#7NMtIGVLO#Ve4DcV~GtbZs zEI0WrbzOiH!{=@KiGKQQzQ~#gSjYL&;uPTh0lv(M29&j$xXSf@>GS#4olQWapJek% zzE@U3k6H_V;v!vU=_Scji)7PzVv+0S{wCK((ctQ~O13o0=bxpU%^H>mK4}L$yX4C+ z-34~cAOrFMHa~()%0m~vkpGoMW1VqVKAl`krcsDlq6Uj3+Wsb3l_gr;2TdNr;~Q7zEG&Vv71IxE7Z$qJ%ww8hL8!`Dt}>L z-BX}JF6@7q4lFJfj=IrRmyZa?SOTP{2z_SSkH%zSpqK{cX)FBx?@9Xpbz#hO24Fgb zH=QGZ!^bwRPSpUL7eHp&1hDl+5@};#u9E^Ay+@T^A#b<_q@9(l*(}*ste9K5ftK)! zjMx~AcNE6U8sNQiiui|g3X*~q<_slJrwqbK0gE*8{h(erUjEL9u;5-*B9>TFtAg*bRM7?2yp zUv-5*jH7tRfgboBk&>-(;`F!If!*$8Kpo9w6H)ZBPq6LlNu+=4AltJ+v{@NfNTjG| z_r?(mrNoc4iQ$gV?8d9R=s>@*n_6K8eD~7Izf<;2i+`^tu06qaw#l1vGcz_NCC8*~ ZO-V{7rs#QO%3|L)+mh$sH`wFE{}06?-9rEX delta 2319 zcmaKseNa@_8OEQzd+uI#mn8#{PsLp*uuCFH1SA{21mr^-wWcg0ikTG_SY38IunYAA z7C|&7fZzcGDxfqNG#cBGnu%Z0)Q>cSwrQ*FM3Wk79BixYv}3JSJAL7HoKD;D$JyWR zxo6JvKF|B!9lI{v_)6%U5pfehHn901Af^Hx6@ZijMC<`f4Ya?iE7_@Hg$$;axGPk@hv-b>- zRv2HH3-N#mG`nSX9+TO3SLT6r5Dz{AHZFmBa~V)q%o`MDy*Xqnu-A^b?;>}+ zh0Zh}Z|gl^>yP+lMT#Pui^9^#$}1>p>j8RiV}*Sq5bBE+yB`uCpg6x3*f+qd1-<{P zC>iMn_JpG3@n-U{iuVigVOt;KwCMuS_zC`anAG#{x(UVGJL`d^ zA1aQ2dj^nkU#9(%%)Txjr__5B6?fh)1a@r@d=ndiS)U6*rV^mDM97>s8*q;anHQe} z4!k9lIO&#ey)QE+OsF$isHOp-UP}RPdnj`-LTI*TQfq9&_K|jKLcH+igY!V#Oqtnl z2qy~s09TH1wVWEpf1)(|2P;?Cl1A8V0@yX6S5;~Kxr;={aSY-r?l5^p6QCVs|- zj${De`;-TYF<}*dVn^l-Q~GJ_jD~8`K49lJL<8&J;}&tg&~%2ki^kYj#Uf6jXGO|f z8YiEu^Fh8uGMfD*Pf#Ph9!-*G zUL_6XucW#W3Zy$;YWvxnK+^)LTS;X%Dy5!`JCsPGbYR!->G^SfR0=i+N~5J~fZa2s z(@oTcC_m|U|M)STZj^47oB$L<(nS428ht@}GIALR$npsf=>Wceo8On_3;ZFE^D(L$ zeNHyh!1dQ~i%-mRZP(PQo}U6$>t*gV$lPD7_D?j^UDwsIZR^O#A>Qv}T=bfH(S=~( z*;DG3Uv&f4GW|d- z*i|6yvCJy9%)W4LQO86M{#;|aL_Rn4X^O9lK!sAXdhko2WRa%wpP@i&0q<9*n5~+3 zGadmUcA4KP)co+$VW4fB=6KyLN~>4%!SMlLuu5~Qqky_)mDzuh>oj^r9goxKBht0A zX3^Q6wOUgI!h(a&uleui8%fZ5nlR>lY{3mIE z%BcIbz7Z%4()}iYhP>s8%z*^mqit6xfX{fV?=nRczv?^J-`8*Soi+52p6Yipl|pmW z^FUpUFqFX430uawO_v|E@0p1XdMRE%`pn<*N`ZtyN?>Sw^kdy$D@H}nu|)427Ql*F z5=&zlY#vKx$t;~^z`$~7rNGDv=~+5Upq0*wd`Jx{S^+sOr_)yEw!55$3aj1Wsj*44 z?O*FzyU&6+tX-xrx6MK50QFnt)blJwA;$3(McjNFS2~{uz+Pw z)ja7WpT1=g$;JPA;#Weo-jM$ia@(tIJ&o2J7De}(S?biy$&)uvUF(>xFAG>W)tc$0xDu%OFH-womTx4bw5b@A*?i*UGc)ZK z(bMdy{e|>tW?4^_XD)J=VRWVr kkk9{9AuMDownload in sequential order (slower but good for previewing) + + Skip file checking and start seeding immediately + + authentication @@ -3571,6 +3575,101 @@ Changelog: Буд-ласка, введіть хоча б один URL. + + downloadThread + + I/O Error + + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + Невідома помилка + + downloading @@ -4647,19 +4746,19 @@ However, those plugins were disabled. subDownloadThread Host is unreachable - Хост недоступний + Хост недоступний File was not found (404) - Файл не знайдено (404) + Файл не знайдено (404) Connection was denied - Відмовлено у з'єднанні + Відмовлено у з'єднанні Url is invalid - Неправильний URL + Неправильний URL Connection forbidden (403) @@ -4675,27 +4774,19 @@ However, those plugins were disabled. Connection failure - Відмовлено у з'єднанні + Відмовлено у з'єднанні Connection was timed out - Вичерпано час на з'єднання + Вичерпано час на з'єднання Incorrect network interface - Неправильний мережевий інтерфейс + Неправильний мережевий інтерфейс Unknown error - Невідома помилка - - - Could not resolve proxy - - - - I/O Error - + Невідома помилка diff --git a/src/lang/qbittorrent_zh.qm b/src/lang/qbittorrent_zh.qm index 0e44d2cf0af0c6b9719ad8e9f879fe8e250fcfa3..925f3dd3f053cb8a6df12cef87a5cf2a4dd68460 100644 GIT binary patch delta 1970 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 K(B-plNd5(luq<`} diff --git a/src/lang/qbittorrent_zh.ts b/src/lang/qbittorrent_zh.ts index 561e00c7f..00e74001c 100644 --- a/src/lang/qbittorrent_zh.ts +++ b/src/lang/qbittorrent_zh.ts @@ -3379,6 +3379,10 @@ previewing) Download in sequential order (slower but good for previewing) 按顺序下载(速度有所减慢但利于预览) + + Skip file checking and start seeding immediately + + authentication @@ -3804,6 +3808,101 @@ enabled) 请至少输入一个URL. + + downloadThread + + I/O Error + 输入/输出错误 + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + 未知错误 + + downloading @@ -4973,19 +5072,19 @@ network. subDownloadThread Host is unreachable - 无法连接到主机 + 无法连接到主机 File was not found (404) - 文件未找到(404) + 文件未找到(404) Connection was denied - 连接被拒绝 + 连接被拒绝 Url is invalid - 网址无效 + 网址无效 Connection forbidden (403) @@ -5001,27 +5100,27 @@ network. Connection failure - 连接失败 + 连接失败 Connection was timed out - 连接超时 + 连接超时 Incorrect network interface - 不正确的网络关联 + 不正确的网络关联 Unknown error - 未知错误 + 未知错误 Could not resolve proxy - 无法联系到代理服务器 + 无法联系到代理服务器 I/O Error - 输入/输出错误 + 输入/输出错误 diff --git a/src/lang/qbittorrent_zh_TW.qm b/src/lang/qbittorrent_zh_TW.qm index 0ef8e0d802cbef95c59ca4478b328f6c991ac835..14e2160dde88465197035f08917bba628438a84d 100644 GIT binary patch delta 2042 zcmXZddsGzH9S895&d%&OyDZ2mAVk<;1Ox>l6fhFmqX@nNf)79rV5k^WRI~(C1bk4k z@>IAyL>>yt`wapodWi7>+MH5PW3iQD5(u`{|CGP=y zjX==XG{OrYl)SVM*#1^;AUqRTVk5hu4~TsGe*_Sf2Na9~yYB)Q*B1`!6>WvH?uuq+ ztI%6dLfGg<_czN{4a;_X%XTUp*X3D2s1bnbSlPz2vRzTKy;TtE=YXy z=Lo5nfbLB!nG3VY*^aQh5}-2>;rmko`}YxE`fu_so8|0Wa@B~)`I&B4AhNL-2$`16 zTO-?b8j=4^qx_ngmoiv=We*0H4FVNUSiaK9ej4MqKLR{<3k^pM|+w ztAW};Hlp-d`DevPBTIk}re)VZl{Mxn&S$&9p-za`Q`3Nu@sxuk+m5 zSOYZh^XH6>`P4Yun1kTPT?k=2g_y|8K}zpLnpXEfxhBdVSREzXKCCnhZvukjWwV=< z0nv0F^b6T@waSQ$EFkucGNQ}|sMIN=k|?Yt)5@sne!A{qTGa;o6y*io=M>CCW$D{y zJ^5T&IdhiQdrVmsLo3#8&5~7qT!W7Fs@zu&@w);j(;{C!GIRn+J76TuqeV@C{*iDZ@hj@jS>aS+3>Df_$UME5dTW=EwTSw*=poCW z=k1c~B~+Zd2(z+yR6c*Hrk2f884@Y`=3lD(Z;t|(PqQj1j4Pkd{vjC^ z11w$bWPeN4y*vq=bCT^)iIzJz(<>9A%@i$FbuJrJd)qWF7LzSAfTN4VWRG|{M+7mY zkw$JYG7F8<+V90;B_&tkDVF%n01L;&%QOE0%nQVtqG$Bflz8>kemcQM#SS|f{9}8u zlVd>cZm}mi257Tl=^88PsyG>W12ECBI*ne@&j#sticM((xt0*-YGP2#v1Ai>=bt21 z$#1Agow5z-ve%zVHVH2&lO)MG?*L7@h>e)IpQ@HN4O#*3{7u@?Og(2^CG8q71~OMj z(FfH)!xkwfo0e{Qifqm|velll4b8H>7Sd70ceFuINXat+v=PUp<5}%=Aa_XVAEpAP zk0qlorIHdVwU2)VXug$hw$ic2a<%Wt}Q~{?l%X#8!mgqQQdjJ8K~=3_odKFZANu}Uo~*updOi| zgzT26Ckr-Gt#z_J_H4@3o69#aTQf(Oi-$Ce7t>p<>6&Hs&j3rM#%q-a`AV~4c?E6U zU7F2xRH^!p*&#DWuH*nKF*{~Hq8W;KL5I#3&2OXk0X?^v?R+=Rc$WpucXBQ@*%np+ z>=R@YkH}t1m2K6VL?+OTd9AE!e!Suy6U?_tDOypWN;kjDqRs8NDm6mAT%z zQG2j-Dd1nBO)pNOM(fsQO4oohpJ^*6eh2t8YFkV`rSwzTthtr__u4<|Gk~N!+CS-N zJ6&#*?TOdUeMV2W^)UxshPri=>6!1SKf4E5o6g-l$+V}1N~In(z3EFUoBxK*>fE?K zA7;D2pm@ci7lhm0Hk&SJqVL!hv%in61HAps{uvleA17~Go4$dbuNRy*vYv>goM{{z jy}!!LG%oSj;e&~>aXa??YHw^@PgF&yOV6PP$N2vN#=w6= delta 2633 zcmaKtc~n&A8OEQvGsAFaxWi%q#f8DBEGml&qC}_yf(xj~CJGi|z>#rARz(He2#Bb_ zhk^p`$PNMmF2^*+V49@1rz$ZqXkAmZQIpg*(NyhA?m48VNAt(b@64ThpZhM)`+i@P zN$>BM7QZv>G=SN_{scho4V>6WTnI2$GSOCIT@v6Jw;l*Q4kRA|=4}C7{wT8GFT{@l zZ9Wiug%maeiwAfVSTaERFLE0&+D>F(7Z5#g{TpC;5wLp|u;L<6ex>BHy~MlZv75w; zjg;6AONBgWDzNKIk=4sYwyt5}l5w+l9)tXd9H@ROvd%)}$wwl){{i`l7bH6d@+Jz~ z!v`kal+dwj;5WqsWgYCiWV-$Iq1%D><(P5#Ea0{l0e30X@-WQV{scJG%>-_aUC}WF zZ=(p~ld0aUPC6sHt_)bzFLLMSBHPr6{?8_=hZh?w4N)HY9_O8UfXXD6Ep>Fr#GMNZ zfJrOx=TaM7CwHi86aWNzyg{9SW?Sh09!X4?mXNb>0so+>t!24Fl@+lGhur0_J_3X^J%v z>&ux<&H=`L#o0JT1GP7~u_4!hiA%WmT3mstFFD^yqsTeuINwVy!0C}(&<~FRyJRlf zK(CpwM5On(T&7bv&~}|$r=mU|IsOZWpevNy8s`i6_;LAlyMT(@Opv>Bdv39r@>uTR z*Q{D@J8PNL_wrmIBuV6sY0`ig`W-w)WP!UhDu-$x_evU7Zbwx-EM1;P!Hn*gF7NLK zs%Ei&$pal^(qgMKz|k1#z5&Z_d?KxSxRt8hC#{a9Ix#;^q-1TN*(5 zm3%6TUVInWut%1*>7T&iHd(IX1EBP(Y|F7e%6q0PKfH;Imc?G0xH%7(RdvgN{GB3O zrpk`i6#}y+6B~$0vZGBtK=I#LxWdsRS=Kb6259M%eV|kW)|s*o<3a$hpJX3rjRlIH z%P#3Y0(Kk_*;>My6`owxW%fYfHq2Qb!N@?N{vr({Mb`ANiKh0>F7lMpdcgjwJj?hQ zx%06+w7Q>HH)_-T>ci{%jm73-85nRPV zc9YMS%x7AqqeHO5>KW~v{7#WAWeS_{c|gNjh1~$pKP^Dl#S| z(WEj(W*wEU(VD$fI`S!sGAZS7-~yYdvYnfzIQFBCmeUPI>nM`?y@TQ;$AH4eijEk{ zys1WUels<6!cN64+k1fD3dOyjJIN~^iu=)L0W+1Nf1N*V2V0h>vX=y~8v0ISJ*qie z!!0J5`SJy(=eE*>oLa(y&D=b;@FsgdC3zo_wJMR_<9W-;(@Exg-Y)qWP$1!*i&j%+ zCs>V{TkZsYZjUW6{3##SK$aU;%`d%E25g(a$LN)`hri-uchK~W&lFjx7g>ElWUZIT z?sz^$a+{_yi_dr%KRIscn1dL9?h)C*wVxKT(*)7@-6)eEgUNVhoE$ux#1^vD;gBnBsPa|EoMw_59W~9GSMpUs%anSef zxR+EMaxdLv;fy39V%4CYt)DSNpP(@q(>1BuG^0LKt67_BT%Viu8+tY?b3%kr_tj;q zf}nvDrof#(&V!mm=jilW%|M0&vWdnFLxRR>iu)Aj-_TSK#5hp1Q1=k;)hi|siVX=e zrlo6iX_^cJ6*qoW+)Djh>dp*N&S7t9hnl$+9?#sK-M;H-$miuN2i1qqHN+cJQ>m>Q zgEoDgF*RAEGo))%6XW84eG3b$^on?kum!>qiUrUlx}`X1gEF@dN~^Download in sequential order (slower but good for previewing) 按照順序下載 (較慢但較好預覽) + + Skip file checking and start seeding immediately + + authentication @@ -2305,6 +2309,101 @@ p, li { white-space: pre-wrap; } 請輸入至少一個 URL。 + + downloadThread + + I/O Error + I/O 錯誤 + + + The remote host name was not found (invalid hostname) + + + + The operation was canceled + + + + The remote server closed the connection prematurely, before the entire reply was received and processed + + + + The connection to the remote server timed out + + + + SSL/TLS handshake failed + + + + The remote server refused the connection + + + + The connection to the proxy server was refused + + + + The proxy server closed the connection prematurely + + + + The proxy host name was not found + + + + The connection to the proxy timed out or the proxy did not reply in time to the request sent + + + + The proxy requires authentication in order to honour the request but did not accept any credentials offered + + + + The access to the remote content was denied (401) + + + + The operation requested on the remote content is not permitted + + + + The remote content was not found at the server (404) + + + + The remote server requires authentication to serve the content but the credentials provided were not accepted + + + + The Network Access API cannot honor the request because the protocol is not known + + + + The requested operation is invalid for this protocol + + + + An unknown network-related error was detected + + + + An unknown proxy-related error was detected + + + + An unknown error related to the remote content was detected + + + + A breakdown in protocol was detected + + + + Unknown error + 未知的錯誤 + + downloading @@ -3067,43 +3166,43 @@ However, those plugins were disabled. subDownloadThread Host is unreachable - 無法連線到主機 + 無法連線到主機 File was not found (404) - 找不到檔案 (404) + 找不到檔案 (404) Connection was denied - 連線被拒絕 + 連線被拒絕 Url is invalid - URL 是無效的 + URL 是無效的 Connection failure - 連線失敗 + 連線失敗 Connection was timed out - 連線逾時 + 連線逾時 Incorrect network interface - 錯誤的網路介面 + 錯誤的網路介面 Unknown error - 未知的錯誤 + 未知的錯誤 Could not resolve proxy - 無法解析代理伺服器 + 無法解析代理伺服器 I/O Error - I/O 錯誤 + I/O 錯誤 diff --git a/src/main.cpp b/src/main.cpp index 1a9eb34de..72e17db15 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -34,14 +34,9 @@ #include #include #include -#ifdef QT_4_4 #include #include #include -#else -#include -#include -#endif #include #include "qgnomelook.h" #include @@ -143,19 +138,9 @@ int main(int argc, char *argv[]){ std::cerr << "Couldn't set environment variable...\n"; } //Check if there is another instance running -#ifdef QT_4_4 QLocalSocket localSocket; QString uid = QString::number(getuid()); -#else - QTcpSocket localSocket; -#endif -#ifdef QT_4_4 localSocket.connectToServer("qBittorrent-"+uid, QIODevice::WriteOnly); -#else - int serverPort = settings.value(QString::fromUtf8("uniqueInstancePort"), -1).toInt(); - if(serverPort != -1) { - localSocket.connectToHost(QHostAddress::LocalHost, serverPort, QIODevice::WriteOnly); -#endif if (localSocket.waitForConnected(1000)){ std::cout << "Another qBittorrent instance is already running...\n"; // Send parameters @@ -174,19 +159,12 @@ int main(int argc, char *argv[]){ }else{ std::cerr << "Writing to the socket timed out\n"; } -#ifdef QT_4_4 localSocket.disconnectFromServer(); -#else - localSocket.disconnectFromHost(); -#endif std::cout << "disconnected\n"; } localSocket.close(); return 0; } -#ifndef QT_4_4 - } -#endif app = new QApplication(argc, argv); useStyle(app, settings.value("Preferences/General/Style", 0).toInt()); app->setStyleSheet("QStatusBar::item { border-width: 0; }"); diff --git a/src/qtorrenthandle.cpp b/src/qtorrenthandle.cpp index e51389244..bb3ccb7ab 100644 --- a/src/qtorrenthandle.cpp +++ b/src/qtorrenthandle.cpp @@ -163,11 +163,6 @@ QString QTorrentHandle::save_path() const { return misc::toQString(h.save_path().string()); } -fs::path QTorrentHandle::save_path_boost() const { - Q_ASSERT(h.is_valid()); - return h.save_path(); -} - bool QTorrentHandle::super_seeding() const { Q_ASSERT(h.is_valid()); return h.super_seeding(); @@ -239,9 +234,9 @@ size_type QTorrentHandle::filesize_at(unsigned int index) const { return h.get_torrent_info().file_at(index).size; } -std::vector const& QTorrentHandle::trackers() const { +std::vector QTorrentHandle::trackers() const { Q_ASSERT(h.is_valid()); - return h.get_torrent_info().trackers(); + return h.trackers(); } torrent_status::state_t QTorrentHandle::state() const { diff --git a/src/qtorrenthandle.h b/src/qtorrenthandle.h index fa10bf54e..090a165b2 100644 --- a/src/qtorrenthandle.h +++ b/src/qtorrenthandle.h @@ -81,7 +81,6 @@ class QTorrentHandle { int num_incomplete() const; void scrape_tracker() const; QString save_path() const; - fs::path save_path_boost() const; QStringList url_seeds() const; size_type actual_size() const; int download_limit() const; @@ -93,7 +92,7 @@ class QTorrentHandle { bool is_queued() const; QString file_at(unsigned int index) const; size_type filesize_at(unsigned int index) const; - std::vector const& trackers() const; + std::vector trackers() const; torrent_status::state_t state() const; QString creator() const; QString comment() const; diff --git a/src/rss.cpp b/src/rss.cpp index dd86e80ef..c13e0bf63 100644 --- a/src/rss.cpp +++ b/src/rss.cpp @@ -561,31 +561,37 @@ short RssStream::readDoc(const QDomDocument& doc) { image = property.text(); else if(property.tagName() == "item") { RssItem * item = new RssItem(this, property); - if(item->isValid() && !itemAlreadyExists(item->getTitle())) { - (*this)[item->getTitle()] = item; + if(item->isValid()) { + bool already_exists = itemAlreadyExists(item->getTitle()); + if(!already_exists) { + (*this)[item->getTitle()] = item; + } if(item->has_attachment()) { has_attachments = true; // Check if the item should be automatically downloaded - FeedFilter * matching_filter = FeedFilters::getFeedFilters(url).matches(item->getTitle()); - if(matching_filter != 0) { - // Download the torrent - BTSession->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item->getTitle()).arg(getName())); - if(matching_filter->isValid()) { - QString save_path = matching_filter->getSavePath(); - if(save_path.isEmpty()) + if(!already_exists || !(*this)[item->getTitle()]->isRead()) { + FeedFilter * matching_filter = FeedFilters::getFeedFilters(url).matches(item->getTitle()); + if(matching_filter != 0) { + // Download the torrent + BTSession->addConsoleMessage(tr("Automatically downloading %1 torrent from %2 RSS feed...").arg(item->getTitle()).arg(getName())); + if(matching_filter->isValid()) { + QString save_path = matching_filter->getSavePath(); + if(save_path.isEmpty()) + BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl()); + else + BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl(), save_path); + } else { + // All torrents are downloaded from this feed BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl()); - else - BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl(), save_path); - } else { - // All torrents are downloaded from this feed - BTSession->downloadUrlAndSkipDialog(item->getTorrentUrl()); + } + // Item was downloaded, consider it as Read + (*this)[item->getTitle()]->setRead(); + // Clean up + delete matching_filter; } - // Item was downloaded, consider it as Read - item->setRead(); - // Clean up - delete matching_filter; } } + } else { delete item; } @@ -604,7 +610,7 @@ void RssStream::resizeList() { unsigned int max_articles = settings.value(QString::fromUtf8("Preferences/RSS/RSSMaxArticlesPerFeed"), 100).toInt(); unsigned int nb_articles = this->size(); if(nb_articles > max_articles) { - QList listItem = sortNewsList(this->values()); + QList listItem = RssManager::sortNewsList(this->values()); int excess = nb_articles - max_articles; for(int i=0; i &list, RssItem *item) { + int i = 0; + while(i < list.size() && item->getDate() < list.at(i)->getDate()) { + ++i; + } + list.insert(i, item); + } + + static QList sortNewsList(QList news_list) { + QList new_list; + foreach(RssItem *item, news_list) { + insertSortElem(new_list, item); + } + return new_list; + } }; -static void insertSortElem(QList &list, RssItem *item) { - int i = 0; - while(i < list.size() && item->getDate() < list.at(i)->getDate()) { - ++i; - } - list.insert(i, item); -} -static QList sortNewsList(QList news_list) { - QList new_list; - foreach(RssItem *item, news_list) { - insertSortElem(new_list, item); - } - return new_list; -} + #endif diff --git a/src/rss_imp.cpp b/src/rss_imp.cpp index 7e484af39..814325085 100644 --- a/src/rss_imp.cpp +++ b/src/rss_imp.cpp @@ -431,9 +431,9 @@ void RSSImp::refreshNewsList(QTreeWidgetItem* item) { qDebug("Getting the list of news"); QList news; if(rss_item == rssmanager) - news = sortNewsList(rss_item->getUnreadNewsList()); + news = RssManager::sortNewsList(rss_item->getUnreadNewsList()); else - news = sortNewsList(rss_item->getNewsList()); + news = RssManager::sortNewsList(rss_item->getNewsList()); // Clear the list first textBrowser->clear(); previous_news = 0; diff --git a/src/src.pro b/src/src.pro index 2d4ae7815..115cc1b1b 100644 --- a/src/src.pro +++ b/src/src.pro @@ -14,7 +14,7 @@ CONFIG += qt \ network # Update this VERSION for each release -DEFINES += VERSION=\\\"v1.6.0alpha2\\\" +DEFINES += VERSION=\\\"v1.6.0beta1\\\" DEFINES += VERSION_MAJOR=1 DEFINES += VERSION_MINOR=6 DEFINES += VERSION_BUGFIX=0 @@ -90,15 +90,14 @@ contains(DEBUG_MODE, 0) { # QMAKE_CXXFLAGS_DEBUG += -fwrapv unix:QMAKE_LFLAGS_SHAPP += -rdynamic CONFIG += link_pkgconfig -PKGCONFIG += "libtorrent-rasterbar libcurl" +PKGCONFIG += "libtorrent-rasterbar" QT += network \ xml DEFINES += QT_NO_CAST_TO_ASCII -# QT_NO_CAST_FROM_ASCII # Windows # usually built as static -# win32:LIBS += -ltorrent -lcurl -lboost_system +# win32:LIBS += -ltorrent -lboost_system # win32:LIBS += -lz ? win32:LIBS += -lssl32 \ -lws2_32 \ diff --git a/src/torrentAddition.h b/src/torrentAddition.h index fe295fd8a..ba0d6d8a1 100644 --- a/src/torrentAddition.h +++ b/src/torrentAddition.h @@ -444,6 +444,8 @@ public slots: settings.setValue(QString::fromUtf8("LastDirTorrentAdd"), savePathTxt->text()); // Create .incremental file if necessary TorrentTempData::setSequential(hash, checkIncrementalDL->isChecked()); + // Skip file checking and directly start seeding + TorrentTempData::setSeedingMode(hash, addInSeed->isChecked()); // Check if there is at least one selected file if(allFiltered()){ QMessageBox::warning(0, tr("Invalid file selection"), tr("You must select at least one file in the torrent")); diff --git a/src/torrentPersistentData.h b/src/torrentPersistentData.h index 72afc15c7..ab1657804 100644 --- a/src/torrentPersistentData.h +++ b/src/torrentPersistentData.h @@ -99,6 +99,25 @@ public: } + static void setSeedingMode(QString hash,bool seed){ + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume")); + QHash all_data = settings.value("torrents-tmp", QHash()).toHash(); + QHash data = all_data[hash].toHash(); + data["seeding"] = seed; + all_data[hash] = data; + settings.setValue("torrents-tmp", all_data); + } + + static bool isSeedingMode(QString hash){ + QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume")); + QHash all_data = settings.value("torrents-tmp", QHash()).toHash(); + QHash data = all_data[hash].toHash(); + if(data.contains("seeding")) + return data["seeding"].toBool(); + return false; + } + + static QString getSavePath(QString hash) { QSettings settings(QString::fromUtf8("qBittorrent"), QString::fromUtf8("qBittorrent-resume")); QHash all_data = settings.value("torrents-tmp", QHash()).toHash();