No longer provide translation for 3rd party themes

This commit is contained in:
Carve 2022-11-30 13:49:48 -05:00
parent 6819ff8482
commit a1a6256816
47 changed files with 1001 additions and 1001 deletions

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Add Peers)QBT_TR[CONTEXT=PeersAdditionDialog]</title>
<title>Add Peers</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -46,7 +46,7 @@
peers: peers.join('|')
},
onFailure: function() {
alert("QBT_TR(Unable to add peers. Please ensure you are adhering to the IP:port format.)QBT_TR[CONTEXT=HttpServer]");
alert("Unable to add peers. Please ensure you are adhering to the IP:port format.");
},
onSuccess: function() {
window.parent.closeWindows();
@ -59,11 +59,11 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p>QBT_TR(List of peers to add (one IP per line):)QBT_TR[CONTEXT=PeersAdditionDialog]</p>
<textarea id="peers" rows="10" style="width: 100%;" placeholder="QBT_TR(Format: IPv4:port / [IPv6]:port)QBT_TR[CONTEXT=PeersAdditionDialog]"></textarea>
<p>List of peers to add (one IP per line):</p>
<textarea id="peers" rows="10" style="width: 100%;" placeholder="Format: IPv4:port / [IPv6]:port"></textarea>
<div style="margin-top: 10px; text-align: center;">
<button onclick="parent.closeWindows();">QBT_TR(Cancel)QBT_TR[CONTEXT=PeersAdditionDialog]</button>
<button id="addPeersOk">QBT_TR(Ok)QBT_TR[CONTEXT=PeersAdditionDialog]</button>
<button onclick="parent.closeWindows();">Cancel</button>
<button id="addPeersOk">Ok</button>
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Add trackers)QBT_TR[CONTEXT=TrackersAdditionDialog]</title>
<title>Add trackers</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -48,10 +48,10 @@
<body>
<div style="text-align: center;">
<br />
<h2 class="vcenter">QBT_TR(List of trackers to add (one per line):)QBT_TR[CONTEXT=TrackersAdditionDialog]</h2>
<h2 class="vcenter">List of trackers to add (one per line):</h2>
<textarea name="list" id="trackersUrls" rows="10" cols="1"></textarea>
<br />
<input type="button" value="QBT_TR(Add)QBT_TR[CONTEXT=HttpServer]" id="addTrackersButton" />
<input type="button" value="Add" id="addTrackersButton" />
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]</title>
<title>Remove torrent(s)</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -44,10 +44,10 @@
<body>
<br />
<p>&nbsp;&nbsp;QBT_TR(Are you sure you want to remove 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 permanently delete the files)QBT_TR[CONTEXT=confirmDeletionDlg]</i></label><br /><br />
<p>&nbsp;&nbsp;Are you sure you want to remove the selected torrents from the transfer list?</p>
&nbsp;&nbsp;&nbsp;&nbsp;<input type="checkbox" id="deleteFromDiskCB" /> <label for="deleteFromDiskCB"><i>Also permanently delete the files</i></label><br /><br />
<div style="text-align: right;">
<input type="button" id="cancelBtn" value="QBT_TR(Cancel)QBT_TR[CONTEXT=MainWindow]" />&nbsp;&nbsp;<input type="button" id="confirmBtn" value="QBT_TR(Remove)QBT_TR[CONTEXT=MainWindow]" />&nbsp;&nbsp;
<input type="button" id="cancelBtn" value="Cancel)QBT_TR[CONTEXT=MainWindow]" />&nbsp;&nbsp;<input type="button" id="confirmBtn" value="QBT_TR(Remove" />&nbsp;&nbsp;
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Deletion confirmation)QBT_TR[CONTEXT=RSSWidget]</title>
<title>Deletion confirmation</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -44,10 +44,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p>QBT_TR(Are you sure you want to delete the selected RSS feeds?)QBT_TR[CONTEXT=RSSWidget]</p>
<p>Are you sure you want to delete the selected RSS feeds?</p>
<div style="text-align: right;">
<input type="button" id="cancelBtn" value="QBT_TR(No)QBT_TR[CONTEXT=MainWindow]" />
<input type="button" id="confirmBtn" value="QBT_TR(Yes)QBT_TR[CONTEXT=MainWindow]" />
<input type="button" id="cancelBtn" value="No" />
<input type="button" id="confirmBtn" value="Yes" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Clear downloaded episodes)QBT_TR[CONTEXT=AutomatedRssDownloader]</title>
<title>Clear downloaded episodes</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -37,10 +37,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p>QBT_TR(Are you sure you want to clear the list of downloaded episodes for the selected rule?)QBT_TR[CONTEXT=AutomatedRssDownloader]</p>
<p>Are you sure you want to clear the list of downloaded episodes for the selected rule?</p>
<div style="text-align: right;">
<input type="button" id="cancelBtn" value="QBT_TR(No)QBT_TR[CONTEXT=MainWindow]" />
<input type="button" id="confirmBtn" value="QBT_TR(Yes)QBT_TR[CONTEXT=MainWindow]" />
<input type="button" id="cancelBtn" value="No" />
<input type="button" id="confirmBtn" value="Yes" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Rule deletion confirmation)QBT_TR[CONTEXT=AutomatedRssDownloader]</title>
<title>Rule deletion confirmation</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -45,10 +45,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p>QBT_TR(Are you sure you want to remove the selected download rules?)QBT_TR[CONTEXT=AutomatedRssDownloader]</p>
<p>Are you sure you want to remove the selected download rules?</p>
<div style="text-align: right;">
<input type="button" id="cancelBtn" value="QBT_TR(No)QBT_TR[CONTEXT=MainWindow]" />
<input type="button" id="confirmBtn" value="QBT_TR(Yes)QBT_TR[CONTEXT=MainWindow]" />
<input type="button" id="cancelBtn" value="No" />
<input type="button" id="confirmBtn" value="Yes" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Add Torrent Links)QBT_TR[CONTEXT=downloadFromURL]</title>
<title>Add Torrent Links</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<link rel="stylesheet" href="css/Window.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
@ -17,25 +17,25 @@
<form action="api/v2/torrents/add" enctype="multipart/form-data" method="post" id="downloadForm" style="text-align: center;" target="download_frame" autocorrect="off" autocapitalize="none">
<div style="text-align: center;">
<br />
<h2 class="vcenter">QBT_TR(Download Torrents from their URLs or Magnet links)QBT_TR[CONTEXT=HttpServer]</h2>
<h2 class="vcenter">Download Torrents from their URLs or Magnet links</h2>
<textarea id="urls" rows="10" name="urls"></textarea>
<p>QBT_TR(Only one link per line)QBT_TR[CONTEXT=HttpServer]</p>
<p>Only one link per line</p>
<fieldset class="settings" style="border: 0; text-align: left; margin-top: 6px;">
<table style="margin: auto;">
<tr>
<td>
<label for="autoTMM">QBT_TR(Torrent Management Mode:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="autoTMM">Torrent Management Mode:</label>
</td>
<td>
<select id="autoTMM" name="autoTMM" onchange="qBittorrent.Download.changeTMM(this)">
<option selected value="false">QBT_TR(Manual)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="true">QBT_TR(Automatic)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option selected value="false">Manual</option>
<option value="true">Automatic</option>
</select>
</td>
</tr>
<tr>
<td>
<label for="savepath">QBT_TR(Save files to location:)QBT_TR[CONTEXT=HttpServer]</label>
<label for="savepath">Save files to location:</label>
</td>
<td>
<input type="text" id="savepath" name="savepath" style="width: 16em;" />
@ -43,7 +43,7 @@
</tr>
<tr>
<td>
<label for="cookie">QBT_TR(Cookie:)QBT_TR[CONTEXT=HttpServer]</label>
<label for="cookie">Cookie:</label>
</td>
<td>
<input type="text" id="cookie" name="cookie" style="width: 16em;" />
@ -51,7 +51,7 @@
</tr>
<tr>
<td>
<label for="rename">QBT_TR(Rename torrent)QBT_TR[CONTEXT=HttpServer]</label>
<label for="rename">Rename torrent</label>
</td>
<td>
<input type="text" id="rename" name="rename" style="width: 16em;" />
@ -59,7 +59,7 @@
</tr>
<tr>
<td>
<label for="category">QBT_TR(Category:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="category">Category:</label>
</td>
<td>
<div class="select-watched-folder-editable">
@ -72,7 +72,7 @@
</tr>
<tr>
<td>
<label for="startTorrent">QBT_TR(Start torrent)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="startTorrent">Start torrent</label>
</td>
<td>
<input type="hidden" id="startTorrentHidden" name="paused" />
@ -81,19 +81,19 @@
</tr>
<tr>
<td>
<label for="stopCondition">QBT_TR(Stop condition:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="stopCondition">Stop condition:</label>
</td>
<td>
<select id="stopCondition" name="stopCondition">
<option selected value="None">QBT_TR(None)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="MetadataReceived">QBT_TR(Metadata received)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="FilesChecked">QBT_TR(Files checked)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option selected value="None">None</option>
<option value="MetadataReceived">Metadata received</option>
<option value="FilesChecked">Files checked</option>
</select>
</td>
</tr>
<tr>
<td>
<label for="skip_checking">QBT_TR(Skip hash check)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="skip_checking">Skip hash check</label>
</td>
<td>
<input type="checkbox" id="skip_checking" name="skip_checking" value="true" />
@ -101,19 +101,19 @@
</tr>
<tr>
<td>
<label for="contentLayout">QBT_TR(Content layout:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="contentLayout">Content layout:</label>
</td>
<td>
<select id="contentLayout" name="contentLayout">
<option selected value="Original">QBT_TR(Original)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="Subfolder">QBT_TR(Create subfolder)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="NoSubfolder">QBT_TR(Don't create subfolder)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option selected value="Original">Original</option>
<option value="Subfolder">Create subfolder</option>
<option value="NoSubfolder">Don't create subfolder</option>
</select>
</td>
</tr>
<tr>
<td>
<label for="sequentialDownload">QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]</label>
<label for="sequentialDownload">Download in sequential order</label>
</td>
<td>
<input type="checkbox" id="sequentialDownload" name="sequentialDownload" value="true" />
@ -121,7 +121,7 @@
</tr>
<tr>
<td>
<label for="firstLastPiecePrio">QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]</label>
<label for="firstLastPiecePrio">Download first and last pieces first</label>
</td>
<td>
<input type="checkbox" id="firstLastPiecePrio" name="firstLastPiecePrio" value="true" />
@ -129,7 +129,7 @@
</tr>
<tr>
<td>
<label for="dlLimitText">QBT_TR(Limit download rate)QBT_TR[CONTEXT=HttpServer]</label>
<label for="dlLimitText">Limit download rate</label>
</td>
<td>
<input type="hidden" id="dlLimitHidden" name="dlLimit" />
@ -138,7 +138,7 @@
</tr>
<tr>
<td>
<label for="upLimitText">QBT_TR(Limit upload rate)QBT_TR[CONTEXT=HttpServer]</label>
<label for="upLimitText">Limit upload rate</label>
</td>
<td>
<input type="hidden" id="upLimitHidden" name="upLimit" />
@ -147,7 +147,7 @@
</tr>
</table>
<div id="submitbutton" style="margin-top: 12px; text-align: center;">
<button type="submit" id="submitButton">QBT_TR(Download)QBT_TR[CONTEXT=downloadFromURL]</button>
<button type="submit" id="submitButton">Download</button>
</div>
</fieldset>
</div>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]</title>
<title>Torrent Download Speed Limiting</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -14,7 +14,7 @@
<body>
<div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden">
<div id="dllimitSlider" class="slider">
<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 id="dllimitUpdate" class="update">Download limit:)QBT_TR[CONTEXT=PropertiesWidget] <input id="dllimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="dlLimitUnit">QBT_TR(KiB/s</span></div>
<div class="sliderWrapper">
<div id="dllimitSliderknob" class="sliderknob"></div>
<div id="dllimitSliderarea" class="sliderarea"></div>
@ -55,7 +55,7 @@
}
};
</script>
<input type="button" id="applyButton" value="QBT_TR(Apply)QBT_TR[CONTEXT=HttpServer]" onclick="setDlLimit()" />
<input type="button" id="applyButton" value="Apply" onclick="setDlLimit()" />
</div>
<script>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Tracker editing)QBT_TR[CONTEXT=TrackerListWidget]</title>
<title>Tracker editing</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -59,12 +59,12 @@
<body>
<div style="text-align: center;">
<br />
<h2 class="vcenter">QBT_TR(Tracker URL:)QBT_TR[CONTEXT=TrackerListWidget]</h2>
<h2 class="vcenter">Tracker URL:</h2>
<div style="text-align: center; padding-top: 10px;">
<input id="trackerUrl" style="width: 90%;" />
</div>
<br />
<input type="button" value="QBT_TR(Edit)QBT_TR[CONTEXT=HttpServer]" id="editTrackerButton" />
<input type="button" value="Edit" id="editTrackerButton" />
</div>
</body>

View File

@ -36,7 +36,7 @@
<body>
<noscript id="noscript">
<h1>QBT_TR(JavaScript Required! You must enable JavaScript for the Web UI to work properly)QBT_TR[CONTEXT=HttpServer]</h1>
<h1>JavaScript Required! You must enable JavaScript for the Web UI to work properly</h1>
</noscript>
<div id="desktop">
<div id="desktopHeader">
@ -46,81 +46,81 @@
<div id="desktopNavbar">
<ul>
<li>
<a class="returnFalse">QBT_TR(File)QBT_TR[CONTEXT=MainWindow]</a>
<a class="returnFalse">File</a>
<ul>
<li><a id="uploadLink"><img class="MyMenuIcon" alt="QBT_TR(Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" src="images/list-add.svg" width="16" height="16" />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[CONTEXT=MainWindow]" src="images/insert-link.svg" width="16" height="16" />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[CONTEXT=HttpServer]" src="images/system-log-out.svg" width="16" height="16" />QBT_TR(Logout)QBT_TR[CONTEXT=HttpServer]</a></li>
<li><a id="shutdownLink"><img class="MyMenuIcon" alt="QBT_TR(Exit qBittorrent)QBT_TR[CONTEXT=HttpServer]" src="images/application-exit.svg" width="16" height="16" />QBT_TR(Exit qBittorrent)QBT_TR[CONTEXT=HttpServer]</a></li>
<li><a id="uploadLink"><img class="MyMenuIcon" alt="Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" src="images/list-add.svg" width="16" height="16" />QBT_TR(Add Torrent File...</a></li>
<li><a id="downloadLink"><img class="MyMenuIcon" alt="Add Torrent Link...)QBT_TR[CONTEXT=MainWindow]" src="images/insert-link.svg" width="16" height="16" />QBT_TR(Add Torrent Link...</a></li>
<li class="divider"><a id="logoutLink"><img class="MyMenuIcon" alt="Logout)QBT_TR[CONTEXT=HttpServer]" src="images/system-log-out.svg" width="16" height="16" />QBT_TR(Logout</a></li>
<li><a id="shutdownLink"><img class="MyMenuIcon" alt="Exit qBittorrent)QBT_TR[CONTEXT=HttpServer]" src="images/application-exit.svg" width="16" height="16" />QBT_TR(Exit qBittorrent</a></li>
</ul>
</li>
<li>
<a class="returnFalse">QBT_TR(Edit)QBT_TR[CONTEXT=MainWindow]</a>
<a class="returnFalse">Edit</a>
<ul>
<li><a id="resumeLink"><img class="MyMenuIcon" alt="QBT_TR(Resume)QBT_TR[CONTEXT=MainWindow]" src="images/torrent-start.svg" width="16" height="16" />QBT_TR(Resume)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="pauseLink"><img class="MyMenuIcon" src="images/torrent-stop.svg" alt="QBT_TR(Pause)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Pause)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="resumeAllLink"><img class="MyMenuIcon" alt="QBT_TR(Resume All)QBT_TR[CONTEXT=MainWindow]" src="images/torrent-start.svg" width="16" height="16" />QBT_TR(Resume All)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="pauseAllLink"><img class="MyMenuIcon" alt="QBT_TR(Pause All)QBT_TR[CONTEXT=MainWindow]" src="images/torrent-stop.svg" width="16" height="16" />QBT_TR(Pause All)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="deleteLink"><img class="MyMenuIcon" src="images/list-remove.svg" alt="QBT_TR(Remove)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Remove)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="topQueuePosItem" class="divider"><a id="topPrioLink"><img class="MyMenuIcon" src="images/go-top.svg" alt="QBT_TR(Top of Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Top of Queue)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="increaseQueuePosItem"><a id="increasePrioLink"><img class="MyMenuIcon" src="images/go-up.svg" alt="QBT_TR(Move Up Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Move Up Queue)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="decreaseQueuePosItem"><a id="decreasePrioLink"><img class="MyMenuIcon" src="images/go-down.svg" alt="QBT_TR(Move Down Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Move Down Queue)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="bottomQueuePosItem"><a id="bottomPrioLink"><img class="MyMenuIcon" src="images/go-bottom.svg" alt="QBT_TR(Bottom of Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Bottom of Queue)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="resumeLink"><img class="MyMenuIcon" alt="Resume)QBT_TR[CONTEXT=MainWindow]" src="images/torrent-start.svg" width="16" height="16" />QBT_TR(Resume</a></li>
<li><a id="pauseLink"><img class="MyMenuIcon" src="images/torrent-stop.svg" alt="Pause)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Pause</a></li>
<li><a id="resumeAllLink"><img class="MyMenuIcon" alt="Resume All)QBT_TR[CONTEXT=MainWindow]" src="images/torrent-start.svg" width="16" height="16" />QBT_TR(Resume All</a></li>
<li><a id="pauseAllLink"><img class="MyMenuIcon" alt="Pause All)QBT_TR[CONTEXT=MainWindow]" src="images/torrent-stop.svg" width="16" height="16" />QBT_TR(Pause All</a></li>
<li class="divider"><a id="deleteLink"><img class="MyMenuIcon" src="images/list-remove.svg" alt="Remove)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Remove</a></li>
<li id="topQueuePosItem" class="divider"><a id="topPrioLink"><img class="MyMenuIcon" src="images/go-top.svg" alt="Top of Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Top of Queue</a></li>
<li id="increaseQueuePosItem"><a id="increasePrioLink"><img class="MyMenuIcon" src="images/go-up.svg" alt="Move Up Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Move Up Queue</a></li>
<li id="decreaseQueuePosItem"><a id="decreasePrioLink"><img class="MyMenuIcon" src="images/go-down.svg" alt="Move Down Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Move Down Queue</a></li>
<li id="bottomQueuePosItem"><a id="bottomPrioLink"><img class="MyMenuIcon" src="images/go-bottom.svg" alt="Bottom of Queue)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Bottom of Queue</a></li>
</ul>
</li>
<li>
<a class="returnFalse">QBT_TR(View)QBT_TR[CONTEXT=MainWindow]</a>
<a class="returnFalse">View</a>
<ul>
<li><a id="showTopToolbarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="QBT_TR(Top Toolbar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Top Toolbar)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="showStatusBarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="QBT_TR(Status Bar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Status Bar)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="showFiltersSidebarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="QBT_TR(Filters Sidebar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Filters Sidebar)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="speedInBrowserTitleBarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="QBT_TR(Speed in Title Bar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Speed in Title Bar)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="showSearchEngineLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="QBT_TR(Search Engine)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Search Engine)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="showRssReaderLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="QBT_TR(RSS)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(RSS Reader)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="StatisticsLink"><img class="MyMenuIcon" src="images/view-statistics.svg" alt="QBT_TR(Statistics)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Statistics)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="showTopToolbarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="Top Toolbar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Top Toolbar</a></li>
<li><a id="showStatusBarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="Status Bar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Status Bar</a></li>
<li><a id="showFiltersSidebarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="Filters Sidebar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Filters Sidebar</a></li>
<li><a id="speedInBrowserTitleBarLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="Speed in Title Bar)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Speed in Title Bar</a></li>
<li class="divider"><a id="showSearchEngineLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="Search Engine)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Search Engine</a></li>
<li><a id="showRssReaderLink"><img class="MyMenuIcon" src="images/checked-completed.svg" alt="RSS)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(RSS Reader</a></li>
<li class="divider"><a id="StatisticsLink"><img class="MyMenuIcon" src="images/view-statistics.svg" alt="Statistics)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Statistics</a></li>
</ul>
</li>
<li>
<a class="returnFalse">QBT_TR(Tools)QBT_TR[CONTEXT=MainWindow]</a>
<a class="returnFalse">Tools</a>
<ul>
<li><a id="preferencesLink"><img class="MyMenuIcon" src="images/configure.svg" alt="QBT_TR(Options...)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Options...)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="registerMagnetHandlerLink"><img class="MyMenuIcon" src="images/torrent-magnet.svg" alt="QBT_TR(Register to handle magnet links...)QBT_TR[CONTEXT=HttpServer]" width="16" height="16" />QBT_TR(Register to handle magnet links...)QBT_TR[CONTEXT=HttpServer]</a></li>
<li><a id="preferencesLink"><img class="MyMenuIcon" src="images/configure.svg" alt="Options...)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Options...</a></li>
<li><a id="registerMagnetHandlerLink"><img class="MyMenuIcon" src="images/torrent-magnet.svg" alt="Register to handle magnet links...)QBT_TR[CONTEXT=HttpServer]" width="16" height="16" />QBT_TR(Register to handle magnet links...</a></li>
</ul>
</li>
<li>
<a class="returnFalse">QBT_TR(Help)QBT_TR[CONTEXT=MainWindow]</a>
<a class="returnFalse">Help</a>
<ul>
<li><a id="docsLink" target="_blank" href="http://wiki.qbittorrent.org/"><img class="MyMenuIcon" src="images/help-contents.svg" alt="QBT_TR(Documentation)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Documentation)QBT_TR[CONTEXT=MainWindow]</a></li>
<li class="divider"><a id="bugLink" target="_blank" href="https://www.qbittorrent.org/donate"><img class="MyMenuIcon" src="images/wallet-open.svg" alt="QBT_TR(Donate!)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Donate!)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="aboutLink"><img class="MyMenuIcon" src="images/help-about.svg" alt="QBT_TR(About)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(About)QBT_TR[CONTEXT=MainWindow]</a></li>
<li><a id="docsLink" target="_blank" href="http://wiki.qbittorrent.org/"><img class="MyMenuIcon" src="images/help-contents.svg" alt="Documentation)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Documentation</a></li>
<li class="divider"><a id="bugLink" target="_blank" href="https://www.qbittorrent.org/donate"><img class="MyMenuIcon" src="images/wallet-open.svg" alt="Donate!)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(Donate!</a></li>
<li><a id="aboutLink"><img class="MyMenuIcon" src="images/help-about.svg" alt="About)QBT_TR[CONTEXT=MainWindow]" width="16" height="16" />QBT_TR(About</a></li>
</ul>
</li>
</ul>
</div>
<div id="mochaToolbar">
&nbsp;&nbsp;
<a id="downloadButton"><img class="mochaToolButton" title="QBT_TR(Add Torrent Link...)QBT_TR[CONTEXT=MainWindow]" src="images/insert-link.svg" alt="QBT_TR(Add Torrent Link...)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" /></a>
<a id="uploadButton"><img class="mochaToolButton" title="QBT_TR(Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" src="images/list-add.svg" alt="QBT_TR(Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" /></a>
<a id="deleteButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget]" src="images/list-remove.svg" alt="QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget]" width="24" height="24" /></a>
<a id="resumeButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]" src="images/torrent-start.svg" alt="QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]" width="24" height="24" /></a>
<a id="pauseButton"><img class="mochaToolButton" title="QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]" src="images/torrent-stop.svg" alt="QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]" width="24" height="24" /></a>
<a id="downloadButton"><img class="mochaToolButton" title="Add Torrent Link...)QBT_TR[CONTEXT=MainWindow]" src="images/insert-link.svg" alt="QBT_TR(Add Torrent Link..." width="24" height="24" /></a>
<a id="uploadButton"><img class="mochaToolButton" title="Add Torrent File...)QBT_TR[CONTEXT=MainWindow]" src="images/list-add.svg" alt="QBT_TR(Add Torrent File..." width="24" height="24" /></a>
<a id="deleteButton" class="divider"><img class="mochaToolButton" title="Remove)QBT_TR[CONTEXT=TransferListWidget]" src="images/list-remove.svg" alt="QBT_TR(Remove" width="24" height="24" /></a>
<a id="resumeButton" class="divider"><img class="mochaToolButton" title="Resume)QBT_TR[CONTEXT=TransferListWidget]" src="images/torrent-start.svg" alt="QBT_TR(Resume" width="24" height="24" /></a>
<a id="pauseButton"><img class="mochaToolButton" title="Pause)QBT_TR[CONTEXT=TransferListWidget]" src="images/torrent-stop.svg" alt="QBT_TR(Pause" width="24" height="24" /></a>
<span id="queueingButtons">
<a id="topPrioButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Move to the top of the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-top.svg" alt="QBT_TR(Top of Queue)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" /></a>
<a id="increasePrioButton"><img class="mochaToolButton" title="QBT_TR(Move up in the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-up.svg" alt="QBT_TR(Move Up Queue)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" /></a>
<a id="decreasePrioButton"><img class="mochaToolButton" title="QBT_TR(Move down in the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-down.svg" alt="QBT_TR(Move Down Queue)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" /></a>
<a id="bottomPrioButton"><img class="mochaToolButton" title="QBT_TR(Move to the bottom of the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-bottom.svg" alt="QBT_TR(Bottom of Queue)QBT_TR[CONTEXT=MainWindow]" width="24" height="24" /></a>
<a id="topPrioButton" class="divider"><img class="mochaToolButton" title="Move to the top of the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-top.svg" alt="QBT_TR(Top of Queue" width="24" height="24" /></a>
<a id="increasePrioButton"><img class="mochaToolButton" title="Move up in the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-up.svg" alt="QBT_TR(Move Up Queue" width="24" height="24" /></a>
<a id="decreasePrioButton"><img class="mochaToolButton" title="Move down in the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-down.svg" alt="QBT_TR(Move Down Queue" width="24" height="24" /></a>
<a id="bottomPrioButton"><img class="mochaToolButton" title="Move to the bottom of the queue)QBT_TR[CONTEXT=MainWindow]" src="images/go-bottom.svg" alt="QBT_TR(Bottom of Queue" width="24" height="24" /></a>
</span>
<a id="preferencesButton" class="divider"><img class="mochaToolButton" title="QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]" src="images/configure.svg" alt="QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]" width="24" height="24" /></a>
<a id="preferencesButton" class="divider"><img class="mochaToolButton" title="Options)QBT_TR[CONTEXT=OptionsDialog]" src="images/configure.svg" alt="QBT_TR(Options" width="24" height="24" /></a>
<div id="mainWindowTabs" class="toolbarTabs">
<ul id="mainWindowTabsList" class="tab-menu">
<li id="transfersTabLink" class="selected"><a class="tab">QBT_TR(Transfers)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="searchTabLink"><a class="tab">QBT_TR(Search)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="rssTabLink"><a class="tab">QBT_TR(RSS)QBT_TR[CONTEXT=MainWindow]</a></li>
<li id="transfersTabLink" class="selected"><a class="tab">Transfers</a></li>
<li id="searchTabLink"><a class="tab">Search</a></li>
<li id="rssTabLink"><a class="tab">RSS</a></li>
</ul>
<div class="clear"></div>
</div>
<div id="torrentsFilterToolbar">
<input type="text" id="torrentsFilterInput" placeholder="QBT_TR(Filter torrent list...)QBT_TR[CONTEXT=MainWindow]" autocorrect="off" autocapitalize="none" />
<input type="text" id="torrentsFilterInput" placeholder="Filter torrent list..." autocorrect="off" autocapitalize="none" />
</div>
</div>
</div>
@ -128,98 +128,98 @@
</div>
</div>
<ul id="torrentsTableMenu" class="contextMenu">
<li><a href="#start"><img src="images/torrent-start.svg" alt="QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Resume)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#pause"><img src="images/torrent-stop.svg" alt="QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Pause)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#forceStart"><img src="images/torrent-start-forced.svg" 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="images/list-remove.svg" alt="QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Remove)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#start"><img src="images/torrent-start.svg" alt="Resume)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Resume</a></li>
<li><a href="#pause"><img src="images/torrent-stop.svg" alt="Pause)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Pause</a></li>
<li><a href="#forceStart"><img src="images/torrent-start-forced.svg" alt="Force Resume)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Force Resume</a></li>
<li class="separator"><a href="#delete"><img src="images/list-remove.svg" alt="Remove)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Remove</a></li>
<li class="separator">
<a href="#setLocation"><img src="images/set-location.svg" alt="QBT_TR(Set location...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Set location...)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#rename"><img src="images/edit-rename.svg" alt="QBT_TR(Rename...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Rename...)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#setLocation"><img src="images/set-location.svg" alt="Set location...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Set location...</a>
<a href="#rename"><img src="images/edit-rename.svg" alt="Rename...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Rename...</a>
</li>
<li>
<a href="#Category" class="arrow-right"><img src="images/view-categories.svg" alt="QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#Category" class="arrow-right"><img src="images/view-categories.svg" alt="Category)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Category</a>
<ul id="contextCategoryList" class="scrollableMenu"></ul>
</li>
<li>
<a href="#Tags" class="arrow-right"><img src="images/tags.svg" alt="QBT_TR(Tags)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Tags)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#Tags" class="arrow-right"><img src="images/tags.svg" alt="Tags)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Tags</a>
<ul id="contextTagList" class="scrollableMenu"></ul>
</li>
<li>
<a href="#autoTorrentManagement"><img src="images/checked-completed.svg" alt="QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#autoTorrentManagement"><img src="images/checked-completed.svg" alt="Automatic Torrent Management)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Automatic Torrent Management</a>
</li>
<li class="separator"><a href="#downloadLimit"><img src="images/download.svg" 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="images/upload.svg" alt="QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#shareRatio"><img src="images/ratio.svg" alt="QBT_TR(Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#superSeeding"><img src="images/checked-completed.svg" 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="images/checked-completed.svg" 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="images/checked-completed.svg" 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="images/force-recheck.svg" alt="QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Force recheck)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#forceReannounce"><img src="images/reannounce.svg" alt="QBT_TR(Force reannounce)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Force reannounce)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li class="separator"><a href="#downloadLimit"><img src="images/download.svg" alt="Limit download rate...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Limit download rate...</a></li>
<li><a href="#uploadLimit"><img src="images/upload.svg" alt="Limit upload rate...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Limit upload rate...</a></li>
<li><a href="#shareRatio"><img src="images/ratio.svg" alt="Limit share ratio...)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Limit share ratio...</a></li>
<li><a href="#superSeeding"><img src="images/checked-completed.svg" alt="Super seeding mode)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Super seeding mode</a></li>
<li class="separator"><a href="#sequentialDownload"><img src="images/checked-completed.svg" alt="Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Download in sequential order</a></li>
<li><a href="#firstLastPiecePrio"><img src="images/checked-completed.svg" alt="Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Download first and last pieces first</a></li>
<li class="separator"><a href="#forceRecheck"><img src="images/force-recheck.svg" alt="Force recheck)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Force recheck</a></li>
<li><a href="#forceReannounce"><img src="images/reannounce.svg" alt="Force reannounce)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Force reannounce</a></li>
<li id="queueingMenuItems" class="separator">
<a href="#queue" class="arrow-right"><span style="display: inline-block; width:16px"></span> QBT_TR(Queue)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#queue" class="arrow-right"><span style="display: inline-block; width:16px"></span> Queue</a>
<ul>
<li><a href="#queueTop"><img src="images/go-top.svg" alt="QBT_TR(Move to top)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move to top)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#queueUp"><img src="images/go-up.svg" alt="QBT_TR(Move up)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move up)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#queueDown"><img src="images/go-down.svg" alt="QBT_TR(Move down)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move down)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#queueBottom"><img src="images/go-bottom.svg" alt="QBT_TR(Move to bottom)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move to bottom)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#queueTop"><img src="images/go-top.svg" alt="Move to top)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move to top</a></li>
<li><a href="#queueUp"><img src="images/go-up.svg" alt="Move up)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move up</a></li>
<li><a href="#queueDown"><img src="images/go-down.svg" alt="Move down)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move down</a></li>
<li><a href="#queueBottom"><img src="images/go-bottom.svg" alt="Move to bottom)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Move to bottom</a></li>
</ul>
</li>
<li>
<a href="#" class="arrow-right"><img src="images/edit-copy.svg" alt="QBT_TR(Copy)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Copy)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#" class="arrow-right"><img src="images/edit-copy.svg" alt="Copy)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Copy</a>
<ul>
<li><a href="#" id="copyName" class="copyToClipboard"><img src="images/name.svg" alt="QBT_TR(Name)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Name)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#" id="copyInfohash1" class="copyToClipboard"><img src="images/hash.svg" alt="QBT_TR(Info hash v1)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Info hash v1)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#" id="copyInfohash2" class="copyToClipboard"><img src="images/hash.svg" alt="QBT_TR(Info hash v2)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Info hash v2)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#" id="copyMagnetLink" class="copyToClipboard"><img src="images/torrent-magnet.svg" alt="QBT_TR(Magnet link)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Magnet link)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#" id="copyID" class="copyToClipboard"><img src="images/help-about.svg" alt="QBT_TR(Torrent ID)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Torrent ID)QBT_TR[CONTEXT=TransferListWidget]</a></li>
<li><a href="#" id="copyName" class="copyToClipboard"><img src="images/name.svg" alt="Name)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Name</a></li>
<li><a href="#" id="copyInfohash1" class="copyToClipboard"><img src="images/hash.svg" alt="Info hash v1)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Info hash v1</a></li>
<li><a href="#" id="copyInfohash2" class="copyToClipboard"><img src="images/hash.svg" alt="Info hash v2)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Info hash v2</a></li>
<li><a href="#" id="copyMagnetLink" class="copyToClipboard"><img src="images/torrent-magnet.svg" alt="Magnet link)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Magnet link</a></li>
<li><a href="#" id="copyID" class="copyToClipboard"><img src="images/help-about.svg" alt="Torrent ID)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Torrent ID</a></li>
</ul>
</li>
<li>
<a href="#exportTorrent"><img src="images/edit-copy.svg" alt="QBT_TR(Export .torrent)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Export .torrent)QBT_TR[CONTEXT=TransferListWidget]</a>
<a href="#exportTorrent"><img src="images/edit-copy.svg" alt="Export .torrent)QBT_TR[CONTEXT=TransferListWidget]" /> QBT_TR(Export .torrent</a>
</li>
</ul>
<ul id="categoriesFilterMenu" class="contextMenu">
<li><a href="#createCategory"><img src="images/list-add.svg" alt="QBT_TR(Add category...)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Add category...)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#editCategory"><img src="images/edit-rename.svg" alt="QBT_TR(Edit category...)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Edit category...)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#deleteCategory"><img src="images/list-remove.svg" 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="images/list-remove.svg" 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="images/torrent-start.svg" 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="images/torrent-stop.svg" 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="images/list-remove.svg" alt="QBT_TR(Remove torrents)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Remove torrents)QBT_TR[CONTEXT=CategoryFilterWidget]</a></li>
<li><a href="#createCategory"><img src="images/list-add.svg" alt="Add category...)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Add category...</a></li>
<li><a href="#editCategory"><img src="images/edit-rename.svg" alt="Edit category...)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Edit category...</a></li>
<li><a href="#deleteCategory"><img src="images/list-remove.svg" alt="Remove category)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Remove category</a></li>
<li><a href="#deleteUnusedCategories"><img src="images/list-remove.svg" alt="Remove unused categories)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Remove unused categories</a></li>
<li class="separator"><a href="#startTorrentsByCategory"><img src="images/torrent-start.svg" alt="Resume torrents)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Resume torrents</a></li>
<li><a href="#pauseTorrentsByCategory"><img src="images/torrent-stop.svg" alt="Pause torrents)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Pause torrents</a></li>
<li><a href="#deleteTorrentsByCategory"><img src="images/list-remove.svg" alt="Remove torrents)QBT_TR[CONTEXT=CategoryFilterWidget]" /> QBT_TR(Remove torrents</a></li>
</ul>
<ul id="tagsFilterMenu" class="contextMenu">
<li><a href="#createTag"><img src="images/list-add.svg" alt="QBT_TR(Add tag...)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Add tag...)QBT_TR[CONTEXT=TagFilterWidget]</a></li>
<li><a href="#deleteTag"><img src="images/list-remove.svg" alt="QBT_TR(Remove tag)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Remove tag)QBT_TR[CONTEXT=TagFilterWidget]</a></li>
<li><a href="#deleteUnusedTags"><img src="images/list-remove.svg" alt="QBT_TR(Remove unused tags)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Remove unused tags)QBT_TR[CONTEXT=TagFilterWidget]</a></li>
<li class="separator"><a href="#startTorrentsByTag"><img src="images/torrent-start.svg" alt="QBT_TR(Resume torrents)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Resume torrents)QBT_TR[CONTEXT=TagFilterWidget]</a></li>
<li><a href="#pauseTorrentsByTag"><img src="images/torrent-stop.svg" alt="QBT_TR(Pause torrents)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Pause torrents)QBT_TR[CONTEXT=TagFilterWidget]</a></li>
<li><a href="#deleteTorrentsByTag"><img src="images/list-remove.svg" alt="QBT_TR(Remove torrents)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Remove torrents)QBT_TR[CONTEXT=TagFilterWidget]</a></li>
<li><a href="#createTag"><img src="images/list-add.svg" alt="Add tag...)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Add tag...</a></li>
<li><a href="#deleteTag"><img src="images/list-remove.svg" alt="Remove tag)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Remove tag</a></li>
<li><a href="#deleteUnusedTags"><img src="images/list-remove.svg" alt="Remove unused tags)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Remove unused tags</a></li>
<li class="separator"><a href="#startTorrentsByTag"><img src="images/torrent-start.svg" alt="Resume torrents)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Resume torrents</a></li>
<li><a href="#pauseTorrentsByTag"><img src="images/torrent-stop.svg" alt="Pause torrents)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Pause torrents</a></li>
<li><a href="#deleteTorrentsByTag"><img src="images/list-remove.svg" alt="Remove torrents)QBT_TR[CONTEXT=TagFilterWidget]" /> QBT_TR(Remove torrents</a></li>
</ul>
<ul id="trackersFilterMenu" class="contextMenu">
<li><a href="#resumeTorrentsByTracker"><img src="images/torrent-start.svg" alt="QBT_TR(Resume torrents)QBT_TR[CONTEXT=TrackerFiltersList]" /> QBT_TR(Resume torrents)QBT_TR[CONTEXT=TrackerFiltersList]</a></li>
<li><a href="#pauseTorrentsByTracker"><img src="images/torrent-stop.svg" alt="QBT_TR(Pause torrents)QBT_TR[CONTEXT=TrackerFiltersList]" /> QBT_TR(Pause torrents)QBT_TR[CONTEXT=TrackerFiltersList]</a></li>
<li><a href="#deleteTorrentsByTracker"><img src="images/list-remove.svg" alt="QBT_TR(Remove torrents)QBT_TR[CONTEXT=TrackerFiltersList]" /> QBT_TR(Remove torrents)QBT_TR[CONTEXT=TrackerFiltersList]</a></li>
<li><a href="#resumeTorrentsByTracker"><img src="images/torrent-start.svg" alt="Resume torrents)QBT_TR[CONTEXT=TrackerFiltersList]" /> QBT_TR(Resume torrents</a></li>
<li><a href="#pauseTorrentsByTracker"><img src="images/torrent-stop.svg" alt="Pause torrents)QBT_TR[CONTEXT=TrackerFiltersList]" /> QBT_TR(Pause torrents</a></li>
<li><a href="#deleteTorrentsByTracker"><img src="images/list-remove.svg" alt="Remove torrents)QBT_TR[CONTEXT=TrackerFiltersList]" /> QBT_TR(Remove torrents</a></li>
</ul>
<ul id="torrentTrackersMenu" class="contextMenu">
<li><a href="#AddTracker"><img src="images/list-add.svg" alt="QBT_TR(Add trackers...)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Add trackers...)QBT_TR[CONTEXT=TrackerListWidget]</a></li>
<li class="separator"><a href="#EditTracker"><img src="images/edit-rename.svg" alt="QBT_TR(Edit tracker URL...)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Edit tracker URL...)QBT_TR[CONTEXT=TrackerListWidget]</a></li>
<li><a href="#RemoveTracker"><img src="images/list-remove.svg" alt="QBT_TR(Remove tracker)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Remove tracker)QBT_TR[CONTEXT=TrackerListWidget]</a></li>
<li><a href="#CopyTrackerUrl" id="CopyTrackerUrl"><img src="images/edit-copy.svg" alt="QBT_TR(Copy tracker URL)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Copy tracker URL)QBT_TR[CONTEXT=TrackerListWidget]</a></li>
<li><a href="#AddTracker"><img src="images/list-add.svg" alt="Add trackers...)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Add trackers...</a></li>
<li class="separator"><a href="#EditTracker"><img src="images/edit-rename.svg" alt="Edit tracker URL...)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Edit tracker URL...</a></li>
<li><a href="#RemoveTracker"><img src="images/list-remove.svg" alt="Remove tracker)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Remove tracker</a></li>
<li><a href="#CopyTrackerUrl" id="CopyTrackerUrl"><img src="images/edit-copy.svg" alt="Copy tracker URL)QBT_TR[CONTEXT=TrackerListWidget]" /> QBT_TR(Copy tracker URL</a></li>
</ul>
<ul id="torrentPeersMenu" class="contextMenu">
<li><a href="#addPeer"><img src="images/peers-add.svg" alt="QBT_TR(Add peers...)QBT_TR[CONTEXT=PeerListWidget]" /> QBT_TR(Add peers...)QBT_TR[CONTEXT=PeerListWidget]</a></li>
<li><a href="#copyPeer" id="CopyPeerInfo"><img src="images/edit-copy.svg" alt="QBT_TR(Copy IP:port)QBT_TR[CONTEXT=PeerListWidget]" /> QBT_TR(Copy IP:port)QBT_TR[CONTEXT=PeerListWidget]</a></li>
<li class="separator"><a href="#banPeer"><img src="images/peers-remove.svg" alt="QBT_TR(Ban peer permanently)QBT_TR[CONTEXT=PeerListWidget]" /> QBT_TR(Ban peer permanently)QBT_TR[CONTEXT=PeerListWidget]</a></li>
<li><a href="#addPeer"><img src="images/peers-add.svg" alt="Add peers...)QBT_TR[CONTEXT=PeerListWidget]" /> QBT_TR(Add peers...</a></li>
<li><a href="#copyPeer" id="CopyPeerInfo"><img src="images/edit-copy.svg" alt="Copy IP:port)QBT_TR[CONTEXT=PeerListWidget]" /> QBT_TR(Copy IP:port</a></li>
<li class="separator"><a href="#banPeer"><img src="images/peers-remove.svg" alt="Ban peer permanently)QBT_TR[CONTEXT=PeerListWidget]" /> QBT_TR(Ban peer permanently</a></li>
</ul>
<ul id="torrentFilesMenu" class="contextMenu">
<li><a href="#Rename"><img src="images/edit-rename.svg" alt="QBT_TR(Rename...)QBT_TR[CONTEXT=PropertiesWidget]" /> QBT_TR(Rename...)QBT_TR[CONTEXT=PropertiesWidget]</a></li>
<li><a href="#Rename"><img src="images/edit-rename.svg" alt="Rename...)QBT_TR[CONTEXT=PropertiesWidget]" /> QBT_TR(Rename...</a></li>
<li class="separator">
<a href="#FilePrio" class="arrow-right"><span style="display: inline-block; width: 16px;"></span> QBT_TR(Priority)QBT_TR[CONTEXT=PropertiesWidget]</a>
<a href="#FilePrio" class="arrow-right"><span style="display: inline-block; width: 16px;"></span> Priority</a>
<ul>
<li><a href="#FilePrioIgnore"><span style="display: inline-block; width: 16px;"></span> QBT_TR(Do not download)QBT_TR[CONTEXT=PropListDelegate]</a></li>
<li><a href="#FilePrioNormal"><span style="display: inline-block; width: 16px;"></span> QBT_TR(Normal)QBT_TR[CONTEXT=PropListDelegate]</a></li>
<li><a href="#FilePrioHigh"><span style="display: inline-block; width: 16px;"></span> QBT_TR(High)QBT_TR[CONTEXT=PropListDelegate]</a></li>
<li><a href="#FilePrioMaximum"><span style="display: inline-block; width: 16px;"></span> QBT_TR(Maximum)QBT_TR[CONTEXT=PropListDelegate]</a></li>
<li><a href="#FilePrioIgnore"><span style="display: inline-block; width: 16px;"></span> Do not download</a></li>
<li><a href="#FilePrioNormal"><span style="display: inline-block; width: 16px;"></span> Normal</a></li>
<li><a href="#FilePrioHigh"><span style="display: inline-block; width: 16px;"></span> High</a></li>
<li><a href="#FilePrioMaximum"><span style="display: inline-block; width: 16px;"></span> Maximum</a></li>
</ul>
</li>
</ul>
@ -232,13 +232,13 @@
<td class="statusBarSeparator"></td>
<td id="DHTNodes"></td>
<td class="statusBarSeparator"></td>
<td><img id="connectionStatus" alt="QBT_TR(Connection status)QBT_TR[CONTEXT=MainWindow]" title="QBT_TR(Connection status)QBT_TR[CONTEXT=MainWindow]" src="images/firewalled.svg" style="height: 1.5em;" /></td>
<td><img id="connectionStatus" alt="Connection status)QBT_TR[CONTEXT=MainWindow]" title="QBT_TR(Connection status" src="images/firewalled.svg" style="height: 1.5em;" /></td>
<td class="statusBarSeparator"></td>
<td style="cursor:pointer;"><img id="alternativeSpeedLimits" alt="QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow]" title="QBT_TR(Alternative speed limits)QBT_TR[CONTEXT=MainWindow]" src="images/slow_off.svg" style="height: 1.5em;" /></td>
<td style="cursor:pointer;"><img id="alternativeSpeedLimits" alt="Alternative speed limits)QBT_TR[CONTEXT=MainWindow]" title="QBT_TR(Alternative speed limits" src="images/slow_off.svg" style="height: 1.5em;" /></td>
<td class="statusBarSeparator"></td>
<td class="speedLabel"><img src="images/downloading.svg" alt="QBT_TR(Download speed icon)QBT_TR[CONTEXT=MainWindow]" style="height: 1.5em; padding-right: 5px; margin-bottom: -4px;"><span id="DlInfos"></span></td>
<td class="speedLabel"><img src="images/downloading.svg" alt="Download speed icon" style="height: 1.5em; padding-right: 5px; margin-bottom: -4px;"><span id="DlInfos"></span></td>
<td class="statusBarSeparator"></td>
<td class="speedLabel"><img src="images/upload.svg" alt="QBT_TR(Upload speed icon)QBT_TR[CONTEXT=MainWindow]" style="height: 1.4em; padding-right: 5px; margin-bottom: -4px;"><span id="UpInfos"></span></td>
<td class="speedLabel"><img src="images/upload.svg" alt="Upload speed icon" style="height: 1.4em; padding-right: 5px; margin-bottom: -4px;"><span id="UpInfos"></span></td>
</tr>
</table>
</div>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget]</title>
<title>New Category</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -58,7 +58,7 @@
if ((name === null) || (name === ""))
return false;
if (name.match("^([^\\\\\\/]|[^\\\\\\/]([^\\\\\\/]|\\/(?=[^\\/]))*[^\\\\\\/])$") === null) {
alert("QBT_TR(Invalid category name:\nPlease do not use any special characters in the category name.)QBT_TR[CONTEXT=HttpServer]");
alert("Invalid category name:\nPlease do not use any special characters in the category name.");
return false;
}
return true;
@ -90,7 +90,7 @@
}).send();
},
onFailure: function() {
alert("QBT_TR(Unable to create category)QBT_TR[CONTEXT=HttpServer] " + window.qBittorrent.Misc.escapeHtml(categoryName));
alert("Unable to create category " + window.qBittorrent.Misc.escapeHtml(categoryName));
}
}).send();
break;
@ -131,12 +131,12 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Category)QBT_TR[CONTEXT=TransferListWidget]:</p>
<p style="font-weight: bold;">Category:</p>
<input type="text" id="categoryName" style="width: 99%;" />
<p style="font-weight: bold;">QBT_TR(Save path)QBT_TR[CONTEXT=TransferListWidget]:</p>
<p style="font-weight: bold;">Save path:</p>
<input type="text" id="savePath" style="width: 99%;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Add)QBT_TR[CONTEXT=HttpServer]" id="categoryNameButton" />
<input type="button" value="Add" id="categoryNameButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Please type a RSS feed URL)QBT_TR[CONTEXT=RSSWidget]</title>
<title>Please type a RSS feed URL</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -36,7 +36,7 @@
// check field
const feedURL = $('feedURL').value.trim();
if (feedURL === '') {
alert('QBT_TR(Name cannot be empty)QBT_TR[CONTEXT=HttpServer]');
alert('Name cannot be empty');
return;
}
@ -67,10 +67,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Feed URL:)QBT_TR[CONTEXT=RSSWidget]</p>
<p style="font-weight: bold;">Feed URL:</p>
<input type="text" id="feedURL" style="width: 320px;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(OK)QBT_TR[CONTEXT=HttpServer]" id="submitButton" />
<input type="button" value="OK" id="submitButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Please choose a folder name)QBT_TR[CONTEXT=RSSWidget]</title>
<title>Please choose a folder name</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -36,7 +36,7 @@
// check field
const folderName = $('folderName').value.trim();
if (folderName === '') {
alert('QBT_TR(Name cannot be empty)QBT_TR[CONTEXT=HttpServer]');
alert('Name cannot be empty');
return;
}
@ -66,10 +66,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Folder name:)QBT_TR[CONTEXT=RSSWidget]</p>
<p style="font-weight: bold;">Folder name:</p>
<input type="text" id="folderName" style="width: 320px;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(OK)QBT_TR[CONTEXT=HttpServer]" id="submitButton" />
<input type="button" value="OK" id="submitButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(New rule name)QBT_TR[CONTEXT=AutomatedRssDownloader]</title>
<title>New rule name</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -35,7 +35,7 @@
// check field
const name = $('name').value.trim();
if (name === '') {
alert('QBT_TR(Name cannot be empty)QBT_TR[CONTEXT=HttpServer]');
alert('Name cannot be empty');
return;
}
$('submitButton').disabled = true;
@ -59,10 +59,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p>QBT_TR(Please type the name of the new download rule.)QBT_TR[CONTEXT=AutomatedRssDownloader]</p>
<p>Please type the name of the new download rule.</p>
<input type="text" id="name" style="width: 320px;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(OK)QBT_TR[CONTEXT=HttpServer]" id="submitButton" />
<input type="button" value="OK" id="submitButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Add Tags)QBT_TR[CONTEXT=TransferListWidget]</title>
<title>Add Tags</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -34,7 +34,7 @@
const uriHashes = window.qBittorrent.Misc.safeTrim(new URI().getData('hashes'));
if (uriAction === 'create')
$('legendText').innerText = 'QBT_TR(Tag:)QBT_TR[CONTEXT=TagFilterWidget]';
$('legendText').innerText = 'Tag:';
$('tagName').focus();
@ -47,7 +47,7 @@
if ((name === null) || (name === ""))
return false;
if (name.indexOf(",") >= 0) {
alert("QBT_TR(Invalid tag name)QBT_TR[CONTEXT=TagFilterWidget]");
alert("Invalid tag name");
return false;
}
return true;
@ -94,10 +94,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p id="legendText" style="font-weight: bold;">QBT_TR(Comma-separated tags:)QBT_TR[CONTEXT=TransferListWidget]</p>
<p id="legendText" style="font-weight: bold;">Comma-separated tags:</p>
<input type="text" id="tagName" style="width: 99%;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Add)QBT_TR[CONTEXT=HttpServer]" id="tagNameButton" />
<input type="button" value="Add" id="tagNameButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Rename)QBT_TR[CONTEXT=TransferListWidget]</title>
<title>Rename</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -64,10 +64,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(New name)QBT_TR[CONTEXT=TransferListWidget]:</p>
<p style="font-weight: bold;">New name:</p>
<input type="text" id="rename" style="width: 99%;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="renameButton" />
<input type="button" value="Save" id="renameButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Please choose a new name for this RSS feed)QBT_TR[CONTEXT=RSSWidget]</title>
<title>Please choose a new name for this RSS feed</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -40,12 +40,12 @@
// check field
const newPath = $('rename').value.trim();
if (newPath === '') {
alert('QBT_TR(Name cannot be empty)QBT_TR[CONTEXT=HttpServer]');
alert('Name cannot be empty');
return;
}
if (newPath === oldPath) {
alert('QBT_TR(Name is unchanged)QBT_TR[CONTEXT=HttpServer]');
alert('Name is unchanged');
return;
}
@ -77,10 +77,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(New feed name:)QBT_TR[CONTEXT=RSSWidget]</p>
<p style="font-weight: bold;">New feed name:</p>
<input type="text" id="rename" style="width: 320px;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="renameButton" />
<input type="button" value="Save" id="renameButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Renaming)QBT_TR[CONTEXT=TorrentContentTreeView]</title>
<title>Renaming</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -46,12 +46,12 @@
// check field
const newName = $('rename').value.trim();
if (newName === '') {
alert('QBT_TR(Name cannot be empty)QBT_TR[CONTEXT=HttpServer]');
alert('Name cannot be empty');
return;
}
if (newName === oldName) {
alert('QBT_TR(Name is unchanged)QBT_TR[CONTEXT=HttpServer]');
alert('Name is unchanged');
return;
}
@ -73,7 +73,7 @@
window.parent.closeWindows();
},
onFailure: function() {
alert('QBT_TR(Failed to update name)QBT_TR[CONTEXT=HttpServer]');
alert('Failed to update name');
$('renameButton').disabled = false;
}
}).send();
@ -84,10 +84,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(New name:)QBT_TR[CONTEXT=TorrentContentTreeView]</p>
<p style="font-weight: bold;">New name:</p>
<input type="text" id="rename" style="width: 220px;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="renameButton" />
<input type="button" value="Save" id="renameButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Rule renaming)QBT_TR[CONTEXT=AutomatedRssDownloader]</title>
<title>Rule renaming</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -40,12 +40,12 @@
// check field
const newName = $('rename').value.trim();
if (newName === '') {
alert('QBT_TR(Name cannot be empty)QBT_TR[CONTEXT=HttpServer]');
alert('Name cannot be empty');
return;
}
if (newName === oldName) {
alert('QBT_TR(Name is unchanged)QBT_TR[CONTEXT=HttpServer]');
alert('Name is unchanged');
return;
}
@ -70,10 +70,10 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p>QBT_TR(Please type the new rule name)QBT_TR[CONTEXT=AutomatedRssDownloader]</p>
<p>Please type the new rule name</p>
<input type="text" id="rename" style="width: 320px;" />
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="renameButton" />
<input type="button" value="Save" id="renameButton" />
</div>
</div>
</body>

View File

@ -393,19 +393,19 @@ window.addEvent('load', function() {
};
const updateFiltersList = function() {
updateFilter('all', 'QBT_TR(All (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('downloading', 'QBT_TR(Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('seeding', 'QBT_TR(Seeding (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('completed', 'QBT_TR(Completed (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('resumed', 'QBT_TR(Resumed (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('paused', 'QBT_TR(Paused (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('active', 'QBT_TR(Active (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('inactive', 'QBT_TR(Inactive (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('stalled', 'QBT_TR(Stalled (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('stalled_uploading', 'QBT_TR(Stalled Uploading (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('stalled_downloading', 'QBT_TR(Stalled Downloading (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('checking', 'QBT_TR(Checking (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('errored', 'QBT_TR(Errored (%1))QBT_TR[CONTEXT=StatusFilterWidget]');
updateFilter('all', 'All (%1)');
updateFilter('downloading', 'Downloading (%1)');
updateFilter('seeding', 'Seeding (%1)');
updateFilter('completed', 'Completed (%1)');
updateFilter('resumed', 'Resumed (%1)');
updateFilter('paused', 'Paused (%1)');
updateFilter('active', 'Active (%1)');
updateFilter('inactive', 'Inactive (%1)');
updateFilter('stalled', 'Stalled (%1)');
updateFilter('stalled_uploading', 'Stalled Uploading (%1)');
updateFilter('stalled_downloading', 'Stalled Downloading (%1)');
updateFilter('checking', 'Checking (%1)');
updateFilter('errored', 'Errored (%1)');
};
const updateCategoryList = function() {
@ -432,8 +432,8 @@ window.addEvent('load', function() {
if (row['full_data'].category.length === 0)
uncategorized += 1;
});
categoryList.appendChild(create_link(CATEGORIES_ALL, 'QBT_TR(All)QBT_TR[CONTEXT=CategoryFilterModel]', all));
categoryList.appendChild(create_link(CATEGORIES_UNCATEGORIZED, 'QBT_TR(Uncategorized)QBT_TR[CONTEXT=CategoryFilterModel]', uncategorized));
categoryList.appendChild(create_link(CATEGORIES_ALL, 'All', all));
categoryList.appendChild(create_link(CATEGORIES_UNCATEGORIZED, 'Uncategorized', uncategorized));
const sortedCategories = [];
Object.each(category_list, function(category) {
@ -489,8 +489,8 @@ window.addEvent('load', function() {
if (Object.prototype.hasOwnProperty.call(torrentsTable.rows, key) && (torrentsTable.rows[key]['full_data'].tags.length === 0))
untagged += 1;
}
tagFilterList.appendChild(createLink(TAGS_ALL, 'QBT_TR(All)QBT_TR[CONTEXT=TagFilterModel]', torrentsCount));
tagFilterList.appendChild(createLink(TAGS_UNTAGGED, 'QBT_TR(Untagged)QBT_TR[CONTEXT=TagFilterModel]', untagged));
tagFilterList.appendChild(createLink(TAGS_ALL, 'All', torrentsCount));
tagFilterList.appendChild(createLink(TAGS_UNTAGGED, 'Untagged', untagged));
const sortedTags = [];
for (const key in tagList)
@ -538,13 +538,13 @@ window.addEvent('load', function() {
};
const torrentsCount = torrentsTable.getRowIds().length;
trackerFilterList.appendChild(createLink(TRACKERS_ALL, 'QBT_TR(All (%1))QBT_TR[CONTEXT=TrackerFiltersList]', torrentsCount));
trackerFilterList.appendChild(createLink(TRACKERS_ALL, 'All (%1)', torrentsCount));
let trackerlessTorrentsCount = 0;
for (const key in torrentsTable.rows) {
if (Object.prototype.hasOwnProperty.call(torrentsTable.rows, key) && (torrentsTable.rows[key]['full_data'].trackers_count === 0))
trackerlessTorrentsCount += 1;
}
trackerFilterList.appendChild(createLink(TRACKERS_TRACKERLESS, 'QBT_TR(Trackerless (%1))QBT_TR[CONTEXT=TrackerFiltersList]', trackerlessTorrentsCount));
trackerFilterList.appendChild(createLink(TRACKERS_TRACKERLESS, 'Trackerless (%1)', trackerlessTorrentsCount));
for (const [hash, tracker] of trackerList)
trackerFilterList.appendChild(createLink(hash, tracker.url + ' (%1)', tracker.torrents.length));
@ -573,7 +573,7 @@ window.addEvent('load', function() {
onFailure: function() {
const errorDiv = $('error_div');
if (errorDiv)
errorDiv.set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
errorDiv.set('html', 'qBittorrent client is not reachable');
syncRequestInProgress = false;
syncData(2000);
},
@ -741,13 +741,13 @@ window.addEvent('load', function() {
transfer_info += " (" + window.qBittorrent.Misc.friendlyUnit(serverState.up_info_data, false) + ")";
$("UpInfos").set('html', transfer_info);
if (speedInTitle) {
document.title = "QBT_TR([D: %1, U: %2] qBittorrent %3)QBT_TR[CONTEXT=MainWindow]".replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_speed, true)).replace("%2", window.qBittorrent.Misc.friendlyUnit(serverState.up_info_speed, true)).replace("%3", qbtVersion());
document.title += " QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]";
document.title = "[D: %1, U: %2] qBittorrent %3".replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.dl_info_speed, true)).replace("%2", window.qBittorrent.Misc.friendlyUnit(serverState.up_info_speed, true)).replace("%3", qbtVersion());
document.title += " Web UI";
}
else
document.title = ("qBittorrent " + qbtVersion() + " QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]");
$('freeSpaceOnDisk').set('html', 'QBT_TR(Free space: %1)QBT_TR[CONTEXT=HttpServer]'.replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.free_space_on_disk)));
$('DHTNodes').set('html', 'QBT_TR(DHT: %1 nodes)QBT_TR[CONTEXT=StatusBar]'.replace("%1", serverState.dht_nodes));
document.title = ("qBittorrent " + qbtVersion() + " Web UI");
$('freeSpaceOnDisk').set('html', 'Free space: %1'.replace("%1", window.qBittorrent.Misc.friendlyUnit(serverState.free_space_on_disk)));
$('DHTNodes').set('html', 'DHT: %1 nodes'.replace("%1", serverState.dht_nodes));
// Statistics dialog
if (document.getElementById("statisticsContent")) {
@ -768,15 +768,15 @@ window.addEvent('load', function() {
switch (serverState.connection_status) {
case 'connected':
$('connectionStatus').src = 'images/connected.svg';
$('connectionStatus').alt = 'QBT_TR(Connection status: Connected)QBT_TR[CONTEXT=MainWindow]';
$('connectionStatus').alt = 'Connection status: Connected';
break;
case 'firewalled':
$('connectionStatus').src = 'images/firewalled.svg';
$('connectionStatus').alt = 'QBT_TR(Connection status: Firewalled)QBT_TR[CONTEXT=MainWindow]';
$('connectionStatus').alt = 'Connection status: Firewalled';
break;
default:
$('connectionStatus').src = 'images/disconnected.svg';
$('connectionStatus').alt = 'QBT_TR(Connection status: Disconnected)QBT_TR[CONTEXT=MainWindow]';
$('connectionStatus').alt = 'Connection status: Disconnected';
break;
}
@ -813,11 +813,11 @@ window.addEvent('load', function() {
const updateAltSpeedIcon = function(enabled) {
if (enabled) {
$('alternativeSpeedLimits').src = 'images/slow.svg';
$('alternativeSpeedLimits').alt = 'QBT_TR(Alternative speed limits: On)QBT_TR[CONTEXT=MainWindow]';
$('alternativeSpeedLimits').alt = 'Alternative speed limits: On';
}
else {
$('alternativeSpeedLimits').src = 'images/slow_off.svg';
$('alternativeSpeedLimits').alt = 'QBT_TR(Alternative speed limits: Off)QBT_TR[CONTEXT=MainWindow]';
$('alternativeSpeedLimits').alt = 'Alternative speed limits: Off';
}
};
@ -1217,7 +1217,7 @@ window.addEvent('load', function() {
const id = 'uploadPage';
new MochaUI.Window({
id: id,
title: "QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]",
title: "Upload local torrent",
loadMethod: 'iframe',
contentURL: new URI("upload.html").toString(),
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
@ -1259,7 +1259,7 @@ window.addEvent('load', function() {
const contentURI = new URI('download.html').setData("urls", urls.map(encodeURIComponent).join("|"));
new MochaUI.Window({
id: id,
title: "QBT_TR(Download from URLs)QBT_TR[CONTEXT=downloadFromURL]",
title: "Download from URLs",
loadMethod: 'iframe',
contentURL: contentURI.toString(),
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
@ -1283,9 +1283,9 @@ window.addEvent('load', function() {
function registerMagnetHandler() {
if (typeof navigator.registerProtocolHandler !== 'function') {
if (window.location.protocol !== 'https:')
alert("QBT_TR(To use this feature, the WebUI needs to be accessed over HTTPS)QBT_TR[CONTEXT=MainWindow]");
alert("To use this feature, the WebUI needs to be accessed over HTTPS");
else
alert("QBT_TR(Your browser does not support this feature)QBT_TR[CONTEXT=MainWindow]");
alert("Your browser does not support this feature");
return;
}

View File

@ -433,10 +433,10 @@ window.qBittorrent.ContextMenu = (function() {
const categoryList = $('contextCategoryList');
categoryList.empty();
categoryList.appendChild(new Element('li', {
html: '<a href="javascript:torrentNewCategoryFN();"><img src="images/list-add.svg" alt="QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(New...)QBT_TR[CONTEXT=TransferListWidget]</a>'
html: '<a href="javascript:torrentNewCategoryFN();"><img src="images/list-add.svg" alt="New...)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(New...</a>'
}));
categoryList.appendChild(new Element('li', {
html: '<a href="javascript:torrentSetCategoryFN(0);"><img src="images/edit-clear.svg" alt="QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Reset)QBT_TR[CONTEXT=TransferListWidget]</a>'
html: '<a href="javascript:torrentSetCategoryFN(0);"><img src="images/edit-clear.svg" alt="Reset)QBT_TR[CONTEXT=TransferListWidget]"/> QBT_TR(Reset</a>'
}));
const sortedCategories = [];
@ -466,14 +466,14 @@ window.qBittorrent.ContextMenu = (function() {
contextTagList.appendChild(new Element('li', {
html: '<a href="javascript:torrentAddTagsFN();">'
+ '<img src="images/list-add.svg" alt="QBT_TR(Add...)QBT_TR[CONTEXT=TransferListWidget]"/>'
+ ' QBT_TR(Add...)QBT_TR[CONTEXT=TransferListWidget]'
+ '<img src="images/list-add.svg" alt="Add..."/>'
+ ' Add...'
+ '</a>'
}));
contextTagList.appendChild(new Element('li', {
html: '<a href="javascript:torrentRemoveAllTagsFN();">'
+ '<img src="images/edit-clear.svg" alt="QBT_TR(Remove All)QBT_TR[CONTEXT=TransferListWidget]"/>'
+ ' QBT_TR(Remove All)QBT_TR[CONTEXT=TransferListWidget]'
+ '<img src="images/edit-clear.svg" alt="Remove All"/>'
+ ' Remove All'
+ '</a>'
}));

View File

@ -889,36 +889,36 @@ window.qBittorrent.DynamicTable = (function() {
initColumns: function() {
this.newColumn('priority', '', '#', 30, true);
this.newColumn('state_icon', 'cursor: default', '', 22, true);
this.newColumn('name', '', 'QBT_TR(Name)QBT_TR[CONTEXT=TransferListModel]', 200, true);
this.newColumn('size', '', 'QBT_TR(Size)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('total_size', '', 'QBT_TR(Total Size)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('progress', '', 'QBT_TR(Done)QBT_TR[CONTEXT=TransferListModel]', 85, true);
this.newColumn('status', '', 'QBT_TR(Status)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('num_seeds', '', 'QBT_TR(Seeds)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('num_leechs', '', 'QBT_TR(Peers)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('dlspeed', '', 'QBT_TR(Down Speed)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('upspeed', '', 'QBT_TR(Up Speed)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('eta', '', 'QBT_TR(ETA)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('ratio', '', 'QBT_TR(Ratio)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('category', '', 'QBT_TR(Category)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('tags', '', 'QBT_TR(Tags)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('added_on', '', 'QBT_TR(Added On)QBT_TR[CONTEXT=TransferListModel]', 100, true);
this.newColumn('completion_on', '', 'QBT_TR(Completed On)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('tracker', '', 'QBT_TR(Tracker)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('dl_limit', '', 'QBT_TR(Down Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('up_limit', '', 'QBT_TR(Up Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('downloaded', '', 'QBT_TR(Downloaded)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('uploaded', '', 'QBT_TR(Uploaded)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('downloaded_session', '', 'QBT_TR(Session Download)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('uploaded_session', '', 'QBT_TR(Session Upload)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('amount_left', '', 'QBT_TR(Remaining)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('time_active', '', 'QBT_TR(Time Active)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('save_path', '', 'QBT_TR(Save path)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('completed', '', 'QBT_TR(Completed)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('max_ratio', '', 'QBT_TR(Ratio Limit)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('seen_complete', '', 'QBT_TR(Last Seen Complete)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('last_activity', '', 'QBT_TR(Last Activity)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('availability', '', 'QBT_TR(Availability)QBT_TR[CONTEXT=TransferListModel]', 100, false);
this.newColumn('name', '', 'Name', 200, true);
this.newColumn('size', '', 'Size', 100, true);
this.newColumn('total_size', '', 'Total Size', 100, false);
this.newColumn('progress', '', 'Done', 85, true);
this.newColumn('status', '', 'Status', 100, true);
this.newColumn('num_seeds', '', 'Seeds', 100, true);
this.newColumn('num_leechs', '', 'Peers', 100, true);
this.newColumn('dlspeed', '', 'Down Speed', 100, true);
this.newColumn('upspeed', '', 'Up Speed', 100, true);
this.newColumn('eta', '', 'ETA', 100, true);
this.newColumn('ratio', '', 'Ratio', 100, true);
this.newColumn('category', '', 'Category', 100, true);
this.newColumn('tags', '', 'Tags', 100, true);
this.newColumn('added_on', '', 'Added On', 100, true);
this.newColumn('completion_on', '', 'Completed On', 100, false);
this.newColumn('tracker', '', 'Tracker', 100, false);
this.newColumn('dl_limit', '', 'Down Limit', 100, false);
this.newColumn('up_limit', '', 'Up Limit', 100, false);
this.newColumn('downloaded', '', 'Downloaded', 100, false);
this.newColumn('uploaded', '', 'Uploaded', 100, false);
this.newColumn('downloaded_session', '', 'Session Download', 100, false);
this.newColumn('uploaded_session', '', 'Session Upload', 100, false);
this.newColumn('amount_left', '', 'Remaining', 100, false);
this.newColumn('time_active', '', 'Time Active', 100, false);
this.newColumn('save_path', '', 'Save path', 100, false);
this.newColumn('completed', '', 'Completed', 100, false);
this.newColumn('max_ratio', '', 'Ratio Limit', 100, false);
this.newColumn('seen_complete', '', 'Last Seen Complete', 100, false);
this.newColumn('last_activity', '', 'Last Activity', 100, false);
this.newColumn('availability', '', 'Availability', 100, false);
this.columns['state_icon'].onclick = '';
this.columns['state_icon'].dataProperties[0] = 'state';
@ -1013,58 +1013,58 @@ window.qBittorrent.DynamicTable = (function() {
let status;
switch (state) {
case "downloading":
status = "QBT_TR(Downloading)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Downloading";
break;
case "stalledDL":
status = "QBT_TR(Stalled)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Stalled";
break;
case "metaDL":
status = "QBT_TR(Downloading metadata)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Downloading metadata";
break;
case "forcedMetaDL":
status = "QBT_TR([F] Downloading metadata)QBT_TR[CONTEXT=TransferListDelegate]";
status = "[F] Downloading metadata";
break;
case "forcedDL":
status = "QBT_TR([F] Downloading)QBT_TR[CONTEXT=TransferListDelegate]";
status = "[F] Downloading";
break;
case "uploading":
case "stalledUP":
status = "QBT_TR(Seeding)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Seeding";
break;
case "forcedUP":
status = "QBT_TR([F] Seeding)QBT_TR[CONTEXT=TransferListDelegate]";
status = "[F] Seeding";
break;
case "queuedDL":
case "queuedUP":
status = "QBT_TR(Queued)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Queued";
break;
case "checkingDL":
case "checkingUP":
status = "QBT_TR(Checking)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Checking";
break;
case "queuedForChecking":
status = "QBT_TR(Queued for checking)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Queued for checking";
break;
case "checkingResumeData":
status = "QBT_TR(Checking resume data)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Checking resume data";
break;
case "pausedDL":
status = "QBT_TR(Paused)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Paused";
break;
case "pausedUP":
status = "QBT_TR(Completed)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Completed";
break;
case "moving":
status = "QBT_TR(Moving)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Moving";
break;
case "missingFiles":
status = "QBT_TR(Missing Files)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Missing Files";
break;
case "error":
status = "QBT_TR(Errored)QBT_TR[CONTEXT=TransferListDelegate]";
status = "Errored";
break;
default:
status = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
status = "Unknown";
}
td.set('text', status);
@ -1275,7 +1275,7 @@ window.qBittorrent.DynamicTable = (function() {
const activeTime = this.getRowValue(row, 0);
const seedingTime = this.getRowValue(row, 1);
const time = (seedingTime > 0)
? ('QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=TransferListDelegate]'
? ('%1 (seeded for %2)'
.replace('%1', window.qBittorrent.Misc.friendlyDuration(activeTime))
.replace('%2', window.qBittorrent.Misc.friendlyDuration(seedingTime)))
: window.qBittorrent.Misc.friendlyDuration(activeTime);
@ -1300,7 +1300,7 @@ window.qBittorrent.DynamicTable = (function() {
td.set('title', '∞');
}
else {
const formattedVal = 'QBT_TR(%1 ago)QBT_TR[CONTEXT=TransferListDelegate]'.replace('%1', window.qBittorrent.Misc.friendlyDuration((new Date()) / 1000 - val));
const formattedVal = '%1 ago'.replace('%1', window.qBittorrent.Misc.friendlyDuration((new Date()) / 1000 - val));
td.set('text', formattedVal);
td.set('title', formattedVal);
}
@ -1511,19 +1511,19 @@ window.qBittorrent.DynamicTable = (function() {
Extends: DynamicTable,
initColumns: function() {
this.newColumn('country', '', 'QBT_TR(Country/Region)QBT_TR[CONTEXT=PeerListWidget]', 22, true);
this.newColumn('ip', '', 'QBT_TR(IP)QBT_TR[CONTEXT=PeerListWidget]', 80, true);
this.newColumn('port', '', 'QBT_TR(Port)QBT_TR[CONTEXT=PeerListWidget]', 35, true);
this.newColumn('connection', '', 'QBT_TR(Connection)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('flags', '', 'QBT_TR(Flags)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('client', '', 'QBT_TR(Client)QBT_TR[CONTEXT=PeerListWidget]', 140, true);
this.newColumn('progress', '', 'QBT_TR(Progress)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('dl_speed', '', 'QBT_TR(Down Speed)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('up_speed', '', 'QBT_TR(Up Speed)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('downloaded', '', 'QBT_TR(Downloaded)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('uploaded', '', 'QBT_TR(Uploaded)QBT_TR[CONTEXT=PeerListWidget]', 50, true);
this.newColumn('relevance', '', 'QBT_TR(Relevance)QBT_TR[CONTEXT=PeerListWidget]', 30, true);
this.newColumn('files', '', 'QBT_TR(Files)QBT_TR[CONTEXT=PeerListWidget]', 100, true);
this.newColumn('country', '', 'Country/Region', 22, true);
this.newColumn('ip', '', 'IP', 80, true);
this.newColumn('port', '', 'Port', 35, true);
this.newColumn('connection', '', 'Connection', 50, true);
this.newColumn('flags', '', 'Flags', 50, true);
this.newColumn('client', '', 'Client', 140, true);
this.newColumn('progress', '', 'Progress', 50, true);
this.newColumn('dl_speed', '', 'Down Speed', 50, true);
this.newColumn('up_speed', '', 'Up Speed', 50, true);
this.newColumn('downloaded', '', 'Downloaded', 50, true);
this.newColumn('uploaded', '', 'Uploaded', 50, true);
this.newColumn('relevance', '', 'Relevance', 30, true);
this.newColumn('files', '', 'Files', 100, true);
this.columns['country'].dataProperties.push('country_code');
this.columns['flags'].dataProperties.push('flags_desc');
@ -1634,11 +1634,11 @@ window.qBittorrent.DynamicTable = (function() {
Extends: DynamicTable,
initColumns: function() {
this.newColumn('fileName', '', 'QBT_TR(Name)QBT_TR[CONTEXT=SearchResultsTable]', 500, true);
this.newColumn('fileSize', '', 'QBT_TR(Size)QBT_TR[CONTEXT=SearchResultsTable]', 100, true);
this.newColumn('nbSeeders', '', 'QBT_TR(Seeders)QBT_TR[CONTEXT=SearchResultsTable]', 100, true);
this.newColumn('nbLeechers', '', 'QBT_TR(Leechers)QBT_TR[CONTEXT=SearchResultsTable]', 100, true);
this.newColumn('siteUrl', '', 'QBT_TR(Search engine)QBT_TR[CONTEXT=SearchResultsTable]', 250, true);
this.newColumn('fileName', '', 'Name', 500, true);
this.newColumn('fileSize', '', 'Size', 100, true);
this.newColumn('nbSeeders', '', 'Seeders', 100, true);
this.newColumn('nbLeechers', '', 'Leechers', 100, true);
this.newColumn('siteUrl', '', 'Search engine', 250, true);
this.initColumnsFunctions();
},
@ -1747,10 +1747,10 @@ window.qBittorrent.DynamicTable = (function() {
Extends: DynamicTable,
initColumns: function() {
this.newColumn('fullName', '', 'QBT_TR(Name)QBT_TR[CONTEXT=SearchPluginsTable]', 175, true);
this.newColumn('version', '', 'QBT_TR(Version)QBT_TR[CONTEXT=SearchPluginsTable]', 100, true);
this.newColumn('url', '', 'QBT_TR(Url)QBT_TR[CONTEXT=SearchPluginsTable]', 175, true);
this.newColumn('enabled', '', 'QBT_TR(Enabled)QBT_TR[CONTEXT=SearchPluginsTable]', 100, true);
this.newColumn('fullName', '', 'Name', 175, true);
this.newColumn('version', '', 'Version', 100, true);
this.newColumn('url', '', 'Url', 175, true);
this.newColumn('enabled', '', 'Enabled', 100, true);
this.initColumnsFunctions();
},
@ -1759,14 +1759,14 @@ window.qBittorrent.DynamicTable = (function() {
this.columns['enabled'].updateTd = function(td, row) {
const value = this.getRowValue(row);
if (value) {
td.set('text', 'QBT_TR(Yes)QBT_TR[CONTEXT=SearchPluginsTable]');
td.set('title', 'QBT_TR(Yes)QBT_TR[CONTEXT=SearchPluginsTable]');
td.set('text', 'Yes');
td.set('title', 'Yes');
td.getParent("tr").addClass("green");
td.getParent("tr").removeClass("red");
}
else {
td.set('text', 'QBT_TR(No)QBT_TR[CONTEXT=SearchPluginsTable]');
td.set('title', 'QBT_TR(No)QBT_TR[CONTEXT=SearchPluginsTable]');
td.set('text', 'No');
td.set('title', 'No');
td.getParent("tr").addClass("red");
td.getParent("tr").removeClass("green");
}
@ -1782,14 +1782,14 @@ window.qBittorrent.DynamicTable = (function() {
Extends: DynamicTable,
initColumns: function() {
this.newColumn('tier', '', 'QBT_TR(Tier)QBT_TR[CONTEXT=TrackerListWidget]', 35, true);
this.newColumn('url', '', 'QBT_TR(URL)QBT_TR[CONTEXT=TrackerListWidget]', 250, true);
this.newColumn('status', '', 'QBT_TR(Status)QBT_TR[CONTEXT=TrackerListWidget]', 125, true);
this.newColumn('peers', '', 'QBT_TR(Peers)QBT_TR[CONTEXT=TrackerListWidget]', 75, true);
this.newColumn('seeds', '', 'QBT_TR(Seeds)QBT_TR[CONTEXT=TrackerListWidget]', 75, true);
this.newColumn('leeches', '', 'QBT_TR(Leeches)QBT_TR[CONTEXT=TrackerListWidget]', 75, true);
this.newColumn('downloaded', '', 'QBT_TR(Times Downloaded)QBT_TR[CONTEXT=TrackerListWidget]', 100, true);
this.newColumn('message', '', 'QBT_TR(Message)QBT_TR[CONTEXT=TrackerListWidget]', 250, true);
this.newColumn('tier', '', 'Tier', 35, true);
this.newColumn('url', '', 'URL', 250, true);
this.newColumn('status', '', 'Status', 125, true);
this.newColumn('peers', '', 'Peers', 75, true);
this.newColumn('seeds', '', 'Seeds', 75, true);
this.newColumn('leeches', '', 'Leeches', 75, true);
this.newColumn('downloaded', '', 'Times Downloaded', 100, true);
this.newColumn('message', '', 'Message', 250, true);
},
});
@ -1857,12 +1857,12 @@ window.qBittorrent.DynamicTable = (function() {
initColumns: function() {
this.newColumn('checked', '', '', 50, true);
this.newColumn('name', '', 'QBT_TR(Name)QBT_TR[CONTEXT=TrackerListWidget]', 300, true);
this.newColumn('size', '', 'QBT_TR(Total Size)QBT_TR[CONTEXT=TrackerListWidget]', 75, true);
this.newColumn('progress', '', 'QBT_TR(Progress)QBT_TR[CONTEXT=TrackerListWidget]', 100, true);
this.newColumn('priority', '', 'QBT_TR(Download Priority)QBT_TR[CONTEXT=TrackerListWidget]', 150, true);
this.newColumn('remaining', '', 'QBT_TR(Remaining)QBT_TR[CONTEXT=TrackerListWidget]', 75, true);
this.newColumn('availability', '', 'QBT_TR(Availability)QBT_TR[CONTEXT=TrackerListWidget]', 75, true);
this.newColumn('name', '', 'Name', 300, true);
this.newColumn('size', '', 'Total Size', 75, true);
this.newColumn('progress', '', 'Progress', 100, true);
this.newColumn('priority', '', 'Download Priority', 150, true);
this.newColumn('remaining', '', 'Remaining', 75, true);
this.newColumn('availability', '', 'Availability', 75, true);
this.initColumnsFunctions();
},
@ -2147,7 +2147,7 @@ window.qBittorrent.DynamicTable = (function() {
Extends: DynamicTable,
initColumns: function() {
this.newColumn('state_icon', '', '', 30, true);
this.newColumn('name', '', 'QBT_TR(RSS feeds)QBT_TR[CONTEXT=FeedListWidget]', -1, true);
this.newColumn('name', '', 'RSS feeds', -1, true);
this.columns['state_icon'].dataProperties[0] = '';
@ -2296,7 +2296,7 @@ window.qBittorrent.DynamicTable = (function() {
const RssArticleTable = new Class({
Extends: DynamicTable,
initColumns: function() {
this.newColumn('name', '', 'QBT_TR(Torrents: (double-click to download))QBT_TR[CONTEXT=RSSWidget]', -1, true);
this.newColumn('name', '', 'Torrents: (double-click to download)', -1, true);
},
setupHeaderMenu: function() {},
setupHeaderEvents: function() {},

View File

@ -53,17 +53,17 @@ window.qBittorrent.Misc = (function() {
*/
const friendlyUnit = function(value, isSpeed) {
const units = [
"QBT_TR(B)QBT_TR[CONTEXT=misc]",
"QBT_TR(KiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(MiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(GiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(TiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(PiB)QBT_TR[CONTEXT=misc]",
"QBT_TR(EiB)QBT_TR[CONTEXT=misc]"
"B",
"KiB",
"MiB",
"GiB",
"TiB",
"PiB",
"EiB"
];
if ((value === undefined) || (value === null) || (value < 0))
return "QBT_TR(Unknown)QBT_TR[CONTEXT=misc]";
return "Unknown";
let i = 0;
while (value >= 1024.0 && i < 6) {
@ -91,7 +91,7 @@ window.qBittorrent.Misc = (function() {
}
if (isSpeed)
ret += "QBT_TR(/s)QBT_TR[CONTEXT=misc]";
ret += "/s";
return ret;
};
@ -104,21 +104,21 @@ window.qBittorrent.Misc = (function() {
if (seconds === 0)
return "0";
if (seconds < 60)
return "QBT_TR(< 1m)QBT_TR[CONTEXT=misc]";
return "< 1m";
let minutes = seconds / 60;
if (minutes < 60)
return "QBT_TR(%1m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(minutes));
return "%1m".replace("%1", parseInt(minutes));
let hours = minutes / 60;
minutes = minutes % 60;
if (hours < 24)
return "QBT_TR(%1h %2m)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(hours)).replace("%2", parseInt(minutes));
return "%1h %2m".replace("%1", parseInt(hours)).replace("%2", parseInt(minutes));
let days = hours / 24;
hours = hours % 24;
if (days < 365)
return "QBT_TR(%1d %2h)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(days)).replace("%2", parseInt(hours));
return "%1d %2h".replace("%1", parseInt(days)).replace("%2", parseInt(hours));
const years = days / 365;
days = days % 365;
return "QBT_TR(%1y %2d)QBT_TR[CONTEXT=misc]".replace("%1", parseInt(years)).replace("%2", parseInt(days));
return "%1y %2d".replace("%1", parseInt(years)).replace("%2", parseInt(days));
};
const friendlyPercentage = function(value) {

View File

@ -128,7 +128,7 @@ const initializeWindows = function() {
new MochaUI.Window({
id: id,
title: "QBT_TR(Download from URLs)QBT_TR[CONTEXT=downloadFromURL]",
title: "Download from URLs",
loadMethod: 'iframe',
contentURL: contentUri.toString(),
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
@ -151,7 +151,7 @@ const initializeWindows = function() {
const id = 'preferencesPage';
new MochaUI.Window({
id: id,
title: "QBT_TR(Options)QBT_TR[CONTEXT=OptionsDialog]",
title: "Options",
loadMethod: 'xhr',
toolbar: true,
contentURL: new URI("views/preferences.html").toString(),
@ -176,7 +176,7 @@ const initializeWindows = function() {
const id = 'uploadPage';
new MochaUI.Window({
id: id,
title: "QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]",
title: "Upload local torrent",
loadMethod: 'iframe',
contentURL: new URI("upload.html").toString(),
addClass: 'windowFrame', // fixes iframe scrolling on iOS Safari
@ -196,7 +196,7 @@ const initializeWindows = function() {
globalUploadLimitFN = function() {
new MochaUI.Window({
id: 'uploadLimitPage',
title: "QBT_TR(Global Upload Speed Limit)QBT_TR[CONTEXT=MainWindow]",
title: "Global Upload Speed Limit",
loadMethod: 'iframe',
contentURL: new URI("uploadlimit.html").setData("hashes", "global").toString(),
scrollbars: false,
@ -214,7 +214,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'uploadLimitPage',
title: "QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]",
title: "Torrent Upload Speed Limiting",
loadMethod: 'iframe',
contentURL: new URI("uploadlimit.html").setData("hashes", hashes.join("|")).toString(),
scrollbars: false,
@ -254,7 +254,7 @@ const initializeWindows = function() {
const orig = torrentsHaveSameShareRatio ? shareRatio : "";
new MochaUI.Window({
id: 'shareRatioPage',
title: "QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDialog]",
title: "Torrent Upload/Download Ratio Limiting",
loadMethod: 'iframe',
contentURL: new URI("shareratio.html").setData("hashes", hashes.join("|")).setData("orig", orig).toString(),
scrollbars: false,
@ -328,7 +328,7 @@ const initializeWindows = function() {
globalDownloadLimitFN = function() {
new MochaUI.Window({
id: 'downloadLimitPage',
title: "QBT_TR(Global Download Speed Limit)QBT_TR[CONTEXT=MainWindow]",
title: "Global Download Speed Limit",
loadMethod: 'iframe',
contentURL: new URI("downloadlimit.html").setData("hashes", "global").toString(),
scrollbars: false,
@ -345,7 +345,7 @@ const initializeWindows = function() {
const id = 'statisticspage';
new MochaUI.Window({
id: id,
title: 'QBT_TR(Statistics)QBT_TR[CONTEXT=StatsDialog]',
title: 'Statistics',
loadMethod: 'xhr',
contentURL: new URI("views/statistics.html").toString(),
maximizable: false,
@ -363,7 +363,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'downloadLimitPage',
title: "QBT_TR(Torrent Download Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]",
title: "Torrent Download Speed Limiting",
loadMethod: 'iframe',
contentURL: new URI("downloadlimit.html").setData("hashes", hashes.join("|")).toString(),
scrollbars: false,
@ -382,7 +382,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'confirmDeletionPage',
title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]",
title: "Remove torrent(s)",
loadMethod: 'iframe',
contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).setData("deleteFiles", deleteFiles).toString(),
scrollbars: false,
@ -486,7 +486,7 @@ const initializeWindows = function() {
new MochaUI.Window({
id: 'setLocationPage',
title: "QBT_TR(Set location)QBT_TR[CONTEXT=TransferListWidget]",
title: "Set location",
loadMethod: 'iframe',
contentURL: new URI("setlocation.html").setData("hashes", hashes.join('|')).setData("path", encodeURIComponent(row.full_data.save_path)).toString(),
scrollbars: false,
@ -508,7 +508,7 @@ const initializeWindows = function() {
if (row) {
new MochaUI.Window({
id: 'renamePage',
title: "QBT_TR(Rename)QBT_TR[CONTEXT=TransferListWidget]",
title: "Rename",
loadMethod: 'iframe',
contentURL: new URI("rename.html").setData("hash", hash).setData("name", row.full_data.name).toString(),
scrollbars: false,
@ -529,7 +529,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'newCategoryPage',
title: "QBT_TR(New Category)QBT_TR[CONTEXT=TransferListWidget]",
title: "New Category",
loadMethod: 'iframe',
contentURL: new URI("newcategory.html").setData("action", action).setData("hashes", hashes.join('|')).toString(),
scrollbars: false,
@ -564,7 +564,7 @@ const initializeWindows = function() {
const action = "create";
new MochaUI.Window({
id: 'newCategoryPage',
title: "QBT_TR(New Category)QBT_TR[CONTEXT=CategoryFilterWidget]",
title: "New Category",
loadMethod: 'iframe',
contentURL: new URI("newcategory.html").setData("action", action).toString(),
scrollbars: false,
@ -584,7 +584,7 @@ const initializeWindows = function() {
const savePath = category_list[categoryHash].savePath;
new MochaUI.Window({
id: 'editCategoryPage',
title: "QBT_TR(Edit Category)QBT_TR[CONTEXT=TransferListWidget]",
title: "Edit Category",
loadMethod: 'iframe',
contentURL: new URI('newcategory.html').setData("action", action).setData("categoryName", categoryName).setData("savePath", savePath).toString(),
scrollbars: false,
@ -659,7 +659,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'confirmDeletionPage',
title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]",
title: "Remove torrent(s)",
loadMethod: 'iframe',
contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).toString(),
scrollbars: false,
@ -679,7 +679,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'newTagPage',
title: "QBT_TR(Add Tags)QBT_TR[CONTEXT=TransferListWidget]",
title: "Add Tags",
loadMethod: 'iframe',
contentURL: new URI("newtag.html").setData("action", action).setData("hashes", hashes.join("|")).toString(),
scrollbars: false,
@ -725,7 +725,7 @@ const initializeWindows = function() {
const action = "create";
new MochaUI.Window({
id: 'newTagPage',
title: "QBT_TR(New Tag)QBT_TR[CONTEXT=TagFilterWidget]",
title: "New Tag",
loadMethod: 'iframe',
contentURL: new URI("newtag.html").setData("action", action).toString(),
scrollbars: false,
@ -800,7 +800,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'confirmDeletionPage',
title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]",
title: "Remove torrent(s)",
loadMethod: 'iframe',
contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).toString(),
scrollbars: false,
@ -886,7 +886,7 @@ const initializeWindows = function() {
if (hashes.length) {
new MochaUI.Window({
id: 'confirmDeletionPage',
title: "QBT_TR(Remove torrent(s))QBT_TR[CONTEXT=confirmDeletionDlg]",
title: "Remove torrent(s)",
loadMethod: 'iframe',
contentURL: new URI("confirmdeletion.html").setData("hashes", hashes.join("|")).toString(),
scrollbars: false,
@ -982,7 +982,7 @@ const initializeWindows = function() {
addClickEvent('pauseAll', (e) => {
new Event(e).stop();
if (confirm('QBT_TR(Would you like to pause all torrents?)QBT_TR[CONTEXT=MainWindow]')) {
if (confirm('Would you like to pause all torrents?')) {
new Request({
url: 'api/v2/torrents/pause',
method: 'post',
@ -997,7 +997,7 @@ const initializeWindows = function() {
addClickEvent('resumeAll', (e) => {
new Event(e).stop();
if (confirm('QBT_TR(Would you like to resume all torrents?)QBT_TR[CONTEXT=MainWindow]')) {
if (confirm('Would you like to resume all torrents?')) {
new Request({
url: 'api/v2/torrents/resume',
method: 'post',
@ -1054,7 +1054,7 @@ const initializeWindows = function() {
const id = 'aboutpage';
new MochaUI.Window({
id: id,
title: 'QBT_TR(About qBittorrent)QBT_TR[CONTEXT=AboutDialog]',
title: 'About qBittorrent',
loadMethod: 'xhr',
contentURL: new URI("views/about.html").toString(),
require: {
@ -1084,12 +1084,12 @@ const initializeWindows = function() {
addClickEvent('shutdown', function(e) {
new Event(e).stop();
if (confirm('QBT_TR(Are you sure you want to quit qBittorrent?)QBT_TR[CONTEXT=MainWindow]')) {
if (confirm('Are you sure you want to quit qBittorrent?')) {
new Request({
url: 'api/v2/app/shutdown',
method: 'post',
onSuccess: function() {
document.write('<!doctype html><html lang="${LANG}"><head> <meta charset="UTF-8"> <title>QBT_TR(qBittorrent has been shutdown)QBT_TR[CONTEXT=HttpServer]</title></head><body> <h1 style="text-align: center;">QBT_TR(qBittorrent has been shutdown)QBT_TR[CONTEXT=HttpServer]</h1></body></html>');
document.write('<!doctype html><html lang="${LANG}"><head> <meta charset="UTF-8"> <title>qBittorrent has been shutdown)QBT_TR[CONTEXT=HttpServer]</title></head><body> <h1 style="text-align: center;">QBT_TR(qBittorrent has been shutdown</h1></body></html>');
document.close();
stop();
}

View File

@ -185,13 +185,13 @@ window.qBittorrent.PropFiles = (function() {
select.addClass('combo_priority');
select.addEvent('change', fileComboboxChanged);
createPriorityOptionElement(FilePriority.Ignored, (FilePriority.Ignored === selectedPriority), 'QBT_TR(Do not download)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select);
createPriorityOptionElement(FilePriority.Normal, (FilePriority.Normal === selectedPriority), 'QBT_TR(Normal)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select);
createPriorityOptionElement(FilePriority.High, (FilePriority.High === selectedPriority), 'QBT_TR(High)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select);
createPriorityOptionElement(FilePriority.Maximum, (FilePriority.Maximum === selectedPriority), 'QBT_TR(Maximum)QBT_TR[CONTEXT=PropListDelegate]').injectInside(select);
createPriorityOptionElement(FilePriority.Ignored, (FilePriority.Ignored === selectedPriority), 'Do not download').injectInside(select);
createPriorityOptionElement(FilePriority.Normal, (FilePriority.Normal === selectedPriority), 'Normal').injectInside(select);
createPriorityOptionElement(FilePriority.High, (FilePriority.High === selectedPriority), 'High').injectInside(select);
createPriorityOptionElement(FilePriority.Maximum, (FilePriority.Maximum === selectedPriority), 'Maximum').injectInside(select);
// "Mixed" priority is for display only; it shouldn't be selectable
const mixedPriorityOption = createPriorityOptionElement(FilePriority.Mixed, (FilePriority.Mixed === selectedPriority), 'QBT_TR(Mixed)QBT_TR[CONTEXT=PropListDelegate]');
const mixedPriorityOption = createPriorityOptionElement(FilePriority.Mixed, (FilePriority.Mixed === selectedPriority), 'Mixed');
mixedPriorityOption.set('disabled', true);
mixedPriorityOption.injectInside(select);
@ -556,7 +556,7 @@ window.qBittorrent.PropFiles = (function() {
new MochaUI.Window({
id: 'renamePage',
title: "QBT_TR(Renaming)QBT_TR[CONTEXT=TorrentContentTreeView]",
title: "Renaming",
loadMethod: 'iframe',
contentURL: 'rename_file.html?hash=' + hash + '&isFolder=' + node.isFolder
+ '&path=' + encodeURIComponent(path),

View File

@ -93,7 +93,7 @@ window.qBittorrent.PropGeneral = (function() {
noCache: true,
method: 'get',
onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
$('error_div').set('html', 'qBittorrent client is not reachable');
clearTimeout(loadTorrentDataTimer);
loadTorrentDataTimer = loadTorrentData.delay(10000);
},
@ -103,7 +103,7 @@ window.qBittorrent.PropGeneral = (function() {
let temp;
// Update Torrent data
if (data.seeding_time > 0)
temp = "QBT_TR(%1 (seeded for %2))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (seeded for %2)"
.replace("%1", window.qBittorrent.Misc.friendlyDuration(data.time_elapsed))
.replace("%2", window.qBittorrent.Misc.friendlyDuration(data.seeding_time));
else
@ -112,27 +112,27 @@ window.qBittorrent.PropGeneral = (function() {
$('eta').set('html', window.qBittorrent.Misc.friendlyDuration(data.eta, window.qBittorrent.Misc.MAX_ETA));
temp = "QBT_TR(%1 (%2 max))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 max)"
.replace("%1", data.nb_connections)
.replace("%2", data.nb_connections_limit < 0 ? "∞" : data.nb_connections_limit);
$('nb_connections').set('html', temp);
temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 this session)"
.replace("%1", window.qBittorrent.Misc.friendlyUnit(data.total_downloaded))
.replace("%2", window.qBittorrent.Misc.friendlyUnit(data.total_downloaded_session));
$('total_downloaded').set('html', temp);
temp = "QBT_TR(%1 (%2 this session))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 this session)"
.replace("%1", window.qBittorrent.Misc.friendlyUnit(data.total_uploaded))
.replace("%2", window.qBittorrent.Misc.friendlyUnit(data.total_uploaded_session));
$('total_uploaded').set('html', temp);
temp = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 avg.)"
.replace("%1", window.qBittorrent.Misc.friendlyUnit(data.dl_speed, true))
.replace("%2", window.qBittorrent.Misc.friendlyUnit(data.dl_speed_avg, true));
$('dl_speed').set('html', temp);
temp = "QBT_TR(%1 (%2 avg.))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 avg.)"
.replace("%1", window.qBittorrent.Misc.friendlyUnit(data.up_speed, true))
.replace("%2", window.qBittorrent.Misc.friendlyUnit(data.up_speed_avg, true));
$('up_speed').set('html', temp);
@ -145,12 +145,12 @@ window.qBittorrent.PropGeneral = (function() {
$('total_wasted').set('html', window.qBittorrent.Misc.friendlyUnit(data.total_wasted));
temp = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 total)"
.replace("%1", data.seeds)
.replace("%2", data.seeds_total);
$('seeds').set('html', temp);
temp = "QBT_TR(%1 (%2 total))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 (%2 total)"
.replace("%1", data.peers)
.replace("%2", data.peers_total);
$('peers').set('html', temp);
@ -162,25 +162,25 @@ window.qBittorrent.PropGeneral = (function() {
if (data.last_seen != -1)
temp = new Date(data.last_seen * 1000).toLocaleString();
else
temp = "QBT_TR(Never)QBT_TR[CONTEXT=PropertiesWidget]";
temp = "Never";
$('last_seen').set('html', temp);
$('total_size').set('html', window.qBittorrent.Misc.friendlyUnit(data.total_size));
if (data.pieces_num != -1)
temp = "QBT_TR(%1 x %2 (have %3))QBT_TR[CONTEXT=PropertiesWidget]"
temp = "%1 x %2 (have %3)"
.replace("%1", data.pieces_num)
.replace("%2", window.qBittorrent.Misc.friendlyUnit(data.piece_size))
.replace("%3", data.pieces_have);
else
temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
temp = "Unknown";
$('pieces').set('html', temp);
$('created_by').set('text', data.created_by);
if (data.addition_date != -1)
temp = new Date(data.addition_date * 1000).toLocaleString();
else
temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
temp = "Unknown";
$('addition_date').set('html', temp);
if (data.completion_date != -1)
@ -193,17 +193,17 @@ window.qBittorrent.PropGeneral = (function() {
if (data.creation_date != -1)
temp = new Date(data.creation_date * 1000).toLocaleString();
else
temp = "QBT_TR(Unknown)QBT_TR[CONTEXT=HttpServer]";
temp = "Unknown";
$('creation_date').set('html', temp);
if (data.infohash_v1 === "")
temp = "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]";
temp = "N/A";
else
temp = data.infohash_v1;
$('torrent_hash_v1').set('html', temp);
if (data.infohash_v2 === "")
temp = "QBT_TR(N/A)QBT_TR[CONTEXT=PropertiesWidget]";
temp = "N/A";
else
temp = data.infohash_v2;
$('torrent_hash_v2').set('html', temp);
@ -226,7 +226,7 @@ window.qBittorrent.PropGeneral = (function() {
noCache: true,
method: 'get',
onFailure: function() {
$('error_div').set('html', 'QBT_TR(qBittorrent client is not reachable)QBT_TR[CONTEXT=HttpServer]');
$('error_div').set('html', 'qBittorrent client is not reachable');
clearTimeout(loadTorrentDataTimer);
loadTorrentDataTimer = loadTorrentData.delay(10000);
},

View File

@ -124,7 +124,7 @@ window.qBittorrent.PropPeers = (function() {
new MochaUI.Window({
id: 'addPeersPage',
title: "QBT_TR(Add Peers)QBT_TR[CONTEXT=PeersAdditionDialog]",
title: "Add Peers",
loadMethod: 'iframe',
contentURL: 'addpeers.html?hash=' + hash,
scrollbars: false,
@ -141,7 +141,7 @@ window.qBittorrent.PropPeers = (function() {
if (selectedPeers.length === 0)
return;
if (confirm('QBT_TR(Are you sure you want to permanently ban the selected peers?)QBT_TR[CONTEXT=PeerListWidget]')) {
if (confirm('Are you sure you want to permanently ban the selected peers?')) {
new Request({
url: 'api/v2/transfer/banPeers',
noCache: true,

View File

@ -79,19 +79,19 @@ window.qBittorrent.PropTrackers = (function() {
let status;
switch (tracker.status) {
case 0:
status = "QBT_TR(Disabled)QBT_TR[CONTEXT=TrackerListWidget]";
status = "Disabled";
break;
case 1:
status = "QBT_TR(Not contacted yet)QBT_TR[CONTEXT=TrackerListWidget]";
status = "Not contacted yet";
break;
case 2:
status = "QBT_TR(Working)QBT_TR[CONTEXT=TrackerListWidget]";
status = "Working";
break;
case 3:
status = "QBT_TR(Updating...)QBT_TR[CONTEXT=TrackerListWidget]";
status = "Updating...";
break;
case 4:
status = "QBT_TR(Not working)QBT_TR[CONTEXT=TrackerListWidget]";
status = "Not working";
break;
}
@ -101,9 +101,9 @@ window.qBittorrent.PropTrackers = (function() {
url: tracker.url,
status: status,
peers: tracker.num_peers,
seeds: (tracker.num_seeds >= 0) ? tracker.num_seeds : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]",
leeches: (tracker.num_leeches >= 0) ? tracker.num_leeches : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]",
downloaded: (tracker.num_downloaded >= 0) ? tracker.num_downloaded : "QBT_TR(N/A)QBT_TR[CONTEXT=TrackerListWidget]",
seeds: (tracker.num_seeds >= 0) ? tracker.num_seeds : "N/A",
leeches: (tracker.num_leeches >= 0) ? tracker.num_leeches : "N/A",
downloaded: (tracker.num_downloaded >= 0) ? tracker.num_downloaded : "N/A",
message: tracker.msg
};
@ -169,7 +169,7 @@ window.qBittorrent.PropTrackers = (function() {
return;
new MochaUI.Window({
id: 'trackersPage',
title: "QBT_TR(Add trackers)QBT_TR[CONTEXT=TrackersAdditionDialog]",
title: "Add trackers",
loadMethod: 'iframe',
contentURL: 'addtrackers.html?hash=' + current_hash,
scrollbars: true,
@ -193,7 +193,7 @@ window.qBittorrent.PropTrackers = (function() {
const trackerUrl = encodeURIComponent(element.childNodes[1].innerText);
new MochaUI.Window({
id: 'trackersPage',
title: "QBT_TR(Tracker editing)QBT_TR[CONTEXT=TrackerListWidget]",
title: "Tracker editing",
loadMethod: 'iframe',
contentURL: 'edittracker.html?hash=' + current_hash + '&url=' + trackerUrl,
scrollbars: true,

View File

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

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Set location)QBT_TR[CONTEXT=HttpServer]</title>
<title>Set location</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -42,7 +42,7 @@
// check field
const location = $('setLocation').value.trim();
if ((location === null) || (location === "")) {
$('error_div').set('text', 'QBT_TR(Save path is empty)QBT_TR[CONTEXT=TorrentsController]');
$('error_div').set('text', 'Save path is empty');
return false;
}
@ -68,11 +68,11 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<p style="font-weight: bold;">QBT_TR(Location)QBT_TR[CONTEXT=TransferListWidget]:</p>
<p style="font-weight: bold;">Location:</p>
<input type="text" id="setLocation" autocorrect="off" autocapitalize="none" style="width: 99%;" />
<div style="float: none; width: 99%;" id="error_div">&nbsp;</div>
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="setLocationButton" />
<input type="button" value="Save" id="setLocationButton" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Torrent Upload/Download Ratio Limiting)QBT_TR[CONTEXT=UpDownRatioDialog]</title>
<title>Torrent Upload/Download Ratio Limiting</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -153,22 +153,22 @@
<body>
<div style="padding: 10px 10px 0px 10px;">
<input type="radio" name="shareLimit" id="default" value="default" onchange="shareLimitChanged()" checked style="margin-bottom: 5px;" />QBT_TR(Use global share limit)QBT_TR[CONTEXT=UpDownRatioDialog]</br>
<input type="radio" name="shareLimit" value="none" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set no share limit)QBT_TR[CONTEXT=UpDownRatioDialog]</br>
<input type="radio" name="shareLimit" value="custom" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />QBT_TR(Set share limit to)QBT_TR[CONTEXT=UpDownRatioDialog]</br>
<input type="radio" name="shareLimit" id="default" value="default" onchange="shareLimitChanged()" checked style="margin-bottom: 5px;" />Use global share limit</br>
<input type="radio" name="shareLimit" value="none" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />Set no share limit</br>
<input type="radio" name="shareLimit" value="custom" onchange="shareLimitChanged()" style="margin-bottom: 5px;" />Set share limit to</br>
<div style="margin-left: 40px; margin-bottom: 5px;">
<input type="checkbox" id="setRatio" class="shareLimitInput" onclick="enableInputBoxes()" />
<label for="setRatio">QBT_TR(ratio)QBT_TR[CONTEXT=UpDownRatioDialog]</label>
<label for="setRatio">ratio</label>
<input type="number" id="ratio" value="0.00" step=".01" min="0" max="9999" class="shareLimitInput" />
</div>
<div style="margin-left: 40px; margin-bottom: 5px;">
<input type="checkbox" id="setMinutes" class="shareLimitInput" onclick="enableInputBoxes()" />
<label for="setMinutes">QBT_TR(minutes)QBT_TR[CONTEXT=UpDownRatioDialog]</label>
<label for="setMinutes">minutes</label>
<input type="number" id="minutes" value="0" step="1" min="0" max="525600" class="shareLimitInput" />
</div>
<div style="text-align: center; padding-top: 10px;">
<input type="button" value="QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]" id="save" />
<input type="button" value="Save" id="save" />
</div>
</div>
</body>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Upload local torrent)QBT_TR[CONTEXT=HttpServer]</title>
<title>Upload local torrent</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<link rel="stylesheet" href="css/Window.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
@ -20,18 +20,18 @@
<table style="margin: auto;">
<tr>
<td>
<label for="autoTMM">QBT_TR(Torrent Management Mode:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="autoTMM">Torrent Management Mode:</label>
</td>
<td>
<select id="autoTMM" name="autoTMM" onchange="qBittorrent.Download.changeTMM(this)">
<option selected value="false">QBT_TR(Manual)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="true">QBT_TR(Automatic)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option selected value="false">Manual</option>
<option value="true">Automatic</option>
</select>
</td>
</tr>
<tr>
<td>
<label for="savepath">QBT_TR(Save files to location:)QBT_TR[CONTEXT=HttpServer]</label>
<label for="savepath">Save files to location:</label>
</td>
<td>
<input type="text" id="savepath" name="savepath" style="width: 16em;" />
@ -39,7 +39,7 @@
</tr>
<tr>
<td>
<label for="rename">QBT_TR(Rename torrent)QBT_TR[CONTEXT=HttpServer]</label>
<label for="rename">Rename torrent</label>
</td>
<td>
<input type="text" id="rename" name="rename" style="width: 16em;" />
@ -47,7 +47,7 @@
</tr>
<tr>
<td>
<label for="category">QBT_TR(Category:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="category">Category:</label>
</td>
<td>
<div class="select-watched-folder-editable">
@ -60,7 +60,7 @@
</tr>
<tr>
<td>
<label for="startTorrent">QBT_TR(Start torrent)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="startTorrent">Start torrent</label>
</td>
<td>
<input type="hidden" id="startTorrentHidden" name="paused" />
@ -69,19 +69,19 @@
</tr>
<tr>
<td>
<label for="stopCondition">QBT_TR(Stop condition:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="stopCondition">Stop condition:</label>
</td>
<td>
<select id="stopCondition" name="stopCondition">
<option selected value="None">QBT_TR(None)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="MetadataReceived">QBT_TR(Metadata received)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="FilesChecked">QBT_TR(Files checked)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option selected value="None">None</option>
<option value="MetadataReceived">Metadata received</option>
<option value="FilesChecked">Files checked</option>
</select>
</td>
</tr>
<tr>
<td>
<label for="skip_checking">QBT_TR(Skip hash check)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="skip_checking">Skip hash check</label>
</td>
<td>
<input type="checkbox" id="skip_checking" name="skip_checking" value="true" />
@ -89,19 +89,19 @@
</tr>
<tr>
<td>
<label for="contentLayout">QBT_TR(Content layout:)QBT_TR[CONTEXT=AddNewTorrentDialog]</label>
<label for="contentLayout">Content layout:</label>
</td>
<td>
<select id="contentLayout" name="contentLayout">
<option selected value="Original">QBT_TR(Original)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="Subfolder">QBT_TR(Create subfolder)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option value="NoSubfolder">QBT_TR(Don't create subfolder)QBT_TR[CONTEXT=AddNewTorrentDialog]</option>
<option selected value="Original">Original</option>
<option value="Subfolder">Create subfolder</option>
<option value="NoSubfolder">Don't create subfolder</option>
</select>
</td>
</tr>
<tr>
<td>
<label for="sequentialDownload">QBT_TR(Download in sequential order)QBT_TR[CONTEXT=TransferListWidget]</label>
<label for="sequentialDownload">Download in sequential order</label>
</td>
<td>
<input type="checkbox" id="sequentialDownload" name="sequentialDownload" value="true" />
@ -109,7 +109,7 @@
</tr>
<tr>
<td>
<label for="firstLastPiecePrio">QBT_TR(Download first and last pieces first)QBT_TR[CONTEXT=TransferListWidget]</label>
<label for="firstLastPiecePrio">Download first and last pieces first</label>
</td>
<td>
<input type="checkbox" id="firstLastPiecePrio" name="firstLastPiecePrio" value="true" />
@ -117,7 +117,7 @@
</tr>
<tr>
<td>
<label for="dlLimitText">QBT_TR(Limit download rate)QBT_TR[CONTEXT=HttpServer]</label>
<label for="dlLimitText">Limit download rate</label>
</td>
<td>
<input type="hidden" id="dlLimitHidden" name="dlLimit" />
@ -126,7 +126,7 @@
</tr>
<tr>
<td>
<label for="upLimitText">QBT_TR(Limit upload rate)QBT_TR[CONTEXT=HttpServer]</label>
<label for="upLimitText">Limit upload rate</label>
</td>
<td>
<input type="hidden" id="upLimitHidden" name="upLimit" />
@ -135,7 +135,7 @@
</tr>
</table>
<div id="submitbutton" style="margin-top: 30px; text-align: center;">
<button type="submit" style="font-size: 1em;">QBT_TR(Upload Torrents)QBT_TR[CONTEXT=HttpServer]</button>
<button type="submit" style="font-size: 1em;">Upload Torrents</button>
</div>
</fieldset>
</form>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>QBT_TR(Torrent Upload Speed Limiting)QBT_TR[CONTEXT=TransferListWidget]</title>
<title>Torrent Upload Speed Limiting</title>
<link rel="stylesheet" href="css/style.css?v=${CACHEID}" type="text/css" />
<script src="scripts/lib/MooTools-Core-1.6.0-compat-compressed.js"></script>
<script src="scripts/lib/MooTools-More-1.6.0-compat-compressed.js"></script>
@ -14,7 +14,7 @@
<body>
<div style="width: 100%; text-align: center; margin: 0 auto; overflow: hidden">
<div id="uplimitSlider" class="slider">
<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 id="uplimitUpdate" class="update">Upload limit:)QBT_TR[CONTEXT=PropertiesWidget] <input id="uplimitUpdatevalue" size="6" placeholder="∞" style="text-align: center;"> <span id="upLimitUnit">QBT_TR(KiB/s</span></div>
<div class="sliderWrapper">
<div id="uplimitSliderknob" class="sliderknob"></div>
<div id="uplimitSliderarea" class="sliderarea"></div>
@ -55,7 +55,7 @@
}
};
</script>
<input type="button" id="applyButton" value="QBT_TR(Apply)QBT_TR[CONTEXT=HttpServer]" onclick="setUpLimit()" />
<input type="button" id="applyButton" value="Apply" onclick="setUpLimit()" />
</div>
<script>

View File

@ -1,56 +1,56 @@
<div id="aboutAboutContent" class="aboutTabContent">
<img src="images/mascot.png" style="float: left;" alt="QBT_TR(qBittorrent Mascot)QBT_TR[CONTEXT=AboutDialog]" />
<img src="images/mascot.png" style="float: left;" alt="qBittorrent Mascot" />
<div>
<img src="images/qbittorrent-tray.svg" style="float: left; height: 1.5em;" alt="QBT_TR(qBittorrent icon)QBT_TR[CONTEXT=AboutDialog]" />
<img src="images/qbittorrent-tray.svg" style="float: left; height: 1.5em;" alt="qBittorrent icon" />
<h3 id="qbittorrentVersion"></h3>
</div>
<p>QBT_TR(An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar.)QBT_TR[CONTEXT=AboutDialog]</p>
<p>An advanced BitTorrent client programmed in C++, based on Qt toolkit and libtorrent-rasterbar.</p>
<p>Copyright © 2006-2022 The qBittorrent project</p>
<table>
<tr>
<td>QBT_TR(Home Page:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Home Page:</td>
<td><a href="https://www.qbittorrent.org" target="_blank">https://www.qbittorrent.org</a></td>
</tr>
<tr>
<td>QBT_TR(Bug Tracker:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Bug Tracker:</td>
<td><a href="http://bugs.qbittorrent.org" target="_blank">http://bugs.qbittorrent.org</a></td>
</tr>
<tr>
<td>QBT_TR(Forum:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Forum:</td>
<td><a href="http://forum.qbittorrent.org" target="_blank">http://forum.qbittorrent.org</a></td>
</tr>
</table>
</div>
<div id="aboutAuthorContent" class="aboutTabContent invisible">
<h3>QBT_TR(Current maintainer)QBT_TR[CONTEXT=AboutDialog]</h3>
<h3>Current maintainer</h3>
<table>
<tr>
<td>QBT_TR(Name:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Name:</td>
<td>Sledgehammer999</td>
</tr>
<tr>
<td>QBT_TR(Nationality:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>QBT_TR(Greece)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Nationality:</td>
<td>Greece</td>
</tr>
<tr>
<td>QBT_TR(E-mail:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>E-mail:</td>
<td><a target="_blank" href="mailto:sledgehammer999@qbittorrent.org">sledgehammer999@qbittorrent.org</a></td>
</tr>
</table>
</br>
<h3>QBT_TR(Original author)QBT_TR[CONTEXT=HttpServer]</h3>
<h3>Original author</h3>
<table>
<tr>
<td>QBT_TR(Name:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Name:</td>
<td>Christophe Dumez</td>
</tr>
<tr>
<td>QBT_TR(Nationality:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>QBT_TR(France)QBT_TR[CONTEXT=AboutDialog]</td>
<td>Nationality:</td>
<td>France</td>
</tr>
<tr>
<td>QBT_TR(E-mail:)QBT_TR[CONTEXT=AboutDialog]</td>
<td>E-mail:</td>
<td><a target="_blank" href="mailto:chris@qbittorrent.org">chris@qbittorrent.org</a></td>
</tr>
</table>
@ -814,7 +814,7 @@
</div>
<div id="aboutSoftwareUsedContent" class="aboutTabContent invisible">
<p>QBT_TR(qBittorrent was built with the following libraries:)QBT_TR[CONTEXT=AboutDialog]</p>
<p>qBittorrent was built with the following libraries:</p>
<table style="margin-left: 20px;">
<tr>
<td>Qt:</td>
@ -837,7 +837,7 @@
<td><span id="zlibVersion"></span></td>
</tr>
</table>
<p>QBT_TR(The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License)QBT_TR[CONTEXT=AboutDialog] (<a href="https://db-ip.com/" target="_blank" rel="noopener ">https://db-ip.com/</a>)</p>
<p>The free IP to Country Lite database by DB-IP is used for resolving the countries of peers. The database is licensed under the Creative Commons Attribution 4.0 International License (<a href="https://db-ip.com/" target="_blank" rel="noopener ">https://db-ip.com/</a>)</p>
</div>
<script>
@ -845,7 +845,7 @@
(function() {
$('qbittorrentVersion').innerText = ("qBittorrent " + qbtVersion()
+ " QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]");
+ " Web UI");
new Request.JSON({
url: 'api/v2/app/buildInfo',

View File

@ -1,11 +1,11 @@
<div class="toolbarTabs">
<ul id="aboutTabs" class="tab-menu">
<li id="aboutAboutLink" class="selected"><a>QBT_TR(About)QBT_TR[CONTEXT=AboutDialog]</a></li>
<li id="aboutAuthorLink"><a>QBT_TR(Authors)QBT_TR[CONTEXT=AboutDialog]</a></li>
<li id="aboutSpecialThanksLink"><a>QBT_TR(Special Thanks)QBT_TR[CONTEXT=AboutDialog]</a></li>
<li id="aboutTranslatorsLink"><a>QBT_TR(Translators)QBT_TR[CONTEXT=AboutDialog]</a></li>
<li id="aboutLicenseLink"><a>QBT_TR(License)QBT_TR[CONTEXT=AboutDialog]</a></li>
<li id="aboutSoftwareUsedLink"><a>QBT_TR(Software Used)QBT_TR[CONTEXT=AboutDialog]</a></li>
<li id="aboutAboutLink" class="selected"><a>About</a></li>
<li id="aboutAuthorLink"><a>Authors</a></li>
<li id="aboutSpecialThanksLink"><a>Special Thanks</a></li>
<li id="aboutTranslatorsLink"><a>Translators</a></li>
<li id="aboutLicenseLink"><a>License</a></li>
<li id="aboutSoftwareUsedLink"><a>Software Used</a></li>
</ul>
<div class="clear"></div>
</div>

View File

@ -1,40 +1,40 @@
<div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('status');">
<img src="images/go-down.svg">QBT_TR(Status)QBT_TR[CONTEXT=TransferListFiltersWidget]
<img src="images/go-down.svg">Status
</span>
<ul class="filterList" id="statusFilterList">
<li id="all_filter"><a href="#" onclick="setFilter('all');return false;"><img src="images/filter-all.svg" alt="All" />QBT_TR(All (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="downloading_filter"><a href="#" onclick="setFilter('downloading');return false;"><img src="images/downloading.svg" alt="Downloading" />QBT_TR(Downloading (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="seeding_filter"><a href="#" onclick="setFilter('seeding');return false;"><img src="images/upload.svg" alt="Seeding" />QBT_TR(Seeding (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="completed_filter"><a href="#" onclick="setFilter('completed');return false;"><img src="images/checked-completed.svg" alt="Completed" />QBT_TR(Completed (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="resumed_filter"><a href="#" onclick="setFilter('resumed');return false;"><img src="images/torrent-start.svg" alt="Resumed" />QBT_TR(Resumed (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="paused_filter"><a href="#" onclick="setFilter('paused');return false;"><img src="images/torrent-stop.svg" alt="Paused" />QBT_TR(Paused (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="active_filter"><a href="#" onclick="setFilter('active');return false;"><img src="images/filter-active.svg" alt="Active" />QBT_TR(Active (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="inactive_filter"><a href="#" onclick="setFilter('inactive');return false;"><img src="images/filter-inactive.svg" alt="Inactive" />QBT_TR(Inactive (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="stalled_filter"><a href="#" onclick="setFilter('stalled');return false;"><img src="images/filter-stalled.svg" alt="Stalled" />QBT_TR(Stalled (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="stalled_uploading_filter"><a href="#" onclick="setFilter('stalled_uploading');return false;"><img src="images/stalledUP.svg" alt="Stalled Uploading" />QBT_TR(Stalled Uploading (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="stalled_downloading_filter"><a href="#" onclick="setFilter('stalled_downloading');return false;"><img src="images/stalledDL.svg" alt="Stalled Downloading" />QBT_TR(Stalled Downloading (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="checking_filter"><a href="#" onclick="setFilter('checking'); return false;"><img src="images/force-recheck.svg" alt="Checking" />QBT_TR(Checking (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="errored_filter"><a href="#" onclick="setFilter('errored');return false;"><img src="images/error.svg" alt="Errored" />QBT_TR(Errored (0))QBT_TR[CONTEXT=StatusFilterWidget]</a></li>
<li id="all_filter"><a href="#" onclick="setFilter('all');return false;"><img src="images/filter-all.svg" alt="All" />All (0)</a></li>
<li id="downloading_filter"><a href="#" onclick="setFilter('downloading');return false;"><img src="images/downloading.svg" alt="Downloading" />Downloading (0)</a></li>
<li id="seeding_filter"><a href="#" onclick="setFilter('seeding');return false;"><img src="images/upload.svg" alt="Seeding" />Seeding (0)</a></li>
<li id="completed_filter"><a href="#" onclick="setFilter('completed');return false;"><img src="images/checked-completed.svg" alt="Completed" />Completed (0)</a></li>
<li id="resumed_filter"><a href="#" onclick="setFilter('resumed');return false;"><img src="images/torrent-start.svg" alt="Resumed" />Resumed (0)</a></li>
<li id="paused_filter"><a href="#" onclick="setFilter('paused');return false;"><img src="images/torrent-stop.svg" alt="Paused" />Paused (0)</a></li>
<li id="active_filter"><a href="#" onclick="setFilter('active');return false;"><img src="images/filter-active.svg" alt="Active" />Active (0)</a></li>
<li id="inactive_filter"><a href="#" onclick="setFilter('inactive');return false;"><img src="images/filter-inactive.svg" alt="Inactive" />Inactive (0)</a></li>
<li id="stalled_filter"><a href="#" onclick="setFilter('stalled');return false;"><img src="images/filter-stalled.svg" alt="Stalled" />Stalled (0)</a></li>
<li id="stalled_uploading_filter"><a href="#" onclick="setFilter('stalled_uploading');return false;"><img src="images/stalledUP.svg" alt="Stalled Uploading" />Stalled Uploading (0)</a></li>
<li id="stalled_downloading_filter"><a href="#" onclick="setFilter('stalled_downloading');return false;"><img src="images/stalledDL.svg" alt="Stalled Downloading" />Stalled Downloading (0)</a></li>
<li id="checking_filter"><a href="#" onclick="setFilter('checking'); return false;"><img src="images/force-recheck.svg" alt="Checking" />Checking (0)</a></li>
<li id="errored_filter"><a href="#" onclick="setFilter('errored');return false;"><img src="images/error.svg" alt="Errored" />Errored (0)</a></li>
</ul>
</div>
<div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('category');">
<img src="images/go-down.svg">QBT_TR(Categories)QBT_TR[CONTEXT=TransferListFiltersWidget]
<img src="images/go-down.svg">Categories
</span>
<ul class="filterList" id="categoryFilterList">
</ul>
</div>
<div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('tag');">
<img src="images/go-down.svg">QBT_TR(Tags)QBT_TR[CONTEXT=TransferListFiltersWidget]
<img src="images/go-down.svg">Tags
</span>
<ul class="filterList" id="tagFilterList">
</ul>
</div>
<div class="filterWrapper">
<span class="filterTitle" onclick="toggleFilterDisplay('tracker');">
<img src="images/go-down.svg">QBT_TR(Trackers)QBT_TR[CONTEXT=TransferListFiltersWidget]
<img src="images/go-down.svg">Trackers
</span>
<ul class="filterList" id="trackerFilterList">
</ul>

View File

@ -15,13 +15,13 @@
</style>
<div id="installSearchPluginContainer">
<h2>QBT_TR(Plugin path:)QBT_TR[CONTEXT=PluginSourceDlg]</h2>
<h2>Plugin path:</h2>
<div>
<input type="text" id="newPluginPath" placeholder="QBT_TR(URL or local directory)QBT_TR[CONTEXT=PluginSourceDlg]" autocorrect="off" autocapitalize="none" />
<input type="text" id="newPluginPath" placeholder="URL or local directory" autocorrect="off" autocapitalize="none" />
<div style="margin-top: 10px; text-align: center;">
<button id="newPluginCancel" onclick="qBittorrent.SearchPlugins.closeSearchWindow('installSearchPlugin');">QBT_TR(Cancel)QBT_TR[CONTEXT=PluginSourceDlg]</button>
<button id="newPluginOk" onclick="qBittorrent.InstallSearchPlugin.newPluginOk();">QBT_TR(Ok)QBT_TR[CONTEXT=PluginSourceDlg]</button>
<button id="newPluginCancel" onclick="qBittorrent.SearchPlugins.closeSearchWindow('installSearchPlugin');">Cancel</button>
<button id="newPluginOk" onclick="qBittorrent.InstallSearchPlugin.newPluginOk();">Ok</button>
</div>
</div>
</div>

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,13 @@
<!-- preferences -->
<div class="toolbarTabs">
<ul id="preferencesTabs" class="tab-menu">
<li id="PrefDownloadsLink" class="selected"><a>QBT_TR(Downloads)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefConnectionLink"><a>QBT_TR(Connection)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefSpeedLink"><a>QBT_TR(Speed)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefBittorrentLink"><a>QBT_TR(BitTorrent)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefRSSLink"><a>QBT_TR(RSS)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefWebUILink"><a>QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefAdvancedLink"><a>QBT_TR(Advanced)QBT_TR[CONTEXT=OptionsDialog]</a></li>
<li id="PrefDownloadsLink" class="selected"><a>Downloads</a></li>
<li id="PrefConnectionLink"><a>Connection</a></li>
<li id="PrefSpeedLink"><a>Speed</a></li>
<li id="PrefBittorrentLink"><a>BitTorrent</a></li>
<li id="PrefRSSLink"><a>RSS</a></li>
<li id="PrefWebUILink"><a>Web UI</a></li>
<li id="PrefAdvancedLink"><a>Advanced</a></li>
</ul>
<div class="clear"></div>
</div>

View File

@ -1,89 +1,89 @@
<div id="prop_general" class="propertiesTabContent">
<table style="width: 100%; padding: 0 3px">
<tr>
<td style="text-align: right">QBT_TR(Progress:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td style="text-align: right">Progress:</td>
<td id="progress" style="width: 100%"></td>
</tr>
</table>
<hr>
<fieldset>
<legend><b>QBT_TR(Transfer)QBT_TR[CONTEXT=PropertiesWidget]</b></legend>
<legend><b>Transfer</b></legend>
<table style="width: 100%">
<tr>
<td class="generalLabel">QBT_TR(Time Active:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Time Active:</td>
<td id="time_elapsed"></td>
<td class="generalLabel">QBT_TR(ETA:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">ETA:</td>
<td id="eta"></td>
<td class="generalLabel">QBT_TR(Connections:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Connections:</td>
<td id="nb_connections"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Downloaded:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Downloaded:</td>
<td id="total_downloaded"></td>
<td class="generalLabel">QBT_TR(Uploaded:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Uploaded:</td>
<td id="total_uploaded"></td>
<td class="generalLabel">QBT_TR(Seeds:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Seeds:</td>
<td id="seeds"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Download Speed:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Download Speed:</td>
<td id="dl_speed"></td>
<td class="generalLabel">QBT_TR(Upload Speed:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Upload Speed:</td>
<td id="up_speed"></td>
<td class="generalLabel">QBT_TR(Peers:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Peers:</td>
<td id="peers"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Download Limit:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Download Limit:</td>
<td id="dl_limit"></td>
<td class="generalLabel">QBT_TR(Upload Limit:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Upload Limit:</td>
<td id="up_limit"></td>
<td class="generalLabel">QBT_TR(Wasted:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Wasted:</td>
<td id="total_wasted"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Share Ratio:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Share Ratio:</td>
<td id="share_ratio"></td>
<td class="generalLabel">QBT_TR(Reannounce In:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Reannounce In:</td>
<td id="reannounce"></td>
<td class="generalLabel">QBT_TR(Last Seen Complete:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Last Seen Complete:</td>
<td id="last_seen"></td>
</tr>
</table>
</fieldset>
<fieldset>
<legend><b>QBT_TR(Information)QBT_TR[CONTEXT=PropertiesWidget]</b></legend>
<legend><b>Information</b></legend>
<table style="width: 100%">
<tr>
<td class="generalLabel">QBT_TR(Total Size:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Total Size:</td>
<td id="total_size"></td>
<td class="generalLabel">QBT_TR(Pieces:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Pieces:</td>
<td id="pieces"></td>
<td class="generalLabel">QBT_TR(Created By:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Created By:</td>
<td id="created_by"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Added On:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Added On:</td>
<td id="addition_date"></td>
<td class="generalLabel">QBT_TR(Completed On:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Completed On:</td>
<td id="completion_date"></td>
<td class="generalLabel">QBT_TR(Created On:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Created On:</td>
<td id="creation_date"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Info Hash v1:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Info Hash v1:</td>
<td colspan="5" id="torrent_hash_v1"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Info Hash v2:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Info Hash v2:</td>
<td colspan="5" id="torrent_hash_v2"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Save Path:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Save Path:</td>
<td colspan="5" id="save_path"></td>
</tr>
<tr>
<td class="generalLabel">QBT_TR(Comment:)QBT_TR[CONTEXT=PropertiesWidget]</td>
<td class="generalLabel">Comment:</td>
<td colspan="5" style="white-space: pre-wrap;" id="comment"></td>
</tr>
</table>
@ -135,7 +135,7 @@
<table class="dynamicTable" style="width: 100%">
<thead>
<tr>
<th>QBT_TR(URL)QBT_TR[CONTEXT=TrackerListWidget]</th>
<th>URL</th>
</tr>
</thead>
<tbody id="webseedsTable"></tbody>

View File

@ -1,13 +1,13 @@
<div class="toolbarTabs">
<div id="torrentFilesFilterToolbar" class="invisible">
<input type="text" id="torrentFilesFilterInput" placeholder="QBT_TR(Filter files...)QBT_TR[CONTEXT=PropertiesWidget]" autocorrect="off" autocapitalize="none" />
<input type="text" id="torrentFilesFilterInput" placeholder="Filter files..." autocorrect="off" autocapitalize="none" />
</div>
<ul id="propertiesTabs" class="tab-menu">
<li id="PropGeneralLink" class="selected"><a>QBT_TR(General)QBT_TR[CONTEXT=PropTabBar]</a></li>
<li id="PropTrackersLink"><a>QBT_TR(Trackers)QBT_TR[CONTEXT=PropTabBar]</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[CONTEXT=PropTabBar]</a></li>
<li id="PropFilesLink"><a>QBT_TR(Content)QBT_TR[CONTEXT=PropTabBar]</a></li>
<li id="PropGeneralLink" class="selected"><a>General</a></li>
<li id="PropTrackersLink"><a>Trackers</a></li>
<li id="PropPeersLink"><a>Peers</a></li>
<li id="PropWebSeedsLink"><a>HTTP Sources</a></li>
<li id="PropFilesLink"><a>Content</a></li>
</ul>
<div class="clear"></div>
</div>

View File

@ -86,14 +86,14 @@
<div id="rssView">
<div id="rssTopBar">
<div id="rssFetchingDisabled" class="invisible">
QBT_TR(Fetching of RSS feeds is disabled now! You can enable it in application settings.)QBT_TR[CONTEXT=RSSWidget]
Fetching of RSS feeds is disabled now! You can enable it in application settings.
</div>
<div id="rssButtonBar">
<button id="newSubscriptionButton" onclick="qBittorrent.Rss.addRSSFeed()">QBT_TR(New subscription)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="markReadButton" onclick="qBittorrent.Rss.markSelectedAsRead()">QBT_TR(Mark items read)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="updateAllButton" onclick="qBittorrent.Rss.refreshAllFeeds()">QBT_TR(Update all)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="newSubscriptionButton" onclick="qBittorrent.Rss.addRSSFeed()">New subscription</button>
<button id="markReadButton" onclick="qBittorrent.Rss.markSelectedAsRead()">Mark items read</button>
<button id="updateAllButton" onclick="qBittorrent.Rss.refreshAllFeeds()">Update all</button>
<button id="rssDownloaderButton" class="alignRight" onclick="qBittorrent.Rss.openRssDownloader()">QBT_TR(RSS Downloader...)QBT_TR[CONTEXT=RSSWidget]</button>
<button id="rssDownloaderButton" class="alignRight" onclick="qBittorrent.Rss.openRssDownloader()">RSS Downloader...</button>
</div>
</div>
<div id="rssContentView">
@ -138,21 +138,21 @@
</div>
<ul id="rssFeedMenu" class="contextMenu">
<li><a href="#update"><img src="images/view-refresh.svg" alt="QBT_TR(Update)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Update)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li><a href="#markRead"><img src="images/task-complete.svg" alt="QBT_TR(Mark items read)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Mark items read)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li class="separator"><a href="#rename"><img src="images/edit-rename.svg" alt="QBT_TR(Rename...)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Rename...)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li><a href="#delete"><img src="images/edit-clear.svg" alt="QBT_TR(Delete)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Delete)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li><a href="#update"><img src="images/view-refresh.svg" alt="Update)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Update</a></li>
<li><a href="#markRead"><img src="images/task-complete.svg" alt="Mark items read)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Mark items read</a></li>
<li class="separator"><a href="#rename"><img src="images/edit-rename.svg" alt="Rename...)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Rename...</a></li>
<li><a href="#delete"><img src="images/edit-clear.svg" alt="Delete)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Delete</a></li>
<li class="separator"><a href="#newSubscription"><img src="images/list-add.svg" alt="QBT_TR(New subscription...)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(New subscription...)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li><a href="#newFolder"><img src="images/folder-new.svg" alt="QBT_TR(New folder...)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(New folder...)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li class="separator"><a href="#updateAll"><img src="images/view-refresh.svg" alt="QBT_TR(Update all feeds)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Update all feeds)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li class="separator"><a href="#newSubscription"><img src="images/list-add.svg" alt="New subscription...)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(New subscription...</a></li>
<li><a href="#newFolder"><img src="images/folder-new.svg" alt="New folder...)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(New folder...</a></li>
<li class="separator"><a href="#updateAll"><img src="images/view-refresh.svg" alt="Update all feeds)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Update all feeds</a></li>
<li class="separator"><a href="#copyFeedURL" id="CopyFeedURL"><img src="images/edit-copy.svg" alt="QBT_TR(Copy feed URL)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Copy feed URL)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li class="separator"><a href="#copyFeedURL" id="CopyFeedURL"><img src="images/edit-copy.svg" alt="Copy feed URL)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Copy feed URL</a></li>
</ul>
<ul id="rssArticleMenu" class="contextMenu">
<li><a href="#Download"><img src="images/downloading.svg" alt="QBT_TR(Download torrent)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Download torrent)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li><a href="#OpenNews"><img src="images/application-url.svg" alt="QBT_TR(Open news URL)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Open news URL)QBT_TR[CONTEXT=RSSWidget]</a></li>
<li><a href="#Download"><img src="images/downloading.svg" alt="Download torrent)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Download torrent</a></li>
<li><a href="#OpenNews"><img src="images/application-url.svg" alt="Open news URL)QBT_TR[CONTEXT=RSSWidget]" /> QBT_TR(Open news URL</a></li>
</ul>
<script>
@ -329,7 +329,7 @@
new MochaUI.Window({
id: 'newFeed',
title: 'QBT_TR(Please type a RSS feed URL)QBT_TR[CONTEXT=RSSWidget]',
title: 'Please type a RSS feed URL',
loadMethod: 'iframe',
contentURL: 'newfeed.html?path=' + encodeURIComponent(path),
scrollbars: false,
@ -356,7 +356,7 @@
new MochaUI.Window({
id: 'newFolder',
title: 'QBT_TR(Please choose a folder name)QBT_TR[CONTEXT=RSSWidget]',
title: 'Please choose a folder name',
loadMethod: 'iframe',
contentURL: 'newfolder.html?path=' + encodeURIComponent(path),
scrollbars: false,
@ -422,7 +422,7 @@
torrentDate.setAttribute('id', 'rssTorrentDetailsDate');
let torrentDateDesc = document.createElement('b');
torrentDateDesc.innerText = 'QBT_TR(Date: )QBT_TR[CONTEXT=RSSWidget]';
torrentDateDesc.innerText = 'Date: ';
torrentDate.append(torrentDateDesc);
let torrentDateData = document.createElement('span');
@ -599,7 +599,7 @@
// Unread entry at top
rssFeedTable.updateRowData({
rowId: 0,
name: 'QBT_TR(Unread)QBT_TR[CONTEXT=FeedListWidget]',
name: 'Unread',
unread: 0,
status: 'unread',
indentation: 0,
@ -688,7 +688,7 @@
const moveItem = (oldPath) => {
new MochaUI.Window({
id: 'renamePage',
title: 'QBT_TR(Please choose a new name for this RSS feed)QBT_TR[CONTEXT=RSSWidget]',
title: 'Please choose a new name for this RSS feed',
loadMethod: 'iframe',
contentURL: 'rename_feed.html?oldPath=' + encodeURIComponent(oldPath),
scrollbars: false,
@ -703,7 +703,7 @@
const encodedPaths = paths.map((path) => encodeURIComponent(path));
new MochaUI.Window({
id: 'confirmFeedDeletionPage',
title: 'QBT_TR(Deletion confirmation)QBT_TR[CONTEXT=RSSWidget]',
title: 'Deletion confirmation',
loadMethod: 'iframe',
contentURL: 'confirmfeeddeletion.html?paths=' + encodeURIComponent(encodedPaths.join('|')),
scrollbars: false,
@ -815,7 +815,7 @@
const id = 'rssdownloaderpage';
new MochaUI.Window({
id: id,
title: 'QBT_TR(Rss Downloader)QBT_TR[CONTEXT=AutomatedRssDownloader]',
title: 'Rss Downloader',
loadMethod: 'xhr',
contentURL: 'views/rssDownloader.html',
maximizable: false,

View File

@ -131,11 +131,11 @@
<div id="RssDownloader" class="RssDownloader">
<div id="rssDownloaderDisabled" class="invisible">
QBT_TR(Auto downloading of RSS torrents is disabled now! You can enable it in application settings.)QBT_TR[CONTEXT=AutomatedRssDownloader]
Auto downloading of RSS torrents is disabled now! You can enable it in application settings.
</div>
<div id="leftRssDownloaderColumn">
<div id="topMenuBar">
<b id="rulesTableDesc">QBT_TR(Download Rules)QBT_TR[CONTEXT=AutomatedRssDownloader]</b>
<b id="rulesTableDesc">Download Rules</b>
<button id="newRuleButton" class="imageButton" onclick="qBittorrent.RssDownloader.addRule()"></button>
<button id="deleteRuleButton" class="imageButton" onclick="qBittorrent.RssDownloader.removeSelectedRule()"></button>
</div>
@ -161,15 +161,15 @@
</div>
<div id="centerRssDownloaderColumn">
<fieldset class="settings" id="ruleSettings">
<legend>QBT_TR(Rule Definition)QBT_TR[CONTEXT=AutomatedRssDownloader]</legend>
<legend>Rule Definition</legend>
<div class="formRow">
<input disabled type="checkbox" id="useRegEx" onclick="qBittorrent.RssDownloader.setElementTitles()" />
<label for="useRegEx">QBT_TR(Use Regular Expressions)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label for="useRegEx">Use Regular Expressions</label>
</div>
<table class="fullWidth">
<tr>
<td>
<label for="mustContainText" class="noWrap">QBT_TR(Must Contain:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label for="mustContainText" class="noWrap">Must Contain:</label>
</td>
<td class="fullWidth">
<input disabled type="text" id="mustContainText" class="fullWidth" autocorrect="off" autocapitalize="none" />
@ -177,7 +177,7 @@
</tr>
<tr>
<td>
<label for="mustNotContainText" class="noWrap">QBT_TR(Must Not Contain:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label for="mustNotContainText" class="noWrap">Must Not Contain:</label>
</td>
<td class="fullWidth">
<input disabled type="text" id="mustNotContainText" class="fullWidth" autocorrect="off" autocapitalize="none" />
@ -185,7 +185,7 @@
</tr>
<tr>
<td>
<label for="episodeFilterText" class="noWrap">QBT_TR(Episode Filter:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label for="episodeFilterText" class="noWrap">Episode Filter:</label>
</td>
<td class="fullWidth">
<input disabled type="text" id="episodeFilterText" class="fullWidth" autocorrect="off" autocapitalize="none" />
@ -195,7 +195,7 @@
<div class="formRow" title="QBT_TR(Smart Episode Filter will check the episode number to prevent downloading of duplicates.
Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also support - as a separator))QBT_TR[CONTEXT=AutomatedRssDownloader]">
<input disabled type="checkbox" id="useSmartFilter" />
<label for="useSmartFilter">QBT_TR(Use Smart Episode Filter)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label for="useSmartFilter">Use Smart Episode Filter</label>
</div>
<hr>
@ -203,7 +203,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
<table class="fullWidth">
<tr>
<td>
<label class="noWrap">QBT_TR(Assign Category:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label class="noWrap">Assign Category:</label>
</td>
<td class="fullWidth">
<select disabled id="assignCategoryCombobox" class="fullWidth">
@ -214,12 +214,12 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
</table>
<div class="formRow">
<input disabled type="checkbox" id="savetoDifferentDir" />
<label for="savetoDifferentDir">QBT_TR(Save to a Different Directory)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label for="savetoDifferentDir">Save to a Different Directory</label>
</div>
<table class="fullWidth">
<tr>
<td>
<label class="noWrap" for="saveToText">QBT_TR(Save to:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label class="noWrap" for="saveToText">Save to:</label>
</td>
<td class="fullWidth">
<input disabled type="text" class="fullWidth" id="saveToText" autocorrect="off" autocapitalize="none" />
@ -228,23 +228,23 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
</table>
<table>
<tr>
<td><label for="ignoreDaysValue">QBT_TR(Ignore Subsequent Matches for (0 to Disable))QBT_TR[CONTEXT=AutomatedRssDownloader]</label></td>
<td><input type="number" id="ignoreDaysValue" min="0" />QBT_TR( days)QBT_TR[CONTEXT=AutomatedRssDownloader]</td>
<td><label for="ignoreDaysValue">Ignore Subsequent Matches for (0 to Disable)</label></td>
<td><input type="number" id="ignoreDaysValue" min="0" /> days</td>
</tr>
</table>
<div id="lastMatchDiv">
<span id="lastMatchText">QBT_TR(Last Match: Unknown)QBT_TR[CONTEXT=AutomatedRssDownloader]</span>
<span id="lastMatchText">Last Match: Unknown</span>
</div>
<table class="fullWidth">
<tr>
<td>
<label class="noWrap">QBT_TR(Add Paused:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label class="noWrap">Add Paused:</label>
</td>
<td class="fullWidth">
<select disabled id="addPausedCombobox" class="fullWidth">
<option value="default">QBT_TR(Use global settings)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="always">QBT_TR(Always)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="never">QBT_TR(Never)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="default">Use global settings</option>
<option value="always">Always</option>
<option value="never">Never</option>
</select>
</td>
</tr>
@ -252,21 +252,21 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
<table class="fullWidth">
<tr>
<td>
<label class="noWrap">QBT_TR(Torrent content layout:)QBT_TR[CONTEXT=AutomatedRssDownloader]</label>
<label class="noWrap">Torrent content layout:</label>
</td>
<td class="fullWidth">
<select disabled id="contentLayoutCombobox" class="fullWidth">
<option value="Default">QBT_TR(Use global settings)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="Original">QBT_TR(Original)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="Subfolder">QBT_TR(Create subfolder)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="NoSubfolder">QBT_TR(Don't create subfolder)QBT_TR[CONTEXT=AutomatedRssDownloader]</option>
<option value="Default">Use global settings</option>
<option value="Original">Original</option>
<option value="Subfolder">Create subfolder</option>
<option value="NoSubfolder">Don't create subfolder</option>
</select>
</td>
</tr>
</table>
</fieldset>
<fieldset class="settings" id="rssDownloaderFeeds">
<legend>QBT_TR(Apply Rule to Feeds:)QBT_TR[CONTEXT=AutomatedRssDownloader]</legend>
<legend>Apply Rule to Feeds:</legend>
<div id="rssDownloaderFeedsTable">
<div id="rssDownloaderFeedSelectionFixedHeaderDiv" class="dynamicTableFixedHeaderDiv invisible">
<table class="dynamicTable unselectable">
@ -286,11 +286,11 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
</div>
</fieldset>
<button disabled id="saveButton" onclick="qBittorrent.RssDownloader.saveSettings()">
QBT_TR(Save)QBT_TR[CONTEXT=HttpServer]
Save
</button>
</div>
<div id="rightRssDownloaderColumn">
<b id="articleTableDesc">QBT_TR(Matching RSS Articles)QBT_TR[CONTEXT=AutomatedRssDownloader]</b>
<b id="articleTableDesc">Matching RSS Articles</b>
<div id="rssDownloaderArticlesTable">
<div id="rssDownloaderArticlesFixedHeaderDiv" class="dynamicTableFixedHeaderDiv invisible">
<table class="dynamicTable unselectable">
@ -312,10 +312,10 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
</div>
<ul id="rssDownloaderRuleMenu" class="contextMenu">
<li><a href="#addRule"><img src="images/list-add.svg" alt="QBT_TR(Add new rule...)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Add new rule...)QBT_TR[CONTEXT=AutomatedRssDownloader]</a></li>
<li><a href="#deleteRule"><img src="images/edit-clear.svg" alt="QBT_TR(Delete rule)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Delete rule)QBT_TR[CONTEXT=AutomatedRssDownloader]</a></li>
<li class="separator"><a href="#renameRule"><img src="images/edit-rename.svg" alt="QBT_TR(Rename rule...)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Rename rule...)QBT_TR[CONTEXT=AutomatedRssDownloader]</a></li>
<li class="separator"><a href="#clearDownloadedEpisodes"><img src="images/edit-clear.svg" alt="QBT_TR(Clear downloaded episodes...)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Clear downloaded episodes...)QBT_TR[CONTEXT=AutomatedRssDownloader]</a></li>
<li><a href="#addRule"><img src="images/list-add.svg" alt="Add new rule...)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Add new rule...</a></li>
<li><a href="#deleteRule"><img src="images/edit-clear.svg" alt="Delete rule)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Delete rule</a></li>
<li class="separator"><a href="#renameRule"><img src="images/edit-rename.svg" alt="Rename rule...)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Rename rule...</a></li>
<li class="separator"><a href="#clearDownloadedEpisodes"><img src="images/edit-clear.svg" alt="Clear downloaded episodes...)QBT_TR[CONTEXT=AutomatedRssDownloader]" /> QBT_TR(Clear downloaded episodes...</a></li>
</ul>
<script>
@ -506,7 +506,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
const addRule = () => {
new MochaUI.Window({
id: 'newRulePage',
title: 'QBT_TR(New rule name)QBT_TR[CONTEXT=AutomatedRssDownloader]',
title: 'New rule name',
loadMethod: 'iframe',
contentURL: 'newrule.html',
scrollbars: false,
@ -520,7 +520,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
const renameRule = (rule) => {
new MochaUI.Window({
id: 'renameRulePage',
title: 'QBT_TR(Rule renaming)QBT_TR[CONTEXT=AutomatedRssDownloader]',
title: 'Rule renaming',
loadMethod: 'iframe',
contentURL: 'rename_rule.html?rule=' + encodeURIComponent(rule),
scrollbars: false,
@ -542,7 +542,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
const encodedRules = rules.map((rule) => encodeURIComponent(rule));
new MochaUI.Window({
id: 'removeRulePage',
title: 'QBT_TR(Rule deletion confirmation)QBT_TR[CONTEXT=AutomatedRssDownloader]',
title: 'Rule deletion confirmation',
loadMethod: 'iframe',
contentURL: 'confirmruledeletion.html?rules=' + encodeURIComponent(encodedRules.join('|')),
scrollbars: false,
@ -557,7 +557,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
const encodedRules = rules.map((rule) => encodeURIComponent(rule));
new MochaUI.Window({
id: 'clearRulesPage',
title: 'QBT_TR(New rule name)QBT_TR[CONTEXT=AutomatedRssDownloader]',
title: 'New rule name',
loadMethod: 'iframe',
contentURL: 'confirmruleclear.html?rules=' + encodeURIComponent(encodedRules.join('|')),
scrollbars: false,
@ -682,7 +682,7 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
$('savetoDifferentDir').checked = false;
$('saveToText').value = '';
$('ignoreDaysValue').value = 0;
$('lastMatchText').textContent = 'QBT_TR(Last Match: Unknown)QBT_TR[CONTEXT=AutomatedRssDownloader]';
$('lastMatchText').textContent = 'Last Match: Unknown';
$('addPausedCombobox').value = 'default';
$('contentLayoutCombobox').value = 'Default';
rssDownloaderFeedSelectionTable.clear();
@ -724,10 +724,10 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
if (rulesList[ruleName].lastMatch !== '') {
let timeDiffInMs = new Date().getTime() - new Date(rulesList[ruleName].lastMatch).getTime();
let daysAgo = Math.floor(timeDiffInMs / (1000 * 60 * 60 * 24)).toString();
$('lastMatchText').textContent = ' QBT_TR(Last Match: %1 days ago)QBT_TR[CONTEXT=AutomatedRssDownloader]'.replace('%1', daysAgo);
$('lastMatchText').textContent = ' Last Match: %1 days ago'.replace('%1', daysAgo);
}
else {
$('lastMatchText').textContent = 'QBT_TR(Last Match: Unknown)QBT_TR[CONTEXT=AutomatedRssDownloader]';
$('lastMatchText').textContent = 'Last Match: Unknown';
}
if (rulesList[ruleName].addPaused === null)
@ -760,34 +760,34 @@ Supports the formats: S01E01, 1x1, 2017.12.31 and 31.12.2017 (Date formats also
const setElementTitles = () => {
let mainPart;
if ($('useRegEx').checked) {
mainPart = 'QBT_TR(Regex mode: use Perl-compatible regular expressions)QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n';
mainPart = 'Regex mode: use Perl-compatible regular expressions\n\n';
}
else {
mainPart = 'QBT_TR(Wildcard mode: you can use)QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n'
+ ' ● QBT_TR(? to match any single character)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(* to match zero or more of any characters)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Whitespaces count as AND operators (all words, any order))QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(| is used as OR operator)QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n'
+ 'QBT_TR(If word order is important use * instead of whitespace.)QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n';
mainPart = 'Wildcard mode: you can use\n\n'
+ ' ● ? to match any single character\n'
+ ' ● * to match zero or more of any characters\n'
+ ' ● Whitespaces count as AND operators (all words, any order)\n'
+ ' ● | is used as OR operator\n\n'
+ 'If word order is important use * instead of whitespace.\n\n';
}
let secondPart = 'QBT_TR(An expression with an empty %1 clause (e.g. %2))QBT_TR[CONTEXT=AutomatedRssDownloader]'
let secondPart = 'An expression with an empty %1 clause (e.g. %2)'
.replace('%1', '|').replace('%2', 'expr|');
$('mustContainText').title = mainPart + secondPart + 'QBT_TR( will match all articles.)QBT_TR[CONTEXT=AutomatedRssDownloader]';
$('mustNotContainText').title = mainPart + secondPart + 'QBT_TR( will exclude all articles.)QBT_TR[CONTEXT=AutomatedRssDownloader]';
$('mustContainText').title = mainPart + secondPart + ' will match all articles.';
$('mustNotContainText').title = mainPart + secondPart + ' will exclude all articles.';
let episodeFilterTitle = 'QBT_TR(Matches articles based on episode filter.)QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n'
+ 'QBT_TR(Example: )QBT_TR[CONTEXT=AutomatedRssDownloader]'
let episodeFilterTitle = 'Matches articles based on episode filter.\n\n'
+ 'Example: '
+ '1x2;8-15;5;30-;'
+ 'QBT_TR( will match 2, 5, 8 through 15, 30 and onward episodes of season one)QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n'
+ 'QBT_TR(Episode filter rules: )QBT_TR[CONTEXT=AutomatedRssDownloader]\n\n'
+ ' ● QBT_TR(Season number is a mandatory non-zero value)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Episode number is a mandatory positive value)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Filter must end with semicolon)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Three range types for episodes are supported: )QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Single number: <b>1x25;</b> matches episode 25 of season one)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one)QBT_TR[CONTEXT=AutomatedRssDownloader]\n'
+ ' ● QBT_TR(Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons)QBT_TR[CONTEXT=AutomatedRssDownloader]';
+ ' will match 2, 5, 8 through 15, 30 and onward episodes of season one\n\n'
+ 'Episode filter rules: \n\n'
+ ' ● Season number is a mandatory non-zero value\n'
+ ' ● Episode number is a mandatory positive value\n'
+ ' ● Filter must end with semicolon\n'
+ ' ● Three range types for episodes are supported: \n'
+ ' ● Single number: <b>1x25;</b> matches episode 25 of season one\n'
+ ' ● Normal range: <b>1x25-40;</b> matches episodes 25 through 40 of season one\n'
+ ' ● Infinite range: <b>1x25-;</b> matches episodes 25 and upward of season one, and all episodes of later seasons';
episodeFilterTitle = episodeFilterTitle.replace(/<b>/g, '').replace(/<\/b>/g, '');
$('episodeFilterText').title = episodeFilterTitle;

View File

@ -80,10 +80,10 @@
<div id="searchResults">
<div style="overflow: hidden; height: 70px;">
<div style="margin: 20px 0; height: 30px;">
<input type="text" id="searchPattern" class="searchInputField" placeholder="QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]" autocorrect="off" autocapitalize="none" />
<input type="text" id="searchPattern" class="searchInputField" placeholder="Search" autocorrect="off" autocapitalize="none" />
<select id="categorySelect" class="searchInputField" onchange="qBittorrent.Search.categorySelected()"></select>
<select id="pluginsSelect" class="searchInputField" onchange="qBittorrent.Search.pluginSelected()"></select>
<button id="startSearchButton" class="searchInputField" onclick="qBittorrent.Search.startStopSearch()">QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]</button>
<button id="startSearchButton" class="searchInputField" onclick="qBittorrent.Search.startStopSearch()">Search</button>
</div>
</div>
@ -92,9 +92,9 @@
<tbody>
<tr>
<td>
QBT_TR(There aren't any search plugins installed.)QBT_TR[CONTEXT=SearchEngineWidget]
There aren't any search plugins installed.
<br />
QBT_TR(Click the "Search plugins..." button at the bottom right of the window to install some.)QBT_TR[CONTEXT=SearchEngineWidget]
Click the "Search plugins..." button at the bottom right of the window to install some.
</td>
</tr>
</tbody>
@ -103,46 +103,46 @@
</div>
<div id="searchResultsFilters">
<input type="text" id="searchInNameFilter" placeholder="QBT_TR(Filter)QBT_TR[CONTEXT=SearchEngineWidget]" autocorrect="off" autocapitalize="none" />
<input type="text" id="searchInNameFilter" placeholder="Filter" autocorrect="off" autocapitalize="none" />
<span>QBT_TR(Results)QBT_TR[CONTEXT=SearchEngineWidget] (QBT_TR(showing)QBT_TR[CONTEXT=SearchEngineWidget] <span id="numSearchResultsVisible" class="numSearchResults">0</span> QBT_TR(out of)QBT_TR[CONTEXT=SearchEngineWidget] <span id="numSearchResultsTotal" class="numSearchResults">0</span>):</span>
<span>Results)QBT_TR[CONTEXT=SearchEngineWidget] (showing[CONTEXT=SearchEngineWidget] <span id="numSearchResultsVisible" class="numSearchResults">0</span> QBT_TR(out of <span id="numSearchResultsTotal" class="numSearchResults">0</span>):</span>
<div style="display: inline-block; float: right;">
<label for="searchInTorrentName" style="margin-left: 15px;">QBT_TR(Search in:)QBT_TR[CONTEXT=SearchEngineWidget]</label>
<label for="searchInTorrentName" style="margin-left: 15px;">Search in:</label>
<select id="searchInTorrentName" onchange="qBittorrent.Search.searchInTorrentName()">
<option value="names">QBT_TR(Torrent names only)QBT_TR[CONTEXT=SearchEngineWidget]</option>
<option value="everywhere">QBT_TR(Everywhere)QBT_TR[CONTEXT=SearchEngineWidget]</option>
<option value="names">Torrent names only</option>
<option value="everywhere">Everywhere</option>
</select>
<img id="searchResultsGranularFiltersWarning" src="images/dialog-warning.svg" title="QBT_TR(Increase window width to display additional filters)QBT_TR[CONTEXT=SearchEngineWidget]" alt="QBT_TR(Warning)QBT_TR[CONTEXT=SearchEngineWidget]" width="24" height="24">
<img id="searchResultsGranularFiltersWarning" src="images/dialog-warning.svg" title="Increase window width to display additional filters)QBT_TR[CONTEXT=SearchEngineWidget]" alt="QBT_TR(Warning" width="24" height="24">
<div id="searchResultsGranularFilters">
<span style="margin-left: 15px;">QBT_TR(Seeds:)QBT_TR[CONTEXT=SearchEngineWidget]</span>
<span style="margin-left: 15px;">Seeds:</span>
<input type="number" min="0" max="1000" id="searchMinSeedsFilter" value="0" onchange="qBittorrent.Search.searchSeedsFilterChanged()">
<span>QBT_TR(to)QBT_TR[CONTEXT=SearchEngineWidget]</span>
<span>to</span>
<input type="number" min="0" max="1000" id="searchMaxSeedsFilter" value="0" onchange="qBittorrent.Search.searchSeedsFilterChanged()">
<span style="margin-left: 15px;">QBT_TR(Size:)QBT_TR[CONTEXT=SearchEngineWidget]</span>
<span style="margin-left: 15px;">Size:</span>
<input type="number" min="0" max="1000" step=".01" value="0.00" id="searchMinSizeFilter" onchange="qBittorrent.Search.searchSizeFilterChanged()">
<select id="searchMinSizePrefix" onchange="qBittorrent.Search.searchSizeFilterPrefixChanged()">
<option value="0">QBT_TR(B)QBT_TR[CONTEXT=misc]</option>
<option value="1">QBT_TR(KiB)QBT_TR[CONTEXT=misc]</option>
<option value="2" selected>QBT_TR(MiB)QBT_TR[CONTEXT=misc]</option>
<option value="3">QBT_TR(GiB)QBT_TR[CONTEXT=misc]</option>
<option value="4">QBT_TR(TiB)QBT_TR[CONTEXT=misc]</option>
<option value="5">QBT_TR(PiB)QBT_TR[CONTEXT=misc]</option>
<option value="6">QBT_TR(EiB)QBT_TR[CONTEXT=misc]</option>
<option value="0">B</option>
<option value="1">KiB</option>
<option value="2" selected>MiB</option>
<option value="3">GiB</option>
<option value="4">TiB</option>
<option value="5">PiB</option>
<option value="6">EiB</option>
</select>
<span>QBT_TR(to)QBT_TR[CONTEXT=SearchEngineWidget]</span>
<span>to</span>
<input type="number" min="0" max="1000" step=".01" value="0.00" id="searchMaxSizeFilter" onchange="qBittorrent.Search.searchSizeFilterChanged()">
<select id="searchMaxSizePrefix" onchange="qBittorrent.Search.searchSizeFilterPrefixChanged()">
<option value="0">QBT_TR(B)QBT_TR[CONTEXT=misc]</option>
<option value="1">QBT_TR(KiB)QBT_TR[CONTEXT=misc]</option>
<option value="2" selected>QBT_TR(MiB)QBT_TR[CONTEXT=misc]</option>
<option value="3">QBT_TR(GiB)QBT_TR[CONTEXT=misc]</option>
<option value="4">QBT_TR(TiB)QBT_TR[CONTEXT=misc]</option>
<option value="5">QBT_TR(PiB)QBT_TR[CONTEXT=misc]</option>
<option value="6">QBT_TR(EiB)QBT_TR[CONTEXT=misc]</option>
<option value="0">B</option>
<option value="1">KiB</option>
<option value="2" selected>MiB</option>
<option value="3">GiB</option>
<option value="4">TiB</option>
<option value="5">PiB</option>
<option value="6">EiB</option>
</select>
</div>
</div>
@ -167,19 +167,19 @@
</div>
<div style="height: 30px; padding-top: 10px;">
<button id="manageSearchPlugins" onclick="qBittorrent.Search.manageSearchPlugins()">QBT_TR(Search plugins...)QBT_TR[CONTEXT=SearchEngineWidget]</button>
<button id="manageSearchPlugins" onclick="qBittorrent.Search.manageSearchPlugins()">Search plugins...</button>
</div>
</div>
<ul id="searchResultsTableMenu" class="contextMenu">
<li><a href="#Download"><img src="images/downloading.svg" alt="QBT_TR(Download)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Download)QBT_TR[CONTEXT=SearchJobWidget]</a></li>
<li class="separator"><a href="#OpenDescriptionUrl"><img src="images/application-url.svg" alt="QBT_TR(Open description page)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Open description page)QBT_TR[CONTEXT=SearchJobWidget]</a></li>
<li><a href="#Download"><img src="images/downloading.svg" alt="Download)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Download</a></li>
<li class="separator"><a href="#OpenDescriptionUrl"><img src="images/application-url.svg" alt="Open description page)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Open description page</a></li>
<li>
<a href="#" class="arrow-right"><img src="images/edit-copy.svg" alt="QBT_TR(Copy)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Copy)QBT_TR[CONTEXT=SearchJobWidget]</a>
<a href="#" class="arrow-right"><img src="images/edit-copy.svg" alt="Copy)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Copy</a>
<ul>
<li><a href="#" id="copySearchTorrentName" class="copySearchDataToClipboard"><img src="images/name.svg" alt="QBT_TR(Name)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Name)QBT_TR[CONTEXT=SearchJobWidget]</a></li>
<li><a href="#" id="copySearchTorrentDownloadLink" class="copySearchDataToClipboard"><img src="images/insert-link.svg" alt="QBT_TR(Download link)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Download link)QBT_TR[CONTEXT=SearchJobWidget]</a></li>
<li><a href="#" id="copySearchTorrentDescriptionUrl" class="copySearchDataToClipboard"><img src="images/application-url.svg" alt="QBT_TR(Description page URL)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Description page URL)QBT_TR[CONTEXT=SearchJobWidget]</a></li>
<li><a href="#" id="copySearchTorrentName" class="copySearchDataToClipboard"><img src="images/name.svg" alt="Name)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Name</a></li>
<li><a href="#" id="copySearchTorrentDownloadLink" class="copySearchDataToClipboard"><img src="images/insert-link.svg" alt="Download link)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Download link</a></li>
<li><a href="#" id="copySearchTorrentDescriptionUrl" class="copySearchDataToClipboard"><img src="images/application-url.svg" alt="Description page URL)QBT_TR[CONTEXT=SearchJobWidget]" /> QBT_TR(Description page URL</a></li>
</ul>
</li>
</ul>
@ -234,7 +234,7 @@
maxUnit: 3
};
let prevNameFilterValue;
let selectedCategory = "QBT_TR(All categories)QBT_TR[CONTEXT=SearchEngineWidget]";
let selectedCategory = "All categories";
let selectedPlugin = "all";
let prevSelectedPlugin;
let activeSearchId = null;
@ -314,7 +314,7 @@
plugins: plugins
},
onSuccess: function(response) {
$('startSearchButton').set('text', 'QBT_TR(Stop)QBT_TR[CONTEXT=SearchEngineWidget]');
$('startSearchButton').set('text', 'Stop');
searchRunning = true;
activeSearchId = response.id;
updateSearchResultsData();
@ -404,7 +404,7 @@
if (!$(id))
new MochaUI.Window({
id: id,
title: "QBT_TR(Search plugins)QBT_TR[CONTEXT=PluginSelectDlg]",
title: "Search plugins",
loadMethod: 'xhr',
contentURL: 'views/searchplugins.html',
scrollbars: false,
@ -461,7 +461,7 @@
const resetSearchState = function() {
clearTimeout(loadSearchResultsTimer);
$('startSearchButton').set('text', 'QBT_TR(Search)QBT_TR[CONTEXT=SearchEngineWidget]');
$('startSearchButton').set('text', 'Search');
searchResultsRowId = 0;
searchRunning = false;
activeSearchId = null;
@ -529,8 +529,8 @@
});
const pluginsHtml = [];
pluginsHtml.push('<option value="enabled">QBT_TR(Only enabled)QBT_TR[CONTEXT=SearchEngineWidget]</option>');
pluginsHtml.push('<option value="all">QBT_TR(All plugins)QBT_TR[CONTEXT=SearchEngineWidget]</option>');
pluginsHtml.push('<option value="enabled">Only enabled</option>');
pluginsHtml.push('<option value="all">All plugins</option>');
const searchPluginsEmpty = (searchPlugins.length === 0);
if (searchPluginsEmpty) {

View File

@ -42,7 +42,7 @@
</style>
<div id="searchPluginsContainer">
<h2>QBT_TR(Installed search plugins:)QBT_TR[CONTEXT=PluginSelectDlg]</h2>
<h2>Installed search plugins:</h2>
<div id="searchPluginsTable">
<div id="searchPluginsTableFixedHeaderDiv" class="dynamicTableFixedHeaderDiv">
@ -62,18 +62,18 @@
</div>
</div>
<span>QBT_TR(Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines.)QBT_TR[CONTEXT=PluginSelectDlg]</span>
<span style="font-style: italic;">QBT_TR(You can get new search engine plugins here:)QBT_TR[CONTEXT=PluginSelectDlg] <a href="http://plugins.qbittorrent.org" target="_blank">http://plugins.qbittorrent.org</a></span>
<span>Warning: Be sure to comply with your country's copyright laws when downloading torrents from any of these search engines.</span>
<span style="font-style: italic;">You can get new search engine plugins here: <a href="http://plugins.qbittorrent.org" target="_blank">http://plugins.qbittorrent.org</a></span>
<div style="width: 100%; margin-top: 10px;">
<button style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.installPlugin();">QBT_TR(Install new plugin)QBT_TR[CONTEXT=PluginSelectDlg]</button>
<button style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.checkForUpdates();">QBT_TR(Check for updates)QBT_TR[CONTEXT=PluginSelectDlg]</button>
<button style="width: 32%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.closeSearchWindow('searchPlugins');">QBT_TR(Close)QBT_TR[CONTEXT=PluginSelectDlg]</button>
<button style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.installPlugin();">Install new plugin</button>
<button style="width: 33%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.checkForUpdates();">Check for updates</button>
<button style="width: 32%; line-height: 1.4em;" onclick="qBittorrent.SearchPlugins.closeSearchWindow('searchPlugins');">Close</button>
</div>
</div>
<ul id="searchPluginsTableMenu" class="contextMenu">
<li><a href="#Enabled"><img src="images/checked-completed.svg" alt="QBT_TR(Enabled)QBT_TR[CONTEXT=PluginSelectDlg]" /> QBT_TR(Enabled)QBT_TR[CONTEXT=PluginSelectDlg]</a></li>
<li class="separator"><a href="#Uninstall"><img src="images/list-remove.svg" alt="QBT_TR(Uninstall)QBT_TR[CONTEXT=PluginSelectDlg]" /> QBT_TR(Uninstall)QBT_TR[CONTEXT=PluginSelectDlg]</a></li>
<li><a href="#Enabled"><img src="images/checked-completed.svg" alt="Enabled)QBT_TR[CONTEXT=PluginSelectDlg]" /> QBT_TR(Enabled</a></li>
<li class="separator"><a href="#Uninstall"><img src="images/list-remove.svg" alt="Uninstall)QBT_TR[CONTEXT=PluginSelectDlg]" /> QBT_TR(Uninstall</a></li>
</ul>
<script>
@ -120,7 +120,7 @@
const installPlugin = function(path) {
new MochaUI.Window({
id: 'installSearchPlugin',
title: "QBT_TR(Install plugin)QBT_TR[CONTEXT=PluginSourceDlg]",
title: "Install plugin",
loadMethod: 'xhr',
contentURL: 'views/installsearchplugin.html',
scrollbars: false,

View File

@ -1,58 +1,58 @@
<div id="statisticsContent">
<h3>QBT_TR(User statistics)QBT_TR[CONTEXT=StatsDialog]</h3>
<h3>User statistics</h3>
<table style="width:100%">
<tr>
<td>QBT_TR(All-time upload:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>All-time upload:</td>
<td id="AlltimeUL" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(All-time download:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>All-time download:</td>
<td id="AlltimeDL" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(All-time share ratio:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>All-time share ratio:</td>
<td id="GlobalRatio" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Session waste:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Session waste:</td>
<td id="TotalWastedSession" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Connected peers:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Connected peers:</td>
<td id="TotalPeerConnections" class="statisticsValue"></td>
</tr>
</table>
<h3>QBT_TR(Cache statistics)QBT_TR[CONTEXT=StatsDialog]</h3>
<h3>Cache statistics</h3>
<table style="width:100%">
<tr>
<td>QBT_TR(Read cache hits:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Read cache hits:</td>
<td id="ReadCacheHits" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Total buffer size:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Total buffer size:</td>
<td id="TotalBuffersSize" class="statisticsValue"></td>
</tr>
</table>
<h3>QBT_TR(Performance statistics)QBT_TR[CONTEXT=StatsDialog]</h3>
<h3>Performance statistics</h3>
<table style="width:100%">
<tr>
<td>QBT_TR(Write cache overload:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Write cache overload:</td>
<td id="WriteCacheOverload" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Read cache overload:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Read cache overload:</td>
<td id="ReadCacheOverload" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Queued I/O jobs:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Queued I/O jobs:</td>
<td id="QueuedIOJobs" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Average time in queue:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Average time in queue:</td>
<td id="AverageTimeInQueue" class="statisticsValue"></td>
</tr>
<tr>
<td>QBT_TR(Total queued size:)QBT_TR[CONTEXT=StatsDialog]</td>
<td>Total queued size:</td>
<td id="TotalQueuedSize" class="statisticsValue"></td>
</tr>
</table>

View File

@ -3,7 +3,7 @@
<head>
<meta charset="UTF-8" />
<title>qBittorrent QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</title>
<title>qBittorrent Web UI</title>
<link rel="icon" type="image/png" href="images/qbittorrent32.png" />
<link rel="icon" type="image/svg+xml" href="images/qbittorrent-tray.svg" />
<link rel="stylesheet" type="text/css" href="css/login.css?v=${CACHEID}" />
@ -15,25 +15,25 @@
<body>
<noscript id="noscript">
<h1>QBT_TR(JavaScript Required! You must enable JavaScript for the Web UI to work properly)QBT_TR[CONTEXT=HttpServer]</h1>
<h1>JavaScript Required! You must enable JavaScript for the Web UI to work properly</h1>
</noscript>
<div id="main">
<h1>qBittorrent QBT_TR(Web UI)QBT_TR[CONTEXT=OptionsDialog]</h1>
<h1>qBittorrent Web UI</h1>
<div id="logo" class="col">
<img src="images/qbittorrent-tray.svg" alt="qBittorrent logo" />
</div>
<div id="formplace" class="col">
<form id="loginform" method="post" onsubmit="submitLoginForm();">
<div class="row">
<label for="username">QBT_TR(Username)QBT_TR[CONTEXT=HttpServer]</label><br />
<label for="username">Username</label><br />
<input type="text" id="username" name="username" autocomplete="username" />
</div>
<div class="row">
<label for="password">QBT_TR(Password)QBT_TR[CONTEXT=HttpServer]</label><br />
<label for="password">Password</label><br />
<input type="password" id="password" name="password" autocomplete="current-password" />
</div>
<div class="row">
<input type="submit" id="login" value="QBT_TR(Login)QBT_TR[CONTEXT=HttpServer]" />
<input type="submit" id="login" value="Login" />
</div>
</form>
</div>