src/eric7/i18n/eric7_zh_CN.ts

branch
eric7-maintenance
changeset 10079
0222a480e93d
parent 10004
983477114d3c
parent 10066
251638443e17
child 10101
34f74c19ed7a
diff -r 097199aec4bd -r 0222a480e93d src/eric7/i18n/eric7_zh_CN.ts
--- a/src/eric7/i18n/eric7_zh_CN.ts	Tue May 02 10:20:23 2023 +0200
+++ b/src/eric7/i18n/eric7_zh_CN.ts	Sat May 27 19:02:58 2023 +0200
@@ -37,42 +37,42 @@
   <context>
     <name>AboutPlugin</name>
     <message>
-      <location filename="../Plugins/PluginAbout.py" line="79" />
+      <location filename="../Plugins/PluginAbout.py" line="81" />
       <source>About {0}</source>
       <translation>关于 {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginAbout.py" line="81" />
+      <location filename="../Plugins/PluginAbout.py" line="83" />
       <source>&amp;About {0}</source>
       <translation>关于 {0}(&amp;A)</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginAbout.py" line="87" />
-      <source>Display information about this software</source>
-      <translation>显示软件信息</translation>
-    </message>
-    <message>
       <location filename="../Plugins/PluginAbout.py" line="89" />
+      <source>Display information about this software</source>
+      <translation>显示软件信息</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginAbout.py" line="91" />
       <source>&lt;b&gt;About {0}&lt;/b&gt;&lt;p&gt;Display some information about this software.&lt;/p&gt;</source>
       <translation>&lt;b&gt;关于 {0}&lt;/b&gt;&lt;p&gt;显示与本软件有关的部分信息。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginAbout.py" line="99" />
-      <source>About Qt</source>
-      <translation>关于 Qt</translation>
-    </message>
-    <message>
       <location filename="../Plugins/PluginAbout.py" line="101" />
+      <source>About Qt</source>
+      <translation>关于 Qt</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/PluginAbout.py" line="103" />
       <source>About &amp;Qt</source>
       <translation>关于 &amp;Qt</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginAbout.py" line="108" />
+      <location filename="../Plugins/PluginAbout.py" line="110" />
       <source>Display information about the Qt toolkit</source>
       <translation>显示Qt工具包信息</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginAbout.py" line="111" />
+      <location filename="../Plugins/PluginAbout.py" line="113" />
       <source>&lt;b&gt;About Qt&lt;/b&gt;&lt;p&gt;Display some information about the Qt toolkit.&lt;/p&gt;</source>
       <translation>&lt;b&gt;关于 Qt&lt;/b&gt;&lt;p&gt;显示Qt工具包的部分相关信息。&lt;/p&gt;</translation>
     </message>
@@ -1306,36 +1306,41 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="48" />
-      <source>PEP 484 disallows both type annotations and type comments</source>
+      <source>Dynamically typed expressions (typing.Any) are disallowed</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="52" />
-      <source>Dynamically typed expressions (typing.Any) are disallowed</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="56" />
+      <source>Type comments are disallowed</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="55" />
       <source>missing 'from __future__ import annotations' but imports: {0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="60" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="59" />
       <source>missing 'from __future__ import annotations'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="63" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="62" />
+      <source>missing 'from __future__ import annotations' but uses simplified type annotations: {0}</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="67" />
       <source>type annotation coverage of {0}% is too low</source>
       <translation>{0}% 的类型标注批覆盖率太低</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="66" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="70" />
       <source>type annotation is too complex ({0} &gt; {1})</source>
       <translation>类型标注太复杂 ({0} &gt; {1})</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="69" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Annotations/translations.py" line="73" />
       <source>type annotation is too long ({0} &gt; {1})</source>
       <translation type="unfinished" />
     </message>
@@ -1819,77 +1824,77 @@
   <context>
     <name>BaseDevice</name>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="196" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="210" />
       <source>Device Data Not Available</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="197" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="211" />
       <source>&lt;p&gt;The device data is not available. Try to connect to the device again. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="250" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="264" />
       <source>Unsupported Device</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="260" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="274" />
       <source>REPL is not supported by this device.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="279" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="293" />
       <source>Plotter is not supported by this device.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="298" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="312" />
       <source>Running scripts is not supported by this device.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="317" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="331" />
       <source>File Manager is not supported by this device.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="372" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="386" />
       <source>Select Device Directory</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="373" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="387" />
       <source>Select the directory for the connected device:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="519" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="539" />
       <source>Detected an error without indications.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="1464" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="1490" />
       <source>Operation not supported.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="1820" />
       <source>Yes</source>
       <translation type="unfinished">是</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="1772" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="1820" />
       <source>No</source>
       <translation type="unfinished">否</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="1822" />
       <source>yes</source>
       <translation type="unfinished">是</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/DeviceBase.py" line="1774" />
+      <location filename="../MicroPython/Devices/DeviceBase.py" line="1822" />
       <source>no</source>
       <translation type="unfinished">否</translation>
     </message>
@@ -2433,7 +2438,6 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/BoardDataDialog.py" line="169" />
       <location filename="../MicroPython/BoardDataDialog.py" line="98" />
       <source>Version</source>
       <translation type="unfinished">版本</translation>
@@ -2492,12 +2496,54 @@
     </message>
     <message>
       <location filename="../MicroPython/BoardDataDialog.py" line="167" />
-      <source>µLab</source>
+      <source>Features</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../MicroPython/BoardDataDialog.py" line="171" />
-      <source>µLab is not available</source>
+      <source>Bluetooth</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="193" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="186" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="179" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="172" />
+      <source>available</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="208" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="193" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="186" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="179" />
+      <location filename="../MicroPython/BoardDataDialog.py" line="172" />
+      <source>not available</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="178" />
+      <source>WiFi</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="185" />
+      <source>Ethernet</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="192" />
+      <source>Network Time</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="203" />
+      <source>Package Installer</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/BoardDataDialog.py" line="207" />
+      <source>µLab</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -3947,21 +3993,31 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="91" />
-      <source>'pathlib' Usage</source>
+      <source>Name Order</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="92" />
-      <source>Security</source>
-      <translation type="unfinished">安全</translation>
+      <source>'pathlib' Usage</source>
+      <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="93" />
-      <source>Warnings</source>
-      <translation type="unfinished" />
+      <source>Security</source>
+      <translation type="unfinished">安全</translation>
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="94" />
+      <source>Unused</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="95" />
+      <source>Warnings</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="96" />
       <source>Simplify Code</source>
       <translation type="unfinished" />
     </message>
@@ -4249,14 +4305,14 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1128" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1126" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="865" />
       <source>unknown ({0})</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1577" />
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1500" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1567" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1490" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1040" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="961" />
       <source>The device volume is not available.</source>
@@ -4269,94 +4325,94 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1539" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1529" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1005" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="977" />
       <source>&lt;p&gt;The file &lt;b&gt;{0}&lt;/b&gt; exists already. Shall it be replaced?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1546" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1536" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1012" />
       <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="984" />
       <source>Aborted</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1195" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1193" />
       <source>CircuitPython does not support setting the IPv4 parameters of the WiFi access point.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1266" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1262" />
       <source>CircuitPython does not support reporting of connected clients.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1675" />
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1663" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1342" />
       <source>Active</source>
       <translation type="unfinished">活动的</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1681" />
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1351" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1669" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1343" />
       <source>Connected</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1352" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1344" />
       <source>IPv4 Address</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1353" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1345" />
       <source>Netmask</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1354" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1346" />
       <source>Gateway</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1355" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1347" />
       <source>DNS</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1677" />
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1356" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1665" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1348" />
       <source>MAC-Address</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1357" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1349" />
       <source>Chip Type</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1358" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1350" />
       <source>max. Sockets</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1538" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1528" />
       <source>Write Connect Script</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1676" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1664" />
       <source>Name</source>
       <translation type="unfinished">名称</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1679" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1667" />
       <source>Address Type</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1682" />
+      <location filename="../MicroPython/Devices/CircuitPythonDevices.py" line="1670" />
       <source>Advertising</source>
       <translation type="unfinished" />
     </message>
@@ -5060,7 +5116,7 @@
   <context>
     <name>CodeStyleChecker</name>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="510" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="516" />
       <source>No message defined for code '{0}'.</source>
       <translation type="unfinished" />
     </message>
@@ -5068,57 +5124,57 @@
   <context>
     <name>CodeStyleCheckerDialog</name>
     <message>
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="234" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="236" />
       <source>Fix: {0}</source>
       <translation>修复: {0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="126" />
-      <source>PEP-257</source>
-      <translation>PEP-257</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="127" />
-      <source>Eric</source>
-      <translation>Eric</translation>
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="128" />
+      <source>PEP-257</source>
+      <translation>PEP-257</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="129" />
+      <source>Eric</source>
+      <translation>Eric</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="130" />
       <source>Eric (Blacked)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="230" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="232" />
       <source>Errors</source>
       <translation>错误</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="255" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="257" />
       <source>Error: {0}</source>
       <translation>错误:{0}</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1140" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1210" />
       <source>{0} (ignored)</source>
       <translation>{0}(已忽略)</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1215" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1285" />
       <source>No issues found.</source>
       <translation>未发现问题。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1219" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="1289" />
       <source>No files found (check your ignore list).</source>
       <translation>找不到文件(检查您忽略的列表)。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2601" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2891" />
       <source>Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2602" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.py" line="2892" />
       <source>Enter a Commented Code Whitelist Pattern</source>
       <translation type="unfinished" />
     </message>
@@ -5574,6 +5630,16 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Verifies &amp;lt;3.10 code with simplified types uses 'from __future__ import annotations'.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Check use of simplified types</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Dispatch Decorators:</source>
       <translation type="unfinished" />
     </message>
@@ -5763,7 +5829,12 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
-      <source>Imports Sorting</source>
+      <source>Name Order</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Name Sorting</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -5798,6 +5869,11 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Imports Sorting</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Select to place from imports first then straight ones</source>
       <translation type="unfinished" />
     </message>
@@ -5818,6 +5894,126 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Unused</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore Warnings For</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for methods decorated with '@abstractmethod'.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Abstract Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for methods decorated with '@overload'.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Overload Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for methods decorated with '@override'.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Override Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for methods consisting of a pass statement only.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Stub Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused *args and **kwargs.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>*args and **kwargs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for lambda functions.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Lambda Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for methods decorated with '@pyqtSlot' or '@Slot'.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Qt Slot Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for Qt event handler methods.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Qt Event Handler Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for methods starting and ending with double underscores.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Special Methods</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused global variables starting and ending with double underscores.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Special Global Variables</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Ignore unused arguments for nested functions.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
+      <source>Nested Functions</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/CodeStyleCheckerDialog.ui" line="0" />
       <source>Press to start the code style check run</source>
       <translation>按下以开始代码格式检查</translation>
     </message>
@@ -6001,33 +6197,33 @@
   <context>
     <name>CodeStyleCheckerPlugin</name>
     <message>
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="113" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="115" />
       <source>Python 3 batch check</source>
       <translation>Python 3 批量检查</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="351" />
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="270" />
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="250" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="353" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="272" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="252" />
       <source>Check Code Style</source>
       <translation>检查代码格式</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="352" />
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="270" />
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="251" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="354" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="272" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="253" />
       <source>&amp;Code Style...</source>
       <translation>代码格式(&amp;C)…</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="257" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="259" />
       <source>Check code style.</source>
       <translation>检查代码格式。</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="359" />
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="273" />
-      <location filename="../Plugins/PluginCodeStyleChecker.py" line="259" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="361" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="275" />
+      <location filename="../Plugins/PluginCodeStyleChecker.py" line="261" />
       <source>&lt;b&gt;Check Code Style...&lt;/b&gt;&lt;p&gt;This checks Python files for compliance to the code style conventions given in various PEPs.&lt;/p&gt;</source>
       <translation>&lt;b&gt;检查代码格式…&lt;/b&gt;本插件对 Python 源文件进行检查,确保其符合各个 PEP 所规定的代码格式惯例。&lt;/[&gt;</translation>
     </message>
@@ -6063,226 +6259,226 @@
   <context>
     <name>CodeStyleFixer</name>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="257" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="259" />
       <source>Triple single quotes converted to triple double quotes.</source>
       <translation>三单引号转换成双引号。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="260" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="262" />
       <source>Introductory quotes corrected to be {0}"""</source>
       <translation>前导引号更正为 {0}"""</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="263" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="265" />
       <source>Single line docstring put on one line.</source>
       <translation>单行的文档字串放在一行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="266" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="268" />
       <source>Period added to summary line.</source>
       <translation>附于总结线的句号。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="293" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="269" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="295" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="271" />
       <source>Blank line before function/method docstring removed.</source>
       <translation>函数/方法文档字串前的空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="272" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="274" />
       <source>Blank line inserted before class docstring.</source>
       <translation>类文档字串前插入的空行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="275" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="277" />
       <source>Blank line inserted after class docstring.</source>
       <translation>类文档字串后的插入的空行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="278" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="280" />
       <source>Blank line inserted after docstring summary.</source>
       <translation>文档字串摘要后插入的空行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="281" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="283" />
       <source>Blank line inserted after last paragraph of docstring.</source>
       <translation>文档字串最后段落插入的空行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="284" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="286" />
       <source>Leading quotes put on separate line.</source>
       <translation>前导引号放在单独一行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="287" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="289" />
       <source>Trailing quotes put on separate line.</source>
       <translation>尾随引号放在单独一行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="290" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="292" />
       <source>Blank line before class docstring removed.</source>
       <translation>类文档字串前的空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="296" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="298" />
       <source>Blank line after class docstring removed.</source>
       <translation>类文档字串后的空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="299" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="301" />
       <source>Blank line after function/method docstring removed.</source>
       <translation>函数/方法文档字串后的空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="302" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="304" />
       <source>Blank line after last paragraph removed.</source>
       <translation>最后段落后的空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="305" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="307" />
       <source>Tab converted to 4 spaces.</source>
       <translation>制表符转换为4个空格。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="308" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="310" />
       <source>Indentation adjusted to be a multiple of four.</source>
       <translation>缩进调整为4的倍数。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="311" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="313" />
       <source>Indentation of continuation line corrected.</source>
       <translation>连续行缩进已更正。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="314" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="316" />
       <source>Indentation of closing bracket corrected.</source>
       <translation>右括号缩进已更正。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="317" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="319" />
       <source>Missing indentation of continuation line corrected.</source>
       <translation>连续行缩进丢失已更正。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="320" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="322" />
       <source>Closing bracket aligned to opening bracket.</source>
       <translation>右括号与左括号一致。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="323" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="325" />
       <source>Indentation level changed.</source>
       <translation>缩进值已改变。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="326" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="328" />
       <source>Indentation level of hanging indentation changed.</source>
       <translation>悬挂缩进的缩进值已改变。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="329" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="331" />
       <source>Visual indentation corrected.</source>
       <translation>可视缩进已更正。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="344" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="338" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="332" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="346" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="340" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="334" />
       <source>Extraneous whitespace removed.</source>
       <translation>多余空格已删除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="341" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="335" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="343" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="337" />
       <source>Missing whitespace added.</source>
       <translation>丢失的空格已添加。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="347" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="349" />
       <source>Whitespace around comment sign corrected.</source>
       <translation>注释符两边的空格已更正。</translation>
     </message>
     <message numerus="yes">
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="350" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="352" />
       <source>%n blank line(s) inserted.</source>
       <translation>
         <numerusform>已插入 %n 空行。</numerusform>
       </translation>
     </message>
     <message numerus="yes">
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="353" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="355" />
       <source>%n superfluous lines removed</source>
       <translation>
         <numerusform>已移除 %n 多余行</numerusform>
       </translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="356" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="358" />
       <source>Superfluous blank lines removed.</source>
       <translation>多余空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="359" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="361" />
       <source>Superfluous blank lines after function decorator removed.</source>
       <translation>函数修饰符后的多余空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="362" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="364" />
       <source>Imports were put on separate lines.</source>
       <translation>已将导入放在单独行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="365" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="367" />
       <source>Long lines have been shortened.</source>
       <translation>长行已被截短。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="368" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="370" />
       <source>Redundant backslash in brackets removed.</source>
       <translation>括号中的多余反斜杠已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="374" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="371" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="376" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="373" />
       <source>Compound statement corrected.</source>
       <translation>复合语句已更正。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="377" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="379" />
       <source>Comparison to None/True/False corrected.</source>
       <translation>无/真/假的对比已更正。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="380" />
-      <source>'{0}' argument added.</source>
-      <translation>已添加 '{0}' 参数。</translation>
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="381" />
-      <source>'{0}' argument removed.</source>
-      <translation>已移除 '{0}' 参数。</translation>
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="382" />
+      <source>'{0}' argument added.</source>
+      <translation>已添加 '{0}' 参数。</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="383" />
+      <source>'{0}' argument removed.</source>
+      <translation>已移除 '{0}' 参数。</translation>
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="384" />
       <source>Whitespace stripped from end of line.</source>
       <translation>删除行尾空格。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="385" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="387" />
       <source>newline added to end of file.</source>
       <translation>文件尾添加新行。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="388" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="390" />
       <source>Superfluous trailing blank lines removed from end of file.</source>
       <translation>文件尾多余的空行已移除。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="391" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="393" />
       <source>'&lt;&gt;' replaced by '!='.</source>
       <translation>用“!=”代替“&lt;&gt;”。</translation>
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="392" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="394" />
       <source>Could not save the file! Skipping it. Reason: {0}</source>
       <translation>不能保存该文件!已略过。原因: {0}</translation>
     </message>
@@ -6360,7 +6556,7 @@
   <context>
     <name>CodingError</name>
     <message>
-      <location filename="../Utilities/__init__.py" line="176" />
+      <location filename="../Utilities/__init__.py" line="174" />
       <source>The coding '{0}' is wrong for the given text.</source>
       <translation>跟据所给文本,编码 “{0}” 是错误的。</translation>
     </message>
@@ -6368,28 +6564,28 @@
   <context>
     <name>ColorDialogWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardQColorDialog.py" line="80" />
-      <location filename="../Plugins/PluginWizardQColorDialog.py" line="73" />
+      <location filename="../Plugins/PluginWizardQColorDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQColorDialog.py" line="75" />
       <source>QColorDialog Wizard</source>
       <translation>QColorDialog 向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQColorDialog.py" line="74" />
+      <location filename="../Plugins/PluginWizardQColorDialog.py" line="76" />
       <source>QColorDialog Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQColorDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQColorDialog.py" line="84" />
       <source>&lt;b&gt;QColorDialog Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QColorDialog. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation>&lt;b&gt;QColorDialog 向导&lt;/b&gt;&lt;p&gt;该向导打开一个对话框,可以输入创建QColorDialog需要的所有参数。产生的代码插入到当前光标位置。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQColorDialog.py" line="133" />
+      <location filename="../Plugins/PluginWizardQColorDialog.py" line="135" />
       <source>No current editor</source>
       <translation>没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQColorDialog.py" line="134" />
+      <location filename="../Plugins/PluginWizardQColorDialog.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -6791,37 +6987,37 @@
 </translation>
     </message>
     <message>
-      <location filename="../CondaInterface/CondaExecDialog.py" line="138" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="137" />
       <source>Operation finished.
 </source>
       <translation>操作完成。
 </translation>
     </message>
     <message>
-      <location filename="../CondaInterface/CondaExecDialog.py" line="158" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="157" />
       <source>Conda command '{0}' did not return success.</source>
       <translation>Conda 命令 “{0}” 无法返回成功。</translation>
     </message>
     <message>
-      <location filename="../CondaInterface/CondaExecDialog.py" line="170" />
-      <location filename="../CondaInterface/CondaExecDialog.py" line="165" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="169" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="164" />
       <source>
 Conda Message: {0}</source>
       <translation>
 Conda 消息: {0}</translation>
     </message>
     <message>
-      <location filename="../CondaInterface/CondaExecDialog.py" line="208" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="207" />
       <source>{0} (Size: {1})</source>
       <translation>{0} (大小: {1})</translation>
     </message>
     <message>
-      <location filename="../CondaInterface/CondaExecDialog.py" line="213" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="212" />
       <source>Fetching {0} ...</source>
       <translation>取回 {0} …</translation>
     </message>
     <message>
-      <location filename="../CondaInterface/CondaExecDialog.py" line="216" />
+      <location filename="../CondaInterface/CondaExecDialog.py" line="215" />
       <source> Done.
 </source>
       <translation> 完成。
@@ -9064,19 +9260,19 @@
 </translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugServer.py" line="2056" />
+      <location filename="../Debugger/DebugServer.py" line="2058" />
       <source>Passive debug connection received
 </source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugServer.py" line="2070" />
+      <location filename="../Debugger/DebugServer.py" line="2072" />
       <source>Passive debug connection closed
 </source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugServer.py" line="2200" />
+      <location filename="../Debugger/DebugServer.py" line="2202" />
       <source>&lt;project&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -9089,7 +9285,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2335" />
+      <location filename="../Debugger/DebugUI.py" line="2337" />
       <location filename="../Debugger/DebugUI.py" line="231" />
       <source>Run Script</source>
       <translation>运行脚本</translation>
@@ -9110,8 +9306,8 @@
       <translation>&lt;b&gt;运行脚本&lt;/b&gt;&lt;p&gt;设置命令行参数,并在调试器之外运行脚本。如果文件未对更改进行保存,则可能会先行保存。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2379" />
-      <location filename="../Debugger/DebugUI.py" line="2335" />
+      <location filename="../Debugger/DebugUI.py" line="2343" />
+      <location filename="../Debugger/DebugUI.py" line="2337" />
       <location filename="../Debugger/DebugUI.py" line="252" />
       <source>Run Project</source>
       <translation>运行项目</translation>
@@ -9212,7 +9408,7 @@
       <translation>&lt;b&gt;剖析项目&lt;/b&gt;&lt;p&gt;设置命令行参数,并剖析当前项目。如果当前项目的文件未保存则会先行保存。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2530" />
+      <location filename="../Debugger/DebugUI.py" line="2532" />
       <location filename="../Debugger/DebugUI.py" line="362" />
       <source>Debug Script</source>
       <translation>调试脚本</translation>
@@ -9233,8 +9429,8 @@
       <translation>&lt;b&gt;调试脚本&lt;/b&gt;&lt;p&gt;设置命令行参数,并将当前行设为当前编辑窗口首先执行的 Python 声明。如果文件未保存则会先行保存。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2584" />
-      <location filename="../Debugger/DebugUI.py" line="2530" />
+      <location filename="../Debugger/DebugUI.py" line="2538" />
+      <location filename="../Debugger/DebugUI.py" line="2532" />
       <location filename="../Debugger/DebugUI.py" line="384" />
       <source>Debug Project</source>
       <translation>调试项目</translation>
@@ -9663,86 +9859,86 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1550" />
+      <location filename="../Debugger/DebugUI.py" line="1552" />
       <source>&lt;p&gt;The program generate the signal "{0}".&lt;br/&gt;File: &lt;b&gt;{1}&lt;/b&gt;, Line: &lt;b&gt;{2}&lt;/b&gt;&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1567" />
+      <location filename="../Debugger/DebugUI.py" line="1569" />
       <source>The program being debugged has terminated unexpectedly.</source>
       <translation>被调试的程序意外终止。</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1628" />
+      <location filename="../Debugger/DebugUI.py" line="1630" />
       <source>No locals available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1675" />
+      <location filename="../Debugger/DebugUI.py" line="1677" />
       <source>Breakpoint Condition Error</source>
       <translation>断点条件错误</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1676" />
+      <location filename="../Debugger/DebugUI.py" line="1678" />
       <source>&lt;p&gt;The condition of the breakpoint &lt;b&gt;{0}, {1}&lt;/b&gt; contains a syntax error.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1733" />
+      <location filename="../Debugger/DebugUI.py" line="1735" />
       <source>Watch Expression Error</source>
       <translation>监视表达式出错</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1734" />
+      <location filename="../Debugger/DebugUI.py" line="1736" />
       <source>&lt;p&gt;The watch expression &lt;b&gt;{0}&lt;/b&gt; contains a syntax error.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1762" />
+      <location filename="../Debugger/DebugUI.py" line="1764" />
       <source>&lt;p&gt;A watch expression '&lt;b&gt;{0}&lt;/b&gt;' already exists.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1767" />
+      <location filename="../Debugger/DebugUI.py" line="1769" />
       <source>&lt;p&gt;A watch expression '&lt;b&gt;{0}&lt;/b&gt;' for the variable &lt;b&gt;{1}&lt;/b&gt; already exists.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1773" />
+      <location filename="../Debugger/DebugUI.py" line="1775" />
       <source>Watch expression already exists</source>
       <translation>监视表达式已存在</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1976" />
-      <location filename="../Debugger/DebugUI.py" line="1928" />
+      <location filename="../Debugger/DebugUI.py" line="1939" />
+      <location filename="../Debugger/DebugUI.py" line="1930" />
       <source>Coverage of Project</source>
       <translation>项目覆盖率</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="1930" />
+      <location filename="../Debugger/DebugUI.py" line="1932" />
       <source>Coverage of Script</source>
       <translation>脚本覆盖率</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2380" />
-      <location filename="../Debugger/DebugUI.py" line="2181" />
-      <location filename="../Debugger/DebugUI.py" line="1977" />
+      <location filename="../Debugger/DebugUI.py" line="2344" />
+      <location filename="../Debugger/DebugUI.py" line="2144" />
+      <location filename="../Debugger/DebugUI.py" line="1940" />
       <source>There is no main script defined for the current project. Aborting</source>
       <translation>当前项目未定义主脚本。终止</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2180" />
-      <location filename="../Debugger/DebugUI.py" line="2132" />
+      <location filename="../Debugger/DebugUI.py" line="2143" />
+      <location filename="../Debugger/DebugUI.py" line="2134" />
       <source>Profile of Project</source>
       <translation>项目轮廓</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2134" />
+      <location filename="../Debugger/DebugUI.py" line="2136" />
       <source>Profile of Script</source>
       <translation>脚本轮廓</translation>
     </message>
     <message>
-      <location filename="../Debugger/DebugUI.py" line="2585" />
+      <location filename="../Debugger/DebugUI.py" line="2539" />
       <source>There is no main script defined for the current project. No debugging possible.</source>
       <translation>当前项目未定义主脚本。不能进行调试。</translation>
     </message>
@@ -9861,13 +10057,13 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugViewer.py" line="793" />
+      <location filename="../Debugger/DebugViewer.py" line="804" />
       <source>&lt;p&gt;Debugger with ID &lt;b&gt;{0}&lt;/b&gt; has been connected.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/DebugViewer.py" line="1036" />
-      <location filename="../Debugger/DebugViewer.py" line="908" />
+      <location filename="../Debugger/DebugViewer.py" line="1047" />
+      <location filename="../Debugger/DebugViewer.py" line="919" />
       <source>unknown state ({0})</source>
       <translation type="unfinished" />
     </message>
@@ -11350,34 +11546,34 @@
   <context>
     <name>DotDesktopWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="128" />
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="90" />
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="83" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="130" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="92" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="85" />
       <source>.desktop Wizard</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="84" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="86" />
       <source>.desktop Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="92" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="94" />
       <source>&lt;b&gt;.desktop Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the contents of a .desktop file. The generated code replaces the text of the current editor. Alternatively a new editor is opened.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="121" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="123" />
       <source>No current editor</source>
       <translation type="unfinished">没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="122" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="124" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">请您先打开或创建一个文件。</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardDotDesktop.py" line="129" />
+      <location filename="../Plugins/PluginWizardDotDesktop.py" line="131" />
       <source>The current editor contains text. Shall this be replaced?</source>
       <translation type="unfinished" />
     </message>
@@ -18433,28 +18629,28 @@
   <context>
     <name>EricMessageBoxWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="80" />
-      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="73" />
+      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="82" />
+      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="75" />
       <source>EricMessageBox Wizard</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="74" />
+      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="76" />
       <source>EricMessageBox Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="82" />
+      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="84" />
       <source>&lt;b&gt;EricMessageBox Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create an EricMessageBox. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="133" />
+      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="135" />
       <source>No current editor</source>
       <translation type="unfinished">没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="134" />
+      <location filename="../Plugins/PluginWizardEricMessageBox.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">请您先打开或创建一个文件。</translation>
     </message>
@@ -20038,27 +20234,27 @@
   <context>
     <name>EricapiPlugin</name>
     <message>
-      <location filename="../Plugins/PluginEricapi.py" line="75" />
+      <location filename="../Plugins/PluginEricapi.py" line="77" />
       <source>eric API File Generator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricapi.py" line="119" />
+      <location filename="../Plugins/PluginEricapi.py" line="121" />
       <source>Generate API file (eric7_api)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricapi.py" line="120" />
+      <location filename="../Plugins/PluginEricapi.py" line="122" />
       <source>Generate &amp;API file (eric7_api)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricapi.py" line="127" />
+      <location filename="../Plugins/PluginEricapi.py" line="129" />
       <source>Generate an API file using eric7_api</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricapi.py" line="130" />
+      <location filename="../Plugins/PluginEricapi.py" line="132" />
       <source>&lt;b&gt;Generate API file&lt;/b&gt;&lt;p&gt;Generate an API file using eric7_api.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -20445,32 +20641,32 @@
   <context>
     <name>EricdocPlugin</name>
     <message>
-      <location filename="../Plugins/PluginEricdoc.py" line="85" />
+      <location filename="../Plugins/PluginEricdoc.py" line="87" />
       <source>eric Documentation Generator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricdoc.py" line="120" />
+      <location filename="../Plugins/PluginEricdoc.py" line="122" />
       <source>Qt Help Tools</source>
       <translation>Qt 帮助工具</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginEricdoc.py" line="163" />
+      <location filename="../Plugins/PluginEricdoc.py" line="165" />
       <source>Generate documentation (eric7_doc)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricdoc.py" line="164" />
+      <location filename="../Plugins/PluginEricdoc.py" line="166" />
       <source>Generate &amp;documentation (eric7_doc)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricdoc.py" line="171" />
+      <location filename="../Plugins/PluginEricdoc.py" line="173" />
       <source>Generate API documentation using eric7_doc</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginEricdoc.py" line="174" />
+      <location filename="../Plugins/PluginEricdoc.py" line="176" />
       <source>&lt;b&gt;Generate documentation&lt;/b&gt;&lt;p&gt;Generate API documentation using eric7_doc.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -20676,8 +20872,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1506" />
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1490" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1589" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1573" />
       <location filename="../MicroPython/Devices/EspDevices.py" line="196" />
       <source>Erase Flash</source>
       <translation type="unfinished" />
@@ -20688,7 +20884,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1591" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1674" />
       <location filename="../MicroPython/Devices/EspDevices.py" line="203" />
       <source>Flash Additional Firmware</source>
       <translation type="unfinished" />
@@ -20739,8 +20935,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1590" />
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1549" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1673" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1632" />
       <location filename="../MicroPython/Devices/EspDevices.py" line="363" />
       <source>'esptool write_flash' Output</source>
       <translation type="unfinished" />
@@ -20806,68 +21002,62 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="980" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="978" />
       <source>unknown ({0})</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1209" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1289" />
       <source>Active</source>
       <translation type="unfinished">活动的</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1210" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1290" />
       <source>Name</source>
       <translation type="unfinished">名称</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1211" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1291" />
       <source>MAC-Address</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1214" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1294" />
       <source>Address Type</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1215" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1295" />
       <source>Public</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1215" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1295" />
       <source>Random</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1219" />
-      <source>Rx-Buffer</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1221" />
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1219" />
-      <source>{0} Bytes</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1221" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1298" />
       <source>MTU</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1491" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1298" />
+      <source>{0} Bytes</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1574" />
       <source>Shall the flash of the selected device really be erased?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1505" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1588" />
       <source>'esptool erase_flash' Output</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/EspDevices.py" line="1550" />
+      <location filename="../MicroPython/Devices/EspDevices.py" line="1633" />
       <source>Flash µPy/CPy Firmware</source>
       <translation type="unfinished" />
     </message>
@@ -21189,17 +21379,17 @@
       <translation>配置…</translation>
     </message>
     <message>
-      <location filename="../Debugger/ExceptionLogger.py" line="111" />
+      <location filename="../Debugger/ExceptionLogger.py" line="112" />
       <source>{0}: An unhandled exception occured. See the shell window for details.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/ExceptionLogger.py" line="119" />
+      <location filename="../Debugger/ExceptionLogger.py" line="120" />
       <source>{0}: {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/ExceptionLogger.py" line="121" />
+      <location filename="../Debugger/ExceptionLogger.py" line="122" />
       <source>{0}: {1}, {2}</source>
       <translation type="unfinished" />
     </message>
@@ -21778,44 +21968,44 @@
   <context>
     <name>FileDialogWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="88" />
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="81" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="90" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="83" />
       <source>QFileDialog Wizard</source>
       <translation>QFileDialog 向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="84" />
       <source>QFileDialog Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="90" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="92" />
       <source>&lt;b&gt;QFileDialog Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QFileDialog. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation>&lt;b&gt;QFileDialog 向导&lt;/b&gt;&lt;p&gt;该向导打开一个对话框,可以输入创建 QFileDialog 所需的所有参数。生成的代码插入到当前光标位置。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="107" />
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="100" />
-      <source>EricFileDialog Wizard</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="101" />
-      <source>EricFileDialog Wizard...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/PluginWizardQFileDialog.py" line="109" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="102" />
+      <source>EricFileDialog Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="103" />
+      <source>EricFileDialog Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="111" />
       <source>&lt;b&gt;EricFileDialog Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create an EricFileDialog. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="172" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="174" />
       <source>No current editor</source>
       <translation>没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFileDialog.py" line="173" />
+      <location filename="../Plugins/PluginWizardQFileDialog.py" line="175" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -22744,28 +22934,28 @@
   <context>
     <name>FontDialogWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardQFontDialog.py" line="80" />
-      <location filename="../Plugins/PluginWizardQFontDialog.py" line="73" />
+      <location filename="../Plugins/PluginWizardQFontDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQFontDialog.py" line="75" />
       <source>QFontDialog Wizard</source>
       <translation>QFontDialog 向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFontDialog.py" line="74" />
+      <location filename="../Plugins/PluginWizardQFontDialog.py" line="76" />
       <source>QFontDialog Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFontDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQFontDialog.py" line="84" />
       <source>&lt;b&gt;QFontDialog Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QFontDialog. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation>&lt;b&gt;QFontDialog 向导&lt;/b&gt;&lt;p&gt;该向导打开一个对话框,可以输入创建 QFontDialog 需要的所有参数。产生的代码插入到当前光标位置。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFontDialog.py" line="133" />
+      <location filename="../Plugins/PluginWizardQFontDialog.py" line="135" />
       <source>No current editor</source>
       <translation>没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQFontDialog.py" line="134" />
+      <location filename="../Plugins/PluginWizardQFontDialog.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -31283,37 +31473,37 @@
   <context>
     <name>HelpTocWidget</name>
     <message>
-      <location filename="../QtHelpInterface/HelpTocWidget.py" line="174" />
+      <location filename="../QtHelpInterface/HelpTocWidget.py" line="175" />
       <source>Open Link</source>
       <translation>打开链接</translation>
     </message>
     <message>
-      <location filename="../QtHelpInterface/HelpTocWidget.py" line="176" />
-      <source>Open Link in New Page</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../QtHelpInterface/HelpTocWidget.py" line="177" />
+      <source>Open Link in New Page</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QtHelpInterface/HelpTocWidget.py" line="178" />
       <source>Open Link in Background Page</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QtHelpInterface/HelpTocWidget.py" line="179" />
-      <source>Open Link in New Tab</source>
-      <translation>在新选项卡中打开文件</translation>
-    </message>
-    <message>
       <location filename="../QtHelpInterface/HelpTocWidget.py" line="180" />
-      <source>Open Link in Background Tab</source>
-      <translation>在后台选项卡中打开链接</translation>
+      <source>Open Link in New Tab</source>
+      <translation>在新选项卡中打开文件</translation>
     </message>
     <message>
       <location filename="../QtHelpInterface/HelpTocWidget.py" line="181" />
+      <source>Open Link in Background Tab</source>
+      <translation>在后台选项卡中打开链接</translation>
+    </message>
+    <message>
+      <location filename="../QtHelpInterface/HelpTocWidget.py" line="182" />
       <source>Open Link in New Window</source>
       <translation>在新窗口中打开链接</translation>
     </message>
     <message>
-      <location filename="../QtHelpInterface/HelpTocWidget.py" line="183" />
+      <location filename="../QtHelpInterface/HelpTocWidget.py" line="184" />
       <source>Copy URL to Clipboard</source>
       <translation type="unfinished" />
     </message>
@@ -43319,41 +43509,21 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="25" />
-      <source>Import statements are in the wrong order. '{0}' should be before '{1}'</source>
+      <source>unnecessary import alias - rewrite as '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="28" />
+      <source>banned import '{0}' used</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="29" />
-      <source>Imported names are in the wrong order. Should be '{0}'</source>
+      <source>relative imports from parent modules are banned</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="32" />
-      <source>Import statements should be combined. '{0}' should be combined with '{1}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="36" />
-      <source>The names in __all__ are in the wrong order. The order should be '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="40" />
-      <source>unnecessary import alias - rewrite as '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="43" />
-      <source>banned import '{0}' used</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="44" />
-      <source>relative imports from parent modules are banned</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Imports/translations.py" line="47" />
       <source>relative imports are banned</source>
       <translation type="unfinished" />
     </message>
@@ -43399,28 +43569,28 @@
   <context>
     <name>InputDialogWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardQInputDialog.py" line="80" />
-      <location filename="../Plugins/PluginWizardQInputDialog.py" line="73" />
+      <location filename="../Plugins/PluginWizardQInputDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQInputDialog.py" line="75" />
       <source>QInputDialog Wizard</source>
       <translation>QInputDialog 向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQInputDialog.py" line="74" />
+      <location filename="../Plugins/PluginWizardQInputDialog.py" line="76" />
       <source>QInputDialog Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQInputDialog.py" line="82" />
+      <location filename="../Plugins/PluginWizardQInputDialog.py" line="84" />
       <source>&lt;b&gt;QInputDialog Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QInputDialog. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation>&lt;b&gt;QInputDialog 向导&lt;/b&gt;&lt;p&gt;该向导打开一个对话框,可以输入创建 QInputDialog 所需的所有参数。生成的代码插入到当前光标位置。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQInputDialog.py" line="133" />
+      <location filename="../Plugins/PluginWizardQInputDialog.py" line="135" />
       <source>No current editor</source>
       <translation>没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQInputDialog.py" line="134" />
+      <location filename="../Plugins/PluginWizardQInputDialog.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -49798,28 +49968,28 @@
   <context>
     <name>MessageBoxWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardQMessageBox.py" line="80" />
-      <location filename="../Plugins/PluginWizardQMessageBox.py" line="73" />
+      <location filename="../Plugins/PluginWizardQMessageBox.py" line="82" />
+      <location filename="../Plugins/PluginWizardQMessageBox.py" line="75" />
       <source>QMessageBox Wizard</source>
       <translation>QMessageBox 向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQMessageBox.py" line="74" />
+      <location filename="../Plugins/PluginWizardQMessageBox.py" line="76" />
       <source>QMessageBox Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQMessageBox.py" line="82" />
+      <location filename="../Plugins/PluginWizardQMessageBox.py" line="84" />
       <source>&lt;b&gt;QMessageBox Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QMessageBox. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation>&lt;b&gt;QMessageBox 向导&lt;/b&gt;&lt;p&gt;该向导打开一个对话框,可以输入创建 QMessageBox 需要的所有参数。产生的代码插入到当前光标位置。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQMessageBox.py" line="133" />
+      <location filename="../Plugins/PluginWizardQMessageBox.py" line="135" />
       <source>No current editor</source>
       <translation>没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQMessageBox.py" line="134" />
+      <location filename="../Plugins/PluginWizardQMessageBox.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -50122,50 +50292,50 @@
   <context>
     <name>MicroPythonFileManager</name>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="291" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="293" />
       <source>The given name '{0}' is not a directory or does not exist.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="298" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="300" />
       <source>{1}Synchronizing &lt;b&gt;{0}&lt;/b&gt;.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="301" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="303" />
       <source>{1}Done synchronizing &lt;b&gt;{0}&lt;/b&gt;.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="429" />
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="349" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="431" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="351" />
       <source>{1}Adding &lt;b&gt;{0}&lt;/b&gt;...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="491" />
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="398" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="493" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="400" />
       <source>Source &lt;b&gt;{0}&lt;/b&gt; is a directory and destination &lt;b&gt;{1}&lt;/b&gt; is a file. Ignoring it.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="500" />
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="407" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="502" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="409" />
       <source>Source &lt;b&gt;{0}&lt;/b&gt; is a file and destination &lt;b&gt;{1}&lt;/b&gt; is a directory. Ignoring it.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="416" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="418" />
       <source>Updating &lt;b&gt;{0}&lt;/b&gt;...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="457" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="459" />
       <source>{1}Removing &lt;b&gt;{0}&lt;/b&gt;...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonFileManager.py" line="509" />
+      <location filename="../MicroPython/MicroPythonFileManager.py" line="511" />
       <source>{1}Updating &lt;b&gt;{0}&lt;/b&gt;...</source>
       <translation type="unfinished" />
     </message>
@@ -50509,15 +50679,16 @@
     </message>
     <message>
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
-      <source>Serial Link</source>
+      <source>Device Communication</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
-      <source>Timeout for Serial Link Communication:</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
+      <source>Serial Link Timeout:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <source>Enter the timout value</source>
       <translation type="unfinished" />
@@ -50525,11 +50696,22 @@
     <message>
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <source> s</source>
       <translation type="unfinished"> 秒</translation>
     </message>
     <message>
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
+      <source>WebRepl Timeout:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
+      <source>Device Time</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <source>Select to synchronize the time after connection is established</source>
       <translation type="unfinished" />
     </message>
@@ -50622,8 +50804,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="354" />
-      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="337" />
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="364" />
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="347" />
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <location filename="../Preferences/ConfigurationPages/MicroPythonPage.ui" line="0" />
       <source>Press to show the password</source>
@@ -50965,8 +51147,8 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="350" />
-      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="333" />
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="360" />
+      <location filename="../Preferences/ConfigurationPages/MicroPythonPage.py" line="343" />
       <source>Press to hide the password</source>
       <translation type="unfinished" />
     </message>
@@ -50980,37 +51162,326 @@
     </message>
   </context>
   <context>
+    <name>MicroPythonReplEdit</name>
+    <message>
+      <location filename="../MicroPython/MicroPythonReplWidget.py" line="322" />
+      <source>Clear</source>
+      <translation type="unfinished">清除</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonReplWidget.py" line="327" />
+      <source>Copy</source>
+      <translation type="unfinished">复制</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonReplWidget.py" line="333" />
+      <source>Paste</source>
+      <translation type="unfinished">粘贴</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonReplWidget.py" line="340" />
+      <source>Select All</source>
+      <translation type="unfinished">全选</translation>
+    </message>
+  </context>
+  <context>
+    <name>MicroPythonWebreplConnectionDialog</name>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="97" />
+      <source>Press to hide the password.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.py" line="101" />
+      <source>Press to show the password.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>WebREPL Connection</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Host:</source>
+      <translation type="unfinished">主机:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Enter the host name or IPv4 address of the device.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Port:</source>
+      <translation type="unfinished">端口:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Enter the port of the WebREPL (empty for default port 8266).</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Password:</source>
+      <translation type="unfinished">密码:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Enter the password for this device connection.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Device Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplConnectionDialog.ui" line="0" />
+      <source>Select the device type</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
+    <name>MicroPythonWebreplDeviceInterface</name>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="80" />
+      <source>WebREPL Password</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="81" />
+      <source>Enter the WebREPL password:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="100" />
+      <source>WebREPL Login</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplDeviceInterface.py" line="101" />
+      <source>The login to the selected device 'webrepl' failed. The given password may be incorrect.</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
+    <name>MicroPythonWebreplParametersDialog</name>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplParametersDialog.ui" line="0" />
+      <source>WebREPL Server Parameters</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplParametersDialog.ui" line="0" />
+      <source>Password (4-9 characters):</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplParametersDialog.ui" line="0" />
+      <source>Enter the password for the device WebREPL server.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplParametersDialog.ui" line="0" />
+      <source>Confirm Password:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplParametersDialog.ui" line="0" />
+      <source>Repeat the WebREPL server password.</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
+    <name>MicroPythonWebreplUrlAddEditDialog</name>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>WebREPL URL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Name:</source>
+      <translation type="unfinished">名称:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Enter a unique name for the WebREPL connection.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Description:</source>
+      <translation type="unfinished">描述:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Enter a short description to be shown in the selector.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Host:</source>
+      <translation type="unfinished">主机:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Enter the host name or IPv4 address of the device.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Port:</source>
+      <translation type="unfinished">端口:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Enter the port of the WebREPL (empty for default port 8266).</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Password:</source>
+      <translation type="unfinished">密码:</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Enter the password for this device connection.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Device Type:</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlAddEditDialog.ui" line="0" />
+      <source>Select the device type</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
+    <name>MicroPythonWebreplUrlsConfigDialog</name>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="138" />
+      <source>Remove Selected WebREPL URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="139" />
+      <source>Shall the selected WebREPL URLs really be removed?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="155" />
+      <source>Remove All WebREPL URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.py" line="156" />
+      <source>Shall all WebREPL URLs really be removed?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>WebREPL URLs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Name</source>
+      <translation type="unfinished">名称</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Description</source>
+      <translation type="unfinished">描述</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>URL</source>
+      <translation type="unfinished">URL</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Press to add a new entry.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Add...</source>
+      <translation type="unfinished">添加…</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Press to edit the selected entry.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Edit...</source>
+      <translation type="unfinished">编辑…</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Press to remove the selected entries.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Remove</source>
+      <translation type="unfinished">移除</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Press to remove all entries.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>Remove All</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWebreplUrlsConfigDialog.ui" line="0" />
+      <source>&lt;b&gt;Note:&lt;/b&gt; The name of an entry must be unique amongst the list.</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>MicroPythonWidget</name>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="247" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="109" />
       <source>MicroPython Menu</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="306" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="145" />
       <source>&lt;h3&gt;The QtSerialPort package is not available.&lt;br/&gt;MicroPython support is deactivated.&lt;/h3&gt;</source>
       <translation type="unfinished" />
     </message>
     <message numerus="yes">
-      <location filename="../MicroPython/MicroPythonWidget.py" line="347" />
-      <source>%n supported device(s) detected.</source>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="173" />
+      <source>%n supported serial device(s) detected.</source>
       <translation type="unfinished">
         <numerusform />
       </translation>
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="361" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="187" />
       <source>{0} - {1} ({2})</source>
       <comment>board name, description, port name</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="381" />
-      <source>No supported devices detected.</source>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="210" />
+      <source>No supported serial devices detected.</source>
       <translation type="unfinished" />
     </message>
     <message numerus="yes">
-      <location filename="../MicroPython/MicroPythonWidget.py" line="385" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="214" />
       <source>
 %n unknown device(s) for manual selection.</source>
       <translation type="unfinished">
@@ -51018,70 +51489,63 @@
       </translation>
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="392" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="221" />
       <source>Manual Selection</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="456" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="427" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="232" />
+      <source>WebREPL (manual)</source>
+      <translation type="unfinished" />
+    </message>
+    <message numerus="yes">
+      <location filename="../MicroPython/MicroPythonWidget.py" line="251" />
+      <source>
+%n WebREPL connection(s) defined.</source>
+      <translation type="unfinished">
+        <numerusform />
+      </translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="311" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="282" />
       <source>Unknown MicroPython Device</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="428" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="283" />
       <source>&lt;p&gt;Detected these unknown serial devices&lt;/p&gt;&lt;ul&gt;&lt;li&gt;{0}&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Please report them together with the board name and a short description to &lt;a href="mailto:{1}"&gt; the eric bug reporting address&lt;/a&gt; if it is a MicroPython board.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="440" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="295" />
       <source>{0} (0x{1:04x}/0x{2:04x})</source>
       <comment>description, VId, PId</comment>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="457" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="312" />
       <source>Would you like to add them to the list of manually configured devices?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="592" />
-      <source>Clear</source>
-      <translation type="unfinished">清除</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="597" />
-      <source>Copy</source>
-      <translation type="unfinished">复制</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="603" />
-      <source>Paste</source>
-      <translation type="unfinished">粘贴</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="610" />
-      <source>Select All</source>
-      <translation type="unfinished">全选</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="636" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="451" />
       <source>Press to disconnect the current device</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../MicroPython/MicroPythonWidget.ui" line="0" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="641" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="456" />
       <source>Press to connect the selected device</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="673" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="488" />
       <source>No device attached</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="674" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="489" />
       <source>Please ensure the device is plugged into your computer and selected.
 
 It must have a version of MicroPython (or CircuitPython) flashed onto it before anything will work.
@@ -51090,353 +51554,358 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="703" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="518" />
       <source>Start REPL</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="704" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="519" />
       <source>&lt;p&gt;The REPL cannot be started.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1232" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1221" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="716" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="705" />
       <source>Serial Device Connect</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1222" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="706" />
       <source>&lt;p&gt;The device at serial port &lt;b&gt;{0}&lt;/b&gt; does not respond. It may not have a MicroPython firmware flashed.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1233" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="717" />
       <source>&lt;p&gt;Cannot connect to device at serial port &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1291" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1282" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1273" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="780" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="771" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="762" />
       <source>Run Script</source>
       <translation type="unfinished">运行脚本</translation>
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1274" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="763" />
       <source>There is no editor open. Abort...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1283" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="772" />
       <source>The current editor does not contain a script. Abort...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1292" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="781" />
       <source>&lt;p&gt;Cannot run script.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1328" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="817" />
       <source>Start Chart</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1329" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="818" />
       <source>&lt;p&gt;The Chart cannot be started.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1344" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="833" />
       <source>µPy Chart</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1361" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="850" />
       <source>Unsaved Chart Data</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1362" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="851" />
       <source>The chart contains unsaved data.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1410" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="899" />
       <source>Start File Manager</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1411" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="900" />
       <source>&lt;p&gt;The File Manager cannot be started.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1431" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="920" />
       <source>µPy Files</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1496" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="985" />
       <source>Downloads</source>
       <translation type="unfinished">下载</translation>
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1543" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1032" />
       <source>Show Version</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1546" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1035" />
       <source>Show Implementation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1549" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1038" />
       <source>Show Board Data</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1735" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1554" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1229" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1043" />
       <source>Synchronize Time</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1557" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1046" />
       <source>Show Device Time</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1559" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1048" />
       <source>Show Local Time</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1051" />
+      <source>Show Time</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1055" />
+      <source>Show Builtin Modules</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1638" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1067" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1059" />
+      <source>Install Package</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1677" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1674" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1063" />
+      <source>Install Packages</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1453" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1073" />
+      <source>Compile Python File</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1477" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1468" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1077" />
+      <source>Compile Current Editor</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1098" />
+      <source>Download Firmware</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1105" />
+      <source>Show Documentation</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1108" />
+      <source>Convert To UF2</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1109" />
+      <source>Flash UF2 Device</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1112" />
+      <source>Manage Unknown Devices</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1115" />
+      <source>Ignored Serial Devices</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1118" />
+      <source>Configure</source>
+      <translation type="unfinished">配置</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1127" />
+      <source>&lt;h3&gt;Device Version Information&lt;/h3&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1138" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1134" />
+      <source>Device Version Information</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1139" />
+      <source>No version information available.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1163" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1155" />
+      <source>unknown</source>
+      <translation type="unfinished">未知</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1169" />
+      <source> ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1185" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1176" />
+      <source>Device Implementation Information</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1177" />
+      <source>&lt;h3&gt;Device Implementation Information&lt;/h3&gt;&lt;p&gt;This device contains &lt;b&gt;{0} {1}{2}&lt;/b&gt;.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1186" />
+      <source>No device implementation information available.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1230" />
+      <source>&lt;p&gt;The time of the connected device was synchronized with the local time.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1252" />
+      <source>&lt;h3&gt;Device Date and Time&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Time&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1260" />
+      <source>&lt;h3&gt;Device Date and Time&lt;/h3&gt;&lt;p&gt;{0}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1276" />
+      <source>Device Date and Time</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1288" />
+      <source>Local Date and Time</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1289" />
+      <source>&lt;h3&gt;Local Date and Time&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Time&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1330" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1313" />
+      <source>Date and Time</source>
+      <translation type="unfinished">日期和时间</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1314" />
+      <source>&lt;table&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Local Date and Time&lt;/th&gt;&lt;th&gt;Device Date and Time&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td align='center'&gt;{0}&lt;/td&gt;&lt;td align='center'&gt;{2}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Time&lt;/b&gt;&lt;/td&gt;&lt;td align='center'&gt;{1}&lt;/td&gt;&lt;td align='center'&gt;{3}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1331" />
+      <source>&lt;table&gt;&lt;tr&gt;&lt;th&gt;Local Date and Time&lt;/th&gt;&lt;th&gt;Device Date and Time&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align='center'&gt;{0} {1}&lt;/td&gt;&lt;td align='center'&gt;{2}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1355" />
+      <source>Error handling device</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1356" />
+      <source>&lt;p&gt;There was an error communicating with the connected device.&lt;/p&gt;&lt;p&gt;Method: {0}&lt;/p&gt;&lt;p&gt;Message: {1}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1398" />
+      <source>The MicroPython cross compiler &lt;b&gt;mpy-cross&lt;/b&gt; cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1424" />
+      <source>Python Files (*.py);;All Files (*)</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1434" />
+      <source>The Python file &lt;b&gt;{0}&lt;/b&gt; does not exist. Aborting...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1443" />
+      <source>'mpy-cross' Output</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1469" />
+      <source>The current editor does not contain a Python file. Aborting...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1561" />
+      <source>Add Unknown Devices</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../MicroPython/MicroPythonWidget.py" line="1562" />
-      <source>Show Time</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1566" />
-      <source>Show Builtin Modules</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2144" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1578" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1570" />
-      <source>Install Package</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2183" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2180" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1574" />
-      <source>Install Packages</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1959" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1584" />
-      <source>Compile Python File</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1983" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1974" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1588" />
-      <source>Compile Current Editor</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1609" />
-      <source>Download Firmware</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1616" />
-      <source>Show Documentation</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1619" />
-      <source>Convert To UF2</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1620" />
-      <source>Flash UF2 Device</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1623" />
-      <source>Manage Unknown Devices</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1626" />
-      <source>Ignored Serial Devices</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1629" />
-      <source>Configure</source>
-      <translation type="unfinished">配置</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1638" />
-      <source>&lt;h3&gt;Device Version Information&lt;/h3&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1649" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1645" />
-      <source>Device Version Information</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1650" />
-      <source>No version information available.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1674" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1666" />
-      <source>unknown</source>
-      <translation type="unfinished">未知</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1680" />
-      <source> ({0})</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1696" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1687" />
-      <source>Device Implementation Information</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1688" />
-      <source>&lt;h3&gt;Device Implementation Information&lt;/h3&gt;&lt;p&gt;This device contains &lt;b&gt;{0} {1}{2}&lt;/b&gt;.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1697" />
-      <source>No device implementation information available.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1736" />
-      <source>&lt;p&gt;The time of the connected device was synchronized with the local time.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1758" />
-      <source>&lt;h3&gt;Device Date and Time&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Time&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1766" />
-      <source>&lt;h3&gt;Device Date and Time&lt;/h3&gt;&lt;p&gt;{0}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1782" />
-      <source>Device Date and Time</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1794" />
-      <source>Local Date and Time</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1795" />
-      <source>&lt;h3&gt;Local Date and Time&lt;/h3&gt;&lt;table&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Time&lt;/b&gt;&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1836" />
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1819" />
-      <source>Date and Time</source>
-      <translation type="unfinished">日期和时间</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1820" />
-      <source>&lt;table&gt;&lt;tr&gt;&lt;th&gt;&lt;/th&gt;&lt;th&gt;Local Date and Time&lt;/th&gt;&lt;th&gt;Device Date and Time&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Date&lt;/b&gt;&lt;/td&gt;&lt;td align='center'&gt;{0}&lt;/td&gt;&lt;td align='center'&gt;{2}&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;&lt;b&gt;Time&lt;/b&gt;&lt;/td&gt;&lt;td align='center'&gt;{1}&lt;/td&gt;&lt;td align='center'&gt;{3}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1837" />
-      <source>&lt;table&gt;&lt;tr&gt;&lt;th&gt;Local Date and Time&lt;/th&gt;&lt;th&gt;Device Date and Time&lt;/th&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td align='center'&gt;{0} {1}&lt;/td&gt;&lt;td align='center'&gt;{2}&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1861" />
-      <source>Error handling device</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1862" />
-      <source>&lt;p&gt;There was an error communicating with the connected device.&lt;/p&gt;&lt;p&gt;Method: {0}&lt;/p&gt;&lt;p&gt;Message: {1}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1904" />
-      <source>The MicroPython cross compiler &lt;b&gt;mpy-cross&lt;/b&gt; cannot be found. Ensure it is in the search path or configure it on the MicroPython configuration page.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1930" />
-      <source>Python Files (*.py);;All Files (*)</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1940" />
-      <source>The Python file &lt;b&gt;{0}&lt;/b&gt; does not exist. Aborting...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1949" />
-      <source>'mpy-cross' Output</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="1975" />
-      <source>The current editor does not contain a Python file. Aborting...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2067" />
-      <source>Add Unknown Devices</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2068" />
       <source>Select the devices to be added:</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2117" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1611" />
       <source>Plus any modules on the filesystem.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2169" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1663" />
       <source>Package '{0}' was installed successfully.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/MicroPythonWidget.py" line="2184" />
+      <location filename="../MicroPython/MicroPythonWidget.py" line="1678" />
       <source>Enter the packages to be installed separated by whitespace:</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../MicroPython/MicroPythonWidget.ui" line="0" />
-      <source>Press to check for connected devices</source>
+      <source>Press to detect connected devices and repopulate the device selector.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/MicroPythonWidget.ui" line="0" />
+      <source>Press to edit the list of configured WebREPL connections.</source>
       <translation type="unfinished" />
     </message>
     <message>
@@ -51459,6 +51928,28 @@
       <source>Press to open a chart window to display data receive from the selected device</source>
       <translation type="unfinished" />
     </message>
+    <message numerus="yes">
+      <source>%n supported device(s) detected.</source>
+      <translation type="vanished">
+        <numerusform />
+      </translation>
+    </message>
+    <message>
+      <source>Clear</source>
+      <translation type="vanished">清除</translation>
+    </message>
+    <message>
+      <source>Copy</source>
+      <translation type="vanished">复制</translation>
+    </message>
+    <message>
+      <source>Paste</source>
+      <translation type="vanished">粘贴</translation>
+    </message>
+    <message>
+      <source>Select All</source>
+      <translation type="vanished">全选</translation>
+    </message>
   </context>
   <context>
     <name>MicrobitDevice</name>
@@ -51622,29 +52113,29 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="569" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="571" />
       <source>MicroPython Firmware for BBC micro:bit V1</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="601" />
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="588" />
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="573" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="603" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="590" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="575" />
       <source>DAPLink Firmware</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="580" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="582" />
       <source>MicroPython Firmware for BBC micro:bit V2</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="584" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="586" />
       <source>CircuitPython Firmware for BBC micro:bit V2</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="597" />
+      <location filename="../MicroPython/Devices/MicrobitDevices.py" line="599" />
       <source>MicroPython Firmware</source>
       <translation type="unfinished" />
     </message>
@@ -52831,282 +53322,312 @@
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="210" />
-      <source>Do not use 'except (){0}:', it also catches unexpected events. Prefer 'except Exception:'.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="215" />
+      <source>Do not use bare 'except:', it also catches unexpected events like memory errors, interrupts, system exit, and so on. Prefer 'except Exception:'. If you're sure what you're doing, be explicit and write 'except BaseException:'.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="217" />
       <source>Python does not support the unary prefix increment</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="218" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="220" />
       <source>assigning to 'os.environ' does not clear the environment - use 'os.environ.clear()'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="223" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="225" />
       <source>using 'hasattr(x, "__call__")' to test if 'x' is callable is unreliable. Use 'callable(x)' for consistent results.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="228" />
-      <source>using .strip() with multi-character strings is misleading. Use .replace() or regular expressions to remove string fragments.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="233" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="230" />
+      <source>using .strip() with multi-character strings is misleading. Use .replace(), .removeprefix(), .removesuffix(), or regular expressions to remove string fragments.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="236" />
       <source>loop control variable {0} not used within the loop body - start the name with an underscore</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="238" />
-      <source>do not call getattr with a constant attribute value</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="241" />
-      <source>do not call setattr with a constant attribute value</source>
+      <source>do not call getattr with a constant attribute value</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="244" />
+      <source>do not call setattr with a constant attribute value</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="247" />
       <source>do not call assert False since python -O removes these calls</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="248" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="251" />
       <source>return/continue/break inside finally blocks cause exceptions to be silenced. Exceptions should be silenced in except blocks. Control statements can be moved outside the finally block.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="254" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="257" />
       <source>A length-one tuple literal is redundant. Write 'except {0}:' instead of 'except ({0},):'.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="259" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="262" />
       <source>Redundant exception types in 'except ({0}){1}:'. Write 'except {2}{1}:', which catches exactly the same exceptions.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="264" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="267" />
       <source>Result of comparison is not used. This line doesn't do anything. Did you intend to prepend it with assert?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="269" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="272" />
       <source>Cannot raise a literal. Did you intend to return it or raise an Exception?</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="273" />
-      <source>'assertRaises(Exception):' should be considered evil. It can lead to your test passing even if the code being tested is never executed due to a typo. Either assert for a more specific exception (builtin or custom), use 'assertRaisesRegex', or use the context manager form of 'assertRaises'.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="280" />
-      <source>Found useless expression. Consider either assigning it to a variable or removing it.</source>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="276" />
+      <source>'assertRaises(Exception)' and 'pytest.raises(Exception)' should be considered evil. They can lead to your test passing even if the code being tested is never executed due to a typo. Assert for a more specific exception (builtin or custom), or use 'assertRaisesRegex' (if using 'assertRaises'), or add the 'match' keyword argument (if using 'pytest.raises'), or use the context manager form with a target.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="285" />
+      <source>Found useless expression. Consider either assigning it to a variable or removing it.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="290" />
       <source>Use of 'functools.lru_cache' or 'functools.cache' on methods can lead to memory leaks. The cache may retain instance references, preventing garbage collection.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="291" />
-      <source>Found for loop that reassigns the iterable it is iterating with each iterable value.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="296" />
-      <source>f-string used as docstring. This will be interpreted by python as a joined string rather than a docstring.</source>
+      <source>Found for loop that reassigns the iterable it is iterating with each iterable value.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="301" />
-      <source>No arguments passed to 'contextlib.suppress'. No exceptions will be suppressed and therefore this context manager is redundant.</source>
+      <source>f-string used as docstring. This will be interpreted by python as a joined string rather than a docstring.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="306" />
+      <source>No arguments passed to 'contextlib.suppress'. No exceptions will be suppressed and therefore this context manager is redundant.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="311" />
       <source>Function definition does not bind loop variable '{0}'.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="310" />
-      <source>{0} is an abstract base class, but it has no abstract methods. Remember to use the @abstractmethod decorator, potentially in conjunction with @classmethod, @property and/or @staticmethod.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="316" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="315" />
+      <source>{0} is an abstract base class, but none of the methods it defines are abstract. This is not necessarily an error, but you might have forgotten to add the @abstractmethod decorator, potentially in conjunction with @classmethod, @property and/or @staticmethod.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="322" />
       <source>Exception '{0}' has been caught multiple times. Only the first except will be considered and all other except catches can be safely removed.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="321" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="327" />
       <source>Star-arg unpacking after a keyword argument is strongly discouraged, because it only works when the keyword parameter is declared after all parameters supplied by the unpacked sequence, and this change of ordering can surprise and mislead readers.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="328" />
-      <source>{0} is an empty method in an abstract base class, but has no abstract decorator. Consider adding @abstractmethod.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="333" />
-      <source>unncessary f-string</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="334" />
-      <source>cannot use 'self.__class__' as first argument of 'super()' call</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="338" />
-      <source>found {0} formatter</source>
+      <source>{0} is an empty method in an abstract base class, but has no abstract decorator. Consider adding @abstractmethod.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="339" />
-      <source>format string does contain unindexed parameters</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="342" />
-      <source>docstring does contain unindexed parameters</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="345" />
-      <source>other string does contain unindexed parameters</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="348" />
-      <source>format call uses too large index ({0})</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="351" />
-      <source>format call uses missing keyword ({0})</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="354" />
-      <source>format call uses keyword arguments but no named entries</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="358" />
-      <source>format call uses variable arguments but no numbered entries</source>
+      <source>No explicit stacklevel argument found. The warn method from the warnings module uses a stacklevel of 1 by default. This will only show a stack trace for the line on which the warn method is called. It is therefore recommended to use a stacklevel of 2 or greater to provide more information to the user.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="347" />
+      <source>Using 'except ():' with an empty tuple does not handle/catch anything. Add exceptions to handle.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="352" />
+      <source>Except handlers should only be names of exception classes</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="356" />
+      <source>Using the generator returned from 'itertools.groupby()' more than once will do nothing on the second usage. Save the result to a list, if the result is needed multiple times.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="362" />
-      <source>format call uses implicit and explicit indexes together</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="366" />
-      <source>format call provides unused index ({0})</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="369" />
-      <source>format call provides unused keyword ({0})</source>
+      <source>Possible unintentional type annotation (using ':'). Did you mean to assign (using '=')?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="367" />
+      <source>Sets should not contain duplicate items. Duplicate items will be replaced with a single item at runtime.</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="372" />
-      <source>logging statement uses string.format()</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="375" />
-      <source>logging statement uses '%'</source>
+      <source>unncessary f-string</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="373" />
+      <source>cannot use 'self.__class__' as first argument of 'super()' call</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="377" />
+      <source>found {0} formatter</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="378" />
-      <source>logging statement uses '+'</source>
+      <source>format string does contain unindexed parameters</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="381" />
-      <source>logging statement uses f-string</source>
+      <source>docstring does contain unindexed parameters</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="384" />
-      <source>logging statement uses 'warn' instead of 'warning'</source>
+      <source>other string does contain unindexed parameters</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="387" />
-      <source>expected these __future__ imports: {0}; but only got: {1}</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="391" />
-      <source>expected these __future__ imports: {0}; but got none</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="394" />
-      <source>gettext import with alias _ found: {0}</source>
+      <source>format call uses too large index ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="390" />
+      <source>format call uses missing keyword ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="393" />
+      <source>format call uses keyword arguments but no named entries</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="397" />
-      <source>print statement found</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="398" />
-      <source>one element tuple found</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="404" />
+      <source>format call uses variable arguments but no numbered entries</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="401" />
-      <source>mutable default argument of type {0}</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="407" />
-      <source>mutable default argument of function call '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="410" />
-      <source>None should not be added at any return if function has no return value except None</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="415" />
-      <source>an explicit value at every return should be added if function has a return value except None</source>
+      <source>format call uses implicit and explicit indexes together</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="405" />
+      <source>format call provides unused index ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="408" />
+      <source>format call provides unused keyword ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="411" />
+      <source>logging statement uses string.format()</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="414" />
+      <source>logging statement uses '%'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="417" />
+      <source>logging statement uses '+'</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="420" />
-      <source>an explicit return at the end of the function should be added if it has a return value except None</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="425" />
-      <source>a value should not be assigned to a variable if it will be used as a return value only</source>
+      <source>logging statement uses f-string</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="423" />
+      <source>logging statement uses 'warn' instead of 'warning'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="426" />
+      <source>expected these __future__ imports: {0}; but only got: {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="430" />
+      <source>expected these __future__ imports: {0}; but got none</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="433" />
+      <source>gettext import with alias _ found: {0}</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="436" />
+      <source>print statement found</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="437" />
+      <source>one element tuple found</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="443" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="440" />
+      <source>mutable default argument of type {0}</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="446" />
+      <source>mutable default argument of function call '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="449" />
+      <source>None should not be added at any return if function has no return value except None</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="454" />
+      <source>an explicit value at every return should be added if function has a return value except None</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="459" />
+      <source>an explicit return at the end of the function should be added if it has a return value except None</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="464" />
+      <source>a value should not be assigned to a variable if it will be used as a return value only</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="469" />
       <source>prefer implied line continuation inside parentheses, brackets and braces as opposed to a backslash</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="435" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Miscellaneous/translations.py" line="474" />
       <source>commented code lines should be removed</source>
       <translation type="unfinished" />
     </message>
@@ -53606,6 +54127,34 @@
     </message>
   </context>
   <context>
+    <name>NameOrderChecker</name>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/NameOrder/translations.py" line="14" />
+      <source>Import statements are in the wrong order. '{0}' should be before '{1}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/NameOrder/translations.py" line="18" />
+      <source>Imported names are in the wrong order. Should be '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/NameOrder/translations.py" line="21" />
+      <source>Import statements should be combined. '{0}' should be combined with '{1}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/NameOrder/translations.py" line="25" />
+      <source>The names in __all__ are in the wrong order. The order should be '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/NameOrder/translations.py" line="29" />
+      <source>The names in the exception handler list are in the wrong order. The order should be '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>NamingStyleChecker</name>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Naming/translations.py" line="15" />
@@ -56090,7 +56639,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PdfViewer/PdfZoomSelector.py" line="115" />
+      <location filename="../PdfViewer/PdfZoomSelector.py" line="116" />
       <location filename="../PdfViewer/PdfZoomSelector.py" line="62" />
       <source>{0}%</source>
       <translation type="unfinished" />
@@ -57960,32 +58509,32 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="372" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="384" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not contain a 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="382" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="394" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; does not conform with the PyQt v2 API. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="397" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="409" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="411" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="423" />
       <source>&lt;p&gt;The plugin module &lt;b&gt;{0}&lt;/b&gt; exists. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="490" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="502" />
       <source>Error installing plugin. Reason: {0}</source>
       <translation>安装插件出错。原因:{0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginInstallDialog.py" line="496" />
+      <location filename="../PluginManager/PluginInstallDialog.py" line="508" />
       <source>Unspecific exception installing plugin.</source>
       <translation>安装插件未指定异常。</translation>
     </message>
@@ -57993,52 +58542,52 @@
   <context>
     <name>PluginManager</name>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="218" />
+      <location filename="../PluginManager/PluginManager.py" line="219" />
       <source>Could not create a package for {0}.</source>
       <translation>无法为 {0} 创建包。</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="250" />
+      <location filename="../PluginManager/PluginManager.py" line="251" />
       <source>The internal plugin directory &lt;b&gt;{0}&lt;/b&gt; does not exits.</source>
       <translation>内置的插件目录 &lt;b&gt;{0}&lt;/b&gt; 不存在。</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="422" />
+      <location filename="../PluginManager/PluginManager.py" line="423" />
       <source>Module is missing the 'autoactivate' attribute.</source>
       <translation>模块丢失“autoactivate”属性。</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="433" />
+      <location filename="../PluginManager/PluginManager.py" line="434" />
       <source>Module is missing the 'pluginType' and/or 'pluginTypename' attributes.</source>
       <translation>模块丢失“pluginType”和/或“pluginTypename”属性。</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="461" />
+      <location filename="../PluginManager/PluginManager.py" line="462" />
       <source>Module failed to load. Error: {0}</source>
       <translation>模块加载失败。错误:{0}</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="636" />
+      <location filename="../PluginManager/PluginManager.py" line="637" />
       <source>Incompatible plugin activation method.</source>
       <translation>插件激活方法不兼容。</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="1219" />
+      <location filename="../PluginManager/PluginManager.py" line="1222" />
       <source>Plugin Manager Error</source>
       <translation>插件管理错误</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="1220" />
+      <location filename="../PluginManager/PluginManager.py" line="1223" />
       <source>&lt;p&gt;The plugin download directory &lt;b&gt;{0}&lt;/b&gt; could not be created. Please configure it via the configuration dialog.&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="../PluginManager/PluginManager.py" line="1307" />
+      <location filename="../PluginManager/PluginManager.py" line="1310" />
       <source>Error downloading file</source>
       <translation>下载文件出错</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginManager.py" line="1308" />
+      <location filename="../PluginManager/PluginManager.py" line="1311" />
       <source>&lt;p&gt;Could not download the requested file from {0}.&lt;/p&gt;&lt;p&gt;Error: {1}&lt;/p&gt;</source>
       <translation>&lt;p&gt;无法从 {0} 下载指定文件。&lt;/p&gt;&lt;p&gt;错误:{1}&lt;/p&gt;</translation>
     </message>
@@ -58577,42 +59126,42 @@
   <context>
     <name>PluginUninstallWidget</name>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="57" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="58" />
       <source>User plugins directory</source>
       <translation>用户插件文件夹</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="63" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="64" />
       <source>Global plugins directory</source>
       <translation>全局插件文件夹</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="237" />
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="227" />
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="214" />
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="156" />
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="140" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="241" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="231" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="218" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="157" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="141" />
       <source>Plugin Uninstallation</source>
       <translation>插件卸载</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="141" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="142" />
       <source>&lt;p&gt;The plugin &lt;b&gt;{0}&lt;/b&gt; could not be unloaded. Aborting...&lt;/p&gt;</source>
       <translation>&lt;p&gt;插件 &lt;b&gt;{0}&lt;/b&gt; 无法反加载。放弃操作…&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="157" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="158" />
       <source>&lt;p&gt;The plugin &lt;b&gt;{0}&lt;/b&gt; has no 'packageName' attribute. Aborting...&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="215" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="219" />
       <source>&lt;p&gt;The plugin package &lt;b&gt;{0}&lt;/b&gt; could not be removed. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="238" />
-      <location filename="../PluginManager/PluginUninstallDialog.py" line="228" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="242" />
+      <location filename="../PluginManager/PluginUninstallDialog.py" line="232" />
       <source>&lt;p&gt;The plugin &lt;b&gt;{0}&lt;/b&gt; was uninstalled successfully from {1}.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -58878,18 +59427,18 @@
   <context>
     <name>Preferences</name>
     <message>
-      <location filename="../Preferences/__init__.py" line="1815" />
+      <location filename="../Preferences/__init__.py" line="1822" />
       <source>Export Preferences</source>
       <translation>导出首选项</translation>
     </message>
     <message>
-      <location filename="../Preferences/__init__.py" line="1844" />
-      <location filename="../Preferences/__init__.py" line="1817" />
+      <location filename="../Preferences/__init__.py" line="1851" />
+      <location filename="../Preferences/__init__.py" line="1824" />
       <source>Properties File (*.ini);;All Files (*)</source>
       <translation>属性文件 (*.ini);;所有文件 (*)</translation>
     </message>
     <message>
-      <location filename="../Preferences/__init__.py" line="1842" />
+      <location filename="../Preferences/__init__.py" line="1849" />
       <source>Import Preferences</source>
       <translation>导入首选项</translation>
     </message>
@@ -61360,22 +61909,22 @@
   <context>
     <name>ProjectFile</name>
     <message>
-      <location filename="../Project/ProjectFile.py" line="109" />
+      <location filename="../Project/ProjectFile.py" line="99" />
       <source>Save Project File</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFile.py" line="110" />
+      <location filename="../Project/ProjectFile.py" line="100" />
       <source>&lt;p&gt;The project 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="../Project/ProjectFile.py" line="135" />
+      <location filename="../Project/ProjectFile.py" line="125" />
       <source>Read Project File</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Project/ProjectFile.py" line="136" />
+      <location filename="../Project/ProjectFile.py" line="126" />
       <source>&lt;p&gt;The project file &lt;b&gt;{0}&lt;/b&gt; could not be read.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -64383,28 +64932,28 @@
   <context>
     <name>PyRegExpWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardPyRegExp.py" line="80" />
-      <location filename="../Plugins/PluginWizardPyRegExp.py" line="73" />
+      <location filename="../Plugins/PluginWizardPyRegExp.py" line="82" />
+      <location filename="../Plugins/PluginWizardPyRegExp.py" line="75" />
       <source>Python re Wizard</source>
       <translation>Python 正则向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardPyRegExp.py" line="74" />
+      <location filename="../Plugins/PluginWizardPyRegExp.py" line="76" />
       <source>Python re Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardPyRegExp.py" line="82" />
+      <location filename="../Plugins/PluginWizardPyRegExp.py" line="84" />
       <source>&lt;b&gt;Python re Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a Python re string. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation>&lt;b&gt;Python 正则向导&lt;/b&gt;&lt;p&gt;该向导打开一个对话框,可输入创建 Python 正则字符串所需的所有参数。生成的代码插入到当前光标位置。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardPyRegExp.py" line="133" />
+      <location filename="../Plugins/PluginWizardPyRegExp.py" line="135" />
       <source>No current editor</source>
       <translation>没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardPyRegExp.py" line="134" />
+      <location filename="../Plugins/PluginWizardPyRegExp.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -66102,28 +66651,28 @@
   <context>
     <name>QRegularExpressionWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="80" />
-      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="73" />
+      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="82" />
+      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="75" />
       <source>QRegularExpression Wizard</source>
       <translation>QRegularExpression 向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="74" />
+      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="76" />
       <source>QRegularExpression Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="82" />
+      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="84" />
       <source>&lt;b&gt;QRegularExpression Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create a QRegularExpression string. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="133" />
+      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="135" />
       <source>No current editor</source>
       <translation type="unfinished">没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="134" />
+      <location filename="../Plugins/PluginWizardQRegularExpression.py" line="136" />
       <source>Please open or create a file first.</source>
       <translation>请您先打开或创建一个文件。</translation>
     </message>
@@ -69301,88 +69850,93 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="364" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="365" />
       <source>MicroPython Firmware</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="368" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="369" />
       <source>Pimoroni Pico Firmware</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="371" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="372" />
       <source>CircuitPython Firmware</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="375" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="376" />
       <source>CircuitPython Libraries</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="427" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="428" />
       <source>Set Country</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="983" />
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="618" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="978" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="617" />
       <source>unknown ({0})</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1093" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1088" />
       <source>Pico Wireless does not support setting the IPv4 parameters of the WiFi access point.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1168" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1161" />
       <source>Pico Wireless does not support reporting of connected clients.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1259" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1215" />
+      <source>WebREPL is not supported on this device.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1341" />
       <source>Active</source>
       <translation type="unfinished">活动的</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1260" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1342" />
       <source>Connected</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1263" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1345" />
       <source>Status</source>
       <translation type="unfinished">状态</translation>
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1267" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1349" />
       <source>Hostname</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1268" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1350" />
       <source>IPv4 Address</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1269" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1351" />
       <source>Netmask</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1270" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1352" />
       <source>Gateway</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1271" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1353" />
       <source>DNS</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1272" />
+      <location filename="../MicroPython/Devices/RP2040Devices.py" line="1354" />
       <source>MAC-Address</source>
       <translation type="unfinished" />
     </message>
@@ -70227,7 +70781,7 @@
   <context>
     <name>SearchReplaceWidget</name>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="64" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="65" />
       <source>&lt;b&gt;Find and Replace&lt;/b&gt;
 &lt;p&gt;This dialog is used to find some text and replace it with another text.
 By checking the various checkboxes, the search can be made more specific.
@@ -70237,7 +70791,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="72" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="73" />
       <source>&lt;table border="0"&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;.&lt;/code&gt;&lt;/td&gt;&lt;td&gt;Matches any character&lt;/td&gt;&lt;/tr&gt;
 &lt;tr&gt;&lt;td&gt;&lt;code&gt;(&lt;/code&gt;&lt;/td&gt;&lt;td&gt;This marks the start of a region for tagging a
@@ -70286,49 +70840,74 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="151" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="150" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="155" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="154" />
       <source>Find Next</source>
       <translation>查找下一个</translation>
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="164" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="163" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="168" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="167" />
       <source>Find Prev</source>
       <translation>查找上一个</translation>
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="177" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="176" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="181" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="180" />
       <source>Replace and Search</source>
       <translation>替换和搜索</translation>
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="191" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="190" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="195" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="194" />
       <source>Replace Occurrence</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="205" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="204" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="209" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="208" />
       <source>Replace All</source>
       <translation>替换全部</translation>
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="1045" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="597" />
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="559" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="297" />
+      <source>Press to find the next occurrence ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="304" />
+      <source>Press to find the previous occurrence ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="311" />
+      <source>Press to replace the selection and search for the next occurence ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="321" />
+      <source>Press to replace the selection ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="328" />
+      <source>Press to replace all occurrences ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="1114" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="665" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="627" />
       <source>'{0}' was not found.</source>
       <translation>“{0}”未找到。</translation>
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="1198" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="1267" />
       <source>Replaced {0} occurrences.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../QScintilla/SearchReplaceWidget.py" line="1204" />
+      <location filename="../QScintilla/SearchReplaceWidget.py" line="1273" />
       <source>Nothing replaced because '{0}' was not found.</source>
       <translation type="unfinished" />
     </message>
@@ -71253,60 +71832,60 @@
   <context>
     <name>SetupWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="90" />
-      <location filename="../Plugins/PluginWizardSetup.py" line="83" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="92" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="85" />
       <source>setup.py Wizard</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="84" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="86" />
       <source>setup.py Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="92" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="94" />
       <source>&lt;b&gt;setup.py Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.py file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="112" />
-      <location filename="../Plugins/PluginWizardSetup.py" line="105" />
-      <source>setup.cfg Wizard</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="106" />
-      <source>setup.cfg Wizard...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/PluginWizardSetup.py" line="114" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="107" />
+      <source>setup.cfg Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="108" />
+      <source>setup.cfg Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="116" />
       <source>&lt;b&gt;setup.cfg Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a setup.cfg file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="134" />
-      <location filename="../Plugins/PluginWizardSetup.py" line="127" />
-      <source>pyproject.toml Wizard</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="128" />
-      <source>pyproject.toml Wizard...</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/PluginWizardSetup.py" line="136" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="129" />
+      <source>pyproject.toml Wizard</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="130" />
+      <source>pyproject.toml Wizard...</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/PluginWizardSetup.py" line="138" />
       <source>&lt;b&gt;pyproject.toml Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of a pyproject.toml file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="173" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="175" />
       <source>No current editor</source>
       <translation type="unfinished">没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardSetup.py" line="174" />
+      <location filename="../Plugins/PluginWizardSetup.py" line="176" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">请您先打开或创建一个文件。</translation>
     </message>
@@ -73242,6 +73821,7 @@
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Simplify/translations.py" line="175" />
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Simplify/translations.py" line="166" />
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Simplify/translations.py" line="163" />
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Simplify/translations.py" line="157" />
@@ -75155,53 +75735,53 @@
   <context>
     <name>StartDialog</name>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="154" />
+      <location filename="../Debugger/StartDialog.py" line="155" />
       <source>Python Files (*.py *.py3);;Python GUI Files (*.pyw *.pyw3);;All Files (*)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="172" />
+      <location filename="../Debugger/StartDialog.py" line="173" />
       <source>Clear Histories</source>
       <translation>清除历史</translation>
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="388" />
-      <location filename="../Debugger/StartDialog.py" line="175" />
+      <location filename="../Debugger/StartDialog.py" line="393" />
+      <location filename="../Debugger/StartDialog.py" line="176" />
       <source>Edit History</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="215" />
+      <location filename="../Debugger/StartDialog.py" line="216" />
       <source>Enter the list of programs or program patterns not to be debugged separated by '{0}'.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="371" />
+      <location filename="../Debugger/StartDialog.py" line="376" />
       <source>Script Name</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="372" />
+      <location filename="../Debugger/StartDialog.py" line="377" />
       <source>Script Parameters</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="373" />
+      <location filename="../Debugger/StartDialog.py" line="378" />
       <source>Working Directory</source>
       <translation type="unfinished">工作文件夹</translation>
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="374" />
+      <location filename="../Debugger/StartDialog.py" line="379" />
       <source>Environment</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/StartDialog.py" line="384" />
-      <source>No Debug Programs</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Debugger/StartDialog.py" line="389" />
+      <source>No Debug Programs</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Debugger/StartDialog.py" line="394" />
       <source>Select the history list to be edited:</source>
       <translation type="unfinished" />
     </message>
@@ -82414,28 +82994,28 @@
   <context>
     <name>SyntaxCheckerPlugin</name>
     <message>
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="285" />
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="203" />
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="184" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="287" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="205" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="186" />
       <source>Check Syntax</source>
       <translation>检查语法</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="285" />
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="203" />
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="185" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="287" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="205" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="187" />
       <source>&amp;Syntax...</source>
       <translation>语法(&amp;S)…</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="191" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="193" />
       <source>Check syntax.</source>
       <translation>检查语法。</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="288" />
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="206" />
-      <location filename="../Plugins/PluginSyntaxChecker.py" line="193" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="290" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="208" />
+      <location filename="../Plugins/PluginSyntaxChecker.py" line="195" />
       <source>&lt;b&gt;Check Syntax...&lt;/b&gt;&lt;p&gt;This checks Python files for syntax errors.&lt;/p&gt;</source>
       <translation>&lt;b&gt;检查语法…&lt;/b&gt;&lt;p&gt;检查 Python 文件的语法错误。&lt;/p&gt;</translation>
     </message>
@@ -83513,7 +84093,7 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/TeensyDevices.py" line="315" />
+      <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" />
       <location filename="../MicroPython/Devices/TeensyDevices.py" line="154" />
       <source>Flash MicroPython Firmware</source>
       <translation type="unfinished" />
@@ -83554,17 +84134,17 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/TeensyDevices.py" line="316" />
+      <location filename="../MicroPython/Devices/TeensyDevices.py" line="317" />
       <source>&lt;p&gt;Teensy 4.0 and Teensy 4.1 are flashed using the 'Teensy Loader' application. Make sure you downloaded the MicroPython or CircuitPython .hex file.&lt;/p&gt;&lt;p&gt;See &lt;a href="{0}"&gt;the PJRC Teensy web site&lt;/a&gt; for details.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/Devices/TeensyDevices.py" line="338" />
-      <source>Start 'Teensy Loader'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MicroPython/Devices/TeensyDevices.py" line="339" />
+      <source>Start 'Teensy Loader'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/Devices/TeensyDevices.py" line="340" />
       <source>&lt;p&gt;The 'Teensy Loader' application &lt;b&gt;teensy&lt;/b&gt; could not be started. Ensure it is in the application search path or start it manually.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -84013,19 +84593,19 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestResultsTree.py" line="392" />
+      <location filename="../Testing/TestResultsTree.py" line="400" />
       <source>No results to show</source>
       <translation type="unfinished" />
     </message>
     <message numerus="yes">
-      <location filename="../Testing/TestResultsTree.py" line="403" />
+      <location filename="../Testing/TestResultsTree.py" line="411" />
       <source>Collected %n test(s)</source>
       <translation type="unfinished">
         <numerusform />
       </translation>
     </message>
     <message numerus="yes">
-      <location filename="../Testing/TestResultsTree.py" line="405" />
+      <location filename="../Testing/TestResultsTree.py" line="413" />
       <source>%n test(s)/subtest(s) total, {0} failed, {1} passed, {2} skipped, {3} pending</source>
       <translation type="unfinished">
         <numerusform />
@@ -84035,29 +84615,29 @@
   <context>
     <name>TestResultsTreeView</name>
     <message>
-      <location filename="../Testing/TestResultsTree.py" line="591" />
+      <location filename="../Testing/TestResultsTree.py" line="597" />
       <source>Collapse</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestResultsTree.py" line="593" />
+      <location filename="../Testing/TestResultsTree.py" line="599" />
       <source>Expand</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestResultsTree.py" line="598" />
+      <location filename="../Testing/TestResultsTree.py" line="604" />
       <source>Show Source</source>
       <translation type="unfinished">显示源代码</translation>
     </message>
     <message>
-      <location filename="../Testing/TestResultsTree.py" line="616" />
-      <location filename="../Testing/TestResultsTree.py" line="603" />
+      <location filename="../Testing/TestResultsTree.py" line="622" />
+      <location filename="../Testing/TestResultsTree.py" line="609" />
       <source>Collapse All</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestResultsTree.py" line="617" />
-      <location filename="../Testing/TestResultsTree.py" line="604" />
+      <location filename="../Testing/TestResultsTree.py" line="623" />
+      <location filename="../Testing/TestResultsTree.py" line="610" />
       <source>Expand All</source>
       <translation type="unfinished" />
     </message>
@@ -84364,87 +84944,87 @@
       <translation type="unfinished">正在运行</translation>
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="637" />
+      <location filename="../Testing/TestingWidget.py" line="639" />
       <source>Python3 Files ({0});;All Files (*)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="642" />
+      <location filename="../Testing/TestingWidget.py" line="644" />
       <source>Python Files (*.py);;All Files (*)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="800" />
+      <location filename="../Testing/TestingWidget.py" line="802" />
       <source>&lt;h3&gt;Versions of Frameworks and their Plugins&lt;/h3&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="814" />
+      <location filename="../Testing/TestingWidget.py" line="816" />
       <source>&lt;tr&gt;&lt;td&gt;{0}&lt;/td&gt;&lt;td&gt;{1}&lt;/td&gt;&lt;/tr&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="823" />
+      <location filename="../Testing/TestingWidget.py" line="825" />
       <source>No version information available.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="826" />
+      <location filename="../Testing/TestingWidget.py" line="828" />
       <source>Versions</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="863" />
+      <location filename="../Testing/TestingWidget.py" line="865" />
       <source>Preparing Testsuite</source>
       <translation type="unfinished">准备测试套件</translation>
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="926" />
+      <location filename="../Testing/TestingWidget.py" line="928" />
       <source>pending</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="954" />
+      <location filename="../Testing/TestingWidget.py" line="957" />
       <source>Failure</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="964" />
-      <location filename="../Testing/TestingWidget.py" line="957" />
+      <location filename="../Testing/TestingWidget.py" line="967" />
+      <location filename="../Testing/TestingWidget.py" line="960" />
       <source>Collection Error</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="965" />
+      <location filename="../Testing/TestingWidget.py" line="968" />
       <source>&lt;p&gt;There was an error while collecting tests.&lt;/p&gt;&lt;p&gt;{0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="986" />
+      <location filename="../Testing/TestingWidget.py" line="990" />
       <source>running</source>
       <translation type="unfinished">运行中</translation>
     </message>
     <message numerus="yes">
-      <location filename="../Testing/TestingWidget.py" line="1037" />
+      <location filename="../Testing/TestingWidget.py" line="1041" />
       <source>Ran %n test(s) in {0}s</source>
       <translation type="unfinished">
         <numerusform />
       </translation>
     </message>
     <message numerus="yes">
-      <location filename="../Testing/TestingWidget.py" line="1049" />
+      <location filename="../Testing/TestingWidget.py" line="1053" />
       <source>Ran %n test(s)</source>
       <translation type="unfinished">
         <numerusform />
       </translation>
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="1070" />
+      <location filename="../Testing/TestingWidget.py" line="1074" />
       <source>not run</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Testing/TestingWidget.py" line="1113" />
+      <location filename="../Testing/TestingWidget.py" line="1117" />
       <source>Test Run Output</source>
       <translation type="unfinished" />
     </message>
@@ -85766,7 +86346,7 @@
   <context>
     <name>TranslatorPlugin</name>
     <message>
-      <location filename="../Plugins/PluginTranslator.py" line="72" />
+      <location filename="../Plugins/PluginTranslator.py" line="74" />
       <source>Translator</source>
       <translation type="unfinished" />
     </message>
@@ -87034,6 +87614,20 @@
     </message>
   </context>
   <context>
+    <name>UnusedChecker</name>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Unused/translations.py" line="15" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Unused/translations.py" line="14" />
+      <source>Unused argument '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/Unused/translations.py" line="17" />
+      <source>Unused global variable '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+  </context>
+  <context>
     <name>UrlBar</name>
     <message>
       <location filename="../WebBrowser/UrlBar/UrlBar.py" line="46" />
@@ -89814,7 +90408,7 @@
   <context>
     <name>Utilities</name>
     <message>
-      <location filename="../Utilities/__init__.py" line="991" />
+      <location filename="../Utilities/__init__.py" line="989" />
       <source>&lt;p&gt;You may use %-codes as placeholders in the string. Supported codes are:&lt;table&gt;&lt;tr&gt;&lt;td&gt;%C&lt;/td&gt;&lt;td&gt;column of the cursor of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%D&lt;/td&gt;&lt;td&gt;directory of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%F&lt;/td&gt;&lt;td&gt;filename of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%H&lt;/td&gt;&lt;td&gt;home directory of the current user&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%L&lt;/td&gt;&lt;td&gt;line of the cursor of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%P&lt;/td&gt;&lt;td&gt;path of the current project&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%S&lt;/td&gt;&lt;td&gt;selected text of the current editor&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%U&lt;/td&gt;&lt;td&gt;username of the current user&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%%&lt;/td&gt;&lt;td&gt;the percent sign&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</source>
       <translation>&lt;p&gt;可以在字符串中使用“%-代码”作为占位符。支持的代码有:&lt;table&gt;&lt;tr&gt;&lt;td&gt;%C&lt;/td&gt;&lt;td&gt;当前编辑器的光标所在列&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%D&lt;/td&gt;&lt;td&gt;当前编辑器的文件夹&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%F&lt;/td&gt;&lt;td&gt;当前编辑器的文件名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%H&lt;/td&gt;&lt;td&gt;当前用户的根目录&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%L&lt;/td&gt;&lt;td&gt;当前编辑器的光标所在行&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%P&lt;/td&gt;&lt;td&gt;当前项目的路径&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%S&lt;/td&gt;&lt;td&gt;当前编辑器中选择的文本&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%U&lt;/td&gt;&lt;td&gt;当前用户的用户名&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;%%&lt;/td&gt;&lt;td&gt;百分比符号&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/p&gt;</translation>
     </message>
@@ -90154,40 +90748,40 @@
       <translation>&lt;b&gt;局部变量浏览器窗口&lt;/b&gt;&lt;p&gt;该窗口显示高度程序的局部变量。&lt;/p&gt;</translation>
     </message>
     <message>
-      <location filename="../Debugger/VariablesViewer.py" line="1040" />
+      <location filename="../Debugger/VariablesViewer.py" line="1042" />
       <source>Show Details...</source>
       <translation>显示细节…</translation>
     </message>
     <message>
-      <location filename="../Debugger/VariablesViewer.py" line="1042" />
-      <source>Expand</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Debugger/VariablesViewer.py" line="1043" />
-      <source>Collapse</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Debugger/VariablesViewer.py" line="1044" />
+      <source>Expand</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Debugger/VariablesViewer.py" line="1045" />
+      <source>Collapse</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Debugger/VariablesViewer.py" line="1046" />
       <source>Collapse All</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Debugger/VariablesViewer.py" line="1052" />
-      <location filename="../Debugger/VariablesViewer.py" line="1046" />
-      <source>Refresh</source>
-      <translation type="unfinished">刷新</translation>
-    </message>
-    <message>
       <location filename="../Debugger/VariablesViewer.py" line="1054" />
       <location filename="../Debugger/VariablesViewer.py" line="1048" />
-      <source>Configure...</source>
-      <translation>配置…</translation>
+      <source>Refresh</source>
+      <translation type="unfinished">刷新</translation>
     </message>
     <message>
       <location filename="../Debugger/VariablesViewer.py" line="1056" />
-      <location filename="../Debugger/VariablesViewer.py" line="1049" />
+      <location filename="../Debugger/VariablesViewer.py" line="1050" />
+      <source>Configure...</source>
+      <translation>配置…</translation>
+    </message>
+    <message>
+      <location filename="../Debugger/VariablesViewer.py" line="1058" />
+      <location filename="../Debugger/VariablesViewer.py" line="1051" />
       <source>Variables Type Filter...</source>
       <translation type="unfinished" />
     </message>
@@ -90414,13 +91008,13 @@
   <context>
     <name>VcsGitPlugin</name>
     <message>
-      <location filename="../Plugins/PluginVcsGit.py" line="53" />
+      <location filename="../Plugins/PluginVcsGit.py" line="55" />
       <source>Version Control - Git</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginVcsGit.py" line="127" />
-      <location filename="../Plugins/PluginVcsGit.py" line="93" />
+      <location filename="../Plugins/PluginVcsGit.py" line="129" />
+      <location filename="../Plugins/PluginVcsGit.py" line="95" />
       <source>Git</source>
       <translation type="unfinished" />
     </message>
@@ -90428,13 +91022,13 @@
   <context>
     <name>VcsMercurialPlugin</name>
     <message>
-      <location filename="../Plugins/PluginVcsMercurial.py" line="52" />
+      <location filename="../Plugins/PluginVcsMercurial.py" line="56" />
       <source>Version Control - Mercurial</source>
       <translation>版本控制 - Mercurial</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginVcsMercurial.py" line="126" />
-      <location filename="../Plugins/PluginVcsMercurial.py" line="90" />
+      <location filename="../Plugins/PluginVcsMercurial.py" line="130" />
+      <location filename="../Plugins/PluginVcsMercurial.py" line="94" />
       <source>Mercurial</source>
       <translation>Mercurial</translation>
     </message>
@@ -90791,17 +91385,17 @@
   <context>
     <name>VcsPySvnPlugin</name>
     <message>
-      <location filename="../Plugins/PluginVcsPySvn.py" line="59" />
+      <location filename="../Plugins/PluginVcsPySvn.py" line="61" />
       <source>Version Control - Subversion (pysvn)</source>
       <translation>版本控制 - Subversion(pysvn)</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginVcsPySvn.py" line="92" />
+      <location filename="../Plugins/PluginVcsPySvn.py" line="94" />
       <source>Subversion (pysvn)</source>
       <translation>Subversion(pysvn)</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginVcsPySvn.py" line="128" />
+      <location filename="../Plugins/PluginVcsPySvn.py" line="130" />
       <source>Subversion</source>
       <translation>Subversion</translation>
     </message>
@@ -90840,17 +91434,17 @@
   <context>
     <name>VcsSubversionPlugin</name>
     <message>
-      <location filename="../Plugins/PluginVcsSubversion.py" line="56" />
+      <location filename="../Plugins/PluginVcsSubversion.py" line="60" />
       <source>Version Control - Subversion (svn)</source>
       <translation>版本控制 - Subversion(svn)</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginVcsSubversion.py" line="98" />
+      <location filename="../Plugins/PluginVcsSubversion.py" line="102" />
       <source>Subversion (svn)</source>
       <translation>Subversion(svn)</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginVcsSubversion.py" line="133" />
+      <location filename="../Plugins/PluginVcsSubversion.py" line="137" />
       <source>Subversion</source>
       <translation>Subversion</translation>
     </message>
@@ -96171,7 +96765,7 @@
   <context>
     <name>VmListspacePlugin</name>
     <message>
-      <location filename="../Plugins/PluginVmListspace.py" line="25" />
+      <location filename="../Plugins/PluginVmListspace.py" line="26" />
       <source>Listspace</source>
       <translation>列表区</translation>
     </message>
@@ -96179,7 +96773,7 @@
   <context>
     <name>VmTabviewPlugin</name>
     <message>
-      <location filename="../Plugins/PluginVmTabview.py" line="25" />
+      <location filename="../Plugins/PluginVmTabview.py" line="26" />
       <source>Tabbed View</source>
       <translation>分页视图</translation>
     </message>
@@ -100602,22 +101196,22 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="120" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="112" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="123" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="115" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="49" />
       <source>Connect WiFi</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="168" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="162" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="171" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="165" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="50" />
       <source>Check Internet Connection</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="142" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="136" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="145" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="139" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="51" />
       <source>Disconnect WiFi</source>
       <translation type="unfinished" />
@@ -100628,214 +101222,256 @@
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="236" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="227" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="217" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="207" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="239" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="230" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="220" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="210" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="55" />
       <source>Write WiFi Credentials</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="274" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="264" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="253" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="277" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="267" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="256" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="56" />
       <source>Remove WiFi Credentials</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="315" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="304" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="489" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="480" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="58" />
+      <source>Enable WebREPL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="523" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="514" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="506" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="59" />
+      <source>Disable WebREPL</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="318" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="307" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="61" />
       <source>Start WiFi Access Point</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="60" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="63" />
       <source>Start WiFi Access Point with IP</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="369" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="63" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="372" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="66" />
       <source>Show Connected Clients</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="345" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="336" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="65" />
-      <source>Stop WiFi Access Point</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="348" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="339" />
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="68" />
+      <source>Stop WiFi Access Point</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="71" />
       <source>Deactivate Client Interface</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="72" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="75" />
       <source>Deactivate Access Point Interface</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="455" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="439" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="419" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="410" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="76" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="458" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="442" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="422" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="413" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="79" />
       <source>Set Network Time</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="113" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="116" />
       <source>&lt;p&gt;The device was connected to &lt;b&gt;{0}&lt;/b&gt; successfully.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="121" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="124" />
       <source>&lt;p&gt;The device could not connect to &lt;b&gt;{0}&lt;/b&gt;.&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="527" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="493" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="281" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="243" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="174" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="148" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="127" />
+      <source>unknown</source>
+      <translation type="unfinished">未知</translation>
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="140" />
+      <source>&lt;p&gt;The device was disconnected from the WiFi network.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="146" />
+      <source>&lt;p&gt;The device could not be disconnected.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="159" />
+      <source>&lt;p&gt;The internet connection is &lt;b&gt;available&lt;/b&gt;.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="161" />
+      <source>&lt;p&gt;The internet connection is &lt;b&gt;not available&lt;/b&gt;.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="172" />
+      <source>&lt;p&gt;The internet is not available.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="231" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="211" />
+      <source>&lt;p&gt;The WiFi credentials were saved on the device. The device will connect to the WiFi network at boot time.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="221" />
+      <source>&lt;p&gt;The WiFi credentials and a connect script were saved on the device. Use the script by simply importing it.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="240" />
+      <source>&lt;p&gt;The WiFi credentials could not be saved on the device.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="257" />
+      <source>Shall the saved WiFi credentials really be removed from the connected device?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="268" />
+      <source>&lt;p&gt;The WiFi credentials were removed from the device. The device will not connect to the WiFi network at boot time anymore.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="278" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="240" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="171" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="145" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="124" />
-      <source>unknown</source>
-      <translation type="unfinished">未知</translation>
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="137" />
-      <source>&lt;p&gt;The device was disconnected from the WiFi network.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="143" />
-      <source>&lt;p&gt;The device could not be disconnected.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="156" />
-      <source>&lt;p&gt;The internet connection is &lt;b&gt;available&lt;/b&gt;.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="158" />
-      <source>&lt;p&gt;The internet connection is &lt;b&gt;not available&lt;/b&gt;.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="169" />
-      <source>&lt;p&gt;The internet is not available.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="228" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="208" />
-      <source>&lt;p&gt;The WiFi credentials were saved on the device. The device will connect to the WiFi network at boot time.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="218" />
-      <source>&lt;p&gt;The WiFi credentials and a connect script were saved on the device. Use the script by simply importing it.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="237" />
-      <source>&lt;p&gt;The WiFi credentials could not be saved on the device.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="254" />
-      <source>Shall the saved WiFi credentials really be removed from the connected device?</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="265" />
-      <source>&lt;p&gt;The WiFi credentials were removed from the device. The device will not connect to the WiFi network at boot time anymore.&lt;/p&gt;</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="275" />
       <source>&lt;p&gt;The WiFi credentials could not be removed from the device.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="305" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="308" />
       <source>The WiFi Access Point interface was started successfully.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="310" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="313" />
       <source>&lt;p&gt;The WiFi Access Point could not be started.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="391" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="342" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="312" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="394" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="345" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="315" />
       <source>&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="337" />
-      <source>The WiFi Access Point interface was stopped successfully.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="340" />
+      <source>The WiFi Access Point interface was stopped successfully.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="343" />
       <source>&lt;p&gt;The WiFi Access Point could not be stopped.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="370" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="373" />
       <source>No clients are connected to the access point.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="394" />
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="385" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="397" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="388" />
       <source>Deactivate WiFi Interface</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="386" />
-      <source>The WiFi interface was deactivated successfully.</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../MicroPython/WifiDialogs/WifiController.py" line="389" />
+      <source>The WiFi interface was deactivated successfully.</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="392" />
       <source>&lt;p&gt;The WiFi interface could not be deactivated.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="411" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="414" />
       <source>&lt;p&gt;The device does not support network time synchronization. The module &lt;b&gt;adafruit_ntp&lt;/b&gt; is not installed.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="420" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="423" />
       <source>&lt;p&gt;The device does not support network time synchronization. The module &lt;b&gt;ntptime&lt;/b&gt; is not available.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="440" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="443" />
       <source>The device time was synchronized successfully.</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="444" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="447" />
       <source>&lt;p&gt;The device time could not be synchronized.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="449" />
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="452" />
       <source>&lt;p&gt;The device time could not be synchronized. Is the device connected to a WiFi network?&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="481" />
+      <source>&lt;p&gt;The WebREPL server of the device will be activated after a reboot.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="490" />
+      <source>&lt;p&gt;The WebREPL server of the device could not be enabled.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="507" />
+      <source>Shall the WebREPL server of the device really be disabled?</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="515" />
+      <source>&lt;p&gt;The WebREPL server of the device will not be enabled at boot time anymore.&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../MicroPython/WifiDialogs/WifiController.py" line="524" />
+      <source>&lt;p&gt;The WebREPL server of the device could not be disabled.&lt;/p&gt;&lt;p&gt;Reason: {0}&lt;/p&gt;</source>
+      <translation type="unfinished" />
+    </message>
   </context>
   <context>
     <name>WifiCountryDialog</name>
@@ -101097,44 +101733,44 @@
   <context>
     <name>WizardEricPluginWizard</name>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="93" />
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="86" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="95" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="88" />
       <source>eric Plug-in Wizard</source>
       <translation type="unfinished">eric 插件向导</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="87" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="89" />
       <source>eric Plug-in Wizard...</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="95" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="97" />
       <source>&lt;b&gt;eric Plug-in Wizard&lt;/b&gt;&lt;p&gt;This wizard opens a dialog for entering all the parameters needed to create the basic contents of an eric plug-in file. The generated code is inserted at the current cursor position.&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="142" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="144" />
       <source>No current editor</source>
       <translation type="unfinished">没有当前编辑器</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="143" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="145" />
       <source>Please open or create a file first.</source>
       <translation type="unfinished">请您先打开或创建一个文件。</translation>
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="181" />
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="165" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="183" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="167" />
       <source>Create Package</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="166" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="168" />
       <source>&lt;p&gt;The package directory &lt;b&gt;{0}&lt;/b&gt; could not be created. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/PluginWizardEricPlugin.py" line="182" />
+      <location filename="../Plugins/PluginWizardEricPlugin.py" line="184" />
       <source>&lt;p&gt;The package file &lt;b&gt;{0}&lt;/b&gt; could not be created. Aborting...&lt;/p&gt;&lt;p&gt;Reason: {1}&lt;/p&gt;</source>
       <translation type="unfinished" />
     </message>
@@ -101733,421 +102369,421 @@
   <context>
     <name>pycodestyle</name>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="36" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="38" />
       <source>indentation contains mixed spaces and tabs</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="39" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="41" />
       <source>indentation is not a multiple of four</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="42" />
-      <source>expected an indented block</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="43" />
-      <source>unexpected indentation</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="44" />
+      <source>expected an indented block</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="45" />
+      <source>unexpected indentation</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="46" />
       <source>indentation is not a multiple of four (comment)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="47" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="49" />
       <source>expected an indented block (comment)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="50" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="52" />
       <source>unexpected indentation (comment)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="53" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="55" />
       <source>over-indented</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="54" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="56" />
       <source>continuation line indentation is not a multiple of four</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="57" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="59" />
       <source>continuation line missing indentation or outdented</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="60" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="62" />
       <source>closing bracket does not match indentation of opening bracket's line</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="64" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="66" />
       <source>closing bracket does not match visual indentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="67" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="69" />
       <source>continuation line with same indent as next logical line</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="70" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="72" />
       <source>continuation line over-indented for hanging indent</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="73" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="75" />
       <source>continuation line over-indented for visual indent</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="76" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="78" />
       <source>continuation line under-indented for visual indent</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="79" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="81" />
       <source>visually indented line with same indent as next logical line</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="82" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="84" />
       <source>continuation line unaligned for hanging indent</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="85" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="87" />
       <source>closing bracket is missing indentation</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="88" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="90" />
       <source>whitespace after '{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="93" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="92" />
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="91" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="90" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="89" />
       <source>whitespace before '{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="92" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="94" />
       <source>multiple spaces before operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="95" />
-      <source>multiple spaces after operator</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="96" />
-      <source>tab before operator</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="97" />
-      <source>tab after operator</source>
+      <source>multiple spaces after operator</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="98" />
+      <source>tab before operator</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="99" />
+      <source>tab after operator</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="100" />
       <source>missing whitespace around operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="101" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="103" />
       <source>missing whitespace around arithmetic operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="104" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="106" />
       <source>missing whitespace around bitwise or shift operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="107" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="109" />
       <source>missing whitespace around modulo operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="110" />
-      <source>missing whitespace after '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="111" />
-      <source>multiple spaces after '{0}'</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="112" />
-      <source>tab after '{0}'</source>
+      <source>missing whitespace after '{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="113" />
+      <source>multiple spaces after '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="114" />
+      <source>tab after '{0}'</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="115" />
       <source>unexpected spaces around keyword / parameter equals</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="116" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="118" />
       <source>missing whitespace around parameter equals</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="119" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="121" />
       <source>at least two spaces before inline comment</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="122" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="124" />
       <source>inline comment should start with '# '</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="125" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="127" />
       <source>block comment should start with '# '</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="128" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="130" />
       <source>too many leading '#' for block comment</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="131" />
-      <source>multiple spaces after keyword</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="132" />
-      <source>multiple spaces before keyword</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="133" />
-      <source>tab after keyword</source>
+      <source>multiple spaces after keyword</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="134" />
-      <source>tab before keyword</source>
+      <source>multiple spaces before keyword</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="135" />
+      <source>tab after keyword</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="136" />
+      <source>tab before keyword</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="137" />
       <source>missing whitespace after keyword</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="141" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="138" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="143" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="140" />
       <source>expected {0} blank lines, found {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="144" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="146" />
       <source>too many blank lines ({0}), expected {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="147" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="149" />
       <source>blank lines found after function decorator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="150" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="152" />
       <source>expected {0} blank lines after class or function definition, found {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="154" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="156" />
       <source>expected {0} blank lines before a nested definition, found {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="157" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="159" />
       <source>too many blank lines ({0}) before a nested definition, expected {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="161" />
-      <source>too many blank lines ({0})</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="162" />
-      <source>multiple imports on one line</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="163" />
+      <source>too many blank lines ({0})</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="164" />
+      <source>multiple imports on one line</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="165" />
       <source>module level import not at top of file</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="166" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="168" />
       <source>line too long ({0} &gt; {1} characters)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="169" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="171" />
       <source>the backslash is redundant between brackets</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="172" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="174" />
       <source>multiple statements on one line (colon)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="175" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="177" />
       <source>multiple statements on one line (semicolon)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="178" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="180" />
       <source>statement ends with a semicolon</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="181" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="183" />
       <source>multiple statements on one line (def)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="187" />
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="184" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="189" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="186" />
       <source>comparison to {0} should be {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="190" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="192" />
       <source>test for membership should be 'not in'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="193" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="195" />
       <source>test for object identity should be 'is not'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="196" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="198" />
       <source>do not compare types, use 'isinstance()'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="199" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="201" />
       <source>do not use bare except</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="200" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="202" />
       <source>do not assign a lambda expression, use a def</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="203" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="205" />
       <source>ambiguous variable name '{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="204" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="206" />
       <source>ambiguous class definition '{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="207" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="209" />
       <source>ambiguous function definition '{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="210" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="212" />
       <source>{0}: {1}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="211" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="213" />
       <source>{0}</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="219" />
-      <source>indentation contains tabs</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="220" />
-      <source>trailing whitespace</source>
-      <translation type="unfinished" />
-    </message>
-    <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="221" />
-      <source>no newline at end of file</source>
+      <source>indentation contains tabs</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="222" />
-      <source>blank line contains whitespace</source>
+      <source>trailing whitespace</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="223" />
-      <source>blank line at end of file</source>
+      <source>no newline at end of file</source>
       <translation type="unfinished" />
     </message>
     <message>
       <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="224" />
+      <source>blank line contains whitespace</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="225" />
+      <source>blank line at end of file</source>
+      <translation type="unfinished" />
+    </message>
+    <message>
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="226" />
       <source>line break before binary operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="227" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="229" />
       <source>line break after binary operator</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="230" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="232" />
       <source>doc line too long ({0} &gt; {1} characters)</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="233" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="235" />
       <source>.has_key() is deprecated, use 'in'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="236" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="238" />
       <source>deprecated form of raising exception</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="239" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="241" />
       <source>'&lt;&gt;' is deprecated, use '!='</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="240" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="242" />
       <source>backticks are deprecated, use 'repr()'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="243" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="245" />
       <source>invalid escape sequence '\{0}'</source>
       <translation type="unfinished" />
     </message>
     <message>
-      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="246" />
+      <location filename="../Plugins/CheckerPlugins/CodeStyleChecker/translations.py" line="248" />
       <source>'async' and 'await' are reserved keywords starting with Python 3.7</source>
       <translation type="unfinished" />
     </message>

eric ide

mercurial