Browse Source

- FEATURE: Added zip support in search plugins manager (can put .py & .png inside)

adaptive-webui-19844
Christophe Dumez 17 years ago
parent
commit
69fa916e26
  1. 4
      INSTALL
  2. 3
      TODO
  3. 98
      configure
  4. 3
      qbittorrent.qc
  5. 1
      qcm/libmagick.qcm
  6. 69
      qcm/libzzip.qcm
  7. 203
      src/engineSelectDlg.cpp
  8. 6
      src/engineSelectDlg.h
  9. 155
      src/lang/qbittorrent_hu.ts

4
INSTALL

@ -29,6 +29,10 @@ Dependencies:
- python >= 2.3 (needed by search engine) - python >= 2.3 (needed by search engine)
- libmagick++ (advised, not required) - libmagick++ (advised, not required)
* Needed for favicons support (RSS / Search plugins)
- libzzip (advised, not required)
* Needed for zip support (Search plugins)
NOTE FOR NON-KDE USERS: NOTE FOR NON-KDE USERS:
- qt4-qtconfig package is advised when using other systems than KDE. - qt4-qtconfig package is advised when using other systems than KDE.

3
TODO

@ -76,7 +76,7 @@ LANGUAGES UPDATED:
- Slovak *BETA6* - Slovak *BETA6*
- Ukrainian *BETA6* - Ukrainian *BETA6*
- Chinese (simplified) *BETA4* - Chinese (simplified) *BETA4*
- Hungarian *BETA4* - Hungarian *BETA6*
- Italian *BETA6* - Italian *BETA6*
- Polish *BETA6* - Polish *BETA6*
- Portuguese *BETA5* - Portuguese *BETA5*
@ -94,6 +94,7 @@ beta6->beta7 changelog:
- FEATURE: Made search engine plugin install more reliable - FEATURE: Made search engine plugin install more reliable
- FEATURE: Allow to drag'n drop plugin to list for install/update - FEATURE: Allow to drag'n drop plugin to list for install/update
- FEATURE: Added some search plugins to http://plugins.qbittorrent.org - FEATURE: Added some search plugins to http://plugins.qbittorrent.org
- FEATURE: Added zip support in search plugins manager (can put .py & .png inside)
- BUGFIX: Updated man page / README / INSTALL - BUGFIX: Updated man page / README / INSTALL
- BUGFIX: Paused torrents could be displayed as connected for a sec after checking - BUGFIX: Paused torrents could be displayed as connected for a sec after checking
- BUGFIX: 'Unknown' is now displayed in search results columns where value is -1 - BUGFIX: 'Unknown' is now displayed in search results columns where value is -1

98
configure vendored

@ -27,6 +27,9 @@ Dependency options:
--disable-libmagick Disable use of libmagick --disable-libmagick Disable use of libmagick
--with-libmagick-inc=[path] Path to libmagick++ include files --with-libmagick-inc=[path] Path to libmagick++ include files
--with-libmagick-lib=[path] Path to libmagick++ library files --with-libmagick-lib=[path] Path to libmagick++ 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
EOT EOT
} }
@ -188,6 +191,21 @@ while [ $# -gt 0 ]; do
shift shift
;; ;;
--disable-libzzip)
QC_DISABLE_libzzip="Y"
shift
;;
--with-libzzip-inc=*)
QC_WITH_LIBZZIP_INC=$optarg
shift
;;
--with-libzzip-lib=*)
QC_WITH_LIBZZIP_LIB=$optarg
shift
;;
--verbose) --verbose)
QC_VERBOSE="Y" QC_VERBOSE="Y"
shift shift
@ -218,6 +236,9 @@ echo QC_WITH_LIBCOMMONCPP2_LIB=$QC_WITH_LIBCOMMONCPP2_LIB
echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick echo QC_DISABLE_libmagick=$QC_DISABLE_libmagick
echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC echo QC_WITH_LIBMAGICK_INC=$QC_WITH_LIBMAGICK_INC
echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_LIB echo QC_WITH_LIBMAGICK_LIB=$QC_WITH_LIBMAGICK_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
echo echo
fi fi
@ -618,11 +639,82 @@ public:
magickConfig.waitForStarted(); magickConfig.waitForStarted();
magickConfig.waitForFinished(); magickConfig.waitForFinished();
QByteArray result = magickConfig.readAll(); QByteArray result = magickConfig.readAll();
result = result.replace("\n", "");
conf->addLib(result.data()); conf->addLib(result.data());
conf->addDefine("HAVE_MAGICK"); conf->addDefine("HAVE_MAGICK");
return true; return true;
} }
}; };
#line 1 "libzzip.qcm"
/*
-----BEGIN QCMOD-----
name: libzzip
arg: with-libzzip-inc=[path], Path to libzzip++ include files
arg: with-libzzip-lib=[path], Path to libzzip++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libzzip : public ConfObj
{
public:
qc_libzzip(Conf *c) : ConfObj(c) {}
QString name() const { return "Zzip library (libzzip)"; }
QString shortname() const { return "libzzip"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBZZIP_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "zzip/zzip.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "zzip/zzip.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("libzzip.so"))){
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/local/lib/";
bool found = false;
foreach(s, sl){
if(QFile::exists(s+QString("libzzip.so"))){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
conf->addLib("-lzzip");
conf->addDefine("HAVE_ZZIP");
return true;
}
};
#line 1 "python.qcm" #line 1 "python.qcm"
/* /*
-----BEGIN QCMOD----- -----BEGIN QCMOD-----
@ -661,6 +753,9 @@ cat >$1/modules_new.cpp <<EOT
o = new qc_libmagick(conf); o = new qc_libmagick(conf);
o->required = false; o->required = false;
o->disabled = false; o->disabled = false;
o = new qc_libzzip(conf);
o->required = false;
o->disabled = false;
o = new qc_python(conf); o = new qc_python(conf);
o->required = true; o->required = true;
o->disabled = false; o->disabled = false;
@ -1618,6 +1713,9 @@ export QC_WITH_LIBCOMMONCPP2_LIB
export QC_DISABLE_libmagick export QC_DISABLE_libmagick
export QC_WITH_LIBMAGICK_INC export QC_WITH_LIBMAGICK_INC
export QC_WITH_LIBMAGICK_LIB export QC_WITH_LIBMAGICK_LIB
export QC_DISABLE_libzzip
export QC_WITH_LIBZZIP_INC
export QC_WITH_LIBZZIP_LIB
export QC_VERBOSE export QC_VERBOSE
rm -rf .qconftemp rm -rf .qconftemp
( (

3
qbittorrent.qc

@ -15,7 +15,8 @@
<dep type='libcommoncpp2'> <dep type='libcommoncpp2'>
<required/> <required/>
</dep> </dep>
<dep type='libmagick'/> <dep type='libmagick'/>
<dep type='libzzip'/>
<dep type='python'> <dep type='python'>
<required/> <required/>
</dep> </dep>

1
qcm/libmagick.qcm

@ -69,6 +69,7 @@ public:
magickConfig.waitForStarted(); magickConfig.waitForStarted();
magickConfig.waitForFinished(); magickConfig.waitForFinished();
QByteArray result = magickConfig.readAll(); QByteArray result = magickConfig.readAll();
result = result.replace("\n", "");
conf->addLib(result.data()); conf->addLib(result.data());
conf->addDefine("HAVE_MAGICK"); conf->addDefine("HAVE_MAGICK");
return true; return true;

69
qcm/libzzip.qcm

@ -0,0 +1,69 @@
/*
-----BEGIN QCMOD-----
name: libzzip
arg: with-libzzip-inc=[path], Path to libzzip++ include files
arg: with-libzzip-lib=[path], Path to libzzip++ library files
-----END QCMOD-----
*/
#include <QProcess>
class qc_libzzip : public ConfObj
{
public:
qc_libzzip(Conf *c) : ConfObj(c) {}
QString name() const { return "Zzip library (libzzip)"; }
QString shortname() const { return "libzzip"; }
QString checkString() const {
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return "";
return ConfObj::checkString();
}
bool exec(){
if(!conf->getenv("QC_DISABLE_LIBZZIP").isEmpty())
return false;
QString s;
s = conf->getenv("QC_WITH_LIBZZIP_INC");
if(!s.isEmpty()) {
if(!conf->checkHeader(s, "zzip/zzip.h")) {
return false;
}
}else{
QStringList sl;
sl << "/usr/include";
sl << "/usr/local/include";
bool found = false;
foreach(s, sl){
if(conf->checkHeader(s, "zzip/zzip.h")){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addIncludePath(s);
s = conf->getenv("QC_WITH_LIBZZIP_LIB");
if(!s.isEmpty()) {
if(!QFile::exists(s+QString("libzzip.so"))){
return false;
}
}else{
QStringList sl;
sl << "/usr/lib/";
sl << "/usr/local/lib/";
bool found = false;
foreach(s, sl){
if(QFile::exists(s+QString("libzzip.so"))){
found = true;
break;
}
}
if(!found)
return false;
}
conf->addLib(QString("-L") + s);
conf->addLib("-lzzip");
conf->addDefine("HAVE_ZZIP");
return true;
}
};

203
src/engineSelectDlg.cpp

@ -35,6 +35,10 @@
using namespace Magick; using namespace Magick;
#endif #endif
#ifdef HAVE_ZZIP
#include <zzip/zzip.h>
#endif
#define ENGINE_NAME 0 #define ENGINE_NAME 0
#define ENGINE_URL 1 #define ENGINE_URL 1
#define ENGINE_STATE 2 #define ENGINE_STATE 2
@ -79,8 +83,16 @@ void engineSelectDlg::dropEvent(QDropEvent *event) {
downloader->downloadUrl(file); downloader->downloadUrl(file);
continue; continue;
} }
if(file.endsWith(".py")) if(file.endsWith(".py")) {
installPlugin(file); QString plugin_name = file.split(QDir::separator()).last();
plugin_name.replace(".py", "");
installPlugin(file, plugin_name);
}
#ifdef HAVE_ZZIP
if(file.endsWith(".zip")) {
installZipPlugin(file);
}
#endif
} }
} }
@ -291,7 +303,6 @@ void engineSelectDlg::loadSupportedSearchEngines(bool first) {
QString nameUrlCouple(e); QString nameUrlCouple(e);
QStringList line = nameUrlCouple.split('|'); QStringList line = nameUrlCouple.split('|');
if(line.size() != 2) continue; if(line.size() != 2) continue;
// Download favicon
QString enabledTxt; QString enabledTxt;
if(installed_engines.value(id, true)) { if(installed_engines.value(id, true)) {
enabledTxt = tr("True"); enabledTxt = tr("True");
@ -327,17 +338,132 @@ QList<QTreeWidgetItem*> engineSelectDlg::findItemsWithUrl(QString url){
return res; return res;
} }
QTreeWidgetItem* engineSelectDlg::findItemWithID(QString id){
QList<QTreeWidgetItem*> res;
for(int i=0; i<pluginsTree->topLevelItemCount(); ++i) {
QTreeWidgetItem *item = pluginsTree->topLevelItem(i);
if(id == item->text(ENGINE_ID))
return item;
}
return 0;
}
bool engineSelectDlg::isUpdateNeeded(QString plugin_name, float new_version) const { bool engineSelectDlg::isUpdateNeeded(QString plugin_name, float new_version) const {
float old_version = misc::getPluginVersion(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py"); float old_version = misc::getPluginVersion(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py");
qDebug("IsUpdate needed? tobeinstalled: %.2f, alreadyinstalled: %.2f", new_version, old_version);
return (new_version > old_version); return (new_version > old_version);
} }
void engineSelectDlg::installPlugin(QString path) { #ifdef HAVE_ZZIP
if(!path.endsWith(".py")) return; void engineSelectDlg::installZipPlugin(QString path) {
QStringList plugins;
QStringList favicons;
ZZIP_DIR* dir = zzip_dir_open(path.toUtf8().data(), 0);
if(!dir) {
QMessageBox::warning(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("Search engine plugin archive could not be read."));
return;
}
ZZIP_DIRENT dirent;
while(zzip_dir_read(dir, &dirent)) {
/* show info for first file */
QString name(dirent.d_name);
if(name.endsWith(".py")) {
plugins << name;
} else {
if(name.endsWith(".png")) {
favicons << name;
}
}
}
QString plugin;
std::cout << dirent.d_name << std::endl;
ZZIP_FILE* fp = zzip_file_open(dir, dirent.d_name, 0);
if (fp) {
char buf[10];
zzip_ssize_t len = zzip_file_read(fp, buf, 10);
if (len) {
/* show head of README */
std::cout << buf;
}
zzip_file_close(fp);
std::cout << std::endl;
}
foreach(plugin, plugins) {
QString plugin_name = plugin.split(QDir::separator()).last();
plugin_name.chop(3); // Remove .py extension
qDebug("Detected plugin %s in archive", plugin_name.toUtf8().data());
ZZIP_FILE* fp = zzip_file_open(dir, plugin.toUtf8().data(), 0);
if(fp) {
QTemporaryFile *tmpfile = new QTemporaryFile();
QString tmpPath;
// Write file
if(tmpfile->open()) {
tmpPath = tmpfile->fileName();
char buf[255];
zzip_ssize_t len = zzip_file_read(fp, buf, 255);
while(len) {
tmpfile->write(buf, len);
len = zzip_file_read(fp, buf, 255);
}
zzip_file_close(fp);
tmpfile->close();
} else {
qDebug("Could not open tmp file");
QMessageBox::warning(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("%1 search engine plugin could not be installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
delete tmpfile;
continue;
}
// Install plugin
installPlugin(tmpPath, plugin_name);
qDebug("installPlugin() finished");
delete tmpfile;
qDebug("Deleted tmpfile");
} else {
qDebug("Cannot read file in archive");
QMessageBox::warning(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("%1 search engine plugin could not be installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
}
}
QString favicon;
foreach(favicon, favicons) {
qDebug("Detected favicon %s in archive", favicon.toUtf8().data());
// Ok we have a favicon here
QString plugin_name = favicon.split(QDir::separator()).last();
plugin_name.chop(4); // Remove .png extension
if(!QFile::exists(misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py"))
continue;
// Check if we already have a favicon for this plugin
QString iconPath = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".png";
if(QFile::exists(iconPath)) continue;
ZZIP_FILE* fp = zzip_file_open(dir, favicon.toUtf8().data(), 0);
if(fp) {
QFile dest_icon(iconPath);
// Write icon
if(dest_icon.open(QIODevice::WriteOnly | QIODevice::Text)) {
char buf[255];
zzip_ssize_t len = zzip_file_read(fp, buf, 255);
while(len) {
dest_icon.write(buf, len);
len = zzip_file_read(fp, buf, 255);
}
zzip_file_close(fp);
dest_icon.close();
// Update icon in list
QTreeWidgetItem *item = findItemWithID(plugin_name);
Q_ASSERT(item);
item->setData(ENGINE_NAME, Qt::DecorationRole, QVariant(QIcon(iconPath)));
}
}
}
zzip_dir_close(dir);
}
#endif
void engineSelectDlg::installPlugin(QString path, QString plugin_name) {
qDebug("Asked to install plugin at %s", path.toUtf8().data());
float new_version = misc::getPluginVersion(path); float new_version = misc::getPluginVersion(path);
QString plugin_name = path.split(QDir::separator()).last(); qDebug("Version to be installed: %.2f", new_version);
plugin_name.replace(".py", "");
if(!isUpdateNeeded(plugin_name, new_version)) { if(!isUpdateNeeded(plugin_name, new_version)) {
qDebug("Apparently update it not needed, we have a more recent version");
QMessageBox::information(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("A more recent version of %1 search engine plugin is already installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data())); QMessageBox::information(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("A more recent version of %1 search engine plugin is already installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
return; return;
} }
@ -387,10 +513,25 @@ void engineSelectDlg::installPlugin(QString path) {
void engineSelectDlg::on_installButton_clicked() { void engineSelectDlg::on_installButton_clicked() {
QStringList pathsList = QFileDialog::getOpenFileNames(0, QStringList pathsList = QFileDialog::getOpenFileNames(0,
tr("Select search plugins"), QDir::homePath(), tr("Select search plugins"), QDir::homePath(),
#ifdef HAVE_ZZIP
tr("qBittorrent search plugins")+QString::fromUtf8(" (*.py *.zip)"));
#else
tr("qBittorrent search plugins")+QString::fromUtf8(" (*.py)")); tr("qBittorrent search plugins")+QString::fromUtf8(" (*.py)"));
#endif
QString path; QString path;
foreach(path, pathsList) { foreach(path, pathsList) {
installPlugin(path); if(path.endsWith(".py")) {
QString plugin_name = path.split(QDir::separator()).last();
plugin_name.replace(".py", "");
installPlugin(path, plugin_name);
}
#ifdef HAVE_ZZIP
else {
if(path.endsWith(".zip")) {
installZipPlugin(path);
}
}
#endif
} }
} }
@ -476,39 +617,32 @@ void engineSelectDlg::processDownloadedFile(QString url, QString filePath) {
if(!parseVersionsFile(filePath, "http://www.dchris.eu/search_engine/")) { if(!parseVersionsFile(filePath, "http://www.dchris.eu/search_engine/")) {
qDebug("Primary update server failed, try secondary"); qDebug("Primary update server failed, try secondary");
downloader->downloadUrl("http://hydr0g3n.free.fr/search_engine/versions.txt"); downloader->downloadUrl("http://hydr0g3n.free.fr/search_engine/versions.txt");
return;
} }
QFile::remove(filePath);
return;
} }
if(url == "http://hydr0g3n.free.fr/search_engine/versions.txt") { if(url == "http://hydr0g3n.free.fr/search_engine/versions.txt") {
if(!parseVersionsFile(filePath, "http://hydr0g3n.free.fr/search_engine/")) { if(!parseVersionsFile(filePath, "http://hydr0g3n.free.fr/search_engine/")) {
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, update server is temporarily unavailable.")); QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, update server is temporarily unavailable."));
return;
} }
QFile::remove(filePath);
return;
} }
if(url.endsWith(".pyqBT") || url.endsWith(".py")) { if(url.endsWith(".pyqBT") || url.endsWith(".py")) {
// a plugin update has been downloaded
QString plugin_name = url.split('/').last(); QString plugin_name = url.split('/').last();
plugin_name.replace(".pyqBT", "");
plugin_name.replace(".py", ""); plugin_name.replace(".py", "");
QString dest_path = misc::qBittorrentPath()+"search_engine"+QDir::separator()+"engines"+QDir::separator()+plugin_name+".py"; plugin_name.replace(".pyqBT", "");
bool new_plugin = false; installPlugin(filePath, plugin_name);
if(QFile::exists(dest_path)) { QFile::remove(filePath);
// Delete the old plugin return;
QFile::remove(dest_path);
} else {
// This is a new plugin
new_plugin = true;
}
// Copy the new plugin
QFile::copy(filePath, dest_path);
if(new_plugin) {
// if it is new, refresh the list of plugins
loadSupportedSearchEngines();
QMessageBox::information(this, tr("Search plugin install")+" -- "+tr("qBittorrent"), tr("%1 search engine plugin was successfully installed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
} else {
QMessageBox::information(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("%1 search plugin was successfully updated.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
}
} }
#ifdef HAVE_ZZIP
if(url.endsWith(".zip")) {
installZipPlugin(filePath);
QFile::remove(filePath);
return;
}
#endif
} }
void engineSelectDlg::handleDownloadFailure(QString url, QString reason) { void engineSelectDlg::handleDownloadFailure(QString url, QString reason) {
@ -531,6 +665,13 @@ void engineSelectDlg::handleDownloadFailure(QString url, QString reason) {
QString plugin_name = url.split('/').last(); QString plugin_name = url.split('/').last();
plugin_name.replace(".pyqBT", ""); plugin_name.replace(".pyqBT", "");
plugin_name.replace(".py", ""); plugin_name.replace(".py", "");
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, %1 search plugin update failed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data())); QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, %1 search plugin install failed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
} }
#ifdef HAVE_ZZIP
if(url.endsWith(".zip")) {
QString plugin_name = url.split('/').last();
plugin_name.replace(".zip", "");
QMessageBox::warning(this, tr("Search plugin update")+" -- "+tr("qBittorrent"), tr("Sorry, %1 search plugin install failed.", "%1 is the name of the search engine").arg(plugin_name.toUtf8().data()));
}
#endif
} }

6
src/engineSelectDlg.h

@ -39,6 +39,7 @@ class engineSelectDlg : public QDialog, public Ui::engineSelect{
engineSelectDlg(QWidget *parent); engineSelectDlg(QWidget *parent);
~engineSelectDlg(); ~engineSelectDlg();
QList<QTreeWidgetItem*> findItemsWithUrl(QString url); QList<QTreeWidgetItem*> findItemsWithUrl(QString url);
QTreeWidgetItem* findItemWithID(QString id);
protected: protected:
bool parseVersionsFile(QString versions_file, QString updateServer); bool parseVersionsFile(QString versions_file, QString updateServer);
@ -64,7 +65,10 @@ class engineSelectDlg : public QDialog, public Ui::engineSelect{
void on_installButton_clicked(); void on_installButton_clicked();
void dropEvent(QDropEvent *event); void dropEvent(QDropEvent *event);
void dragEnterEvent(QDragEnterEvent *event); void dragEnterEvent(QDragEnterEvent *event);
void installPlugin(QString plugin_path); void installPlugin(QString plugin_path, QString plugin_name);
#ifdef HAVE_ZZIP
void installZipPlugin(QString path);
#endif
}; };
#endif #endif

155
src/lang/qbittorrent_hu.ts

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE TS><TS version="1.1" language="en"> <!DOCTYPE TS><TS version="1.1" language="en">
<defaultcodec></defaultcodec>
<context> <context>
<name>AboutDlg</name> <name>AboutDlg</name>
<message> <message>
@ -585,115 +586,115 @@ Copyright © 2006 by Christophe Dumez&lt;br&gt;
<location filename="../downloadingTorrents.cpp" line="55"/> <location filename="../downloadingTorrents.cpp" line="55"/>
<source>Name</source> <source>Name</source>
<comment>i.e: file name</comment> <comment>i.e: file name</comment>
<translation type="unfinished">Név</translation> <translation>Név</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="56"/> <location filename="../downloadingTorrents.cpp" line="56"/>
<source>Size</source> <source>Size</source>
<comment>i.e: file size</comment> <comment>i.e: file size</comment>
<translation type="unfinished">Méret</translation> <translation>Méret</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="57"/> <location filename="../downloadingTorrents.cpp" line="57"/>
<source>Progress</source> <source>Progress</source>
<comment>i.e: % downloaded</comment> <comment>i.e: % downloaded</comment>
<translation type="unfinished">Folyamat</translation> <translation>Folyamat</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="58"/> <location filename="../downloadingTorrents.cpp" line="58"/>
<source>DL Speed</source> <source>DL Speed</source>
<comment>i.e: Download speed</comment> <comment>i.e: Download speed</comment>
<translation type="unfinished"></translation> <translation>DL Speed</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="59"/> <location filename="../downloadingTorrents.cpp" line="59"/>
<source>UP Speed</source> <source>UP Speed</source>
<comment>i.e: Upload speed</comment> <comment>i.e: Upload speed</comment>
<translation type="unfinished"></translation> <translation>UP Speed</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="60"/> <location filename="../downloadingTorrents.cpp" line="60"/>
<source>Seeds/Leechs</source> <source>Seeds/Leechs</source>
<comment>i.e: full/partial sources</comment> <comment>i.e: full/partial sources</comment>
<translation type="unfinished"></translation> <translation>Seeds/Leechs</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="61"/> <location filename="../downloadingTorrents.cpp" line="61"/>
<source>Ratio</source> <source>Ratio</source>
<translation type="unfinished">Arány</translation> <translation>Arány</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="62"/> <location filename="../downloadingTorrents.cpp" line="62"/>
<source>ETA</source> <source>ETA</source>
<comment>i.e: Estimated Time of Arrival / Time left</comment> <comment>i.e: Estimated Time of Arrival / Time left</comment>
<translation type="unfinished">Idő</translation> <translation>Idő</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="98"/> <location filename="../downloadingTorrents.cpp" line="98"/>
<source>qBittorrent %1 started.</source> <source>qBittorrent %1 started.</source>
<comment>e.g: qBittorrent v0.x started.</comment> <comment>e.g: qBittorrent v0.x started.</comment>
<translation type="unfinished">qBittorrent %1 elindítva.</translation> <translation>qBittorrent %1 elindítva.</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="99"/> <location filename="../downloadingTorrents.cpp" line="99"/>
<source>Be careful, sharing copyrighted material without permission is against the law.</source> <source>Be careful, sharing copyrighted material without permission is against the law.</source>
<translation type="unfinished">Csak óvatosan a megosztással. Nehogy megsértsd a szerzői jogokat!.</translation> <translation>Csak óvatosan a megosztással. Nehogy megsértsd a szerzői jogokat!.</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="123"/> <location filename="../downloadingTorrents.cpp" line="123"/>
<source>&lt;font color=&apos;red&apos;&gt;%1&lt;/font&gt; &lt;i&gt;was blocked&lt;/i&gt;</source> <source>&lt;font color=&apos;red&apos;&gt;%1&lt;/font&gt; &lt;i&gt;was blocked&lt;/i&gt;</source>
<comment>x.y.z.w was blocked</comment> <comment>x.y.z.w was blocked</comment>
<translation type="unfinished">&lt;font color=&apos;red&apos;&gt;%1&lt;/font&gt; &lt;i&gt;blokkolva&lt;/i&gt;</translation> <translation>&lt;font color=&apos;red&apos;&gt;%1&lt;/font&gt; &lt;i&gt;blokkolva&lt;/i&gt;</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="197"/> <location filename="../downloadingTorrents.cpp" line="197"/>
<source>Fast resume data was rejected for torrent %1, checking again...</source> <source>Fast resume data was rejected for torrent %1, checking again...</source>
<translation type="unfinished">Hibás ellenőrző adat ennél a torrentnél: %1, újraellenőrzés...</translation> <translation>Hibás ellenőrző adat ennél a torrentnél: %1, újraellenőrzés...</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="201"/> <location filename="../downloadingTorrents.cpp" line="201"/>
<source>Url seed lookup failed for url: %1, message: %2</source> <source>Url seed lookup failed for url: %1, message: %2</source>
<translation type="unfinished">Url forrás meghatározása sikertelen: %1, hibaüzenet: %2</translation> <translation>Url forrás meghatározása sikertelen: %1, hibaüzenet: %2</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="633"/> <location filename="../downloadingTorrents.cpp" line="633"/>
<source>&apos;%1&apos; added to download list.</source> <source>&apos;%1&apos; added to download list.</source>
<comment>&apos;/home/y/xxx.torrent&apos; was added to download list.</comment> <comment>&apos;/home/y/xxx.torrent&apos; was added to download list.</comment>
<translation type="unfinished">&apos;%1&apos; felvéve a letöltési listára.</translation> <translation>&apos;%1&apos; felvéve a letöltési listára.</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="635"/> <location filename="../downloadingTorrents.cpp" line="635"/>
<source>&apos;%1&apos; resumed. (fast resume)</source> <source>&apos;%1&apos; resumed. (fast resume)</source>
<comment>&apos;/home/y/xxx.torrent&apos; was resumed. (fast resume)</comment> <comment>&apos;/home/y/xxx.torrent&apos; was resumed. (fast resume)</comment>
<translation type="unfinished">&apos;%1&apos; visszaállítva. (folytatás)</translation> <translation>&apos;%1&apos; visszaállítva. (folytatás)</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="643"/> <location filename="../downloadingTorrents.cpp" line="643"/>
<source>&apos;%1&apos; is already in download list.</source> <source>&apos;%1&apos; is already in download list.</source>
<comment>e.g: &apos;xxx.avi&apos; is already in download list.</comment> <comment>e.g: &apos;xxx.avi&apos; is already in download list.</comment>
<translation type="unfinished">&apos;%1&apos; már letöltés alatt.</translation> <translation>&apos;%1&apos; már letöltés alatt.</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="647"/> <location filename="../downloadingTorrents.cpp" line="647"/>
<source>Unable to decode torrent file: &apos;%1&apos;</source> <source>Unable to decode torrent file: &apos;%1&apos;</source>
<comment>e.g: Unable to decode torrent file: &apos;/home/y/xxx.torrent&apos;</comment> <comment>e.g: Unable to decode torrent file: &apos;/home/y/xxx.torrent&apos;</comment>
<translation type="unfinished">Megfejthetetlen torrent: &apos;%1&apos;</translation> <translation>Megfejthetetlen torrent: &apos;%1&apos;</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="648"/> <location filename="../downloadingTorrents.cpp" line="648"/>
<source>This file is either corrupted or this isn&apos;t a torrent.</source> <source>This file is either corrupted or this isn&apos;t a torrent.</source>
<translation type="unfinished">Ez a fájl sérült, vagy nem is torrent.</translation> <translation>Ez a fájl sérült, vagy nem is torrent.</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="662"/> <location filename="../downloadingTorrents.cpp" line="662"/>
<source>Couldn&apos;t listen on any of the given ports.</source> <source>Couldn&apos;t listen on any of the given ports.</source>
<translation type="unfinished">A megadott porok zártak.</translation> <translation>A megadott porok zártak.</translation>
</message> </message>
<message> <message>
<location filename="../downloadingTorrents.cpp" line="686"/> <location filename="../downloadingTorrents.cpp" line="686"/>
<source>Downloading &apos;%1&apos;, please wait...</source> <source>Downloading &apos;%1&apos;, please wait...</source>
<comment>e.g: Downloading &apos;xxx.torrent&apos;, please wait...</comment> <comment>e.g: Downloading &apos;xxx.torrent&apos;, please wait...</comment>
<translation type="unfinished">Letöltés alatt: &apos;%1&apos;, kis türelmet...</translation> <translation>Letöltés alatt: &apos;%1&apos;, kis türelmet...</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1241,13 +1242,13 @@ Mégis leállítod a qBittorrentet?</translation>
<location filename="../GUI.cpp" line="290"/> <location filename="../GUI.cpp" line="290"/>
<source>Alt+3</source> <source>Alt+3</source>
<comment>shortcut to switch to third tab</comment> <comment>shortcut to switch to third tab</comment>
<translation type="unfinished">Alt+3</translation> <translation>Alt+3</translation>
</message> </message>
<message> <message>
<location filename="../GUI.cpp" line="292"/> <location filename="../GUI.cpp" line="292"/>
<source>Ctrl+F</source> <source>Ctrl+F</source>
<comment>shortcut to switch to search tab</comment> <comment>shortcut to switch to search tab</comment>
<translation type="unfinished"></translation> <translation>Ctrl+F</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1597,7 +1598,7 @@ Mégis leállítod a qBittorrentet?</translation>
<message> <message>
<location filename="../rss_imp.cpp" line="155"/> <location filename="../rss_imp.cpp" line="155"/>
<source>This rss feed is already in the list.</source> <source>This rss feed is already in the list.</source>
<translation type="unfinished"></translation> <translation>Ez a hírcsatorna már felvéve.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1619,7 +1620,7 @@ Mégis leállítod a qBittorrentet?</translation>
<message> <message>
<location filename="../rss.h" line="261"/> <location filename="../rss.h" line="261"/>
<source>Never</source> <source>Never</source>
<translation type="unfinished"></translation> <translation>Soha</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1773,7 +1774,7 @@ Changelog:
<message> <message>
<location filename="../searchEngine.cpp" line="433"/> <location filename="../searchEngine.cpp" line="433"/>
<source>Unknown</source> <source>Unknown</source>
<translation type="unfinished">Ismeretlen</translation> <translation>Ismeretlen</translation>
</message> </message>
</context> </context>
<context> <context>
@ -1968,7 +1969,7 @@ Changelog:
<message> <message>
<location filename="../createtorrent.ui" line="93"/> <location filename="../createtorrent.ui" line="93"/>
<source>Input file or directory:</source> <source>Input file or directory:</source>
<translation type="unfinished"></translation> <translation>Forrás fájl vagy könyvtár:</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2052,7 +2053,7 @@ Changelog:
<message> <message>
<location filename="../createtorrent_imp.cpp" line="75"/> <location filename="../createtorrent_imp.cpp" line="75"/>
<source>Select a file to add to the torrent</source> <source>Select a file to add to the torrent</source>
<translation type="unfinished"></translation> <translation>Válassz fájlt(okat) a torrenthez</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2098,82 +2099,82 @@ Changelog:
<message> <message>
<location filename="../download.ui" line="13"/> <location filename="../download.ui" line="13"/>
<source>Search</source> <source>Search</source>
<translation type="unfinished">Keresés</translation> <translation>Keresés</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="48"/> <location filename="../download.ui" line="48"/>
<source>Total DL Speed:</source> <source>Total DL Speed:</source>
<translation type="unfinished">Bejövő sebesség:</translation> <translation>Bejövő sebesség:</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="181"/> <location filename="../download.ui" line="181"/>
<source>KiB/s</source> <source>KiB/s</source>
<translation type="unfinished">KByte/s</translation> <translation>KByte/s</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="106"/> <location filename="../download.ui" line="106"/>
<source>Session ratio: </source> <source>Session ratio: </source>
<translation type="unfinished">Megosztási arány: </translation> <translation>Megosztási arány: </translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="152"/> <location filename="../download.ui" line="152"/>
<source>Total UP Speed:</source> <source>Total UP Speed:</source>
<translation type="unfinished">Kimenő sebesség:</translation> <translation>Kimenő sebesség:</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="246"/> <location filename="../download.ui" line="246"/>
<source>Log</source> <source>Log</source>
<translation type="unfinished">Napló</translation> <translation>Napló</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="280"/> <location filename="../download.ui" line="280"/>
<source>IP filter</source> <source>IP filter</source>
<translation type="unfinished">IP szűrő</translation> <translation>IP szűrő</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="306"/> <location filename="../download.ui" line="306"/>
<source>Start</source> <source>Start</source>
<translation type="unfinished">Indítás</translation> <translation>Indítás</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="311"/> <location filename="../download.ui" line="311"/>
<source>Pause</source> <source>Pause</source>
<translation type="unfinished">Szünet</translation> <translation>Szünet</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="316"/> <location filename="../download.ui" line="316"/>
<source>Delete</source> <source>Delete</source>
<translation type="unfinished">Törlés</translation> <translation>Törlés</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="321"/> <location filename="../download.ui" line="321"/>
<source>Clear</source> <source>Clear</source>
<translation type="unfinished">Törlés</translation> <translation>Törlés</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="326"/> <location filename="../download.ui" line="326"/>
<source>Preview file</source> <source>Preview file</source>
<translation type="unfinished">Minta fájl</translation> <translation>Minta fájl</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="331"/> <location filename="../download.ui" line="331"/>
<source>Set upload limit</source> <source>Set upload limit</source>
<translation type="unfinished">Feltöltési korlát megadása</translation> <translation>Feltöltési korlát megadása</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="336"/> <location filename="../download.ui" line="336"/>
<source>Set download limit</source> <source>Set download limit</source>
<translation type="unfinished">Letöltési korlát megadása</translation> <translation>Letöltési korlát megadása</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="341"/> <location filename="../download.ui" line="341"/>
<source>Delete Permanently</source> <source>Delete Permanently</source>
<translation type="unfinished">Végleges törlés</translation> <translation>Végleges törlés</translation>
</message> </message>
<message> <message>
<location filename="../download.ui" line="346"/> <location filename="../download.ui" line="346"/>
<source>Torrent Properties</source> <source>Torrent Properties</source>
<translation type="unfinished"></translation> <translation>Torrent tulajdonságai</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2181,62 +2182,62 @@ Changelog:
<message> <message>
<location filename="../engineSelect.ui" line="16"/> <location filename="../engineSelect.ui" line="16"/>
<source>Search plugins</source> <source>Search plugins</source>
<translation type="unfinished"></translation> <translation>Kereső modulok</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="29"/> <location filename="../engineSelect.ui" line="29"/>
<source>Installed search engines:</source> <source>Installed search engines:</source>
<translation type="unfinished"></translation> <translation>Telepített keresők:</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="49"/> <location filename="../engineSelect.ui" line="49"/>
<source>Name</source> <source>Name</source>
<translation type="unfinished">Név</translation> <translation>Név</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="54"/> <location filename="../engineSelect.ui" line="54"/>
<source>Url</source> <source>Url</source>
<translation type="unfinished"></translation> <translation>Url</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="59"/> <location filename="../engineSelect.ui" line="59"/>
<source>Enabled</source> <source>Enabled</source>
<translation type="unfinished">Engedélyez</translation> <translation>Státusz</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="72"/> <location filename="../engineSelect.ui" line="72"/>
<source>You can get new search engine plugins here: &lt;a href=&quot;http:plugins.qbittorrent.org&quot;&gt;http://plugins.qbittorrent.org&lt;/a&gt;</source> <source>You can get new search engine plugins here: &lt;a href=&quot;http:plugins.qbittorrent.org&quot;&gt;http://plugins.qbittorrent.org&lt;/a&gt;</source>
<translation type="unfinished"></translation> <translation>Újabb kereső modulok elérhetőek itt : &lt;a href=&quot;http:plugins.qbittorrent.org&quot;&gt;http://plugins.qbittorrent.org&lt;/a&gt;</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="81"/> <location filename="../engineSelect.ui" line="81"/>
<source>Install a new one</source> <source>Install a new one</source>
<translation type="unfinished"></translation> <translation>Új telepítése</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="88"/> <location filename="../engineSelect.ui" line="88"/>
<source>Check for updates</source> <source>Check for updates</source>
<translation type="unfinished"></translation> <translation>Frissítések ellenőrzése</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="95"/> <location filename="../engineSelect.ui" line="95"/>
<source>Close</source> <source>Close</source>
<translation type="unfinished"></translation> <translation>Bezárás</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="104"/> <location filename="../engineSelect.ui" line="104"/>
<source>Enable</source> <source>Enable</source>
<translation type="unfinished"></translation> <translation>Enged</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="109"/> <location filename="../engineSelect.ui" line="109"/>
<source>Disable</source> <source>Disable</source>
<translation type="unfinished">Letiltva</translation> <translation>Tilt</translation>
</message> </message>
<message> <message>
<location filename="../engineSelect.ui" line="114"/> <location filename="../engineSelect.ui" line="114"/>
<source>Uninstall</source> <source>Uninstall</source>
<translation type="unfinished"></translation> <translation>Eltávolít</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2244,111 +2245,113 @@ Changelog:
<message> <message>
<location filename="../engineSelectDlg.cpp" line="287"/> <location filename="../engineSelectDlg.cpp" line="287"/>
<source>True</source> <source>True</source>
<translation type="unfinished"></translation> <translation>Engedve</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="289"/> <location filename="../engineSelectDlg.cpp" line="289"/>
<source>False</source> <source>False</source>
<translation type="unfinished"></translation> <translation>Tiltva</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="196"/> <location filename="../engineSelectDlg.cpp" line="196"/>
<source>Uninstall warning</source> <source>Uninstall warning</source>
<translation type="unfinished"></translation> <translation>Figyelemeztetés</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="196"/> <location filename="../engineSelectDlg.cpp" line="196"/>
<source>Some plugins could not be uninstalled because they are included in qBittorrent. <source>Some plugins could not be uninstalled because they are included in qBittorrent.
Only the ones you added yourself can be uninstalled. Only the ones you added yourself can be uninstalled.
However, those plugins were disabled.</source> However, those plugins were disabled.</source>
<translation type="unfinished"></translation> <translation>Néhány modult nem lehet eltávolítani, mivel a program részei.
Csak azokat lehet, amiket saját kezüleg telepítettél.
Viszont azok a modulok kikapcsolhatóak.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="198"/> <location filename="../engineSelectDlg.cpp" line="198"/>
<source>Uninstall success</source> <source>Uninstall success</source>
<translation type="unfinished"></translation> <translation>Sikeresen eltávolítva</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="378"/> <location filename="../engineSelectDlg.cpp" line="378"/>
<source>Select search plugins</source> <source>Select search plugins</source>
<translation type="unfinished"></translation> <translation>Modul kiválasztása</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="379"/> <location filename="../engineSelectDlg.cpp" line="379"/>
<source>qBittorrent search plugins</source> <source>qBittorrent search plugins</source>
<translation type="unfinished"></translation> <translation>qBittorrent kereső modulok</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="497"/> <location filename="../engineSelectDlg.cpp" line="497"/>
<source>Search plugin install</source> <source>Search plugin install</source>
<translation type="unfinished"></translation> <translation>Kerső telepítése</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="524"/> <location filename="../engineSelectDlg.cpp" line="524"/>
<source>qBittorrent</source> <source>qBittorrent</source>
<translation type="unfinished">qBittorrent</translation> <translation>qBittorrent</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="330"/> <location filename="../engineSelectDlg.cpp" line="330"/>
<source>A more recent version of %1 search engine plugin is already installed.</source> <source>A more recent version of %1 search engine plugin is already installed.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>A %1 kereső modul egy újabb verziója már telepítve van.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="524"/> <location filename="../engineSelectDlg.cpp" line="524"/>
<source>Search plugin update</source> <source>Search plugin update</source>
<translation type="unfinished">Kereső modul frissítése</translation> <translation>Kereső modul frissítése</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="516"/> <location filename="../engineSelectDlg.cpp" line="516"/>
<source>Sorry, update server is temporarily unavailable.</source> <source>Sorry, update server is temporarily unavailable.</source>
<translation type="unfinished">A kiszolgálő jelenleg nem elérhető. Bocs.</translation> <translation>A kiszolgálő jelenleg nem elérhető. Bocs.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="524"/> <location filename="../engineSelectDlg.cpp" line="524"/>
<source>Sorry, %1 search plugin update failed.</source> <source>Sorry, %1 search plugin update failed.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>Bocs, nem sikerült frissíteni: %1.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="426"/> <location filename="../engineSelectDlg.cpp" line="426"/>
<source>All your plugins are already up to date.</source> <source>All your plugins are already up to date.</source>
<translation type="unfinished"></translation> <translation>A legújabb kereső modulokat használod.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="352"/> <location filename="../engineSelectDlg.cpp" line="352"/>
<source>%1 search engine plugin could not be updated, keeping old version.</source> <source>%1 search engine plugin could not be updated, keeping old version.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>%1 keresőt nem lehet frissíteni, előző verzió megtartva.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="357"/> <location filename="../engineSelectDlg.cpp" line="357"/>
<source>%1 search engine plugin could not be installed.</source> <source>%1 search engine plugin could not be installed.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>%1 kereső modul telepítése sikertelen.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="198"/> <location filename="../engineSelectDlg.cpp" line="198"/>
<source>All selected plugins were uninstalled successfully</source> <source>All selected plugins were uninstalled successfully</source>
<translation type="unfinished"></translation> <translation>Kereső modul(ok) sikeresen eltávolítva</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="368"/> <location filename="../engineSelectDlg.cpp" line="368"/>
<source>%1 search engine plugin was successfully updated.</source> <source>%1 search engine plugin was successfully updated.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>%1 kereső modul sikeresen frissítve.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="497"/> <location filename="../engineSelectDlg.cpp" line="497"/>
<source>%1 search engine plugin was successfully installed.</source> <source>%1 search engine plugin was successfully installed.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>%1 kereső modul sikeresen telepítve.</translation>
</message> </message>
<message> <message>
<location filename="../engineSelectDlg.cpp" line="499"/> <location filename="../engineSelectDlg.cpp" line="499"/>
<source>%1 search plugin was successfully updated.</source> <source>%1 search plugin was successfully updated.</source>
<comment>%1 is the name of the search engine</comment> <comment>%1 is the name of the search engine</comment>
<translation type="unfinished"></translation> <translation>%1 kereső modul sikeresen frissítve.</translation>
</message> </message>
</context> </context>
<context> <context>
@ -2855,7 +2858,7 @@ However, those plugins were disabled.</source>
<message> <message>
<location filename="../search.ui" line="99"/> <location filename="../search.ui" line="99"/>
<source>Search engines...</source> <source>Search engines...</source>
<translation type="unfinished"></translation> <translation>Keresők...</translation>
</message> </message>
</context> </context>
<context> <context>

Loading…
Cancel
Save