Browse Source

Merge pull request #4739 from sledgehammer999/web_translations

Don't duplicate translatable strings for the WebUI. Use the ones from…
adaptive-webui-19844
sledgehammer999 8 years ago committed by GitHub
parent
commit
a4d5ac4b17
  1. 2
      src/gui/confirmdeletiondlg.ui
  2. 8
      src/gui/downloadfromurldlg.ui
  3. 3
      src/gui/mainwindow.cpp
  4. 6
      src/gui/optionsdlg.ui
  5. 20
      src/webui/abstractwebapplication.cpp
  6. 40
      src/webui/extra_translations.h
  7. 120
      src/webui/www/private/index.html
  8. 14
      src/webui/www/private/login.html
  9. 14
      src/webui/www/public/about.html
  10. 6
      src/webui/www/public/addtrackers.html
  11. 8
      src/webui/www/public/confirmdeletion.html
  12. 18
      src/webui/www/public/download.html
  13. 6
      src/webui/www/public/downloadlimit.html
  14. 22
      src/webui/www/public/filters.html
  15. 8
      src/webui/www/public/newcategory.html
  16. 12
      src/webui/www/public/preferences.html
  17. 303
      src/webui/www/public/preferences_content.html
  18. 10
      src/webui/www/public/properties.html
  19. 70
      src/webui/www/public/properties_content.html
  20. 58
      src/webui/www/public/scripts/client.js
  21. 4
      src/webui/www/public/scripts/contextmenu.js
  22. 26
      src/webui/www/public/scripts/misc.js
  23. 30
      src/webui/www/public/scripts/mocha-init.js
  24. 8
      src/webui/www/public/scripts/prop-files.js
  25. 28
      src/webui/www/public/scripts/prop-general.js
  26. 4
      src/webui/www/public/scripts/prop-trackers.js
  27. 2
      src/webui/www/public/scripts/prop-webseeds.js
  28. 6
      src/webui/www/public/statistics.html
  29. 12
      src/webui/www/public/upload.html
  30. 6
      src/webui/www/public/uploadlimit.html

2
src/gui/confirmdeletiondlg.ui

@ -17,7 +17,7 @@
</sizepolicy> </sizepolicy>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Deletion confirmation - qBittorrent</string> <string>Deletion confirmation</string>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <item>

8
src/gui/downloadfromurldlg.ui

@ -11,7 +11,7 @@
</rect> </rect>
</property> </property>
<property name="windowTitle"> <property name="windowTitle">
<string>Download from urls</string> <string>Download from URLs</string>
</property> </property>
<layout class="QVBoxLayout"> <layout class="QVBoxLayout">
<item> <item>
@ -33,12 +33,12 @@
</item> </item>
<item> <item>
<widget class="QTextEdit" name="textUrls"> <widget class="QTextEdit" name="textUrls">
<property name="acceptRichText">
<bool>false</bool>
</property>
<property name="tabChangesFocus"> <property name="tabChangesFocus">
<bool>true</bool> <bool>true</bool>
</property> </property>
<property name="acceptRichText">
<bool>false</bool>
</property>
</widget> </widget>
</item> </item>
<item> <item>

3
src/gui/mainwindow.cpp

@ -1021,7 +1021,8 @@ void MainWindow::closeEvent(QCloseEvent *e)
if (!isVisible()) if (!isVisible())
show(); show();
QMessageBox confirmBox(QMessageBox::Question, tr("Exiting qBittorrent"), QMessageBox confirmBox(QMessageBox::Question, tr("Exiting qBittorrent"),
tr("Some files are currently transferring.\nAre you sure you want to quit qBittorrent?"), // Split it because the last sentence is used in the Web UI
tr("Some files are currently transferring.") + "\n" + tr("Are you sure you want to quit qBittorrent?"),
QMessageBox::NoButton, this); QMessageBox::NoButton, this);
QPushButton *noBtn = confirmBox.addButton(tr("&No"), QMessageBox::NoRole); QPushButton *noBtn = confirmBox.addButton(tr("&No"), QMessageBox::NoRole);
confirmBox.addButton(tr("&Yes"), QMessageBox::YesRole); confirmBox.addButton(tr("&Yes"), QMessageBox::YesRole);

6
src/gui/optionsdlg.ui

@ -679,7 +679,7 @@
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>470</width> <width>470</width>
<height>994</height> <height>1017</height>
</rect> </rect>
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
@ -714,7 +714,7 @@
</layout> </layout>
</widget> </widget>
</item> </item>
<item row="2" column="0"> <item>
<widget class="QCheckBox" name="checkCreateSubfolder"> <widget class="QCheckBox" name="checkCreateSubfolder">
<property name="text"> <property name="text">
<string>Create subfolder for torrents with multiple files</string> <string>Create subfolder for torrents with multiple files</string>
@ -2754,7 +2754,7 @@
<item> <item>
<widget class="QGroupBox" name="checkWebUi"> <widget class="QGroupBox" name="checkWebUi">
<property name="title"> <property name="title">
<string>Enable Web User Interface (Remote control)</string> <string>Web User Interface (Remote control)</string>
</property> </property>
<property name="checkable"> <property name="checkable">
<bool>true</bool> <bool>true</bool>

20
src/webui/abstractwebapplication.cpp

@ -244,17 +244,8 @@ QString AbstractWebApplication::generateSid()
void AbstractWebApplication::translateDocument(QString& data) void AbstractWebApplication::translateDocument(QString& data)
{ {
const QRegExp regex("QBT_TR\\((([^\\)]|\\)(?!QBT_TR))+)\\)QBT_TR(\\[CONTEXT=([a-zA-Z_][a-zA-Z0-9_]*)\\])?"); const QRegExp regex("QBT_TR\\((([^\\)]|\\)(?!QBT_TR))+)\\)QBT_TR(\\[CONTEXT=([a-zA-Z_][a-zA-Z0-9_]*)\\])");
const QRegExp mnemonic("\\(?&([a-zA-Z]?\\))?"); const QRegExp mnemonic("\\(?&([a-zA-Z]?\\))?");
const std::string contexts[] = {
"TransferListFiltersWidget", "TransferListWidget", "PropertiesWidget",
"HttpServer", "confirmDeletionDlg", "TrackerList", "TorrentFilesModel",
"options_imp", "Preferences", "TrackersAdditionDlg", "ScanFoldersModel",
"PropTabBar", "TorrentModel", "downloadFromURL", "MainWindow", "misc",
"StatusBar", "AboutDlg", "about", "PeerListWidget", "StatusFiltersWidget",
"CategoryFiltersList", "TransferListDelegate", "AddNewTorrentDialog"
};
const size_t context_count = sizeof(contexts) / sizeof(contexts[0]);
int i = 0; int i = 0;
bool found = true; bool found = true;
@ -270,17 +261,8 @@ void AbstractWebApplication::translateDocument(QString& data)
QString translation = word; QString translation = word;
if (isTranslationNeeded) { if (isTranslationNeeded) {
QString context = regex.cap(4); QString context = regex.cap(4);
if (context.length() > 0) {
translation = qApp->translate(context.toUtf8().constData(), word.constData(), 0, 1); translation = qApp->translate(context.toUtf8().constData(), word.constData(), 0, 1);
} }
else {
size_t context_index = 0;
while ((context_index < context_count) && (translation == word)) {
translation = qApp->translate(contexts[context_index].c_str(), word.constData(), 0, 1);
++context_index;
}
}
}
// Remove keyboard shortcuts // Remove keyboard shortcuts
translation.replace(mnemonic, ""); translation.replace(mnemonic, "");

40
src/webui/extra_translations.h

@ -33,16 +33,11 @@
// Additional translations for Web UI // Additional translations for Web UI
static const char *__TRANSLATIONS__[] = { static const char *__TRANSLATIONS__[] = {
QT_TRANSLATE_NOOP("HttpServer", "File"),
QT_TRANSLATE_NOOP("HttpServer", "Edit"),
QT_TRANSLATE_NOOP("HttpServer", "Help"),
QT_TRANSLATE_NOOP("HttpServer", "Logout"), QT_TRANSLATE_NOOP("HttpServer", "Logout"),
QT_TRANSLATE_NOOP("HttpServer", "Exit qBittorrent"), QT_TRANSLATE_NOOP("HttpServer", "Exit qBittorrent"),
QT_TRANSLATE_NOOP("HttpServer", "Download from URLs"),
QT_TRANSLATE_NOOP("HttpServer", "Download Torrents from their URLs or Magnet links"), QT_TRANSLATE_NOOP("HttpServer", "Download Torrents from their URLs or Magnet links"),
QT_TRANSLATE_NOOP("HttpServer", "Only one link per line"), QT_TRANSLATE_NOOP("HttpServer", "Only one link per line"),
QT_TRANSLATE_NOOP("HttpServer", "Upload local torrent"), QT_TRANSLATE_NOOP("HttpServer", "Upload local torrent"),
QT_TRANSLATE_NOOP("HttpServer", "Download"),
QT_TRANSLATE_NOOP("HttpServer", "Are you sure you want to delete the selected torrents from the transfer list?"), QT_TRANSLATE_NOOP("HttpServer", "Are you sure you want to delete the selected torrents from the transfer list?"),
QT_TRANSLATE_NOOP("HttpServer", "Global upload rate limit must be greater than 0 or disabled."), QT_TRANSLATE_NOOP("HttpServer", "Global upload rate limit must be greater than 0 or disabled."),
QT_TRANSLATE_NOOP("HttpServer", "Global download rate limit must be greater than 0 or disabled."), QT_TRANSLATE_NOOP("HttpServer", "Global download rate limit must be greater than 0 or disabled."),
@ -55,57 +50,34 @@ static const char *__TRANSLATIONS__[] = {
QT_TRANSLATE_NOOP("HttpServer", "Maximum number of connections per torrent limit must be greater than 0 or disabled."), QT_TRANSLATE_NOOP("HttpServer", "Maximum number of connections per torrent limit must be greater than 0 or disabled."),
QT_TRANSLATE_NOOP("HttpServer", "Maximum number of upload slots per torrent limit must be greater than 0 or disabled."), QT_TRANSLATE_NOOP("HttpServer", "Maximum number of upload slots per torrent limit must be greater than 0 or disabled."),
QT_TRANSLATE_NOOP("HttpServer", "Unable to save program preferences, qBittorrent is probably unreachable."), QT_TRANSLATE_NOOP("HttpServer", "Unable to save program preferences, qBittorrent is probably unreachable."),
QT_TRANSLATE_NOOP("HttpServer", "Language"),
QT_TRANSLATE_NOOP("HttpServer", "The port used for incoming connections must be between 1 and 65535."), QT_TRANSLATE_NOOP("HttpServer", "The port used for incoming connections must be between 1 and 65535."),
QT_TRANSLATE_NOOP("HttpServer", "The port used for the Web UI must be between 1 and 65535."), QT_TRANSLATE_NOOP("HttpServer", "The port used for the Web UI must be between 1 and 65535."),
QT_TRANSLATE_NOOP("HttpServer", "Save"), QT_TRANSLATE_NOOP("HttpServer", "Save"),
QT_TRANSLATE_NOOP("HttpServer", "qBittorrent client is not reachable"), QT_TRANSLATE_NOOP("HttpServer", "qBittorrent client is not reachable"),
QT_TRANSLATE_NOOP("HttpServer", "HTTP Server"),
QT_TRANSLATE_NOOP("HttpServer", "The following parameters are supported:"),
QT_TRANSLATE_NOOP("HttpServer", "Torrent path"),
QT_TRANSLATE_NOOP("HttpServer", "Torrent name"),
QT_TRANSLATE_NOOP("HttpServer", "qBittorrent has been shutdown."), QT_TRANSLATE_NOOP("HttpServer", "qBittorrent has been shutdown."),
QT_TRANSLATE_NOOP("HttpServer", "Unable to log in, qBittorrent is probably unreachable."), QT_TRANSLATE_NOOP("HttpServer", "Unable to log in, qBittorrent is probably unreachable."),
QT_TRANSLATE_NOOP("HttpServer", "Invalid Username or Password."), QT_TRANSLATE_NOOP("HttpServer", "Invalid Username or Password."),
QT_TRANSLATE_NOOP("HttpServer", "Username"),
QT_TRANSLATE_NOOP("HttpServer", "Password"), QT_TRANSLATE_NOOP("HttpServer", "Password"),
QT_TRANSLATE_NOOP("HttpServer", "Login"), QT_TRANSLATE_NOOP("HttpServer", "Login"),
QT_TRANSLATE_NOOP("HttpServer", "Upload Failed!"),
QT_TRANSLATE_NOOP("HttpServer", "Original authors"), QT_TRANSLATE_NOOP("HttpServer", "Original authors"),
QT_TRANSLATE_NOOP("HttpServer", "Upload limit:"),
QT_TRANSLATE_NOOP("HttpServer", "Download limit:"),
QT_TRANSLATE_NOOP("HttpServer", "Apply"), QT_TRANSLATE_NOOP("HttpServer", "Apply"),
QT_TRANSLATE_NOOP("HttpServer", "Add"), QT_TRANSLATE_NOOP("HttpServer", "Add"),
QT_TRANSLATE_NOOP("HttpServer", "All"),
QT_TRANSLATE_NOOP("HttpServer", "Downloading"),
QT_TRANSLATE_NOOP("HttpServer", "Seeding"),
QT_TRANSLATE_NOOP("HttpServer", "Completed"),
QT_TRANSLATE_NOOP("HttpServer", "Resumed"),
QT_TRANSLATE_NOOP("HttpServer", "Paused"),
QT_TRANSLATE_NOOP("HttpServer", "Active"),
QT_TRANSLATE_NOOP("HttpServer", "Inactive"),
QT_TRANSLATE_NOOP("HttpServer", "Save files to location:"), QT_TRANSLATE_NOOP("HttpServer", "Save files to location:"),
QT_TRANSLATE_NOOP("HttpServer", "Category:"),
QT_TRANSLATE_NOOP("HttpServer", "Cookie:"), QT_TRANSLATE_NOOP("HttpServer", "Cookie:"),
QT_TRANSLATE_NOOP("HttpServer", "Type folder here"), QT_TRANSLATE_NOOP("HttpServer", "Type folder here"),
QT_TRANSLATE_NOOP("HttpServer", "Run an external program on torrent completion"),
QT_TRANSLATE_NOOP("HttpServer", "Enable bandwidth management (uTP)"),
QT_TRANSLATE_NOOP("HttpServer", "Apply rate limit to uTP connections"),
QT_TRANSLATE_NOOP("HttpServer", "Alternative Global Rate Limits"),
QT_TRANSLATE_NOOP("HttpServer", "More information"), QT_TRANSLATE_NOOP("HttpServer", "More information"),
QT_TRANSLATE_NOOP("HttpServer", "Information about certificates"), QT_TRANSLATE_NOOP("HttpServer", "Information about certificates"),
QT_TRANSLATE_NOOP("HttpServer", "Save Files to"), QT_TRANSLATE_NOOP("HttpServer", "Save Files to"),
QT_TRANSLATE_NOOP("HttpServer", "Watch Folder"), QT_TRANSLATE_NOOP("HttpServer", "IRC: #qbittorrent on Freenode"),
QT_TRANSLATE_NOOP("HttpServer", "Default Folder") QT_TRANSLATE_NOOP("HttpServer", "Invalid category name:\nPlease do not use any special characters in the category name."),
QT_TRANSLATE_NOOP("HttpServer", "Unknown"),
QT_TRANSLATE_NOOP("HttpServer", "Hard Disk"),
QT_TRANSLATE_NOOP("HttpServer", "Share ratio limit must be between 0 and 9998.")
}; };
static const struct { const char *source; const char *comment; } __COMMENTED_TRANSLATIONS__[] = { static const struct { const char *source; const char *comment; } __COMMENTED_TRANSLATIONS__[] = {
QT_TRANSLATE_NOOP3("HttpServer", "Downloaded", "Is the file downloaded or not?"),
QT_TRANSLATE_NOOP3("HttpServer", "from", "from time1 to time2"),
QT_TRANSLATE_NOOP3("HttpServer", "to", "from time1 to time2"),
QT_TRANSLATE_NOOP3("HttpServer", "Other...", "Save Files to: Watch Folder / Default Folder / Other..."), QT_TRANSLATE_NOOP3("HttpServer", "Other...", "Save Files to: Watch Folder / Default Folder / Other..."),
QT_TRANSLATE_NOOP3("HttpServer", "Every day", "Schedule the use of alternative rate limits on ..."),
QT_TRANSLATE_NOOP3("HttpServer", "Week days", "Schedule the use of alternative rate limits on ..."),
QT_TRANSLATE_NOOP3("HttpServer", "Week ends", "Schedule the use of alternative rate limits on ..."),
QT_TRANSLATE_NOOP3("HttpServer", "Monday", "Schedule the use of alternative rate limits on ..."), QT_TRANSLATE_NOOP3("HttpServer", "Monday", "Schedule the use of alternative rate limits on ..."),
QT_TRANSLATE_NOOP3("HttpServer", "Tuesday", "Schedule the use of alternative rate limits on ..."), QT_TRANSLATE_NOOP3("HttpServer", "Tuesday", "Schedule the use of alternative rate limits on ..."),
QT_TRANSLATE_NOOP3("HttpServer", "Wednesday", "Schedule the use of alternative rate limits on ..."), QT_TRANSLATE_NOOP3("HttpServer", "Wednesday", "Schedule the use of alternative rate limits on ..."),

120
src/webui/www/private/index.html

@ -3,7 +3,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=10; IE=9; IE=8;" /> <meta http-equiv="X-UA-Compatible" content="IE=10; IE=9; IE=8;" />
<title>qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR</title> <title>qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title>
<link rel="stylesheet" href="css/dynamicTable.css" type="text/css" /> <link rel="stylesheet" href="css/dynamicTable.css" type="text/css" />
<link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" />
<!--<link rel="stylesheet" type="text/css" href="css/Content.css" />--> <!--<link rel="stylesheet" type="text/css" href="css/Content.css" />-->
@ -33,106 +33,106 @@
<div id="desktopNavbar"> <div id="desktopNavbar">
<ul> <ul>
<li> <li>
<a class="returnFalse">QBT_TR(File)QBT_TR</a> <a class="returnFalse">QBT_TR(&File)QBT_TR[CONTEXT=MainWindow]</a>
<ul> <ul>
<li><a id="uploadLink"><img class="MyMenuIcon" alt="QBT_TR(&Add Torrent File...)QBT_TR" src="theme/list-add" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Add Torrent File...)QBT_TR</a></li> <li><a id="uploadLink"><img class="MyMenuIcon" alt="QBT_TR(&Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" src="theme/list-add" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Add Torrent File...)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="downloadLink"><img class="MyMenuIcon" alt="QBT_TR(Add Torrent &Link...)QBT_TR" src="theme/insert-link" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Add Torrent &Link...)QBT_TR</a></li> <li><a id="downloadLink"><img class="MyMenuIcon" alt="QBT_TR(Add Torrent &Link...)QBT_TR[CONTEXT=MainWindow]" src="theme/insert-link" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Add Torrent &Link...)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="logoutLink"><img class="MyMenuIcon" alt="QBT_TR(Logout)QBT_TR" src="theme/system-log-out" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Logout)QBT_TR</a></li> <li class="divider"><a id="logoutLink"><img class="MyMenuIcon" alt="QBT_TR(Logout)QBT_TR[CONTEXT=HttpServer]" src="theme/system-log-out" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Logout)QBT_TR[CONTEXT=HttpServer]</a></li>
<li><a id="shutdownLink"><img class="MyMenuIcon" alt="QBT_TR(Exit qBittorrent)QBT_TR" src="theme/application-exit" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Exit qBittorrent)QBT_TR</a></li> <li><a id="shutdownLink"><img class="MyMenuIcon" alt="QBT_TR(Exit qBittorrent)QBT_TR[CONTEXT=HttpServer]" src="theme/application-exit" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Exit qBittorrent)QBT_TR[CONTEXT=HttpServer]</a></li>
</ul> </ul>
</li> </li>
<li> <li>
<a class="returnFalse">QBT_TR(Edit)QBT_TR</a> <a class="returnFalse">QBT_TR(&Edit)QBT_TR[CONTEXT=MainWindow]</a>
<ul> <ul>
<li><a id="resumeAllLink"><img class="MyMenuIcon" alt="QBT_TR(R&esume All)QBT_TR" src="theme/media-playback-start" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(R&esume All)QBT_TR</a></li> <li><a id="resumeAllLink"><img class="MyMenuIcon" alt="QBT_TR(R&esume All)QBT_TR[CONTEXT=MainWindow]" src="theme/media-playback-start" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(R&esume All)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="pauseAllLink"><img class="MyMenuIcon" alt="QBT_TR(P&ause All)QBT_TR" src="theme/media-playback-pause" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(P&ause All)QBT_TR</a></li> <li><a id="pauseAllLink"><img class="MyMenuIcon" alt="QBT_TR(P&ause All)QBT_TR[CONTEXT=MainWindow]" src="theme/media-playback-pause" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(P&ause All)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="resumeLink"><img class="MyMenuIcon" alt="QBT_TR(&Resume)QBT_TR" src="theme/media-playback-start" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Resume)QBT_TR</a></li> <li class="divider"><a id="resumeLink"><img class="MyMenuIcon" alt="QBT_TR(&Resume)QBT_TR[CONTEXT=MainWindow]" src="theme/media-playback-start" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Resume)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="pauseLink"><img class="MyMenuIcon" src="theme/media-playback-pause" alt="QBT_TR(&Pause)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Pause)QBT_TR</a></li> <li><a id="pauseLink"><img class="MyMenuIcon" src="theme/media-playback-pause" alt="QBT_TR(&Pause)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Pause)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="deleteLink"><img class="MyMenuIcon" src="theme/list-remove" alt="QBT_TR(&Delete)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Delete)QBT_TR</a></li> <li class="divider"><a id="deleteLink"><img class="MyMenuIcon" src="theme/list-remove" alt="QBT_TR(&Delete)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Delete)QBT_TR[CONTEXT=MainWindow]</a></li>
<span id="queueingLinks"> <span id="queueingLinks">
<li class="divider"><a id="topPrioLink"><img class="MyMenuIcon" src="theme/go-top" alt="QBT_TR(Top Priority)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Top Priority)QBT_TR</a></li> <li class="divider"><a id="topPrioLink"><img class="MyMenuIcon" src="theme/go-top" alt="QBT_TR(Top Priority)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Top Priority)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="increasePrioLink"><img class="MyMenuIcon" src="theme/go-up" alt="QBT_TR(Increase Priority)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Increase Priority)QBT_TR</a></li> <li><a id="increasePrioLink"><img class="MyMenuIcon" src="theme/go-up" alt="QBT_TR(Increase Priority)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Increase Priority)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="decreasePrioLink"><img class="MyMenuIcon" src="theme/go-down" alt="QBT_TR(Decrease Priority)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Decrease Priority)QBT_TR</a></li> <li><a id="decreasePrioLink"><img class="MyMenuIcon" src="theme/go-down" alt="QBT_TR(Decrease Priority)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Decrease Priority)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="bottomPrioLink"><img class="MyMenuIcon" src="theme/go-bottom" alt="QBT_TR(Minimum Priority)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Minimum Priority)QBT_TR</a></li> <li><a id="bottomPrioLink"><img class="MyMenuIcon" src="theme/go-bottom" alt="QBT_TR(Minimum Priority)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Minimum Priority)QBT_TR[CONTEXT=MainWindow]</a></li>
</span> </span>
<li class="divider"><a id="recheckLink"><img class="MyMenuIcon" src="theme/document-edit-verify" alt="QBT_TR(Force Recheck)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Force recheck)QBT_TR</a></li> <li class="divider"><a id="recheckLink"><img class="MyMenuIcon" src="theme/document-edit-verify" alt="QBT_TR(Force Recheck)QBT_TR[CONTEXT=TransferListWidget]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]</a></li>
</ul> </ul>
</li> </li>
<li> <li>
<a class="returnFalse">QBT_TR(&View)QBT_TR</a> <a class="returnFalse">QBT_TR(&View)QBT_TR[CONTEXT=MainWindow]</a>
<ul> <ul>
<li><a id="showTopToolbarLink"><img class="MyMenuIcon" src="theme/checked" alt="QBT_TR(&Top Toolbar)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Top Toolbar)QBT_TR</a></li> <li><a id="showTopToolbarLink"><img class="MyMenuIcon" src="theme/checked" alt="QBT_TR(&Top Toolbar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Top Toolbar)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="speedInBrowserTitleBarLink"><img class="MyMenuIcon" src="theme/checked" alt="QBT_TR(S&peed in Title Bar)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(S&peed in Title Bar)QBT_TR</a></li> <li><a id="speedInBrowserTitleBarLink"><img class="MyMenuIcon" src="theme/checked" alt="QBT_TR(S&peed in Title Bar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(S&peed in Title Bar)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id=StatisticsLink ><img class="MyMenuIcon" src="theme/view-statistics" alt="QBT_TR(&About)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Statistics)QBT_TR</a></li> <li><a id=StatisticsLink ><img class="MyMenuIcon" src="theme/view-statistics" alt="QBT_TR(&Statistics)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Statistics)QBT_TR[CONTEXT=MainWindow]</a></li>
</ul> </ul>
</li> </li>
<li> <li>
<a class="returnFalse">QBT_TR(&Tools)QBT_TR</a> <a class="returnFalse">QBT_TR(&Tools)QBT_TR[CONTEXT=MainWindow]</a>
<ul> <ul>
<li><a id="preferencesLink"><img class="MyMenuIcon" src="theme/configure" alt="QBT_TR(&Options...)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Options...)QBT_TR</a></li> <li><a id="preferencesLink"><img class="MyMenuIcon" src="theme/configure" alt="QBT_TR(&Options...)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Options...)QBT_TR[CONTEXT=MainWindow]</a></li>
</ul> </ul>
</li> </li>
<li> <li>
<a class="returnFalse">QBT_TR(&Help)QBT_TR</a> <a class="returnFalse">QBT_TR(&Help)QBT_TR[CONTEXT=MainWindow]</a>
<ul> <ul>
<li><a id="docsLink" target="_blank" href="http://wiki.qbittorrent.org/"><img class="MyMenuIcon" src="theme/help-contents" alt="QBT_TR(&Documentation)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Documentation)QBT_TR</a></li> <li><a id="docsLink" target="_blank" href="http://wiki.qbittorrent.org/"><img class="MyMenuIcon" src="theme/help-contents" alt="QBT_TR(&Documentation)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&Documentation)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="bugLink" target="_blank" href="http://www.qbittorrent.org/donate"><img class="MyMenuIcon" src="theme/wallet-open" alt="QBT_TR(Do&nate!)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Do&nate!)QBT_TR</a></li> <li class="divider"><a id="bugLink" target="_blank" href="http://www.qbittorrent.org/donate"><img class="MyMenuIcon" src="theme/wallet-open" alt="QBT_TR(Do&nate!)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(Do&nate!)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="aboutLink"><img class="MyMenuIcon" src="theme/help-about" alt="QBT_TR(&About)QBT_TR" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&About)QBT_TR</a></li> <li><a id="aboutLink"><img class="MyMenuIcon" src="theme/help-about" alt="QBT_TR(&About)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" onload="fixPNG(this)"/>QBT_TR(&About)QBT_TR[CONTEXT=MainWindow]</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</div> </div>
<div id="mochaToolbar"> <div id="mochaToolbar">
&nbsp;&nbsp; &nbsp;&nbsp;
<a id="downloadButton"><img class="mochaToolButton" title="QBT_TR(Add Torrent &Link...)QBT_TR" src="theme/insert-link" alt="QBT_TR(Add Torrent &Link...)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="downloadButton"><img class="mochaToolButton" title="QBT_TR(Add Torrent &Link...)QBT_TR[CONTEXT=MainWindow]" src="theme/insert-link" alt="QBT_TR(Add Torrent &Link...)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="uploadButton"><img class="mochaToolButton" title="QBT_TR(&Add Torrent File...)QBT_TR" src="theme/list-add" alt="QBT_TR(&Add Torrent File...)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="uploadButton"><img class="mochaToolButton" title="QBT_TR(&Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" src="theme/list-add" alt="QBT_TR(&Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="deleteButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Delete)QBT_TR" src="theme/list-remove" alt="QBT_TR(Delete)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="deleteButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Delete)QBT_TR[CONTEXT=TransferListWidget]" src="theme/list-remove" alt="QBT_TR(Delete)QBT_TR[CONTEXT=TransferListWidget]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="resumeButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Resume)QBT_TR" src="theme/media-playback-start" alt="QBT_TR(Resume)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="resumeButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]" src="theme/media-playback-start" alt="QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="pauseButton"><img class="mochaToolButton" title="QBT_TR(Pause)QBT_TR" src="theme/media-playback-pause" alt="QBT_TR(Pause)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="pauseButton"><img class="mochaToolButton" title="QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]" src="theme/media-playback-pause" alt="QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]" width="24" height="24" onload="fixPNG(this)"/></a>
<span id="queueingButtons"> <span id="queueingButtons">
<a id="topPrioButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Top Priority)QBT_TR" src="theme/go-top" alt="QBT_TR(Top Priority)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="topPrioButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Top Priority)QBT_TR[CONTEXT=MainWindow]" src="theme/go-top" alt="QBT_TR(Top Priority)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="increasePrioButton"><img class="mochaToolButton" title="QBT_TR(Increase Priority)QBT_TR" src="theme/go-up" alt="QBT_TR(Increase Priority)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="increasePrioButton"><img class="mochaToolButton" title="QBT_TR(Increase Priority)QBT_TR[CONTEXT=MainWindow]" src="theme/go-up" alt="QBT_TR(Increase Priority)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="decreasePrioButton"><img class="mochaToolButton" title="QBT_TR(Decrease Priority)QBT_TR" src="theme/go-down" alt="QBT_TR(Decrease Priority)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="decreasePrioButton"><img class="mochaToolButton" title="QBT_TR(Decrease Priority)QBT_TR[CONTEXT=MainWindow]" src="theme/go-down" alt="QBT_TR(Decrease Priority)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" onload="fixPNG(this)"/></a>
<a id="bottomPrioButton"><img class="mochaToolButton" title="QBT_TR(Minimum Priority)QBT_TR" src="theme/go-bottom" alt="QBT_TR(Minimum Priority)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="bottomPrioButton"><img class="mochaToolButton" title="QBT_TR(Minimum Priority)QBT_TR[CONTEXT=MainWindow]" src="theme/go-bottom" alt="QBT_TR(Minimum Priority)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" onload="fixPNG(this)"/></a>
</span> </span>
<a id="preferencesButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Options)QBT_TR" src="theme/configure" alt="QBT_TR(Options)QBT_TR" width="24" height="24" onload="fixPNG(this)"/></a> <a id="preferencesButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]" src="theme/configure" alt="QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]" width="24" height="24" onload="fixPNG(this)"/></a>
</div> </div>
</div> </div>
<div id="pageWrapper"> <div id="pageWrapper">
</div> </div>
</div> </div>
<ul id="torrentsTableMenu" class="contextMenu"> <ul id="torrentsTableMenu" class="contextMenu">
<li><a href="#Start"><img src="theme/media-playback-start" alt="QBT_TR(Resume)QBT_TR"/> QBT_TR(Resume)QBT_TR</a></li> <li><a href="#Start"><img src="theme/media-playback-start" alt="QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#Pause"><img src="theme/media-playback-pause" alt="QBT_TR(Pause)QBT_TR"/> QBT_TR(Pause)QBT_TR</a></li> <li><a href="#Pause"><img src="theme/media-playback-pause" alt="QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#ForceStart"><img src="theme/media-seek-forward" alt="QBT_TR(Force Resume)QBT_TR"/> QBT_TR(Force Resume)QBT_TR</a></li> <li><a href="#ForceStart"><img src="theme/media-seek-forward" alt="QBT_TR(Force Resume)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Force Resume)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li class="separator"><a href="#Delete"><img src="theme/list-remove" alt="QBT_TR(Delete)QBT_TR"/> QBT_TR(Delete)QBT_TR</a></li> <li class="separator"><a href="#Delete"><img src="theme/list-remove" alt="QBT_TR(Delete)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Delete)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li class="separator"> <li class="separator">
<a href="#Category" class="arrow-right"><img src="theme/view-categories" alt="QBT_TR(Category)QBT_TR"/> QBT_TR(Category)QBT_TR</a> <a href="#Category" class="arrow-right"><img src="theme/view-categories" alt="QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]</a>
<ul id="contextCategoryList" class="scrollableMenu"></ul> <ul id="contextCategoryList" class="scrollableMenu"></ul>
</li> </li>
<li id="queueingMenuItems" class="separator"> <li id="queueingMenuItems" class="separator">
<a href="#priority" class="arrow-right"><span style="display: inline-block; width:16px"></span> QBT_TR(Priority)QBT_TR</a> <a href="#priority" class="arrow-right"><span style="display: inline-block; width:16px"></span> QBT_TR(Priority)QBT_TR[CONTEXT=TransferListWidget]</a>
<ul> <ul>
<li><a href="#prioTop"><img src="theme/go-top" alt="QBT_TR(Move to top)QBT_TR"/> QBT_TR(Move to top)QBT_TR</a></li> <li><a href="#prioTop"><img src="theme/go-top" alt="QBT_TR(Move to top)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Move to top)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#prioUp"><img src="theme/go-up" alt="QBT_TR(Move up)QBT_TR"/> QBT_TR(Move up)QBT_TR</a></li> <li><a href="#prioUp"><img src="theme/go-up" alt="QBT_TR(Move up)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Move up)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#prioDown"><img src="theme/go-down" alt="QBT_TR(Move down)QBT_TR"/> QBT_TR(Move down)QBT_TR</a></li> <li><a href="#prioDown"><img src="theme/go-down" alt="QBT_TR(Move down)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Move down)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#prioBottom"><img src="theme/go-bottom" alt="QBT_TR(Move to bottom)QBT_TR"/> QBT_TR(Move to bottom)QBT_TR</a></li> <li><a href="#prioBottom"><img src="theme/go-bottom" alt="QBT_TR(Move to bottom)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Move to bottom)QBT_TR[CONTEXT=TransferListWidget]</a></li>
</ul> </ul>
</li> </li>
<li class="separator"><a href="#DownloadLimit"><img src="theme/kt-set-max-download-speed" alt="QBT_TR(Limit download rate...)QBT_TR"/> QBT_TR(Limit download rate...)QBT_TR</a></li> <li class="separator"><a href="#DownloadLimit"><img src="theme/kt-set-max-download-speed" alt="QBT_TR(Limit download rate...)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Limit download rate...)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#UploadLimit"><img src="theme/kt-set-max-upload-speed" alt="QBT_TR(Limit upload rate...)QBT_TR"/> QBT_TR(Limit upload rate...)QBT_TR</a></li> <li><a href="#UploadLimit"><img src="theme/kt-set-max-upload-speed" alt="QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#SuperSeeding"><img src="theme/checked" alt="QBT_TR(Super seeding mode)QBT_TR"/> QBT_TR(Super seeding mode)QBT_TR</a></li> <li><a href="#SuperSeeding"><img src="theme/checked" alt="QBT_TR(Super seeding mode)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Super seeding mode)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li class="separator"><a href="#SequentialDownload"><img src="theme/checked" alt="QBT_TR(Download in sequential order)QBT_TR"/> QBT_TR(Download in sequential order)QBT_TR</a></li> <li class="separator"><a href="#SequentialDownload"><img src="theme/checked" alt="QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#FirstLastPiecePrio"><img src="theme/checked" alt="QBT_TR(Download first and last pieces first)QBT_TR"/> QBT_TR(Download first and last pieces first)QBT_TR</a></li> <li><a href="#FirstLastPiecePrio"><img src="theme/checked" alt="QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li class="separator"><a href="#ForceRecheck"><img src="theme/document-edit-verify" alt="QBT_TR(Force recheck)QBT_TR"/> QBT_TR(Force recheck)QBT_TR</a></li> <li class="separator"><a href="#ForceRecheck"><img src="theme/document-edit-verify" alt="QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]</a></li>
</ul> </ul>
<ul id="categoriesFilterMenu" class="contextMenu"> <ul id="categoriesFilterMenu" class="contextMenu">
<li><a href="#CreateCategory"><img src="theme/list-add" alt="QBT_TR(Add category...)QBT_TR"/> QBT_TR(Add category...)QBT_TR</a></li> <li><a href="#CreateCategory"><img src="theme/list-add" alt="QBT_TR(Add category...)QBT_TR[CONTEXT=CategoryFilterWidget]"/> QBT_TR(Add category...)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#DeleteCategory"><img src="theme/list-remove" alt="QBT_TR(Remove category)QBT_TR"/> QBT_TR(Remove category)QBT_TR</a></li> <li><a href="#DeleteCategory"><img src="theme/list-remove" alt="QBT_TR(Remove category)QBT_TR[CONTEXT=CategoryFilterWidget]"/> QBT_TR(Remove category)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#DeleteUnusedCategories"><img src="theme/list-remove" alt="QBT_TR(Remove unused categories)QBT_TR"/> QBT_TR(Remove unused categories)QBT_TR</a></li> <li><a href="#DeleteUnusedCategories"><img src="theme/list-remove" alt="QBT_TR(Remove unused categories)QBT_TR[CONTEXT=CategoryFilterWidget]"/> QBT_TR(Remove unused categories)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li class="separator"><a href="#StartTorrentsByCategory"><img src="theme/media-playback-start" alt="QBT_TR(Resume torrents)QBT_TR"/> QBT_TR(Resume torrents)QBT_TR</a></li> <li class="separator"><a href="#StartTorrentsByCategory"><img src="theme/media-playback-start" alt="QBT_TR(Resume torrents)QBT_TR[CONTEXT=CategoryFilterWidget]"/> QBT_TR(Resume torrents)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#PauseTorrentsByCategory"><img src="theme/media-playback-pause" alt="QBT_TR(Pause torrents)QBT_TR"/> QBT_TR(Pause torrents)QBT_TR</a></li> <li><a href="#PauseTorrentsByCategory"><img src="theme/media-playback-pause" alt="QBT_TR(Pause torrents)QBT_TR[CONTEXT=CategoryFilterWidget]"/> QBT_TR(Pause torrents)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#DeleteTorrentsByCategory"><img src="theme/edit-delete" alt="QBT_TR(Delete torrents)QBT_TR"/> QBT_TR(Delete torrents)QBT_TR</a></li> <li><a href="#DeleteTorrentsByCategory"><img src="theme/edit-delete" alt="QBT_TR(Delete torrents)QBT_TR[CONTEXT=CategoryFilterWidget]"/> QBT_TR(Delete torrents)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
</ul> </ul>
<div id="desktopFooterWrapper"> <div id="desktopFooterWrapper">
<div id="desktopFooter"> <div id="desktopFooter">
@ -143,7 +143,7 @@
<td class="statusBarSeparator"></td> <td class="statusBarSeparator"></td>
<td><img id="connectionStatus" alt="Connection Status" src="images/skin/firewalled.png" /></td> <td><img id="connectionStatus" alt="Connection Status" src="images/skin/firewalled.png" /></td>
<td class="statusBarSeparator"></td> <td class="statusBarSeparator"></td>
<td style="cursor:pointer;"><img id="alternativeSpeedLimits" alt="QBT_TR(Alternative speed limits)QBT_TR" src="images/slow_off.png" /></td> <td style="cursor:pointer;"><img id="alternativeSpeedLimits" alt="QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow]" src="images/slow_off.png" /></td>
<td class="statusBarSeparator"></td> <td class="statusBarSeparator"></td>
<td class="speedLabel"><img src="images/skin/download.png" alt="" style="height: 1.4em; padding-right: 5px; margin-bottom: -4px;"><span id="DlInfos"></span></td> <td class="speedLabel"><img src="images/skin/download.png" alt="" style="height: 1.4em; padding-right: 5px; margin-bottom: -4px;"><span id="DlInfos"></span></td>
<td class="statusBarSeparator"></td> <td class="statusBarSeparator"></td>

14
src/webui/www/private/login.html

@ -3,7 +3,7 @@
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=8" /> <meta http-equiv="X-UA-Compatible" content="IE=8" />
<title>qBittorrent QBT_TR(Web UI)QBT_TR</title> <title>qBittorrent QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title>
<link rel="stylesheet" type="text/css" href="css/style.css" /> <link rel="stylesheet" type="text/css" href="css/style.css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
<script type="text/javascript"> <script type="text/javascript">
@ -31,7 +31,7 @@
if (xhr.responseText != "") { if (xhr.responseText != "") {
$('error_msg').set('html', xhr.responseText); $('error_msg').set('html', xhr.responseText);
} else { } else {
$('error_msg').set('html', 'QBT_TR(Unable to log in, qBittorrent is probably unreachable.)QBT_TR'); $('error_msg').set('html', 'QBT_TR(Unable to log in, qBittorrent is probably unreachable.)QBT_TR[CONTEXT=HttpServer]');
} }
}, },
onSuccess: function(text) { onSuccess: function(text) {
@ -39,7 +39,7 @@
// Session started. Simply reload page. // Session started. Simply reload page.
window.location.reload(); window.location.reload();
} else { } else {
$('error_msg').set('html', 'QBT_TR(Invalid Username or Password.)QBT_TR'); $('error_msg').set('html', 'QBT_TR(Invalid Username or Password.)QBT_TR[CONTEXT=HttpServer]');
} }
} }
}).send(); }).send();
@ -70,15 +70,15 @@
</head> </head>
<body> <body>
<div id="main"> <div id="main">
<h1>qBittorrent QBT_TR(Web UI)QBT_TR</h1> <h1>qBittorrent QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</h1>
<div id="logo" class="col"> <div id="logo" class="col">
<img src="images/qbittorrent.png" alt="qBittorrent logo"/> <img src="images/qbittorrent.png" alt="qBittorrent logo"/>
</div> </div>
<div id="formplace" class="col"> <div id="formplace" class="col">
<form id="loginform" action=""> <form id="loginform" action="">
<div class="row"><label for="username">QBT_TR(Name)QBT_TR</label><br /><input type="text" id="username" name="username" /></div> <div class="row"><label for="username">QBT_TR(Username)QBT_TR[CONTEXT=HttpServer]</label><br /><input type="text" id="username" name="username" /></div>
<div class="row"><label for="password">QBT_TR(Password)QBT_TR</label><br /><input type="password" id="password" name="password" /></div> <div class="row"><label for="password">QBT_TR(Password)QBT_TR[CONTEXT=HttpServer]</label><br /><input type="password" id="password" name="password" /></div>
<div class="row"><input type="submit" id="login" value="QBT_TR(Login)QBT_TR" /></div> <div class="row"><input type="submit" id="login" value="QBT_TR(Login)QBT_TR[CONTEXT=HttpServer]" /></div>
</form> </form>
</div> </div>
<div id="error_msg"></div> <div id="error_msg"></div>

14
src/webui/www/public/about.html

@ -1,10 +1,10 @@
<img src="images/skin/mascot.png" align="right"></img> <img src="images/skin/mascot.png" align="right"></img>
<h3>qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR</h3> <h3>qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</h3>
<p>QBT_TR(An advanced BitTorrent client programmed in <nobr>C++</nobr>, based on Qt toolkit and libtorrent-rasterbar.)QBT_TR</p> <p>QBT_TR(An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar.)QBT_TR[CONTEXT=about]</p>
<p>Copyright (c) 2011-2017 The qBittorrent project</p> <p>Copyright (c) 2011-2017 The qBittorrent project</p>
<p>QBT_TR(Home Page: )QBT_TR <a target="_blank" href="http://www.qbittorrent.org">http://www.qbittorrent.org</a></p> <p>QBT_TR(Home Page:)QBT_TR[CONTEXT=about] <a target="_blank" href="http://www.qbittorrent.org"> http://www.qbittorrent.org</a></p>
<p>QBT_TR(Bug Tracker: )QBT_TR <a target="_blank" href="http://bugs.qbittorrent.org">http://bugs.qbittorrent.org</a></p> <p>QBT_TR(Bug Tracker:)QBT_TR[CONTEXT=about] <a target="_blank" href="http://bugs.qbittorrent.org"> http://bugs.qbittorrent.org</a></p>
<p>QBT_TR(Forum: )QBT_TR <a target="_blank" href="http://forum.qbittorrent.org">http://forum.qbittorrent.org</a></p> <p>QBT_TR(Forum:)QBT_TR[CONTEXT=about] <a target="_blank" href="http://forum.qbittorrent.org"> http://forum.qbittorrent.org</a></p>
<p>QBT_TR(IRC: #qbittorrent on Freenode)QBT_TR</p> <p>QBT_TR(IRC: #qbittorrent on Freenode)QBT_TR[CONTEXT=HttpServer]</p>
<h3>QBT_TR(Original authors)QBT_TR</h3> <h3>QBT_TR(Original authors)QBT_TR[CONTEXT=HttpServer]</h3>
<a target="_blank" href="mailto:ishanarora@gmail.com">Ishan Arora</a>, <a target="_blank" href="mailto:ank.iitd@gmail.com">Ankit Gupta</a>, <a target="_blank" href="mailto:shikhar.ap@gmail.com">Chandan Shikhar Dua</a> and <a target="_blank" href="mailto:swapnil.iitd@gmail.com">Swapnil Kumar</a>. <a target="_blank" href="mailto:ishanarora@gmail.com">Ishan Arora</a>, <a target="_blank" href="mailto:ank.iitd@gmail.com">Ankit Gupta</a>, <a target="_blank" href="mailto:shikhar.ap@gmail.com">Chandan Shikhar Dua</a> and <a target="_blank" href="mailto:swapnil.iitd@gmail.com">Swapnil Kumar</a>.

6
src/webui/www/public/addtrackers.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Trackers addition dialog)QBT_TR</title> <title>QBT_TR(Trackers addition dialog)QBT_TR[CONTEXT=TrackersAdditionDlg]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
<script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script>
@ -27,10 +27,10 @@
<body> <body>
<center> <center>
<br/> <br/>
<h2 class="vcenter">QBT_TR(List of trackers to add (one per line):)QBT_TR</h2> <h2 class="vcenter">QBT_TR(List of trackers to add (one per line):)QBT_TR[CONTEXT=TrackersAdditionDlg]</h2>
<textarea name="list" id="trackersUrls" rows="10" cols="1"></textarea> <textarea name="list" id="trackersUrls" rows="10" cols="1"></textarea>
<br/> <br/>
<input type="button" value="QBT_TR(Add)QBT_TR" id="addTrackersButton"/> <input type="button" value="QBT_TR(Add)QBT_TR[CONTEXT=HttpServer]" id="addTrackersButton"/>
</center> </center>
</body> </body>
</html> </html>

8
src/webui/www/public/confirmdeletion.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Deletion confirmation - qBittorrent)QBT_TR</title> <title>QBT_TR(Deletion confirmation - qBittorrent)QBT_TR[CONTEXT=confirmDeletionDlg]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
<script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script>
@ -37,10 +37,10 @@
<body> <body>
<br/> <br/>
<p>&nbsp;&nbsp;QBT_TR(Are you sure you want to delete the selected torrents from the transfer list?)QBT_TR</p> <p>&nbsp;&nbsp;QBT_TR(Are you sure you want to delete the selected torrents from the transfer list?)QBT_TR[CONTEXT=HttpServer]</p>
&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" id="deleteFromDiskCB"/> <label for="deleteFromDiskCB"><i>QBT_TR(Also delete the files on the hard disk)QBT_TR</i></label><br/><br/> &nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" id="deleteFromDiskCB"/> <label for="deleteFromDiskCB"><i>QBT_TR(Also delete the files on the hard disk)QBT_TR[CONTEXT=confirmDeletionDlg]</i></label><br/><br/>
<div style="text-align: right;"> <div style="text-align: right;">
<input type="button" id="cancelBtn" value="QBT_TR(No)QBT_TR" />&nbsp;&nbsp;<input type="button" id="confirmBtn" value="QBT_TR(Yes)QBT_TR"/>&nbsp;&nbsp; <input type="button" id="cancelBtn" value="QBT_TR(No)QBT_TR[CONTEXT=MainWindow]" />&nbsp;&nbsp;<input type="button" id="confirmBtn" value="QBT_TR(Yes)QBT_TR[CONTEXT=MainWindow]"/>&nbsp;&nbsp;
</div> </div>
</body> </body>
</html> </html>

18
src/webui/www/public/download.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Add Torrent Link)QBT_TR</title> <title>QBT_TR(Add Torrent Links)QBT_TR[CONTEXT=downloadFromURL]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<link rel="stylesheet" href="css/Window.css" type="text/css" /> <link rel="stylesheet" href="css/Window.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
@ -13,33 +13,33 @@
<form action="command/download" enctype="multipart/form-data" method="post" id="downloadForm" style="text-align: center;" target="download_frame"> <form action="command/download" enctype="multipart/form-data" method="post" id="downloadForm" style="text-align: center;" target="download_frame">
<center> <center>
<br/> <br/>
<h2 class="vcenter">QBT_TR(Download Torrents from their URLs or Magnet links)QBT_TR</h2> <h2 class="vcenter">QBT_TR(Download Torrents from their URLs or Magnet links)QBT_TR[CONTEXT=HttpServer]</h2>
<textarea id="urls" rows="10" name="urls"></textarea> <textarea id="urls" rows="10" name="urls"></textarea>
<p>QBT_TR(Only one link per line)QBT_TR</p> <p>QBT_TR(Only one link per line)QBT_TR[CONTEXT=HttpServer]</p>
<fieldset class="settings" style="border: 0; text-align: left;"> <fieldset class="settings" style="border: 0; text-align: left;">
<div class="formRow" style="margin-top: 6px;"> <div class="formRow" style="margin-top: 6px;">
<label for="savepath" class="leftLabelLarge">QBT_TR(Save files to location:)QBT_TR</label> <label for="savepath" class="leftLabelLarge">QBT_TR(Save files to location:)QBT_TR[CONTEXT=HttpServer]</label>
<input type="text" id="savepath" name="savepath" style="width: 16em;"/> <input type="text" id="savepath" name="savepath" style="width: 16em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="cookie" class="leftLabelLarge">QBT_TR(Cookie:)QBT_TR</label> <label for="cookie" class="leftLabelLarge">QBT_TR(Cookie:)QBT_TR[CONTEXT=HttpServer]</label>
<input type="text" id="cookie" name="cookie" style="width: 16em;"/> <input type="text" id="cookie" name="cookie" style="width: 16em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="category" class="leftLabelLarge">QBT_TR(Category:)QBT_TR</label> <label for="category" class="leftLabelLarge">QBT_TR(Category:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<input type="text" id="category" name="category" style="width: 16em;"/> <input type="text" id="category" name="category" style="width: 16em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="start_torrent" class="leftLabelLarge">QBT_TR(Start torrent)QBT_TR</label> <label for="start_torrent" class="leftLabelLarge">QBT_TR(Start torrent)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<input type="checkbox" id="start_torrent" checked="checked" style="width: 16em;"/> <input type="checkbox" id="start_torrent" checked="checked" style="width: 16em;"/>
<input type="hidden" id="add_paused" name="paused" value="true" disabled="disabled"/> <input type="hidden" id="add_paused" name="paused" value="true" disabled="disabled"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="skip_checking" class="leftLabelLarge">QBT_TR(Skip hash check)QBT_TR</label> <label for="skip_checking" class="leftLabelLarge">QBT_TR(Skip hash check)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<input type="checkbox" name="skip_checking" value="true" style="width: 16em;"/> <input type="checkbox" name="skip_checking" value="true" style="width: 16em;"/>
</div> </div>
<div id="submitbutton" style="margin-top: 12px; text-align: center;"> <div id="submitbutton" style="margin-top: 12px; text-align: center;">
<button type="submit" id="submitButton">QBT_TR(Download)QBT_TR</button> <button type="submit" id="submitButton">QBT_TR(Download)QBT_TR[CONTEXT=downloadFromURL]</button>
</div> </div>
</center> </center>
</form> </form>

6
src/webui/www/public/downloadlimit.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Torrent Download Speed Limiting)QBT_TR</title> <title>QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
<script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script>
@ -12,7 +12,7 @@
<body> <body>
<div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden"> <div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden">
<div id="dllimitSlider" class="slider"> <div id="dllimitSlider" class="slider">
<div id="dllimitUpdate" class="update">QBT_TR(Download limit:)QBT_TR <input id="dllimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="dlLimitUnit">QBT_TR(KiB/s)QBT_TR</span></div> <div id="dllimitUpdate" class="update">QBT_TR(Download limit:)QBT_TR[CONTEXT=PropertiesWidget] <input id="dllimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="dlLimitUnit">QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]</span></div>
<div class="sliderWrapper"> <div class="sliderWrapper">
<div id="dllimitSliderknob" class="sliderknob"></div> <div id="dllimitSliderknob" class="sliderknob"></div>
<div id="dllimitSliderarea" class="sliderarea"></div> <div id="dllimitSliderarea" class="sliderarea"></div>
@ -51,7 +51,7 @@
} }
} }
</script> </script>
<input type="button" value="QBT_TR(Apply)QBT_TR" onclick="setDlLimit()"/> <input type="button" value="QBT_TR(Apply)QBT_TR[CONTEXT=HttpServer]" onclick="setDlLimit()"/>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">

22
src/webui/www/public/filters.html

@ -1,17 +1,17 @@
<span class="filterTitle">QBT_TR(Status)QBT_TR</span> <span class="filterTitle">QBT_TR(Status)QBT_TR[CONTEXT=TransferListFiltersWidget]</span>
<ul class="filterList"> <ul class="filterList">
<li id="all_filter"><a href="#" onclick="setFilter('all');return false;"><img src="images/skin/filterall.png"/>QBT_TR(All (0))QBT_TR</a></li> <li id="all_filter"><a href="#" onclick="setFilter('all');return false;"><img src="images/skin/filterall.png"/>QBT_TR(All (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="downloading_filter"><a href="#" onclick="setFilter('downloading');return false;"><img src="images/skin/downloading.png"/>QBT_TR(Downloading (0))QBT_TR</a></li> <li id="downloading_filter"><a href="#" onclick="setFilter('downloading');return false;"><img src="images/skin/downloading.png"/>QBT_TR(Downloading (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="seeding_filter"><a href="#" onclick="setFilter('seeding');return false;"><img src="images/skin/uploading.png"/>QBT_TR(Seeding (0))QBT_TR</a></li> <li id="seeding_filter"><a href="#" onclick="setFilter('seeding');return false;"><img src="images/skin/uploading.png"/>QBT_TR(Seeding (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="completed_filter"><a href="#" onclick="setFilter('completed');return false;"><img src="images/skin/completed.png"/>QBT_TR(Completed (0))QBT_TR</a></li> <li id="completed_filter"><a href="#" onclick="setFilter('completed');return false;"><img src="images/skin/completed.png"/>QBT_TR(Completed (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="resumed_filter"><a href="#" onclick="setFilter('resumed');return false;"><img src="images/skin/resumed.png"/>QBT_TR(Resumed (0))QBT_TR</a></li> <li id="resumed_filter"><a href="#" onclick="setFilter('resumed');return false;"><img src="images/skin/resumed.png"/>QBT_TR(Resumed (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="paused_filter"><a href="#" onclick="setFilter('paused');return false;"><img src="images/skin/paused.png"/>QBT_TR(Paused (0))QBT_TR</a></li> <li id="paused_filter"><a href="#" onclick="setFilter('paused');return false;"><img src="images/skin/paused.png"/>QBT_TR(Paused (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="active_filter"><a href="#" onclick="setFilter('active');return false;"><img src="images/skin/filteractive.png"/>QBT_TR(Active (0))QBT_TR</a></li> <li id="active_filter"><a href="#" onclick="setFilter('active');return false;"><img src="images/skin/filteractive.png"/>QBT_TR(Active (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="inactive_filter"><a href="#" onclick="setFilter('inactive');return false;"><img src="images/skin/filterinactive.png"/>QBT_TR(Inactive (0))QBT_TR</a></li> <li id="inactive_filter"><a href="#" onclick="setFilter('inactive');return false;"><img src="images/skin/filterinactive.png"/>QBT_TR(Inactive (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
<li id="errored_filter"><a href="#" onclick="setFilter('errored');return false;"><img src="images/skin/error.png"/>QBT_TR(Errored (0))QBT_TR</a></li> <li id="errored_filter"><a href="#" onclick="setFilter('errored');return false;"><img src="images/skin/error.png"/>QBT_TR(Errored (0))QBT_TR[CONTEXT=StatusFiltersWidget]</a></li>
</ul> </ul>
<br/> <br/>
<span class="filterTitle">QBT_TR(Categories)QBT_TR</span> <span class="filterTitle">QBT_TR(Categories)QBT_TR[CONTEXT=TransferListFiltersWidget]</span>
<ul id="filterCategoryList" class="filterList"> <ul id="filterCategoryList" class="filterList">
</ul> </ul>

8
src/webui/www/public/newcategory.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(New Category)QBT_TR</title> <title>QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
<script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script>
@ -27,7 +27,7 @@
if (categoryName == null || categoryName == "") if (categoryName == null || categoryName == "")
return false; return false;
if (categoryName.match("^([^\\\\\\/]|[^\\\\\\/]([^\\\\\\/]|\\/(?=[^\\/]))*[^\\\\\\/])$") === null) { if (categoryName.match("^([^\\\\\\/]|[^\\\\\\/]([^\\\\\\/]|\\/(?=[^\\/]))*[^\\\\\\/])$") === null) {
alert("QBT_TR(Invalid category name:\nPlease do not use any special characters in the category name.)QBT_TR"); alert("QBT_TR(Invalid category name:\nPlease do not use any special characters in the category name.)QBT_TR[CONTEXT=HttpServer]");
return false; return false;
} }
var hashesList = new URI().getData('hashes'); var hashesList = new URI().getData('hashes');
@ -63,10 +63,10 @@
</head> </head>
<body> <body>
<div style="padding: 10px 10px 0px 10px;"> <div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Category)QBT_TR:</p> <p style="font-weight: bold;">QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]:</p>
<input type="text" id="newCategory" value="" maxlength="100" style="width: 220px;"/> <input type="text" id="newCategory" value="" maxlength="100" style="width: 220px;"/>
<div style="text-align: center;"> <div style="text-align: center;">
<input type="button" value="QBT_TR(Add)QBT_TR" id="newCategoryButton"/> <input type="button" value="QBT_TR(Add)QBT_TR[CONTEXT=HttpServer]" id="newCategoryButton"/>
</div> </div>
</div> </div>
</body> </body>

12
src/webui/www/public/preferences.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Download from URL)QBT_TR</title> <title>QBT_TR(Download from URLs)QBT_TR[CONTEXT=downloadFromURL]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<link rel="stylesheet" href="css/Tabs.css" type="text/css" /> <link rel="stylesheet" href="css/Tabs.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
@ -13,11 +13,11 @@
<!-- preferences --> <!-- preferences -->
<div class="toolbarTabs"> <div class="toolbarTabs">
<ul id="preferencesTabs" class="tab-menu"> <ul id="preferencesTabs" class="tab-menu">
<li id="PrefDownloadsLink" class="selected"><a>QBT_TR(Downloads)QBT_TR</a></li> <li id="PrefDownloadsLink" class="selected"><a>QBT_TR(Downloads)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefConnectionLink"><a>QBT_TR(Connection)QBT_TR</a></li> <li id="PrefConnectionLink"><a>QBT_TR(Connection)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefSpeedLink"><a>QBT_TR(Speed)QBT_TR</a></li> <li id="PrefSpeedLink"><a>QBT_TR(Speed)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefBittorrentLink"><a>QBT_TR(BitTorrent)QBT_TR</a></li> <li id="PrefBittorrentLink"><a>QBT_TR(BitTorrent)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefWebUILink"><a>QBT_TR(Web UI)QBT_TR</a></li> <li id="PrefWebUILink"><a>QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</a></li>
</ul> </ul>
<div class="clear"></div> <div class="clear"></div>
</div> </div>

303
src/webui/www/public/preferences_content.html

@ -1,131 +1,131 @@
<div id="DownloadsTab" class="PrefTab"> <div id="DownloadsTab" class="PrefTab">
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Hard Disk)QBT_TR</legend> <legend>QBT_TR(Hard Disk)QBT_TR[CONTEXT=HttpServer]</legend>
<div class="formRow"> <div class="formRow">
<label for="savepath_text">QBT_TR(Save files to location:)QBT_TR</label> <label for="savepath_text">QBT_TR(Save files to location:)QBT_TR[CONTEXT=HttpServer]</label>
<input type="text" id="savepath_text"/> <input type="text" id="savepath_text"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<input type="checkbox" id="temppath_checkbox" onclick="updateTempDirEnabled();"/> <input type="checkbox" id="temppath_checkbox" onclick="updateTempDirEnabled();"/>
<label for="temppath_checkbox">QBT_TR(Keep incomplete torrents in:)QBT_TR</label> <label for="temppath_checkbox">QBT_TR(Keep incomplete torrents in:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="temppath_text"/> <input type="text" id="temppath_text"/>
</div> </div>
<input type="checkbox" id="preallocateall_checkbox"/> <input type="checkbox" id="preallocateall_checkbox"/>
<label for="preallocateall_checkbox">QBT_TR(Pre-allocate disk space for all files)QBT_TR</label><br/> <label for="preallocateall_checkbox">QBT_TR(Pre-allocate disk space for all files)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<span id="appendexttr"> <span id="appendexttr">
<input type="checkbox" id="appendext_checkbox"/> <input type="checkbox" id="appendext_checkbox"/>
<label for="appendext_checkbox">QBT_TR(Append .!qB extension to incomplete files)QBT_TR</label> <label for="appendext_checkbox">QBT_TR(Append .!qB extension to incomplete files)QBT_TR[CONTEXT=OptionsDialog]</label>
</span><br/><br/> </span><br/><br/>
QBT_TR(Automatically add torrents from:)QBT_TR<br/> QBT_TR(Automatically add torrents from:)QBT_TR[CONTEXT=OptionsDialog]<br/>
<table border="1" id="watched_folders_tab"> <table border="1" id="watched_folders_tab">
<thead><tr><th>QBT_TR(Watched Folder)QBT_TR</th><th>QBT_TR(Save Files to)QBT_TR</th></tr></thead> <thead><tr><th>QBT_TR(Monitored Folder)QBT_TR[CONTEXT=ScanFoldersModel]</th><th>QBT_TR(Override Save Location)QBT_TR[CONTEXT=ScanFoldersModel]</th></tr></thead>
<tbody></tbody> <tbody></tbody>
<tfoot><tr> <tfoot><tr>
<td style="padding-top:4px;"><input type="text" id="new_watch_folder_txt"/></td> <td style="padding-top:4px;"><input type="text" id="new_watch_folder_txt"/></td>
<td style="padding-top:4px;"> <td style="padding-top:4px;">
<div class="select-watched-folder-editable"> <div class="select-watched-folder-editable">
<select id="new_watch_folder_select" onchange="changeWatchFolderSelect(this)"> <select id="new_watch_folder_select" onchange="changeWatchFolderSelect(this)">
<option selected value="watch_folder">QBT_TR(Watch Folder)QBT_TR</option> <option selected value="watch_folder">QBT_TR(Monitored folder)QBT_TR[CONTEXT=ScanFoldersModel]</option>
<option value="default_folder">QBT_TR(Default Folder)QBT_TR</option> <option value="default_folder">QBT_TR(Default save location)QBT_TR[CONTEXT=ScanFoldersModel]</option>
<option value="other">QBT_TR(Other...)QBT_TR</option> <option value="other">QBT_TR(Other...)QBT_TR[CONTEXT=HttpServer]</option>
</select> </select>
<input id="new_watch_folder_other_txt" type="text" value="QBT_TR(Watch Folder)QBT_TR" onchange="changeWatchFolderText(this)" /> <input id="new_watch_folder_other_txt" type="text" value="QBT_TR(Monitored folder)QBT_TR[CONTEXT=ScanFoldersModel]" onchange="changeWatchFolderText(this)" />
<img src="theme/list-add" alt="Add" style="padding-left:170px;width:16px;cursor:pointer;" onclick="addWatchFolder();"/> <img src="theme/list-add" alt="Add" style="padding-left:170px;width:16px;cursor:pointer;" onclick="addWatchFolder();"/>
</div> </div>
</td> </td>
</tr></tfoot> </tr></tfoot>
</table><br/> </table><br/>
<input type="checkbox" id="exportdir_checkbox" onclick="updateExportDirEnabled();"/> <input type="checkbox" id="exportdir_checkbox" onclick="updateExportDirEnabled();"/>
<label for="exportdir_checkbox">QBT_TR(Copy .torrent files to:)QBT_TR</label>&nbsp;&nbsp; <label for="exportdir_checkbox">QBT_TR(Copy .torrent files to:)QBT_TR[CONTEXT=OptionsDialog]</label>&nbsp;&nbsp;
<input type="text" id="exportdir_text"/><br/> <input type="text" id="exportdir_text"/><br/>
<input type="checkbox" id="exportdirfin_checkbox" onclick="updateExportDirFinEnabled();"/> <input type="checkbox" id="exportdirfin_checkbox" onclick="updateExportDirFinEnabled();"/>
<label for="exportdirfin_checkbox">QBT_TR(Copy .torrent files for finished downloads to:)QBT_TR</label>&nbsp;&nbsp; <label for="exportdirfin_checkbox">QBT_TR(Copy .torrent files for finished downloads to:)QBT_TR[CONTEXT=OptionsDialog]</label>&nbsp;&nbsp;
<input type="text" id="exportdirfin_text"/><br/> <input type="text" id="exportdirfin_text"/><br/>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="mail_notification_checkbox" onclick="updateMailNotification();"/> <legend><input type="checkbox" id="mail_notification_checkbox" onclick="updateMailNotification();"/>
<label for="mail_notification_checkbox">QBT_TR(Email notification upon download completion)QBT_TR</label></legend> <label for="mail_notification_checkbox">QBT_TR(Email notification upon download completion)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<div class="formRow"> <div class="formRow">
<label for="dest_email_txt" class="leftLabelLarge">QBT_TR(Destination email:)QBT_TR</label><input type="text" id="dest_email_txt"/> <label for="dest_email_txt" class="leftLabelLarge">QBT_TR(Destination email:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="dest_email_txt"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="smtp_server_txt" class="leftLabelLarge">QBT_TR(SMTP server:)QBT_TR</label><input type="text" id="smtp_server_txt"/> <label for="smtp_server_txt" class="leftLabelLarge">QBT_TR(SMTP server:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="smtp_server_txt"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<input type="checkbox" id="mail_ssl_checkbox"/><label for="mail_ssl_checkbox">QBT_TR(This server requires a secure connection (SSL))QBT_TR</label> <input type="checkbox" id="mail_ssl_checkbox"/><label for="mail_ssl_checkbox">QBT_TR(This server requires a secure connection (SSL))QBT_TR[CONTEXT=OptionsDialog]</label>
</div> </div>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="mail_auth_checkbox" onclick="updateMailAuthSettings();"/><label for="mail_auth_checkbox">QBT_TR(Authentication)QBT_TR</label></legend> <legend><input type="checkbox" id="mail_auth_checkbox" onclick="updateMailAuthSettings();"/><label for="mail_auth_checkbox">QBT_TR(Authentication)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<div class="formRow"> <div class="formRow">
<label for="mail_username_text" class="leftLabelLarge">QBT_TR(Username:)QBT_TR</label><input type="text" id="mail_username_text"/> <label for="mail_username_text" class="leftLabelLarge">QBT_TR(Username:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="mail_username_text"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="mail_password_text" class="leftLabelLarge">QBT_TR(Password:)QBT_TR</label><input type="password" id="mail_password_text"/> <label for="mail_password_text" class="leftLabelLarge">QBT_TR(Password:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="password" id="mail_password_text"/>
</div> </div>
</fieldset> </fieldset>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="autorun_checkbox" onclick="updateAutoRun();"/> <legend><input type="checkbox" id="autorun_checkbox" onclick="updateAutoRun();"/>
<label for="autorun_checkbox">QBT_TR(Run external program on torrent completion)QBT_TR</label></legend> <label for="autorun_checkbox">QBT_TR(Run external program on torrent completion)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<input type="text" id="autorunProg_txt" style="width: 400px;"/><br/> <input type="text" id="autorunProg_txt" style="width: 400px;"/><br/>
<i>QBT_TR(Supported parameters (case sensitive):)QBT_TR <i>QBT_TR(Supported parameters (case sensitive):)QBT_TR[CONTEXT=OptionsDialog]
<ul> <ul>
<li>QBT_TR(%N: Torrent name)QBT_TR</li> <li>QBT_TR(%N: Torrent name)QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%L: Category)QBT_TR</li> <li>QBT_TR(%L: Category)QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%F: Content path (same as root path for multifile torrent))QBT_TR</li> <li>QBT_TR(%F: Content path (same as root path for multifile torrent))QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%R: Root path (first torrent subdirectory path))QBT_TR</li> <li>QBT_TR(%R: Root path (first torrent subdirectory path))QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%D: Save path)QBT_TR</li> <li>QBT_TR(%D: Save path)QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%C: Number of files)QBT_TR</li> <li>QBT_TR(%C: Number of files)QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%Z: Torrent size (bytes))QBT_TR</li> <li>QBT_TR(%Z: Torrent size (bytes))QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%T: Current tracker)QBT_TR</li> <li>QBT_TR(%T: Current tracker)QBT_TR[CONTEXT=OptionsDialog]</li>
<li>QBT_TR(%I: Info hash)QBT_TR</li> <li>QBT_TR(%I: Info hash)QBT_TR[CONTEXT=OptionsDialog]</li>
</ul> </ul>
QBT_TR(Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N"))QBT_TR QBT_TR(Tip: Encapsulate parameter with quotation marks to avoid text being cut off at whitespace (e.g., "%N"))QBT_TR[CONTEXT=OptionsDialog]
</i> </i>
</fieldset> </fieldset>
</div> </div>
<div id="ConnectionTab" class="PrefTab invisible"> <div id="ConnectionTab" class="PrefTab invisible">
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Listening Port)QBT_TR</legend> <legend>QBT_TR(Listening Port)QBT_TR[CONTEXT=OptionsDialog]</legend>
<label for="port_value">QBT_TR(Port used for incoming connections:)QBT_TR</label> <label for="port_value">QBT_TR(Port used for incoming connections:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="port_value" style="width: 4em;"/><br/> <input type="text" id="port_value" style="width: 4em;"/><br/>
<input type="checkbox" id="upnp_checkbox"/> <input type="checkbox" id="upnp_checkbox"/>
<label for="upnp_checkbox">QBT_TR(Use UPnP / NAT-PMP port forwarding from my router)QBT_TR</label><br/> <label for="upnp_checkbox">QBT_TR(Use UPnP / NAT-PMP port forwarding from my router)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<input type="checkbox" id="random_port_checkbox"/> <input type="checkbox" id="random_port_checkbox"/>
<label for="random_port_checkbox">QBT_TR(Use different port on each startup)QBT_TR</label> <label for="random_port_checkbox">QBT_TR(Use different port on each startup)QBT_TR[CONTEXT=OptionsDialog]</label>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Connections Limits)QBT_TR</legend> <legend>QBT_TR(Connections Limits)QBT_TR[CONTEXT=OptionsDialog]</legend>
<table> <table>
<tr> <tr>
<td> <td>
<input type="checkbox" id="max_connec_checkbox" onClick="updateMaxConnecEnabled();"/> <input type="checkbox" id="max_connec_checkbox" onClick="updateMaxConnecEnabled();"/>
<label for="max_connec_checkbox">QBT_TR(Global maximum number of connections:)QBT_TR</label> <label for="max_connec_checkbox">QBT_TR(Global maximum number of connections:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="max_connec_value" style="width: 4em;"/></td> <td><input type="text" id="max_connec_value" style="width: 4em;"/></td>
</tr> </tr>
<tr> <tr>
<td> <td>
<input type="checkbox" id="max_connec_per_torrent_checkbox" onClick="updateMaxConnecPerTorrentEnabled();"/> <input type="checkbox" id="max_connec_per_torrent_checkbox" onClick="updateMaxConnecPerTorrentEnabled();"/>
<label for="max_connec_per_torrent_checkbox">QBT_TR(Maximum number of connections per torrent:)QBT_TR</label> <label for="max_connec_per_torrent_checkbox">QBT_TR(Maximum number of connections per torrent:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="max_connec_per_torrent_value" style="width: 4em;"/></td> <td><input type="text" id="max_connec_per_torrent_value" style="width: 4em;"/></td>
</tr> </tr>
<tr> <tr>
<td> <td>
<input type="checkbox" id="max_uploads_checkbox" onClick="updateMaxUploadsEnabled();"/> <input type="checkbox" id="max_uploads_checkbox" onClick="updateMaxUploadsEnabled();"/>
<label for="max_uploads_checkbox">QBT_TR(Global maximum number of upload slots:)QBT_TR</label> <label for="max_uploads_checkbox">QBT_TR(Global maximum number of upload slots:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="max_uploads_value" style="width: 4em;"/></td> <td><input type="text" id="max_uploads_value" style="width: 4em;"/></td>
</tr> </tr>
<tr> <tr>
<td> <td>
<input type="checkbox" id="max_uploads_per_torrent_checkbox" onClick="updateMaxUploadsPerTorrentEnabled();"/> <input type="checkbox" id="max_uploads_per_torrent_checkbox" onClick="updateMaxUploadsPerTorrentEnabled();"/>
<label for="max_uploads_per_torrent_checkbox">QBT_TR(Maximum number of upload slots per torrent:)QBT_TR</label> <label for="max_uploads_per_torrent_checkbox">QBT_TR(Maximum number of upload slots per torrent:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="max_uploads_per_torrent_value" style="width: 4em;"/></td> <td><input type="text" id="max_uploads_per_torrent_value" style="width: 4em;"/></td>
</tr> </tr>
@ -133,41 +133,41 @@
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Proxy Server)QBT_TR</legend> <legend>QBT_TR(Proxy Server)QBT_TR[CONTEXT=OptionsDialog]</legend>
<div class="formRow"> <div class="formRow">
<label for="peer_proxy_type_select" class="leftLabelSmall">QBT_TR(Type:)QBT_TR</label> <label for="peer_proxy_type_select" class="leftLabelSmall">QBT_TR(Type:)QBT_TR[CONTEXT=OptionsDialog]</label>
<select id ="peer_proxy_type_select" onchange="updatePeerProxySettings();"> <select id ="peer_proxy_type_select" onchange="updatePeerProxySettings();">
<option value="none">QBT_TR((None))QBT_TR</option> <option value="none">QBT_TR((None))QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="socks4">QBT_TR(SOCKS4)QBT_TR</option> <option value="socks4">QBT_TR(SOCKS4)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="socks5">QBT_TR(SOCKS5)QBT_TR</option> <option value="socks5">QBT_TR(SOCKS5)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="http">QBT_TR(HTTP)QBT_TR</option> <option value="http">QBT_TR(HTTP)QBT_TR[CONTEXT=OptionsDialog]</option>
</select> </select>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="peer_proxy_host_text" class="leftLabelSmall">QBT_TR(Host:)QBT_TR</label> <label for="peer_proxy_host_text" class="leftLabelSmall">QBT_TR(Host:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="peer_proxy_host_text" /> <input type="text" id="peer_proxy_host_text" />
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="peer_proxy_port_value" class="leftLabelSmall">QBT_TR(Port:)QBT_TR</label> <label for="peer_proxy_port_value" class="leftLabelSmall">QBT_TR(Port:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="peer_proxy_port_value" style="width: 4em;"/> <input type="text" id="peer_proxy_port_value" style="width: 4em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<input type="checkbox" id="use_peer_proxy_checkbox"/> <input type="checkbox" id="use_peer_proxy_checkbox"/>
<label for="use_peer_proxy_checkbox">QBT_TR(Use proxy for peer connections)QBT_TR</label> <label for="use_peer_proxy_checkbox">QBT_TR(Use proxy for peer connections)QBT_TR[CONTEXT=OptionsDialog]</label>
</div> </div>
<div class="formRow"> <div class="formRow">
<input type="checkbox" id="force_proxy_checkbox"/> <input type="checkbox" id="force_proxy_checkbox"/>
<label for="force_proxy_checkbox">QBT_TR(Disable connections not supported by proxies)QBT_TR</label> <label for="force_proxy_checkbox">QBT_TR(Disable connections not supported by proxies)QBT_TR[CONTEXT=OptionsDialog]</label>
</div> </div>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="peer_proxy_auth_checkbox" onclick="updatePeerProxyAuthSettings();"/> <legend><input type="checkbox" id="peer_proxy_auth_checkbox" onclick="updatePeerProxyAuthSettings();"/>
<label for="peer_proxy_auth_checkbox">QBT_TR(Authentication)QBT_TR</label></legend> <label for="peer_proxy_auth_checkbox">QBT_TR(Authentication)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<div class="formRow"> <div class="formRow">
<label for="peer_proxy_username_text" class="leftLabelLarge">QBT_TR(Username:)QBT_TR</label> <label for="peer_proxy_username_text" class="leftLabelLarge">QBT_TR(Username:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="peer_proxy_username_text" /> <input type="text" id="peer_proxy_username_text" />
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="peer_proxy_password_text" class="leftLabelLarge">QBT_TR(Password:)QBT_TR</label> <label for="peer_proxy_password_text" class="leftLabelLarge">QBT_TR(Password:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="password" id="peer_proxy_password_text" /> <input type="password" id="peer_proxy_password_text" />
</div> </div>
</fieldset> </fieldset>
@ -175,14 +175,14 @@
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="ipfilter_enabled_checkbox" onclick="updateFilterSettings();"/> <legend><input type="checkbox" id="ipfilter_enabled_checkbox" onclick="updateFilterSettings();"/>
<label for="ipfilter_enabled_checkbox">QBT_TR(IP Filtering)QBT_TR</label></legend> <label for="ipfilter_enabled_checkbox">QBT_TR(IP Filtering)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<label for="ipfilter_text">QBT_TR(Filter path (.dat, .p2p, .p2b):)QBT_TR</label> <label for="ipfilter_text">QBT_TR(Filter path (.dat, .p2p, .p2b):)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="ipfilter_text"/><br/> <input type="text" id="ipfilter_text"/><br/>
<input type="checkbox" id="ipfilter_trackers_checkbox"/> <input type="checkbox" id="ipfilter_trackers_checkbox"/>
<label for="ipfilter_trackers_checkbox">QBT_TR(Apply to trackers)QBT_TR</label> <label for="ipfilter_trackers_checkbox">QBT_TR(Apply to trackers)QBT_TR[CONTEXT=OptionsDialog]</label>
<div class="formRow"> <div class="formRow">
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Manually banned IP addresses...)QBT_TR</legend> <legend>QBT_TR(Manually banned IP addresses...)QBT_TR[CONTEXT=OptionsDialog]</legend>
<textarea id="banned_IPs_textarea" rows="5" cols="70"></textarea> <textarea id="banned_IPs_textarea" rows="5" cols="70"></textarea>
</fieldset> </fieldset>
</div> </div>
@ -191,142 +191,143 @@
<div id="SpeedTab" class="PrefTab invisible"> <div id="SpeedTab" class="PrefTab invisible">
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Global Rate Limits)QBT_TR</legend> <legend>QBT_TR(Global Rate Limits)QBT_TR[CONTEXT=OptionsDialog]</legend>
<table> <table>
<tr> <tr>
<td> <td>
<input type="checkbox" id="up_limit_checkbox" onClick="updateUpLimitEnabled();"/> <input type="checkbox" id="up_limit_checkbox" onClick="updateUpLimitEnabled();"/>
<label for ="up_limit_checkbox">QBT_TR(Upload:)QBT_TR</label> <label for ="up_limit_checkbox">QBT_TR(Upload:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="up_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR</td> <td><input type="text" id="up_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]</td>
</tr> </tr>
<tr> <tr>
<td> <td>
<input type="checkbox" id="dl_limit_checkbox" onClick="updateDlLimitEnabled();"/> <input type="checkbox" id="dl_limit_checkbox" onClick="updateDlLimitEnabled();"/>
<label for="dl_limit_checkbox">QBT_TR(Download:)QBT_TR</label> <label for="dl_limit_checkbox">QBT_TR(Download:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="dl_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR</td> <td><input type="text" id="dl_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]</td>
</tr> </tr>
</table> </table>
<fieldset class="settings">
<legend>QBT_TR(Options)QBT_TR</legend>
<input type="checkbox" id="enable_utp_checkbox" onClick="updateUTPEnabled();"/>
<label for="enable_utp_checkbox">QBT_TR(Enable bandwidth management (uTP))QBT_TR</label><br/>
<input type="checkbox" id="limit_utp_rate_checkbox"/>
<label for="limit_utp_rate_checkbox">QBT_TR(Apply rate limit to uTP connections)QBT_TR</label><br/>
<input type="checkbox" id="limit_tcp_overhead_checkbox"/>
<label for="limit_tcp_overhead_checkbox">QBT_TR(Apply rate limit to transport overhead)QBT_TR</label><br/>
</fieldset>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Alternative Global Rate Limits)QBT_TR</legend> <legend>QBT_TR(Alternative Rate Limits)QBT_TR[CONTEXT=OptionsDialog]</legend>
<table> <table>
<tr> <tr>
<td> <td>
<input type="checkbox" id="alt_up_limit_checkbox" onClick="updateAltUpLimitEnabled();"/> <input type="checkbox" id="alt_up_limit_checkbox" onClick="updateAltUpLimitEnabled();"/>
<label for ="alt_up_limit_checkbox">QBT_TR(Upload:)QBT_TR</label> <label for ="alt_up_limit_checkbox">QBT_TR(Upload:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="alt_up_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR</td> <td><input type="text" id="alt_up_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]</td>
</tr> </tr>
<tr> <tr>
<td> <td>
<input type="checkbox" id="alt_dl_limit_checkbox" onClick="updateAltDlLimitEnabled();"/> <input type="checkbox" id="alt_dl_limit_checkbox" onClick="updateAltDlLimitEnabled();"/>
<label for="alt_dl_limit_checkbox">QBT_TR(Download:)QBT_TR</label> <label for="alt_dl_limit_checkbox">QBT_TR(Download:)QBT_TR[CONTEXT=OptionsDialog]</label>
</td> </td>
<td><input type="text" id="alt_dl_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR</td> <td><input type="text" id="alt_dl_limit_value" style="width: 4em;"/>&nbsp;&nbsp;QBT_TR(KiB/s)QBT_TR[CONTEXT=OptionsDialog]</td>
</tr> </tr>
</table> </table>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="limit_sheduling_checkbox" onClick="updateSchedulingEnabled();"/> <legend><input type="checkbox" id="limit_sheduling_checkbox" onClick="updateSchedulingEnabled();"/>
<label for="limit_sheduling_checkbox">QBT_TR(Schedule the use of alternative rate limits)QBT_TR</label></legend> <label for="limit_sheduling_checkbox">QBT_TR(Schedule the use of alternative rate limits)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
QBT_TR(from)QBT_TR QBT_TR(From:)QBT_TR[CONTEXT=OptionsDialog]
<input type="text" id="schedule_from_hour" style="width: 1.5em;"/>:<input type="text" id="schedule_from_min" style="width: 1.5em;"/> <input type="text" id="schedule_from_hour" style="width: 1.5em;"/>:<input type="text" id="schedule_from_min" style="width: 1.5em;"/>
QBT_TR(to)QBT_TR QBT_TR(To:)QBT_TR[CONTEXT=OptionsDialog]
<input type="text" id="schedule_to_hour" style="width: 1.5em;"/>:<input type="text" id="schedule_to_min" style="width: 1.5em;"/> <input type="text" id="schedule_to_hour" style="width: 1.5em;"/>:<input type="text" id="schedule_to_min" style="width: 1.5em;"/>
<br/> <br/>
QBT_TR(When:)QBT_TR QBT_TR(When:)QBT_TR[CONTEXT=OptionsDialog]
<select id="schedule_freq_select"> <select id="schedule_freq_select">
<option value="0">QBT_TR(Every day)QBT_TR</option> <option value="0">QBT_TR(Every day)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="1">QBT_TR(Week days)QBT_TR</option> <option value="1">QBT_TR(Weekdays)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="2">QBT_TR(Week ends)QBT_TR</option> <option value="2">QBT_TR(Weekends)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="3">QBT_TR(Monday)QBT_TR</option> <option value="3">QBT_TR(Monday)QBT_TR[CONTEXT=HttpServer]</option>
<option value="4">QBT_TR(Tuesday)QBT_TR</option> <option value="4">QBT_TR(Tuesday)QBT_TR[CONTEXT=HttpServer]</option>
<option value="5">QBT_TR(Wednesday)QBT_TR</option> <option value="5">QBT_TR(Wednesday)QBT_TR[CONTEXT=HttpServer]</option>
<option value="6">QBT_TR(Thursday)QBT_TR</option> <option value="6">QBT_TR(Thursday)QBT_TR[CONTEXT=HttpServer]</option>
<option value="7">QBT_TR(Friday)QBT_TR</option> <option value="7">QBT_TR(Friday)QBT_TR[CONTEXT=HttpServer]</option>
<option value="8">QBT_TR(Saturday)QBT_TR</option> <option value="8">QBT_TR(Saturday)QBT_TR[CONTEXT=HttpServer]</option>
<option value="9">QBT_TR(Sunday)QBT_TR</option> <option value="9">QBT_TR(Sunday)QBT_TR[CONTEXT=HttpServer]</option>
</select> </select>
</br/> </br/>
</fieldset> </fieldset>
</fieldset> </fieldset>
<fieldset class="settings">
<legend>QBT_TR(Rate Limits Settings)QBT_TR[CONTEXT=OptionsDialog]</legend>
<input type="checkbox" id="enable_utp_checkbox" onClick="updateUTPEnabled();"/>
<label for="enable_utp_checkbox">QBT_TR(Enable µTP protocol)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<input type="checkbox" id="limit_utp_rate_checkbox"/>
<label for="limit_utp_rate_checkbox">QBT_TR(Apply rate limit to µTP protocol)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<input type="checkbox" id="limit_tcp_overhead_checkbox"/>
<label for="limit_tcp_overhead_checkbox">QBT_TR(Apply rate limit to transport overhead)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
</fieldset>
</div> </div>
<div id="BittorrentTab" class="PrefTab invisible"> <div id="BittorrentTab" class="PrefTab invisible">
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Privacy)QBT_TR</legend> <legend>QBT_TR(Privacy)QBT_TR[CONTEXT=OptionsDialog]</legend>
<input type="checkbox" id="dht_checkbox"/> <input type="checkbox" id="dht_checkbox"/>
<label for="dht_checkbox">QBT_TR(Enable DHT (decentralized network) to find more peers)QBT_TR</label><br/> <label for="dht_checkbox">QBT_TR(Enable DHT (decentralized network) to find more peers)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<input type="checkbox" id="pex_checkbox"/> <input type="checkbox" id="pex_checkbox"/>
<label for="pex_checkbox">QBT_TR(Enable Peer Exchange (PeX) to find more peers)QBT_TR</label><br/> <label for="pex_checkbox">QBT_TR(Enable Peer Exchange (PeX) to find more peers)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<input type="checkbox" id="lsd_checkbox"/> <input type="checkbox" id="lsd_checkbox"/>
<label for="lsd_checkbox">QBT_TR(Enable Local Peer Discovery to find more peers)QBT_TR</label><br/> <label for="lsd_checkbox">QBT_TR(Enable Local Peer Discovery to find more peers)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<label for="encryption_select">QBT_TR(Encryption mode:)QBT_TR</label> <label for="encryption_select">QBT_TR(Encryption mode:)QBT_TR[CONTEXT=OptionsDialog]</label>
<select id="encryption_select"> <select id="encryption_select">
<option value="0">QBT_TR(Prefer encryption)QBT_TR</option> <option value="0">QBT_TR(Prefer encryption)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="1">QBT_TR(Require encryption)QBT_TR</option> <option value="1">QBT_TR(Require encryption)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="2">QBT_TR(Disable encryption)QBT_TR</option> <option value="2">QBT_TR(Disable encryption)QBT_TR[CONTEXT=OptionsDialog]</option>
</select><br/> </select><br/>
<input type="checkbox" id="anonymous_mode_checkbox"/> <input type="checkbox" id="anonymous_mode_checkbox"/>
<label for="anonymous_mode_checkbox">QBT_TR(Enable anonymous mode)QBT_TR (<a target="_blank" href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">QBT_TR(More information)QBT_TR</a>)</label><br/> <label for="anonymous_mode_checkbox">QBT_TR(Enable anonymous mode)QBT_TR[CONTEXT=OptionsDialog] (<a target="_blank" href="https://github.com/qbittorrent/qBittorrent/wiki/Anonymous-Mode">QBT_TR(More information)QBT_TR[CONTEXT=HttpServer]</a>)</label><br/>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="queueing_checkbox" onclick="updateQueueingSystem();"/> <legend><input type="checkbox" id="queueing_checkbox" onclick="updateQueueingSystem();"/>
<label for="queueing_checkbox">QBT_TR(Torrent Queueing)QBT_TR</label></legend> <label for="queueing_checkbox">QBT_TR(Torrent Queueing)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<div class="formRow"> <div class="formRow">
<label for="max_active_dl_value" style="margin-left: 20px;" class="leftLabelLarge">QBT_TR(Maximum active downloads:)QBT_TR</label> <label for="max_active_dl_value" style="margin-left: 20px;" class="leftLabelLarge">QBT_TR(Maximum active downloads:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="max_active_dl_value" style="width: 4em;"/> <input type="text" id="max_active_dl_value" style="width: 4em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="max_active_up_value" style="margin-left: 20px;" class="leftLabelLarge">QBT_TR(Maximum active uploads:)QBT_TR</label> <label for="max_active_up_value" style="margin-left: 20px;" class="leftLabelLarge">QBT_TR(Maximum active uploads:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="max_active_up_value" style="width: 4em;"/> <input type="text" id="max_active_up_value" style="width: 4em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="max_active_to_value" style="margin-left: 20px;" class="leftLabelLarge">QBT_TR(Maximum active torrents:)QBT_TR</label> <label for="max_active_to_value" style="margin-left: 20px;" class="leftLabelLarge">QBT_TR(Maximum active torrents:)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="max_active_to_value" style="width: 4em;"/> <input type="text" id="max_active_to_value" style="width: 4em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<input type="checkbox" id="dont_count_slow_torrents_checkbox"/> <input type="checkbox" id="dont_count_slow_torrents_checkbox"/>
<label for="dont_count_slow_torrents_checkbox">QBT_TR(Do not count slow torrents in these limits)QBT_TR</label> <label for="dont_count_slow_torrents_checkbox">QBT_TR(Do not count slow torrents in these limits)QBT_TR[CONTEXT=OptionsDialog]</label>
</div> </div>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Share Ratio Limiting)QBT_TR</legend> <legend>QBT_TR(Share Ratio Limiting)QBT_TR[CONTEXT=OptionsDialog]</legend>
<input type="checkbox" id="max_ratio_checkbox" onClick="updateMaxRatioEnabled();"/> <input type="checkbox" id="max_ratio_checkbox" onClick="updateMaxRatioEnabled();"/>
<label for="max_ratio_checkbox">QBT_TR(Seed torrents until their ratio reaches)QBT_TR</label> <label for="max_ratio_checkbox">QBT_TR(Seed torrents until their ratio reaches)QBT_TR[CONTEXT=OptionsDialog]</label>
<input type="text" id="max_ratio_value" style="width: 4em;"/> <input type="text" id="max_ratio_value" style="width: 4em;"/>
QBT_TR(then)QBT_TR QBT_TR(then)QBT_TR[CONTEXT=OptionsDialog]
<select id="max_ratio_act"> <select id="max_ratio_act">
<option value="0">QBT_TR(Pause them)QBT_TR</option> <option value="0">QBT_TR(Pause them)QBT_TR[CONTEXT=OptionsDialog]</option>
<option value="1">QBT_TR(Remove them)QBT_TR</option> <option value="1">QBT_TR(Remove them)QBT_TR[CONTEXT=OptionsDialog]</option>
</select> </select>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="add_trackers_checkbox" onclick="updateAddTrackersEnabled();"/> <legend><input type="checkbox" id="add_trackers_checkbox" onclick="updateAddTrackersEnabled();"/>
<label for="add_trackers_checkbox">QBT_TR(Automatically add these trackers to new downloads:)QBT_TR</label></legend> <label for="add_trackers_checkbox">QBT_TR(Automatically add these trackers to new downloads:)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<textarea id="add_trackers_textarea" rows="5" cols="70"></textarea> <textarea id="add_trackers_textarea" rows="5" cols="70"></textarea>
</fieldset> </fieldset>
</div> </div>
<div id="WebUITab" class="PrefTab invisible"> <div id="WebUITab" class="PrefTab invisible">
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Language)QBT_TR</legend> <legend>QBT_TR(Language)QBT_TR[CONTEXT=OptionsDialog]</legend>
<label for="locale_select">QBT_TR(User Interface Language:)QBT_TR</label> <label for="locale_select">QBT_TR(User Interface Language:)QBT_TR[CONTEXT=OptionsDialog]</label>
<select id="locale_select"> <select id="locale_select">
<option value="en">English</option> <option value="en">English</option>
<option value="en_AU">English(Australia)</option> <option value="en_AU">English(Australia)</option>
@ -382,60 +383,60 @@
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(HTTP Server)QBT_TR</legend> <legend>QBT_TR(Web User Interface (Remote control))QBT_TR[CONTEXT=OptionsDialog]</legend>
<label for="webui_port_value">QBT_TR(Port:)QBT_TR</label><input type="text" id="webui_port_value" style="width: 4em;"/><br/> <label for="webui_port_value">QBT_TR(Port:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="webui_port_value" style="width: 4em;"/><br/>
<input type="checkbox" id="webui_upnp_checkbox"/> <input type="checkbox" id="webui_upnp_checkbox"/>
<label for="webui_upnp_checkbox">QBT_TR(Use UPnP / NAT-PMP to forward the port from my router)QBT_TR</label><br/> <label for="webui_upnp_checkbox">QBT_TR(Use UPnP / NAT-PMP to forward the port from my router)QBT_TR[CONTEXT=OptionsDialog]</label><br/>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="use_https_checkbox" onclick="updateHttpsSettings();" /> <legend><input type="checkbox" id="use_https_checkbox" onclick="updateHttpsSettings();" />
<label for="use_https_checkbox">QBT_TR(Use HTTPS instead of HTTP)QBT_TR</label></legend> <label for="use_https_checkbox">QBT_TR(Use HTTPS instead of HTTP)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<div class="formRow"> <div class="formRow">
<label for="ssl_key_textarea" style="margin-left: 20px;">QBT_TR(Key:)QBT_TR</label> <label for="ssl_key_textarea" style="margin-left: 20px;">QBT_TR(Key:)QBT_TR[CONTEXT=OptionsDialog]</label>
<textarea id="ssl_key_textarea" rows="5" cols="70"></textarea> <textarea id="ssl_key_textarea" rows="5" cols="70"></textarea>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="ssl_cert_textarea" style="margin-left: 20px;">QBT_TR(Certificate:)QBT_TR</label> <label for="ssl_cert_textarea" style="margin-left: 20px;">QBT_TR(Certificate:)QBT_TR[CONTEXT=OptionsDialog]</label>
<textarea id="ssl_cert_textarea" rows="5" cols="70"></textarea> <textarea id="ssl_cert_textarea" rows="5" cols="70"></textarea>
</div> </div>
<div style="padding-left: 10px;"><a target="_blank" href="https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts">QBT_TR(Information about certificates)QBT_TR</a></div> <div style="padding-left: 10px;"><a target="_blank" href="https://httpd.apache.org/docs/current/ssl/ssl_faq.html#aboutcerts">QBT_TR(Information about certificates)QBT_TR[CONTEXT=HttpServer]</a></div>
</fieldset> </fieldset>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend>QBT_TR(Authentication)QBT_TR</legend> <legend>QBT_TR(Authentication)QBT_TR[CONTEXT=OptionsDialog]</legend>
<div class="formRow"> <div class="formRow">
<label for="webui_username_text" class="leftLabelSmall">QBT_TR(Username:)QBT_TR</label><input type="text" id="webui_username_text" /> <label for="webui_username_text" class="leftLabelSmall">QBT_TR(Username:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="webui_username_text" />
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="webui_password_text" class="leftLabelSmall">QBT_TR(Password:)QBT_TR</label><input type="password" id="webui_password_text" /> <label for="webui_password_text" class="leftLabelSmall">QBT_TR(Password:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="password" id="webui_password_text" />
</div> </div>
<input type="checkbox" id="bypass_local_auth_checkbox" /> <input type="checkbox" id="bypass_local_auth_checkbox" />
<label for="bypass_local_auth_checkbox">QBT_TR(Bypass authentication for localhost)QBT_TR</label> <label for="bypass_local_auth_checkbox">QBT_TR(Bypass authentication for localhost)QBT_TR[CONTEXT=OptionsDialog]</label>
</fieldset> </fieldset>
<fieldset class="settings"> <fieldset class="settings">
<legend><input type="checkbox" id="use_dyndns_checkbox" onclick="updateDynDnsSettings();" /> <legend><input type="checkbox" id="use_dyndns_checkbox" onclick="updateDynDnsSettings();" />
<label for="use_dyndns_checkbox">QBT_TR(Update my dynamic domain name)QBT_TR</label></legend> <label for="use_dyndns_checkbox">QBT_TR(Update my dynamic domain name)QBT_TR[CONTEXT=OptionsDialog]</label></legend>
<select id="dyndns_select"> <select id="dyndns_select">
<option value="0">DynDNS</option> <option value="0">DynDNS</option>
<option value="1">NO-IP</option> <option value="1">NO-IP</option>
</select> </select>
<input type="button" value="QBT_TR(Register)QBT_TR" onclick="registerDynDns();"/><br/><br/> <input type="button" value="QBT_TR(Register)QBT_TR[CONTEXT=OptionsDialog]" onclick="registerDynDns();"/><br/><br/>
<div class="formRow"> <div class="formRow">
<label for="dyndns_domain_text" class="leftLabelSmall">QBT_TR(Domain name:)QBT_TR</label><input type="text" id="dyndns_domain_text"/> <label for="dyndns_domain_text" class="leftLabelSmall">QBT_TR(Domain name:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="dyndns_domain_text"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="dyndns_username_text" class="leftLabelSmall">QBT_TR(Username:)QBT_TR</label><input type="text" id="dyndns_username_text"/> <label for="dyndns_username_text" class="leftLabelSmall">QBT_TR(Username:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="text" id="dyndns_username_text"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="dyndns_password_text" class="leftLabelSmall">QBT_TR(Password:)QBT_TR</label><input type="password" id="dyndns_password_text"/> <label for="dyndns_password_text" class="leftLabelSmall">QBT_TR(Password:)QBT_TR[CONTEXT=OptionsDialog]</label><input type="password" id="dyndns_password_text"/>
</div> </div>
</fieldset> </fieldset>
</div> </div>
<br/> <br/>
<center><input type="button" value="QBT_TR(Save)QBT_TR" onclick="applyPreferences();"/></center> <center><input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" onclick="applyPreferences();"/></center>
<script type="text/javascript"> <script type="text/javascript">
// Downloads tab // Downloads tab
@ -471,7 +472,7 @@ addWatchFolder = function() {
changeWatchFolderSelect = function(item) { changeWatchFolderSelect = function(item) {
if (item.value == "other") { if (item.value == "other") {
item.nextElementSibling.value = 'QBT_TR(Type folder here)QBT_TR'; item.nextElementSibling.value = 'QBT_TR(Type folder here)QBT_TR[CONTEXT=HttpServer]';
item.nextElementSibling.select(); item.nextElementSibling.select();
} else { } else {
var text = item.options[item.selectedIndex].innerHTML; var text = item.options[item.selectedIndex].innerHTML;
@ -487,9 +488,9 @@ pushWatchFolder = function(pos, folder, sel, other) {
var myinput = "<input id='text_watch_"+ pos +"' type='text' value='" + folder + "'>"; var myinput = "<input id='text_watch_"+ pos +"' type='text' value='" + folder + "'>";
var mycb = "<div class='select-watched-folder-editable'>" + var mycb = "<div class='select-watched-folder-editable'>" +
"<select id ='cb_watch_" + pos + "' onchange='changeWatchFolderSelect(this)'>" + "<select id ='cb_watch_" + pos + "' onchange='changeWatchFolderSelect(this)'>" +
"<option value='watch_folder'>QBT_TR(Watch Folder)QBT_TR</option>" + "<option value='watch_folder'>QBT_TR(Monitored folder)QBT_TR[CONTEXT=ScanFoldersModel]</option>" +
"<option value='default_folder'>QBT_TR(Default Folder)QBT_TR</option>" + "<option value='default_folder'>QBT_TR(Default save location)QBT_TR[CONTEXT=ScanFoldersModel]</option>" +
"<option value='other'>QBT_TR(Other...)QBT_TR</option>" + "<option value='other'>QBT_TR(Other...)QBT_TR[CONTEXT=HttpServer]</option>" +
"</select>" + "</select>" +
"<input id='cb_watch_txt_" + pos + "' type='text' " + "<input id='cb_watch_txt_" + pos + "' type='text' " +
"onchange='changeWatchFolderText(this)' /></div>"; "onchange='changeWatchFolderText(this)' /></div>";
@ -1072,7 +1073,7 @@ applyPreferences = function() {
// Listening Port // Listening Port
var listen_port = $('port_value').getProperty('value').toInt(); var listen_port = $('port_value').getProperty('value').toInt();
if(isNaN(listen_port) || listen_port < 1 || listen_port > 65535) { if(isNaN(listen_port) || listen_port < 1 || listen_port > 65535) {
alert("QBT_TR(The port used for incoming connections must be between 1 and 65535.)QBT_TR"); alert("QBT_TR(The port used for incoming connections must be between 1 and 65535.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
settings.set('listen_port', listen_port); settings.set('listen_port', listen_port);
@ -1084,7 +1085,7 @@ applyPreferences = function() {
if($('max_connec_checkbox').getProperty('checked')) { if($('max_connec_checkbox').getProperty('checked')) {
max_connec = $('max_connec_value').getProperty('value').toInt(); max_connec = $('max_connec_value').getProperty('value').toInt();
if(isNaN(max_connec) || max_connec <= 0) { if(isNaN(max_connec) || max_connec <= 0) {
alert("QBT_TR(Maximum number of connections limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Maximum number of connections limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1093,7 +1094,7 @@ applyPreferences = function() {
if($('max_connec_per_torrent_checkbox').getProperty('checked')) { if($('max_connec_per_torrent_checkbox').getProperty('checked')) {
max_connec_per_torrent = $('max_connec_per_torrent_value').getProperty('value').toInt(); max_connec_per_torrent = $('max_connec_per_torrent_value').getProperty('value').toInt();
if(isNaN(max_connec_per_torrent) || max_connec_per_torrent <= 0) { if(isNaN(max_connec_per_torrent) || max_connec_per_torrent <= 0) {
alert("QBT_TR(Maximum number of connections per torrent limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Maximum number of connections per torrent limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1102,7 +1103,7 @@ applyPreferences = function() {
if($('max_uploads_checkbox').getProperty('checked')) { if($('max_uploads_checkbox').getProperty('checked')) {
max_uploads = $('max_uploads_value').getProperty('value').toInt(); max_uploads = $('max_uploads_value').getProperty('value').toInt();
if(isNaN(max_uploads) || max_uploads <= 0) { if(isNaN(max_uploads) || max_uploads <= 0) {
alert("QBT_TR(Global number of upload slots limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Global number of upload slots limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1111,7 +1112,7 @@ applyPreferences = function() {
if($('max_uploads_per_torrent_checkbox').getProperty('checked')) { if($('max_uploads_per_torrent_checkbox').getProperty('checked')) {
max_uploads_per_torrent = $('max_uploads_per_torrent_value').getProperty('value').toInt(); max_uploads_per_torrent = $('max_uploads_per_torrent_value').getProperty('value').toInt();
if(isNaN(max_uploads_per_torrent) || max_uploads_per_torrent <= 0) { if(isNaN(max_uploads_per_torrent) || max_uploads_per_torrent <= 0) {
alert("QBT_TR(Maximum number of upload slots per torrent limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Maximum number of upload slots per torrent limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1163,7 +1164,7 @@ applyPreferences = function() {
if($('up_limit_checkbox').getProperty('checked')) { if($('up_limit_checkbox').getProperty('checked')) {
up_limit = $('up_limit_value').getProperty('value').toInt() * 1024; up_limit = $('up_limit_value').getProperty('value').toInt() * 1024;
if(isNaN(up_limit) || up_limit <= 0) { if(isNaN(up_limit) || up_limit <= 0) {
alert("QBT_TR(Global upload rate limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Global upload rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1172,7 +1173,7 @@ applyPreferences = function() {
if($('dl_limit_checkbox').getProperty('checked')) { if($('dl_limit_checkbox').getProperty('checked')) {
dl_limit = $('dl_limit_value').getProperty('value').toInt() * 1024; dl_limit = $('dl_limit_value').getProperty('value').toInt() * 1024;
if(isNaN(dl_limit) || dl_limit <= 0) { if(isNaN(dl_limit) || dl_limit <= 0) {
alert("QBT_TR(Global download rate limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Global download rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1186,7 +1187,7 @@ applyPreferences = function() {
if($('alt_up_limit_checkbox').getProperty('checked')) { if($('alt_up_limit_checkbox').getProperty('checked')) {
alt_up_limit = $('alt_up_limit_value').getProperty('value').toInt() * 1024; alt_up_limit = $('alt_up_limit_value').getProperty('value').toInt() * 1024;
if(isNaN(alt_up_limit) || alt_up_limit <= 0) { if(isNaN(alt_up_limit) || alt_up_limit <= 0) {
alert("QBT_TR(Alternative upload rate limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Alternative upload rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1195,7 +1196,7 @@ applyPreferences = function() {
if($('alt_dl_limit_checkbox').getProperty('checked')) { if($('alt_dl_limit_checkbox').getProperty('checked')) {
alt_dl_limit = $('alt_dl_limit_value').getProperty('value').toInt() * 1024; alt_dl_limit = $('alt_dl_limit_value').getProperty('value').toInt() * 1024;
if(isNaN(alt_dl_limit) || alt_dl_limit <= 0) { if(isNaN(alt_dl_limit) || alt_dl_limit <= 0) {
alert("QBT_TR(Alternative download rate limit must be greater than 0 or disabled.)QBT_TR"); alert("QBT_TR(Alternative download rate limit must be greater than 0 or disabled.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1225,19 +1226,19 @@ applyPreferences = function() {
if($('queueing_checkbox').getProperty('checked')) { if($('queueing_checkbox').getProperty('checked')) {
var max_active_downloads = $('max_active_dl_value').getProperty('value').toInt(); var max_active_downloads = $('max_active_dl_value').getProperty('value').toInt();
if(isNaN(max_active_downloads) || max_active_downloads < -1) { if(isNaN(max_active_downloads) || max_active_downloads < -1) {
alert("QBT_TR(Maximum active downloads must be greater than -1.)QBT_TR"); alert("QBT_TR(Maximum active downloads must be greater than -1.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
settings.set('max_active_downloads', max_active_downloads); settings.set('max_active_downloads', max_active_downloads);
var max_active_uploads = $('max_active_up_value').getProperty('value').toInt(); var max_active_uploads = $('max_active_up_value').getProperty('value').toInt();
if(isNaN(max_active_uploads) || max_active_uploads < -1) { if(isNaN(max_active_uploads) || max_active_uploads < -1) {
alert("QBT_TR(Maximum active uploads must be greater than -1.)QBT_TR"); alert("QBT_TR(Maximum active uploads must be greater than -1.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
settings.set('max_active_uploads', max_active_uploads); settings.set('max_active_uploads', max_active_uploads);
var max_active_torrents = $('max_active_to_value').getProperty('value').toInt(); var max_active_torrents = $('max_active_to_value').getProperty('value').toInt();
if(isNaN(max_active_torrents) || max_active_torrents < -1) { if(isNaN(max_active_torrents) || max_active_torrents < -1) {
alert("QBT_TR(Maximum active torrents must be greater than -1.)QBT_TR"); alert("QBT_TR(Maximum active torrents must be greater than -1.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
settings.set('max_active_torrents', max_active_torrents); settings.set('max_active_torrents', max_active_torrents);
@ -1249,7 +1250,7 @@ applyPreferences = function() {
if($('max_ratio_checkbox').getProperty('checked')) { if($('max_ratio_checkbox').getProperty('checked')) {
max_ratio = $('max_ratio_value').getProperty('value'); max_ratio = $('max_ratio_value').getProperty('value');
if(isNaN(max_ratio) || max_ratio < 0 || max_ratio > 9998) { if(isNaN(max_ratio) || max_ratio < 0 || max_ratio > 9998) {
alert("QBT_TR(Share ratio limit must be between 0 and 9998.)QBT_TR"); alert("QBT_TR(Share ratio limit must be between 0 and 9998.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
} }
@ -1268,7 +1269,7 @@ applyPreferences = function() {
// HTTP Server // HTTP Server
var web_ui_port = $('webui_port_value').getProperty('value').toInt(); var web_ui_port = $('webui_port_value').getProperty('value').toInt();
if(isNaN(web_ui_port) || web_ui_port < 1 || web_ui_port > 65535) { if(isNaN(web_ui_port) || web_ui_port < 1 || web_ui_port > 65535) {
alert("QBT_TR(The port used for the Web UI must be between 1 and 65535.)QBT_TR"); alert("QBT_TR(The port used for the Web UI must be between 1 and 65535.)QBT_TR[CONTEXT=HttpServer]");
return; return;
} }
settings.set('web_ui_port', web_ui_port); settings.set('web_ui_port', web_ui_port);
@ -1280,12 +1281,12 @@ applyPreferences = function() {
// Authentication // Authentication
var web_ui_username = $('webui_username_text').getProperty('value'); var web_ui_username = $('webui_username_text').getProperty('value');
if(web_ui_username.length < 3) { if(web_ui_username.length < 3) {
alert("QBT_TR(The Web UI username must be at least 3 characters long.)QBT_TR"); alert("QBT_TR(The Web UI username must be at least 3 characters long.)QBT_TR[CONTEXT=OptionsDialog]");
return; return;
} }
var web_ui_password = $('webui_password_text').getProperty('value'); var web_ui_password = $('webui_password_text').getProperty('value');
if(web_ui_password.length < 6) { if(web_ui_password.length < 6) {
alert("QBT_TR(The Web UI password must be at least 6 characters long.)QBT_TR"); alert("QBT_TR(The Web UI password must be at least 6 characters long.)QBT_TR[CONTEXT=OptionsDialog]");
return; return;
} }
settings.set('web_ui_username', web_ui_username); settings.set('web_ui_username', web_ui_username);
@ -1307,7 +1308,7 @@ applyPreferences = function() {
data: {'json': json_str, data: {'json': json_str,
}, },
onFailure: function() { onFailure: function() {
alert("QBT_TR(Unable to save program preferences, qBittorrent is probably unreachable.)QBT_TR"); alert("QBT_TR(Unable to save program preferences, qBittorrent is probably unreachable.)QBT_TR[CONTEXT=HttpServer]");
window.parent.closeWindows(); window.parent.closeWindows();
}, },
onSuccess: function() { onSuccess: function() {

10
src/webui/www/public/properties.html

@ -1,10 +1,10 @@
<div class="toolbarTabs"> <div class="toolbarTabs">
<ul id="propertiesTabs" class="tab-menu"> <ul id="propertiesTabs" class="tab-menu">
<li id="PropGeneralLink" class="selected"><a>QBT_TR(General)QBT_TR</a></li> <li id="PropGeneralLink" class="selected"><a>QBT_TR(General)QBT_TR[CONTEXT=PropTabBar]</a></li>
<li id="PropTrackersLink"><a>QBT_TR(Trackers)QBT_TR</a></li> <li id="PropTrackersLink"><a>QBT_TR(Trackers)QBT_TR[CONTEXT=PropTabBar]</a></li>
<li id="PropPeersLink"><a>QBT_TR(Peers)QBT_TR</a></li> <li id="PropPeersLink"><a>QBT_TR(Peers)QBT_TR[CONTEXT=PropTabBar]</a></li>
<li id="PropWebSeedsLink"><a>QBT_TR(HTTP Sources)QBT_TR</a></li> <li id="PropWebSeedsLink"><a>QBT_TR(HTTP Sources)QBT_TR[CONTEXT=PropTabBar]</a></li>
<li id="PropFilesLink"><a>QBT_TR(Content)QBT_TR</a></li> <li id="PropFilesLink"><a>QBT_TR(Content)QBT_TR[CONTEXT=PropTabBar]</a></li>
</ul> </ul>
<div class="clear"></div> <div class="clear"></div>
</div> </div>

70
src/webui/www/public/properties_content.html

@ -1,47 +1,47 @@
<div id="prop_general"> <div id="prop_general">
<fieldset> <fieldset>
<legend><b>QBT_TR(Transfer)QBT_TR</b></legend> <legend><b>QBT_TR(Transfer)QBT_TR[CONTEXT=PropertiesWidget]</b></legend>
<table style="width: 100%"> <table style="width: 100%">
<tr> <tr>
<td class="generalLabel">QBT_TR(Time Active:)QBT_TR</td><td id="time_elapsed"></td> <td class="generalLabel">QBT_TR(Time Active:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="time_elapsed"></td>
<td class="generalLabel">QBT_TR(ETA:)QBT_TR</td><td id="eta"></td> <td class="generalLabel">QBT_TR(ETA:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="eta"></td>
<td class="generalLabel">QBT_TR(Connections:)QBT_TR</td><td id="nb_connections"></td> <td class="generalLabel">QBT_TR(Connections:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="nb_connections"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Downloaded:)QBT_TR</td><td id="total_downloaded"></td> <td class="generalLabel">QBT_TR(Downloaded:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="total_downloaded"></td>
<td class="generalLabel">QBT_TR(Uploaded:)QBT_TR</td><td id="total_uploaded"></td> <td class="generalLabel">QBT_TR(Uploaded:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="total_uploaded"></td>
<td class="generalLabel">QBT_TR(Seeds:)QBT_TR</td><td id="seeds"></td> <td class="generalLabel">QBT_TR(Seeds:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="seeds"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Download Speed:)QBT_TR</td><td id="dl_speed"></td> <td class="generalLabel">QBT_TR(Download Speed:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="dl_speed"></td>
<td class="generalLabel">QBT_TR(Upload Speed:)QBT_TR</td><td id="up_speed"></td> <td class="generalLabel">QBT_TR(Upload Speed:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="up_speed"></td>
<td class="generalLabel">QBT_TR(Peers:)QBT_TR</td><td id="peers"></td> <td class="generalLabel">QBT_TR(Peers:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="peers"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Download Limit:)QBT_TR</td><td id="dl_limit"></td> <td class="generalLabel">QBT_TR(Download Limit:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="dl_limit"></td>
<td class="generalLabel">QBT_TR(Upload Limit:)QBT_TR</td><td id="up_limit"></td> <td class="generalLabel">QBT_TR(Upload Limit:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="up_limit"></td>
<td class="generalLabel">QBT_TR(Wasted:)QBT_TR</td><td id="total_wasted"></td> <td class="generalLabel">QBT_TR(Wasted:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="total_wasted"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Share Ratio:)QBT_TR</td><td id="share_ratio"></td> <td class="generalLabel">QBT_TR(Share Ratio:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="share_ratio"></td>
<td class="generalLabel">QBT_TR(Reannounce In:)QBT_TR</td><td id="reannounce"></td> <td class="generalLabel">QBT_TR(Reannounce In:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="reannounce"></td>
<td class="generalLabel">QBT_TR(Last Seen Complete:)QBT_TR</td><td id="last_seen"></td> <td class="generalLabel">QBT_TR(Last Seen Complete:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="last_seen"></td>
</tr> </tr>
</table> </table>
</fieldset> </fieldset>
<fieldset> <fieldset>
<legend><b>QBT_TR(Information)QBT_TR</b></legend> <legend><b>QBT_TR(Information)QBT_TR[CONTEXT=PropertiesWidget]</b></legend>
<table style="width: 100%"> <table style="width: 100%">
<tr> <tr>
<td class="generalLabel">QBT_TR(Total Size:)QBT_TR</td><td id="total_size"></td> <td class="generalLabel">QBT_TR(Total Size:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="total_size"></td>
<td class="generalLabel">QBT_TR(Pieces:)QBT_TR</td><td id="pieces"></td> <td class="generalLabel">QBT_TR(Pieces:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="pieces"></td>
<td class="generalLabel">QBT_TR(Created By:)QBT_TR</td><td id="created_by"></td> <td class="generalLabel">QBT_TR(Created By:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="created_by"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Added On:)QBT_TR</td><td id="addition_date"></td> <td class="generalLabel">QBT_TR(Added On:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="addition_date"></td>
<td class="generalLabel">QBT_TR(Completed On:)QBT_TR</td><td id="completion_date"></td> <td class="generalLabel">QBT_TR(Completed On:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="completion_date"></td>
<td class="generalLabel">QBT_TR(Created On:)QBT_TR</td><td id="creation_date"></td> <td class="generalLabel">QBT_TR(Created On:)QBT_TR[CONTEXT=PropertiesWidget]</td><td id="creation_date"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Torrent Hash:)QBT_TR</td><td colspan="5" id="torrent_hash"></td> <td class="generalLabel">QBT_TR(Torrent Hash:)QBT_TR[CONTEXT=PropertiesWidget]</td><td colspan="5" id="torrent_hash"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Save Path:)QBT_TR</td><td colspan="5" id="save_path"></td> <td class="generalLabel">QBT_TR(Save Path:)QBT_TR[CONTEXT=PropertiesWidget]</td><td colspan="5" id="save_path"></td>
</tr><tr> </tr><tr>
<td class="generalLabel">QBT_TR(Comment:)QBT_TR</td><td colspan="5" style="white-space: pre-wrap;" id="comment"></td> <td class="generalLabel">QBT_TR(Comment:)QBT_TR[CONTEXT=PropertiesWidget]</td><td colspan="5" style="white-space: pre-wrap;" id="comment"></td>
</tr> </tr>
</table> </table>
</fieldset> </fieldset>
@ -52,10 +52,10 @@
<table class="dynamicTable" style="width: 100%"> <table class="dynamicTable" style="width: 100%">
<thead> <thead>
<tr> <tr>
<th style="width: 30%;">QBT_TR(URL)QBT_TR <img src="theme/list-add" id="addTrackersPlus"/></th> <th style="width: 30%;">QBT_TR(URL)QBT_TR[CONTEXT=TrackerList] <img src="theme/list-add" id="addTrackersPlus"/></th>
<th style="width: 10%;">QBT_TR(Status)QBT_TR</th> <th style="width: 10%;">QBT_TR(Status)QBT_TR[CONTEXT=TrackerList]</th>
<th style="width: 10%;">QBT_TR(Peers)QBT_TR</th> <th style="width: 10%;">QBT_TR(Peers)QBT_TR[CONTEXT=TrackerList]</th>
<th style="width: 50%;">QBT_TR(Message)QBT_TR</th> <th style="width: 50%;">QBT_TR(Message)QBT_TR[CONTEXT=TrackerList]</th>
</tr> </tr>
</thead> </thead>
<tbody id="trackersTable"></tbody> <tbody id="trackersTable"></tbody>
@ -88,7 +88,7 @@
<table class="dynamicTable" style="width: 100%"> <table class="dynamicTable" style="width: 100%">
<thead> <thead>
<tr> <tr>
<th>QBT_TR(URL)QBT_TR</th> <th>QBT_TR(URL)QBT_TR[CONTEXT=TrackerList]</th>
</tr> </tr>
</thead> </thead>
<tbody id="webseedsTable"></tbody> <tbody id="webseedsTable"></tbody>
@ -102,10 +102,10 @@
<thead> <thead>
<tr> <tr>
<th style="width: 4.5em; border-right: 0"><input type="checkbox" id="tristate_cb" style="display: none;" onclick="javascript:switchCBState()" /><label id="all_files_cb" class="tristate" for="tristate_cb"></label></th> <th style="width: 4.5em; border-right: 0"><input type="checkbox" id="tristate_cb" style="display: none;" onclick="javascript:switchCBState()" /><label id="all_files_cb" class="tristate" for="tristate_cb"></label></th>
<th>QBT_TR(Name)QBT_TR</th> <th>QBT_TR(Name)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 150px;">QBT_TR(Size)QBT_TR</th> <th style="width: 150px;">QBT_TR(Size)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 90px;">QBT_TR(Progress)QBT_TR</th> <th style="width: 90px;">QBT_TR(Progress)QBT_TR[CONTEXT=TorrentContentModel]</th>
<th style="width: 150px; border-right: 0">QBT_TR(Download Priority)QBT_TR</th> <th style="width: 150px; border-right: 0">QBT_TR(Download Priority)QBT_TR[CONTEXT=TorrentContentModel]</th>
</tr> </tr>
</thead> </thead>
<tbody id="filesTable"></tbody> <tbody id="filesTable"></tbody>

58
src/webui/www/public/scripts/client.js

@ -207,15 +207,15 @@ window.addEvent('load', function () {
}; };
var updateFiltersList = function() { var updateFiltersList = function() {
updateFilter('all', 'QBT_TR(All (%1))QBT_TR'); updateFilter('all', 'QBT_TR(All (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('downloading', 'QBT_TR(Downloading (%1))QBT_TR'); updateFilter('downloading', 'QBT_TR(Downloading (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('seeding', 'QBT_TR(Seeding (%1))QBT_TR'); updateFilter('seeding', 'QBT_TR(Seeding (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('completed', 'QBT_TR(Completed (%1))QBT_TR'); updateFilter('completed', 'QBT_TR(Completed (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('resumed', 'QBT_TR(Resumed (%1))QBT_TR'); updateFilter('resumed', 'QBT_TR(Resumed (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('paused', 'QBT_TR(Paused (%1))QBT_TR'); updateFilter('paused', 'QBT_TR(Paused (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('active', 'QBT_TR(Active (%1))QBT_TR'); updateFilter('active', 'QBT_TR(Active (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('inactive', 'QBT_TR(Inactive (%1))QBT_TR'); updateFilter('inactive', 'QBT_TR(Inactive (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
updateFilter('errored', 'QBT_TR(Errored (%1))QBT_TR'); updateFilter('errored', 'QBT_TR(Errored (%1))QBT_TR[CONTEXT=StatusFiltersWidget]');
}; };
var updateCategoryList = function() { var updateCategoryList = function() {
@ -239,8 +239,8 @@ window.addEvent('load', function () {
if (row['full_data'].category.length === 0) if (row['full_data'].category.length === 0)
uncategorized += 1; uncategorized += 1;
}); });
categoryList.appendChild(create_link(CATEGORIES_ALL, 'QBT_TR(All (0))QBT_TR'.replace(' (0)', ''), all)); categoryList.appendChild(create_link(CATEGORIES_ALL, 'QBT_TR(All)QBT_TR[CONTEXT=CategoryFilterModel]', all));
categoryList.appendChild(create_link(CATEGORIES_UNCATEGORIZED, 'QBT_TR(Uncategorized (0))QBT_TR'.replace(' (0)', ''), uncategorized)); categoryList.appendChild(create_link(CATEGORIES_UNCATEGORIZED, 'QBT_TR(Uncategorized)QBT_TR[CONTEXT=CategoryFilterModel]', uncategorized));
var sortedCategories = [] var sortedCategories = []
Object.each(category_list, function(category) { Object.each(category_list, function(category) {
@ -279,7 +279,7 @@ window.addEvent('load', function () {
noCache : true, noCache : true,
method : 'get', method : 'get',
onFailure : function () { onFailure : function () {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
clearTimeout(syncMainDataTimer); clearTimeout(syncMainDataTimer);
syncMainDataTimer = syncMainData.delay(2000); syncMainDataTimer = syncMainData.delay(2000);
}, },
@ -362,26 +362,26 @@ window.addEvent('load', function () {
transfer_info += " (" + friendlyUnit(serverState.up_info_data, false) + ")"; transfer_info += " (" + friendlyUnit(serverState.up_info_data, false) + ")";
$("UpInfos").set('html', transfer_info); $("UpInfos").set('html', transfer_info);
if (speedInTitle) { if (speedInTitle) {
document.title = "QBT_TR([D:%1 U:%2])QBT_TR".replace("%1", friendlyUnit(serverState.dl_info_speed, true)).replace("%2", friendlyUnit(serverState.up_info_speed, true)); document.title = "QBT_TR([D: %1, U: %2] qBittorrent %3)QBT_TR[CONTEXT=MainWindow]".replace("%1", friendlyUnit(serverState.dl_info_speed, true)).replace("%2", friendlyUnit(serverState.up_info_speed, true)).replace("%3", "${VERSION}");
document.title += " qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR"; document.title += " QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]";
}else }else
document.title = "qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR"; document.title = "qBittorrent ${VERSION} QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]";
$('DHTNodes').set('html', 'QBT_TR(DHT: %1 nodes)QBT_TR'.replace("%1", serverState.dht_nodes)); $('DHTNodes').set('html', 'QBT_TR(DHT: %1 nodes)QBT_TR[CONTEXT=StatusBar]'.replace("%1", serverState.dht_nodes));
<!-- Statistics dialog --> <!-- Statistics dialog -->
if (document.getElementById("statisticspage")) { if (document.getElementById("statisticspage")) {
$('AlltimeDL').set('html', 'Alltime download: %1'.replace("%1", friendlyUnit(serverState.alltime_dl, false))); $('AlltimeDL').set('html', 'QBT_TR(Alltime download:)QBT_TR[CONTEXT=StatsDialog]' + " " + friendlyUnit(serverState.alltime_dl, false));
$('AlltimeUL').set('html', 'Alltime upload: %1'.replace("%1", friendlyUnit(serverState.alltime_ul, false))); $('AlltimeUL').set('html', 'QBT_TR(Alltime upload:)QBT_TR[CONTEXT=StatsDialog]' + " " + friendlyUnit(serverState.alltime_ul, false));
$('TotalWastedSession').set('html', 'Total wasted (this session): %1'.replace("%1", friendlyUnit(serverState.total_wasted_session, false))); $('TotalWastedSession').set('html', 'QBT_TR(Total wasted (this session):)QBT_TR[CONTEXT=StatsDialog]' + " " + friendlyUnit(serverState.total_wasted_session, false));
$('GlobalRatio').set('html', 'Global ratio: %1'.replace("%1", serverState.global_ratio )); $('GlobalRatio').set('html', 'QBT_TR(Global ratio:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.global_ratio);
$('TotalPeerConnections').set('html', 'Total peer connections: %1'.replace("%1", serverState.total_peer_connections )); $('TotalPeerConnections').set('html', 'QBT_TR(Total peer connections:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.total_peer_connections);
$('ReadCacheHits').set('html', 'Read cache hits: %1'.replace("%1", serverState.read_cache_hits )); $('ReadCacheHits').set('html', 'QBT_TR(Read cache hits:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.read_cache_hits);
$('TotalBuffersSize').set('html', 'Total buffers size: %1'.replace("%1", friendlyUnit(serverState.total_buffers_size, false))); $('TotalBuffersSize').set('html', 'QBT_TR(Total buffers size:)QBT_TR[CONTEXT=StatsDialog]' + " " + friendlyUnit(serverState.total_buffers_size, false));
$('WriteCacheOverload').set('html', 'Write cache overload: %1'.replace("%1", serverState.write_cache_overload )); $('WriteCacheOverload').set('html', 'QBT_TR(Write cache overload:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.write_cache_overload);
$('ReadCacheOverload').set('html', 'Read cache overload: %1'.replace("%1", serverState.read_cache_overload )); $('ReadCacheOverload').set('html', 'QBT_TR(Read cache overload:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.read_cache_overload);
$('QueuedIOJobs').set('html', 'Queued I/O jobs: %1'.replace("%1", serverState.queued_io_jobs )); $('QueuedIOJobs').set('html', 'QBT_TR(Queued I/O jobs:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.queued_io_jobs);
$('AverageTimeInQueue').set('html', 'Average time in queue: %1'.replace("%1", serverState.average_time_queue )); $('AverageTimeInQueue').set('html', 'QBT_TR(Average time in queue:)QBT_TR[CONTEXT=StatsDialog]' + " " + serverState.average_time_queue);
$('TotalQueuedSize').set('html', 'Total queued size: %1'.replace("%1", friendlyUnit(serverState.total_queued_size, false) )); $('TotalQueuedSize').set('html', 'QBT_TR(Total queued size:)QBT_TR[CONTEXT=StatsDialog]' + " " + friendlyUnit(serverState.total_queued_size, false));
} }
if (serverState.connection_status == "connected") if (serverState.connection_status == "connected")
@ -631,7 +631,7 @@ var loadTorrentPeersData = function(){
noCache: true, noCache: true,
method: 'get', method: 'get',
onFailure: function() { onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
clearTimeout(loadTorrentPeersTimer); clearTimeout(loadTorrentPeersTimer);
loadTorrentPeersTimer = loadTorrentPeersData.delay(5000); loadTorrentPeersTimer = loadTorrentPeersData.delay(5000);
}, },

4
src/webui/www/public/scripts/contextmenu.js

@ -341,8 +341,8 @@ var TorrentsTableContextMenu = new Class({
updateCategoriesSubMenu : function (category_list) { updateCategoriesSubMenu : function (category_list) {
var categoryList = $('contextCategoryList'); var categoryList = $('contextCategoryList');
categoryList.empty(); categoryList.empty();
categoryList.appendChild(new Element('li', {html: '<a href="javascript:torrentNewCategoryFN();"><img src="theme/list-add" alt="QBT_TR(New...)QBT_TR"/> QBT_TR(New...)QBT_TR</a>'})); categoryList.appendChild(new Element('li', {html: '<a href="javascript:torrentNewCategoryFN();"><img src="theme/list-add" alt="QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget]</a>'}));
categoryList.appendChild(new Element('li', {html: '<a href="javascript:torrentSetCategoryFN(0);"><img src="theme/edit-clear" alt="QBT_TR(Reset)QBT_TR"/> QBT_TR(Reset)QBT_TR</a>'})); categoryList.appendChild(new Element('li', {html: '<a href="javascript:torrentSetCategoryFN(0);"><img src="theme/edit-clear" alt="QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget]</a>'}));
var sortedCategories = [] var sortedCategories = []
Object.each(category_list, function (category) { Object.each(category_list, function (category) {

26
src/webui/www/public/scripts/misc.js

@ -3,18 +3,20 @@
*/ */
function friendlyUnit(value, isSpeed) { function friendlyUnit(value, isSpeed) {
units = [ units = [
"QBT_TR(B)QBT_TR", "QBT_TR(B)QBT_TR[CONTEXT=misc]",
"QBT_TR(KiB)QBT_TR", "QBT_TR(KiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(MiB)QBT_TR", "QBT_TR(MiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(GiB)QBT_TR", "QBT_TR(GiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(TiB)QBT_TR", "QBT_TR(TiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(PiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(EiB)QBT_TR[CONTEXT=misc]"
]; ];
if (value < 0) if (value < 0)
return "QBT_TR(Unknown)QBT_TR"; return "QBT_TR(Unknown)QBT_TR[CONTEXT=misc]";
var i = 0; var i = 0;
while (value >= 1024. && i < 4) { while (value >= 1024. && i < 6) {
value /= 1024.; value /= 1024.;
++i; ++i;
} }
@ -26,7 +28,7 @@ function friendlyUnit(value, isSpeed) {
+ " " + units[i]; + " " + units[i];
if (isSpeed) if (isSpeed)
ret += "QBT_TR(/s)QBT_TR"; ret += "QBT_TR(/s)QBT_TR[CONTEXT=misc]";
return ret; return ret;
} }
@ -40,18 +42,18 @@ function friendlyDuration(seconds) {
if (seconds == 0) if (seconds == 0)
return "0"; return "0";
if (seconds < 60) if (seconds < 60)
return "QBT_TR(< 1m)QBT_TR"; return "QBT_TR(< 1m)QBT_TR[CONTEXT=misc]";
var minutes = seconds / 60; var minutes = seconds / 60;
if (minutes < 60) if (minutes < 60)
return "QBT_TR(%1m)QBT_TR".replace("%1", parseInt(minutes)); return "QBT_TR(%1m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(minutes));
var hours = minutes / 60; var hours = minutes / 60;
minutes = minutes % 60; minutes = minutes % 60;
if (hours < 24) if (hours < 24)
return "QBT_TR(%1h %2m)QBT_TR".replace("%1", parseInt(hours)).replace("%2", parseInt(minutes)) return "QBT_TR(%1h %2m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(hours)).replace("%2", parseInt(minutes))
var days = hours / 24; var days = hours / 24;
hours = hours % 24; hours = hours % 24;
if (days < 100) if (days < 100)
return "QBT_TR(%1d %2h)QBT_TR".replace("%1", parseInt(days)).replace("%2", parseInt(hours)) return "QBT_TR(%1d %2h)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(days)).replace("%2", parseInt(hours))
return "∞"; return "∞";
} }

30
src/webui/www/public/scripts/mocha-init.js

@ -47,7 +47,7 @@ initializeWindows = function() {
new Event(e).stop(); new Event(e).stop();
new MochaUI.Window({ new MochaUI.Window({
id: 'downloadPage', id: 'downloadPage',
title: "QBT_TR(Download from URLs)QBT_TR", title: "QBT_TR(Download from URLs)QBT_TR[CONTEXT=downloadFromURL]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'download.html', contentURL: 'download.html',
scrollbars: true, scrollbars: true,
@ -66,7 +66,7 @@ initializeWindows = function() {
new Event(e).stop(); new Event(e).stop();
new MochaUI.Window({ new MochaUI.Window({
id: 'preferencesPage', id: 'preferencesPage',
title: "QBT_TR(Options)QBT_TR", title: "QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]",
loadMethod: 'xhr', loadMethod: 'xhr',
toolbar: true, toolbar: true,
contentURL: 'preferences_content.html', contentURL: 'preferences_content.html',
@ -88,7 +88,7 @@ initializeWindows = function() {
new Event(e).stop(); new Event(e).stop();
new MochaUI.Window({ new MochaUI.Window({
id: 'uploadPage', id: 'uploadPage',
title: "QBT_TR(Upload local torrent)QBT_TR", title: "QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'upload.html', contentURL: 'upload.html',
scrollbars: true, scrollbars: true,
@ -105,7 +105,7 @@ initializeWindows = function() {
globalUploadLimitFN = function() { globalUploadLimitFN = function() {
new MochaUI.Window({ new MochaUI.Window({
id: 'uploadLimitPage', id: 'uploadLimitPage',
title: "QBT_TR(Global Upload Speed Limit)QBT_TR", title: "QBT_TR(Global Upload Speed Limit)QBT_TR[CONTEXT=MainWindow]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'uploadlimit.html?hashes=global', contentURL: 'uploadlimit.html?hashes=global',
scrollbars: false, scrollbars: false,
@ -124,7 +124,7 @@ initializeWindows = function() {
var hash = h[0]; var hash = h[0];
new MochaUI.Window({ new MochaUI.Window({
id: 'uploadLimitPage', id: 'uploadLimitPage',
title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR", title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'uploadlimit.html?hashes=' + h.join("|"), contentURL: 'uploadlimit.html?hashes=' + h.join("|"),
scrollbars: false, scrollbars: false,
@ -199,7 +199,7 @@ initializeWindows = function() {
globalDownloadLimitFN = function() { globalDownloadLimitFN = function() {
new MochaUI.Window({ new MochaUI.Window({
id: 'downloadLimitPage', id: 'downloadLimitPage',
title: "QBT_TR(Global Download Speed Limit)QBT_TR", title: "QBT_TR(Global Download Speed Limit)QBT_TR[CONTEXT=MainWindow]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'downloadlimit.html?hashes=global', contentURL: 'downloadlimit.html?hashes=global',
scrollbars: false, scrollbars: false,
@ -215,7 +215,7 @@ initializeWindows = function() {
StatisticsLinkFN = function() { StatisticsLinkFN = function() {
new MochaUI.Window({ new MochaUI.Window({
id: 'statisticspage', id: 'statisticspage',
title: 'QBT_TR(Statistics)QBT_TR', title: 'QBT_TR(Statistics)QBT_TR[CONTEXT=StatsDialog]',
loadMethod: 'xhr', loadMethod: 'xhr',
contentURL: 'statistics.html', contentURL: 'statistics.html',
scrollbars: false, scrollbars: false,
@ -233,7 +233,7 @@ initializeWindows = function() {
var hash = h[0]; var hash = h[0];
new MochaUI.Window({ new MochaUI.Window({
id: 'downloadLimitPage', id: 'downloadLimitPage',
title: "QBT_TR(Torrent Download Speed Limiting)QBT_TR", title: "QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'downloadlimit.html?hashes=' + h.join("|"), contentURL: 'downloadlimit.html?hashes=' + h.join("|"),
scrollbars: false, scrollbars: false,
@ -252,7 +252,7 @@ initializeWindows = function() {
if (h.length) { if (h.length) {
new MochaUI.Window({ new MochaUI.Window({
id: 'confirmDeletionPage', id: 'confirmDeletionPage',
title: "QBT_TR(Deletion confirmation)QBT_TR", title: "QBT_TR(Deletion confirmation)QBT_TR[CONTEXT=confirmDeletionDlg]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'confirmdeletion.html?hashes=' + h.join("|"), contentURL: 'confirmdeletion.html?hashes=' + h.join("|"),
scrollbars: false, scrollbars: false,
@ -324,7 +324,7 @@ initializeWindows = function() {
if (h.length) { if (h.length) {
new MochaUI.Window({ new MochaUI.Window({
id: 'newCategoryPage', id: 'newCategoryPage',
title: "QBT_TR(New Category)QBT_TR", title: "QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'newcategory.html?hashes=' + h.join('|'), contentURL: 'newcategory.html?hashes=' + h.join('|'),
scrollbars: false, scrollbars: false,
@ -358,7 +358,7 @@ initializeWindows = function() {
createCategoryFN = function () { createCategoryFN = function () {
new MochaUI.Window({ new MochaUI.Window({
id: 'newCategoryPage', id: 'newCategoryPage',
title: "QBT_TR(New Category)QBT_TR", title: "QBT_TR(New Category)QBT_TR[CONTEXT=CategoryFilterWidget]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'newcategory.html', contentURL: 'newcategory.html',
scrollbars: false, scrollbars: false,
@ -437,7 +437,7 @@ initializeWindows = function() {
if (h.length) { if (h.length) {
new MochaUI.Window({ new MochaUI.Window({
id: 'confirmDeletionPage', id: 'confirmDeletionPage',
title: "QBT_TR(Deletion confirmation)QBT_TR", title: "QBT_TR(Deletion confirmation)QBT_TR[CONTEXT=confirmDeletionDlg]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'confirmdeletion.html?hashes=' + h.join("|"), contentURL: 'confirmdeletion.html?hashes=' + h.join("|"),
scrollbars: false, scrollbars: false,
@ -505,7 +505,7 @@ initializeWindows = function() {
new Event(e).stop(); new Event(e).stop();
new MochaUI.Window({ new MochaUI.Window({
id: 'aboutpage', id: 'aboutpage',
title: 'QBT_TR(About)QBT_TR', title: 'QBT_TR(About)QBT_TR[CONTEXT=AboutDlg]',
loadMethod: 'xhr', loadMethod: 'xhr',
contentURL: 'about.html', contentURL: 'about.html',
width: 550, width: 550,
@ -527,11 +527,11 @@ initializeWindows = function() {
addClickEvent('shutdown', function(e) { addClickEvent('shutdown', function(e) {
new Event(e).stop(); new Event(e).stop();
if (confirm('QBT_TR(Are you sure you want to quit qBittorrent?)QBT_TR')) { if (confirm('QBT_TR(Are you sure you want to quit qBittorrent?)QBT_TR[CONTEXT=MainWindow]')) {
new Request({ new Request({
url: 'command/shutdown', url: 'command/shutdown',
onSuccess: function() { onSuccess: function() {
document.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>QBT_TR(qBittorrent has been shutdown.)QBT_TR</title><style type=\"text/css\">body { text-align: center; }</style></head><body><h1>QBT_TR(qBittorrent has been shutdown.)QBT_TR</h1></body></html>"); document.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\"><html xmlns=\"http://www.w3.org/1999/xhtml\"><head><title>QBT_TR(qBittorrent has been shutdown.)QBT_TR[CONTEXT=HttpServer]</title><style type=\"text/css\">body { text-align: center; }</style></head><body><h1>QBT_TR(qBittorrent has been shutdown.)QBT_TR[CONTEXT=HttpServer]</h1></body></html>");
stop(); stop();
} }
}).send(); }).send();

8
src/webui/www/public/scripts/prop-files.js

@ -148,19 +148,19 @@ var createPriorityCombo = function(id, selected_prio) {
}); });
var opt = new Element("option"); var opt = new Element("option");
opt.set('value', '1') opt.set('value', '1')
opt.set('html', "QBT_TR(Normal)QBT_TR"); opt.set('html', "QBT_TR(Normal)QBT_TR[CONTEXT=PropListDelegate]");
if (selected_prio <= 1) if (selected_prio <= 1)
opt.setAttribute('selected', ''); opt.setAttribute('selected', '');
opt.injectInside(select); opt.injectInside(select);
opt = new Element("option"); opt = new Element("option");
opt.set('value', '2') opt.set('value', '2')
opt.set('html', "QBT_TR(High)QBT_TR"); opt.set('html', "QBT_TR(High)QBT_TR[CONTEXT=PropListDelegate]");
if (selected_prio == 2) if (selected_prio == 2)
opt.setAttribute('selected', ''); opt.setAttribute('selected', '');
opt.injectInside(select); opt.injectInside(select);
opt = new Element("option"); opt = new Element("option");
opt.set('value', '7') opt.set('value', '7')
opt.set('html', "QBT_TR(Maximum)QBT_TR"); opt.set('html', "QBT_TR(Maximum)QBT_TR[CONTEXT=PropListDelegate]");
if (selected_prio == 7) if (selected_prio == 7)
opt.setAttribute('selected', ''); opt.setAttribute('selected', '');
opt.injectInside(select); opt.injectInside(select);
@ -295,7 +295,7 @@ var loadTorrentFilesData = function() {
noCache: true, noCache: true,
method: 'get', method: 'get',
onFailure: function() { onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
clearTimeout(loadTorrentFilesDataTimer); clearTimeout(loadTorrentFilesDataTimer);
loadTorrentFilesDataTimer = loadTorrentFilesData.delay(10000); loadTorrentFilesDataTimer = loadTorrentFilesData.delay(10000);
}, },

28
src/webui/www/public/scripts/prop-general.js

@ -47,7 +47,7 @@ var loadTorrentData = function() {
noCache: true, noCache: true,
method: 'get', method: 'get',
onFailure: function() { onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
clearTimeout(loadTorrentDataTimer); clearTimeout(loadTorrentDataTimer);
loadTorrentDataTimer = loadTorrentData.delay(10000); loadTorrentDataTimer = loadTorrentData.delay(10000);
}, },
@ -57,7 +57,7 @@ var loadTorrentData = function() {
var temp; var temp;
// Update Torrent data // Update Torrent data
if (data.seeding_time > 0) if (data.seeding_time > 0)
temp = "QBT_TR(%1 (%2 this session))QBT_TR" temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", friendlyDuration(data.time_elapsed)) .replace("%1", friendlyDuration(data.time_elapsed))
.replace("%2", friendlyDuration(data.seeding_time)) .replace("%2", friendlyDuration(data.seeding_time))
else else
@ -66,27 +66,27 @@ var loadTorrentData = function() {
$('eta').set('html', friendlyDuration(data.eta)); $('eta').set('html', friendlyDuration(data.eta));
temp = "QBT_TR(%1 (%2 max))QBT_TR" temp = "QBT_TR(%1 (%2 max))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", data.nb_connections) .replace("%1", data.nb_connections)
.replace("%2", data.nb_connections_limit < 0 ? "∞" : data.nb_connections_limit) .replace("%2", data.nb_connections_limit < 0 ? "∞" : data.nb_connections_limit)
$('nb_connections').set('html', temp); $('nb_connections').set('html', temp);
temp = "QBT_TR(%1 (%2 this session))QBT_TR" temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", friendlyUnit(data.total_downloaded)) .replace("%1", friendlyUnit(data.total_downloaded))
.replace("%2", friendlyUnit(data.total_downloaded_session)) .replace("%2", friendlyUnit(data.total_downloaded_session))
$('total_downloaded').set('html', temp); $('total_downloaded').set('html', temp);
temp = "QBT_TR(%1 (%2 this session))QBT_TR" temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", friendlyUnit(data.total_uploaded)) .replace("%1", friendlyUnit(data.total_uploaded))
.replace("%2", friendlyUnit(data.total_uploaded_session)) .replace("%2", friendlyUnit(data.total_uploaded_session))
$('total_uploaded').set('html', temp); $('total_uploaded').set('html', temp);
temp = "QBT_TR(%1 (%2 avg.))QBT_TR" temp = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", friendlyUnit(data.dl_speed, true)) .replace("%1", friendlyUnit(data.dl_speed, true))
.replace("%2", friendlyUnit(data.dl_speed_avg, true)); .replace("%2", friendlyUnit(data.dl_speed_avg, true));
$('dl_speed').set('html', temp); $('dl_speed').set('html', temp);
temp = "QBT_TR(%1 (%2 avg.))QBT_TR" temp = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", friendlyUnit(data.up_speed, true)) .replace("%1", friendlyUnit(data.up_speed, true))
.replace("%2", friendlyUnit(data.up_speed_avg, true)); .replace("%2", friendlyUnit(data.up_speed_avg, true));
$('up_speed').set('html', temp); $('up_speed').set('html', temp);
@ -99,12 +99,12 @@ var loadTorrentData = function() {
$('total_wasted').set('html', friendlyUnit(data.total_wasted)); $('total_wasted').set('html', friendlyUnit(data.total_wasted));
temp = "QBT_TR(%1 (%2 total))QBT_TR" temp = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", data.seeds) .replace("%1", data.seeds)
.replace("%2", data.seeds_total); .replace("%2", data.seeds_total);
$('seeds').set('html', temp); $('seeds').set('html', temp);
temp = "QBT_TR(%1 (%2 total))QBT_TR" temp = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", data.peers) .replace("%1", data.peers)
.replace("%2", data.peers_total); .replace("%2", data.peers_total);
$('peers').set('html', temp); $('peers').set('html', temp);
@ -116,25 +116,25 @@ var loadTorrentData = function() {
if (data.last_seen != -1) if (data.last_seen != -1)
temp = new Date(data.last_seen * 1000).toLocaleString(); temp = new Date(data.last_seen * 1000).toLocaleString();
else else
temp = "QBT_TR(Never)QBT_TR"; temp = "QBT_TR(Never)QBT_TR[CONTEXT=PropertiesWidget]";
$('last_seen').set('html', temp); $('last_seen').set('html', temp);
$('total_size').set('html', friendlyUnit(data.total_size)); $('total_size').set('html', friendlyUnit(data.total_size));
if (data.pieces_num != -1) if (data.pieces_num != -1)
temp = "QBT_TR(%1 x %2 (have %3))QBT_TR" temp = "QBT_TR(%1 x %2 (have %3))QBT_TR[CONTEXT=PropertiesWidget]"
.replace("%1", data.pieces_num) .replace("%1", data.pieces_num)
.replace("%2", friendlyUnit(data.piece_size)) .replace("%2", friendlyUnit(data.piece_size))
.replace("%3", data.pieces_have); .replace("%3", data.pieces_have);
else else
temp = "QBT_TR(Unknown)QBT_TR"; temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
$('pieces').set('html', temp); $('pieces').set('html', temp);
$('created_by').set('html', escapeHtml(data.created_by)); $('created_by').set('html', escapeHtml(data.created_by));
if (data.addition_date != -1) if (data.addition_date != -1)
temp = new Date(data.addition_date * 1000).toLocaleString(); temp = new Date(data.addition_date * 1000).toLocaleString();
else else
temp = "QBT_TR(Unknown)QBT_TR"; temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
$('addition_date').set('html', temp); $('addition_date').set('html', temp);
if (data.completion_date != -1) if (data.completion_date != -1)
@ -147,7 +147,7 @@ var loadTorrentData = function() {
if (data.creation_date != -1) if (data.creation_date != -1)
temp = new Date(data.creation_date * 1000).toLocaleString(); temp = new Date(data.creation_date * 1000).toLocaleString();
else else
temp = "QBT_TR(Unknown)QBT_TR"; temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
$('creation_date').set('html', temp); $('creation_date').set('html', temp);
$('save_path').set('html', data.save_path); $('save_path').set('html', data.save_path);

4
src/webui/www/public/scripts/prop-trackers.js

@ -76,7 +76,7 @@ var loadTrackersData = function() {
noCache: true, noCache: true,
method: 'get', method: 'get',
onFailure: function() { onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
clearTimeout(loadTrackersDataTimer); clearTimeout(loadTrackersDataTimer);
loadTrackersDataTimer = loadTrackersData.delay(20000); loadTrackersDataTimer = loadTrackersData.delay(20000);
}, },
@ -116,7 +116,7 @@ $('addTrackersPlus').addEvent('click', function addTrackerDlg() {
if (current_hash.length == 0) return; if (current_hash.length == 0) return;
new MochaUI.Window({ new MochaUI.Window({
id: 'trackersPage', id: 'trackersPage',
title: "QBT_TR(Trackers addition dialog)QBT_TR", title: "QBT_TR(Trackers addition dialog)QBT_TR[CONTEXT=TrackersAdditionDlg]",
loadMethod: 'iframe', loadMethod: 'iframe',
contentURL: 'addtrackers.html?hash=' + current_hash, contentURL: 'addtrackers.html?hash=' + current_hash,
scrollbars: true, scrollbars: true,

2
src/webui/www/public/scripts/prop-webseeds.js

@ -76,7 +76,7 @@ var loadWebSeedsData = function() {
noCache: true, noCache: true,
method: 'get', method: 'get',
onFailure: function() { onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR'); $('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
clearTimeout(loadWebSeedsDataTimer); clearTimeout(loadWebSeedsDataTimer);
loadWebSeedsDataTimer = loadWebSeedsData.delay(20000); loadWebSeedsDataTimer = loadWebSeedsData.delay(20000);
}, },

6
src/webui/www/public/statistics.html

@ -1,4 +1,4 @@
<h3>User Statistics</h3> <h3>QBT_TR(User statistics)QBT_TR[CONTEXT=StatsDialog]</h3>
<table style="width:100%"> <table style="width:100%">
<tr> <tr>
<td id="AlltimeDL"></td> <td id="AlltimeDL"></td>
@ -17,7 +17,7 @@
</tr> </tr>
</table> </table>
<h3>Cache Statistics</h3> <h3>QBT_TR(Cache statistics)QBT_TR[CONTEXT=StatsDialog]</h3>
<table style="width:100%"> <table style="width:100%">
<tr> <tr>
<td id="ReadCacheHits"></td> <td id="ReadCacheHits"></td>
@ -27,7 +27,7 @@
</tr> </tr>
</table> </table>
<h3>Performance Statistics</h3> <h3>QBT_TR(Performance statistics)QBT_TR[CONTEXT=StatsDialog]</h3>
<table style="width:100%"> <table style="width:100%">
<tr> <tr>
<td id="WriteCacheOverload"></td> <td id="WriteCacheOverload"></td>

12
src/webui/www/public/upload.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Upload local torrent)QBT_TR</title> <title>QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<link rel="stylesheet" href="css/Window.css" type="text/css" /> <link rel="stylesheet" href="css/Window.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
@ -18,24 +18,24 @@
</p> </p>
<fieldset class="settings" style="border: 0; text-align: left;"> <fieldset class="settings" style="border: 0; text-align: left;">
<div class="formRow" style="margin-top: 12px;"> <div class="formRow" style="margin-top: 12px;">
<label for="savepath" class="leftLabelLarge">QBT_TR(Save files to location:)QBT_TR</label> <label for="savepath" class="leftLabelLarge">QBT_TR(Save files to location:)QBT_TR[CONTEXT=HttpServer]</label>
<input type="text" id="savepath" name="savepath" style="width: 16em;"/> <input type="text" id="savepath" name="savepath" style="width: 16em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="category" class="leftLabelLarge">QBT_TR(Category:)QBT_TR</label> <label for="category" class="leftLabelLarge">QBT_TR(Category:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<input type="text" id="category" name="category"/ style="width: 16em;"/> <input type="text" id="category" name="category"/ style="width: 16em;"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="start_torrent" class="leftLabelLarge">QBT_TR(Start torrent)QBT_TR</label> <label for="start_torrent" class="leftLabelLarge">QBT_TR(Start torrent)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<input type="checkbox" id="start_torrent" checked="checked" style="width: 16em;"/> <input type="checkbox" id="start_torrent" checked="checked" style="width: 16em;"/>
<input type="hidden" id="add_paused" name="paused" value="true" disabled="disabled"/> <input type="hidden" id="add_paused" name="paused" value="true" disabled="disabled"/>
</div> </div>
<div class="formRow"> <div class="formRow">
<label for="skip_checking" class="leftLabelLarge">QBT_TR(Skip hash check)QBT_TR</label> <label for="skip_checking" class="leftLabelLarge">QBT_TR(Skip hash check)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<input type="checkbox" name="skip_checking" value="true" style="width: 16em;"/> <input type="checkbox" name="skip_checking" value="true" style="width: 16em;"/>
</div> </div>
<div id="submitbutton" style="margin-top: 30px; text-align: center;"> <div id="submitbutton" style="margin-top: 30px; text-align: center;">
<button type="submit" style="font-size: 1em;">QBT_TR(Upload Torrents)QBT_TR</button> <button type="submit" style="font-size: 1em;">QBT_TR(Upload Torrents)QBT_TR[CONTEXT=HttpServer]</button>
</div> </div>
</fieldset> </fieldset>
</form> </form>

6
src/webui/www/public/uploadlimit.html

@ -2,7 +2,7 @@
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" dir="ltr">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>QBT_TR(Torrent Upload Speed Limiting)QBT_TR</title> <title>QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]</title>
<link rel="stylesheet" href="css/style.css" type="text/css" /> <link rel="stylesheet" href="css/style.css" type="text/css" />
<script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-core-yc.js" charset="utf-8"></script>
<script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script> <script type="text/javascript" src="scripts/mootools-1.2-more.js" charset="utf-8"></script>
@ -12,7 +12,7 @@
<body> <body>
<div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden"> <div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden">
<div id="uplimitSlider" class="slider"> <div id="uplimitSlider" class="slider">
<div id="uplimitUpdate" class="update">QBT_TR(Upload limit:)QBT_TR <input id="uplimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="upLimitUnit">QBT_TR(KiB/s)QBT_TR</span></div> <div id="uplimitUpdate" class="update">QBT_TR(Upload limit:)QBT_TR[CONTEXT=PropertiesWidget] <input id="uplimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="upLimitUnit">QBT_TR(KiB/s)QBT_TR[CONTEXT=SpeedLimitDialog]</span></div>
<div class="sliderWrapper"> <div class="sliderWrapper">
<div id="uplimitSliderknob" class="sliderknob"></div> <div id="uplimitSliderknob" class="sliderknob"></div>
<div id="uplimitSliderarea" class="sliderarea"></div> <div id="uplimitSliderarea" class="sliderarea"></div>
@ -51,7 +51,7 @@
} }
} }
</script> </script>
<input type="button" value="QBT_TR(Apply)QBT_TR" onclick="setUpLimit()"/> <input type="button" value="QBT_TR(Apply)QBT_TR[CONTEXT=HttpServer]" onclick="setUpLimit()"/>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">

Loading…
Cancel
Save