diff options
-rw-r--r-- | locale/cli.pot | 145 | ||||
-rw-r--r-- | locale/core.pot (renamed from locale/messages.pot) | 99 | ||||
-rw-r--r-- | locale/gui.pot | 254 | ||||
-rw-r--r-- | locale/plugins.pot | 44 | ||||
-rw-r--r-- | module/config/gui_default.xml | 1 | ||||
-rw-r--r-- | module/gui/CaptchaDock.py | 6 | ||||
-rw-r--r-- | module/gui/ConnectionManager.py | 26 | ||||
-rw-r--r-- | module/gui/MainWindow.py | 63 | ||||
-rw-r--r-- | module/gui/PWInputWindow.py | 6 | ||||
-rw-r--r-- | module/gui/PackageDock.py | 8 | ||||
-rw-r--r-- | module/gui/Queue.py | 18 | ||||
-rw-r--r-- | module/gui/connector.py | 2 | ||||
-rwxr-xr-x | module/network/Request.py | 2 | ||||
-rw-r--r-- | module/plugins/hoster/RapidshareCom.py | 10 | ||||
-rw-r--r-- | module/plugins/hoster/UploadedTo.py | 2 | ||||
-rwxr-xr-x | pyLoadCore.py | 36 | ||||
-rwxr-xr-x | pyLoadGui.py | 20 |
17 files changed, 600 insertions, 142 deletions
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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\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/messages.pot b/locale/core.pot index 1994499df..ece179de0 100644 --- a/locale/messages.pot +++ b/locale/core.pot @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" -"POT-Creation-Date: 2010-02-02 21:54+CET\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 <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -15,191 +15,190 @@ msgstr "" "Generated-By: pygettext.py 1.5\n" -#: module/download_thread.py:115 +#: ./module/download_thread.py:115 msgid "Hoster unvailable, wait 60 seconds" msgstr "" -#: module/download_thread.py:117 +#: ./module/download_thread.py:117 msgid "Error getting error code: %s" msgstr "" -#: module/download_thread.py:163 +#: ./module/download_thread.py:163 msgid "Checksum ok ('%s')" msgstr "" -#: module/download_thread.py:165 +#: ./module/download_thread.py:165 msgid "Checksum not matched! ('%s')" msgstr "" -#: module/download_thread.py:167 +#: ./module/download_thread.py:167 msgid "Can't get checksum for %s" msgstr "" -#: module/download_thread.py:169 +#: ./module/download_thread.py:169 msgid "Checksum not implemented for %s" msgstr "" -#: module/file_list.py:87 +#: ./module/file_list.py:87 msgid "Found %s links in linkcollector" msgstr "" -#: module/file_list.py:89 +#: ./module/file_list.py:89 msgid "Found %s unqueued packages" msgstr "" -#: module/file_list.py:91 +#: ./module/file_list.py:91 msgid "Added %s packages to queue" msgstr "" -#: module/thread_list.py:88 +#: ./module/thread_list.py:88 msgid "Get links from: %s" msgstr "" -#: module/thread_list.py:90 +#: ./module/thread_list.py:90 msgid "Download starts: %s" msgstr "" -#: module/thread_list.py:136 +#: ./module/thread_list.py:136 msgid "Parsed links from %s: %i" msgstr "" -#: module/thread_list.py:138 +#: ./module/thread_list.py:138 msgid "No links in %s" msgstr "" -#: module/thread_list.py:145 +#: ./module/thread_list.py:145 msgid "Download finished: %s" msgstr "" -#: module/thread_list.py:151 +#: ./module/thread_list.py:151 msgid "Download failed: %s | %s" msgstr "" -#: module/thread_list.py:156 +#: ./module/thread_list.py:156 msgid "Download aborted: %s" msgstr "" -#: module/thread_list.py:206 +#: ./module/thread_list.py:206 msgid "Starting reconnect" msgstr "" -#: module/thread_list.py:220 +#: ./module/thread_list.py:220 msgid "Reconnected, new IP: %s" msgstr "" -#: pyLoadCore.py:111 +#: ./pyLoadCore.py:111 msgid "pycrypto to decode container files" msgstr "" -#: pyLoadCore.py:112 +#: ./pyLoadCore.py:112 msgid "Python Image Libary (PIL) for captha reading" msgstr "" -#: pyLoadCore.py:113 +#: ./pyLoadCore.py:113 msgid "pycurl for lower memory footprint while downloading" msgstr "" -#: pyLoadCore.py:114 +#: ./pyLoadCore.py:114 msgid "Django for webinterface" msgstr "" -#: pyLoadCore.py:115 +#: ./pyLoadCore.py:115 msgid "tesseract for captcha reading" msgstr "" -#: pyLoadCore.py:116 +#: ./pyLoadCore.py:116 msgid "gocr for captcha reading" msgstr "" -#: pyLoadCore.py:118 +#: ./pyLoadCore.py:118 msgid "folder for logs" msgstr "" -#: pyLoadCore.py:119 +#: ./pyLoadCore.py:119 msgid "folder for downloads" msgstr "" -#: pyLoadCore.py:120 +#: ./pyLoadCore.py:120 msgid "file for links" msgstr "" -#: pyLoadCore.py:121 +#: ./pyLoadCore.py:121 msgid "file for failed links" msgstr "" -#: pyLoadCore.py:124 +#: ./pyLoadCore.py:124 msgid "OpenSSL for secure connection" msgstr "" -#: pyLoadCore.py:125 +#: ./pyLoadCore.py:125 msgid "ssl certificate" msgstr "" -#: pyLoadCore.py:126 +#: ./pyLoadCore.py:126 msgid "ssl key" msgstr "" -#: pyLoadCore.py:150 +#: ./pyLoadCore.py:150 msgid "Downloadtime: %s" msgstr "" -#: pyLoadCore.py:179 +#: ./pyLoadCore.py:179 msgid "restarting pyLoad" msgstr "" -#: pyLoadCore.py:183 +#: ./pyLoadCore.py:183 msgid "pyLoad quits" msgstr "" -#: pyLoadCore.py:194 +#: ./pyLoadCore.py:194 msgid "Secure XMLRPC Server Started" msgstr "" -#: pyLoadCore.py:197 +#: ./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" +#: ./pyLoadCore.py:203 +msgid "Failed starting XMLRPC server CLI and GUI will not be available: %s" msgstr "" -#: pyLoadCore.py:272 +#: ./pyLoadCore.py:272 msgid "%s created" msgstr "" -#: pyLoadCore.py:275 +#: ./pyLoadCore.py:275 msgid "could not find %s: %s" msgstr "" -#: pyLoadCore.py:277 +#: ./pyLoadCore.py:277 msgid "could not create %s: %s" msgstr "" -#: pyLoadCore.py:305 +#: ./pyLoadCore.py:305 msgid "%s added" msgstr "" -#: pyLoadCore.py:306 +#: ./pyLoadCore.py:306 msgid "created index of plugins" msgstr "" -#: pyLoadCore.py:325 +#: ./pyLoadCore.py:325 msgid "shutting down..." msgstr "" -#: pyLoadCore.py:341 +#: ./pyLoadCore.py:341 msgid "No Updates for pyLoad" msgstr "" -#: pyLoadCore.py:344 +#: ./pyLoadCore.py:344 msgid "New pyLoad Version %s available" msgstr "" -#: pyLoadCore.py:369 +#: ./pyLoadCore.py:369 msgid "Auto install Failed" msgstr "" -#: pyLoadCore.py:607 +#: ./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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\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/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 <EMAIL@ADDRESS>, 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 <EMAIL@ADDRESS>\n" +"Language-Team: LANGUAGE <LL@li.org>\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 @@ <state></state> <geometry></geometry> </mainWindow> + <language>en</language> </root> 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": |