From dfcf74000e0c8021b62a74ffe0068ff685decb97 Mon Sep 17 00:00:00 2001 From: mkaay Date: Thu, 4 Feb 2010 19:06:26 +0100 Subject: better gui performance, i18n in gui, new pot files --- locale/cli.pot | 145 +++++++++++++++++++ locale/core.pot | 204 ++++++++++++++++++++++++++ locale/gui.pot | 254 +++++++++++++++++++++++++++++++++ locale/messages.pot | 205 -------------------------- locale/plugins.pot | 44 ++++++ module/config/gui_default.xml | 1 + module/gui/CaptchaDock.py | 6 +- module/gui/ConnectionManager.py | 26 ++-- module/gui/MainWindow.py | 63 ++++---- module/gui/PWInputWindow.py | 6 +- module/gui/PackageDock.py | 8 +- module/gui/Queue.py | 18 ++- module/gui/connector.py | 2 +- module/network/Request.py | 2 +- module/plugins/hoster/RapidshareCom.py | 10 +- module/plugins/hoster/UploadedTo.py | 2 +- pyLoadCore.py | 36 +++-- pyLoadGui.py | 20 +-- 18 files changed, 755 insertions(+), 297 deletions(-) create mode 100644 locale/cli.pot create mode 100644 locale/core.pot create mode 100644 locale/gui.pot delete mode 100644 locale/messages.pot create mode 100644 locale/plugins.pot diff --git a/locale/cli.pot b/locale/cli.pot new file mode 100644 index 000000000..ffdd7361f --- /dev/null +++ b/locale/cli.pot @@ -0,0 +1,145 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2010-02-04 18:59+CET\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" +"Generated-By: pygettext.py 1.5\n" + + +#: pyLoadCli.py:48 +msgid "pyLoadCore not running" +msgstr "" + +#: pyLoadCli.py:54 pyLoadCli.py:113 +msgid " Command Line Interface" +msgstr "" + +#: pyLoadCli.py:115 +msgid "%s Downloads:" +msgstr "" + +#: pyLoadCli.py:125 +msgid " Finished in: " +msgstr "" + +#: pyLoadCli.py:125 +msgid " ID: " +msgstr "" + +#: pyLoadCli.py:125 +msgid " Size: " +msgstr "" + +#: pyLoadCli.py:125 +msgid " Speed: " +msgstr "" + +#: pyLoadCli.py:130 +msgid "waiting: " +msgstr "" + +#: pyLoadCli.py:136 pyLoadCli.py:138 +msgid " Files in queue: " +msgstr "" + +#: pyLoadCli.py:136 pyLoadCli.py:138 +msgid " total Speed: " +msgstr "" + +#: pyLoadCli.py:136 pyLoadCli.py:138 +msgid "Status: " +msgstr "" + +#: pyLoadCli.py:150 +msgid "Menu:" +msgstr "" + +#: pyLoadCli.py:155 +msgid " Add Links" +msgstr "" + +#: pyLoadCli.py:157 +msgid " Manage Links" +msgstr "" + +#: pyLoadCli.py:159 +msgid " (Un)Pause Server" +msgstr "" + +#: pyLoadCli.py:161 +msgid " Kill Server" +msgstr "" + +#: pyLoadCli.py:163 +msgid " Quit" +msgstr "" + +#: pyLoadCli.py:173 +msgid "Name your package." +msgstr "" + +#: pyLoadCli.py:183 pyLoadCli.py:200 pyLoadCli.py:244 +msgid " back to main menu" +msgstr "" + +#: pyLoadCli.py:188 +msgid "Package: %s" +msgstr "" + +#: pyLoadCli.py:190 +msgid "Parse the links you want to add." +msgstr "" + +#: pyLoadCli.py:192 +msgid "Type %s when done." +msgstr "" + +#: pyLoadCli.py:194 +msgid "Links added: " +msgstr "" + +#: pyLoadCli.py:206 +msgid "Type d(number of package) to delete a package, r to restart, or w/o d,r to look into it." +msgstr "" + +#: pyLoadCli.py:222 +msgid "Type d(number) of the link you want to delete or r(number) to restart." +msgstr "" + +#: pyLoadCli.py:242 +msgid " - next" +msgstr "" + +#: pyLoadCli.py:242 +msgid " - previous" +msgstr "" + +#: pyLoadCli.py:459 +msgid "Username: " +msgstr "" + +#: pyLoadCli.py:460 +msgid "Adress: " +msgstr "" + +#: pyLoadCli.py:461 +msgid "Use SSL? ([y]/n): " +msgstr "" + +#: pyLoadCli.py:466 +msgid "Port: " +msgstr "" + +#: pyLoadCli.py:468 +msgid "Password: " +msgstr "" + diff --git a/locale/core.pot b/locale/core.pot new file mode 100644 index 000000000..ece179de0 --- /dev/null +++ b/locale/core.pot @@ -0,0 +1,204 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2010-02-03 15:21+CET\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" +"Generated-By: pygettext.py 1.5\n" + + +#: ./module/download_thread.py:115 +msgid "Hoster unvailable, wait 60 seconds" +msgstr "" + +#: ./module/download_thread.py:117 +msgid "Error getting error code: %s" +msgstr "" + +#: ./module/download_thread.py:163 +msgid "Checksum ok ('%s')" +msgstr "" + +#: ./module/download_thread.py:165 +msgid "Checksum not matched! ('%s')" +msgstr "" + +#: ./module/download_thread.py:167 +msgid "Can't get checksum for %s" +msgstr "" + +#: ./module/download_thread.py:169 +msgid "Checksum not implemented for %s" +msgstr "" + +#: ./module/file_list.py:87 +msgid "Found %s links in linkcollector" +msgstr "" + +#: ./module/file_list.py:89 +msgid "Found %s unqueued packages" +msgstr "" + +#: ./module/file_list.py:91 +msgid "Added %s packages to queue" +msgstr "" + +#: ./module/thread_list.py:88 +msgid "Get links from: %s" +msgstr "" + +#: ./module/thread_list.py:90 +msgid "Download starts: %s" +msgstr "" + +#: ./module/thread_list.py:136 +msgid "Parsed links from %s: %i" +msgstr "" + +#: ./module/thread_list.py:138 +msgid "No links in %s" +msgstr "" + +#: ./module/thread_list.py:145 +msgid "Download finished: %s" +msgstr "" + +#: ./module/thread_list.py:151 +msgid "Download failed: %s | %s" +msgstr "" + +#: ./module/thread_list.py:156 +msgid "Download aborted: %s" +msgstr "" + +#: ./module/thread_list.py:206 +msgid "Starting reconnect" +msgstr "" + +#: ./module/thread_list.py:220 +msgid "Reconnected, new IP: %s" +msgstr "" + +#: ./pyLoadCore.py:111 +msgid "pycrypto to decode container files" +msgstr "" + +#: ./pyLoadCore.py:112 +msgid "Python Image Libary (PIL) for captha reading" +msgstr "" + +#: ./pyLoadCore.py:113 +msgid "pycurl for lower memory footprint while downloading" +msgstr "" + +#: ./pyLoadCore.py:114 +msgid "Django for webinterface" +msgstr "" + +#: ./pyLoadCore.py:115 +msgid "tesseract for captcha reading" +msgstr "" + +#: ./pyLoadCore.py:116 +msgid "gocr for captcha reading" +msgstr "" + +#: ./pyLoadCore.py:118 +msgid "folder for logs" +msgstr "" + +#: ./pyLoadCore.py:119 +msgid "folder for downloads" +msgstr "" + +#: ./pyLoadCore.py:120 +msgid "file for links" +msgstr "" + +#: ./pyLoadCore.py:121 +msgid "file for failed links" +msgstr "" + +#: ./pyLoadCore.py:124 +msgid "OpenSSL for secure connection" +msgstr "" + +#: ./pyLoadCore.py:125 +msgid "ssl certificate" +msgstr "" + +#: ./pyLoadCore.py:126 +msgid "ssl key" +msgstr "" + +#: ./pyLoadCore.py:150 +msgid "Downloadtime: %s" +msgstr "" + +#: ./pyLoadCore.py:179 +msgid "restarting pyLoad" +msgstr "" + +#: ./pyLoadCore.py:183 +msgid "pyLoad quits" +msgstr "" + +#: ./pyLoadCore.py:194 +msgid "Secure XMLRPC Server Started" +msgstr "" + +#: ./pyLoadCore.py:197 +msgid "Auth XMLRPC Server Started" +msgstr "" + +#: ./pyLoadCore.py:203 +msgid "Failed starting XMLRPC server CLI and GUI will not be available: %s" +msgstr "" + +#: ./pyLoadCore.py:272 +msgid "%s created" +msgstr "" + +#: ./pyLoadCore.py:275 +msgid "could not find %s: %s" +msgstr "" + +#: ./pyLoadCore.py:277 +msgid "could not create %s: %s" +msgstr "" + +#: ./pyLoadCore.py:305 +msgid "%s added" +msgstr "" + +#: ./pyLoadCore.py:306 +msgid "created index of plugins" +msgstr "" + +#: ./pyLoadCore.py:325 +msgid "shutting down..." +msgstr "" + +#: ./pyLoadCore.py:341 +msgid "No Updates for pyLoad" +msgstr "" + +#: ./pyLoadCore.py:344 +msgid "New pyLoad Version %s available" +msgstr "" + +#: ./pyLoadCore.py:369 +msgid "Auto install Failed" +msgstr "" + +#: ./pyLoadCore.py:607 +msgid "killed pyLoad from Terminal" +msgstr "" diff --git a/locale/gui.pot b/locale/gui.pot new file mode 100644 index 000000000..aae5349f0 --- /dev/null +++ b/locale/gui.pot @@ -0,0 +1,254 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2010-02-03 15:21+CET\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" +"Generated-By: pygettext.py 1.5\n" + +#: ./module/gui/CaptchaDock.py:25 +msgid "Captcha" +msgstr "" + +#: ./module/gui/CaptchaDock.py:56 ./module/gui/PWInputWindow.py:28 +msgid "OK" +msgstr "" + +#: ./module/gui/CaptchaDock.py:57 ./module/gui/ConnectionManager.py:154 +#: ./module/gui/PWInputWindow.py:29 +msgid "Cancel" +msgstr "" + +#: ./module/gui/ConnectionManager.py:33 +msgid "New" +msgstr "" + +#: ./module/gui/ConnectionManager.py:34 +msgid "Edit" +msgstr "" + +#: ./module/gui/ConnectionManager.py:35 ./module/gui/MainWindow.py:191 +#: ./module/gui/MainWindow.py:205 +msgid "Remove" +msgstr "" + +#: ./module/gui/ConnectionManager.py:36 +msgid "Connect" +msgstr "" + +#: ./module/gui/ConnectionManager.py:76 +msgid "%s (Default)" +msgstr "" + +#: ./module/gui/ConnectionManager.py:138 +msgid "Name:" +msgstr "" + +#: ./module/gui/ConnectionManager.py:139 +msgid "Host:" +msgstr "" + +#: ./module/gui/ConnectionManager.py:140 +msgid "SSL:" +msgstr "" + +#: ./module/gui/ConnectionManager.py:141 +msgid "Local:" +msgstr "" + +#: ./module/gui/ConnectionManager.py:142 +msgid "User:" +msgstr "" + +#: ./module/gui/ConnectionManager.py:143 +msgid "Port:" +msgstr "" + +#: ./module/gui/ConnectionManager.py:153 +msgid "Save" +msgstr "" + +#: ./module/gui/MainWindow.py:33 +msgid "pyLoad Client" +msgstr "" + +#: ./module/gui/MainWindow.py:60 +msgid "Status: Not Connected" +msgstr "" + +#: ./module/gui/MainWindow.py:65 +msgid "File" +msgstr "" + +#: ./module/gui/MainWindow.py:66 +msgid "Connections" +msgstr "" + +#: ./module/gui/MainWindow.py:70 +msgid "Exit" +msgstr "" + +#: ./module/gui/MainWindow.py:71 +msgid "Connection manager" +msgstr "" + +#: ./module/gui/MainWindow.py:88 +msgid "Queue" +msgstr "" + +#: ./module/gui/MainWindow.py:89 +msgid "Collector" +msgstr "" + +#: ./module/gui/MainWindow.py:90 +msgid "Settings" +msgstr "" + +#: ./module/gui/MainWindow.py:91 +msgid "Log" +msgstr "" + +#: ./module/gui/MainWindow.py:117 +msgid "Main Toolbar" +msgstr "" + +#: ./module/gui/MainWindow.py:120 +msgid "Toggle Pause/Resume" +msgstr "" + +#: ./module/gui/MainWindow.py:126 +msgid "Stop" +msgstr "" + +#: ./module/gui/MainWindow.py:128 +msgid "Add" +msgstr "" + +#: ./module/gui/MainWindow.py:130 +msgid "Check Clipboard" +msgstr "" + +#: ./module/gui/MainWindow.py:137 +msgid "Package" +msgstr "" + +#: ./module/gui/MainWindow.py:138 +msgid "Links" +msgstr "" + +#: ./module/gui/MainWindow.py:139 +msgid "Container" +msgstr "" + +#: ./module/gui/MainWindow.py:156 +msgid "Packages" +msgstr "" + +#: ./module/gui/MainWindow.py:158 +msgid "Push selected packages to queue" +msgstr "" + +#: ./module/gui/MainWindow.py:192 +msgid "Restart" +msgstr "" + +#: ./module/gui/MainWindow.py:193 +msgid "Pull out" +msgstr "" + +#: ./module/gui/MainWindow.py:206 +msgid "Push to queue" +msgstr "" + +#: ./module/gui/MainWindow.py:207 +msgid "Edit Name" +msgstr "" + +#: ./module/gui/MainWindow.py:277 +msgid "All Container Types (%s)" +msgstr "" + +#: ./module/gui/MainWindow.py:278 +msgid "DLC (%s)" +msgstr "" + +#: ./module/gui/MainWindow.py:279 +msgid "CCF (%s)" +msgstr "" + +#: ./module/gui/MainWindow.py:280 +msgid "RSDF (%s)" +msgstr "" + +#: ./module/gui/MainWindow.py:281 +msgid "Text Files (%s)" +msgstr "" + +#: ./module/gui/MainWindow.py:283 +msgid "Open container" +msgstr "" + +#: ./module/gui/MainWindow.py:306 +msgid "Single Links" +msgstr "" + +#: ./module/gui/PWInputWindow.py:27 +msgid "Password:" +msgstr "" + +#: ./module/gui/PackageDock.py:24 +msgid "New Package" +msgstr "" + +#: ./module/gui/PackageDock.py:50 ./pyLoadGui.py:236 +msgid "Name" +msgstr "" + +#: ./module/gui/PackageDock.py:53 +msgid "Links in this Package" +msgstr "" + +#: ./module/gui/PackageDock.py:68 +msgid "Create" +msgstr "" + +#: ./pyLoadGui.py:236 +msgid "Plugin" +msgstr "" + +#: ./pyLoadGui.py:236 +msgid "Progress" +msgstr "" + +#: ./pyLoadGui.py:236 +msgid "Status" +msgstr "" + +#: ./pyLoadGui.py:252 +msgid "Paused" +msgstr "" + +#: ./pyLoadGui.py:254 +msgid "Running" +msgstr "" + +#: ./pyLoadGui.py:256 +msgid "Status: %(status)s | Speed: %(speed)s kb/s" +msgstr "" + +#: ./pyLoadGui.py:281 +msgid "Update Available" +msgstr "" + +#: ./pyLoadGui.py:305 +msgid "Unnamed" +msgstr "" + diff --git a/locale/messages.pot b/locale/messages.pot deleted file mode 100644 index 1994499df..000000000 --- a/locale/messages.pot +++ /dev/null @@ -1,205 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR ORGANIZATION -# FIRST AUTHOR , YEAR. -# -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-02-02 21:54+CET\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: ENCODING\n" -"Generated-By: pygettext.py 1.5\n" - - -#: module/download_thread.py:115 -msgid "Hoster unvailable, wait 60 seconds" -msgstr "" - -#: module/download_thread.py:117 -msgid "Error getting error code: %s" -msgstr "" - -#: module/download_thread.py:163 -msgid "Checksum ok ('%s')" -msgstr "" - -#: module/download_thread.py:165 -msgid "Checksum not matched! ('%s')" -msgstr "" - -#: module/download_thread.py:167 -msgid "Can't get checksum for %s" -msgstr "" - -#: module/download_thread.py:169 -msgid "Checksum not implemented for %s" -msgstr "" - -#: module/file_list.py:87 -msgid "Found %s links in linkcollector" -msgstr "" - -#: module/file_list.py:89 -msgid "Found %s unqueued packages" -msgstr "" - -#: module/file_list.py:91 -msgid "Added %s packages to queue" -msgstr "" - -#: module/thread_list.py:88 -msgid "Get links from: %s" -msgstr "" - -#: module/thread_list.py:90 -msgid "Download starts: %s" -msgstr "" - -#: module/thread_list.py:136 -msgid "Parsed links from %s: %i" -msgstr "" - -#: module/thread_list.py:138 -msgid "No links in %s" -msgstr "" - -#: module/thread_list.py:145 -msgid "Download finished: %s" -msgstr "" - -#: module/thread_list.py:151 -msgid "Download failed: %s | %s" -msgstr "" - -#: module/thread_list.py:156 -msgid "Download aborted: %s" -msgstr "" - -#: module/thread_list.py:206 -msgid "Starting reconnect" -msgstr "" - -#: module/thread_list.py:220 -msgid "Reconnected, new IP: %s" -msgstr "" - -#: pyLoadCore.py:111 -msgid "pycrypto to decode container files" -msgstr "" - -#: pyLoadCore.py:112 -msgid "Python Image Libary (PIL) for captha reading" -msgstr "" - -#: pyLoadCore.py:113 -msgid "pycurl for lower memory footprint while downloading" -msgstr "" - -#: pyLoadCore.py:114 -msgid "Django for webinterface" -msgstr "" - -#: pyLoadCore.py:115 -msgid "tesseract for captcha reading" -msgstr "" - -#: pyLoadCore.py:116 -msgid "gocr for captcha reading" -msgstr "" - -#: pyLoadCore.py:118 -msgid "folder for logs" -msgstr "" - -#: pyLoadCore.py:119 -msgid "folder for downloads" -msgstr "" - -#: pyLoadCore.py:120 -msgid "file for links" -msgstr "" - -#: pyLoadCore.py:121 -msgid "file for failed links" -msgstr "" - -#: pyLoadCore.py:124 -msgid "OpenSSL for secure connection" -msgstr "" - -#: pyLoadCore.py:125 -msgid "ssl certificate" -msgstr "" - -#: pyLoadCore.py:126 -msgid "ssl key" -msgstr "" - -#: pyLoadCore.py:150 -msgid "Downloadtime: %s" -msgstr "" - -#: pyLoadCore.py:179 -msgid "restarting pyLoad" -msgstr "" - -#: pyLoadCore.py:183 -msgid "pyLoad quits" -msgstr "" - -#: pyLoadCore.py:194 -msgid "Secure XMLRPC Server Started" -msgstr "" - -#: pyLoadCore.py:197 -msgid "Auth XMLRPC Server Started" -msgstr "" - -#: pyLoadCore.py:203 -msgid "Failed starting XMLRPC server, CLI and GUI will not be available: %s" -msgstr "" - -#: pyLoadCore.py:272 -msgid "%s created" -msgstr "" - -#: pyLoadCore.py:275 -msgid "could not find %s: %s" -msgstr "" - -#: pyLoadCore.py:277 -msgid "could not create %s: %s" -msgstr "" - -#: pyLoadCore.py:305 -msgid "%s added" -msgstr "" - -#: pyLoadCore.py:306 -msgid "created index of plugins" -msgstr "" - -#: pyLoadCore.py:325 -msgid "shutting down..." -msgstr "" - -#: pyLoadCore.py:341 -msgid "No Updates for pyLoad" -msgstr "" - -#: pyLoadCore.py:344 -msgid "New pyLoad Version %s available" -msgstr "" - -#: pyLoadCore.py:369 -msgid "Auto install Failed" -msgstr "" - -#: pyLoadCore.py:607 -msgid "killed pyLoad from Terminal" -msgstr "" - diff --git a/locale/plugins.pot b/locale/plugins.pot new file mode 100644 index 000000000..853d2acfd --- /dev/null +++ b/locale/plugins.pot @@ -0,0 +1,44 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR ORGANIZATION +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"POT-Creation-Date: 2010-02-03 15:21+CET\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: ENCODING\n" +"Generated-By: pygettext.py 1.5\n" + + +#: ./module/plugins/hooks/ExternalScripts.py:44 +msgid "folders for scripts" +msgstr "" + +#: ./module/plugins/hoster/RapidshareCom.py:50 +msgid "Rapidshare: Use Premium Account (%sGB left)" +msgstr "" + +#: ./module/plugins/hoster/RapidshareCom.py:65 +msgid "Rapidshare: Traffic Share (direct download)" +msgstr "" + +#: ./module/plugins/hoster/RapidshareCom.py:118 +msgid "Rapidshare: Not enough traffic left" +msgstr "" + +#: ./module/plugins/hoster/RapidshareCom.py:138 +msgid "Rapidshare: Already downloading, wait 30 minutes" +msgstr "" + +#: ./module/plugins/hoster/RapidshareCom.py:149 +msgid "Rapidshare: No free slots!" +msgstr "" + +#: ./module/plugins/hoster/UploadedTo.py:139 +msgid "UploadedTo indirect download" +msgstr "" diff --git a/module/config/gui_default.xml b/module/config/gui_default.xml index 490af199e..1faed776f 100644 --- a/module/config/gui_default.xml +++ b/module/config/gui_default.xml @@ -9,4 +9,5 @@ + en diff --git a/module/gui/CaptchaDock.py b/module/gui/CaptchaDock.py index 8a7e8010e..4f3c9efd0 100644 --- a/module/gui/CaptchaDock.py +++ b/module/gui/CaptchaDock.py @@ -22,7 +22,7 @@ from PyQt4.QtGui import * class CaptchaDock(QDockWidget): def __init__(self): - QDockWidget.__init__(self, "Captcha") + QDockWidget.__init__(self, _("Captcha")) self.setObjectName("Captcha Dock") self.widget = CaptchaDockWidget(self) self.setWidget(self.widget) @@ -53,8 +53,8 @@ class CaptchaDockWidget(QWidget): imgLabel = QLabel() captchaInput = QLineEdit() - okayButton = QPushButton("OK") - cancelButton = QPushButton("Cancel") + okayButton = QPushButton(_("OK")) + cancelButton = QPushButton(_("Cancel")) layout.addStretch() layout.addWidget(imgLabel) diff --git a/module/gui/ConnectionManager.py b/module/gui/ConnectionManager.py index 57aed3a18..29e95f637 100644 --- a/module/gui/ConnectionManager.py +++ b/module/gui/ConnectionManager.py @@ -30,10 +30,10 @@ class ConnectionManager(QWidget): connList = QListWidget() - new = QPushButton("New") - edit = QPushButton("Edit") - remove = QPushButton("Remove") - connect = QPushButton("Connect") + new = QPushButton(_("New")) + edit = QPushButton(_("Edit")) + remove = QPushButton(_("Remove")) + connect = QPushButton(_("Connect")) mainLayout.addWidget(connList) mainLayout.addLayout(buttonLayout) @@ -73,7 +73,7 @@ class ConnectionManager(QWidget): item.setData(Qt.UserRole, QVariant(conn)) self.connList.addItem(item) if conn["default"]: - item.setData(Qt.DisplayRole, QVariant("%s (Default)" % conn["name"])) + item.setData(Qt.DisplayRole, QVariant(_("%s (Default)") % conn["name"])) self.connList.setCurrentItem(item) def slotNew(self): @@ -135,12 +135,12 @@ class ConnectionManager(QWidget): grid = QGridLayout() - nameLabel = QLabel("Name:") - hostLabel = QLabel("Host:") - sslLabel = QLabel("SSL:") - localLabel = QLabel("Local:") - userLabel = QLabel("User:") - portLabel = QLabel("Port:") + nameLabel = QLabel(_("Name:")) + hostLabel = QLabel(_("Host:")) + sslLabel = QLabel(_("SSL:")) + localLabel = QLabel(_("Local:")) + userLabel = QLabel(_("User:")) + portLabel = QLabel(_("Port:")) name = QLineEdit() host = QLineEdit() @@ -150,8 +150,8 @@ class ConnectionManager(QWidget): port = QSpinBox() port.setRange(1,10000) - save = QPushButton("Save") - cancel = QPushButton("Cancel") + save = QPushButton(_("Save")) + cancel = QPushButton(_("Cancel")) grid.addWidget(nameLabel, 0, 0) grid.addWidget(name, 0, 1) diff --git a/module/gui/MainWindow.py b/module/gui/MainWindow.py index 250b701e4..16a409f64 100644 --- a/module/gui/MainWindow.py +++ b/module/gui/MainWindow.py @@ -30,7 +30,7 @@ class MainWindow(QMainWindow): """ QMainWindow.__init__(self) #window stuff - self.setWindowTitle("pyLoad Client") + self.setWindowTitle(_("pyLoad Client")) self.setWindowIcon(QIcon("icons/logo.png")) self.resize(850,500) @@ -57,18 +57,18 @@ class MainWindow(QMainWindow): self.menubar = self.menuBar() self.statusbar = self.statusBar() self.connect(self.statusbar, SIGNAL("showMsg"), self.statusbar.showMessage) - self.serverStatus = QLabel("Status: Not Connected") + self.serverStatus = QLabel(_("Status: Not Connected")) self.statusbar.addPermanentWidget(self.serverStatus) #menu self.menus = {} - self.menus["file"] = self.menubar.addMenu("&File") - self.menus["connections"] = self.menubar.addMenu("&Connections") + self.menus["file"] = self.menubar.addMenu(_("File")) + self.menus["connections"] = self.menubar.addMenu(_("Connections")) #menu actions self.mactions = {} - self.mactions["exit"] = QAction("Exit", self.menus["file"]) - self.mactions["manager"] = QAction("Connection manager", self.menus["connections"]) + self.mactions["exit"] = QAction(_("Exit"), self.menus["file"]) + self.mactions["manager"] = QAction(_("Connection manager"), self.menus["connections"]) #add menu actions self.menus["file"].addAction(self.mactions["exit"]) @@ -85,10 +85,10 @@ class MainWindow(QMainWindow): self.tabs["collector"] = {"w":QWidget()} self.tabs["settings"] = {"w":QWidget()} self.tabs["log"] = {"w":QWidget()} - self.tabw.addTab(self.tabs["queue"]["w"], "Queue") - self.tabw.addTab(self.tabs["collector"]["w"], "Collector") - self.tabw.addTab(self.tabs["settings"]["w"], "Settings") - self.tabw.addTab(self.tabs["log"]["w"], "Log") + self.tabw.addTab(self.tabs["queue"]["w"], _("Queue")) + self.tabw.addTab(self.tabs["collector"]["w"], _("Collector")) + self.tabw.addTab(self.tabs["settings"]["w"], _("Settings")) + self.tabw.addTab(self.tabs["log"]["w"], _("Log")) self.tabw.setTabEnabled(2, False) #init tabs @@ -114,29 +114,29 @@ class MainWindow(QMainWindow): """ create toolbar """ - self.toolbar = self.addToolBar("Main Toolbar") + self.toolbar = self.addToolBar(_("Main Toolbar")) self.toolbar.setObjectName("Main Toolbar") self.toolbar.setIconSize(QSize(40,40)) - self.actions["toggle_status"] = self.toolbar.addAction("Toggle Pause/Resume") + self.actions["toggle_status"] = self.toolbar.addAction(_("Toggle Pause/Resume")) pricon = QIcon() pricon.addFile("icons/gui/toolbar_start.png", QSize(), QIcon.Normal, QIcon.Off) pricon.addFile("icons/gui/toolbar_pause.png", QSize(), QIcon.Normal, QIcon.On) self.actions["toggle_status"].setIcon(pricon) self.actions["toggle_status"].setCheckable(True) - self.actions["status_stop"] = self.toolbar.addAction(QIcon("icons/gui/toolbar_stop.png"), "Stop") + self.actions["status_stop"] = self.toolbar.addAction(QIcon("icons/gui/toolbar_stop.png"), _("Stop")) self.toolbar.addSeparator() - self.actions["add"] = self.toolbar.addAction(QIcon("icons/gui/toolbar_add.png"), "Add") + self.actions["add"] = self.toolbar.addAction(QIcon("icons/gui/toolbar_add.png"), _("Add")) self.toolbar.addSeparator() - self.actions["clipboard"] = self.toolbar.addAction(QIcon("icons/gui/clipboard.png"), "Check Clipboard") + self.actions["clipboard"] = self.toolbar.addAction(QIcon("icons/gui/clipboard.png"), _("Check Clipboard")) self.actions["clipboard"].setCheckable(True) self.connect(self.actions["toggle_status"], SIGNAL("toggled(bool)"), self.slotToggleStatus) self.connect(self.actions["clipboard"], SIGNAL("toggled(bool)"), self.slotToggleClipboard) self.connect(self.actions["status_stop"], SIGNAL("triggered()"), self.slotStatusStop) self.addMenu = QMenu() - packageAction = self.addMenu.addAction("Package") - linkAction = self.addMenu.addAction("Links") - containerAction = self.addMenu.addAction("Container") + packageAction = self.addMenu.addAction(_("Package")) + linkAction = self.addMenu.addAction(_("Links")) + containerAction = self.addMenu.addAction(_("Container")) self.connect(self.actions["add"], SIGNAL("triggered()"), self.slotAdd) self.connect(packageAction, SIGNAL("triggered()"), self.slotShowAddPackage) self.connect(linkAction, SIGNAL("triggered()"), self.slotShowAddLinks) @@ -153,9 +153,9 @@ class MainWindow(QMainWindow): self.tabs["queue"]["l"].addWidget(self.tabs["queue"]["view"]) #collector - groupPackage = QGroupBox("Packages") + groupPackage = QGroupBox(_("Packages")) groupPackage.setLayout(QVBoxLayout()) - toQueue = QPushButton("Push selected packages to queue") + toQueue = QPushButton(_("Push selected packages to queue")) self.tabs["collector"]["l"] = QGridLayout() self.tabs["collector"]["w"].setLayout(self.tabs["collector"]["l"]) self.tabs["collector"]["package_view"] = QTreeWidget() @@ -188,9 +188,9 @@ class MainWindow(QMainWindow): self.queueContext = QMenu() self.queueContext.buttons = {} self.queueContext.item = (None, None) - self.queueContext.buttons["remove"] = QAction(QIcon("icons/gui/remove_small.png"), "Remove", self.queueContext) - self.queueContext.buttons["restart"] = QAction(QIcon("icons/gui/refresh_small.png"), "Restart", self.queueContext) - self.queueContext.buttons["pull"] = QAction(QIcon("icons/gui/pull_small.png"), "Pull out", self.queueContext) + self.queueContext.buttons["remove"] = QAction(QIcon("icons/gui/remove_small.png"), _("Remove"), self.queueContext) + self.queueContext.buttons["restart"] = QAction(QIcon("icons/gui/refresh_small.png"), _("Restart"), self.queueContext) + self.queueContext.buttons["pull"] = QAction(QIcon("icons/gui/pull_small.png"), _("Pull out"), self.queueContext) self.queueContext.addAction(self.queueContext.buttons["pull"]) self.queueContext.addAction(self.queueContext.buttons["remove"]) self.queueContext.addAction(self.queueContext.buttons["restart"]) @@ -202,9 +202,9 @@ class MainWindow(QMainWindow): self.collectorContext = QMenu() self.collectorContext.buttons = {} self.collectorContext.item = (None, None) - self.collectorContext.buttons["remove"] = QAction(QIcon("icons/gui/remove_small.png"), "Remove", self.collectorContext) - self.collectorContext.buttons["push"] = QAction(QIcon("icons/gui/push_small.png"), "Push to queue", self.collectorContext) - self.collectorContext.buttons["edit"] = QAction(QIcon("icons/gui/edit_small.png"), "Edit Name", self.collectorContext) + self.collectorContext.buttons["remove"] = QAction(QIcon("icons/gui/remove_small.png"), _("Remove"), self.collectorContext) + self.collectorContext.buttons["push"] = QAction(QIcon("icons/gui/push_small.png"), _("Push to queue"), self.collectorContext) + self.collectorContext.buttons["edit"] = QAction(QIcon("icons/gui/edit_small.png"), _("Edit Name"), self.collectorContext) self.collectorContext.addAction(self.collectorContext.buttons["push"]) self.collectorContext.addAction(self.collectorContext.buttons["edit"]) self.collectorContext.addAction(self.collectorContext.buttons["remove"]) @@ -273,7 +273,14 @@ class MainWindow(QMainWindow): action from add-menu show file selector, emit upload """ - fileNames = QFileDialog.getOpenFileNames(self, "Container Öffnen", "", "All Container Types (*.dlc *.ccf *.rsdf *.txt);;DLC (*.dlc);;CCF (*.ccf);;RSDF (*.rsdf);;Text Files (*.txt)") + typeStr = ";;".join([ + _("All Container Types (%s)") % "*.dlc *.ccf *.rsdf *.txt", + _("DLC (%s)") % "*.dlc", + _("CCF (%s)") % "*.ccf", + _("RSDF (%s)") % "*.rsdf", + _("Text Files (%s)") % "*.txt" + ]) + fileNames = QFileDialog.getOpenFileNames(self, _("Open container"), "", typeStr) for name in fileNames: self.emit(SIGNAL("addContainer"), str(name)) @@ -296,7 +303,7 @@ class MainWindow(QMainWindow): ids = [] for child in pack.getChildren(): ids.append(child.getFileData()["id"]) - self.emit(SIGNAL("addPackage"), "Single Links", ids) + self.emit(SIGNAL("addPackage"), _("Single Links"), ids) id = self.lastAddedID self.emit(SIGNAL("pushPackageToQueue"), id) diff --git a/module/gui/PWInputWindow.py b/module/gui/PWInputWindow.py index 4fc834c4f..e2b82e384 100644 --- a/module/gui/PWInputWindow.py +++ b/module/gui/PWInputWindow.py @@ -24,9 +24,9 @@ class PWInputWindow(QWidget): QWidget.__init__(self) self.input = QLineEdit() self.input.setEchoMode(QLineEdit.Password) - label = QLabel("Password:") - ok = QPushButton("OK") - cancel = QPushButton("Cancel") + label = QLabel(_("Password:")) + ok = QPushButton(_("OK")) + cancel = QPushButton(_("Cancel")) grid = QGridLayout() grid.addWidget(label, 0, 0, 1, 2) grid.addWidget(self.input, 1, 0, 1, 2) diff --git a/module/gui/PackageDock.py b/module/gui/PackageDock.py index c81798935..fec5466c2 100644 --- a/module/gui/PackageDock.py +++ b/module/gui/PackageDock.py @@ -21,7 +21,7 @@ from PyQt4.QtGui import * class NewPackageDock(QDockWidget): def __init__(self): - QDockWidget.__init__(self, "New Package") + QDockWidget.__init__(self, _("New Package")) self.setObjectName("New Package Dock") self.widget = NewPackageWindow(self) self.setWidget(self.widget) @@ -47,10 +47,10 @@ class NewPackageWindow(QWidget): self.setLayout(QGridLayout()) layout = self.layout() - nameLabel = QLabel("Name") + nameLabel = QLabel(_("Name")) nameInput = QLineEdit() - linksLabel = QLabel("Links in this Package") + linksLabel = QLabel(_("Links in this Package")) linkView = QTreeWidget() linkView.setSelectionBehavior(QAbstractItemView.SelectRows) linkView.setSelectionMode(QAbstractItemView.ExtendedSelection) @@ -65,7 +65,7 @@ class NewPackageWindow(QWidget): self.view = linkView self.nameInput = nameInput - save = QPushButton("Create") + save = QPushButton(_("Create")) layout.addWidget(nameLabel, 0, 0) layout.addWidget(nameInput, 0, 1) diff --git a/module/gui/Queue.py b/module/gui/Queue.py index bd45e27dc..2aeb603b0 100644 --- a/module/gui/Queue.py +++ b/module/gui/Queue.py @@ -68,7 +68,6 @@ class Queue(QObject): def update(self): locker = QMutexLocker(self.mutex) - packs = self.connector.getPackageQueue() downloading_raw = self.connector.getDownloadQueue() downloading = {} for d in downloading_raw: @@ -93,16 +92,15 @@ class Queue(QObject): packs = self.connector.getPackageQueue() for data in packs: pack = self.QueuePack(self) - pack.setPackData(data) - files = self.connector.getPackageFiles(data["id"]) - for fid in files: - info = self.connector.getLinkInfo(fid) + pack.setPackData(data["data"]) + files = data["children"] + for fdata in files: child = self.QueueFile(self, pack) - if not info["status_type"]: - info["status_type"] = "queued" - child.setFileData(info) - pack.addPackChild(fid, child) - self.addPack(data["id"], pack) + if not fdata["status_type"]: + fdata["status_type"] = "queued" + child.setFileData(fdata) + pack.addPackChild(fdata["id"], child) + self.addPack(data["data"]["id"], pack) def addEvent(self, event): locker = QMutexLocker(self.mutex) diff --git a/module/gui/connector.py b/module/gui/connector.py index b6c383956..7b872a0a9 100644 --- a/module/gui/connector.py +++ b/module/gui/connector.py @@ -154,7 +154,7 @@ class connector(QThread): """ self.mutex.lock() try: - return self.proxy.get_queue() + return self.proxy.get_full_queue() except Exception, e: self.emit(SIGNAL("proxy_error"), "getPackageQueue", e) finally: diff --git a/module/network/Request.py b/module/network/Request.py index 3c669e77a..5e3503bb3 100755 --- a/module/network/Request.py +++ b/module/network/Request.py @@ -461,7 +461,7 @@ class Request: def progress(self, dl_t, dl_d, up_t, up_d): if self.abort: return False - self.dl_arrived = self.offset+int(dl_d) + self.dl_arrived = int(dl_d) self.dl_size = int(dl_t) def get_free_name(self, file_name): diff --git a/module/plugins/hoster/RapidshareCom.py b/module/plugins/hoster/RapidshareCom.py index d0b6ffcd9..d7a47e6ae 100644 --- a/module/plugins/hoster/RapidshareCom.py +++ b/module/plugins/hoster/RapidshareCom.py @@ -47,7 +47,7 @@ class RapidshareCom(Plugin): pyfile.status.filename = self.get_file_name() if self.config["premium"]: - self.logger.info("Rapidshare: Use Premium Account (%sGB left)" % (self.props["premkbleft"]/1000000)) + self.logger.info(_("Rapidshare: Use Premium Account (%sGB left)") % (self.props["premkbleft"]/1000000)) pyfile.status.url = self.parent.url return True @@ -62,7 +62,7 @@ class RapidshareCom(Plugin): return True elif self.api_data["status"] == "2": - self.logger.info("Rapidshare: Traffic Share (direct download)") + self.logger.info(_("Rapidshare: Traffic Share (direct download)")) pyfile.status.filename = self.get_file_name() pyfile.status.url = self.parent.url return True @@ -115,7 +115,7 @@ class RapidshareCom(Plugin): fields = src.split("\n") premkbleft = int(fields[19].split("=")[1]) if premkbleft < int(self.api_data["size"][0:-3]): - self.logger.info("Rapidshare: Not enough traffic left") + self.logger.info(_("Rapidshare: Not enough traffic left")) self.config["premium"] = False else: self.props["premkbleft"] = premkbleft @@ -135,7 +135,7 @@ class RapidshareCom(Plugin): self.html_old = time() if re.search(r"is already downloading", self.html[1]): - self.logger.info("Rapidshare: Already downloading, wait 30 minutes") + self.logger.info(_("Rapidshare: Already downloading, wait 30 minutes")) self.time_plus_wait = time() + 10 * 30 return self.no_slots = False @@ -146,7 +146,7 @@ class RapidshareCom(Plugin): except: if re.search(r"(Currently a lot of users|no more download slots|servers are overloaded)", self.html[1], re.I) != None: self.time_plus_wait = time() + 130 - self.logger.info("Rapidshare: No free slots!") + self.logger.info(_("Rapidshare: No free slots!")) self.no_slots = True return True self.no_slots = False diff --git a/module/plugins/hoster/UploadedTo.py b/module/plugins/hoster/UploadedTo.py index 59fdad5dc..38529eb4f 100644 --- a/module/plugins/hoster/UploadedTo.py +++ b/module/plugins/hoster/UploadedTo.py @@ -136,7 +136,7 @@ class UploadedTo(Plugin): self.req.load("http://uploaded.to/login", None, { "email" : self.config['username'], "password" : self.config['password']}, cookies=True) self.req.load(url, cookies=True, just_header=True) if self.cleanUrl(self.req.lastEffectiveURL) == self.cleanUrl(url): - self.logger.info("UploadedTo indirect download") + self.logger.info(_("UploadedTo indirect download")) url = self.cleanUrl(url)+"?redirect" self.req.download(url, location, cookies=True) else: diff --git a/pyLoadCore.py b/pyLoadCore.py index 94abd2d08..4184de4da 100755 --- a/pyLoadCore.py +++ b/pyLoadCore.py @@ -45,7 +45,6 @@ from sys import executable from sys import exit from sys import path from sys import stdout -from sys import version_info from tempfile import NamedTemporaryFile import thread import time @@ -54,13 +53,13 @@ from xmlrpclib import Binary from module.CaptchaManager import CaptchaManager from module.HookManager import HookManager -from module.PullEvents import PullManager from module.XMLConfigParser import XMLConfigParser from module.file_list import File_List from module.network.Request import Request import module.remote.SecureXMLRPCServer as Server from module.thread_list import Thread_List from module.web.ServerThread import WebServer +from module.PullEvents import PullManager class Core(object): """ pyLoad Core """ @@ -140,7 +139,7 @@ class Core(object): self.lastGuiConnected = 0 self.server_methods = ServerMethods(self) - self.file_list = File_List(self) + self.file_list = File_List(self) self.pullManager = PullManager(self) self.thread_list = Thread_List(self) self.captchaManager = CaptchaManager(self) @@ -290,15 +289,11 @@ class Core(object): plugins = glob(join(self.plugin_folder, "hoster", "*.py")) plugins += glob(join(self.plugin_folder, "decrypter", "*.py")) plugins += glob(join(self.plugin_folder, "container", "*.py")) - plugins += glob(join(self.plugin_folder, "container", "DLC_*.pyc")) + plugins += glob(join(self.plugin_folder, "container", "DLC.pyc")) for file_handler in plugins: plugin_pattern = "" plugin_file = sub("(\.pyc|\.py)", "", basename(file_handler)) - if plugin_file.startswith("DLC"): - if plugin_file == "DLC_25" and not version_info < (2, 6): - continue - if plugin_file == "DLC_26" and not version_info > (2, 6): - continue + if plugin_file == "DLC": plugin_pattern = "(?!http://).*\.dlc" else: for line in open(file_handler, "r").readlines(): @@ -341,7 +336,7 @@ class Core(object): def check_update(self): try: if self.config['updates']['search_updates']: - version_check = Request().load("http://get.pyload.org/check/%s/" % (CURRENT_VERSION,)) + version_check = Request().load("http://get.pyload.org/check/%s/" % (CURRENT_VERSION, )) if version_check == "": self.logger.info(_("No Updates for pyLoad")) return False @@ -356,9 +351,9 @@ class Core(object): def install_update(self): if self.config['updates']['search_updates']: if self.core.config['updates']['install_updates']: - version_check = Request().load("http://get.pyload.org/get/update/%s/" % (CURRENT_VERSION,)) + version_check = Request().load("http://get.pyload.org/get/update/%s/" % (CURRENT_VERSION, )) else: - version_check = Request().load("http://get.pyload.org/check/%s/" % (CURRENT_VERSION,)) + version_check = Request().load("http://get.pyload.org/check/%s/" % (CURRENT_VERSION, )) if version_check == "": return False else: @@ -578,9 +573,20 @@ class ServerMethods(): return True else: return False - - def get_events(self, uuid): - return self.core.pullManager.getEvents(uuid) + + def get_events(self, uuid): + return self.core.pullManager.getEvents(uuid) + + def get_full_queue(self): + data = [] + for pack in self.core.file_list.data["queue"]: + p = {"data":pack.data, "children":[]} + for child in pack.files: + info = self.core.file_list.getFileInfo(child.id) + info["downloading"] = None + p["children"].append(info) + data.append(p) + return data #def move_urls_up(self, ids): # for id in ids: diff --git a/pyLoadGui.py b/pyLoadGui.py index c3deb9a6e..068ee667e 100755 --- a/pyLoadGui.py +++ b/pyLoadGui.py @@ -28,7 +28,8 @@ from PyQt4.QtGui import * from uuid import uuid4 as uuid import re -from os.path import basename +import gettext +from os.path import basename, dirname, join from module.gui.ConnectionManager import * from module.gui.connector import * @@ -51,13 +52,16 @@ class main(QObject): """ set main things up """ + self.parser = XMLParser("module/config/gui.xml", "module/config/gui_default.xml") + langNode = self.parser.xml.elementsByTagName("language").item(0).toElement() + translation = gettext.translation("pyLoad", join(dirname(__file__), "locale"), languages=[str(langNode.text())]) + translation.install(unicode=True) self.mainWindow = MainWindow() self.pwWindow = PWInputWindow() self.connWindow = ConnectionManager() self.connector = connector() self.mainloop = self.Loop(self) self.connectSignals() - self.parser = XMLParser("module/config/gui.xml", "module/config/gui_default.xml") self.checkClipboard = False default = self.refreshConnections() @@ -230,7 +234,7 @@ class main(QObject): """ view = self.mainWindow.tabs["queue"]["view"] view.setColumnCount(4) - view.setHeaderLabels(["Name", "Plugin", "Status", "Fortschritt"]) + view.setHeaderLabels([_("Name"), _("Plugin"), _("Status"), _("Progress")]) view.setColumnWidth(0, 300) view.setColumnWidth(1, 100) view.setColumnWidth(2, 200) @@ -246,11 +250,11 @@ class main(QObject): """ status = self.connector.getServerStatus() if status["pause"]: - status["status"] = "Paused" + status["status"] = _("Paused") else: - status["status"] = "Running" + status["status"] = _("Running") status["speed"] = int(status["speed"]) - text = "Status: %(status)s | Speed: %(speed)s kb/s" % status + text = _("Status: %(status)s | Speed: %(speed)s kb/s") % status self.mainWindow.actions["toggle_status"].setChecked(not status["pause"]) self.mainWindow.serverStatus.setText(text) @@ -275,7 +279,7 @@ class main(QObject): """ status = self.connector.updateAvailable() if status: - self.mainWindow.statusbar.emit(SIGNAL("showMsg"), "Update Available") + self.mainWindow.statusbar.emit(SIGNAL("showMsg"), _("Update Available")) else: self.mainWindow.statusbar.emit(SIGNAL("showMsg"), "") @@ -299,7 +303,7 @@ class main(QObject): data["default"] = False subs = self.parser.parseNode(conn, "dict") if not subs.has_key("name"): - data["name"] = "Unnamed" + data["name"] = _("Unnamed") else: data["name"] = subs["name"].text() if data["type"] == "remote": -- cgit v1.2.3