Modified the plugin for 'paho-mqtt' >=2.0.0. eric7 release-11.0.0

Fri, 19 Apr 2024 15:15:01 +0200

author
Detlev Offenbach <detlev@die-offenbachs.de>
date
Fri, 19 Apr 2024 15:15:01 +0200
branch
eric7
changeset 143
51bc5bcc672a
parent 142
cf158867ed89
child 144
48501744f7d0

Modified the plugin for 'paho-mqtt' >=2.0.0.

ChangeLog file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html file | annotate | diff | comparison | revisions
MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.PluginMqttMonitor.html file | annotate | diff | comparison | revisions
MqttMonitor/MqttClient.py file | annotate | diff | comparison | revisions
MqttMonitor/MqttConnectionOptionsDialog.py file | annotate | diff | comparison | revisions
MqttMonitor/MqttConnectionProfilesDialog.py file | annotate | diff | comparison | revisions
MqttMonitor/MqttMonitorWidget.py file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_de.qm file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_de.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_empty.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_en.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_es.qm file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_es.ts file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_ru.qm file | annotate | diff | comparison | revisions
MqttMonitor/i18n/mqttmonitor_ru.ts file | annotate | diff | comparison | revisions
PluginMqttMonitor.epj file | annotate | diff | comparison | revisions
PluginMqttMonitor.py file | annotate | diff | comparison | revisions
PluginMqttMonitor.zip file | annotate | diff | comparison | revisions
--- a/ChangeLog	Sat Jan 06 13:11:01 2024 +0100
+++ b/ChangeLog	Fri Apr 19 15:15:01 2024 +0200
@@ -1,5 +1,8 @@
 ChangeLog
 ---------
+Version 11.0.0:
+- modified the plugin for 'paho-mqtt' >=2.0.0
+
 Version 10.5.0
 - adapted code to eric 24.2 and newer
 
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttClient.html	Fri Apr 19 15:15:01 2024 +0200
@@ -27,10 +27,6 @@
 <h3>Functions</h3>
 <table>
 <tr>
-<td><a href="#mqttConnackMessage">mqttConnackMessage</a></td>
-<td>Module function to get the string associated with a CONNACK result.</td>
-</tr>
-<tr>
 <td><a href="#mqttErrorMessage">mqttErrorMessage</a></td>
 <td>Module function to get the error string associated with an MQTT error number.</td>
 </tr>
@@ -56,59 +52,40 @@
 emitted to indicate, that a connection attempt
         timed out
 </dd>
-<dt>onConnectV3(flags, rc)</dt>
-<dd>
-emitted after the client has connected to
-        the broker (MQTT v3)
-</dd>
-<dt>onConnectV5(flags, rc, packetType, properties emitted after theclient has connected to the broker (MQTT v5)</dt>
+<dt>onConnect(connectFlags, rc, packetType, properties)</dt>
 <dd>
-
+emitted after the
+        client has connected to the broker
 </dd>
-<dt>onDisconnectedV3(rc)</dt>
-<dd>
-emitted after the client has disconnected from
-        the broker (MQTT v3)
-</dd>
-<dt>onDisconnectedV5(rc, packetType)</dt>
+<dt>onDisconnected(rc, packetType)</dt>
 <dd>
 emitted after the client has
-        disconnected from the broker (MQTT v5)
+        disconnected from the broker
 </dd>
 <dt>onLog(level, message)</dt>
 <dd>
 emitted to send client log data
 </dd>
-<dt>onMessageV3(topic, payload, qos, retain)</dt>
-<dd>
-emitted after a message
-        has been received by the client (MQTT v3)
-</dd>
-<dt>onMessageV5(topic, payload, qos, retain, properties)</dt>
+<dt>onMessage(topic, payload, qos, retain, properties)</dt>
 <dd>
 emitted after
-        a message has been received by the client (MQTT v5)
+        a message has been received by the client
 </dd>
 <dt>onPublish(mid)</dt>
 <dd>
 emitted after a message has been published
 </dd>
-<dt>onSubscribeV3(mid, grantedQos)</dt>
-<dd>
-emitted after the client has
-        subscribed to some topics (MQTT v3)
-</dd>
-<dt>onSubscribeV5(mid, reasonCodes, properties)</dt>
+<dt>onSubscribe(mid, reasonCodes, properties)</dt>
 <dd>
 emitted after the
-        client has subscribed to some topics (MQTT v5)
+        client has subscribed to some topics
 </dd>
-<dt>onUnsubscribeV3(mid)</dt>
+<dt>onUnsubscribe(mid)</dt>
 <dd>
 emitted after the client has unsubscribed from
         some topics (MQTT v3)
 </dd>
-<dt>onUnsubscribeV5(mid, rc, packetType, properties)</dt>
+<dt>onUnsubscribe(mid, rc, packetType, properties)</dt>
 <dd>
 emitted after the
         client has unsubscribed from some topics (MQTT v5)
@@ -155,52 +132,32 @@
 <td>Private method to initialize the MQTT callback methods.</td>
 </tr>
 <tr>
-<td><a href="#MqttClient.__onConnectV3">__onConnectV3</a></td>
-<td>Private method to handle the connect to the broker (MQTT v3.1 and v3.1.1).</td>
+<td><a href="#MqttClient.__onConnect">__onConnect</a></td>
+<td>Private method to handle the connect to the broker.</td>
 </tr>
 <tr>
-<td><a href="#MqttClient.__onConnectV5">__onConnectV5</a></td>
-<td>Private method to handle the connect to the broker (MQTT v5.0).</td>
-</tr>
-<tr>
-<td><a href="#MqttClient.__onDisconnectedV3">__onDisconnectedV3</a></td>
-<td>Private method to handle the disconnect from the broker (MQTT v3.1 and v3.1.1).</td>
-</tr>
-<tr>
-<td><a href="#MqttClient.__onDisconnectedV5">__onDisconnectedV5</a></td>
-<td>Private method to handle the disconnect from the broker (MQTT v5.0).</td>
+<td><a href="#MqttClient.__onDisconnected">__onDisconnected</a></td>
+<td>Private method to handle the disconnect from the broker.</td>
 </tr>
 <tr>
 <td><a href="#MqttClient.__onLog">__onLog</a></td>
-<td>Private method to handle a log event (MQTT v3.1, v3.1.1 and v5.0).</td>
+<td>Private method to handle a log event.</td>
 </tr>
 <tr>
-<td><a href="#MqttClient.__onMessageV3">__onMessageV3</a></td>
-<td>Private method to handle a new message received from the broker (MQTT v3.1 and v3.1.1).</td>
-</tr>
-<tr>
-<td><a href="#MqttClient.__onMessageV5">__onMessageV5</a></td>
-<td>Private method to handle a new message received from the broker (MQTT v5.0).</td>
+<td><a href="#MqttClient.__onMessage">__onMessage</a></td>
+<td>Private method to handle a new message received from the broker.</td>
 </tr>
 <tr>
 <td><a href="#MqttClient.__onPublish">__onPublish</a></td>
-<td>Private method to handle the publishing of a message (MQTT v3.1, v3.1.1 and v5.0).</td>
-</tr>
-<tr>
-<td><a href="#MqttClient.__onSubscribeV3">__onSubscribeV3</a></td>
-<td>Private method to handle a subscribe event (MQTT v3.1 and v3.1.1).</td>
+<td>Private method to handle the publishing of a message.</td>
 </tr>
 <tr>
-<td><a href="#MqttClient.__onSubscribeV5">__onSubscribeV5</a></td>
-<td>Private method to handle a subscribe event (MQTT v5.0).</td>
+<td><a href="#MqttClient.__onSubscribe">__onSubscribe</a></td>
+<td>Private method to handle a subscribe event.</td>
 </tr>
 <tr>
-<td><a href="#MqttClient.__onUnsubscribeV3">__onUnsubscribeV3</a></td>
-<td>Private method to handle an unsubscribe event (MQTT v3.1 and v3.1.1).</td>
-</tr>
-<tr>
-<td><a href="#MqttClient.__onUnsubscribeV5">__onUnsubscribeV5</a></td>
-<td>Private method to handle an unsubscribe event (MQTT v5.0).</td>
+<td><a href="#MqttClient.__onUnsubscribe">__onUnsubscribe</a></td>
+<td>Private method to handle an unsubscribe event.</td>
 </tr>
 <tr>
 <td><a href="#MqttClient.clearLastWill">clearLastWill</a></td>
@@ -379,142 +336,89 @@
 </dl>
 <a NAME="MqttClient.__initCallbacks" ID="MqttClient.__initCallbacks"></a>
 <h4>MqttClient.__initCallbacks</h4>
-<b>__initCallbacks</b>(<i>protocol</i>)
+<b>__initCallbacks</b>(<i></i>)
 <p>
         Private method to initialize the MQTT callback methods.
 </p>
 
-<dl>
-
-<dt><i>protocol</i> (MqttProtocols)</dt>
-<dd>
-MQTT protocol version
-</dd>
-</dl>
-<a NAME="MqttClient.__onConnectV3" ID="MqttClient.__onConnectV3"></a>
-<h4>MqttClient.__onConnectV3</h4>
-<b>__onConnectV3</b>(<i>client, userdata, flags, rc, properties=None, </i>)
+<a NAME="MqttClient.__onConnect" ID="MqttClient.__onConnect"></a>
+<h4>MqttClient.__onConnect</h4>
+<b>__onConnect</b>(<i>_client, _userdata, connectFlags, rc, properties, </i>)
 <p>
-        Private method to handle the connect to the broker (MQTT v3.1 and v3.1.1).
+        Private method to handle the connect to the broker.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
-<dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
-<dd>
-user data
-</dd>
-<dt><i>flags</i> (dict)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-dictionary containing the response flags sent by the broker
-</dd>
-<dt><i>rc</i> (int)</dt>
-<dd>
-result code
-</dd>
-<dt><i>properties</i> (dict (optional))</dt>
-<dd>
-optional properties (defaults to None)
+reference to the client object (unused)
 </dd>
-</dl>
-<a NAME="MqttClient.__onConnectV5" ID="MqttClient.__onConnectV5"></a>
-<h4>MqttClient.__onConnectV5</h4>
-<b>__onConnectV5</b>(<i>client, userdata, flags, rc, properties=None, </i>)
-<p>
-        Private method to handle the connect to the broker (MQTT v5.0).
-</p>
-
-<dl>
-
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-reference to the client object
+user data (unused)
 </dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>connectFlags</i> (mqtt.ConnectFlags)</dt>
 <dd>
-user data
-</dd>
-<dt><i>flags</i> (dict)</dt>
-<dd>
-dictionary containing the response flags sent by the broker
+response flags sent by the broker
 </dd>
 <dt><i>rc</i> (paho.mqtt.ReasonCodes)</dt>
 <dd>
 reason code
 </dd>
-<dt><i>properties</i> (dict (optional))</dt>
+<dt><i>properties</i> (dict)</dt>
 <dd>
-optional properties (defaults to None)
+MQTT v5.0 properties received from the broker
 </dd>
 </dl>
-<a NAME="MqttClient.__onDisconnectedV3" ID="MqttClient.__onDisconnectedV3"></a>
-<h4>MqttClient.__onDisconnectedV3</h4>
-<b>__onDisconnectedV3</b>(<i>client, userdata, rc, </i>)
+<a NAME="MqttClient.__onDisconnected" ID="MqttClient.__onDisconnected"></a>
+<h4>MqttClient.__onDisconnected</h4>
+<b>__onDisconnected</b>(<i>_client, _userdata, _flags, rc, _properties=None, </i>)
 <p>
-        Private method to handle the disconnect from the broker (MQTT v3.1 and v3.1.1).
+        Private method to handle the disconnect from the broker.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
-<dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-user data
-</dd>
-<dt><i>rc</i> (int)</dt>
-<dd>
-result code
+reference to the client object (unused)
 </dd>
-</dl>
-<a NAME="MqttClient.__onDisconnectedV5" ID="MqttClient.__onDisconnectedV5"></a>
-<h4>MqttClient.__onDisconnectedV5</h4>
-<b>__onDisconnectedV5</b>(<i>client, userdata, rc, properties=None, </i>)
-<p>
-        Private method to handle the disconnect from the broker (MQTT v5.0).
-</p>
-
-<dl>
-
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-reference to the client object
+user data (unused)
 </dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_flags</i> (dict)</dt>
 <dd>
-user data
+dictionary containing the response flags sent by the broker
+            (unused)
 </dd>
 <dt><i>rc</i> (int or paho.mqtt.ReasonCodes)</dt>
 <dd>
 result code or reason code
 </dd>
-<dt><i>properties</i> (dict (optional))</dt>
+<dt><i>_properties</i> (dict (optional))</dt>
 <dd>
-optional properties (defaults to None)
+MQTT v5.0 properties received from the broker
+            (defaults to None) (unused)
 </dd>
 </dl>
 <a NAME="MqttClient.__onLog" ID="MqttClient.__onLog"></a>
 <h4>MqttClient.__onLog</h4>
-<b>__onLog</b>(<i>client, userdata, level, buf, </i>)
+<b>__onLog</b>(<i>_client, _userdata, level, buf, </i>)
 <p>
-        Private method to handle a log event (MQTT v3.1, v3.1.1 and v5.0).
+        Private method to handle a log event.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-reference to the client object
+reference to the client object (unused)
 </dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-user data
+user data (unused)
 </dd>
 <dt><i>level</i> (int)</dt>
 <dd>
@@ -525,45 +429,22 @@
 log message
 </dd>
 </dl>
-<a NAME="MqttClient.__onMessageV3" ID="MqttClient.__onMessageV3"></a>
-<h4>MqttClient.__onMessageV3</h4>
-<b>__onMessageV3</b>(<i>client, userdata, message, </i>)
+<a NAME="MqttClient.__onMessage" ID="MqttClient.__onMessage"></a>
+<h4>MqttClient.__onMessage</h4>
+<b>__onMessage</b>(<i>_client, _userdata, message, </i>)
 <p>
-        Private method to handle a new message received from the broker (MQTT v3.1
-        and v3.1.1).
+        Private method to handle a new message received from the broker.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
-<dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-user data
-</dd>
-<dt><i>message</i> (paho.mqtt.MQTTMessage)</dt>
-<dd>
-received message object
+reference to the client object (unused)
 </dd>
-</dl>
-<a NAME="MqttClient.__onMessageV5" ID="MqttClient.__onMessageV5"></a>
-<h4>MqttClient.__onMessageV5</h4>
-<b>__onMessageV5</b>(<i>client, userdata, message, </i>)
-<p>
-        Private method to handle a new message received from the broker (MQTT v5.0).
-</p>
-
-<dl>
-
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
-<dd>
-user data
+user data (unused)
 </dd>
 <dt><i>message</i> (paho.mqtt.MQTTMessage)</dt>
 <dd>
@@ -572,69 +453,50 @@
 </dl>
 <a NAME="MqttClient.__onPublish" ID="MqttClient.__onPublish"></a>
 <h4>MqttClient.__onPublish</h4>
-<b>__onPublish</b>(<i>client, userdata, mid, </i>)
+<b>__onPublish</b>(<i>_client, _userdata, mid, _reasonCode, _properties, </i>)
 <p>
-        Private method to handle the publishing of a message (MQTT v3.1, v3.1.1
-        and v5.0).
+        Private method to handle the publishing of a message.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-reference to the client object
+reference to the client object (unused)
 </dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-user data
+user data (unused)
 </dd>
 <dt><i>mid</i> (int)</dt>
 <dd>
 message ID
 </dd>
+<dt><i>_reasonCode</i> (paho.mqtt.ReasonCodes)</dt>
+<dd>
+reason code (unused)
+</dd>
+<dt><i>_properties</i> (dict)</dt>
+<dd>
+MQTT v5.0 properties received from the broker (unused)
+</dd>
 </dl>
-<a NAME="MqttClient.__onSubscribeV3" ID="MqttClient.__onSubscribeV3"></a>
-<h4>MqttClient.__onSubscribeV3</h4>
-<b>__onSubscribeV3</b>(<i>client, userdata, mid, grantedQos, </i>)
+<a NAME="MqttClient.__onSubscribe" ID="MqttClient.__onSubscribe"></a>
+<h4>MqttClient.__onSubscribe</h4>
+<b>__onSubscribe</b>(<i>_client, _userdata, mid, reasonCodes, properties, </i>)
 <p>
-        Private method to handle a subscribe event (MQTT v3.1 and v3.1.1).
+        Private method to handle a subscribe event.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
-<dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-user data
-</dd>
-<dt><i>mid</i> (int)</dt>
-<dd>
-message ID
-</dd>
-<dt><i>grantedQos</i> (list of int)</dt>
-<dd>
-list of granted QoS for each subscription request
+reference to the client object (unused)
 </dd>
-</dl>
-<a NAME="MqttClient.__onSubscribeV5" ID="MqttClient.__onSubscribeV5"></a>
-<h4>MqttClient.__onSubscribeV5</h4>
-<b>__onSubscribeV5</b>(<i>client, userdata, mid, reasonCodes, properties=None, </i>)
-<p>
-        Private method to handle a subscribe event (MQTT v5.0).
-</p>
-
-<dl>
-
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
-<dd>
-user data
+user data (unused)
 </dd>
 <dt><i>mid</i> (int)</dt>
 <dd>
@@ -644,62 +506,40 @@
 <dd>
 list of reason code for each subscribed topic
 </dd>
-<dt><i>properties</i> (dict (optional))</dt>
+<dt><i>properties</i> (dict)</dt>
 <dd>
-optional properties (defaults to None)
+MQTT v5.0 properties received from the broker
 </dd>
 </dl>
-<a NAME="MqttClient.__onUnsubscribeV3" ID="MqttClient.__onUnsubscribeV3"></a>
-<h4>MqttClient.__onUnsubscribeV3</h4>
-<b>__onUnsubscribeV3</b>(<i>client, userdata, mid, </i>)
+<a NAME="MqttClient.__onUnsubscribe" ID="MqttClient.__onUnsubscribe"></a>
+<h4>MqttClient.__onUnsubscribe</h4>
+<b>__onUnsubscribe</b>(<i>_client, _userdata, mid, reasonCodes, properties, </i>)
 <p>
-        Private method to handle an unsubscribe event (MQTT v3.1 and v3.1.1).
+        Private method to handle an unsubscribe event.
 </p>
 
 <dl>
 
-<dt><i>client</i> (paho.mqtt.Client)</dt>
+<dt><i>_client</i> (paho.mqtt.Client)</dt>
 <dd>
-reference to the client object
+reference to the client object (unused)
 </dd>
-<dt><i>userdata</i> (Any)</dt>
+<dt><i>_userdata</i> (Any)</dt>
 <dd>
-user data
+user data (unused)
 </dd>
 <dt><i>mid</i> (int)</dt>
 <dd>
 message ID
 </dd>
-</dl>
-<a NAME="MqttClient.__onUnsubscribeV5" ID="MqttClient.__onUnsubscribeV5"></a>
-<h4>MqttClient.__onUnsubscribeV5</h4>
-<b>__onUnsubscribeV5</b>(<i>client, userdata, mid, properties, reasonCodes, </i>)
-<p>
-        Private method to handle an unsubscribe event (MQTT v5.0).
-</p>
-
-<dl>
-
-<dt><i>client</i> (paho.mqtt.Client)</dt>
-<dd>
-reference to the client object
-</dd>
-<dt><i>userdata</i> (Any)</dt>
-<dd>
-user data
-</dd>
-<dt><i>mid</i> (int)</dt>
-<dd>
-message ID
-</dd>
-<dt><i>properties</i> (dict (optional))</dt>
-<dd>
-optional properties (defaults to None)
-</dd>
 <dt><i>reasonCodes</i> (list of paho.mqtt.ReasonCodes)</dt>
 <dd>
 list of reason code for each unsubscribed topic
 </dd>
+<dt><i>properties</i> (dict)</dt>
+<dd>
+MQTT v5.0 properties received from the broker
+</dd>
 </dl>
 <a NAME="MqttClient.clearLastWill" ID="MqttClient.clearLastWill"></a>
 <h4>MqttClient.clearLastWill</h4>
@@ -1088,35 +928,6 @@
 <div align="right"><a href="#top">Up</a></div>
 <hr />
 <hr />
-<a NAME="mqttConnackMessage" ID="mqttConnackMessage"></a>
-<h2>mqttConnackMessage</h2>
-<b>mqttConnackMessage</b>(<i>connackCode</i>)
-<p>
-    Module function to get the string associated with a CONNACK result.
-</p>
-
-<dl>
-
-<dt><i>connackCode</i> (int)</dt>
-<dd>
-result code of the connection request
-</dd>
-</dl>
-<dl>
-<dt>Return:</dt>
-<dd>
-textual representation for the result code
-</dd>
-</dl>
-<dl>
-<dt>Return Type:</dt>
-<dd>
-str
-</dd>
-</dl>
-<div align="right"><a href="#top">Up</a></div>
-<hr />
-<hr />
 <a NAME="mqttErrorMessage" ID="mqttErrorMessage"></a>
 <h2>mqttErrorMessage</h2>
 <b>mqttErrorMessage</b>(<i>mqttErrno</i>)
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.MqttMonitor.MqttMonitorWidget.html	Fri Apr 19 15:15:01 2024 +0200
@@ -191,10 +191,6 @@
 </tr>
 <tr>
 <td><a href="#MqttMonitorWidget.__topicUnsubscribed">__topicUnsubscribed</a></td>
-<td>Private slot to handle being unsubcribed from a topic (MQTT v3.1, MQTT v3.1.1).</td>
-</tr>
-<tr>
-<td><a href="#MqttMonitorWidget.__topicUnsubscribedV5">__topicUnsubscribedV5</a></td>
 <td>Private slot to handle being unsubscribed to topics (MQTT v5).</td>
 </tr>
 <tr>
@@ -394,16 +390,16 @@
 </dl>
 <a NAME="MqttMonitorWidget.__brokerConnected" ID="MqttMonitorWidget.__brokerConnected"></a>
 <h4>MqttMonitorWidget.__brokerConnected</h4>
-<b>__brokerConnected</b>(<i>flags, rc, packetType=None, properties=None</i>)
+<b>__brokerConnected</b>(<i>sessionPresent, rc, packetType, properties</i>)
 <p>
         Private slot to handle being connected to a broker.
 </p>
 
 <dl>
 
-<dt><i>flags</i> (dict)</dt>
+<dt><i>sessionPresent</i> (bool)</dt>
 <dd>
-flags set for the connection
+flag indicating an already present session
 </dd>
 <dt><i>rc</i> (int)</dt>
 <dd>
@@ -912,22 +908,7 @@
 </dl>
 <a NAME="MqttMonitorWidget.__topicUnsubscribed" ID="MqttMonitorWidget.__topicUnsubscribed"></a>
 <h4>MqttMonitorWidget.__topicUnsubscribed</h4>
-<b>__topicUnsubscribed</b>(<i>mid</i>)
-<p>
-        Private slot to handle being unsubcribed from a topic (MQTT v3.1,
-        MQTT v3.1.1).
-</p>
-
-<dl>
-
-<dt><i>mid</i> (int)</dt>
-<dd>
-ID of the unsubscribe request
-</dd>
-</dl>
-<a NAME="MqttMonitorWidget.__topicUnsubscribedV5" ID="MqttMonitorWidget.__topicUnsubscribedV5"></a>
-<h4>MqttMonitorWidget.__topicUnsubscribedV5</h4>
-<b>__topicUnsubscribedV5</b>(<i>mid, rc, packetType, properties</i>)
+<b>__topicUnsubscribed</b>(<i>mid, rc=None, packetType=None, properties=None</i>)
 <p>
         Private slot to handle being unsubscribed to topics (MQTT v5).
 </p>
--- a/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.PluginMqttMonitor.html	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/Documentation/source/Plugin_Mqtt_Monitor.PluginMqttMonitor.html	Fri Apr 19 15:15:01 2024 +0200
@@ -233,16 +233,16 @@
 <hr />
 <a NAME="createMqttPage" ID="createMqttPage"></a>
 <h2>createMqttPage</h2>
-<b>createMqttPage</b>(<i>configDlg, </i>)
+<b>createMqttPage</b>(<i>_configDlg, </i>)
 <p>
     Module function to create the autocompletion configuration page.
 </p>
 
 <dl>
 
-<dt><i>configDlg</i> (ConfigurationWidget)</dt>
+<dt><i>_configDlg</i> (ConfigurationWidget)</dt>
 <dd>
-reference to the configuration dialog
+reference to the configuration dialog (unused)
 </dd>
 </dl>
 <dl>
--- a/MqttMonitor/MqttClient.py	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/MqttClient.py	Fri Apr 19 15:15:01 2024 +0200
@@ -22,44 +22,31 @@
     """
     Class implementing a PyQt wrapper around the paho MQTT client.
 
-    @signal onConnectV3(flags, rc) emitted after the client has connected to
-        the broker (MQTT v3)
-    @signal onConnectV5(flags, rc, packetType, properties emitted after the
-        client has connected to the broker (MQTT v5)
-    @signal onDisconnectedV3(rc) emitted after the client has disconnected from
-        the broker (MQTT v3)
-    @signal onDisconnectedV5(rc, packetType) emitted after the client has
-        disconnected from the broker (MQTT v5)
+    @signal onConnect(connectFlags, rc, packetType, properties) emitted after the
+        client has connected to the broker
+    @signal onDisconnected(rc, packetType) emitted after the client has
+        disconnected from the broker
     @signal onLog(level, message) emitted to send client log data
-    @signal onMessageV3(topic, payload, qos, retain) emitted after a message
-        has been received by the client (MQTT v3)
-    @signal onMessageV5(topic, payload, qos, retain, properties) emitted after
-        a message has been received by the client (MQTT v5)
+    @signal onMessage(topic, payload, qos, retain, properties) emitted after
+        a message has been received by the client
     @signal onPublish(mid) emitted after a message has been published
-    @signal onSubscribeV3(mid, grantedQos) emitted after the client has
-        subscribed to some topics (MQTT v3)
-    @signal onSubscribeV5(mid, reasonCodes, properties) emitted after the
-        client has subscribed to some topics (MQTT v5)
-    @signal onUnsubscribeV3(mid) emitted after the client has unsubscribed from
+    @signal onSubscribe(mid, reasonCodes, properties) emitted after the
+        client has subscribed to some topics
+    @signal onUnsubscribe(mid) emitted after the client has unsubscribed from
         some topics (MQTT v3)
-    @signal onUnsubscribeV5(mid, rc, packetType, properties) emitted after the
+    @signal onUnsubscribe(mid, rc, packetType, properties) emitted after the
         client has unsubscribed from some topics (MQTT v5)
     @signal connectTimeout() emitted to indicate, that a connection attempt
         timed out
     """
 
-    onConnectV3 = pyqtSignal(dict, int)
-    onConnectV5 = pyqtSignal(dict, int, int, dict)
-    onDisconnectedV3 = pyqtSignal(int)
-    onDisconnectedV5 = pyqtSignal(int, int)
+    onConnect = pyqtSignal(bool, int, int, dict)
+    onDisconnected = pyqtSignal(int, int)
     onLog = pyqtSignal(int, str)
-    onMessageV3 = pyqtSignal(str, bytes, int, bool)
-    onMessageV5 = pyqtSignal(str, bytes, int, bool, dict)
+    onMessage = pyqtSignal(str, bytes, int, bool, dict)
     onPublish = pyqtSignal(int)
-    onSubscribeV3 = pyqtSignal(int, tuple)
-    onSubscribeV5 = pyqtSignal(int, list, dict)
-    onUnsubscribeV3 = pyqtSignal(int)
-    onUnsubscribeV5 = pyqtSignal(int, int, int, dict)
+    onSubscribe = pyqtSignal(int, list, dict)
+    onUnsubscribe = pyqtSignal((int,), (int, int, int, dict))
 
     connectTimeout = pyqtSignal()
 
@@ -113,8 +100,7 @@
         self.__connectTimeoutTimer.setInterval(MqttClient.DefaultConnectTimeout * 1000)
         self.__connectTimeoutTimer.timeout.connect(self.__connectTimeout)
 
-        self.onConnectV3.connect(self.__connectTimeoutTimer.stop)
-        self.onConnectV5.connect(self.__connectTimeoutTimer.stop)
+        self.onConnect.connect(self.__connectTimeoutTimer.stop)
 
         self.__cleanSession = cleanSession
         self.__protocol = protocol
@@ -124,6 +110,7 @@
             cleanSession = None
 
         self.__mqttClient = mqtt.Client(
+            mqtt.CallbackAPIVersion.VERSION2,
             client_id=clientId,
             clean_session=cleanSession,
             userdata=userdata,
@@ -131,179 +118,68 @@
             transport=transport,
         )
 
-        self.__initCallbacks(protocol)
+        self.__initCallbacks()
 
-    def __initCallbacks(self, protocol):
+    def __initCallbacks(self):
         """
         Private method to initialize the MQTT callback methods.
-
-        @param protocol MQTT protocol version
-        @type MqttProtocols
         """
-        if protocol in (MqttProtocols.MQTTv31, MqttProtocols.MQTTv311):
-            self.__mqttClient.on_connect = self.__onConnectV3
-            self.__mqttClient.on_disconnect = self.__onDisconnectedV3
-            self.__mqttClient.on_subscribe = self.__onSubscribeV3
-            self.__mqttClient.on_unsubscribe = self.__onUnsubscribeV3
-            self.__mqttClient.on_message = self.__onMessageV3
-        else:
-            self.__mqttClient.on_connect = self.__onConnectV5
-            self.__mqttClient.on_disconnect = self.__onDisconnectedV5
-            self.__mqttClient.on_subscribe = self.__onSubscribeV5
-            self.__mqttClient.on_unsubscribe = self.__onUnsubscribeV5
-            self.__mqttClient.on_message = self.__onMessageV5
-
+        self.__mqttClient.on_connect = self.__onConnect
+        self.__mqttClient.on_disconnect = self.__onDisconnected
         self.__mqttClient.on_log = self.__onLog
+        self.__mqttClient.on_message = self.__onMessage
         self.__mqttClient.on_publish = self.__onPublish
-
-    def __onConnectV3(
-        self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
-        flags,
-        rc,
-        properties=None,  # noqa: U100
-    ):
-        """
-        Private method to handle the connect to the broker (MQTT v3.1 and v3.1.1).
+        self.__mqttClient.on_subscribe = self.__onSubscribe
+        self.__mqttClient.on_unsubscribe = self.__onUnsubscribe
 
-        @param client reference to the client object
-        @type paho.mqtt.Client
-        @param userdata user data
-        @type Any
-        @param flags dictionary containing the response flags sent by the broker
-        @type dict
-        @param rc result code
-        @type int
-        @param properties optional properties (defaults to None)
-        @type dict (optional)
-        """
-        self.onConnectV3.emit(flags, rc)
-
-    def __onDisconnectedV3(
+    def __onConnect(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
+        _client,
+        _userdata,
+        connectFlags,
         rc,
-    ):
-        """
-        Private method to handle the disconnect from the broker (MQTT v3.1 and v3.1.1).
-
-        @param client reference to the client object
-        @type paho.mqtt.Client
-        @param userdata user data
-        @type Any
-        @param rc result code
-        @type int
-        """
-        self.onDisconnectedV3.emit(rc)
-
-    def __onSubscribeV3(
-        self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
-        mid,
-        grantedQos,
+        properties,
     ):
         """
-        Private method to handle a subscribe event (MQTT v3.1 and v3.1.1).
+        Private method to handle the connect to the broker.
 
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
-        @param mid message ID
-        @type int
-        @param grantedQos list of granted QoS for each subscription request
-        @type list of int
+        @param connectFlags response flags sent by the broker
+        @type mqtt.ConnectFlags
+        @param rc reason code
+        @type paho.mqtt.ReasonCodes
+        @param properties MQTT v5.0 properties received from the broker
+        @type dict
         """
-        self.onSubscribeV3.emit(mid, grantedQos)
+        self.onConnect.emit(
+            connectFlags.session_present, rc.value, rc.packetType, properties.json()
+        )
 
-    def __onUnsubscribeV3(
+    def __onDisconnected(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
-        mid,
-    ):
-        """
-        Private method to handle an unsubscribe event (MQTT v3.1 and v3.1.1).
-
-        @param client reference to the client object
-        @type paho.mqtt.Client
-        @param userdata user data
-        @type Any
-        @param mid message ID
-        @type int
-        """
-        self.onUnsubscribeV3.emit(mid)
-
-    def __onMessageV3(
-        self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
-        message,
+        _client,
+        _userdata,
+        _flags,
+        rc,
+        _properties=None,
     ):
         """
-        Private method to handle a new message received from the broker (MQTT v3.1
-        and v3.1.1).
-
-        @param client reference to the client object
-        @type paho.mqtt.Client
-        @param userdata user data
-        @type Any
-        @param message received message object
-        @type paho.mqtt.MQTTMessage
-        """
-        self.onMessageV3.emit(
-            message.topic, message.payload, message.qos, message.retain
-        )
+        Private method to handle the disconnect from the broker.
 
-    def __onConnectV5(
-        self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
-        flags,
-        rc,
-        properties=None,
-    ):
-        """
-        Private method to handle the connect to the broker (MQTT v5.0).
-
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
-        @param flags dictionary containing the response flags sent by the broker
+        @param _flags dictionary containing the response flags sent by the broker
+            (unused)
         @type dict
-        @param rc reason code
-        @type paho.mqtt.ReasonCodes
-        @param properties optional properties (defaults to None)
-        @type dict (optional)
-        """
-        self.onConnectV5.emit(
-            flags,
-            rc.value,
-            rc.packetType,
-            properties.json() if properties is not None else {},
-        )
-
-    def __onDisconnectedV5(
-        self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
-        rc,
-        properties=None,  # noqa: U100
-    ):
-        """
-        Private method to handle the disconnect from the broker (MQTT v5.0).
-
-        @param client reference to the client object
-        @type paho.mqtt.Client
-        @param userdata user data
-        @type Any
         @param rc result code or reason code
         @type int or paho.mqtt.ReasonCodes
-        @param properties optional properties (defaults to None)
+        @param _properties MQTT v5.0 properties received from the broker
+            (defaults to None) (unused)
         @type dict (optional)
         """
         if isinstance(rc, int):
@@ -312,102 +188,98 @@
         else:
             packetType = rc.packetType
             resultCode = rc.value
-        self.onDisconnectedV5.emit(resultCode, packetType)
+        self.onDisconnected.emit(resultCode, packetType)
 
-    def __onSubscribeV5(
+    def __onSubscribe(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
+        _client,
+        _userdata,
         mid,
         reasonCodes,
-        properties=None,
+        properties,
     ):
         """
-        Private method to handle a subscribe event (MQTT v5.0).
+        Private method to handle a subscribe event.
 
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
         @param mid message ID
         @type int
         @param reasonCodes list of reason code for each subscribed topic
         @type list of paho.mqtt.ReasonCodes
-        @param properties optional properties (defaults to None)
-        @type dict (optional)
+        @param properties MQTT v5.0 properties received from the broker
+        @type dict
         """
-        self.onSubscribeV5.emit(
-            mid,
-            reasonCodes,
-            properties.json() if properties is not None else {},
-        )
+        self.onSubscribe.emit(mid, reasonCodes, properties.json())
 
-    def __onUnsubscribeV5(
+    def __onUnsubscribe(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
+        _client,
+        _userdata,
         mid,
+        reasonCodes,
         properties,
-        reasonCodes,
     ):
         """
-        Private method to handle an unsubscribe event (MQTT v5.0).
+        Private method to handle an unsubscribe event.
 
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
         @param mid message ID
         @type int
-        @param properties optional properties (defaults to None)
-        @type dict (optional)
         @param reasonCodes list of reason code for each unsubscribed topic
         @type list of paho.mqtt.ReasonCodes
+        @param properties MQTT v5.0 properties received from the broker
+        @type dict
         """
-        self.onUnsubscribeV5.emit(
-            mid,
-            reasonCodes.value,
-            reasonCodes.packetType,
-            properties.json() if properties is not None else {},
-        )
+        if reasonCodes:
+            self.onUnsubscribe[int, int, int, dict].emit(
+                mid, reasonCodes[0].value, reasonCodes[0].packetType, properties.json()
+            )
+        else:
+            self.onUnsubscribe[int].emit(mid)
 
-    def __onMessageV5(
+    def __onMessage(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
+        _client,
+        _userdata,
         message,
     ):
         """
-        Private method to handle a new message received from the broker (MQTT v5.0).
+        Private method to handle a new message received from the broker.
 
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
         @param message received message object
         @type paho.mqtt.MQTTMessage
         """
-        self.onMessageV5.emit(
+        self.onMessage.emit(
             message.topic,
             message.payload,
             message.qos,
             message.retain,
-            message.properties.json(),
+            message.properties.json() if message.properties is not None else {},
         )
 
     def __onLog(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
+        _client,
+        _userdata,
         level,
         buf,
     ):
         """
-        Private method to handle a log event (MQTT v3.1, v3.1.1 and v5.0).
+        Private method to handle a log event.
 
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
         @param level severity of the log message
         @type int
@@ -418,20 +290,25 @@
 
     def __onPublish(
         self,
-        client,  # noqa: U100
-        userdata,  # noqa: U100
+        _client,
+        _userdata,
         mid,
+        _reasonCode,
+        _properties,
     ):
         """
-        Private method to handle the publishing of a message (MQTT v3.1, v3.1.1
-        and v5.0).
+        Private method to handle the publishing of a message.
 
-        @param client reference to the client object
+        @param _client reference to the client object (unused)
         @type paho.mqtt.Client
-        @param userdata user data
+        @param _userdata user data (unused)
         @type Any
         @param mid message ID
         @type int
+        @param _reasonCode reason code (unused)
+        @type paho.mqtt.ReasonCodes
+        @param _properties MQTT v5.0 properties received from the broker (unused)
+        @type dict
         """
         self.onPublish.emit(mid)
 
@@ -745,7 +622,7 @@
             "TlsCaCert", "TlsClientCert", "TlsClientKey", "UserProperties".
         @rtype dict
         """
-        from PluginMqttMonitor import mqttPluginObject
+        from PluginMqttMonitor import mqttPluginObject  # noqa: I102
 
         return {
             "ClientId": "ERIC7_MQTT_MONITOR_CLIENT",
@@ -882,43 +759,6 @@
         return props
 
 
-def mqttConnackMessage(connackCode):
-    """
-    Module function to get the string associated with a CONNACK result.
-
-    @param connackCode result code of the connection request
-    @type int
-    @return textual representation for the result code
-    @rtype str
-    """
-    if connackCode == mqtt.CONNACK_ACCEPTED:
-        return QCoreApplication.translate("MqttConnackMessage", "Connection Accepted.")
-    elif connackCode == mqtt.CONNACK_REFUSED_PROTOCOL_VERSION:
-        return QCoreApplication.translate(
-            "MqttConnackMessage", "Connection Refused: unacceptable protocol version."
-        )
-    elif connackCode == mqtt.CONNACK_REFUSED_IDENTIFIER_REJECTED:
-        return QCoreApplication.translate(
-            "MqttConnackMessage", "Connection Refused: identifier rejected."
-        )
-    elif connackCode == mqtt.CONNACK_REFUSED_SERVER_UNAVAILABLE:
-        return QCoreApplication.translate(
-            "MqttConnackMessage", "Connection Refused: broker unavailable."
-        )
-    elif connackCode == mqtt.CONNACK_REFUSED_BAD_USERNAME_PASSWORD:
-        return QCoreApplication.translate(
-            "MqttConnackMessage", "Connection Refused: bad user name or password."
-        )
-    elif connackCode == mqtt.CONNACK_REFUSED_NOT_AUTHORIZED:
-        return QCoreApplication.translate(
-            "MqttConnackMessage", "Connection Refused: not authorised."
-        )
-    else:
-        return QCoreApplication.translate(
-            "MqttConnackMessage", "Connection Refused: unknown reason."
-        )
-
-
 def mqttErrorMessage(mqttErrno):
     """
     Module function to get the error string associated with an MQTT error
--- a/MqttMonitor/MqttConnectionOptionsDialog.py	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/MqttConnectionOptionsDialog.py	Fri Apr 19 15:15:01 2024 +0200
@@ -166,9 +166,9 @@
         if checked:
             # handle the selection only
             if self.connectPropertiesButton.isChecked():
-                self.__userProperties[
-                    "disconnect"
-                ] = self.propertiesWidget.getProperties()
+                self.__userProperties["disconnect"] = (
+                    self.propertiesWidget.getProperties()
+                )
                 self.propertiesWidget.setProperties(self.__userProperties["connect"])
             else:
                 self.__userProperties["connect"] = self.propertiesWidget.getProperties()
@@ -272,12 +272,12 @@
             if self.connectPropertiesButton.isChecked():
                 self.__userProperties["connect"] = self.propertiesWidget.getProperties()
             else:
-                self.__userProperties[
-                    "disconnect"
-                ] = self.propertiesWidget.getProperties()
-            self.__userProperties[
-                "use_connect"
-            ] = self.samePropertiesCheckBox.isChecked()
+                self.__userProperties["disconnect"] = (
+                    self.propertiesWidget.getProperties()
+                )
+            self.__userProperties["use_connect"] = (
+                self.samePropertiesCheckBox.isChecked()
+            )
         else:
             self.__userProperties = {}
             self.__willProperties = []
--- a/MqttMonitor/MqttConnectionProfilesDialog.py	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/MqttConnectionProfilesDialog.py	Fri Apr 19 15:15:01 2024 +0200
@@ -306,12 +306,12 @@
             if self.connectPropertiesButton.isChecked():
                 self.__userProperties["connect"] = self.propertiesWidget.getProperties()
             else:
-                self.__userProperties[
-                    "disconnect"
-                ] = self.propertiesWidget.getProperties()
-            self.__userProperties[
-                "use_connect"
-            ] = self.samePropertiesCheckBox.isChecked()
+                self.__userProperties["disconnect"] = (
+                    self.propertiesWidget.getProperties()
+                )
+            self.__userProperties["use_connect"] = (
+                self.samePropertiesCheckBox.isChecked()
+            )
         else:
             self.__userProperties = {}
             self.__willProperties = []
@@ -342,15 +342,15 @@
             if self.tlsCertsFileButton.isChecked():
                 connectionProfile["TlsCaCert"] = self.tlsCertsFilePicker.text()
             elif self.tlsSelfSignedCertsButton.isChecked():
-                connectionProfile[
-                    "TlsCaCert"
-                ] = self.tlsSelfSignedCertsFilePicker.text()
-                connectionProfile[
-                    "TlsClientCert"
-                ] = self.tlsSelfSignedClientCertFilePicker.text()
-                connectionProfile[
-                    "TlsClientKey"
-                ] = self.tlsSelfSignedClientKeyFilePicker.text()
+                connectionProfile["TlsCaCert"] = (
+                    self.tlsSelfSignedCertsFilePicker.text()
+                )
+                connectionProfile["TlsClientCert"] = (
+                    self.tlsSelfSignedClientCertFilePicker.text()
+                )
+                connectionProfile["TlsClientKey"] = (
+                    self.tlsSelfSignedClientKeyFilePicker.text()
+                )
 
         self.__profiles[profileName] = connectionProfile
         self.__profilesChanged = True
@@ -902,9 +902,9 @@
         if checked:
             # handle the selection only
             if self.connectPropertiesButton.isChecked():
-                self.__userProperties[
-                    "disconnect"
-                ] = self.propertiesWidget.getProperties()
+                self.__userProperties["disconnect"] = (
+                    self.propertiesWidget.getProperties()
+                )
                 self.propertiesWidget.setProperties(self.__userProperties["connect"])
             else:
                 self.__userProperties["connect"] = self.propertiesWidget.getProperties()
--- a/MqttMonitor/MqttMonitorWidget.py	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/MqttMonitorWidget.py	Fri Apr 19 15:15:01 2024 +0200
@@ -33,12 +33,7 @@
     # imports for eric < 23.1
     from eric7.Utilities import toNativeSeparators
 
-from .MqttClient import (
-    MqttClient,
-    mqttConnackMessage,
-    mqttErrorMessage,
-    mqttLogLevelString,
-)
+from .MqttClient import MqttClient, mqttErrorMessage, mqttLogLevelString
 from .MqttProtocols import MqttProtocols
 from .MqttReasonCodes import mqttReasonCode
 from .Ui_MqttMonitorWidget import Ui_MqttMonitorWidget
@@ -145,7 +140,7 @@
                 MqttClient.LogNotice: QBrush(Qt.GlobalColor.green),
                 MqttClient.LogWarning: QBrush(Qt.GlobalColor.yellow),
                 MqttClient.LogError: QBrush(Qt.GlobalColor.red),
-                MqttClient.LogDisabled: QBrush(Qt.GlobalColor.magenta)
+                MqttClient.LogDisabled: QBrush(Qt.GlobalColor.magenta),
                 # reuse LogDisabled for unknown log levels
             }
 
@@ -307,18 +302,14 @@
         )
 
         # connect the MQTT client signals
-        client.onConnectV3.connect(self.__brokerConnected)
-        client.onConnectV5.connect(self.__brokerConnected)
-        client.onDisconnectedV3.connect(self.__brokerDisconnected)
-        client.onDisconnectedV5.connect(self.__brokerDisconnected)
+        client.onConnect.connect(self.__brokerConnected)
+        client.onDisconnected.connect(self.__brokerDisconnected)
         client.onLog.connect(self.__clientLog)
-        client.onMessageV3.connect(self.__messageReceived)
-        client.onMessageV5.connect(self.__messageReceived)
+        client.onMessage.connect(self.__messageReceived)
         client.onPublish.connect(self.__messagePublished)
-        client.onSubscribeV3.connect(self.__topicSubscribed)
-        client.onSubscribeV5.connect(self.__topicSubscribedV5)
-        client.onUnsubscribeV3.connect(self.__topicUnsubscribed)
-        client.onUnsubscribeV5.connect(self.__topicUnsubscribedV5)
+        client.onSubscribe.connect(self.__topicSubscribedV5)
+        client.onUnsubscribe[int].connect(self.__topicUnsubscribed)
+        client.onUnsubscribe[int, int, int, dict].connect(self.__topicUnsubscribed)
 
         client.connectTimeout.connect(self.__connectTimeout)
 
@@ -355,14 +346,13 @@
     ## Slots handling MQTT related signals
     #######################################################################
 
-    @pyqtSlot(dict, int)
-    @pyqtSlot(dict, int, int, dict)
-    def __brokerConnected(self, flags, rc, packetType=None, properties=None):
+    @pyqtSlot(bool, int, int, dict)
+    def __brokerConnected(self, sessionPresent, rc, packetType, properties):
         """
         Private slot to handle being connected to a broker.
 
-        @param flags flags set for the connection
-        @type dict
+        @param sessionPresent flag indicating an already present session
+        @type bool
         @param rc CONNACK result code or MQTTv5 reason code
         @type int
         @param packetType packet type as reported by the client
@@ -377,16 +367,7 @@
             self.__connectedToBroker = True
             self.__connectionOptions = None
 
-        try:
-            sessionPresent = flags["session present"] == 1
-        except KeyError:
-            sessionPresent = False
-
-        msg = (
-            mqttReasonCode(rc, packetType)
-            if packetType is not None
-            else mqttConnackMessage(rc)
-        )
+        msg = mqttReasonCode(rc, packetType)
         if sessionPresent:
             msg = self.tr("{0} - Session still present").format(msg)
         self.__flashBrokerStatusLabel(msg)
@@ -595,23 +576,8 @@
         self.__topicSubscribed(mid)
 
     @pyqtSlot(int)
-    def __topicUnsubscribed(self, mid):
-        """
-        Private slot to handle being unsubcribed from a topic (MQTT v3.1,
-        MQTT v3.1.1).
-
-        @param mid ID of the unsubscribe request
-        @type int
-        """
-        if mid in self.__topicQueue:
-            topic = self.__topicQueue.pop(mid)
-            with contextlib.suppress(ValueError):
-                self.__subscribedTopics.remove(topic)
-                self.__updateUnsubscribeTopicComboBox()
-                self.__updatePublishTopicComboBox()
-
     @pyqtSlot(int, int, int, dict)
-    def __topicUnsubscribedV5(self, mid, rc, packetType, properties):
+    def __topicUnsubscribed(self, mid, rc=None, packetType=None, properties=None):
         """
         Private slot to handle being unsubscribed to topics (MQTT v5).
 
@@ -625,13 +591,19 @@
             properties
         @type dict
         """
-        msg = mqttReasonCode(rc, packetType)
-        self.__flashBrokerStatusLabel(msg)
+        if rc is not None:
+            msg = mqttReasonCode(rc, packetType)
+            self.__flashBrokerStatusLabel(msg)
+
+            if properties:
+                self.__showProperties("Unsubscribe", properties)
 
-        if properties:
-            self.__showProperties("Unsubscribe", properties)
-
-        self.__topicUnsubscribed(mid)
+        if mid in self.__topicQueue:
+            topic = self.__topicQueue.pop(mid)
+            with contextlib.suppress(ValueError):
+                self.__subscribedTopics.remove(topic)
+                self.__updateUnsubscribeTopicComboBox()
+                self.__updatePublishTopicComboBox()
 
     #######################################################################
     ## Slots handling UI interactions
Binary file MqttMonitor/i18n/mqttmonitor_de.qm has changed
--- a/MqttMonitor/i18n/mqttmonitor_de.ts	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/i18n/mqttmonitor_de.ts	Fri Apr 19 15:15:01 2024 +0200
@@ -1,1888 +1,1850 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="de_DE">
-<context>
-    <name>MqttConnackMessage</name>
-    <message>
-        <location filename="../MqttClient.py" line="826"/>
-        <source>Connection Accepted.</source>
-        <translation>Verbindung akzeptiert.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="828"/>
-        <source>Connection Refused: unacceptable protocol version.</source>
-        <translation>Verbindung abgelehnt: inakzeptable Protokollversion.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="832"/>
-        <source>Connection Refused: identifier rejected.</source>
-        <translation>Verbindung abgelehnt: Identifizierer abgelehnt.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="836"/>
-        <source>Connection Refused: broker unavailable.</source>
-        <translation>Verbindung abgelehnt: Broker nicht verfügbar.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="840"/>
-        <source>Connection Refused: bad user name or password.</source>
-        <translation>Verbindung abgelehnt: Nutzername oder Kennwort ungültig.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="844"/>
-        <source>Connection Refused: not authorised.</source>
-        <translation>Verbindung abgelehnt: nicht autorisiert.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="848"/>
-        <source>Connection Refused: unknown reason.</source>
-        <translation>Verbindung abgelehnt: unbekante Ursache.</translation>
-    </message>
-</context>
-<context>
+  <context>
     <name>MqttConnectionOptionsDialog</name>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>MQTT Connection Options</source>
-        <translation>MQTT Verbindungsoptionen</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>MQTT Connection Options</source>
+      <translation>MQTT Verbindungsoptionen</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>General</source>
+      <translation>Allgemein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>General</source>
-        <translation>Allgemein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Client ID:</source>
+      <translation>Client ID:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Client ID:</source>
-        <translation>Client ID:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the ID string for this client</source>
+      <translation>Gib eine ID für diesen Client ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the ID string for this client</source>
-        <translation>Gib eine ID für diesen Client ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Press to generate a client ID</source>
+      <translation>Drücken, um eine Client ID zu erzeugen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Press to generate a client ID</source>
-        <translation>Drücken, um eine Client ID zu erzeugen</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Generate</source>
+      <translation>Erzeugen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Generate</source>
-        <translation>Erzeugen</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>MQTT Protocol</source>
+      <translation>MQTT Protokoll</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>MQTT Protocol</source>
-        <translation>MQTT Protokoll</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1 protocol</source>
+      <translation>Auswählen, um das MQTT 3.1 Protokoll zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1 protocol</source>
-        <translation>Auswählen, um das MQTT 3.1 Protokoll zu verwenden</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>v 3.1</source>
+      <translation>v 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>v 3.1</source>
-        <translation>v 3.1</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1.1 protocol</source>
+      <translation>Auswählen, um das MQTT 3.1.1 Protokoll zu verwenden</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>v 3.1.1</source>
+      <translation>v 3.1.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1.1 protocol</source>
-        <translation>Auswählen, um das MQTT 3.1.1 Protokoll zu verwenden</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the MQTT 5.0 protocol</source>
+      <translation>Auswählen, um das MQTT 5.0 Protokoll zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>v 3.1.1</source>
-        <translation>v 3.1.1</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the MQTT 5.0 protocol</source>
-        <translation>Auswählen, um das MQTT 5.0 Protokoll zu verwenden</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>v 5.0</source>
-        <translation>v 5.0</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>v 5.0</source>
+      <translation>v 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Connection Timeout:</source>
-        <translation>Verbindungszeitlimit:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the connection timeout in seconds</source>
-        <translation>Gib das Verbindungszeitlimit in Sekunden ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Connection Timeout:</source>
+      <translation>Verbindungszeitlimit:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source> s</source>
-        <translation> s</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the connection timeout in seconds</source>
+      <translation>Gib das Verbindungszeitlimit in Sekunden ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Keep Alive Interval:</source>
-        <translation>Keepalive Intervall:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source> s</source>
+      <translation> s</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the keep alive interval in seconds</source>
-        <translation>Gib das Keepalive Intervall in Sekunden ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Keep Alive Interval:</source>
+      <translation>Keepalive Intervall:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to start with a clean session</source>
-        <translation>Auswählen, um mit einer neuen Sitzung zu starten</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the keep alive interval in seconds</source>
+      <translation>Gib das Keepalive Intervall in Sekunden ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Clean Session</source>
-        <translation>Neue Sitzung</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>User Credentials</source>
-        <translation>Nutzerberechtigungen</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to start with a clean session</source>
+      <translation>Auswählen, um mit einer neuen Sitzung zu starten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>User Name:</source>
-        <translation>Nutzername:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the user name</source>
-        <translation>Gib den Nutzernamen ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Clean Session</source>
+      <translation>Neue Sitzung</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Password:</source>
-        <translation>Kennwort:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>User Credentials</source>
+      <translation>Nutzerberechtigungen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the password</source>
-        <translation>Gib das Kennwort ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>User Name:</source>
+      <translation>Nutzername:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Last Will</source>
-        <translation>Letzter Wille</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the topic of the last will</source>
-        <translation>Gib das Thema für den letzten Willen ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the user name</source>
+      <translation>Gib den Nutzernamen ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>QoS:</source>
-        <translation>QoS:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Password:</source>
+      <translation>Kennwort:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the desired QoS value</source>
-        <translation>Gib den gewünschten QoS Wert ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to retain the last will message</source>
-        <translation>Auswählen, um die Nachricht des letzten Willens zu behalten</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the password</source>
+      <translation>Gib das Kennwort ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Retain</source>
-        <translation>Behalten</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Press to edit the user properties</source>
-        <translation>Drücken, um die &apos;User Properties&apos; zu bearbeiten</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Last Will</source>
+      <translation>Letzter Wille</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the last will message to be sent</source>
-        <translation>Gib die zu sendende Nachricht des letzten Willens ein</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the topic of the last will</source>
+      <translation>Gib das Thema für den letzten Willen ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>SSL/TLS</source>
-        <translation>SSL/TLS</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to enable SSL/TLS connections</source>
-        <translation>Auswählen, um SSL/TLS Verbindungen zu aktivieren</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>QoS:</source>
+      <translation>QoS:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>SSL/TLS Enabled</source>
-        <translation>SSL/TLS aktiviert</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the desired QoS value</source>
+      <translation>Gib den gewünschten QoS Wert ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>CA File:</source>
-        <translation>CA Zertifikatsdatei:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to retain the last will message</source>
+      <translation>Auswählen, um die Nachricht des letzten Willens zu behalten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the full path to the CA certificate file; leave empty to use platform default</source>
-        <translation>Gib den vollständigen Pfad zur CA Zertifikatsdatei ein; leer lassen, um den Plattformstandard zu verwenden</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>User Properties</source>
-        <translation>Benutzereigenschaften</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Retain</source>
+      <translation>Behalten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to edit the CONNECT user properties</source>
-        <translation>Auswählen, um die CONNECT Benutzereigenschaften zu bearbeiten</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>CONNECT</source>
-        <translation>CONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Press to edit the user properties</source>
+      <translation>Drücken, um die 'User Properties' zu bearbeiten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to edit the DISCONNECT user properties</source>
-        <translation>Auswählen, um die DISCONNECT Benutzereigenschaften zu bearbeiten</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the last will message to be sent</source>
+      <translation>Gib die zu sendende Nachricht des letzten Willens ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>DISCONNECT</source>
-        <translation>DISCONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>SSL/TLS</source>
+      <translation>SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the CONNECT user properties when disconnecting</source>
-        <translation>Auswählen, um die CONNECT Benutzereigenschaften auch zur Trennung zu verwenden</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Use CONNECT properties for DISCONNECT</source>
-        <translation>Verwende CONNECT Benutzereigenschaften für DISCONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to enable SSL/TLS connections</source>
+      <translation>Auswählen, um SSL/TLS Verbindungen zu aktivieren</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="53"/>
-        <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-        <translation>Zertifikatdateien (*.crt *.pem);;Alle Dateien (*)</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation>SSL/TLS aktiviert</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="82"/>
-        <source>Invalid Connection Parameters</source>
-        <translation>Ungültige Verbindungsparameter</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="83"/>
-        <source>An empty Client ID requires a clean session.</source>
-        <translation>Eine leere Client ID setzt eine neue Session voraus.</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>CA File:</source>
+      <translation>CA Zertifikatsdatei:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="185"/>
-        <source>Last Will User Properties</source>
-        <translation>Benutzereigenschaften für Letzter Wille</translation>
-    </message>
-</context>
-<context>
-    <name>MqttConnectionProfilesDialog</name>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="84"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="78"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="74"/>
-        <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-        <translation>Zertifikatdateien (*.crt *.pem);;Alle Dateien (*)</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the full path to the CA certificate file; leave empty to use platform default</source>
+      <translation>Gib den vollständigen Pfad zur CA Zertifikatsdatei ein; leer lassen, um den Plattformstandard zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="90"/>
-        <source>Key Files (*.key *.pem);;All Files (*)</source>
-        <translation>Schlüsseldateien (*.key *.pem);;Alle Dateien (*)</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>User Properties</source>
+      <translation>Benutzereigenschaften</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="959"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="921"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="167"/>
-        <source>Changed Connection Profile</source>
-        <translation>Verbindungsprofil geändert</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to edit the CONNECT user properties</source>
+      <translation>Auswählen, um die CONNECT Benutzereigenschaften zu bearbeiten</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>CONNECT</source>
+      <translation>CONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="960"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="922"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="168"/>
-        <source>The current profile has unsaved changes. Shall these be saved?</source>
-        <translation>Das aktuelle Profil hat ungesicherte Änderungen. Sollen diese gesichert werden?</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to edit the DISCONNECT user properties</source>
+      <translation>Auswählen, um die DISCONNECT Benutzereigenschaften zu bearbeiten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="199"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="191"/>
-        <source>New Connection Profile</source>
-        <translation>Neues Verbindungsprofil</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>DISCONNECT</source>
+      <translation>DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="192"/>
-        <source>Enter name for the new Connection Profile:</source>
-        <translation>Gib eine Bezeichnung für das neue Verbindungsprofil ein:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="229"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="200"/>
-        <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Eine Verbindung mit der Bezeichnung &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Abbruch...&lt;/p&gt;</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the CONNECT user properties when disconnecting</source>
+      <translation>Auswählen, um die CONNECT Benutzereigenschaften auch zur Trennung zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="228"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="220"/>
-        <source>Copy Connection Profile</source>
-        <translation>Verbindungsprofil kopieren</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="221"/>
-        <source>Enter name for the copied Connection Profile:</source>
-        <translation>Gib eine Bezeichnung für das kopierte Verbindungsprofil ein:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Use CONNECT properties for DISCONNECT</source>
+      <translation>Verwende CONNECT Benutzereigenschaften für DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="256"/>
-        <source>Delete Connection Profile</source>
-        <translation>Verbindungsprofil löschen</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="53" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation>Zertifikatdateien (*.crt *.pem);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="257"/>
-        <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Soll das Verbindungsprofil &lt;b&gt;{0}&lt;/b&gt; wirklich gelöscht werden?&lt;/p&gt;</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="82" />
+      <source>Invalid Connection Parameters</source>
+      <translation>Ungültige Verbindungsparameter</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="664"/>
-        <source>Invalid Connection Parameters</source>
-        <translation>Ungültige Verbindungsparameter</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="665"/>
-        <source>An empty Client ID requires a clean session.</source>
-        <translation>Eine leere Client ID setzt eine neue Session voraus.</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="83" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation>Eine leere Client ID setzt eine neue Session voraus.</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="760"/>
-        <source>Last Will User Properties</source>
-        <translation>Benutzereigenschaften für Letzter Wille</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="185" />
+      <source>Last Will User Properties</source>
+      <translation>Benutzereigenschaften für Letzter Wille</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttConnectionProfilesDialog</name>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="817"/>
-        <source>SSL/TLS Enabled</source>
-        <translation>SSL/TLS aktiviert</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="818"/>
-        <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
-        <translation>Eine mit SSL/TLS verschlüsselte Verbindung wurde aktiviert. Jedoch ist der Brokerport noch auf den standardmäßigen, unverschlüsselten Port (Port 1883) eingestellt. Soll dies geändert werden?</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>MQTT Connection Profiles</source>
+      <translation>MQTT Verbindungsprofile</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="833"/>
-        <source>SSL/TLS Disabled</source>
-        <translation>SSL/TLS deaktiviert</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="834"/>
-        <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
-        <translation>Eine mit SSL/TLS verschlüsselte Verbindung wurde deaktiviert. Jedoch ist der Brokerport noch auf den standardmäßigen, verschlüsselten Port (Port 8883) eingestellt. Soll dies geändert werden?</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to add a new profile</source>
+      <translation>Drücken, um ein neues Profil hinzuzufügen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="936"/>
-        <source>Changed Connection Profiles</source>
-        <translation>Verbindungsprofile geändert</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to copy the selected profile</source>
+      <translation>Drücken, um das ausgewählte Profil zu kopieren</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="937"/>
-        <source>The list of connection profiles has unsaved changes.</source>
-        <translation>Die Liste der Verbindungsprofile hat ungesicherte Änderungen.</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>MQTT Connection Profiles</source>
-        <translation>MQTT Verbindungsprofile</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to delete the selected profile</source>
+      <translation>Drücken, um das ausgewählte Profil zu löschen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to add a new profile</source>
-        <translation>Drücken, um ein neues Profil hinzuzufügen</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Profile Name:</source>
+      <translation>Profilbezeichnung:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to copy the selected profile</source>
-        <translation>Drücken, um das ausgewählte Profil zu kopieren</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to delete the selected profile</source>
-        <translation>Drücken, um das ausgewählte Profil zu löschen</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Profile Name:</source>
-        <translation>Profilbezeichnung:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Broker Address:</source>
+      <translation>Brokeradresse:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Broker Address:</source>
-        <translation>Brokeradresse:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the broker server address</source>
-        <translation>Gib die Serveradresse des Broker ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the broker server address</source>
+      <translation>Gib die Serveradresse des Broker ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Broker Port:</source>
-        <translation>Brokerport:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Broker Port:</source>
+      <translation>Brokerport:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the broker port number (default 1883)</source>
-        <translation>Gib die Portnummer des Broker ein (Standard 1883)</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the broker port number (default 1883)</source>
+      <translation>Gib die Portnummer des Broker ein (Standard 1883)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Client ID:</source>
-        <translation>Client ID:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Client ID:</source>
+      <translation>Client ID:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the ID string for this client</source>
-        <translation>Gib eine ID für diesen Client ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the ID string for this client</source>
+      <translation>Gib eine ID für diesen Client ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to generate a client ID</source>
-        <translation>Drücken, um eine Client ID zu erzeugen</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Generate</source>
-        <translation>Erzeugen</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>General</source>
-        <translation>Allgemein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to generate a client ID</source>
+      <translation>Drücken, um eine Client ID zu erzeugen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>MQTT Protocol</source>
-        <translation>MQTT Protokoll</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1 protocol</source>
-        <translation>Auswählen, um das MQTT 3.1 Protokoll zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Generate</source>
+      <translation>Erzeugen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>v 3.1</source>
-        <translation>v 3.1</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>General</source>
+      <translation>Allgemein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1.1 protocol</source>
-        <translation>Auswählen, um das MQTT 3.1.1 Protokoll zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>MQTT Protocol</source>
+      <translation>MQTT Protokoll</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>v 3.1.1</source>
-        <translation>v 3.1.1</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1 protocol</source>
+      <translation>Auswählen, um das MQTT 3.1 Protokoll zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the MQTT 5.0 protocol</source>
-        <translation>Auswählen, um das MQTT 5.0 Protokoll zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>v 3.1</source>
+      <translation>v 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>v 5.0</source>
-        <translation>v 5.0</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1.1 protocol</source>
+      <translation>Auswählen, um das MQTT 3.1.1 Protokoll zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Connection Timeout:</source>
-        <translation>Verbindungszeitlimit:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the connection timeout in seconds</source>
-        <translation>Gib das Verbindungszeitlimit in Sekunden ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>v 3.1.1</source>
+      <translation>v 3.1.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source> s</source>
-        <translation> s</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Keep Alive Interval:</source>
-        <translation>Keepalive Intervall:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the MQTT 5.0 protocol</source>
+      <translation>Auswählen, um das MQTT 5.0 Protokoll zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the keep alive interval in seconds</source>
-        <translation>Gib das Keepalive Intervall in Sekunden ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>v 5.0</source>
+      <translation>v 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to start with a clean session</source>
-        <translation>Auswählen, um mit einer neuen Sitzung zu starten</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Connection Timeout:</source>
+      <translation>Verbindungszeitlimit:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Clean Session</source>
-        <translation>Neue Sitzung</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>User Credentials</source>
-        <translation>Nutzerberechtigungen</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the connection timeout in seconds</source>
+      <translation>Gib das Verbindungszeitlimit in Sekunden ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>User Name:</source>
-        <translation>Nutzername:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source> s</source>
+      <translation> s</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the user name</source>
-        <translation>Gib den Nutzernamen ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Password:</source>
-        <translation>Kennwort:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Keep Alive Interval:</source>
+      <translation>Keepalive Intervall:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the password</source>
-        <translation>Gib das Kennwort ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Toggle to show the password</source>
-        <translation>Drücken, um das Kennwort anzuzeigen</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the keep alive interval in seconds</source>
+      <translation>Gib das Keepalive Intervall in Sekunden ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Last Will</source>
-        <translation>Letzter Wille</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to start with a clean session</source>
+      <translation>Auswählen, um mit einer neuen Sitzung zu starten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the topic of the last will</source>
-        <translation>Gib das Thema für den letzten Willen ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>QoS:</source>
-        <translation>QoS:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Clean Session</source>
+      <translation>Neue Sitzung</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the desired QoS value</source>
-        <translation>Gib den gewünschten QoS Wert ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>User Credentials</source>
+      <translation>Nutzerberechtigungen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to retain the last will message</source>
-        <translation>Auswählen, um die Nachricht des letzten Willens zu behalten</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>User Name:</source>
+      <translation>Nutzername:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Retain</source>
-        <translation>Behalten</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to edit the user properties</source>
-        <translation>Drücken, um die &apos;User Properties&apos; zu bearbeiten</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the user name</source>
+      <translation>Gib den Nutzernamen ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the last will message to be sent</source>
-        <translation>Gib die zu sendende Nachricht des letzten Willens ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>SSL/TLS</source>
-        <translation>SSL/TLS</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Password:</source>
+      <translation>Kennwort:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to enable SSL/TLS connections</source>
-        <translation>Auswählen, um SSL/TLS Verbindungen zu aktivieren</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the password</source>
+      <translation>Gib das Kennwort ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the default certificate file of the client</source>
-        <translation>Auswählen, um die Standardzertifikatsdatei des Client zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Toggle to show the password</source>
+      <translation>Drücken, um das Kennwort anzuzeigen</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CA signed server certificate</source>
-        <translation>CA signiertes Serverzertifikat</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use a specific certificate file</source>
-        <translation>Auswählen, um eine spezifische Zertifikatsdatei zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Last Will</source>
+      <translation>Letzter Wille</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CA certificate file</source>
-        <translation>CA Zertifikatsdatei</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the topic of the last will</source>
+      <translation>Gib das Thema für den letzten Willen ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CA File:</source>
-        <translation>CA Datei:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>QoS:</source>
+      <translation>QoS:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the full path to the CA certificate file</source>
-        <translation>Gib den vollständigen Pfad zur CA Zertifikatsdatei ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use a self signed client certificate</source>
-        <translation>Auswählen, um ein selbst signiertes Clientzertifikat zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the desired QoS value</source>
+      <translation>Gib den gewünschten QoS Wert ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Self signed certificates</source>
-        <translation>Selbst signierte Zertifikate</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Client Certificate File:</source>
-        <translation>Client Zertifikatsdatei:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to retain the last will message</source>
+      <translation>Auswählen, um die Nachricht des letzten Willens zu behalten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the full path to the client certificate file</source>
-        <translation>Gib den vollständigen Pfad zur Zertifikatsdatei des Client ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Retain</source>
+      <translation>Behalten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Client Key File:</source>
-        <translation>Client Schlüssekdatei:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to edit the user properties</source>
+      <translation>Drücken, um die 'User Properties' zu bearbeiten</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the full path to the client key file</source>
-        <translation>Gib den vollständigen Pfad zur Schlüsseldatei des Client ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the last will message to be sent</source>
+      <translation>Gib die zu sendende Nachricht des letzten Willens ein</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>User Properties</source>
-        <translation>Benutzereigenschaften</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS</source>
+      <translation>SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to edit the CONNECT user properties</source>
-        <translation>Auswählen, um die CONNECT Benutzereigenschaften zu bearbeiten</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to enable SSL/TLS connections</source>
+      <translation>Auswählen, um SSL/TLS Verbindungen zu aktivieren</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CONNECT</source>
-        <translation>CONNECT</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to edit the DISCONNECT user properties</source>
-        <translation>Auswählen, um die DISCONNECT Benutzereigenschaften zu bearbeiten</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation>SSL/TLS aktiviert</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>DISCONNECT</source>
-        <translation>DISCONNECT</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the CONNECT user properties when disconnecting</source>
-        <translation>Auswählen, um die CONNECT Benutzereigenschaften auch zur Trennung zu verwenden</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the default certificate file of the client</source>
+      <translation>Auswählen, um die Standardzertifikatsdatei des Client zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Use CONNECT properties for DISCONNECT</source>
-        <translation>Verwende CONNECT Benutzereigenschaften für DISCONNECT</translation>
-    </message>
-</context>
-<context>
-    <name>MqttErrorMessage</name>
-    <message>
-        <location filename="../MqttClient.py" line="864"/>
-        <source>No error.</source>
-        <translation>Kein Fehler.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CA signed server certificate</source>
+      <translation>CA signiertes Serverzertifikat</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="866"/>
-        <source>Out of memory.</source>
-        <translation>Nicht genügend Speicher.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use a specific certificate file</source>
+      <translation>Auswählen, um eine spezifische Zertifikatsdatei zu verwenden</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CA certificate file</source>
+      <translation>CA Zertifikatsdatei</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="868"/>
-        <source>A network protocol error occurred when communicating with the broker.</source>
-        <translation>Bei der Kommunikation mit dem Broker ist ein Netzprotokollfehler aufgetreten.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CA File:</source>
+      <translation>CA Datei:</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="873"/>
-        <source>Invalid function arguments provided.</source>
-        <translation>Ungültige Funktionsargumente angegeben.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="877"/>
-        <source>The client is not currently connected.</source>
-        <translation>Der Client ist momentan nicht verbunden.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the full path to the CA certificate file</source>
+      <translation>Gib den vollständigen Pfad zur CA Zertifikatsdatei ein</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="881"/>
-        <source>The connection was refused.</source>
-        <translation>Die Verbindung wurde abgelehnt.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="885"/>
-        <source>Message not found (internal error).</source>
-        <translation>Nachricht nicht gefunden (interner Fehler).</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use a self signed client certificate</source>
+      <translation>Auswählen, um ein selbst signiertes Clientzertifikat zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="889"/>
-        <source>The connection was lost.</source>
-        <translation>Die Verbindung wurde unterbrochen.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Self signed certificates</source>
+      <translation>Selbst signierte Zertifikate</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="893"/>
-        <source>A TLS error occurred.</source>
-        <translation>Es ist ein TLS-Fehler aufgetreten.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="895"/>
-        <source>Payload too large.</source>
-        <translation>Nutzdaten zu groß.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Client Certificate File:</source>
+      <translation>Client Zertifikatsdatei:</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="897"/>
-        <source>This feature is not supported.</source>
-        <translation>Diese Funktion wird nicht unterstützt.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="901"/>
-        <source>Authorisation failed.</source>
-        <translation>Authorisierung fehlgeschlagen.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the full path to the client certificate file</source>
+      <translation>Gib den vollständigen Pfad zur Zertifikatsdatei des Client ein</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="903"/>
-        <source>Access denied by ACL.</source>
-        <translation>Zugriff durch ACL verweigert.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="911"/>
-        <location filename="../MqttClient.py" line="905"/>
-        <source>Unknown error.</source>
-        <translation>Unbekannter Fehler.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Client Key File:</source>
+      <translation>Client Schlüssekdatei:</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="907"/>
-        <source>Error defined by errno.</source>
-        <translation>Fehler durch errno definiert.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the full path to the client key file</source>
+      <translation>Gib den vollständigen Pfad zur Schlüsseldatei des Client ein</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="909"/>
-        <source>Message queue full.</source>
-        <translation>Warteschlange ist voll.</translation>
-    </message>
-</context>
-<context>
-    <name>MqttLogLevelString</name>
-    <message>
-        <location filename="../MqttClient.py" line="947"/>
-        <location filename="../MqttClient.py" line="930"/>
-        <source>Unknown</source>
-        <translation>Unbekannt</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>User Properties</source>
+      <translation>Benutzereigenschaften</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="935"/>
-        <source>Info</source>
-        <translation>Info</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to edit the CONNECT user properties</source>
+      <translation>Auswählen, um die CONNECT Benutzereigenschaften zu bearbeiten</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="937"/>
-        <source>Notice</source>
-        <translation>Notiz</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CONNECT</source>
+      <translation>CONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="939"/>
-        <source>Warning</source>
-        <translation>Warnung</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to edit the DISCONNECT user properties</source>
+      <translation>Auswählen, um die DISCONNECT Benutzereigenschaften zu bearbeiten</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="941"/>
-        <source>Error</source>
-        <translation>Fehler</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="943"/>
-        <source>Debug</source>
-        <translation>Debug</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>DISCONNECT</source>
+      <translation>DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="945"/>
-        <source>Logging Disabled</source>
-        <translation>Protokollierung aus</translation>
-    </message>
-</context>
-<context>
-    <name>MqttMonitorPlugin</name>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="202"/>
-        <location filename="../../PluginMqttMonitor.py" line="198"/>
-        <location filename="../../PluginMqttMonitor.py" line="81"/>
-        <source>MQTT Monitor</source>
-        <translation>MQTT Monitor</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the CONNECT user properties when disconnecting</source>
+      <translation>Auswählen, um die CONNECT Benutzereigenschaften auch zur Trennung zu verwenden</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="103"/>
-        <source>(package not available)</source>
-        <translation>(Paket nicht verfügbar)</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Use CONNECT properties for DISCONNECT</source>
+      <translation>Verwende CONNECT Benutzereigenschaften für DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="109"/>
-        <source>MQTT</source>
-        <translation>MQTT</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="110"/>
-        <source>paho-mqtt</source>
-        <translation>paho-mqtt</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation>Zertifikatdateien (*.crt *.pem);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="180"/>
-        <source>The &apos;paho-mqtt&apos; package is not available.</source>
-        <translation>Das &apos;paho-mqtt&apos; Paket ist nicht verfügbar.</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
+      <source>Key Files (*.key *.pem);;All Files (*)</source>
+      <translation>Schlüsseldateien (*.key *.pem);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="203"/>
-        <source>M&amp;QTT Monitor</source>
-        <translation>M&amp;QTT Monitor</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="204"/>
-        <source>Alt+Shift+Q</source>
-        <translation>Alt+Shift+Q</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="210"/>
-        <source>Switch the input focus to the MQTT Monitor window.</source>
-        <translation>Schaltet den Eingabefokus auf das MQTT-Überwachungsfenster um.</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="957" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
+      <source>Changed Connection Profile</source>
+      <translation>Verbindungsprofil geändert</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="213"/>
-        <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;MQTT Monitor aktivieren&lt;/b&gt;&lt;p&gt;Dies schaltet den Eingabefokus auf das MQTT-Überwachungsfenster um.&lt;/p&gt;</translation>
-    </message>
-</context>
-<context>
-    <name>MqttMonitorWidget</name>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
-        <translation>&lt;b&gt;MQTT Monitor&lt;/b&gt;</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="958" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
+      <source>The current profile has unsaved changes. Shall these be saved?</source>
+      <translation>Das aktuelle Profil hat ungesicherte Änderungen. Sollen diese gesichert werden?</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Broker</source>
-        <translation>Broker</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
+      <source>New Connection Profile</source>
+      <translation>Neues Verbindungsprofil</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to switch the mode between profiles and direct connection</source>
-        <translation>Drücken, um den Modus zwischen Profil und Direktverbindung umzuschalten</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
+      <source>Enter name for the new Connection Profile:</source>
+      <translation>Gib eine Bezeichnung für das neue Verbindungsprofil ein:</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select the profile to be used to connect to the broker</source>
-        <translation>Wähle das für die Verbindung mit dem Broker zu nutzende Profil aus</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
+      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Eine Verbindung mit der Bezeichnung &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Abbruch...&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the host name of the broker</source>
-        <translation>Gib den Hostnamen des Brokers ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
+      <source>Copy Connection Profile</source>
+      <translation>Verbindungsprofil kopieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the broker port to connect to</source>
-        <translation>Geben Sie den zu verbindenden Broker-Port ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to open a dialog to enter connection options</source>
-        <translation>Drücken, um einen Dialog zur Eingabe von Verbindungsoptionen zu öffnen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to connect to/disconnect from the broker</source>
-        <translation>Drücken, um die Verbindung zum Broker herzustellen/zu trennen</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
+      <source>Enter name for the copied Connection Profile:</source>
+      <translation>Gib eine Bezeichnung für das kopierte Verbindungsprofil ein:</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to clear a previously set last will message</source>
-        <translation>Auswählen, um einen zuvor festgelegten Letzten Willen zu löschen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Pub/Sub</source>
-        <translation>Pub/Sub</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
+      <source>Delete Connection Profile</source>
+      <translation>Verbindungsprofil löschen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1101"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Subscribe</source>
-        <translation>Abonnieren</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
+      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Soll das Verbindungsprofil &lt;b&gt;{0}&lt;/b&gt; wirklich gelöscht werden?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Topic:</source>
-        <translation>Thema:</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
+      <source>Invalid Connection Parameters</source>
+      <translation>Ungültige Verbindungsparameter</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the topic</source>
-        <translation>Gib das Thema ein</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation>Eine leere Client ID setzt eine neue Session voraus.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>QoS:</source>
-        <translation>QoS:</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the desired QoS value</source>
-        <translation>Gib den gewünschten QoS Wert ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to subscribe to the given topic</source>
-        <translation>Drücken, um das eingegebene Thema zu abonieren</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
+      <source>Last Will User Properties</source>
+      <translation>Benutzereigenschaften für Letzter Wille</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to edit the user properties</source>
-        <translation>Drücken, um die &apos;User Properties&apos; zu bearbeiten</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
+      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
+      <translation>Eine mit SSL/TLS verschlüsselte Verbindung wurde aktiviert. Jedoch ist der Brokerport noch auf den standardmäßigen, unverschlüsselten Port (Port 1883) eingestellt. Soll dies geändert werden?</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1096"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Unsubscribe</source>
-        <translation>Abo kündigen</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
+      <source>SSL/TLS Disabled</source>
+      <translation>SSL/TLS deaktiviert</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select the topic to unsubscribe</source>
-        <translation>Wählen ein zu kündigendes Thema aus</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
+      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
+      <translation>Eine mit SSL/TLS verschlüsselte Verbindung wurde deaktiviert. Jedoch ist der Brokerport noch auf den standardmäßigen, verschlüsselten Port (Port 8883) eingestellt. Soll dies geändert werden?</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to unsubscribe the selected topic</source>
-        <translation>Drücken, um das ausgewählte Thema zu kündigen</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
+      <source>Changed Connection Profiles</source>
+      <translation>Verbindungsprofile geändert</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Publish</source>
-        <translation>Veröffentlichen</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
+      <source>The list of connection profiles has unsaved changes.</source>
+      <translation>Die Liste der Verbindungsprofile hat ungesicherte Änderungen.</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttErrorMessage</name>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the topic to publish to</source>
-        <translation>Gib das Thema der Veröffentlichung ein</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to retain the published message</source>
-        <translation>Auswählen, um die Nachricht zu behalten</translation>
+      <location filename="../MqttClient.py" line="773" />
+      <source>No error.</source>
+      <translation>Kein Fehler.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Retain</source>
-        <translation>Behalten</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the string data to be sent</source>
-        <translation>Gib die zu sendende Nachricht ein</translation>
+      <location filename="../MqttClient.py" line="775" />
+      <source>Out of memory.</source>
+      <translation>Nicht genügend Speicher.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Payload File:</source>
-        <translation>Nutzdatendatei:</translation>
+      <location filename="../MqttClient.py" line="777" />
+      <source>A network protocol error occurred when communicating with the broker.</source>
+      <translation>Bei der Kommunikation mit dem Broker ist ein Netzprotokollfehler aufgetreten.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the full path to a file containing the message payload</source>
-        <translation>Gib den vollständigen Pfad zu einer Datei mit den Nachrichtennutzdaten ein</translation>
+      <location filename="../MqttClient.py" line="782" />
+      <source>Invalid function arguments provided.</source>
+      <translation>Ungültige Funktionsargumente angegeben.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the publish data</source>
-        <translation>Drücken, um die Veröffentlichungsdaten zu löschen</translation>
+      <location filename="../MqttClient.py" line="786" />
+      <source>The client is not currently connected.</source>
+      <translation>Der Client ist momentan nicht verbunden.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="346"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Clear</source>
-        <translation>Löschen</translation>
+      <location filename="../MqttClient.py" line="790" />
+      <source>The connection was refused.</source>
+      <translation>Die Verbindung wurde abgelehnt.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the retained messages of the selected topic</source>
-        <translation>Drücken, um die gemerkten Meldungen des ausgewählten Themas zu löschen</translation>
+      <location filename="../MqttClient.py" line="794" />
+      <source>Message not found (internal error).</source>
+      <translation>Nachricht nicht gefunden (interner Fehler).</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Clear Retained</source>
-        <translation>Gemerkte löschen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to clear the publish data after the message was published</source>
-        <translation>Auswählen, um die Veröffentlichungsdaten nach dem Senden zu löschen</translation>
+      <location filename="../MqttClient.py" line="798" />
+      <source>The connection was lost.</source>
+      <translation>Die Verbindung wurde unterbrochen.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Clear when sent</source>
-        <translation>Nach dem Senden löschen</translation>
+      <location filename="../MqttClient.py" line="802" />
+      <source>A TLS error occurred.</source>
+      <translation>Es ist ein TLS-Fehler aufgetreten.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Properties</source>
-        <translation>Eigenschaften</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>MQTT V5 Properties</source>
-        <translation>MQTT v5 Eigenschaften</translation>
+      <location filename="../MqttClient.py" line="804" />
+      <source>Payload too large.</source>
+      <translation>Nutzdaten zu groß.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Messages</source>
-        <translation>Meldungen</translation>
+      <location filename="../MqttClient.py" line="806" />
+      <source>This feature is not supported.</source>
+      <translation>Diese Funktion wird nicht unterstützt.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to save the received messages to a file</source>
-        <translation>Drücken, um die empfangenen Meldungen in eine Datei zu speichern</translation>
+      <location filename="../MqttClient.py" line="810" />
+      <source>Authorisation failed.</source>
+      <translation>Authorisierung fehlgeschlagen.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Save</source>
-        <translation>Speichern</translation>
+      <location filename="../MqttClient.py" line="812" />
+      <source>Access denied by ACL.</source>
+      <translation>Zugriff durch ACL verweigert.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the list of received messages</source>
-        <translation>Drücken, um die Liste der empfangenen Meldungen zu löschen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to scroll to the most recently received message</source>
-        <translation>Auswählen, um zur zuletzt empfangenen Meldung zu blättern</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Follow received messages</source>
-        <translation>Empfangenen Meldungen folgen</translation>
+      <location filename="../MqttClient.py" line="820" />
+      <location filename="../MqttClient.py" line="814" />
+      <source>Unknown error.</source>
+      <translation>Unbekannter Fehler.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Status</source>
-        <translation>Status</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1103"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to activate the status display</source>
-        <translation>Drücken, um die Statusanzeige zu aktivieren</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Broker&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Broker&lt;/b&gt;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Version</source>
-        <translation>Version</translation>
+      <location filename="../MqttClient.py" line="816" />
+      <source>Error defined by errno.</source>
+      <translation>Fehler durch errno definiert.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>-</source>
-        <translation>-</translation>
+      <location filename="../MqttClient.py" line="818" />
+      <source>Message queue full.</source>
+      <translation>Warteschlange ist voll.</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttLogLevelString</name>
+    <message>
+      <location filename="../MqttClient.py" line="856" />
+      <location filename="../MqttClient.py" line="839" />
+      <source>Unknown</source>
+      <translation>Unbekannt</translation>
+    </message>
+    <message>
+      <location filename="../MqttClient.py" line="844" />
+      <source>Info</source>
+      <translation>Info</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Timestamp</source>
-        <translation>Zeitstempel</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Uptime</source>
-        <translation>Betriebszeit</translation>
+      <location filename="../MqttClient.py" line="846" />
+      <source>Notice</source>
+      <translation>Notiz</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Subscriptions</source>
-        <translation>Abonnements</translation>
+      <location filename="../MqttClient.py" line="848" />
+      <source>Warning</source>
+      <translation>Warnung</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Clients&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Klienten&lt;/b&gt;</translation>
+      <location filename="../MqttClient.py" line="850" />
+      <source>Error</source>
+      <translation>Fehler</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Connected</source>
-        <translation>Verbunden</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Disconnected</source>
-        <translation>Nicht Verbunden</translation>
+      <location filename="../MqttClient.py" line="852" />
+      <source>Debug</source>
+      <translation>Debug</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Expired</source>
-        <translation>Abgelaufen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Maximum</source>
-        <translation>Maximum</translation>
+      <location filename="../MqttClient.py" line="854" />
+      <source>Logging Disabled</source>
+      <translation>Protokollierung aus</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttMonitorPlugin</name>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Total</source>
-        <translation>Gesamt</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Messages&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Mitteilungen&lt;/b&gt;</translation>
+      <location filename="../../PluginMqttMonitor.py" line="214" />
+      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="93" />
+      <source>MQTT Monitor</source>
+      <translation>MQTT Monitor</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Sent</source>
-        <translation>Gesendet</translation>
+      <location filename="../../PluginMqttMonitor.py" line="115" />
+      <source>(package not available)</source>
+      <translation>(Paket nicht verfügbar)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Received</source>
-        <translation>Empfangen</translation>
+      <location filename="../../PluginMqttMonitor.py" line="121" />
+      <source>MQTT</source>
+      <translation>MQTT</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Stored</source>
-        <translation>Gespeichert</translation>
+      <location filename="../../PluginMqttMonitor.py" line="122" />
+      <source>paho-mqtt</source>
+      <translation>paho-mqtt</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Inflight</source>
-        <translation>In Übertragung</translation>
+      <location filename="../../PluginMqttMonitor.py" line="192" />
+      <source>The 'paho-mqtt' package is not available.</source>
+      <translation>Das 'paho-mqtt' Paket ist nicht verfügbar.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Retained</source>
-        <translation>Aufgehoben</translation>
+      <location filename="../../PluginMqttMonitor.py" line="215" />
+      <source>M&amp;QTT Monitor</source>
+      <translation>M&amp;QTT Monitor</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;PUBLISH Messages&lt;/b&gt;</source>
-        <translation>&lt;b&gt;PUBLISH Mitteilungen&lt;/b&gt;</translation>
+      <location filename="../../PluginMqttMonitor.py" line="216" />
+      <source>Alt+Shift+Q</source>
+      <translation>Alt+Shift+Q</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Dropped</source>
-        <translation>Gelöscht</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Traffic&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Verkehr&lt;/b&gt;</translation>
+      <location filename="../../PluginMqttMonitor.py" line="222" />
+      <source>Switch the input focus to the MQTT Monitor window.</source>
+      <translation>Schaltet den Eingabefokus auf das MQTT-Überwachungsfenster um.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Bytes Sent</source>
-        <translation>Bytes Gesendet</translation>
+      <location filename="../../PluginMqttMonitor.py" line="225" />
+      <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;MQTT Monitor aktivieren&lt;/b&gt;&lt;p&gt;Dies schaltet den Eingabefokus auf das MQTT-Überwachungsfenster um.&lt;/p&gt;</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttMonitorWidget</name>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Bytes Received</source>
-        <translation>Bytes Empfangen</translation>
+      <location filename="../MqttMonitorWidget.py" line="88" />
+      <source>All Files (*)</source>
+      <translation>Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Load&lt;/b&gt; (1 min / 5 min / 15 min)</source>
-        <translation>&lt;b&gt;Last&lt;/b&gt; (1 Min / 5 Min / 15 Min)</translation>
+      <location filename="../MqttMonitorWidget.py" line="325" />
+      <source>Copy</source>
+      <translation>Kopieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>- / - / -</source>
-        <translation>- / - / -</translation>
+      <location filename="../MqttMonitorWidget.py" line="331" />
+      <source>Select All</source>
+      <translation>Alles auswählen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Messages Sent</source>
-        <translation>Mitteilungen Gesendet</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="337" />
+      <source>Clear</source>
+      <translation>Löschen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Messages Received</source>
-        <translation>Mitteilungen Empfangen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>PUBLISH Sent</source>
-        <translation>PUBLISH Gesendet</translation>
+      <location filename="../MqttMonitorWidget.py" line="372" />
+      <source>{0} - Session still present</source>
+      <translation>{0} - Sitzung existiert noch</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>PUBLISH Received</source>
-        <translation>PUBLISH Empfangen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>PUBLISH Dropped</source>
-        <translation>PUBLISH Gelöscht</translation>
+      <location filename="../MqttMonitorWidget.py" line="410" />
+      <source>Connection timed out</source>
+      <translation>Zeitlimit für Verbindung überschritten</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Connections</source>
-        <translation>Verbindungen</translation>
+      <location filename="../MqttMonitorWidget.py" line="438" />
+      <source>Connection to Broker shut down cleanly.</source>
+      <translation>Die Verbindung zum Broker wurde ordnungsgemäß beendet.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Sockets</source>
-        <translation>Sockets</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Log</source>
-        <translation>Protokoll</translation>
+      <location filename="../MqttMonitorWidget.py" line="498" />
+      <source>{0}: {1}</source>
+      <translation>{0}: {1}</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Max. Log Level:</source>
-        <translation>Max. Protokollebene:</translation>
+      <location filename="../MqttMonitorWidget.py" line="709" />
+      <source>SUBSCRIBE: User Properties for '{0}'</source>
+      <translation>SUBSCRIBE: Benutzereigenschaften für '{0}'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select the maximum log level to show</source>
-        <translation>Die maximal anzuzeigende Protokollebene auswählen</translation>
+      <location filename="../MqttMonitorWidget.py" line="735" />
+      <source>Subscribe to Topic</source>
+      <translation>Thema abonnieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to save the received log messages to a file</source>
-        <translation>Drücken, um die empfangenen Protokollmeldungen in eine Datei zu speichern</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the list of received log messages</source>
-        <translation>Drücken, um die Liste der empfangenen Protokollmeldungen zu löschen</translation>
+      <location filename="../MqttMonitorWidget.py" line="736" />
+      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
+      <translation>Abonnements zum Statusthema '$SYS' werden auf der Registerkarte 'Status' ausgeführt.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to scroll to the most recently received log message</source>
-        <translation>Auswählen, um zur zuletzt empfangenen Protokollmeldungen zu blättern</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Follow received log messages</source>
-        <translation>Empfangenen Protokollmeldungen folgen</translation>
+      <location filename="../MqttMonitorWidget.py" line="760" />
+      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
+      <translation>UNSUBSCRIBE: Benutzereigenschaften für '{0}'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="93"/>
-        <source>All Files (*)</source>
-        <translation>Alle Dateien (*)</translation>
+      <location filename="../MqttMonitorWidget.py" line="798" />
+      <source>PUBLISH: User Properties for '{0}'</source>
+      <translation>PUBLISH: Benutzereigenschaften für '{0}'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="334"/>
-        <source>Copy</source>
-        <translation>Kopieren</translation>
+      <location filename="../MqttMonitorWidget.py" line="834" />
+      <source>Read Payload from File</source>
+      <translation>Nutzdaten aus Datei lesen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="340"/>
-        <source>Select All</source>
-        <translation>Alles auswählen</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="391"/>
-        <source>{0} - Session still present</source>
-        <translation>{0} - Sitzung existiert noch</translation>
+      <location filename="../MqttMonitorWidget.py" line="835" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden. Abbruch...&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="429"/>
-        <source>Connection timed out</source>
-        <translation>Zeitlimit für Verbindung überschritten</translation>
+      <location filename="../MqttMonitorWidget.py" line="986" />
+      <location filename="../MqttMonitorWidget.py" line="970" />
+      <location filename="../MqttMonitorWidget.py" line="951" />
+      <source>Save Messages</source>
+      <translation>Meldungen speichern</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="457"/>
-        <source>Connection to Broker shut down cleanly.</source>
-        <translation>Die Verbindung zum Broker wurde ordnungsgemäß beendet.</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="517"/>
-        <source>{0}: {1}</source>
-        <translation>{0}: {1}</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="737"/>
-        <source>SUBSCRIBE: User Properties for &apos;{0}&apos;</source>
-        <translation>SUBSCRIBE: Benutzereigenschaften für &apos;{0}&apos;</translation>
+      <location filename="../MqttMonitorWidget.py" line="953" />
+      <source>Messages Files (*.txt);;All Files (*)</source>
+      <translation>Meldungsdateien (*.txt);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="763"/>
-        <source>Subscribe to Topic</source>
-        <translation>Thema abonnieren</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="764"/>
-        <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
-        <translation>Abonnements zum Statusthema &apos;$SYS&apos; werden auf der Registerkarte &apos;Status&apos; ausgeführt.</translation>
+      <location filename="../MqttMonitorWidget.py" line="1032" />
+      <location filename="../MqttMonitorWidget.py" line="971" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="788"/>
-        <source>UNSUBSCRIBE: User Properties for &apos;{0}&apos;</source>
-        <translation>UNSUBSCRIBE: Benutzereigenschaften für &apos;{0}&apos;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1048" />
+      <location filename="../MqttMonitorWidget.py" line="987" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="826"/>
-        <source>PUBLISH: User Properties for &apos;{0}&apos;</source>
-        <translation>PUBLISH: Benutzereigenschaften für &apos;{0}&apos;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="862"/>
-        <source>Read Payload from File</source>
-        <translation>Nutzdaten aus Datei lesen</translation>
+      <location filename="../MqttMonitorWidget.py" line="1047" />
+      <location filename="../MqttMonitorWidget.py" line="1031" />
+      <location filename="../MqttMonitorWidget.py" line="1012" />
+      <source>Save Log Messages</source>
+      <translation>Protokollmeldungen speichern</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="863"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht gelesen werden. Abbruch...&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1014" />
+      <source>Log Files (*.log);;All Files (*)</source>
+      <translation>Protokolldateien (*.log);;Alle Dateien (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1014"/>
-        <location filename="../MqttMonitorWidget.py" line="998"/>
-        <location filename="../MqttMonitorWidget.py" line="979"/>
-        <source>Save Messages</source>
-        <translation>Meldungen speichern</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1068" />
+      <source>Unsubscribe</source>
+      <translation>Abo kündigen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="981"/>
-        <source>Messages Files (*.txt);;All Files (*)</source>
-        <translation>Meldungsdateien (*.txt);;Alle Dateien (*)</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1060"/>
-        <location filename="../MqttMonitorWidget.py" line="999"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; existiert bereits. Überschreiben?&lt;/p&gt;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1070" />
+      <source>Press to deactivate the status display</source>
+      <translation>Drücken, um die Statusanzeige zu deaktivieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1076"/>
-        <location filename="../MqttMonitorWidget.py" line="1015"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Die Datei &lt;b&gt;{0}&lt;/b&gt; konnte nicht geschrieben werden.&lt;/p&gt;&lt;p&gt;Ursache: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1075"/>
-        <location filename="../MqttMonitorWidget.py" line="1059"/>
-        <location filename="../MqttMonitorWidget.py" line="1040"/>
-        <source>Save Log Messages</source>
-        <translation>Protokollmeldungen speichern</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1073" />
+      <source>Subscribe</source>
+      <translation>Abonnieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1042"/>
-        <source>Log Files (*.log);;All Files (*)</source>
-        <translation>Protokolldateien (*.log);;Alle Dateien (*)</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1075" />
+      <source>Press to activate the status display</source>
+      <translation>Drücken, um die Statusanzeige zu aktivieren</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1098"/>
-        <source>Press to deactivate the status display</source>
-        <translation>Drücken, um die Statusanzeige zu deaktivieren</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1265"/>
-        <source>QoS: {0}
+      <location filename="../MqttMonitorWidget.py" line="1237" />
+      <source>QoS: {0}
 </source>
-        <translation>QoS: {0}
+      <translation>QoS: {0}
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1269"/>
-        <source>Retained Message
+      <location filename="../MqttMonitorWidget.py" line="1241" />
+      <source>Retained Message
 </source>
-        <translation>Gemerkte Meldung
+      <translation>Gemerkte Meldung
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1273"/>
-        <source>Properties:
+      <location filename="../MqttMonitorWidget.py" line="1245" />
+      <source>Properties:
 </source>
-        <translation>Eigenschaften:
+      <translation>Eigenschaften:
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1277"/>
-        <source>{0}: {1}
+      <location filename="../MqttMonitorWidget.py" line="1249" />
+      <source>{0}: {1}
 </source>
-        <comment>property name, property value</comment>
-        <translation>{0}: {1}
+      <comment>property name, property value</comment>
+      <translation>{0}: {1}
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1283"/>
-        <source>Message:
+      <location filename="../MqttMonitorWidget.py" line="1255" />
+      <source>Message:
 </source>
-        <translation>Meldung:
+      <translation>Meldung:
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1290"/>
-        <source>&lt;empty&gt;</source>
-        <translation>&lt;leer&gt;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1262" />
+      <source>&lt;empty&gt;</source>
+      <translation>&lt;leer&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1468" />
+      <location filename="../MqttMonitorWidget.py" line="1419" />
+      <source>Connecting to {0}:{1} ...</source>
+      <translation>Verbinde zu {0}:{1} ...</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1613" />
+      <source>{0} Bytes</source>
+      <translation>{0} Bytes</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1618" />
+      <source>{0} KiB</source>
+      <translation>{0} KiB</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1496"/>
-        <location filename="../MqttMonitorWidget.py" line="1447"/>
-        <source>Connecting to {0}:{1} ...</source>
-        <translation>Verbinde zu {0}:{1} ...</translation>
+      <location filename="../MqttMonitorWidget.py" line="1623" />
+      <source>{0} MiB</source>
+      <translation>{0} MiB</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1628" />
+      <source>{0} GiB</source>
+      <translation>{0} GiB</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1641"/>
-        <source>{0} Bytes</source>
-        <translation>{0} Bytes</translation>
+      <location filename="../MqttMonitorWidget.py" line="1633" />
+      <source>{0} TiB</source>
+      <translation>{0} TiB</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1646"/>
-        <source>{0} KiB</source>
-        <translation>{0} KiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
+      <translation>&lt;b&gt;MQTT Monitor&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Broker</source>
+      <translation>Broker</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1651"/>
-        <source>{0} MiB</source>
-        <translation>{0} MiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to switch the mode between profiles and direct connection</source>
+      <translation>Drücken, um den Modus zwischen Profil und Direktverbindung umzuschalten</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select the profile to be used to connect to the broker</source>
+      <translation>Wähle das für die Verbindung mit dem Broker zu nutzende Profil aus</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1656"/>
-        <source>{0} GiB</source>
-        <translation>{0} GiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the host name of the broker</source>
+      <translation>Gib den Hostnamen des Brokers ein</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the broker port to connect to</source>
+      <translation>Geben Sie den zu verbindenden Broker-Port ein</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to open a dialog to enter connection options</source>
+      <translation>Drücken, um einen Dialog zur Eingabe von Verbindungsoptionen zu öffnen</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1661"/>
-        <source>{0} TiB</source>
-        <translation>{0} TiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to connect to/disconnect from the broker</source>
+      <translation>Drücken, um die Verbindung zum Broker herzustellen/zu trennen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to clear a previously set last will message</source>
+      <translation>Auswählen, um einen zuvor festgelegten Letzten Willen zu löschen</translation>
     </message>
-</context>
-<context>
-    <name>MqttPage</name>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Pub/Sub</source>
+      <translation>Pub/Sub</translation>
+    </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>&lt;b&gt;Configure MQTT Monitor&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Konfiguration des MQTT Monitor&lt;/b&gt;</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Topic:</source>
+      <translation>Thema:</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the topic</source>
+      <translation>Gib das Thema ein</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Default MQTT Protocol</source>
-        <translation>Standard MQTT Protokoll</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>QoS:</source>
+      <translation>QoS:</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the desired QoS value</source>
+      <translation>Gib den gewünschten QoS Wert ein</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to subscribe to the given topic</source>
+      <translation>Drücken, um das eingegebene Thema zu abonieren</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to edit the user properties</source>
+      <translation>Drücken, um die 'User Properties' zu bearbeiten</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Select to use the MQTT 3.1 protocol</source>
-        <translation>Auswählen, um das MQTT 3.1 Protokoll zu verwenden</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select the topic to unsubscribe</source>
+      <translation>Wählen ein zu kündigendes Thema aus</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to unsubscribe the selected topic</source>
+      <translation>Drücken, um das ausgewählte Thema zu kündigen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>v 3.1</source>
-        <translation>v 3.1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Publish</source>
+      <translation>Veröffentlichen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Select to use the MQTT 3.1.1 protocol</source>
-        <translation>Auswählen, um das MQTT 3.1.1 Protokoll zu verwenden</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the topic to publish to</source>
+      <translation>Gib das Thema der Veröffentlichung ein</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to retain the published message</source>
+      <translation>Auswählen, um die Nachricht zu behalten</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>v 3.1.1</source>
-        <translation>v 3.1.1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Retain</source>
+      <translation>Behalten</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the string data to be sent</source>
+      <translation>Gib die zu sendende Nachricht ein</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Select to use the MQTT 5.0 protocol</source>
-        <translation>Auswählen, um das MQTT 5.0 Protokoll zu verwenden</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Payload File:</source>
+      <translation>Nutzdatendatei:</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the full path to a file containing the message payload</source>
+      <translation>Gib den vollständigen Pfad zu einer Datei mit den Nachrichtennutzdaten ein</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the publish data</source>
+      <translation>Drücken, um die Veröffentlichungsdaten zu löschen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>v 5.0</source>
-        <translation>v 5.0</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the retained messages of the selected topic</source>
+      <translation>Drücken, um die gemerkten Meldungen des ausgewählten Themas zu löschen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Clear Retained</source>
+      <translation>Gemerkte löschen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Recent Brokers</source>
-        <translation>Zuletzte genutzte Broker</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to clear the publish data after the message was published</source>
+      <translation>Auswählen, um die Veröffentlichungsdaten nach dem Senden zu löschen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Number of recent brokers:</source>
-        <translation>Anzahl zuletzt genutzter Broker:</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Clear when sent</source>
+      <translation>Nach dem Senden löschen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Enter the number of recent brokers to remember</source>
-        <translation>Gib die zu merkende Anzahl an zuletzt genutzten Broker ein</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Properties</source>
+      <translation>Eigenschaften</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>MQTT V5 Properties</source>
+      <translation>MQTT v5 Eigenschaften</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Recent Topics</source>
-        <translation>Zuletzt abonnierte Themen</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Messages</source>
+      <translation>Meldungen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to save the received messages to a file</source>
+      <translation>Drücken, um die empfangenen Meldungen in eine Datei zu speichern</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Number of recent topics:</source>
-        <translation>Anzahl zuletzt abonnierter Themen:</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Save</source>
+      <translation>Speichern</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the list of received messages</source>
+      <translation>Drücken, um die Liste der empfangenen Meldungen zu löschen</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Enter the number of recent topics to remember</source>
-        <translation>Gib die zu merkende Anzahl an zuletzt abonnierten Themen ein</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to scroll to the most recently received message</source>
+      <translation>Auswählen, um zur zuletzt empfangenen Meldung zu blättern</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Follow received messages</source>
+      <translation>Empfangenen Meldungen folgen</translation>
     </message>
-</context>
-<context>
-    <name>MqttReasonCodeNames</name>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Status</source>
+      <translation>Status</translation>
+    </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="15"/>
-        <source>Success</source>
-        <translation>Erfolg</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Broker&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Broker&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Version</source>
+      <translation>Version</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="24"/>
-        <source>Normal disconnection</source>
-        <translation>Normale Trennung</translation>
-    </message>
-    <message>
-        <location filename="../MqttReasonCodes.py" line="27"/>
-        <source>Granted QoS 0</source>
-        <translation>QoS 0 genehmigt</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>-</source>
+      <translation>-</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="32"/>
-        <source>Granted QoS 1</source>
-        <translation>QoS 1 genehmigt</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Timestamp</source>
+      <translation>Zeitstempel</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Uptime</source>
+      <translation>Betriebszeit</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="37"/>
-        <source>Granted QoS 2</source>
-        <translation>QoS 2 genehmigt</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Subscriptions</source>
+      <translation>Abonnements</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="42"/>
-        <source>Disconnect with will message</source>
-        <translation>Trennung mit letztem Willen</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Clients&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Klienten&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Connected</source>
+      <translation>Verbunden</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Disconnected</source>
+      <translation>Nicht Verbunden</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="47"/>
-        <source>No matching subscribers</source>
-        <translation>Keine passenden Abonnenten</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Expired</source>
+      <translation>Abgelaufen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Maximum</source>
+      <translation>Maximum</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Total</source>
+      <translation>Gesamt</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Messages&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Mitteilungen&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="53"/>
-        <source>No subscription found</source>
-        <translation>Kein Abonnement gefunden</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Sent</source>
+      <translation>Gesendet</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Received</source>
+      <translation>Empfangen</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="58"/>
-        <source>Continue authentication</source>
-        <translation>Authentisierung fortsetzen</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Stored</source>
+      <translation>Gespeichert</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="63"/>
-        <source>Re-authenticate</source>
-        <translation>Neuauthentisierung</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Inflight</source>
+      <translation>In Übertragung</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Retained</source>
+      <translation>Aufgehoben</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;PUBLISH Messages&lt;/b&gt;</source>
+      <translation>&lt;b&gt;PUBLISH Mitteilungen&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="68"/>
-        <source>Unspecified error</source>
-        <translation>Unspezifizierter Fehler</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Dropped</source>
+      <translation>Gelöscht</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Traffic&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Verkehr&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="78"/>
-        <source>Malformed packet</source>
-        <translation>Fehlerhaftes Paket</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Bytes Sent</source>
+      <translation>Bytes Gesendet</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Bytes Received</source>
+      <translation>Bytes Empfangen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Load&lt;/b&gt; (1 min / 5 min / 15 min)</source>
+      <translation>&lt;b&gt;Last&lt;/b&gt; (1 Min / 5 Min / 15 Min)</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="84"/>
-        <source>Protocol error</source>
-        <translation>Protokollfehler</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>- / - / -</source>
+      <translation>- / - / -</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="90"/>
-        <source>Implementation specific error</source>
-        <translation>Implementierungsspezifischer Fehler</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Messages Sent</source>
+      <translation>Mitteilungen Gesendet</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="102"/>
-        <source>Unsupported protocol version</source>
-        <translation>Nicht unterstützte Protokollversion</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Messages Received</source>
+      <translation>Mitteilungen Empfangen</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="107"/>
-        <source>Client identifier not valid</source>
-        <translation>Client-ID nicht gültig</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>PUBLISH Sent</source>
+      <translation>PUBLISH Gesendet</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="112"/>
-        <source>Bad user name or password</source>
-        <translation>Ungültiger Nutzername oder Kennwort</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>PUBLISH Received</source>
+      <translation>PUBLISH Empfangen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>PUBLISH Dropped</source>
+      <translation>PUBLISH Gelöscht</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Connections</source>
+      <translation>Verbindungen</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Sockets</source>
+      <translation>Sockets</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="117"/>
-        <source>Not authorized</source>
-        <translation>Nicht authorisiert</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Log</source>
+      <translation>Protokoll</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Max. Log Level:</source>
+      <translation>Max. Protokollebene:</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="127"/>
-        <source>Server unavailable</source>
-        <translation>Server nicht verfügbar</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select the maximum log level to show</source>
+      <translation>Die maximal anzuzeigende Protokollebene auswählen</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="132"/>
-        <source>Server busy</source>
-        <translation>Server ausgelastet</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to save the received log messages to a file</source>
+      <translation>Drücken, um die empfangenen Protokollmeldungen in eine Datei zu speichern</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the list of received log messages</source>
+      <translation>Drücken, um die Liste der empfangenen Protokollmeldungen zu löschen</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="138"/>
-        <source>Banned</source>
-        <translation>Gebannt</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to scroll to the most recently received log message</source>
+      <translation>Auswählen, um zur zuletzt empfangenen Protokollmeldungen zu blättern</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="143"/>
-        <source>Server shutting down</source>
-        <translation>Server fährt herunter</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Follow received log messages</source>
+      <translation>Empfangenen Protokollmeldungen folgen</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttPage</name>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>&lt;b&gt;Configure MQTT Monitor&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Konfiguration des MQTT Monitor&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Default MQTT Protocol</source>
+      <translation>Standard MQTT Protokoll</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="148"/>
-        <source>Bad authentication method</source>
-        <translation>Ungültige Authentifizierungsmethode</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Select to use the MQTT 3.1 protocol</source>
+      <translation>Auswählen, um das MQTT 3.1 Protokoll zu verwenden</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>v 3.1</source>
+      <translation>v 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="153"/>
-        <source>Keep alive timeout</source>
-        <translation>Keep Alive Timeout</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Select to use the MQTT 3.1.1 protocol</source>
+      <translation>Auswählen, um das MQTT 3.1.1 Protokoll zu verwenden</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="158"/>
-        <source>Session taken over</source>
-        <translation>Sitzung übernommen</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>v 3.1.1</source>
+      <translation>v 3.1.1</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Select to use the MQTT 5.0 protocol</source>
+      <translation>Auswählen, um das MQTT 5.0 Protokoll zu verwenden</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>v 5.0</source>
+      <translation>v 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="163"/>
-        <source>Topic filter invalid</source>
-        <translation>Themenfilter ungültig</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Recent Brokers</source>
+      <translation>Zuletzte genutzte Broker</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Number of recent brokers:</source>
+      <translation>Anzahl zuletzt genutzter Broker:</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Enter the number of recent brokers to remember</source>
+      <translation>Gib die zu merkende Anzahl an zuletzt genutzten Broker ein</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Recent Topics</source>
+      <translation>Zuletzt abonnierte Themen</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="170"/>
-        <source>Topic name invalid</source>
-        <translation>Themenname ungültig</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Number of recent topics:</source>
+      <translation>Anzahl zuletzt abonnierter Themen:</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="178"/>
-        <source>Packet identifier in use</source>
-        <translation>Paketkennung in Verwendung</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Enter the number of recent topics to remember</source>
+      <translation>Gib die zu merkende Anzahl an zuletzt abonnierten Themen ein</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttReasonCodeNames</name>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="15" />
+      <source>Success</source>
+      <translation>Erfolg</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="186"/>
-        <source>Packet identifier not found</source>
-        <translation>Paketkennung nicht gefunden</translation>
+      <location filename="../MqttReasonCodes.py" line="24" />
+      <source>Normal disconnection</source>
+      <translation>Normale Trennung</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="27" />
+      <source>Granted QoS 0</source>
+      <translation>QoS 0 genehmigt</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="191"/>
-        <source>Receive maximum exceeded</source>
-        <translation>Empfangsmaximum überschritten</translation>
+      <location filename="../MqttReasonCodes.py" line="32" />
+      <source>Granted QoS 1</source>
+      <translation>QoS 1 genehmigt</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="37" />
+      <source>Granted QoS 2</source>
+      <translation>QoS 2 genehmigt</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="196"/>
-        <source>Topic alias invalid</source>
-        <translation>Themenalias ungültig</translation>
+      <location filename="../MqttReasonCodes.py" line="42" />
+      <source>Disconnect with will message</source>
+      <translation>Trennung mit letztem Willen</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="47" />
+      <source>No matching subscribers</source>
+      <translation>Keine passenden Abonnenten</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="53" />
+      <source>No subscription found</source>
+      <translation>Kein Abonnement gefunden</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="201"/>
-        <source>Packet too large</source>
-        <translation>Paket zu groß</translation>
+      <location filename="../MqttReasonCodes.py" line="58" />
+      <source>Continue authentication</source>
+      <translation>Authentisierung fortsetzen</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="63" />
+      <source>Re-authenticate</source>
+      <translation>Neuauthentisierung</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="207"/>
-        <source>Message rate too high</source>
-        <translation>Meldungsrate zu hoch</translation>
+      <location filename="../MqttReasonCodes.py" line="68" />
+      <source>Unspecified error</source>
+      <translation>Unspezifizierter Fehler</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="212"/>
-        <source>Quota exceeded</source>
-        <translation>Quota überschritten</translation>
+      <location filename="../MqttReasonCodes.py" line="78" />
+      <source>Malformed packet</source>
+      <translation>Fehlerhaftes Paket</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="221"/>
-        <source>Administrative action</source>
-        <translation>Administrative Aktion</translation>
+      <location filename="../MqttReasonCodes.py" line="84" />
+      <source>Protocol error</source>
+      <translation>Protokollfehler</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="90" />
+      <source>Implementation specific error</source>
+      <translation>Implementierungsspezifischer Fehler</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="226"/>
-        <source>Payload format invalid</source>
-        <translation>Nutzlastformat ungültig</translation>
+      <location filename="../MqttReasonCodes.py" line="102" />
+      <source>Unsupported protocol version</source>
+      <translation>Nicht unterstützte Protokollversion</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="107" />
+      <source>Client identifier not valid</source>
+      <translation>Client-ID nicht gültig</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="112" />
+      <source>Bad user name or password</source>
+      <translation>Ungültiger Nutzername oder Kennwort</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="117" />
+      <source>Not authorized</source>
+      <translation>Nicht authorisiert</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="233"/>
-        <source>Retain not supported</source>
-        <translation>Merken nicht unterstützt</translation>
+      <location filename="../MqttReasonCodes.py" line="127" />
+      <source>Server unavailable</source>
+      <translation>Server nicht verfügbar</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="132" />
+      <source>Server busy</source>
+      <translation>Server ausgelastet</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="239"/>
-        <source>QoS not supported</source>
-        <translation>QoS nicht unterstützt</translation>
+      <location filename="../MqttReasonCodes.py" line="138" />
+      <source>Banned</source>
+      <translation>Gebannt</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="245"/>
-        <source>Use another server</source>
-        <translation>Verwende anderen Server</translation>
+      <location filename="../MqttReasonCodes.py" line="143" />
+      <source>Server shutting down</source>
+      <translation>Server fährt herunter</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="148" />
+      <source>Bad authentication method</source>
+      <translation>Ungültige Authentifizierungsmethode</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="251"/>
-        <source>Server moved</source>
-        <translation>Server umgezogen</translation>
+      <location filename="../MqttReasonCodes.py" line="153" />
+      <source>Keep alive timeout</source>
+      <translation>Keep Alive Timeout</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="158" />
+      <source>Session taken over</source>
+      <translation>Sitzung übernommen</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="257"/>
-        <source>Shared subscription not supported</source>
-        <translation>Geteiltes Abonnement nicht unterstützt</translation>
+      <location filename="../MqttReasonCodes.py" line="163" />
+      <source>Topic filter invalid</source>
+      <translation>Themenfilter ungültig</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="170" />
+      <source>Topic name invalid</source>
+      <translation>Themenname ungültig</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="178" />
+      <source>Packet identifier in use</source>
+      <translation>Paketkennung in Verwendung</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="262"/>
-        <source>Connection rate exceeded</source>
-        <translation>Verbindungsrate überschritten</translation>
+      <location filename="../MqttReasonCodes.py" line="186" />
+      <source>Packet identifier not found</source>
+      <translation>Paketkennung nicht gefunden</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="191" />
+      <source>Receive maximum exceeded</source>
+      <translation>Empfangsmaximum überschritten</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="268"/>
-        <source>Maximum connect time</source>
-        <translation>Maximale Verbindungszeit</translation>
+      <location filename="../MqttReasonCodes.py" line="196" />
+      <source>Topic alias invalid</source>
+      <translation>Themenalias ungültig</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="273"/>
-        <source>Subscription identifiers not supported</source>
-        <translation>Abonnement-IDs nicht unterstützt</translation>
+      <location filename="../MqttReasonCodes.py" line="201" />
+      <source>Packet too large</source>
+      <translation>Paket zu groß</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="278"/>
-        <source>Wildcard subscription not supported</source>
-        <translation>Wildcard-Abonnement nicht unterstützt</translation>
+      <location filename="../MqttReasonCodes.py" line="207" />
+      <source>Message rate too high</source>
+      <translation>Meldungsrate zu hoch</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="212" />
+      <source>Quota exceeded</source>
+      <translation>Quota überschritten</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="298"/>
-        <source>Unknown result code ({0})</source>
-        <translation>Unbekannter Ergebniscode ({0})</translation>
+      <location filename="../MqttReasonCodes.py" line="221" />
+      <source>Administrative action</source>
+      <translation>Administrative Aktion</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="226" />
+      <source>Payload format invalid</source>
+      <translation>Nutzlastformat ungültig</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="233" />
+      <source>Retain not supported</source>
+      <translation>Merken nicht unterstützt</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="239" />
+      <source>QoS not supported</source>
+      <translation>QoS nicht unterstützt</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="307"/>
-        <source>Unknown result code ({0}) for packet type &apos;{1}&apos;</source>
-        <translation>Unbekannter Ergebniscode ({0}) für Pakettyp &apos;{1}&apos;</translation>
+      <location filename="../MqttReasonCodes.py" line="245" />
+      <source>Use another server</source>
+      <translation>Verwende anderen Server</translation>
     </message>
-</context>
-<context>
-    <name>MqttUserPropertiesEditor</name>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>User Properties</source>
-        <translation>Benutzereigenschaften</translation>
+      <location filename="../MqttReasonCodes.py" line="251" />
+      <source>Server moved</source>
+      <translation>Server umgezogen</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Key</source>
-        <translation>Schlüssel</translation>
+      <location filename="../MqttReasonCodes.py" line="257" />
+      <source>Shared subscription not supported</source>
+      <translation>Geteiltes Abonnement nicht unterstützt</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="262" />
+      <source>Connection rate exceeded</source>
+      <translation>Verbindungsrate überschritten</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="268" />
+      <source>Maximum connect time</source>
+      <translation>Maximale Verbindungszeit</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="273" />
+      <source>Subscription identifiers not supported</source>
+      <translation>Abonnement-IDs nicht unterstützt</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Value</source>
-        <translation>Wert</translation>
+      <location filename="../MqttReasonCodes.py" line="278" />
+      <source>Wildcard subscription not supported</source>
+      <translation>Wildcard-Abonnement nicht unterstützt</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="298" />
+      <source>Unknown result code ({0})</source>
+      <translation>Unbekannter Ergebniscode ({0})</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Press to add a new empty row</source>
-        <translation>Drücken, um eine neue, leere Zeile anzufügen</translation>
+      <location filename="../MqttReasonCodes.py" line="307" />
+      <source>Unknown result code ({0}) for packet type '{1}'</source>
+      <translation>Unbekannter Ergebniscode ({0}) für Pakettyp '{1}'</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttUserPropertiesEditor</name>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>User Properties</source>
+      <translation>Benutzereigenschaften</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Press to delete the selected properties</source>
-        <translation>Drücken, um die ausgewählten Eigenschaften zu löschen</translation>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Key</source>
+      <translation>Schlüssel</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Press to delete all properties</source>
-        <translation>Drücken, um alle Eigenschaften zu löschen</translation>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Value</source>
+      <translation>Wert</translation>
+    </message>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Press to add a new empty row</source>
+      <translation>Drücken, um eine neue, leere Zeile anzufügen</translation>
     </message>
-</context>
-<context>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Press to delete the selected properties</source>
+      <translation>Drücken, um die ausgewählten Eigenschaften zu löschen</translation>
+    </message>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Press to delete all properties</source>
+      <translation>Drücken, um alle Eigenschaften zu löschen</translation>
+    </message>
+  </context>
+  <context>
     <name>MqttUserPropertiesEditorDialog</name>
     <message>
-        <location filename="../MqttUserPropertiesEditor.py" line="142"/>
-        <source>User Properties</source>
-        <translation>Benutzereigenschaften</translation>
+      <location filename="../MqttUserPropertiesEditor.py" line="142" />
+      <source>User Properties</source>
+      <translation>Benutzereigenschaften</translation>
     </message>
-</context>
+  </context>
 </TS>
--- a/MqttMonitor/i18n/mqttmonitor_empty.ts	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/i18n/mqttmonitor_empty.ts	Fri Apr 19 15:15:01 2024 +0200
@@ -2,44 +2,6 @@
 <!DOCTYPE TS>
 <TS version="2.0">
   <context>
-    <name>MqttConnackMessage</name>
-    <message>
-      <location filename="../MqttClient.py" line="826" />
-      <source>Connection Accepted.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="828" />
-      <source>Connection Refused: unacceptable protocol version.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="832" />
-      <source>Connection Refused: identifier rejected.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="836" />
-      <source>Connection Refused: broker unavailable.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="840" />
-      <source>Connection Refused: bad user name or password.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="844" />
-      <source>Connection Refused: not authorised.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="848" />
-      <source>Connection Refused: unknown reason.</source>
-      <translation type="unfinished" />
-    </message>
-  </context>
-  <context>
     <name>MqttConnectionOptionsDialog</name>
     <message>
       <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
@@ -291,116 +253,6 @@
   <context>
     <name>MqttConnectionProfilesDialog</name>
     <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
-      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
-      <source>Key Files (*.key *.pem);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="959" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
-      <source>Changed Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="960" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
-      <source>The current profile has unsaved changes. Shall these be saved?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
-      <source>New Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
-      <source>Enter name for the new Connection Profile:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
-      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
-      <source>Copy Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
-      <source>Enter name for the copied Connection Profile:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
-      <source>Delete Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
-      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
-      <source>Invalid Connection Parameters</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
-      <source>An empty Client ID requires a clean session.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
-      <source>Last Will User Properties</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
-      <source>SSL/TLS Enabled</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
-      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
-      <source>SSL/TLS Disabled</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
-      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
-      <source>Changed Connection Profiles</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
-      <source>The list of connection profiles has unsaved changes.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
       <source>MQTT Connection Profiles</source>
       <translation type="unfinished" />
@@ -622,6 +474,12 @@
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
       <source>Select to use the default certificate file of the client</source>
       <translation type="unfinished" />
@@ -718,87 +576,191 @@
       <source>Use CONNECT properties for DISCONNECT</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
+      <source>Key Files (*.key *.pem);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="957" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
+      <source>Changed Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="958" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
+      <source>The current profile has unsaved changes. Shall these be saved?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
+      <source>New Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
+      <source>Enter name for the new Connection Profile:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
+      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
+      <source>Copy Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
+      <source>Enter name for the copied Connection Profile:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
+      <source>Delete Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
+      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
+      <source>Invalid Connection Parameters</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
+      <source>Last Will User Properties</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
+      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
+      <source>SSL/TLS Disabled</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
+      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
+      <source>Changed Connection Profiles</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
+      <source>The list of connection profiles has unsaved changes.</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MqttErrorMessage</name>
     <message>
-      <location filename="../MqttClient.py" line="864" />
+      <location filename="../MqttClient.py" line="773" />
       <source>No error.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="866" />
+      <location filename="../MqttClient.py" line="775" />
       <source>Out of memory.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="868" />
+      <location filename="../MqttClient.py" line="777" />
       <source>A network protocol error occurred when communicating with the broker.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="873" />
+      <location filename="../MqttClient.py" line="782" />
       <source>Invalid function arguments provided.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="877" />
+      <location filename="../MqttClient.py" line="786" />
       <source>The client is not currently connected.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="881" />
+      <location filename="../MqttClient.py" line="790" />
       <source>The connection was refused.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="885" />
+      <location filename="../MqttClient.py" line="794" />
       <source>Message not found (internal error).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="889" />
+      <location filename="../MqttClient.py" line="798" />
       <source>The connection was lost.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="893" />
+      <location filename="../MqttClient.py" line="802" />
       <source>A TLS error occurred.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="895" />
+      <location filename="../MqttClient.py" line="804" />
       <source>Payload too large.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="897" />
+      <location filename="../MqttClient.py" line="806" />
       <source>This feature is not supported.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="901" />
+      <location filename="../MqttClient.py" line="810" />
       <source>Authorisation failed.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="903" />
+      <location filename="../MqttClient.py" line="812" />
       <source>Access denied by ACL.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="911" />
-      <location filename="../MqttClient.py" line="905" />
+      <location filename="../MqttClient.py" line="820" />
+      <location filename="../MqttClient.py" line="814" />
       <source>Unknown error.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="907" />
+      <location filename="../MqttClient.py" line="816" />
       <source>Error defined by errno.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="909" />
+      <location filename="../MqttClient.py" line="818" />
       <source>Message queue full.</source>
       <translation type="unfinished" />
     </message>
@@ -806,38 +768,38 @@
   <context>
     <name>MqttLogLevelString</name>
     <message>
-      <location filename="../MqttClient.py" line="947" />
-      <location filename="../MqttClient.py" line="930" />
+      <location filename="../MqttClient.py" line="856" />
+      <location filename="../MqttClient.py" line="839" />
       <source>Unknown</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="935" />
+      <location filename="../MqttClient.py" line="844" />
       <source>Info</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="937" />
+      <location filename="../MqttClient.py" line="846" />
       <source>Notice</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="939" />
+      <location filename="../MqttClient.py" line="848" />
       <source>Warning</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="941" />
+      <location filename="../MqttClient.py" line="850" />
       <source>Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="943" />
+      <location filename="../MqttClient.py" line="852" />
       <source>Debug</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="945" />
+      <location filename="../MqttClient.py" line="854" />
       <source>Logging Disabled</source>
       <translation type="unfinished" />
     </message>
@@ -845,49 +807,49 @@
   <context>
     <name>MqttMonitorPlugin</name>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="202" />
-      <location filename="../../PluginMqttMonitor.py" line="198" />
-      <location filename="../../PluginMqttMonitor.py" line="81" />
+      <location filename="../../PluginMqttMonitor.py" line="214" />
+      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="93" />
       <source>MQTT Monitor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="103" />
+      <location filename="../../PluginMqttMonitor.py" line="115" />
       <source>(package not available)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="109" />
+      <location filename="../../PluginMqttMonitor.py" line="121" />
       <source>MQTT</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="110" />
+      <location filename="../../PluginMqttMonitor.py" line="122" />
       <source>paho-mqtt</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="180" />
+      <location filename="../../PluginMqttMonitor.py" line="192" />
       <source>The 'paho-mqtt' package is not available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="203" />
+      <location filename="../../PluginMqttMonitor.py" line="215" />
       <source>M&amp;QTT Monitor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="204" />
+      <location filename="../../PluginMqttMonitor.py" line="216" />
       <source>Alt+Shift+Q</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="222" />
       <source>Switch the input focus to the MQTT Monitor window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="213" />
+      <location filename="../../PluginMqttMonitor.py" line="225" />
       <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -895,6 +857,211 @@
   <context>
     <name>MqttMonitorWidget</name>
     <message>
+      <location filename="../MqttMonitorWidget.py" line="88" />
+      <source>All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="325" />
+      <source>Copy</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="331" />
+      <source>Select All</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="337" />
+      <source>Clear</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="372" />
+      <source>{0} - Session still present</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="410" />
+      <source>Connection timed out</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="438" />
+      <source>Connection to Broker shut down cleanly.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="498" />
+      <source>{0}: {1}</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="709" />
+      <source>SUBSCRIBE: User Properties for '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="735" />
+      <source>Subscribe to Topic</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="736" />
+      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="760" />
+      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="798" />
+      <source>PUBLISH: User Properties for '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="834" />
+      <source>Read Payload from File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="835" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="986" />
+      <location filename="../MqttMonitorWidget.py" line="970" />
+      <location filename="../MqttMonitorWidget.py" line="951" />
+      <source>Save Messages</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="953" />
+      <source>Messages Files (*.txt);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1032" />
+      <location filename="../MqttMonitorWidget.py" line="971" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1048" />
+      <location filename="../MqttMonitorWidget.py" line="987" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1047" />
+      <location filename="../MqttMonitorWidget.py" line="1031" />
+      <location filename="../MqttMonitorWidget.py" line="1012" />
+      <source>Save Log Messages</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1014" />
+      <source>Log Files (*.log);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1068" />
+      <source>Unsubscribe</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1070" />
+      <source>Press to deactivate the status display</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1073" />
+      <source>Subscribe</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1075" />
+      <source>Press to activate the status display</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1237" />
+      <source>QoS: {0}
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1241" />
+      <source>Retained Message
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1245" />
+      <source>Properties:
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1249" />
+      <source>{0}: {1}
+</source>
+      <comment>property name, property value</comment>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1255" />
+      <source>Message:
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1262" />
+      <source>&lt;empty&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1468" />
+      <location filename="../MqttMonitorWidget.py" line="1419" />
+      <source>Connecting to {0}:{1} ...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1613" />
+      <source>{0} Bytes</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1618" />
+      <source>{0} KiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1623" />
+      <source>{0} MiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1628" />
+      <source>{0} GiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1633" />
+      <source>{0} TiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
       <translation type="unfinished" />
@@ -945,13 +1112,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1101" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Subscribe</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <location filename="../MqttMonitorWidget.ui" line="0" />
@@ -988,12 +1148,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1096" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Unsubscribe</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>Select the topic to unsubscribe</source>
       <translation type="unfinished" />
@@ -1045,14 +1199,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="346" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Clear</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>Press to clear the retained messages of the selected topic</source>
       <translation type="unfinished" />
@@ -1119,12 +1265,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1103" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Press to activate the status display</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>&lt;b&gt;Broker&lt;/b&gt;</source>
       <translation type="unfinished" />
@@ -1349,184 +1489,6 @@
       <source>Follow received log messages</source>
       <translation type="unfinished" />
     </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="93" />
-      <source>All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="334" />
-      <source>Copy</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="340" />
-      <source>Select All</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="391" />
-      <source>{0} - Session still present</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="429" />
-      <source>Connection timed out</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="457" />
-      <source>Connection to Broker shut down cleanly.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="517" />
-      <source>{0}: {1}</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="737" />
-      <source>SUBSCRIBE: User Properties for '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="763" />
-      <source>Subscribe to Topic</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="764" />
-      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="788" />
-      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="826" />
-      <source>PUBLISH: User Properties for '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="862" />
-      <source>Read Payload from File</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="863" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1014" />
-      <location filename="../MqttMonitorWidget.py" line="998" />
-      <location filename="../MqttMonitorWidget.py" line="979" />
-      <source>Save Messages</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="981" />
-      <source>Messages Files (*.txt);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1060" />
-      <location filename="../MqttMonitorWidget.py" line="999" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1076" />
-      <location filename="../MqttMonitorWidget.py" line="1015" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1075" />
-      <location filename="../MqttMonitorWidget.py" line="1059" />
-      <location filename="../MqttMonitorWidget.py" line="1040" />
-      <source>Save Log Messages</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1042" />
-      <source>Log Files (*.log);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1098" />
-      <source>Press to deactivate the status display</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1265" />
-      <source>QoS: {0}
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1269" />
-      <source>Retained Message
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1273" />
-      <source>Properties:
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1277" />
-      <source>{0}: {1}
-</source>
-      <comment>property name, property value</comment>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1283" />
-      <source>Message:
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1290" />
-      <source>&lt;empty&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1496" />
-      <location filename="../MqttMonitorWidget.py" line="1447" />
-      <source>Connecting to {0}:{1} ...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1641" />
-      <source>{0} Bytes</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1646" />
-      <source>{0} KiB</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1651" />
-      <source>{0} MiB</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1656" />
-      <source>{0} GiB</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1661" />
-      <source>{0} TiB</source>
-      <translation type="unfinished" />
-    </message>
   </context>
   <context>
     <name>MqttPage</name>
--- a/MqttMonitor/i18n/mqttmonitor_en.ts	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/i18n/mqttmonitor_en.ts	Fri Apr 19 15:15:01 2024 +0200
@@ -2,44 +2,6 @@
 <!DOCTYPE TS>
 <TS version="2.0" language="en_US" sourcelanguage="">
   <context>
-    <name>MqttConnackMessage</name>
-    <message>
-      <location filename="../MqttClient.py" line="826" />
-      <source>Connection Accepted.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="828" />
-      <source>Connection Refused: unacceptable protocol version.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="832" />
-      <source>Connection Refused: identifier rejected.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="836" />
-      <source>Connection Refused: broker unavailable.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="840" />
-      <source>Connection Refused: bad user name or password.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="844" />
-      <source>Connection Refused: not authorised.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="848" />
-      <source>Connection Refused: unknown reason.</source>
-      <translation type="unfinished" />
-    </message>
-  </context>
-  <context>
     <name>MqttConnectionOptionsDialog</name>
     <message>
       <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
@@ -291,116 +253,6 @@
   <context>
     <name>MqttConnectionProfilesDialog</name>
     <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
-      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
-      <source>Key Files (*.key *.pem);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="959" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
-      <source>Changed Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="960" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
-      <source>The current profile has unsaved changes. Shall these be saved?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
-      <source>New Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
-      <source>Enter name for the new Connection Profile:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
-      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
-      <source>Copy Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
-      <source>Enter name for the copied Connection Profile:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
-      <source>Delete Connection Profile</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
-      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
-      <source>Invalid Connection Parameters</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
-      <source>An empty Client ID requires a clean session.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
-      <source>Last Will User Properties</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
-      <source>SSL/TLS Enabled</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
-      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
-      <source>SSL/TLS Disabled</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
-      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
-      <source>Changed Connection Profiles</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
-      <source>The list of connection profiles has unsaved changes.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
       <source>MQTT Connection Profiles</source>
       <translation type="unfinished" />
@@ -622,6 +474,12 @@
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
       <source>Select to use the default certificate file of the client</source>
       <translation type="unfinished" />
@@ -718,87 +576,191 @@
       <source>Use CONNECT properties for DISCONNECT</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
+      <source>Key Files (*.key *.pem);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="957" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
+      <source>Changed Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="958" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
+      <source>The current profile has unsaved changes. Shall these be saved?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
+      <source>New Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
+      <source>Enter name for the new Connection Profile:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
+      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
+      <source>Copy Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
+      <source>Enter name for the copied Connection Profile:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
+      <source>Delete Connection Profile</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
+      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
+      <source>Invalid Connection Parameters</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
+      <source>Last Will User Properties</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
+      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
+      <source>SSL/TLS Disabled</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
+      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
+      <source>Changed Connection Profiles</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
+      <source>The list of connection profiles has unsaved changes.</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>MqttErrorMessage</name>
     <message>
-      <location filename="../MqttClient.py" line="864" />
+      <location filename="../MqttClient.py" line="773" />
       <source>No error.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="866" />
+      <location filename="../MqttClient.py" line="775" />
       <source>Out of memory.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="868" />
+      <location filename="../MqttClient.py" line="777" />
       <source>A network protocol error occurred when communicating with the broker.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="873" />
+      <location filename="../MqttClient.py" line="782" />
       <source>Invalid function arguments provided.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="877" />
+      <location filename="../MqttClient.py" line="786" />
       <source>The client is not currently connected.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="881" />
+      <location filename="../MqttClient.py" line="790" />
       <source>The connection was refused.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="885" />
+      <location filename="../MqttClient.py" line="794" />
       <source>Message not found (internal error).</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="889" />
+      <location filename="../MqttClient.py" line="798" />
       <source>The connection was lost.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="893" />
+      <location filename="../MqttClient.py" line="802" />
       <source>A TLS error occurred.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="895" />
+      <location filename="../MqttClient.py" line="804" />
       <source>Payload too large.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="897" />
+      <location filename="../MqttClient.py" line="806" />
       <source>This feature is not supported.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="901" />
+      <location filename="../MqttClient.py" line="810" />
       <source>Authorisation failed.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="903" />
+      <location filename="../MqttClient.py" line="812" />
       <source>Access denied by ACL.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="911" />
-      <location filename="../MqttClient.py" line="905" />
+      <location filename="../MqttClient.py" line="820" />
+      <location filename="../MqttClient.py" line="814" />
       <source>Unknown error.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="907" />
+      <location filename="../MqttClient.py" line="816" />
       <source>Error defined by errno.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="909" />
+      <location filename="../MqttClient.py" line="818" />
       <source>Message queue full.</source>
       <translation type="unfinished" />
     </message>
@@ -806,38 +768,38 @@
   <context>
     <name>MqttLogLevelString</name>
     <message>
-      <location filename="../MqttClient.py" line="947" />
-      <location filename="../MqttClient.py" line="930" />
+      <location filename="../MqttClient.py" line="856" />
+      <location filename="../MqttClient.py" line="839" />
       <source>Unknown</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="935" />
+      <location filename="../MqttClient.py" line="844" />
       <source>Info</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="937" />
+      <location filename="../MqttClient.py" line="846" />
       <source>Notice</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="939" />
+      <location filename="../MqttClient.py" line="848" />
       <source>Warning</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="941" />
+      <location filename="../MqttClient.py" line="850" />
       <source>Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="943" />
+      <location filename="../MqttClient.py" line="852" />
       <source>Debug</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttClient.py" line="945" />
+      <location filename="../MqttClient.py" line="854" />
       <source>Logging Disabled</source>
       <translation type="unfinished" />
     </message>
@@ -845,49 +807,49 @@
   <context>
     <name>MqttMonitorPlugin</name>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="202" />
-      <location filename="../../PluginMqttMonitor.py" line="198" />
-      <location filename="../../PluginMqttMonitor.py" line="81" />
+      <location filename="../../PluginMqttMonitor.py" line="214" />
+      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="93" />
       <source>MQTT Monitor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="103" />
+      <location filename="../../PluginMqttMonitor.py" line="115" />
       <source>(package not available)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="109" />
+      <location filename="../../PluginMqttMonitor.py" line="121" />
       <source>MQTT</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="110" />
+      <location filename="../../PluginMqttMonitor.py" line="122" />
       <source>paho-mqtt</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="180" />
+      <location filename="../../PluginMqttMonitor.py" line="192" />
       <source>The 'paho-mqtt' package is not available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="203" />
+      <location filename="../../PluginMqttMonitor.py" line="215" />
       <source>M&amp;QTT Monitor</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="204" />
+      <location filename="../../PluginMqttMonitor.py" line="216" />
       <source>Alt+Shift+Q</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="222" />
       <source>Switch the input focus to the MQTT Monitor window.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="213" />
+      <location filename="../../PluginMqttMonitor.py" line="225" />
       <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -895,6 +857,211 @@
   <context>
     <name>MqttMonitorWidget</name>
     <message>
+      <location filename="../MqttMonitorWidget.py" line="88" />
+      <source>All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="325" />
+      <source>Copy</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="331" />
+      <source>Select All</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="337" />
+      <source>Clear</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="372" />
+      <source>{0} - Session still present</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="410" />
+      <source>Connection timed out</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="438" />
+      <source>Connection to Broker shut down cleanly.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="498" />
+      <source>{0}: {1}</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="709" />
+      <source>SUBSCRIBE: User Properties for '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="735" />
+      <source>Subscribe to Topic</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="736" />
+      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="760" />
+      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="798" />
+      <source>PUBLISH: User Properties for '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="834" />
+      <source>Read Payload from File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="835" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="986" />
+      <location filename="../MqttMonitorWidget.py" line="970" />
+      <location filename="../MqttMonitorWidget.py" line="951" />
+      <source>Save Messages</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="953" />
+      <source>Messages Files (*.txt);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1032" />
+      <location filename="../MqttMonitorWidget.py" line="971" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1048" />
+      <location filename="../MqttMonitorWidget.py" line="987" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1047" />
+      <location filename="../MqttMonitorWidget.py" line="1031" />
+      <location filename="../MqttMonitorWidget.py" line="1012" />
+      <source>Save Log Messages</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1014" />
+      <source>Log Files (*.log);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1068" />
+      <source>Unsubscribe</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1070" />
+      <source>Press to deactivate the status display</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1073" />
+      <source>Subscribe</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1075" />
+      <source>Press to activate the status display</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1237" />
+      <source>QoS: {0}
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1241" />
+      <source>Retained Message
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1245" />
+      <source>Properties:
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1249" />
+      <source>{0}: {1}
+</source>
+      <comment>property name, property value</comment>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1255" />
+      <source>Message:
+</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1262" />
+      <source>&lt;empty&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1468" />
+      <location filename="../MqttMonitorWidget.py" line="1419" />
+      <source>Connecting to {0}:{1} ...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1613" />
+      <source>{0} Bytes</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1618" />
+      <source>{0} KiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1623" />
+      <source>{0} MiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1628" />
+      <source>{0} GiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1633" />
+      <source>{0} TiB</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
       <translation type="unfinished" />
@@ -945,13 +1112,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1101" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Subscribe</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <location filename="../MqttMonitorWidget.ui" line="0" />
@@ -988,12 +1148,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1096" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Unsubscribe</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>Select the topic to unsubscribe</source>
       <translation type="unfinished" />
@@ -1045,14 +1199,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="346" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Clear</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>Press to clear the retained messages of the selected topic</source>
       <translation type="unfinished" />
@@ -1119,12 +1265,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1103" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Press to activate the status display</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>&lt;b&gt;Broker&lt;/b&gt;</source>
       <translation type="unfinished" />
@@ -1349,184 +1489,6 @@
       <source>Follow received log messages</source>
       <translation type="unfinished" />
     </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="93" />
-      <source>All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="334" />
-      <source>Copy</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="340" />
-      <source>Select All</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="391" />
-      <source>{0} - Session still present</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="429" />
-      <source>Connection timed out</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="457" />
-      <source>Connection to Broker shut down cleanly.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="517" />
-      <source>{0}: {1}</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="737" />
-      <source>SUBSCRIBE: User Properties for '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="763" />
-      <source>Subscribe to Topic</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="764" />
-      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="788" />
-      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="826" />
-      <source>PUBLISH: User Properties for '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="862" />
-      <source>Read Payload from File</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="863" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1014" />
-      <location filename="../MqttMonitorWidget.py" line="998" />
-      <location filename="../MqttMonitorWidget.py" line="979" />
-      <source>Save Messages</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="981" />
-      <source>Messages Files (*.txt);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1060" />
-      <location filename="../MqttMonitorWidget.py" line="999" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1076" />
-      <location filename="../MqttMonitorWidget.py" line="1015" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1075" />
-      <location filename="../MqttMonitorWidget.py" line="1059" />
-      <location filename="../MqttMonitorWidget.py" line="1040" />
-      <source>Save Log Messages</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1042" />
-      <source>Log Files (*.log);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1098" />
-      <source>Press to deactivate the status display</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1265" />
-      <source>QoS: {0}
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1269" />
-      <source>Retained Message
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1273" />
-      <source>Properties:
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1277" />
-      <source>{0}: {1}
-</source>
-      <comment>property name, property value</comment>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1283" />
-      <source>Message:
-</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1290" />
-      <source>&lt;empty&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1496" />
-      <location filename="../MqttMonitorWidget.py" line="1447" />
-      <source>Connecting to {0}:{1} ...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1641" />
-      <source>{0} Bytes</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1646" />
-      <source>{0} KiB</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1651" />
-      <source>{0} MiB</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1656" />
-      <source>{0} GiB</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1661" />
-      <source>{0} TiB</source>
-      <translation type="unfinished" />
-    </message>
   </context>
   <context>
     <name>MqttPage</name>
Binary file MqttMonitor/i18n/mqttmonitor_es.qm has changed
--- a/MqttMonitor/i18n/mqttmonitor_es.ts	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/i18n/mqttmonitor_es.ts	Fri Apr 19 15:15:01 2024 +0200
@@ -2,44 +2,6 @@
 <!DOCTYPE TS>
 <TS version="2.1" language="es_ES">
   <context>
-    <name>MqttConnackMessage</name>
-    <message>
-      <location filename="../MqttClient.py" line="826" />
-      <source>Connection Accepted.</source>
-      <translation>Conexión Aceptada.</translation>
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="828" />
-      <source>Connection Refused: unacceptable protocol version.</source>
-      <translation>Conexión Rechazada: versión de protocolo no aceptable.</translation>
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="832" />
-      <source>Connection Refused: identifier rejected.</source>
-      <translation>Conexión Rechazada: identificador rechazado.</translation>
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="836" />
-      <source>Connection Refused: broker unavailable.</source>
-      <translation>Conexión Rechazada: broker no disponible.</translation>
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="840" />
-      <source>Connection Refused: bad user name or password.</source>
-      <translation>Conexión Rechazada: nombre de usuario o contraseña no válidos.</translation>
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="844" />
-      <source>Connection Refused: not authorised.</source>
-      <translation>Conexión Rechazada: no autorizado.</translation>
-    </message>
-    <message>
-      <location filename="../MqttClient.py" line="848" />
-      <source>Connection Refused: unknown reason.</source>
-      <translation>Conexión Rechazada: razón desconocida.</translation>
-    </message>
-  </context>
-  <context>
     <name>MqttConnectionOptionsDialog</name>
     <message>
       <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
@@ -291,116 +253,6 @@
   <context>
     <name>MqttConnectionProfilesDialog</name>
     <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
-      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-      <translation>Archivos de Certificado (*.crt *.pem);;Todos los Archivos (*)</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
-      <source>Key Files (*.key *.pem);;All Files (*)</source>
-      <translation>Archivos de Clave (*.key *.pem);;Todos los Archivos (*)</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="959" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
-      <source>Changed Connection Profile</source>
-      <translation>Perfil de Conexión Cambiado</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="960" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
-      <source>The current profile has unsaved changes. Shall these be saved?</source>
-      <translation>El perfil actual tiene cambios sin guardar. ¿Desea guardarlos?</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
-      <source>New Connection Profile</source>
-      <translation>Nuevo Perfil de Conexión</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
-      <source>Enter name for the new Connection Profile:</source>
-      <translation>ntroducir nombre para el nuevo Perfil de Conexión:</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
-      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
-      <translation>&lt;p&gt;Una conexión llamada &lt;b&gt;{0}&lt;/b&gt; ya existe. Abortando...&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
-      <source>Copy Connection Profile</source>
-      <translation>Copiar Perfil de Conexión</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
-      <source>Enter name for the copied Connection Profile:</source>
-      <translation>Introducir nombre para el Perfil de Conexión copiado:</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
-      <source>Delete Connection Profile</source>
-      <translation>Borrar Perfil de Conexión</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
-      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
-      <translation>&lt;p&gt;¿Realmente desea eliminar el Perfil de Conexión &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
-      <source>Invalid Connection Parameters</source>
-      <translation>Parámetros de Conexión No Válidos</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
-      <source>An empty Client ID requires a clean session.</source>
-      <translation>Un ID de Cliente vacío requiere una sesión limpia.</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
-      <source>Last Will User Properties</source>
-      <translation>Propiedades de Usuario de Última Voluntad</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
-      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
-      <source>SSL/TLS Enabled</source>
-      <translation>SSL/TLS Habilitado</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
-      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
-      <translation>Se ha habilitado conexión encriptada utilizando SSL/TLS. Sin embargo, el puerto del broker sigue siendo el puerto por defecto no encriptado (puerto 1883). ¿Desea cambiarlo?</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
-      <source>SSL/TLS Disabled</source>
-      <translation>SSL/TLS Deshabilitado</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
-      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
-      <translation>Se ha deshabilitado conexión encriptada utilizando SSL/TLS. Sin embargo, el puerto del broker sigue siendo el puerto por defecto no encriptado (puerto 1883). ¿Desea cambiarlo?</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
-      <source>Changed Connection Profiles</source>
-      <translation>Perfiles de Conexión Cambiados</translation>
-    </message>
-    <message>
-      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
-      <source>The list of connection profiles has unsaved changes.</source>
-      <translation>La lista de perfiles de conexión tienen cambios sin guardar.</translation>
-    </message>
-    <message>
       <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
       <source>MQTT Connection Profiles</source>
       <translation>Perfiles de Conexión MQTT</translation>
@@ -622,6 +474,12 @@
       <translation>Seleccionar para habilitar conexiones SSL/TLS</translation>
     </message>
     <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation>SSL/TLS Habilitado</translation>
+    </message>
+    <message>
       <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
       <source>Select to use the default certificate file of the client</source>
       <translation>Seleccionar para utilizar el archivo de certificado por defecto del cliente</translation>
@@ -718,87 +576,191 @@
       <source>Use CONNECT properties for DISCONNECT</source>
       <translation>Usar propiedades de CONNECT para DISCONNECT</translation>
     </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation>Archivos de Certificado (*.crt *.pem);;Todos los Archivos (*)</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
+      <source>Key Files (*.key *.pem);;All Files (*)</source>
+      <translation>Archivos de Clave (*.key *.pem);;Todos los Archivos (*)</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="957" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
+      <source>Changed Connection Profile</source>
+      <translation>Perfil de Conexión Cambiado</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="958" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
+      <source>The current profile has unsaved changes. Shall these be saved?</source>
+      <translation>El perfil actual tiene cambios sin guardar. ¿Desea guardarlos?</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
+      <source>New Connection Profile</source>
+      <translation>Nuevo Perfil de Conexión</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
+      <source>Enter name for the new Connection Profile:</source>
+      <translation>ntroducir nombre para el nuevo Perfil de Conexión:</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
+      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Una conexión llamada &lt;b&gt;{0}&lt;/b&gt; ya existe. Abortando...&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
+      <source>Copy Connection Profile</source>
+      <translation>Copiar Perfil de Conexión</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
+      <source>Enter name for the copied Connection Profile:</source>
+      <translation>Introducir nombre para el Perfil de Conexión copiado:</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
+      <source>Delete Connection Profile</source>
+      <translation>Borrar Perfil de Conexión</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
+      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
+      <translation>&lt;p&gt;¿Realmente desea eliminar el Perfil de Conexión &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
+      <source>Invalid Connection Parameters</source>
+      <translation>Parámetros de Conexión No Válidos</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation>Un ID de Cliente vacío requiere una sesión limpia.</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
+      <source>Last Will User Properties</source>
+      <translation>Propiedades de Usuario de Última Voluntad</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
+      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
+      <translation>Se ha habilitado conexión encriptada utilizando SSL/TLS. Sin embargo, el puerto del broker sigue siendo el puerto por defecto no encriptado (puerto 1883). ¿Desea cambiarlo?</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
+      <source>SSL/TLS Disabled</source>
+      <translation>SSL/TLS Deshabilitado</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
+      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
+      <translation>Se ha deshabilitado conexión encriptada utilizando SSL/TLS. Sin embargo, el puerto del broker sigue siendo el puerto por defecto no encriptado (puerto 1883). ¿Desea cambiarlo?</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
+      <source>Changed Connection Profiles</source>
+      <translation>Perfiles de Conexión Cambiados</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
+      <source>The list of connection profiles has unsaved changes.</source>
+      <translation>La lista de perfiles de conexión tienen cambios sin guardar.</translation>
+    </message>
   </context>
   <context>
     <name>MqttErrorMessage</name>
     <message>
-      <location filename="../MqttClient.py" line="864" />
+      <location filename="../MqttClient.py" line="773" />
       <source>No error.</source>
       <translation>No error.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="866" />
+      <location filename="../MqttClient.py" line="775" />
       <source>Out of memory.</source>
       <translation>Out of memory.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="868" />
+      <location filename="../MqttClient.py" line="777" />
       <source>A network protocol error occurred when communicating with the broker.</source>
       <translation>Ha ocurrido un error de protocolo de red con la comunicación con el broker.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="873" />
+      <location filename="../MqttClient.py" line="782" />
       <source>Invalid function arguments provided.</source>
       <translation>Se han proporcionado argumentos de función no válidos.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="877" />
+      <location filename="../MqttClient.py" line="786" />
       <source>The client is not currently connected.</source>
       <translation>El cliente no está actualmente conectado.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="881" />
+      <location filename="../MqttClient.py" line="790" />
       <source>The connection was refused.</source>
       <translation>La conexión se ha rechazado.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="885" />
+      <location filename="../MqttClient.py" line="794" />
       <source>Message not found (internal error).</source>
       <translation>Mensaje no encontrado (error interno).</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="889" />
+      <location filename="../MqttClient.py" line="798" />
       <source>The connection was lost.</source>
       <translation>Se ha perdido la conexión.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="893" />
+      <location filename="../MqttClient.py" line="802" />
       <source>A TLS error occurred.</source>
       <translation>Ha ocurrido un error de TLS .</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="895" />
+      <location filename="../MqttClient.py" line="804" />
       <source>Payload too large.</source>
       <translation>Carga útil demasiado grande.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="897" />
+      <location filename="../MqttClient.py" line="806" />
       <source>This feature is not supported.</source>
       <translation>Esta característica no está soportada.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="901" />
+      <location filename="../MqttClient.py" line="810" />
       <source>Authorisation failed.</source>
       <translation>Ha fallado la Autorización.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="903" />
+      <location filename="../MqttClient.py" line="812" />
       <source>Access denied by ACL.</source>
       <translation>Acceso denegado por ACL.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="911" />
-      <location filename="../MqttClient.py" line="905" />
+      <location filename="../MqttClient.py" line="820" />
+      <location filename="../MqttClient.py" line="814" />
       <source>Unknown error.</source>
       <translation>Error desconocido.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="907" />
+      <location filename="../MqttClient.py" line="816" />
       <source>Error defined by errno.</source>
       <translation>Error definido por errno.</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="909" />
+      <location filename="../MqttClient.py" line="818" />
       <source>Message queue full.</source>
       <translation>Cola de mensajes completa.</translation>
     </message>
@@ -806,38 +768,38 @@
   <context>
     <name>MqttLogLevelString</name>
     <message>
-      <location filename="../MqttClient.py" line="947" />
-      <location filename="../MqttClient.py" line="930" />
+      <location filename="../MqttClient.py" line="856" />
+      <location filename="../MqttClient.py" line="839" />
       <source>Unknown</source>
       <translation>Desconocido</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="935" />
+      <location filename="../MqttClient.py" line="844" />
       <source>Info</source>
       <translation>Info</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="937" />
+      <location filename="../MqttClient.py" line="846" />
       <source>Notice</source>
       <translation>Nota</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="939" />
+      <location filename="../MqttClient.py" line="848" />
       <source>Warning</source>
       <translation>Advertencia</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="941" />
+      <location filename="../MqttClient.py" line="850" />
       <source>Error</source>
       <translation>Error</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="943" />
+      <location filename="../MqttClient.py" line="852" />
       <source>Debug</source>
       <translation>Debug</translation>
     </message>
     <message>
-      <location filename="../MqttClient.py" line="945" />
+      <location filename="../MqttClient.py" line="854" />
       <source>Logging Disabled</source>
       <translation>Logging Deshabilitado</translation>
     </message>
@@ -845,49 +807,49 @@
   <context>
     <name>MqttMonitorPlugin</name>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="202" />
-      <location filename="../../PluginMqttMonitor.py" line="198" />
-      <location filename="../../PluginMqttMonitor.py" line="81" />
+      <location filename="../../PluginMqttMonitor.py" line="214" />
+      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="93" />
       <source>MQTT Monitor</source>
       <translation>MQTT Monitor</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="103" />
+      <location filename="../../PluginMqttMonitor.py" line="115" />
       <source>(package not available)</source>
       <translation>(package no disponible)</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="109" />
+      <location filename="../../PluginMqttMonitor.py" line="121" />
       <source>MQTT</source>
       <translation>MQTT</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="110" />
+      <location filename="../../PluginMqttMonitor.py" line="122" />
       <source>paho-mqtt</source>
       <translation>paho-mqtt</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="180" />
+      <location filename="../../PluginMqttMonitor.py" line="192" />
       <source>The 'paho-mqtt' package is not available.</source>
       <translation>El package 'paho-mqtt' no está disponible.</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="203" />
+      <location filename="../../PluginMqttMonitor.py" line="215" />
       <source>M&amp;QTT Monitor</source>
       <translation>M&amp;QTT Monitor</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="204" />
+      <location filename="../../PluginMqttMonitor.py" line="216" />
       <source>Alt+Shift+Q</source>
       <translation>Alt+Shift+Q</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="222" />
       <source>Switch the input focus to the MQTT Monitor window.</source>
       <translation>Cambiar el foco de input a la ventana de MQTT Monitor.</translation>
     </message>
     <message>
-      <location filename="../../PluginMqttMonitor.py" line="213" />
+      <location filename="../../PluginMqttMonitor.py" line="225" />
       <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Activar MQTT Monitor&lt;/b&gt;&lt;p&gt;Cambia el foco de input a la ventana de MQTT Monitor.&lt;/p&gt;</translation>
     </message>
@@ -895,6 +857,216 @@
   <context>
     <name>MqttMonitorWidget</name>
     <message>
+      <location filename="../MqttMonitorWidget.py" line="88" />
+      <source>All Files (*)</source>
+      <translation>Todos los Archivos (*)</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="325" />
+      <source>Copy</source>
+      <translation>Copiar</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="331" />
+      <source>Select All</source>
+      <translation>Seleccionar Todo</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="337" />
+      <source>Clear</source>
+      <translation>Limpiar</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="372" />
+      <source>{0} - Session still present</source>
+      <translation>{0} - Sesión todavía presente</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="410" />
+      <source>Connection timed out</source>
+      <translation>Se ha agotado el tiempo de conexión</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="438" />
+      <source>Connection to Broker shut down cleanly.</source>
+      <translation>Conexión a Broker detenida limpiamente.</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="498" />
+      <source>{0}: {1}</source>
+      <translation>{0}: {1}</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="709" />
+      <source>SUBSCRIBE: User Properties for '{0}'</source>
+      <translation>SUBSCRIBE: Propiedades de Usuario para '{0}'</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="735" />
+      <source>Subscribe to Topic</source>
+      <translation>Subscribir a Tema</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="736" />
+      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
+      <translation>Las subscripciones al tema de Status '$SYS' se deben hacer en la pestaña de 'Status'.</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="760" />
+      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
+      <translation>UNSUBSCRIBE: Propiedades de Usuario para '{0}'</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="798" />
+      <source>PUBLISH: User Properties for '{0}'</source>
+      <translation>PUBLISH: Propiedades de Usuario para '{0}'</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="834" />
+      <source>Read Payload from File</source>
+      <translation>Leer Payload desde Archivo</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="835" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido leer. Abortando...&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="986" />
+      <location filename="../MqttMonitorWidget.py" line="970" />
+      <location filename="../MqttMonitorWidget.py" line="951" />
+      <source>Save Messages</source>
+      <translation>Guardar Mensajes</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="953" />
+      <source>Messages Files (*.txt);;All Files (*)</source>
+      <translation>Archivos de Mensaje (*.txt);;Todos los Archivos (*)</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1032" />
+      <location filename="../MqttMonitorWidget.py" line="971" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
+      <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Sobreescribirlo?&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1048" />
+      <location filename="../MqttMonitorWidget.py" line="987" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido guardar.&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1047" />
+      <location filename="../MqttMonitorWidget.py" line="1031" />
+      <location filename="../MqttMonitorWidget.py" line="1012" />
+      <source>Save Log Messages</source>
+      <translation>Guardar Mensajes de Log</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1014" />
+      <source>Log Files (*.log);;All Files (*)</source>
+      <translation>Archivos de Log (*.log);;Todos los Archivos (*)</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1068" />
+      <source>Unsubscribe</source>
+      <translation>Retirar subscripción</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1070" />
+      <source>Press to deactivate the status display</source>
+      <translation>Pulsar para activar la visualización de status</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1073" />
+      <source>Subscribe</source>
+      <translation>Subscribir</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1075" />
+      <source>Press to activate the status display</source>
+      <translation>Pulsar para activar la visualización de status</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1237" />
+      <source>QoS: {0}
+</source>
+      <translation>QoS: {0}
+</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1241" />
+      <source>Retained Message
+</source>
+      <translation>Mensaje Retenido
+</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1245" />
+      <source>Properties:
+</source>
+      <translation>Propiedades:
+</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1249" />
+      <source>{0}: {1}
+</source>
+      <comment>property name, property value</comment>
+      <translation>{0}: {1}
+</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1255" />
+      <source>Message:
+</source>
+      <translation>Mensaje:
+</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1262" />
+      <source>&lt;empty&gt;</source>
+      <translation>&lt;empty&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1468" />
+      <location filename="../MqttMonitorWidget.py" line="1419" />
+      <source>Connecting to {0}:{1} ...</source>
+      <translation>Connectando a {0}:{1} ...</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1613" />
+      <source>{0} Bytes</source>
+      <translation>{0} Bytes</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1618" />
+      <source>{0} KiB</source>
+      <translation>{0} KiB</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1623" />
+      <source>{0} MiB</source>
+      <translation>{0} MiB</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1628" />
+      <source>{0} GiB</source>
+      <translation>{0} GiB</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1633" />
+      <source>{0} TiB</source>
+      <translation>{0} TiB</translation>
+    </message>
+    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
       <translation>&lt;b&gt;MQTT Monitor&lt;/b&gt;</translation>
@@ -945,13 +1117,6 @@
       <translation>Pub/Sub</translation>
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1101" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Subscribe</source>
-      <translation>Subscribir</translation>
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <location filename="../MqttMonitorWidget.ui" line="0" />
@@ -988,12 +1153,6 @@
       <translation>Pulsar para editar las propiedades de usuario</translation>
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1096" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Unsubscribe</source>
-      <translation>Retirar subscripción</translation>
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>Select the topic to unsubscribe</source>
       <translation>Seleccionar el tema del que retirar subscripción</translation>
@@ -1045,14 +1204,6 @@
       <translation>Pulsar para limpiar los datos de publicación</translation>
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="346" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Clear</source>
-      <translation>Limpiar</translation>
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>Press to clear the retained messages of the selected topic</source>
       <translation>Pulsar para limpiar los mensajes retenidos del tema seleccionado</translation>
@@ -1119,12 +1270,6 @@
       <translation>Estado</translation>
     </message>
     <message>
-      <location filename="../MqttMonitorWidget.py" line="1103" />
-      <location filename="../MqttMonitorWidget.ui" line="0" />
-      <source>Press to activate the status display</source>
-      <translation>Pulsar para activar la visualización de status</translation>
-    </message>
-    <message>
       <location filename="../MqttMonitorWidget.ui" line="0" />
       <source>&lt;b&gt;Broker&lt;/b&gt;</source>
       <translation>&lt;b&gt;Broker&lt;/b&gt;</translation>
@@ -1349,189 +1494,6 @@
       <source>Follow received log messages</source>
       <translation>Seguir mensajes de log recibidos</translation>
     </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="93" />
-      <source>All Files (*)</source>
-      <translation>Todos los Archivos (*)</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="334" />
-      <source>Copy</source>
-      <translation>Copiar</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="340" />
-      <source>Select All</source>
-      <translation>Seleccionar Todo</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="391" />
-      <source>{0} - Session still present</source>
-      <translation>{0} - Sesión todavía presente</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="429" />
-      <source>Connection timed out</source>
-      <translation>Se ha agotado el tiempo de conexión</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="457" />
-      <source>Connection to Broker shut down cleanly.</source>
-      <translation>Conexión a Broker detenida limpiamente.</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="517" />
-      <source>{0}: {1}</source>
-      <translation>{0}: {1}</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="737" />
-      <source>SUBSCRIBE: User Properties for '{0}'</source>
-      <translation>SUBSCRIBE: Propiedades de Usuario para '{0}'</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="763" />
-      <source>Subscribe to Topic</source>
-      <translation>Subscribir a Tema</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="764" />
-      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
-      <translation>Las subscripciones al tema de Status '$SYS' se deben hacer en la pestaña de 'Status'.</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="788" />
-      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
-      <translation>UNSUBSCRIBE: Propiedades de Usuario para '{0}'</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="826" />
-      <source>PUBLISH: User Properties for '{0}'</source>
-      <translation>PUBLISH: Propiedades de Usuario para '{0}'</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="862" />
-      <source>Read Payload from File</source>
-      <translation>Leer Payload desde Archivo</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="863" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido leer. Abortando...&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1014" />
-      <location filename="../MqttMonitorWidget.py" line="998" />
-      <location filename="../MqttMonitorWidget.py" line="979" />
-      <source>Save Messages</source>
-      <translation>Guardar Mensajes</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="981" />
-      <source>Messages Files (*.txt);;All Files (*)</source>
-      <translation>Archivos de Mensaje (*.txt);;Todos los Archivos (*)</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1060" />
-      <location filename="../MqttMonitorWidget.py" line="999" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
-      <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; ya existe. ¿Sobreescribirlo?&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1076" />
-      <location filename="../MqttMonitorWidget.py" line="1015" />
-      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-      <translation>&lt;p&gt;El archivo &lt;b&gt;{0}&lt;/b&gt; no se ha podido guardar.&lt;/p&gt;&lt;p&gt;Razón: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1075" />
-      <location filename="../MqttMonitorWidget.py" line="1059" />
-      <location filename="../MqttMonitorWidget.py" line="1040" />
-      <source>Save Log Messages</source>
-      <translation>Guardar Mensajes de Log</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1042" />
-      <source>Log Files (*.log);;All Files (*)</source>
-      <translation>Archivos de Log (*.log);;Todos los Archivos (*)</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1098" />
-      <source>Press to deactivate the status display</source>
-      <translation>Pulsar para activar la visualización de status</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1265" />
-      <source>QoS: {0}
-</source>
-      <translation>QoS: {0}
-</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1269" />
-      <source>Retained Message
-</source>
-      <translation>Mensaje Retenido
-</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1273" />
-      <source>Properties:
-</source>
-      <translation>Propiedades:
-</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1277" />
-      <source>{0}: {1}
-</source>
-      <comment>property name, property value</comment>
-      <translation>{0}: {1}
-</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1283" />
-      <source>Message:
-</source>
-      <translation>Mensaje:
-</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1290" />
-      <source>&lt;empty&gt;</source>
-      <translation>&lt;empty&gt;</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1496" />
-      <location filename="../MqttMonitorWidget.py" line="1447" />
-      <source>Connecting to {0}:{1} ...</source>
-      <translation>Connectando a {0}:{1} ...</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1641" />
-      <source>{0} Bytes</source>
-      <translation>{0} Bytes</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1646" />
-      <source>{0} KiB</source>
-      <translation>{0} KiB</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1651" />
-      <source>{0} MiB</source>
-      <translation>{0} MiB</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1656" />
-      <source>{0} GiB</source>
-      <translation>{0} GiB</translation>
-    </message>
-    <message>
-      <location filename="../MqttMonitorWidget.py" line="1661" />
-      <source>{0} TiB</source>
-      <translation>{0} TiB</translation>
-    </message>
   </context>
   <context>
     <name>MqttPage</name>
Binary file MqttMonitor/i18n/mqttmonitor_ru.qm has changed
--- a/MqttMonitor/i18n/mqttmonitor_ru.ts	Sat Jan 06 13:11:01 2024 +0100
+++ b/MqttMonitor/i18n/mqttmonitor_ru.ts	Fri Apr 19 15:15:01 2024 +0200
@@ -1,1888 +1,1850 @@
 <?xml version="1.0" encoding="utf-8"?>
 <!DOCTYPE TS>
 <TS version="2.1" language="ru_RU">
-<context>
-    <name>MqttConnackMessage</name>
-    <message>
-        <location filename="../MqttClient.py" line="826"/>
-        <source>Connection Accepted.</source>
-        <translation>Соединение установлено.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="828"/>
-        <source>Connection Refused: unacceptable protocol version.</source>
-        <translation>Соединение отклонено: неприемлемая версия протокола.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="832"/>
-        <source>Connection Refused: identifier rejected.</source>
-        <translation>Соединение отклонено: идентификатор отклонен.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="836"/>
-        <source>Connection Refused: broker unavailable.</source>
-        <translation>Соединение отклонено: брокер недоступен.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="840"/>
-        <source>Connection Refused: bad user name or password.</source>
-        <translation>Соединение отклонено: неправильное имя пользователя или пароль.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="844"/>
-        <source>Connection Refused: not authorised.</source>
-        <translation>Соединение отклонено: нет авторизации.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="848"/>
-        <source>Connection Refused: unknown reason.</source>
-        <translation>Соединение отклонено: неизвестная причина.</translation>
-    </message>
-</context>
-<context>
+  <context>
     <name>MqttConnectionOptionsDialog</name>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>MQTT Connection Options</source>
-        <translation>Параметры подключения MQTT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>MQTT Connection Options</source>
+      <translation>Параметры подключения MQTT</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>General</source>
+      <translation>Главное</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>General</source>
-        <translation>Главное</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Client ID:</source>
+      <translation>ID клиента:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Client ID:</source>
-        <translation>ID клиента:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the ID string for this client</source>
+      <translation>Введите ID для этого клиента</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the ID string for this client</source>
-        <translation>Введите ID для этого клиента</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Press to generate a client ID</source>
+      <translation>Генерировать ID клиента</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Press to generate a client ID</source>
-        <translation>Генерировать ID клиента</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Generate</source>
+      <translation>Генерировать</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Generate</source>
-        <translation>Генерировать</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>MQTT Protocol</source>
+      <translation>Протокол MQTT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>MQTT Protocol</source>
-        <translation>Протокол MQTT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1 protocol</source>
+      <translation>Выбор протокола MQTT 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1 protocol</source>
-        <translation>Выбор протокола MQTT 3.1</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>v 3.1</source>
+      <translation>вер 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>v 3.1</source>
-        <translation>вер 3.1</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1.1 protocol</source>
+      <translation>Выбор протокола MQTT 3.1.1</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>v 3.1.1</source>
+      <translation>вер. 3.1.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1.1 protocol</source>
-        <translation>Выбор протокола MQTT 3.1.1</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the MQTT 5.0 protocol</source>
+      <translation>Выбор протокола MQTT 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>v 3.1.1</source>
-        <translation>вер. 3.1.1</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the MQTT 5.0 protocol</source>
-        <translation>Выбор протокола MQTT 5.0</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>v 5.0</source>
-        <translation>вер. 5.0</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>v 5.0</source>
+      <translation>вер. 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Connection Timeout:</source>
-        <translation>Время ожидания соединения:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the connection timeout in seconds</source>
-        <translation>Задайте время ожидания соединения, в секундах</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Connection Timeout:</source>
+      <translation>Время ожидания соединения:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source> s</source>
-        <translation> сек</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the connection timeout in seconds</source>
+      <translation>Задайте время ожидания соединения, в секундах</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Keep Alive Interval:</source>
-        <translation>Интервал удержания:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source> s</source>
+      <translation> сек</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the keep alive interval in seconds</source>
-        <translation>Задайте интервал удержания, в секундах</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Keep Alive Interval:</source>
+      <translation>Интервал удержания:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to start with a clean session</source>
-        <translation>Разрешить начинать чистый сеанс</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the keep alive interval in seconds</source>
+      <translation>Задайте интервал удержания, в секундах</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Clean Session</source>
-        <translation>Очищать сеанс</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>User Credentials</source>
-        <translation>Учетные данные пользователя</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to start with a clean session</source>
+      <translation>Разрешить начинать чистый сеанс</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>User Name:</source>
-        <translation>Имя пользователя:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the user name</source>
-        <translation>Введите имя пользователя</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Clean Session</source>
+      <translation>Очищать сеанс</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Password:</source>
-        <translation>Пароль:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>User Credentials</source>
+      <translation>Учетные данные пользователя</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the password</source>
-        <translation>Введите пароль</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>User Name:</source>
+      <translation>Имя пользователя:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Last Will</source>
-        <translation>&apos;Последняя воля&apos;</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the topic of the last will</source>
-        <translation>Введите тему &apos;последней воли&apos;</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the user name</source>
+      <translation>Введите имя пользователя</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>QoS:</source>
-        <translation>QoS:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Password:</source>
+      <translation>Пароль:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the desired QoS value</source>
-        <translation>Задайте желаемое значение уровня обслуживания QoS</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to retain the last will message</source>
-        <translation>Разрешить удерживать сообщение &apos;последней воли&apos;</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the password</source>
+      <translation>Введите пароль</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Retain</source>
-        <translation>Удерживать</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Press to edit the user properties</source>
-        <translation>Правка пользовательских свойств</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Last Will</source>
+      <translation>'Последняя воля'</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the last will message to be sent</source>
-        <translation>Введите сообщение &apos;последней воли&apos; для отправки</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the topic of the last will</source>
+      <translation>Введите тему 'последней воли'</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>SSL/TLS</source>
-        <translation>SSL/TLS</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to enable SSL/TLS connections</source>
-        <translation>Разрешить SSL/TLS соединения</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>QoS:</source>
+      <translation>QoS:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>SSL/TLS Enabled</source>
-        <translation>Разрешить SSL/TLS</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the desired QoS value</source>
+      <translation>Задайте желаемое значение уровня обслуживания QoS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>CA File:</source>
-        <translation>Файл CA:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to retain the last will message</source>
+      <translation>Разрешить удерживать сообщение 'последней воли'</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Enter the full path to the CA certificate file; leave empty to use platform default</source>
-        <translation>Введите полный путь к файлу сертификата CA; оставьте поле пустым, чтобы использовать платформу по умолчанию</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>User Properties</source>
-        <translation>Пользовательские свойства</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Retain</source>
+      <translation>Удерживать</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to edit the CONNECT user properties</source>
-        <translation>Разрешить редактировать пользовательские свойства пакета CONNECT</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>CONNECT</source>
-        <translation>CONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Press to edit the user properties</source>
+      <translation>Правка пользовательских свойств</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to edit the DISCONNECT user properties</source>
-        <translation>Разрешить редактировать пользовательские свойства пакета DISCONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the last will message to be sent</source>
+      <translation>Введите сообщение 'последней воли' для отправки</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>DISCONNECT</source>
-        <translation>DISCONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>SSL/TLS</source>
+      <translation>SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Select to use the CONNECT user properties when disconnecting</source>
-        <translation>Разрешить использовать пользовательские свойства пакета CONNECT при отключении</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.ui" line="0"/>
-        <source>Use CONNECT properties for DISCONNECT</source>
-        <translation>Использовать свойства CONNECT для DISCONNECT</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to enable SSL/TLS connections</source>
+      <translation>Разрешить SSL/TLS соединения</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="53"/>
-        <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-        <translation>Файлы сертификатов (*.crt *.pem);;Все файлы (*)</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation>Разрешить SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="82"/>
-        <source>Invalid Connection Parameters</source>
-        <translation>Недопустимые параметры соединения</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="83"/>
-        <source>An empty Client ID requires a clean session.</source>
-        <translation>При незаданном ID клиента требуется чистый сеанс.</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>CA File:</source>
+      <translation>Файл CA:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionOptionsDialog.py" line="185"/>
-        <source>Last Will User Properties</source>
-        <translation>Пользовательские свойства &apos;последней воли&apos;</translation>
-    </message>
-</context>
-<context>
-    <name>MqttConnectionProfilesDialog</name>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="84"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="78"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="74"/>
-        <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
-        <translation>Файлы сертификатов (*.crt *.pem);;Все файлы (*)</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Enter the full path to the CA certificate file; leave empty to use platform default</source>
+      <translation>Введите полный путь к файлу сертификата CA; оставьте поле пустым, чтобы использовать платформу по умолчанию</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="90"/>
-        <source>Key Files (*.key *.pem);;All Files (*)</source>
-        <translation>Файлы ключей (*.key *.pem);;Все файлы (*)</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>User Properties</source>
+      <translation>Пользовательские свойства</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="959"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="921"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="167"/>
-        <source>Changed Connection Profile</source>
-        <translation>Измененный профиль соединения</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to edit the CONNECT user properties</source>
+      <translation>Разрешить редактировать пользовательские свойства пакета CONNECT</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>CONNECT</source>
+      <translation>CONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="960"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="922"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="168"/>
-        <source>The current profile has unsaved changes. Shall these be saved?</source>
-        <translation>В текущем профиле есть несохраненные изменения. Должны ли они быть сохранены?</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to edit the DISCONNECT user properties</source>
+      <translation>Разрешить редактировать пользовательские свойства пакета DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="199"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="191"/>
-        <source>New Connection Profile</source>
-        <translation>Новый профиль соединения</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>DISCONNECT</source>
+      <translation>DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="192"/>
-        <source>Enter name for the new Connection Profile:</source>
-        <translation>Введите имя нового профиля соединения:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="229"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="200"/>
-        <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Уже существует соединение с именем &lt;b&gt;{0}&lt;/b&gt;. Прерывание... &lt;/ p&gt;</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Select to use the CONNECT user properties when disconnecting</source>
+      <translation>Разрешить использовать пользовательские свойства пакета CONNECT при отключении</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="228"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="220"/>
-        <source>Copy Connection Profile</source>
-        <translation>Копировать профиль соединения</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="221"/>
-        <source>Enter name for the copied Connection Profile:</source>
-        <translation>Введите имя для скопированного профиля соединения:</translation>
+      <location filename="../MqttConnectionOptionsDialog.ui" line="0" />
+      <source>Use CONNECT properties for DISCONNECT</source>
+      <translation>Использовать свойства CONNECT для DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="256"/>
-        <source>Delete Connection Profile</source>
-        <translation>Удалить профиль соединения</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="53" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation>Файлы сертификатов (*.crt *.pem);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="257"/>
-        <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Действительно удалить профиль соединения &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="82" />
+      <source>Invalid Connection Parameters</source>
+      <translation>Недопустимые параметры соединения</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="664"/>
-        <source>Invalid Connection Parameters</source>
-        <translation>Недопустимые параметры соединения</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="665"/>
-        <source>An empty Client ID requires a clean session.</source>
-        <translation>При незаданном ID клиента требуется чистый сеанс.</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="83" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation>При незаданном ID клиента требуется чистый сеанс.</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="760"/>
-        <source>Last Will User Properties</source>
-        <translation>Пользовательские свойства &apos;последней воли&apos;</translation>
+      <location filename="../MqttConnectionOptionsDialog.py" line="185" />
+      <source>Last Will User Properties</source>
+      <translation>Пользовательские свойства 'последней воли'</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttConnectionProfilesDialog</name>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.py" line="817"/>
-        <source>SSL/TLS Enabled</source>
-        <translation>Разрешить SSL/TLS</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="818"/>
-        <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
-        <translation>Разрешено соединение с использованием шифрования SSL/TLS. Однако по-прежнему задействован порт брокера без шифрования, по умолчанию порт 1883. Изменить?</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>MQTT Connection Profiles</source>
+      <translation>Профили подключения MQTT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="833"/>
-        <source>SSL/TLS Disabled</source>
-        <translation>SSL/TLS запрещено</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="834"/>
-        <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
-        <translation>Соединение с использованием шифрования SSL/TLS запрещено. Однако по-прежнему задействован порт брокера с шифрованием, по умолчанию порт 8883. Изменить?</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to add a new profile</source>
+      <translation>Добавить новый профиль</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="936"/>
-        <source>Changed Connection Profiles</source>
-        <translation>Измененные профили соединений</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to copy the selected profile</source>
+      <translation>Копировать выбранный профиль</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.py" line="937"/>
-        <source>The list of connection profiles has unsaved changes.</source>
-        <translation>В списке профилей соединений имеются несохраненные изменения.</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>MQTT Connection Profiles</source>
-        <translation>Профили подключения MQTT</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to delete the selected profile</source>
+      <translation>Удалить выбранный профиль</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to add a new profile</source>
-        <translation>Добавить новый профиль</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Profile Name:</source>
+      <translation>Имя профиля:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to copy the selected profile</source>
-        <translation>Копировать выбранный профиль</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to delete the selected profile</source>
-        <translation>Удалить выбранный профиль</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Profile Name:</source>
-        <translation>Имя профиля:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Broker Address:</source>
+      <translation>Адрес брокера:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Broker Address:</source>
-        <translation>Адрес брокера:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the broker server address</source>
-        <translation>Введите адрес брокер-сервера</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the broker server address</source>
+      <translation>Введите адрес брокер-сервера</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Broker Port:</source>
-        <translation>Порт брокера:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Broker Port:</source>
+      <translation>Порт брокера:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the broker port number (default 1883)</source>
-        <translation>Задайте номер порта брокера (по умолчанию 1883)</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the broker port number (default 1883)</source>
+      <translation>Задайте номер порта брокера (по умолчанию 1883)</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Client ID:</source>
-        <translation>ID клиента:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Client ID:</source>
+      <translation>ID клиента:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the ID string for this client</source>
-        <translation>Введите ID для этого клиента</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the ID string for this client</source>
+      <translation>Введите ID для этого клиента</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to generate a client ID</source>
-        <translation>Генерировать ID клиента</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Generate</source>
-        <translation>Генерировать</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>General</source>
-        <translation>Главное</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to generate a client ID</source>
+      <translation>Генерировать ID клиента</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>MQTT Protocol</source>
-        <translation>Протокол MQTT</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1 protocol</source>
-        <translation>Выбор протокола MQTT 3.1</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Generate</source>
+      <translation>Генерировать</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>v 3.1</source>
-        <translation>вер. 3.1</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>General</source>
+      <translation>Главное</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the MQTT 3.1.1 protocol</source>
-        <translation>Выбор протокола MQTT 3.1.1</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>MQTT Protocol</source>
+      <translation>Протокол MQTT</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>v 3.1.1</source>
-        <translation>вер. 3.1.1</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1 protocol</source>
+      <translation>Выбор протокола MQTT 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the MQTT 5.0 protocol</source>
-        <translation>Выбор протокола MQTT 5.0</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>v 3.1</source>
+      <translation>вер. 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>v 5.0</source>
-        <translation>вер. 5.0</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the MQTT 3.1.1 protocol</source>
+      <translation>Выбор протокола MQTT 3.1.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Connection Timeout:</source>
-        <translation>Время ожидания соединения:</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the connection timeout in seconds</source>
-        <translation>Задайте время ожидания соединения, в секундах</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>v 3.1.1</source>
+      <translation>вер. 3.1.1</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source> s</source>
-        <translation> сек</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Keep Alive Interval:</source>
-        <translation>Интервал удержания:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the MQTT 5.0 protocol</source>
+      <translation>Выбор протокола MQTT 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the keep alive interval in seconds</source>
-        <translation>Задайте интервал удержания, в секундах</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>v 5.0</source>
+      <translation>вер. 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to start with a clean session</source>
-        <translation>Разрешить начинать чистый сеанс</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Connection Timeout:</source>
+      <translation>Время ожидания соединения:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Clean Session</source>
-        <translation>Очищать сеанс</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>User Credentials</source>
-        <translation>Учетные данные пользователя</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the connection timeout in seconds</source>
+      <translation>Задайте время ожидания соединения, в секундах</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>User Name:</source>
-        <translation>Имя пользователя:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source> s</source>
+      <translation> сек</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the user name</source>
-        <translation>Введите имя пользователя</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Password:</source>
-        <translation>Пароль:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Keep Alive Interval:</source>
+      <translation>Интервал удержания:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the password</source>
-        <translation>Введите пароль</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Toggle to show the password</source>
-        <translation>Отображение пароля</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the keep alive interval in seconds</source>
+      <translation>Задайте интервал удержания, в секундах</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Last Will</source>
-        <translation>&apos;Последняя воля&apos;</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to start with a clean session</source>
+      <translation>Разрешить начинать чистый сеанс</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the topic of the last will</source>
-        <translation>Введите тему &apos;последней воли&apos;</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>QoS:</source>
-        <translation>QoS:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Clean Session</source>
+      <translation>Очищать сеанс</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the desired QoS value</source>
-        <translation>Задайте желаемое значение уровня обслуживания QoS</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>User Credentials</source>
+      <translation>Учетные данные пользователя</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to retain the last will message</source>
-        <translation>Разрешить удерживать сообщение &apos;последней воли&apos;</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>User Name:</source>
+      <translation>Имя пользователя:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Retain</source>
-        <translation>Удерживать</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Press to edit the user properties</source>
-        <translation>Правка пользовательских свойств</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the user name</source>
+      <translation>Введите имя пользователя</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the last will message to be sent</source>
-        <translation>Введите сообщение &apos;последней воли&apos; для отправки</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>SSL/TLS</source>
-        <translation>SSL/TLS</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Password:</source>
+      <translation>Пароль:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to enable SSL/TLS connections</source>
-        <translation>Разрешить SSL/TLS соединения</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the password</source>
+      <translation>Введите пароль</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the default certificate file of the client</source>
-        <translation>Разрешить использовать файл сертификата клиента по умолчанию</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Toggle to show the password</source>
+      <translation>Отображение пароля</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CA signed server certificate</source>
-        <translation>Сертификат подписываемый сервером CA</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use a specific certificate file</source>
-        <translation>Разрешить использовать определенный файл сертификата</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Last Will</source>
+      <translation>'Последняя воля'</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CA certificate file</source>
-        <translation>Файл сертификата CA</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the topic of the last will</source>
+      <translation>Введите тему 'последней воли'</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CA File:</source>
-        <translation>Файл CA:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>QoS:</source>
+      <translation>QoS:</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the full path to the CA certificate file</source>
-        <translation>Введите полный путь к файлу сертификата CA</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use a self signed client certificate</source>
-        <translation>Разрешить использовать самостоятельно подписываемый сертификат клиента</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the desired QoS value</source>
+      <translation>Задайте желаемое значение уровня обслуживания QoS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Self signed certificates</source>
-        <translation>Самостоятельно подписываемые сертификаты</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Client Certificate File:</source>
-        <translation>Файл сертификата клиента:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to retain the last will message</source>
+      <translation>Разрешить удерживать сообщение 'последней воли'</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the full path to the client certificate file</source>
-        <translation>Введите полный путь к файлу сертификата клиента</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Retain</source>
+      <translation>Удерживать</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Client Key File:</source>
-        <translation>Файл ключа клиента:</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Press to edit the user properties</source>
+      <translation>Правка пользовательских свойств</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Enter the full path to the client key file</source>
-        <translation>Введите полный путь к файлу ключа клиента</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the last will message to be sent</source>
+      <translation>Введите сообщение 'последней воли' для отправки</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>User Properties</source>
-        <translation>Пользовательские свойства</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS</source>
+      <translation>SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to edit the CONNECT user properties</source>
-        <translation>Разрешить редактировать пользовательские свойства пакета CONNECT</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to enable SSL/TLS connections</source>
+      <translation>Разрешить SSL/TLS соединения</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>CONNECT</source>
-        <translation>CONNECT</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to edit the DISCONNECT user properties</source>
-        <translation>Разрешить редактировать пользовательские свойства пакета DISCONNECT</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="817" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>SSL/TLS Enabled</source>
+      <translation>Разрешить SSL/TLS</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>DISCONNECT</source>
-        <translation>DISCONNECT</translation>
-    </message>
-    <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Select to use the CONNECT user properties when disconnecting</source>
-        <translation>Разрешить использовать пользовательские свойства CONNECT при отключении</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the default certificate file of the client</source>
+      <translation>Разрешить использовать файл сертификата клиента по умолчанию</translation>
     </message>
     <message>
-        <location filename="../MqttConnectionProfilesDialog.ui" line="0"/>
-        <source>Use CONNECT properties for DISCONNECT</source>
-        <translation>Использовать свойства CONNECT для DISCONNECT</translation>
-    </message>
-</context>
-<context>
-    <name>MqttErrorMessage</name>
-    <message>
-        <location filename="../MqttClient.py" line="864"/>
-        <source>No error.</source>
-        <translation>Нет ошибки.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CA signed server certificate</source>
+      <translation>Сертификат подписываемый сервером CA</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="866"/>
-        <source>Out of memory.</source>
-        <translation>Недостаточно памяти.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use a specific certificate file</source>
+      <translation>Разрешить использовать определенный файл сертификата</translation>
+    </message>
+    <message>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CA certificate file</source>
+      <translation>Файл сертификата CA</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="868"/>
-        <source>A network protocol error occurred when communicating with the broker.</source>
-        <translation>Во время общения с брокером произошла ошибка сетевого протокола.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CA File:</source>
+      <translation>Файл CA:</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="873"/>
-        <source>Invalid function arguments provided.</source>
-        <translation>Предоставлены недопустимые аргументы функции.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="877"/>
-        <source>The client is not currently connected.</source>
-        <translation>В настоящее время клиент не подключен.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the full path to the CA certificate file</source>
+      <translation>Введите полный путь к файлу сертификата CA</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="881"/>
-        <source>The connection was refused.</source>
-        <translation>Соединение было отклонено.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="885"/>
-        <source>Message not found (internal error).</source>
-        <translation>Сообщение не найдено (внутренняя ошибка).</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use a self signed client certificate</source>
+      <translation>Разрешить использовать самостоятельно подписываемый сертификат клиента</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="889"/>
-        <source>The connection was lost.</source>
-        <translation>Соединение было потеряно.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Self signed certificates</source>
+      <translation>Самостоятельно подписываемые сертификаты</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="893"/>
-        <source>A TLS error occurred.</source>
-        <translation>Произошла ошибка TLS.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="895"/>
-        <source>Payload too large.</source>
-        <translation>Слишком большая полезная нагрузка.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Client Certificate File:</source>
+      <translation>Файл сертификата клиента:</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="897"/>
-        <source>This feature is not supported.</source>
-        <translation>Эта функция не поддерживается.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="901"/>
-        <source>Authorisation failed.</source>
-        <translation>Ошибка авторизации.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the full path to the client certificate file</source>
+      <translation>Введите полный путь к файлу сертификата клиента</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="903"/>
-        <source>Access denied by ACL.</source>
-        <translation>Отказано в доступе к ACL.</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="911"/>
-        <location filename="../MqttClient.py" line="905"/>
-        <source>Unknown error.</source>
-        <translation>Неизвестная ошибка.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Client Key File:</source>
+      <translation>Файл ключа клиента:</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="907"/>
-        <source>Error defined by errno.</source>
-        <translation>Ошибка, определяемая errno.</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Enter the full path to the client key file</source>
+      <translation>Введите полный путь к файлу ключа клиента</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="909"/>
-        <source>Message queue full.</source>
-        <translation>Очередь сообщений заполнена.</translation>
-    </message>
-</context>
-<context>
-    <name>MqttLogLevelString</name>
-    <message>
-        <location filename="../MqttClient.py" line="947"/>
-        <location filename="../MqttClient.py" line="930"/>
-        <source>Unknown</source>
-        <translation>Unknown</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>User Properties</source>
+      <translation>Пользовательские свойства</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="935"/>
-        <source>Info</source>
-        <translation>Info</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to edit the CONNECT user properties</source>
+      <translation>Разрешить редактировать пользовательские свойства пакета CONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="937"/>
-        <source>Notice</source>
-        <translation>Notice</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>CONNECT</source>
+      <translation>CONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="939"/>
-        <source>Warning</source>
-        <translation>Warning</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to edit the DISCONNECT user properties</source>
+      <translation>Разрешить редактировать пользовательские свойства пакета DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="941"/>
-        <source>Error</source>
-        <translation>Error</translation>
-    </message>
-    <message>
-        <location filename="../MqttClient.py" line="943"/>
-        <source>Debug</source>
-        <translation>Debug</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>DISCONNECT</source>
+      <translation>DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../MqttClient.py" line="945"/>
-        <source>Logging Disabled</source>
-        <translation>Ведение журнала запрещено</translation>
-    </message>
-</context>
-<context>
-    <name>MqttMonitorPlugin</name>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="202"/>
-        <location filename="../../PluginMqttMonitor.py" line="198"/>
-        <location filename="../../PluginMqttMonitor.py" line="81"/>
-        <source>MQTT Monitor</source>
-        <translation>MQTT Monitor</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Select to use the CONNECT user properties when disconnecting</source>
+      <translation>Разрешить использовать пользовательские свойства CONNECT при отключении</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="103"/>
-        <source>(package not available)</source>
-        <translation>(пакет не доступен)</translation>
+      <location filename="../MqttConnectionProfilesDialog.ui" line="0" />
+      <source>Use CONNECT properties for DISCONNECT</source>
+      <translation>Использовать свойства CONNECT для DISCONNECT</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="109"/>
-        <source>MQTT</source>
-        <translation>MQTT - клиентская библиотека Python</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="110"/>
-        <source>paho-mqtt</source>
-        <translation>paho-mqtt</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="84" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="78" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="74" />
+      <source>Certificate Files (*.crt *.pem);;All Files (*)</source>
+      <translation>Файлы сертификатов (*.crt *.pem);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="180"/>
-        <source>The &apos;paho-mqtt&apos; package is not available.</source>
-        <translation>Пакет &apos;paho-mqtt&apos; недоступен.</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="90" />
+      <source>Key Files (*.key *.pem);;All Files (*)</source>
+      <translation>Файлы ключей (*.key *.pem);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="203"/>
-        <source>M&amp;QTT Monitor</source>
-        <translation>M&amp;QTT Monitor</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="204"/>
-        <source>Alt+Shift+Q</source>
-        <translation>Alt+Shift+Q</translation>
-    </message>
-    <message>
-        <location filename="../../PluginMqttMonitor.py" line="210"/>
-        <source>Switch the input focus to the MQTT Monitor window.</source>
-        <translation>Переключить фокус ввода в окно MQTT Monitor.</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="957" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="921" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="167" />
+      <source>Changed Connection Profile</source>
+      <translation>Измененный профиль соединения</translation>
     </message>
     <message>
-        <location filename="../../PluginMqttMonitor.py" line="213"/>
-        <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
-        <translation>&lt;b&gt;Активировать MQTT Monitor&lt;/b&gt;&lt;p&gt;Переключение фокуса ввода в окно MQTT Monitor.&lt;/p&gt;</translation>
-    </message>
-</context>
-<context>
-    <name>MqttMonitorWidget</name>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
-        <translation>&lt;b&gt;MQTT Monitor&lt;/b&gt;</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="958" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="922" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="168" />
+      <source>The current profile has unsaved changes. Shall these be saved?</source>
+      <translation>В текущем профиле есть несохраненные изменения. Должны ли они быть сохранены?</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Broker</source>
-        <translation>Брокер</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="199" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="191" />
+      <source>New Connection Profile</source>
+      <translation>Новый профиль соединения</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to switch the mode between profiles and direct connection</source>
-        <translation>Переключить режим подключения  -  профили или прямое соединение</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="192" />
+      <source>Enter name for the new Connection Profile:</source>
+      <translation>Введите имя нового профиля соединения:</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select the profile to be used to connect to the broker</source>
-        <translation>Выберите профиль, который будет использоваться для соединения с брокером</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="229" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="200" />
+      <source>&lt;p&gt;A connection named &lt;b&gt;{0}&lt;/b&gt; exists already. Aborting...&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Уже существует соединение с именем &lt;b&gt;{0}&lt;/b&gt;. Прерывание... &lt;/ p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the host name of the broker</source>
-        <translation>Введите имя хоста брокера</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="228" />
+      <location filename="../MqttConnectionProfilesDialog.py" line="220" />
+      <source>Copy Connection Profile</source>
+      <translation>Копировать профиль соединения</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the broker port to connect to</source>
-        <translation>Задайте порт брокера для соединения</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to open a dialog to enter connection options</source>
-        <translation>Открыть диалог ввода параметров соединения</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to connect to/disconnect from the broker</source>
-        <translation>Подключиться к брокеру/отключиться от брокера</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="221" />
+      <source>Enter name for the copied Connection Profile:</source>
+      <translation>Введите имя для скопированного профиля соединения:</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to clear a previously set last will message</source>
-        <translation>Разрешить очищать установленные ранее сообщения &apos;последней воли&apos;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Pub/Sub</source>
-        <translation>Подписки/Публикации</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="256" />
+      <source>Delete Connection Profile</source>
+      <translation>Удалить профиль соединения</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1101"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Subscribe</source>
-        <translation>Подписаться</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="257" />
+      <source>&lt;p&gt;Shall the Connection Profile &lt;b&gt;{0}&lt;/b&gt; really be deleted?&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Действительно удалить профиль соединения &lt;b&gt;{0}&lt;/b&gt;?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Topic:</source>
-        <translation>Тема:</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="664" />
+      <source>Invalid Connection Parameters</source>
+      <translation>Недопустимые параметры соединения</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the topic</source>
-        <translation>Введите тему</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="665" />
+      <source>An empty Client ID requires a clean session.</source>
+      <translation>При незаданном ID клиента требуется чистый сеанс.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>QoS:</source>
-        <translation>QoS:</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the desired QoS value</source>
-        <translation>Задайте желаемое значение уровня обслуживания QoS</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to subscribe to the given topic</source>
-        <translation>Подписаться на данную тему</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="760" />
+      <source>Last Will User Properties</source>
+      <translation>Пользовательские свойства 'последней воли'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to edit the user properties</source>
-        <translation>Разрешить редактировать пользовательские свойства</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="818" />
+      <source>Encrypted connection using SSL/TLS has been enabled. However, the broker port is still the default unencrypted port (port 1883). Shall this be changed?</source>
+      <translation>Разрешено соединение с использованием шифрования SSL/TLS. Однако по-прежнему задействован порт брокера без шифрования, по умолчанию порт 1883. Изменить?</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1096"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Unsubscribe</source>
-        <translation>Отписаться</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="833" />
+      <source>SSL/TLS Disabled</source>
+      <translation>SSL/TLS запрещено</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select the topic to unsubscribe</source>
-        <translation>Выберите тему для отписки</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="834" />
+      <source>Encrypted connection using SSL/TLS has been disabled. However, the broker port is still the default encrypted port (port 8883). Shall this be changed?</source>
+      <translation>Соединение с использованием шифрования SSL/TLS запрещено. Однако по-прежнему задействован порт брокера с шифрованием, по умолчанию порт 8883. Изменить?</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to unsubscribe the selected topic</source>
-        <translation>Отписаться от выбранной темы</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="936" />
+      <source>Changed Connection Profiles</source>
+      <translation>Измененные профили соединений</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Publish</source>
-        <translation>Опубликовать</translation>
+      <location filename="../MqttConnectionProfilesDialog.py" line="937" />
+      <source>The list of connection profiles has unsaved changes.</source>
+      <translation>В списке профилей соединений имеются несохраненные изменения.</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttErrorMessage</name>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the topic to publish to</source>
-        <translation>Введите тему для публикации</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to retain the published message</source>
-        <translation>Разрешить удерживать опубликованное сообщение</translation>
+      <location filename="../MqttClient.py" line="773" />
+      <source>No error.</source>
+      <translation>Нет ошибки.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Retain</source>
-        <translation>Удерживать</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the string data to be sent</source>
-        <translation>Введите строку данных для отправки</translation>
+      <location filename="../MqttClient.py" line="775" />
+      <source>Out of memory.</source>
+      <translation>Недостаточно памяти.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Payload File:</source>
-        <translation>Файл полезной нагрузки:</translation>
+      <location filename="../MqttClient.py" line="777" />
+      <source>A network protocol error occurred when communicating with the broker.</source>
+      <translation>Во время общения с брокером произошла ошибка сетевого протокола.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Enter the full path to a file containing the message payload</source>
-        <translation>Введите полный путь к файлу, содержащему полезную нагрузку сообщения</translation>
+      <location filename="../MqttClient.py" line="782" />
+      <source>Invalid function arguments provided.</source>
+      <translation>Предоставлены недопустимые аргументы функции.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the publish data</source>
-        <translation>Очистить данные публикации</translation>
+      <location filename="../MqttClient.py" line="786" />
+      <source>The client is not currently connected.</source>
+      <translation>В настоящее время клиент не подключен.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="346"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Clear</source>
-        <translation>Очистить</translation>
+      <location filename="../MqttClient.py" line="790" />
+      <source>The connection was refused.</source>
+      <translation>Соединение было отклонено.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the retained messages of the selected topic</source>
-        <translation>Разрешить очищать сохраненные сообщения выбранной темы</translation>
+      <location filename="../MqttClient.py" line="794" />
+      <source>Message not found (internal error).</source>
+      <translation>Сообщение не найдено (внутренняя ошибка).</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Clear Retained</source>
-        <translation>Очищать сохраненные</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to clear the publish data after the message was published</source>
-        <translation>Разрешить очищать данные публикации после опубликования сообщения</translation>
+      <location filename="../MqttClient.py" line="798" />
+      <source>The connection was lost.</source>
+      <translation>Соединение было потеряно.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Clear when sent</source>
-        <translation>Очищать после отправки</translation>
+      <location filename="../MqttClient.py" line="802" />
+      <source>A TLS error occurred.</source>
+      <translation>Произошла ошибка TLS.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Properties</source>
-        <translation>Свойства</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>MQTT V5 Properties</source>
-        <translation>Свойства MQTT вер. 5</translation>
+      <location filename="../MqttClient.py" line="804" />
+      <source>Payload too large.</source>
+      <translation>Слишком большая полезная нагрузка.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Messages</source>
-        <translation>Сообщения</translation>
+      <location filename="../MqttClient.py" line="806" />
+      <source>This feature is not supported.</source>
+      <translation>Эта функция не поддерживается.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to save the received messages to a file</source>
-        <translation>Сохранить полученные сообщения в файл</translation>
+      <location filename="../MqttClient.py" line="810" />
+      <source>Authorisation failed.</source>
+      <translation>Ошибка авторизации.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Save</source>
-        <translation>Сохранить</translation>
+      <location filename="../MqttClient.py" line="812" />
+      <source>Access denied by ACL.</source>
+      <translation>Отказано в доступе к ACL.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the list of received messages</source>
-        <translation>Очистить список полученных сообщений</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to scroll to the most recently received message</source>
-        <translation>Разрешить прокручивать список до последнего полученного сообщения</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Follow received messages</source>
-        <translation>Следовать за получаемыми сообщениями</translation>
+      <location filename="../MqttClient.py" line="820" />
+      <location filename="../MqttClient.py" line="814" />
+      <source>Unknown error.</source>
+      <translation>Неизвестная ошибка.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Status</source>
-        <translation>Статус</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1103"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to activate the status display</source>
-        <translation>Активировать отображение статуса</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Broker&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Брокер&lt;/b&gt;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Version</source>
-        <translation>Версия</translation>
+      <location filename="../MqttClient.py" line="816" />
+      <source>Error defined by errno.</source>
+      <translation>Ошибка, определяемая errno.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>-</source>
-        <translation>-</translation>
+      <location filename="../MqttClient.py" line="818" />
+      <source>Message queue full.</source>
+      <translation>Очередь сообщений заполнена.</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttLogLevelString</name>
+    <message>
+      <location filename="../MqttClient.py" line="856" />
+      <location filename="../MqttClient.py" line="839" />
+      <source>Unknown</source>
+      <translation>Unknown</translation>
+    </message>
+    <message>
+      <location filename="../MqttClient.py" line="844" />
+      <source>Info</source>
+      <translation>Info</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Timestamp</source>
-        <translation>Метки времени</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Uptime</source>
-        <translation>Время работы</translation>
+      <location filename="../MqttClient.py" line="846" />
+      <source>Notice</source>
+      <translation>Notice</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Subscriptions</source>
-        <translation>Подписки</translation>
+      <location filename="../MqttClient.py" line="848" />
+      <source>Warning</source>
+      <translation>Warning</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Clients&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Клиенты&lt;/b&gt;</translation>
+      <location filename="../MqttClient.py" line="850" />
+      <source>Error</source>
+      <translation>Error</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Connected</source>
-        <translation>Подключено</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Disconnected</source>
-        <translation>Отключено</translation>
+      <location filename="../MqttClient.py" line="852" />
+      <source>Debug</source>
+      <translation>Debug</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Expired</source>
-        <translation>Завершено</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Maximum</source>
-        <translation>Максимум</translation>
+      <location filename="../MqttClient.py" line="854" />
+      <source>Logging Disabled</source>
+      <translation>Ведение журнала запрещено</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttMonitorPlugin</name>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Total</source>
-        <translation>Всего</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Messages&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Сообщения&lt;/b&gt;</translation>
+      <location filename="../../PluginMqttMonitor.py" line="214" />
+      <location filename="../../PluginMqttMonitor.py" line="210" />
+      <location filename="../../PluginMqttMonitor.py" line="93" />
+      <source>MQTT Monitor</source>
+      <translation>MQTT Monitor</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Sent</source>
-        <translation>Отправлено</translation>
+      <location filename="../../PluginMqttMonitor.py" line="115" />
+      <source>(package not available)</source>
+      <translation>(пакет не доступен)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Received</source>
-        <translation>Получено</translation>
+      <location filename="../../PluginMqttMonitor.py" line="121" />
+      <source>MQTT</source>
+      <translation>MQTT - клиентская библиотека Python</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Stored</source>
-        <translation>Сохранено</translation>
+      <location filename="../../PluginMqttMonitor.py" line="122" />
+      <source>paho-mqtt</source>
+      <translation>paho-mqtt</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Inflight</source>
-        <translation>В полете</translation>
+      <location filename="../../PluginMqttMonitor.py" line="192" />
+      <source>The 'paho-mqtt' package is not available.</source>
+      <translation>Пакет 'paho-mqtt' недоступен.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Retained</source>
-        <translation>Удержано</translation>
+      <location filename="../../PluginMqttMonitor.py" line="215" />
+      <source>M&amp;QTT Monitor</source>
+      <translation>M&amp;QTT Monitor</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;PUBLISH Messages&lt;/b&gt;</source>
-        <translation>&lt;b&gt;PUBLISH сообщения&lt;/b&gt;</translation>
+      <location filename="../../PluginMqttMonitor.py" line="216" />
+      <source>Alt+Shift+Q</source>
+      <translation>Alt+Shift+Q</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Dropped</source>
-        <translation>Сброшено</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Traffic&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Трафик&lt;/b&gt;</translation>
+      <location filename="../../PluginMqttMonitor.py" line="222" />
+      <source>Switch the input focus to the MQTT Monitor window.</source>
+      <translation>Переключить фокус ввода в окно MQTT Monitor.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Bytes Sent</source>
-        <translation>Байт отправлено</translation>
+      <location filename="../../PluginMqttMonitor.py" line="225" />
+      <source>&lt;b&gt;Activate MQTT Monitor&lt;/b&gt;&lt;p&gt;This switches the input focus to the MQTT Monitor window.&lt;/p&gt;</source>
+      <translation>&lt;b&gt;Активировать MQTT Monitor&lt;/b&gt;&lt;p&gt;Переключение фокуса ввода в окно MQTT Monitor.&lt;/p&gt;</translation>
     </message>
+  </context>
+  <context>
+    <name>MqttMonitorWidget</name>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Bytes Received</source>
-        <translation>Байт принято</translation>
+      <location filename="../MqttMonitorWidget.py" line="88" />
+      <source>All Files (*)</source>
+      <translation>Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>&lt;b&gt;Load&lt;/b&gt; (1 min / 5 min / 15 min)</source>
-        <translation>&lt;b&gt;Загрузка&lt;/b&gt; (1 мин / 5 мин / 15 мин)</translation>
+      <location filename="../MqttMonitorWidget.py" line="325" />
+      <source>Copy</source>
+      <translation>Копировать</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>- / - / -</source>
-        <translation>- / - / -</translation>
+      <location filename="../MqttMonitorWidget.py" line="331" />
+      <source>Select All</source>
+      <translation>Выбрать все</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Messages Sent</source>
-        <translation>Сообщений отправлено</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="337" />
+      <source>Clear</source>
+      <translation>Очистить</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Messages Received</source>
-        <translation>Сообщений принято</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>PUBLISH Sent</source>
-        <translation>PUBLISH отправлено</translation>
+      <location filename="../MqttMonitorWidget.py" line="372" />
+      <source>{0} - Session still present</source>
+      <translation>{0} - Сеанс установлен</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>PUBLISH Received</source>
-        <translation>PUBLISH принято</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>PUBLISH Dropped</source>
-        <translation>PUBLISH сброшено</translation>
+      <location filename="../MqttMonitorWidget.py" line="410" />
+      <source>Connection timed out</source>
+      <translation>Время ожидания соединения истекло</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Connections</source>
-        <translation>Соединения</translation>
+      <location filename="../MqttMonitorWidget.py" line="438" />
+      <source>Connection to Broker shut down cleanly.</source>
+      <translation>Соединение с брокером закрыто. Очистка произведена.</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Sockets</source>
-        <translation>Сокеты</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Log</source>
-        <translation>Журнал</translation>
+      <location filename="../MqttMonitorWidget.py" line="498" />
+      <source>{0}: {1}</source>
+      <translation>{0}: {1}</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Max. Log Level:</source>
-        <translation>Максимальный уровень журнала:</translation>
+      <location filename="../MqttMonitorWidget.py" line="709" />
+      <source>SUBSCRIBE: User Properties for '{0}'</source>
+      <translation>SUBSCRIBE: Пользовательские свойства '{0}'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select the maximum log level to show</source>
-        <translation>Выберите максимальный уровень журнала для показа</translation>
+      <location filename="../MqttMonitorWidget.py" line="735" />
+      <source>Subscribe to Topic</source>
+      <translation>Подписаться на тему</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to save the received log messages to a file</source>
-        <translation>Сохранить полученные сообщения журнала в файл</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Press to clear the list of received log messages</source>
-        <translation>Очистить список принятых сообщений журнала</translation>
+      <location filename="../MqttMonitorWidget.py" line="736" />
+      <source>Subscriptions to the Status topic '$SYS' shall be done on the 'Status' tab.</source>
+      <translation>Подписки на тему статуса «$ SYS» должны быть сделаны на вкладке «Статус».</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Select to scroll to the most recently received log message</source>
-        <translation>Разрешить прокручивать список до последнего полученного сообщения журнала</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.ui" line="0"/>
-        <source>Follow received log messages</source>
-        <translation>Следовать за получаемыми сообщениями</translation>
+      <location filename="../MqttMonitorWidget.py" line="760" />
+      <source>UNSUBSCRIBE: User Properties for '{0}'</source>
+      <translation>UNSUBSCRIBE: Пользовательские свойства '{0}'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="93"/>
-        <source>All Files (*)</source>
-        <translation>Все файлы (*)</translation>
+      <location filename="../MqttMonitorWidget.py" line="798" />
+      <source>PUBLISH: User Properties for '{0}'</source>
+      <translation>PUBLISH: Пользовательские свойства '{0}'</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="334"/>
-        <source>Copy</source>
-        <translation>Копировать</translation>
+      <location filename="../MqttMonitorWidget.py" line="834" />
+      <source>Read Payload from File</source>
+      <translation>Чтение полезной нагрузки из файла</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="340"/>
-        <source>Select All</source>
-        <translation>Выбрать все</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="391"/>
-        <source>{0} - Session still present</source>
-        <translation>{0} - Сеанс установлен</translation>
+      <location filename="../MqttMonitorWidget.py" line="835" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Не удалось прочитать файл &lt;b&gt;{0}&lt;/b&gt;. Отмена...&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="429"/>
-        <source>Connection timed out</source>
-        <translation>Время ожидания соединения истекло</translation>
+      <location filename="../MqttMonitorWidget.py" line="986" />
+      <location filename="../MqttMonitorWidget.py" line="970" />
+      <location filename="../MqttMonitorWidget.py" line="951" />
+      <source>Save Messages</source>
+      <translation>Сохранить сообщения</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="457"/>
-        <source>Connection to Broker shut down cleanly.</source>
-        <translation>Соединение с брокером закрыто. Очистка произведена.</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="517"/>
-        <source>{0}: {1}</source>
-        <translation>{0}: {1}</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="737"/>
-        <source>SUBSCRIBE: User Properties for &apos;{0}&apos;</source>
-        <translation>SUBSCRIBE: Пользовательские свойства &apos;{0}&apos;</translation>
+      <location filename="../MqttMonitorWidget.py" line="953" />
+      <source>Messages Files (*.txt);;All Files (*)</source>
+      <translation>Файлы сообщений (*.txt);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="763"/>
-        <source>Subscribe to Topic</source>
-        <translation>Подписаться на тему</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="764"/>
-        <source>Subscriptions to the Status topic &apos;$SYS&apos; shall be done on the &apos;Status&apos; tab.</source>
-        <translation>Подписки на тему статуса «$ SYS» должны быть сделаны на вкладке «Статус».</translation>
+      <location filename="../MqttMonitorWidget.py" line="1032" />
+      <location filename="../MqttMonitorWidget.py" line="971" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; уже существует. Переписать его?&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="788"/>
-        <source>UNSUBSCRIBE: User Properties for &apos;{0}&apos;</source>
-        <translation>UNSUBSCRIBE: Пользовательские свойства &apos;{0}&apos;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1048" />
+      <location filename="../MqttMonitorWidget.py" line="987" />
+      <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
+      <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; не может быть записан.&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="826"/>
-        <source>PUBLISH: User Properties for &apos;{0}&apos;</source>
-        <translation>PUBLISH: Пользовательские свойства &apos;{0}&apos;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="862"/>
-        <source>Read Payload from File</source>
-        <translation>Чтение полезной нагрузки из файла</translation>
+      <location filename="../MqttMonitorWidget.py" line="1047" />
+      <location filename="../MqttMonitorWidget.py" line="1031" />
+      <location filename="../MqttMonitorWidget.py" line="1012" />
+      <source>Save Log Messages</source>
+      <translation>Сохранить сообщения журнала</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="863"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be read. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Не удалось прочитать файл &lt;b&gt;{0}&lt;/b&gt;. Отмена...&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1014" />
+      <source>Log Files (*.log);;All Files (*)</source>
+      <translation>Файлы журнала (*.log);;Все файлы (*)</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1014"/>
-        <location filename="../MqttMonitorWidget.py" line="998"/>
-        <location filename="../MqttMonitorWidget.py" line="979"/>
-        <source>Save Messages</source>
-        <translation>Сохранить сообщения</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1068" />
+      <source>Unsubscribe</source>
+      <translation>Отписаться</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="981"/>
-        <source>Messages Files (*.txt);;All Files (*)</source>
-        <translation>Файлы сообщений (*.txt);;Все файлы (*)</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1060"/>
-        <location filename="../MqttMonitorWidget.py" line="999"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; already exists. Overwrite it?&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; уже существует. Переписать его?&lt;/p&gt;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1070" />
+      <source>Press to deactivate the status display</source>
+      <translation>Деактивировать отображение статуса</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1076"/>
-        <location filename="../MqttMonitorWidget.py" line="1015"/>
-        <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; could not be written.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
-        <translation>&lt;p&gt;Файл &lt;b&gt;{0}&lt;/b&gt; не может быть записан.&lt;/p&gt;&lt;p&gt;Причина: {1}&lt;/p&gt;</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1075"/>
-        <location filename="../MqttMonitorWidget.py" line="1059"/>
-        <location filename="../MqttMonitorWidget.py" line="1040"/>
-        <source>Save Log Messages</source>
-        <translation>Сохранить сообщения журнала</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1073" />
+      <source>Subscribe</source>
+      <translation>Подписаться</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1042"/>
-        <source>Log Files (*.log);;All Files (*)</source>
-        <translation>Файлы журнала (*.log);;Все файлы (*)</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.py" line="1075" />
+      <source>Press to activate the status display</source>
+      <translation>Активировать отображение статуса</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1098"/>
-        <source>Press to deactivate the status display</source>
-        <translation>Деактивировать отображение статуса</translation>
-    </message>
-    <message>
-        <location filename="../MqttMonitorWidget.py" line="1265"/>
-        <source>QoS: {0}
+      <location filename="../MqttMonitorWidget.py" line="1237" />
+      <source>QoS: {0}
 </source>
-        <translation>QoS: {0}
+      <translation>QoS: {0}
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1269"/>
-        <source>Retained Message
+      <location filename="../MqttMonitorWidget.py" line="1241" />
+      <source>Retained Message
 </source>
-        <translation>Сохраненное сообщение
+      <translation>Сохраненное сообщение
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1273"/>
-        <source>Properties:
+      <location filename="../MqttMonitorWidget.py" line="1245" />
+      <source>Properties:
 </source>
-        <translation>Свойства:
+      <translation>Свойства:
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1277"/>
-        <source>{0}: {1}
+      <location filename="../MqttMonitorWidget.py" line="1249" />
+      <source>{0}: {1}
 </source>
-        <comment>property name, property value</comment>
-        <translation>{0}: {1}
+      <comment>property name, property value</comment>
+      <translation>{0}: {1}
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1283"/>
-        <source>Message:
+      <location filename="../MqttMonitorWidget.py" line="1255" />
+      <source>Message:
 </source>
-        <translation>Сообщение:
+      <translation>Сообщение:
 </translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1290"/>
-        <source>&lt;empty&gt;</source>
-        <translation>&lt;empty&gt;</translation>
+      <location filename="../MqttMonitorWidget.py" line="1262" />
+      <source>&lt;empty&gt;</source>
+      <translation>&lt;empty&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1468" />
+      <location filename="../MqttMonitorWidget.py" line="1419" />
+      <source>Connecting to {0}:{1} ...</source>
+      <translation>Соединение с {0}:{1} ...</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1613" />
+      <source>{0} Bytes</source>
+      <translation>{0} байтов</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1618" />
+      <source>{0} KiB</source>
+      <translation>{0} KiB</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1496"/>
-        <location filename="../MqttMonitorWidget.py" line="1447"/>
-        <source>Connecting to {0}:{1} ...</source>
-        <translation>Соединение с {0}:{1} ...</translation>
+      <location filename="../MqttMonitorWidget.py" line="1623" />
+      <source>{0} MiB</source>
+      <translation>{0} MiB</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.py" line="1628" />
+      <source>{0} GiB</source>
+      <translation>{0} GiB</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1641"/>
-        <source>{0} Bytes</source>
-        <translation>{0} байтов</translation>
+      <location filename="../MqttMonitorWidget.py" line="1633" />
+      <source>{0} TiB</source>
+      <translation>{0} TiB</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1646"/>
-        <source>{0} KiB</source>
-        <translation>{0} KiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;MQTT Monitor&lt;/b&gt;</source>
+      <translation>&lt;b&gt;MQTT Monitor&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Broker</source>
+      <translation>Брокер</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1651"/>
-        <source>{0} MiB</source>
-        <translation>{0} MiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to switch the mode between profiles and direct connection</source>
+      <translation>Переключить режим подключения  -  профили или прямое соединение</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select the profile to be used to connect to the broker</source>
+      <translation>Выберите профиль, который будет использоваться для соединения с брокером</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1656"/>
-        <source>{0} GiB</source>
-        <translation>{0} GiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the host name of the broker</source>
+      <translation>Введите имя хоста брокера</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the broker port to connect to</source>
+      <translation>Задайте порт брокера для соединения</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to open a dialog to enter connection options</source>
+      <translation>Открыть диалог ввода параметров соединения</translation>
     </message>
     <message>
-        <location filename="../MqttMonitorWidget.py" line="1661"/>
-        <source>{0} TiB</source>
-        <translation>{0} TiB</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to connect to/disconnect from the broker</source>
+      <translation>Подключиться к брокеру/отключиться от брокера</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to clear a previously set last will message</source>
+      <translation>Разрешить очищать установленные ранее сообщения 'последней воли'</translation>
     </message>
-</context>
-<context>
-    <name>MqttPage</name>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Pub/Sub</source>
+      <translation>Подписки/Публикации</translation>
+    </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>&lt;b&gt;Configure MQTT Monitor&lt;/b&gt;</source>
-        <translation>&lt;b&gt;Настройка MQTT Monitor&lt;/b&gt;</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Topic:</source>
+      <translation>Тема:</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the topic</source>
+      <translation>Введите тему</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Default MQTT Protocol</source>
-        <translation>Протокол MQTT по умолчанию</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>QoS:</source>
+      <translation>QoS:</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the desired QoS value</source>
+      <translation>Задайте желаемое значение уровня обслуживания QoS</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to subscribe to the given topic</source>
+      <translation>Подписаться на данную тему</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to edit the user properties</source>
+      <translation>Разрешить редактировать пользовательские свойства</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Select to use the MQTT 3.1 protocol</source>
-        <translation>Выбор протокола MQTT 3.1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select the topic to unsubscribe</source>
+      <translation>Выберите тему для отписки</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to unsubscribe the selected topic</source>
+      <translation>Отписаться от выбранной темы</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>v 3.1</source>
-        <translation>вер. 3.1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Publish</source>
+      <translation>Опубликовать</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Select to use the MQTT 3.1.1 protocol</source>
-        <translation>Выбор протокола MQTT 3.1.1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the topic to publish to</source>
+      <translation>Введите тему для публикации</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to retain the published message</source>
+      <translation>Разрешить удерживать опубликованное сообщение</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>v 3.1.1</source>
-        <translation>вер. 3.1.1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Retain</source>
+      <translation>Удерживать</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the string data to be sent</source>
+      <translation>Введите строку данных для отправки</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Select to use the MQTT 5.0 protocol</source>
-        <translation>Выбор протокола MQTT 5.0</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Payload File:</source>
+      <translation>Файл полезной нагрузки:</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Enter the full path to a file containing the message payload</source>
+      <translation>Введите полный путь к файлу, содержащему полезную нагрузку сообщения</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the publish data</source>
+      <translation>Очистить данные публикации</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>v 5.0</source>
-        <translation>вер. 5.0</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the retained messages of the selected topic</source>
+      <translation>Разрешить очищать сохраненные сообщения выбранной темы</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Clear Retained</source>
+      <translation>Очищать сохраненные</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Recent Brokers</source>
-        <translation>Недавние брокеры</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to clear the publish data after the message was published</source>
+      <translation>Разрешить очищать данные публикации после опубликования сообщения</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Number of recent brokers:</source>
-        <translation>Количество недавних брокеров:</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Clear when sent</source>
+      <translation>Очищать после отправки</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Enter the number of recent brokers to remember</source>
-        <translation>Задайте количество брокеров для запоминания</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Properties</source>
+      <translation>Свойства</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>MQTT V5 Properties</source>
+      <translation>Свойства MQTT вер. 5</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Recent Topics</source>
-        <translation>Недавние темы</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Messages</source>
+      <translation>Сообщения</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to save the received messages to a file</source>
+      <translation>Сохранить полученные сообщения в файл</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Number of recent topics:</source>
-        <translation>Количество недавних тем:</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Save</source>
+      <translation>Сохранить</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the list of received messages</source>
+      <translation>Очистить список полученных сообщений</translation>
     </message>
     <message>
-        <location filename="../ConfigurationPage/MqttPage.ui" line="0"/>
-        <source>Enter the number of recent topics to remember</source>
-        <translation>Задайте количество тем для запоминания</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to scroll to the most recently received message</source>
+      <translation>Разрешить прокручивать список до последнего полученного сообщения</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Follow received messages</source>
+      <translation>Следовать за получаемыми сообщениями</translation>
     </message>
-</context>
-<context>
-    <name>MqttReasonCodeNames</name>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Status</source>
+      <translation>Статус</translation>
+    </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="15"/>
-        <source>Success</source>
-        <translation>Успешно</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Broker&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Брокер&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Version</source>
+      <translation>Версия</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="24"/>
-        <source>Normal disconnection</source>
-        <translation>Нормальное разъединение</translation>
-    </message>
-    <message>
-        <location filename="../MqttReasonCodes.py" line="27"/>
-        <source>Granted QoS 0</source>
-        <translation>Предоставлен QoS 0</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>-</source>
+      <translation>-</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="32"/>
-        <source>Granted QoS 1</source>
-        <translation>Предоставлен QoS 1</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Timestamp</source>
+      <translation>Метки времени</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Uptime</source>
+      <translation>Время работы</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="37"/>
-        <source>Granted QoS 2</source>
-        <translation>Предоставлен QoS 2</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Subscriptions</source>
+      <translation>Подписки</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="42"/>
-        <source>Disconnect with will message</source>
-        <translation>Отключить посредством сообщения &apos;последней воли&apos;</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Clients&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Клиенты&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Connected</source>
+      <translation>Подключено</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Disconnected</source>
+      <translation>Отключено</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="47"/>
-        <source>No matching subscribers</source>
-        <translation>Нет соответствующих подписчиков</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Expired</source>
+      <translation>Завершено</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Maximum</source>
+      <translation>Максимум</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Total</source>
+      <translation>Всего</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Messages&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Сообщения&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="53"/>
-        <source>No subscription found</source>
-        <translation>Подписка не найдена</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Sent</source>
+      <translation>Отправлено</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Received</source>
+      <translation>Получено</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="58"/>
-        <source>Continue authentication</source>
-        <translation>Продолжить аутентификацию</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Stored</source>
+      <translation>Сохранено</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="63"/>
-        <source>Re-authenticate</source>
-        <translation>Повторить аутентификацию</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Inflight</source>
+      <translation>В полете</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Retained</source>
+      <translation>Удержано</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;PUBLISH Messages&lt;/b&gt;</source>
+      <translation>&lt;b&gt;PUBLISH сообщения&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="68"/>
-        <source>Unspecified error</source>
-        <translation>Неопределенная ошибка</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Dropped</source>
+      <translation>Сброшено</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Traffic&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Трафик&lt;/b&gt;</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="78"/>
-        <source>Malformed packet</source>
-        <translation>Плохо сформированный пакет</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Bytes Sent</source>
+      <translation>Байт отправлено</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Bytes Received</source>
+      <translation>Байт принято</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>&lt;b&gt;Load&lt;/b&gt; (1 min / 5 min / 15 min)</source>
+      <translation>&lt;b&gt;Загрузка&lt;/b&gt; (1 мин / 5 мин / 15 мин)</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="84"/>
-        <source>Protocol error</source>
-        <translation>Ошибка протокола</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>- / - / -</source>
+      <translation>- / - / -</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="90"/>
-        <source>Implementation specific error</source>
-        <translation>Ошибка конкретной реализации</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Messages Sent</source>
+      <translation>Сообщений отправлено</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="102"/>
-        <source>Unsupported protocol version</source>
-        <translation>Неподдерживаемая версия протокола</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Messages Received</source>
+      <translation>Сообщений принято</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="107"/>
-        <source>Client identifier not valid</source>
-        <translation>Недействительный идентификатор клиента</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>PUBLISH Sent</source>
+      <translation>PUBLISH отправлено</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="112"/>
-        <source>Bad user name or password</source>
-        <translation>Неверное имя пользователя или пароль</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>PUBLISH Received</source>
+      <translation>PUBLISH принято</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>PUBLISH Dropped</source>
+      <translation>PUBLISH сброшено</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Connections</source>
+      <translation>Соединения</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Sockets</source>
+      <translation>Сокеты</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="117"/>
-        <source>Not authorized</source>
-        <translation>Не авторизован</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Log</source>
+      <translation>Журнал</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Max. Log Level:</source>
+      <translation>Максимальный уровень журнала:</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="127"/>
-        <source>Server unavailable</source>
-        <translation>Сервер недоступен</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select the maximum log level to show</source>
+      <translation>Выберите максимальный уровень журнала для показа</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="132"/>
-        <source>Server busy</source>
-        <translation>Сервер занят</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to save the received log messages to a file</source>
+      <translation>Сохранить полученные сообщения журнала в файл</translation>
+    </message>
+    <message>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Press to clear the list of received log messages</source>
+      <translation>Очистить список принятых сообщений журнала</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="138"/>
-        <source>Banned</source>
-        <translation>Запрещено</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Select to scroll to the most recently received log message</source>
+      <translation>Разрешить прокручивать список до последнего полученного сообщения журнала</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="143"/>
-        <source>Server shutting down</source>
-        <translation>Выключение сервера</translation>
+      <location filename="../MqttMonitorWidget.ui" line="0" />
+      <source>Follow received log messages</source>
+      <translation>Следовать за получаемыми сообщениями</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttPage</name>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>&lt;b&gt;Configure MQTT Monitor&lt;/b&gt;</source>
+      <translation>&lt;b&gt;Настройка MQTT Monitor&lt;/b&gt;</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Default MQTT Protocol</source>
+      <translation>Протокол MQTT по умолчанию</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="148"/>
-        <source>Bad authentication method</source>
-        <translation>Неверный метод аутентификации</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Select to use the MQTT 3.1 protocol</source>
+      <translation>Выбор протокола MQTT 3.1</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>v 3.1</source>
+      <translation>вер. 3.1</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="153"/>
-        <source>Keep alive timeout</source>
-        <translation>Период сохранения активности</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Select to use the MQTT 3.1.1 protocol</source>
+      <translation>Выбор протокола MQTT 3.1.1</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="158"/>
-        <source>Session taken over</source>
-        <translation>Сессия завершена</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>v 3.1.1</source>
+      <translation>вер. 3.1.1</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Select to use the MQTT 5.0 protocol</source>
+      <translation>Выбор протокола MQTT 5.0</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>v 5.0</source>
+      <translation>вер. 5.0</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="163"/>
-        <source>Topic filter invalid</source>
-        <translation>Неверный фильтр тем</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Recent Brokers</source>
+      <translation>Недавние брокеры</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Number of recent brokers:</source>
+      <translation>Количество недавних брокеров:</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Enter the number of recent brokers to remember</source>
+      <translation>Задайте количество брокеров для запоминания</translation>
+    </message>
+    <message>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Recent Topics</source>
+      <translation>Недавние темы</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="170"/>
-        <source>Topic name invalid</source>
-        <translation>Недопустимое имя темы</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Number of recent topics:</source>
+      <translation>Количество недавних тем:</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="178"/>
-        <source>Packet identifier in use</source>
-        <translation>Идентификатор пакета используется</translation>
+      <location filename="../ConfigurationPage/MqttPage.ui" line="0" />
+      <source>Enter the number of recent topics to remember</source>
+      <translation>Задайте количество тем для запоминания</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttReasonCodeNames</name>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="15" />
+      <source>Success</source>
+      <translation>Успешно</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="186"/>
-        <source>Packet identifier not found</source>
-        <translation>Идентификатор пакета не найден</translation>
+      <location filename="../MqttReasonCodes.py" line="24" />
+      <source>Normal disconnection</source>
+      <translation>Нормальное разъединение</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="27" />
+      <source>Granted QoS 0</source>
+      <translation>Предоставлен QoS 0</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="191"/>
-        <source>Receive maximum exceeded</source>
-        <translation>Превышено максимальное количество</translation>
+      <location filename="../MqttReasonCodes.py" line="32" />
+      <source>Granted QoS 1</source>
+      <translation>Предоставлен QoS 1</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="37" />
+      <source>Granted QoS 2</source>
+      <translation>Предоставлен QoS 2</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="196"/>
-        <source>Topic alias invalid</source>
-        <translation>Недействительный псевдоним темы</translation>
+      <location filename="../MqttReasonCodes.py" line="42" />
+      <source>Disconnect with will message</source>
+      <translation>Отключить посредством сообщения 'последней воли'</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="47" />
+      <source>No matching subscribers</source>
+      <translation>Нет соответствующих подписчиков</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="53" />
+      <source>No subscription found</source>
+      <translation>Подписка не найдена</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="201"/>
-        <source>Packet too large</source>
-        <translation>Слишком большой пакет</translation>
+      <location filename="../MqttReasonCodes.py" line="58" />
+      <source>Continue authentication</source>
+      <translation>Продолжить аутентификацию</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="63" />
+      <source>Re-authenticate</source>
+      <translation>Повторить аутентификацию</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="207"/>
-        <source>Message rate too high</source>
-        <translation>Скорость получения сообщений слишком высока</translation>
+      <location filename="../MqttReasonCodes.py" line="68" />
+      <source>Unspecified error</source>
+      <translation>Неопределенная ошибка</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="212"/>
-        <source>Quota exceeded</source>
-        <translation>Превышена квота</translation>
+      <location filename="../MqttReasonCodes.py" line="78" />
+      <source>Malformed packet</source>
+      <translation>Плохо сформированный пакет</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="221"/>
-        <source>Administrative action</source>
-        <translation>Административное действие</translation>
+      <location filename="../MqttReasonCodes.py" line="84" />
+      <source>Protocol error</source>
+      <translation>Ошибка протокола</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="90" />
+      <source>Implementation specific error</source>
+      <translation>Ошибка конкретной реализации</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="226"/>
-        <source>Payload format invalid</source>
-        <translation>Неверный формат полезной нагрузки</translation>
+      <location filename="../MqttReasonCodes.py" line="102" />
+      <source>Unsupported protocol version</source>
+      <translation>Неподдерживаемая версия протокола</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="107" />
+      <source>Client identifier not valid</source>
+      <translation>Недействительный идентификатор клиента</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="112" />
+      <source>Bad user name or password</source>
+      <translation>Неверное имя пользователя или пароль</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="117" />
+      <source>Not authorized</source>
+      <translation>Не авторизован</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="233"/>
-        <source>Retain not supported</source>
-        <translation>Сохранение не поддерживается</translation>
+      <location filename="../MqttReasonCodes.py" line="127" />
+      <source>Server unavailable</source>
+      <translation>Сервер недоступен</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="132" />
+      <source>Server busy</source>
+      <translation>Сервер занят</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="239"/>
-        <source>QoS not supported</source>
-        <translation>QoS не поддерживается</translation>
+      <location filename="../MqttReasonCodes.py" line="138" />
+      <source>Banned</source>
+      <translation>Запрещено</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="245"/>
-        <source>Use another server</source>
-        <translation>Используйте другой сервер</translation>
+      <location filename="../MqttReasonCodes.py" line="143" />
+      <source>Server shutting down</source>
+      <translation>Выключение сервера</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="148" />
+      <source>Bad authentication method</source>
+      <translation>Неверный метод аутентификации</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="251"/>
-        <source>Server moved</source>
-        <translation>Сервер перемещен</translation>
+      <location filename="../MqttReasonCodes.py" line="153" />
+      <source>Keep alive timeout</source>
+      <translation>Период сохранения активности</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="158" />
+      <source>Session taken over</source>
+      <translation>Сессия завершена</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="257"/>
-        <source>Shared subscription not supported</source>
-        <translation>Общая подписка не поддерживается</translation>
+      <location filename="../MqttReasonCodes.py" line="163" />
+      <source>Topic filter invalid</source>
+      <translation>Неверный фильтр тем</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="170" />
+      <source>Topic name invalid</source>
+      <translation>Недопустимое имя темы</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="178" />
+      <source>Packet identifier in use</source>
+      <translation>Идентификатор пакета используется</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="262"/>
-        <source>Connection rate exceeded</source>
-        <translation>Превышена скорость соединения</translation>
+      <location filename="../MqttReasonCodes.py" line="186" />
+      <source>Packet identifier not found</source>
+      <translation>Идентификатор пакета не найден</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="191" />
+      <source>Receive maximum exceeded</source>
+      <translation>Превышено максимальное количество</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="268"/>
-        <source>Maximum connect time</source>
-        <translation>Максимальное время соединения</translation>
+      <location filename="../MqttReasonCodes.py" line="196" />
+      <source>Topic alias invalid</source>
+      <translation>Недействительный псевдоним темы</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="273"/>
-        <source>Subscription identifiers not supported</source>
-        <translation>Идентификаторы подписки не поддерживаются</translation>
+      <location filename="../MqttReasonCodes.py" line="201" />
+      <source>Packet too large</source>
+      <translation>Слишком большой пакет</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="278"/>
-        <source>Wildcard subscription not supported</source>
-        <translation>Подписка с подстановочными знаками не поддерживается</translation>
+      <location filename="../MqttReasonCodes.py" line="207" />
+      <source>Message rate too high</source>
+      <translation>Скорость получения сообщений слишком высока</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="212" />
+      <source>Quota exceeded</source>
+      <translation>Превышена квота</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="298"/>
-        <source>Unknown result code ({0})</source>
-        <translation>Неизвестный код результата ({0})</translation>
+      <location filename="../MqttReasonCodes.py" line="221" />
+      <source>Administrative action</source>
+      <translation>Административное действие</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="226" />
+      <source>Payload format invalid</source>
+      <translation>Неверный формат полезной нагрузки</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="233" />
+      <source>Retain not supported</source>
+      <translation>Сохранение не поддерживается</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="239" />
+      <source>QoS not supported</source>
+      <translation>QoS не поддерживается</translation>
     </message>
     <message>
-        <location filename="../MqttReasonCodes.py" line="307"/>
-        <source>Unknown result code ({0}) for packet type &apos;{1}&apos;</source>
-        <translation>Неизвестный код результата ({0}) для типа пакета &apos;{1}&apos;</translation>
+      <location filename="../MqttReasonCodes.py" line="245" />
+      <source>Use another server</source>
+      <translation>Используйте другой сервер</translation>
     </message>
-</context>
-<context>
-    <name>MqttUserPropertiesEditor</name>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>User Properties</source>
-        <translation>Пользовательские свойства</translation>
+      <location filename="../MqttReasonCodes.py" line="251" />
+      <source>Server moved</source>
+      <translation>Сервер перемещен</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Key</source>
-        <translation>Ключ</translation>
+      <location filename="../MqttReasonCodes.py" line="257" />
+      <source>Shared subscription not supported</source>
+      <translation>Общая подписка не поддерживается</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="262" />
+      <source>Connection rate exceeded</source>
+      <translation>Превышена скорость соединения</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="268" />
+      <source>Maximum connect time</source>
+      <translation>Максимальное время соединения</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="273" />
+      <source>Subscription identifiers not supported</source>
+      <translation>Идентификаторы подписки не поддерживаются</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Value</source>
-        <translation>Значение</translation>
+      <location filename="../MqttReasonCodes.py" line="278" />
+      <source>Wildcard subscription not supported</source>
+      <translation>Подписка с подстановочными знаками не поддерживается</translation>
+    </message>
+    <message>
+      <location filename="../MqttReasonCodes.py" line="298" />
+      <source>Unknown result code ({0})</source>
+      <translation>Неизвестный код результата ({0})</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Press to add a new empty row</source>
-        <translation>Добавить новую пустую строку</translation>
+      <location filename="../MqttReasonCodes.py" line="307" />
+      <source>Unknown result code ({0}) for packet type '{1}'</source>
+      <translation>Неизвестный код результата ({0}) для типа пакета '{1}'</translation>
+    </message>
+  </context>
+  <context>
+    <name>MqttUserPropertiesEditor</name>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>User Properties</source>
+      <translation>Пользовательские свойства</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Press to delete the selected properties</source>
-        <translation>Удалить выбранные свойства</translation>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Key</source>
+      <translation>Ключ</translation>
     </message>
     <message>
-        <location filename="../MqttUserPropertiesEditor.ui" line="0"/>
-        <source>Press to delete all properties</source>
-        <translation>Удалить все свойства</translation>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Value</source>
+      <translation>Значение</translation>
+    </message>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Press to add a new empty row</source>
+      <translation>Добавить новую пустую строку</translation>
     </message>
-</context>
-<context>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Press to delete the selected properties</source>
+      <translation>Удалить выбранные свойства</translation>
+    </message>
+    <message>
+      <location filename="../MqttUserPropertiesEditor.ui" line="0" />
+      <source>Press to delete all properties</source>
+      <translation>Удалить все свойства</translation>
+    </message>
+  </context>
+  <context>
     <name>MqttUserPropertiesEditorDialog</name>
     <message>
-        <location filename="../MqttUserPropertiesEditor.py" line="142"/>
-        <source>User Properties</source>
-        <translation>Пользовательские свойства</translation>
+      <location filename="../MqttUserPropertiesEditor.py" line="142" />
+      <source>User Properties</source>
+      <translation>Пользовательские свойства</translation>
     </message>
-</context>
+  </context>
 </TS>
--- a/PluginMqttMonitor.epj	Sat Jan 06 13:11:01 2024 +0100
+++ b/PluginMqttMonitor.epj	Fri Apr 19 15:15:01 2024 +0200
@@ -1,7 +1,7 @@
 {
   "header": {
     "comment": "eric project file for project PluginMqttMonitor",
-    "copyright": "Copyright (C) 2023 Detlev Offenbach, detlev@die-offenbachs.de"
+    "copyright": "Copyright (C) 2024 Detlev Offenbach, detlev@die-offenbachs.de"
   },
   "project": {
     "AUTHOR": "Detlev Offenbach",
@@ -68,7 +68,7 @@
         "DocstringType": "eric_black",
         "EnabledCheckerCategories": "C, D, E, I, L, M, NO, N, Y, U, W",
         "ExcludeFiles": "*/Ui_*.py",
-        "ExcludeMessages": "C101,E203,E265,E266,E305,E402,M201,M301,M302,M303,M304,M305,M306,M307,M308,M311,M312,M313,M314,M315,M321,M701,M702,M811,M834,M852,N802,N803,N807,N808,N821,W293,W503,Y119,Y401,Y402",
+        "ExcludeMessages": "C101,E203,E265,E266,E305,E402,M201,M301,M302,M303,M304,M305,M306,M307,M308,M311,M312,M313,M314,M315,M321,M701,M702,M811,M834,M852,N802,N803,N807,N808,N821,U101,W293,W503,Y119,Y401,Y402",
         "FixCodes": "",
         "FixIssues": false,
         "FutureChecker": "",
@@ -367,4 +367,4 @@
     "VCSOTHERDATA": {},
     "VERSION": ""
   }
-}
\ No newline at end of file
+}
--- a/PluginMqttMonitor.py	Sat Jan 06 13:11:01 2024 +0100
+++ b/PluginMqttMonitor.py	Fri Apr 19 15:15:01 2024 +0200
@@ -39,7 +39,7 @@
 author = "Detlev Offenbach <detlev@die-offenbachs.de>"
 autoactivate = True
 deactivateable = True
-version = "10.5.0"
+version = "11.0.0"
 className = "MqttMonitorPlugin"
 packageName = "MqttMonitor"
 shortDescription = "Plug-in implementing a tool to connect to a MQTT broker"
@@ -61,12 +61,12 @@
 
 
 def createMqttPage(
-    configDlg,  # noqa: U100
+    _configDlg,
 ):
     """
     Module function to create the autocompletion configuration page.
 
-    @param configDlg reference to the configuration dialog
+    @param _configDlg reference to the configuration dialog (unused)
     @type ConfigurationWidget
     @return reference to the configuration page
     @rtype AutoCompletionRopePage
@@ -365,7 +365,7 @@
     try:
         import paho.mqtt  # __IGNORE_WARNING__
     except ImportError:
-        pipInstall(["paho-mqtt"])
+        pipInstall(["paho-mqtt>=2.0.0"])
 
 
 #
Binary file PluginMqttMonitor.zip has changed

eric ide

mercurial